この RDBM テーブル ( Entity-attribute-value_model ) があるとします。
col1: entityID
col2: attributeName
col3: value
スケーリングの問題により、HBase を使用したいと考えています。
Hbase テーブルにアクセスする唯一の方法は、主キー (カーソル) を使用することです。特定のキーのカーソルを取得し、行を 1 つずつ反復できます。
問題は、私の場合、3 つの列すべてを反復できるようにしたいということです。例えば :
- 指定されたエンティティIDについて、そのすべての属性と値を取得したい
- 特定の属性名と値に対して、すべてのentitiIDSが必要です...
したがって、私が持っていた1つのアイデアは、データを保持する1つのHbaseテーブル(エンティティIDをプライマリインデックスとして持つテーブルDATA)と、2つの「インデックス」テーブルを構築することです。
各インデックス テーブルは、DATA テーブルのポインター (entityID) のリストを保持します。
それは合理的なアプローチですか?それともHbaseの概念の「乱用」ですか?
HBase では、主キーによる get 操作と行範囲のスキャン (カーソルを考えてください) が可能です。(スケールとセカンダリ インデックスの必要性の両方がある場合でも、心配する必要はありません。Lucene が助けてくれます! しかし、それは別の投稿です。)
Lucene がどのように役立つか知っていますか?
-- よなたん