Sandy,

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

Cheers
- 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 HBase.
> 
> 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:[email protected]]
>> Sent: Monday, March 19, 2012 11:45
>> To: [email protected]
>> 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
>>> 
>>> 
>>> 
>>> 
> 

Reply via email to