NoSQL Benchmarks NoSQL use cases NoSQL Videos NoSQL Hybrid Solutions NoSQL Presentations Big Data Hadoop MapReduce Pig Hive Flume Oozie Sqoop HDFS ZooKeeper Cascading Cascalog BigTable Cassandra HBase Hypertable Couchbase CouchDB MongoDB OrientDB RavenDB Jackrabbit Terrastore Amazon DynamoDB Redis Riak Project Voldemort Tokyo Cabinet Kyoto Cabinet memcached Amazon SimpleDB Datomic MemcacheDB M/DB GT.M Amazon Dynamo Dynomite Mnesia Yahoo! PNUTS/Sherpa Neo4j InfoGrid Sones GraphDB InfiniteGraph AllegroGraph MarkLogic Clustrix CouchDB Case Studies MongoDB Case Studies NoSQL at Adobe NoSQL at Facebook NoSQL at Twitter



Apache HBase Internals: Locking and Multiversion Concurrency Control

Gregory Chanan explains the ACID per-row semantics of HBase and the usage of row-level locks and MVCC to ensure them:

For writes:

  1. (w1) After acquiring the RowLock, each write operation is immediately assigned a write number
  2. (w2) Each data cell in the write stores its write number.
  3. (w3) A write operation completes by declaring it is finished with the write number.

For reads:

  1. (r1) Each read operation is first assigned a read timestamp, called a read point.
  2. (r2) The read point is assigned to be the highest integer such that all writes with write number <= x have been completed.
  3. (r3) A read r for a certain (row, column) combination returns the data cell with the matching (row, column) whose write number is the largest value that is less than or equal to the read point of r.

Probably self understood that you should read and save this article if HBase is already in your datacenter or at least at horizon.

Original title and link: Apache HBase Internals: Locking and Multiversion Concurrency Control (NoSQL database©myNoSQL)