NoSQL
Internal
Overview
The NoSQL databases are grouped in four categories:
- document stores
- key-value stores
- graph stores
- column stores
NoSQL Databases
Document Databases
Google Bigtable introduced a data model allowing rows to be added with any set of columns. The columns do not need to be predefined. The lack of predefined schema makes these databases attractive for applications where the attributes of objects are not known in advance or change frequently.
Document databases are conceptually similar to Google Bigtable database. They have a related data model, where a Bigtable row with its arbitrary number of columns/attributes corresponds to a document. The document is a tree of objects containing attribute values and lists, often with a mapping to JSON or XML. Unlike dumping JSON in a relational database, the document databases can work with the structure of the documents, they can extract, index, aggregate and filter based on attribute values in these documents.
The problem with Bigtable and document databases is that they cannot perform joins or transactions spanning several rows or documents. This behavior is deliberate because it allows the database to do automate partitioning.
Graph Databases
Graph databases focus on the relationship between items, and are appropriate for highly interconnected data models. Standard SQL cannot query transitive relationships, i.e. variable-length chains of joins which continue until some condition is reached. Graph databases, on the other hand, are optimized precisely for this kind of data.
Organizatorium
- NoSQL discussion: https://bigdata-ir.com/wp-content/uploads/2017/04/NoSQL-Distilled.pdf NoSQL Distilled by Sadalage, Fowler. (Learning/Systems Design)
- Should you go Beyond Relational Databases? https://blog.teamtreehouse.com/should-you-go-beyond-relational-databases
- Lack of predefined schema.