2012年5月26日土曜日

hbaseでトランザクションを利用する方法


hbaseのトランザクションについて補足
デフォルトではトランザクションをサポートしていないけど、
プラグインを入れることでトランザクションを使えるようになるとのこと。(RDBMSのそれとは若干異なる。)

方法を2つ見つけたので共有。
  1. contribのプラグインhbase-trx/hbase-transactional-tableindexedをhbaseに追加して起動する。@github
    • 楽観的平行性制御というトランザクション形式
    • →begin()時にロックするのではなく、割り込みがあった場合は全更新をロールバックして例外を返す。
  2. サードパーティーのライブラリhbase rowlog libraryを「クライアントサイドに」入れる。
    • ロックしないのでデッドロックを考えずに分散スキーマに向く。
    • 方法(あってるかな)
      1. キューにトランザクションを全てためる。
      2. 先頭クエリでこけた場合は処理を全て行わない。
      3. 2つ目以降のクエリでこけた場合は、バックグラウンドの別スレッドがキュー上の残クエリを実行する。(非同期)
参考:
HBase0.89におけるトランザクションについて -Hadoopユーザー会 | Google グループ

0 件のコメント:

コメントを投稿