NoSQL vs. SQL Summary
SQL DATABASES
|
NOSQL DATABASES
|
|
Types
|
One type (SQL database) with minor
variations
|
Many different types including
key-value stores, document databases, wide-column stores, and graph databases
|
Development History
|
Developed in 1970s to deal with
first wave of data storage applications
|
Developed in 2000s to deal with
limitations of SQL databases, particularly concerning scale, replication and
unstructured data storage
|
Examples
|
MySQL, Postgres, Oracle Database
|
MongoDB, Cassandra, HBase, Neo4j
|
Schemas
|
Structure and data types are fixed
in advance. To store information about a new data item, the entire database
must be altered, during which time the database must be taken offline.
|
Typically dynamic. Records can add
new information on the fly, and unlike SQL table rows, dissimilar data can be
stored together as necessary. For some databases (e.g., wide-column stores),
it is somewhat more challenging to add new fields dynamically.
|
Scaling
|
Vertically, meaning a single server
must be made increasingly powerful in order to deal with increased demand. It
is possible to spread SQL databases over many servers, but significant
additional engineering is generally required.
|
Horizontally, meaning that to add
capacity, a database administrator can simply add more commodity servers or
cloud instances. The database automatically spreads data across servers as
necessary
|
Development Model
|
Mix of open-source (e.g., Postgres,
MySQL) and closed source (e.g., Oracle Database)
|
Open-source
|
Supports Transactions
|
Yes, updates can be configured to
complete entirely or not at all
|
In certain circumstances and at
certain levels (e.g., document level vs. database level)
|
Data Manipulation
|
Specific language using Select,
Insert, and Update statements, e.g. SELECT fields FROM table WHERE
|
Through object-oriented APIs
|
Consistency
|
Can be configured for strong
consistency
|
Depends on product. Some provide
strong consistency (e.g., MongoDB) whereas others offer eventual consistency
(e.g., Cassandra)
|
No comments:
Post a Comment