0

私はHbaseにかなり慣れていません。

hbase を使用してディスカッション スレッドを実装する必要があります。

各ディスカッションには新しい行キーがあります。

hbase からディスカッションを取得するのは、作成された行キーの順序です (タイム スタンプ付き)。

しかし、新しいコメントがディスカッションに追加されるたびに、リストの一番上に表示されるそのディスカッションをユーザーに表示したいと考えています。

しかし、私の現在のシナリオによれば、リストの下のスレッドにコメントすると、ディスカッションスレッドの行キーがタイムスタンプに基づいているため、表示されません。

これを実現するためにフィルターを使用することを考えましたが、コストのかかる操作になります。

これを達成するための他の良い方法はありますか?

前もって感謝します。

4

1 に答える 1

1

2 番目の「インデックス」テーブルに同時に書き込むこともできます (RDBMS とは異なり、HBase が維持する自動宣言インデックスがないため、引用符で囲みます。自分で行う必要があります)。そのテーブルは、行キーの変更日に基づいており、メイン テーブルでレコードを見つけるのに十分な情報を含んでいる可能性があります (たとえば、行キーに変更日があり、列の値に作成日がある場合など)。 . 操作は、この「インデックス」テーブルで線形スキャンを実行して、最近変更されたレコードを検索し、表示するレコードごとに 1 つずつ、メイン テーブルに N GET 操作を行います。

完全に別の設計は、ユーザーごとに 1 つの行を HBase に格納し、2 つの列ファミリーを使用して格納できるというものです。1 つはユーザーのメッセージ用です (各列は 1 つのメッセージであり、上記と同様の方法で格納されますが、行の代わりに各ディスカッションには、各ディスカッションの列があります); 次に、別の列ファミリーにユーザーの「受信トレイ」を格納できます。これは、受信トレイを表示するために使用される、変更日順に並べられた上位 N 件のメッセージの単なるキャッシュです。これらを行ではなく列として行う利点は、このシナリオでは行全体がユーザーごとにトランザクション的に保護されるため、チェックと設定などのより複雑な操作を実行でき、受信トレイ ビューが常に一貫していることを保証できることです。最新のメッセージとともに。

于 2012-05-18T10:58:53.823 に答える