1

HBase FAQ で最初に読んだサンプル スキーマの 1 つは、多対多関係の Student-Course の例です。このスキーマには、Student テーブルに Courses 列があり、Course テーブルに Students 列があります。

しかし、HBase でこれら 2 つのオブジェクト間の整合性を保証する方法がわかりません。あるテーブルを更新する前に何かがクラッシュした場合、問題が発生します。

トランザクション機能があるようですが、すべてのプットでこれを使用するコストはいくらですか? または、問題について考える他の方法はありますか?

4

4 に答える 4

2

同じ問題にぶつかりました。

トランザクションとあなたが言及した関係の問題を処理する hbase 用の商用プラグインを開発しました。具体的には、JDO 準拠環境に DataNucleus を利用します。当社のプラグインは、このページhttp://www.datanucleus.org/products/accessplatform_3_0/datastores.htmlにリストされている か、当社の小さなブログhttp://www.inciteretail.com/?page_id=236に直接アクセスできます。

取引サービスにはJTAを利用しています。したがって、あなたの場合、関係の問題と、インデックス テーブルの挿入も処理します (インデックスの検索と並べ替えなしでアプリを作成するのは困難です!)。

于 2011-09-01T13:38:04.000 に答える
1

追加のログがないと、これら 2 つのオブジェクト間の整合性を保証できません。HBase には、行レベルでのアトミックな更新のみがあります。ただし、おそらくそのプロパティを使用して、障害後に回復できる Tx ログを作成できます。

于 2010-07-07T05:23:38.913 に答える
0

1 つの作業単位として 2 つの INSERT を実行する必要がある場合は、トランザクション マネージャーを使用して ACID プロパティを保持する必要があります。私が知っている問題について考える他の方法はありません。

コストは、参照整合性ほど重要ではありません。適切にコーディングし、パフォーマンスについて心配する必要はありません。パフォーマンスの問題を探す最初の場所は、トランザクション マネージャーではなく、コードです。

于 2010-06-27T13:28:15.680 に答える