Ahsan Ijaz
DataBases: "Everyone MUST see the same thing, either old or new, no matter how long it takes." NoSQL: "For large applications, we can't afford to wait that long, and maybe it doesn't matter anyway."
New design space: High scalability, high availability, eventual consistency.
Consistency
Availability
Partitioning
Conventional databases assume no partitioning
NoSQL systems may sacrfice consistency.
Distribute both data and load of operations over many servers, with no RAM or disk shared.
A database system utilizes many cores and/or CPUs that share RAM and disks.
Key-value Stores: Stores with values and index to find them, based on a programmer defined key.
Document stores: Stores documents. The documents are indexed and a simple query mechanism is provided.
Wide column stores: Store extensible records that can be partitioned vertically and horizontally across nodes.
Relational Databases: These systems store (and index and query) tuples.
Allows key ranges to be assigned to nodes, rather than simply hashing to nodes.
Replication is synchronous. (copies must be updated before the operation is complete)
Supports transactions with ACID properties on multiple objects.
Data is stored in memory, but replication and recovery from node failures provides durability of the updates.
Scalaris reads and writes must go to a majority of the replicas before an operation completes.
database | basic_operations | store_data | Transactions | Replication | Concurrency | Scalability | |
---|---|---|---|---|---|---|---|
1 | Voldemort | TRUE | RAM/Disk | FALSE | Asynchronous | MVCC | TRUE |
2 | Riak | TRUE | 5 | FALSE | Asynchronous | MVCC | TRUE |
3 | Redis | TRUE | Both ram and disk | FALSE | Asynchronous | locks | TRUE |
4 | Scalaris | TRUE | RAM/Disk | TRUE | Synchronous | locks | TRUE |
5 | Tokyo Cabinet | TRUE | 5 | TRUE | Asynchronous | locks | TRUE |
6 | Memcached | TRUE | Both ram and disk | FALSE | Synchronous | locks | TRUE |