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, 感谢原作者分享。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn