Databases - Wide Column Stores
Store data in records with an ability to hold very large numbers of dynamic columns. Not all rows have all the columns, equivalent to schema-free.
Google's Bigtable was the first such database. Several open-source implementation were created, like Cassandra, HBase, Accumulo, etc.
- 3 dimensions: row, column, timestamp (each intersection of a row and a column is a cell, each cell has multiple "versions" or "timestamps")
- columns are grouped into column families
- column families are grouped into locality groups.
- A locality group is a reflection of the physical implementation on Bigtable
- A table is broken into tablets; a tablet is a contiguous group of rows.
Bigtable tables are sparse; this means that not all
(row, column) intersections have a cell. More specifically, the Bigtable is mapped onto SSTables with a key that consists of
(row, column, timestamp). This sparse storage means that "missing" cells do not take up extra storage; storage is allocated only for those
(row, column, timestamp) triplets that have values. There is no such thing, for example, as a row with no columns -- that row simply doesn't exist. In fact, a bigtable row can be thought of as a map of arbitrary
(row, column, timestamp) values.
Keys and Index
A row key is an unsigned byte string up to 64KB long, and rows are sorted by unsigned byte string sorting, lowest to highest. Bigtable only supports one index (the row key) per table.
Unlike either monolithic or master-slave designs, Cassandra makes use of an entirely peer-to-peer architecture. All nodes in a Cassandra cluster can accept reads and writes, no matter where the data being written or requested actually belongs in the cluster.
- Shard data automatically
- Handle partial outages without data loss or downtime
- Scales close to linearly
- modeled after google’s bigtable
- HBase features compression, in-memory operation, and Bloom filters on a per-column basis as outlined in the original Bigtable paper.
- In the parlance of Eric Brewer’s CAP Theorem, HBase is a CP type system.
- High write throughput
- Horizontal scalability
- Automatic Failover
- Strong consistency within a data center
Based on based on the Bigtable technology from Google