I previously mentioned ORMs as a (niche) alternative to SQL
A much larger alternative, in popularity and variety, is NoSQL
NoSQL typically requires programming expertise, which is not surprising because it began as a group of programmers rejecting SQL
They meant, literally “No SQL!” at first, but later softened their position to “Not Only SQL” and most but not all NoSQL databases have some SQL capabilities
Properties of SQL
Paraphrased from Gemini:
NoSQL databases are without schemas and require programming to enter and extract data
They are designed from scratch for horizontal scaling, meaning that one database is spread across many machines
They are optimized for specialized tasks, allowing high performance for those tasks but making other tasks difficult or impossible
They are designed to allow data types to change over time (related to the lack of schemas)
Kinds of NoSQL
From Gemini:
Document Stores: Store data in documents, commonly JSON or BSON (e.g., MongoDB, CouchDB)
Key-Value Stores: Store data as collections of key-value pairs (e.g., Redis, DynamoDB).
Wide-Column Stores: Store data in column families, optimized for massive data analysis (e.g., Cassandra, HBase)
Graph Databases: Store complex relationships between data entities (e.g., Neo4j)
Document Stores
The most popular NoSQL database package is MongoDB, which became extremely popular in the late 2010s
Its popularity has waned, but it’s still in the top five at DB-Engines
Its basic unit is a document, which is a data structure composed of field-value pairs (not necessarily unique, as in key-value pairs)