私の場合、クエリのinitセットの行キーを定義しました。行キーに対してクエリを実行し、列ファミリーと列はそのままにします。
例えば。行キーは次のようなものです。
%userid%_%timestamp%
私たちは次のようないくつかのクエリを実行しています
select columnFamily{A,B,C} from userid=blabla and blabla < timestamp < blabla
hbaseが構築されているため、パフォーマンスはかなり良好です-行キールックアップ。
ただし、新しい要件が構築されるため、より多くのフィールド(列)に対してクエリを実行する必要があります。お気に入り:
select * from userid=blabla and blabla < timestamp < blabla and A=blabla and B=blabla and c=blabla
hbaseフィルターの使用を開始しました。列の1つでEqualFilterを試しました-A、機能の観点からは問題なく動作します。
私たちが持っている行キーを考えると、私はここで一般的な懸念を持っています、
- さまざまなクエリのニーズを満たすために、すべての列A、B、Cに対してフィルターを追加し続けることができますか?hbaseクエリに追加されたフィルターの数は、読み取りパフォーマンスを低下させますか?
- あるとしたら、その影響はどれほど劇的ですか?
- パフォーマンスの観点から、最高のhbaseフィルターをどのように使用すべきかを誰かに説明してもらえますか?