<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    HBase、Redis中關于“長事務”(Long Transaction)的一點討論

    首先解釋下標題,可能命名不是那么嚴謹吧,大致的定義如下:

    sometimes you are in a situation where you want to read a record, check what is in it, and depending on that update the record. The problem is that between the time you read a row and perform the update, someone else might have updated the row, so your update might be based on outdated information.

    摘要一下:進程A讀取了某行R,進行時間較長的計算操作,在這個計算過程中B對行R進行了更改。A計算完畢后,若直接寫入,會覆蓋B的修改結果。此時應令A寫入失敗。

    以下的討論整理自下述兩個頁面,表示感謝!

    http://www.ngdata.com/hbase-row-locks/

    http://redis.io/topics/transactions

    一個最簡單、直接的思路是:Transaction + Row Lock。類似于傳統(tǒng)DBMS的思路:首先開啟行鎖,新建一個Transaction,隨后進行各種操作,最后commit,最最后解除行鎖??此坪芎唵危矝]什么Bug,但注意,若計算時間較長,整個DB就掛起了,不能執(zhí)行任何操作。

    BigTable的Paper中,對這類問題進行了討論。

    總體來說解決思路有三:

    1、Rowlock,但是對于HBase來說,RegionLock更成熟。因為RowLock會長時間(從Transction開始到更新)占用一個線程。當并發(fā)量很大的時候,系統(tǒng)會掛掉。。。

    2、ICV即HBase的incrementColumnValue()方法。

    3、CAS即HBase的checkAndPut方法:在Put之前,先檢查某個cell的值是否和value一樣,一樣再Put。注意,這里檢查條件的Cell和要Put的Cell可以是不同的column,甚至是不同的row。。。

    綜上在HBASE中,使用上述CAS方法是較好的解決方案。

    上面說了HBase,再來看一個輕量級的Redis:

    Redis也支持事務,具體見:http://redis.io/topics/transactions

    通過MULTI開始一個事務,EXEC執(zhí)行一個事務。在兩者之間可以“執(zhí)行”多個命令,但并未被實際執(zhí)行,而是被Queue起來,直到EXEC再一起執(zhí)行。Redis保證:在一個事務EXEC的過程中,不會處理其他任何Client的請求(會被掛起)。注意這里是EXEC鎖,而不是整個MULTI鎖。所以并發(fā)性能還是有保障的。

    為了支持Paper中CAS方案,Redis提供了WATCH命令:

    So what is WATCH really about? It is a command that will make the EXEC conditional: we are asking Redis to perform the transaction only if no other client modified any of the WATCHed keys. Otherwise the transaction is not entered at all.

    已經很顯然了,更多具體的,讀上述網頁的文檔吧。

    posted on 2013-08-24 22:39 paulwong 閱讀(399) 評論(0)  編輯  收藏 所屬分類: HBASE

    主站蜘蛛池模板: 免费影院未满十八勿进网站| 西西大胆无码视频免费| 日本亚洲免费无线码| 亚洲av午夜精品一区二区三区| 亚洲国产精品乱码一区二区| 亚洲综合一区国产精品| 国产高清视频免费在线观看| 成人黄色免费网站| 亚洲午夜精品久久久久久浪潮 | 免费人成在线观看网站视频| 亚洲国产精品人久久| 亚洲欧美日韩一区二区三区在线| 三上悠亚在线观看免费| 国语成本人片免费av无码| 香蕉国产在线观看免费| 亚洲网站免费观看| 亚洲精品偷拍视频免费观看| 亚洲成无码人在线观看| 国产美女视频免费观看的网站| 免费看污成人午夜网站| 亚洲人精品午夜射精日韩| 亚洲乱码国产乱码精华| 99爱视频99爱在线观看免费| 亚洲麻豆精品国偷自产在线91| 亚洲jjzzjjzz在线观看| a级毛片高清免费视频就| 国产精品免费视频网站| 亚洲熟妇色自偷自拍另类| 美女巨胸喷奶水视频www免费| 成全影视免费观看大全二| 亚洲视频在线一区| 四虎影视在线看免费观看 | 曰批视频免费30分钟成人| 国产成人麻豆亚洲综合无码精品| 亚洲午夜精品久久久久久app| 99久热只有精品视频免费观看17| 亚洲欧洲中文日韩久久AV乱码| 亚洲一卡2卡三卡4卡无卡下载| 久久99国产综合精品免费| 亚洲色自偷自拍另类小说| 色妞www精品视频免费看|