directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Seelmann <seelm...@apache.org>
Subject Re: Handling consistency issues with HBASE partition (was Re: HBase partition integration in trunks ?)
Date Mon, 29 Aug 2011 17:58:21 GMT
Hi Selcuk,

On Mon, Aug 29, 2011 at 4:52 PM, Selcuk AYA <ayaselcuk@gmail.com> wrote:
> Working on JDBM, I was wondering what kind of cosistency gurantees
> does HBASE partition implemenation expose? In particular, do put and
> fetch operations on the underlying master table and indices have ACID
> properties? How about cursors? Do cursors see future changes as they
> move back and forth?

Thanks for asking, [1] gives a nice overview.

Write operations:
In HBase a single "put" to a single row of a table is ACID, even if
multiple columns are modified. However on an update within ApacheDS we
have to write to multiple tables and even multiple rows within a
table. Such a modification is not ACID. HBase doesn't provide
transactions.

Read operations:
There is no isolation in HBase so cursors (called scans in HBase) see
future changes.

One idea we had some time back was to integrate MVCC into XDBM so that
transactions and isolation is independent from the underlying store.

Another thing is that scans in HBase only work in forward direction,
not backward. That wasn't a real a problem till now because most times
in ApacheDS only the forward direction is used. There are just rare
cased where a Curosor.previous() is used, for that case I keep a small
amount (10) index entries in memory so the previous() can be handled.
When we add more features that require backward traversal (e.g. VLV)
there is a workaround: in that case we need to create a second index
table with an inverse key.

Kind Regards,
Stefan


[1| http://hbase.apache.org/acid-semantics.html

Mime
View raw message