私は現在、cassandra でのデータ モデリング プラクティスを使用および調査しています。これまでのところ、実行されたクエリに基づくデータ モデリングが必要であることがわかりました。ただし、複数のselect
要件により、データ モデリングが 1 つのテーブルで処理することがさらに困難または不可能になります。したがって、1 つのテーブルでこれらの要件を処理できない場合は、2 ~ 3 つのテーブルを挿入する必要があります。つまり、1 回の操作で複数の挿入を行う必要があります。
現在、キャンペーン構造のデータ モデルを扱っています。次のcqlを使用してcassandraにキャンペーンテーブルがあります。
CREATE TABLE campaign_users
(
created_at timeuuid,
campaign_id int,
uid bigint,
updated_at timestamp,
PRIMARY KEY (campaign_id, uid),
INDEX(campaign_id, created_at)
);
このモデルでは、タイムスタンプのみを指定して増分エクスポートを作成できる必要があります。cassandra には、セカンダリ インデックスのクエリをallow filtering
有効にするモードがあります。select
したがって、増分エクスポートの cql ステートメントは次のとおりです。
select campaign_id, uid
from campaign_users
where created_at > minTimeuuid('2013-08-14 12:26:06+0000') allow filtering;
ただし、allow フィルタリングを使用すると、ステートメントのパフォーマンスが予測できないという警告が表示されます。それで、に依存するのは良い習慣allow filtering
ですか?他の選択肢は何ですか?