As said in a previous post "HBase ensures that all new versions created by single Put operation for a particular rowkey are either all seen by other clients or seen by none." Indeed HBase can execute atomic Put operations and atomic Delete
As said in a previous post "HBase ensures that all new versions created by single Put operation for a particular
rowkey are either all seen by other clients or seen by none."
Indeed HBase can execute atomic Put operations and atomic Delete operations (as well as a few specialized operations like Increment and Append).
What HBase cannot currently do is to execute a grouping of different operations atomically. For example you cannot execute a Put and Delete operation atomically.
HBASE-3584 and HBASE-5203 change that. It is now possible to group multiple Puts and Deletes for the
same row key together as a single atomic operation. The combined operation is atomic even when the executing regionserver fails half way through the operation.
The client facing API looks like this:
HTable t = ...;byte[] row = ...; RowMutation arm = new RowMutation(row);Put p = new Put(row);p.add(...)Delete d = new Delete(now);p.delete{Column|Columns|Family}(...);arm.add(p);arm.add(d);t.mutateRow(arm); RowMutation implements the Row interface and can hence itself be part of a multi row batch operation:
HTable t = ...;byte[] row1, row2; RowMutation arm1 = new RowMutation(row1);RowMutation arm2 = new RowMutation(row2);...List rows = ...;
rows.add(arm1);rows.add(arm2);t.batch(rows);But note that this multi row batch is not atomic
between different rows.
原文地址:HBase (Intra) Row Transactions, 感谢原作者分享。
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn