hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Maysam Yabandeh <may...@yahoo-inc.com>
Subject Re: Hbase Transactional support
Date Tue, 20 Mar 2012 09:04:19 GMT

That is an excellent question. Snapshot Isolation is a strong guarantee that is supported
by many transactional systems such as Oracle and Google Percolator. However, as you correctly
pointed out, it is not serializable. We actually have looked into it and implemented a  version
of Omid that provides serializability with a performance comparable to that of snapshot isolation.
I am currently cleaning the code to make it ready for release on github.

If you are into the details of isolation levels, the core idea is to check for read-write
conflicts instead of write-write conflicts. A paper explaining the details and proving that
checking for read-write conflicts alone is sufficient for serializability is going to be presented
in the next Eurosys conference.
"A Critique of Snapshot Isolation", http://eurosys2012.unibe.ch/program/conference

- Maysam Yabandeh

On Mar 19, 2012, at 8:46 PM, Sandy Pratt wrote:

> Maysam,
> I wasn't aware of Omid before this post, so thanks for sharing that.  I really like the
approach and indeed our own implementation of transactions on HBase uses MVCC and optimistic
concurrency control with a centralized transaction manager.  I think it's a great fit for
> One question though.  You mention detection of write-write conflicts, but not write-read
conflicts.   I'm guessing that this is because you're shooting for non-serializable snapshot
isolation.  Why not detect write-read anomalies and get to serializable isolation (or at least
closer to it)?  For example it seems like you could detect the write skew anomaly (described
here http://en.wikipedia.org/wiki/Snapshot_isolation) by tracking a little more state in your
Status Oracle.  Were you trying to reduce state or decentralize it or something?  Is there
simply no need for that level of isolation?
> Apologies if this is clear in the code, which I haven't yet read thoroughly.
> Thanks,
> Sandy
>> -----Original Message-----
>> From: Maysam Yabandeh [mailto:maysam@yahoo-inc.com]
>> Sent: Monday, March 19, 2012 11:45
>> To: user@hbase.apache.org
>> Subject: Re: Hbase Transactional support
>> Hi Deepika,
>> Omid provides Snapshot Isolation (SI), which is a well-known isolation
>> guarantee in database systems such as Oracle. In short, each transaction
>> reads from a consistent snapshot that does not include partial changes by
>> concurrent (or failed) transactions. SI also prevents write-write conflicts
>> between concurrent transactions. The overhead of Omid on HBase is
>> negligible and does not require any changes into HBase, with the only
>> exception of HBase garbage collection algorithm that is replaced via a
>> coprocessor. hbase-trx, on the other hand, does not provide read snapshots
>> and is not safe with client failures. You can find a more detailed comparison in
>> the Omid wiki page:
>> https://github.com/yahoo/omid/wiki
>> Cheers
>> - Maysam Yabandeh
>> On Mar 19, 2012, at 6:49 PM, Deepika Khera wrote:
>>> Hi,
>>> I have some map reduce jobs that write to Hbase. I am trying to pick a
>>> library that could provide transactional support for Hbase. I looked
>>> at Omid and hbase-trx .
>>> Could you please provide me with a comparison between the two so I can
>>> make the right choice.
>>> Are there any other ways to do this?
>>> Thanks,
>>> Deepika

View raw message