Skip to content
This repository

Transactional Support for HBase

branch: master

This branch is 0 commits ahead and 0 commits behind master


latest commit 0c24b16751
Daniel Gómez Ferro authored March 21, 2013
Octocat-spinner-32 bin Remove native library references March 21, 2013
Octocat-spinner-32 conf Remove native library references March 21, 2013
Octocat-spinner-32 src Remove native library references March 21, 2013
Octocat-spinner-32 .gitignore Fixed filters that were accidentally added and were pointed out by dg… November 28, 2012
Octocat-spinner-32 CHANGES.txt Added CHANGES.txt January 24, 2012
Octocat-spinner-32 LICENSE.txt Omid project November 02, 2011
Octocat-spinner-32 NOTICE.txt Omid project November 02, 2011
Octocat-spinner-32 Update README March 21, 2013
Octocat-spinner-32 TODO Added TODO November 08, 2011
Octocat-spinner-32 pom.xml Extracted Cache, implemented GuavaCache February 20, 2013


The Omid project provides transactional support for key-value stores using Snapshot Isolation. Omid stands for Optimistically transactional Management in Datasources. At this stage of the project, HBase is the only supported data-store.

If you have any question, please take a look to the Wiki or contact us at or read the online archives

Use Cases

Add UCs.

Basic Architecture

The main component of Omid is a server called the Status Oracle (TSO.) The TSO contains all the information needed to manage transactions. Applications requiring transactional support in key-value stores need to use the API provided by special components provided by Omid called Transactional Clients (TCs). TCs are in charge of connecting to the TSO and perform the required operations in data-stores. The TSO replicates transactional information to the TCs which just contact the TSO when they want to start a transaction or commit it.

The TSO uses BookKeeper as a Write-Ahead Log where it dumps all its state. In case of crash failures it is possible to restart the TSO without losing any commit information.

The core architecture of the software is described in more detail in the Technical Details section of the Wiki.


Omid uses Maven for its build system.

To compile Omid:

$ git clone omid
$ cd omid
$ mvn install -DskipTests

Tests should run cleanly if you want to run them.


To test Omid you might want to run a benchmark.

Status Oracle

To start the SO, run:

$ bin/ tso


To benchmark the TSO alone, run:

$ bin/ tsobench

API Description

The public API is in these classes:


For an example of usage, take a look to this class:



The logging preferences can be adjusted in src/main/resources/


This project has been partially supported by the EU Comission through the Cumulo Nimbo project (FP7-257993).

Something went wrong with that request. Please try again.