2013-04-11 23 views
1

我正在研究一個原型來評估HBase在真實項目中的使用情況(取決於原型的結果)。在我正在處理的模式中,我在同一個列族中有多個列,我需要以原子方式更新其中的幾個列(總是在同一行內)。我使用客戶端api的checkAndPut方法做了一些測試,但它似乎只支持比較一個值(因此在put參數中設置一個值)。我是否正確理解這一點?如果是這樣,是否有另一種方法來做我所需要的?帶多列的CheckAndPut操作

+0

?您使用的是什麼版本的HBase – 2013-04-12 05:33:32

+0

我正在使用最新的穩定版本,它是0.94.6.1 – Diego 2013-04-14 23:50:35

回答

1

您可以使用RowMutations將單個行的所有PUT操作設置爲一起,並獲取所有更改爲原子單位。

+0

這將解決在同一行中原子地更改不同列的問題,但我無法看到如何使用checkAndPut方法的功能(僅當存儲的值與checkAndPut參數匹配時才執行put操作)和RowMutations一起使用。你能用一個例子來指向我的頁面嗎?提前致謝。 – Diego 2013-04-15 15:50:36

+1

我可能不會像這樣使用HBase。但如果您必須鎖定該行,請閱讀並根據需要進行更新 - 請閱讀有關鎖定及其一些問題的更多信息,網址爲http://www.ngdata.com/hbase-row-locks/。再次,我會嘗試重新考慮這種情況,例如HBase支持多個版本,因此您可以隨時更新並在稍後進行排序(例如,在更新後運行的協處理器中) – 2013-04-15 16:29:35

+0

非常感謝您的鏈接,我會閱讀它並看看我能否用這些信息解決問題。如果沒有,我會考慮按照您的建議更改設計。 – Diego 2013-04-15 17:41:34