NoSQL, NewSQL, database evolution
Major websites use the NoSQL database. It started with Google and Facebook.
The required extensibility and the large amount of data and updates make the relational model ineffective, which forced a new model to be found.
The word NoSQL appeared in 2009 to denote the increasing number of programs that do not use the classic relational model. The name is a shortcut to "Not Only SQL," in French "Not only SQL," to express the fact that you want to go beyond the classic data access model, as explained below.
It can be considered that BigTable, created by Google for its index, is the driving force behind the NoSQL movement, since the model was picked up by the main sites of the Web .
Why NoSQL
?The classical model does not work in the face of some treatments:
- Indexing the number of documents.
- Areas with high attendance.
- Data with variable size depending on records.
- Frequent rewrites (the classic model provides more reading than writing).
- Base extensibility.
- When speed matters.
- Improving performance is easier.
Some companies are not happy with their NoSQL experience and are returning to MySQL or MariaDB. This is the case of Arstechnitsa, Google with the Spanner project. This is due to the progress made with these comics. But others prefer NoSQL .
SQL vs. NoSQL
NoSQL is column-oriented: let's understand that you can add columns to each record as easily as adding rows (using INSERT/UPDATE) in the relational model.
NoSQL does not have a conceptual scheme and over time can change in the number of both columns and rows.
But what makes NoSQL much faster? This is primarily due to how we treat variable columns.
Take an example. Suppose we manage airport traffic with a list of all flights.
The classic table will have the following form:
Flight number | Plane | Pilot | Way |
---|---|---|---|
001 | Airbus | Joe | New Delhi |
But you cannot have a column with the name of each passenger. And planes and flights have very different numbers of passengers, the table would contain some number of holes and the search for data would be all the more slowed down.
Here's how the classic relational model solves the problem. The "Passengers" table is created in the following form.
Flight number | Passenger name |
---|---|
001 | x |
001 | there |
001 | z |
All flights and passenger names will be on the same table. It goes without saying that access to data involves processing a large amount of information before receiving the desired information.
A NoSQL table row when it has the following form:
Flight number | Plane | Pilot | Way | |||
---|---|---|---|---|---|---|
001 | Airbus | Joe | New Delhi | x | there | z |
The number of speakers per flight depends on the number of passengers .
Finding a passenger on a flight will obviously be much faster in such a model, but, most importantly, it will be infinitely easier to change the data .
NewSQL, another approach
This is not a format, but a new approach to implementation. The original name was "ScalableSQL" and its goal is to manage high-performance data.
NoSQL is reproached for sacrificing the principle of ACID (Atomicity, Convistency, Isolation, Durability), atomicity, consistency, isolation, stability, therefore, it provides less reliable access to data.
The NewSQL database retains the classic structure in columns, but uses different processes to maintain speed even on large volumes.
VoltDB is a new comic book manager based on NewSQL: It is designed to work fully in memory, which provides it with unsurpassed speed and makes Oracle obsolete.
Oriented Graph Database
Designed specifically to store and find relationships between objects or people, it is more efficient than a relational database (despite the name) to query these links. She has no desk.
The database structure consists of nodes and properties similar to LOO objects and edges, data representing the relationship between two objects, with a value representing the weight of the relationship. The number of links is variable, and the base changes to two levels: Added or deleted objects and links.
Neo4J is perhaps the best tool available for such a database, even if there are other proprietary programs such as Google's Pregel.
See also...
ArangoDB, for undecided.
An ideal example of a NoSQL tool, it combines the Document, Graphs, and Key/Value template. The article describes various models, as well as a desktop model and a classic relational model for comparison.
Facebook's Cassandra. Derived from BigTable.
NoSQL software
- Percolator from Google. Successor to BigTable for engine index.
- MongoDB. Document-oriented database. For example, Sourceforge is used.
- ElasticSearch. Even if it presents itself as a system for storing documents and searching in these documents, ES is actually a DBMS and is quite similar to MongoDB. It is easy to deploy, use and apply on large sites, including eCommerce.
- Hadup. Google's MapReduce platform, software for distributed processing of large amounts of data. The project includes HBase, which is a database manager using the framework and developed on the basis of BigTable.
- Aerospike. Based on the key-value model, like Redis, it claims to be a hundred times faster than any other comic book such as MySQL. Uses Aerospike Query Language. (Apache license).