GithubHelp home page GithubHelp logo

omid's Introduction

Omid

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 [email protected] 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.

Compilation

Omid uses Maven for its build system.

To compile Omid:

$ git clone https://github.com/yahoo/omid.git omid
$ cd omid
$ mvn install -DskipTests

Tests should run cleanly if you want to run them.

Set-Up

To test Omid you might want to run a benchmark.

Status Oracle

To start the SO, run:

$ bin/omid.sh tso

Benchmark

To benchmark the TSO alone, run:

$ bin/omid.sh tsobench

API Description

The public API is in these classes:

src/main/java/com/yahoo/omid/transaction/TTable.java
src/main/java/com/yahoo/omid/transaction/Transaction.java
src/main/java/com/yahoo/omid/transaction/TransactionManager.java

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

src/test/java/com/yahoo/omid/TestBasicTransaction.java

Logging

The logging preferences can be adjusted in src/main/resources/log4j.properties.

Acknowledgement

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

omid's People

Contributors

dgomezferro avatar fpj avatar francisco-perez-sorrosal avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.