2017-09-26 8 views
0

フィールドuserid、name、gender、email、statusを持つ列ファミリがあります。 userid、emailは主キーです。cassandraの頻繁に更新されるフィールドのインデックス方法

ステータスがtinyintのセカンダリインデックスを作成しました。

CREATE CUSTOM INDEX users_status_idx ON custom.users (status) USING 'org.apache.cassandra.index.sasi.SASIIndex'; 

ステータス値は継続的に更新されます(毎日2,000万レコード)。

プログラムの起動中に、データベースからデータを取得するのに0秒かかります。時間が増加するにつれて、データを検索するのにかかる時間が増加する。

このようなタイプのフィールド(ステータス)をインデックスする最良の方法は何ですか?

+0

* crore * 10Mですか? – xmas79

答えて

1

おそらく、2つ(またはそれ以上の状態数に応じて)テーブルを追加することによってデータを非正規化することです。通常はをクエリし、これらのテーブル間でユーザーを移動します。日常的にステータスを変更するユーザーの数が非常に多い場合は、墓碑の問題を避けるために、賢明なパーティションキーなど、テーブルの設計に特別な注意を払う必要があります。

+0

また、大量のデータに対して将来のスキーマの変更について考える必要があることを追加したいと思います。完全なインデックスの再構築を引き起こします(これを変更すると起こります)。 lucene(https://github.com/Stratio/cassandra-lucene-index)に基づくstratioのようなカスタムインデックスも使用できます。 –

関連する問題