Nowadays information collection has changed a lot. Everybody wants to save more data and allow our users to consume that information in real time and in an easy way. This means that performance, scalability and availability are three key factors for database implementations. For this reason NoSQL databases have made their appearance.
What’s a NoSQL database?
A NoSQL database (“non SQL”, “non relational” o “not only SQL”) is a new database management systems that save the data on unstructured storage (e.g. tweet), unlike retational databases that save data on structured storage (tables and columns).
- Eventually consistency, BASE (Basically Available Soft-state Eventual Consistency). Don’t comply with ACID properties.
- Simple and fast horizontal scalation.
- Easy replication support.
- Prepared for huge amount data.
- May support SQL language.
Most common types NoSQL databases
- Key Value Store: data is saved into a map or dictionary (associative array) and represented as a collection of key-values pairs. E.g.: Redis, Aerospike…
- Document Store: information is saved in documents (XML, JSON, BSON, YAML, etc.) without a specific schema and a unique key is used to query the data. E.g.: Apache CouchDB, ArangoDB…
- Column Store: they use storage in columns instead of rows so that the access is carried out through a key. E.g.: HBase, Cassandra…
- Graph Base: the data is stored in nodes and relationships are represented as edges thats connect the nodes each other. E.g.: OrientDB, Neo4j…
- Multi-model Base: they support different data models. For instance: documents, graphs, key-value, etc. E.g.: CortexDB, Couchbase…
When should I select either a NoSQL or relational database?
NoSQL databases are prepared for special cases, when we have huge amount of data and we want to ingest and search with high performance, agile processing and easy scalability.
For any other configurations the relational database is the best solution as they have better consistency and availability of data.
Take a look at the following comparison table where we don’t focus on a specific database management system but in the database level definition.
You can follow these links for more information in this subject: