私たちのユースケースでは以下の表を使用しています -
create table test_new (
employee_id text,
employee_name text,
value text,
last_modified_date timeuuid,
primary key (employee_id, last_modified_date)
);
create index employee_name_idx on test_new (employee_name);
上記のテーブルでは、employee_id は常に 1 から 32767 まで一意になります。したがって、クエリ パターンは次のようになります。
- employee_id のすべてを教えてください。
- 過去 5 分間の変更点をすべて教えてください。
- employee_name のすべてを教えてください。
上記のテーブルに以下のデータを挿入します-
insert into test_new (employee_id, employee_name, value, last_modified_date)
values ('1', 'e27', 'some_value', now());
insert into test_new (employee_id, employee_name, value, last_modified_date)
values ('2', 'e27', 'some_new_value', now());
insert into test_new (employee_id, employee_name, value, last_modified_date)
values ('3', 'e28', 'some_new_again_value', now());
上記のクエリ パターンはすべて実行できますが、まだ 1 つの問題があります。
私の質問は、以下のクエリでこの特定のシナリオを回避することです。どういうわけか誤って以下のクエリを実行しようとした場合はどうなるでしょうか。その場合、employee_id が 1 で他のフィールドを持つ別の行が作成されますか? Cassandraデータベースにすでにある場合、同じemployee_idを再度挿入したくありません..
insert into test_new (employee_id, employee_name, value, last_modified_date)
values ('1', 'e29', 'some_new_value', now());
何かご意見は?RDBMSとCassandraの使用に関する議論のため、これは議論の余地がある状況であることを私は知っています
また、employee_name にインデックスを作成すると問題が発生しますか? 私の例では、同じ employee_name に複数の employee_id を指定できますが、値は異なります。employee_id
それよりも大きくならないことに注意してください。32767
つまり、最大行数は32767
上の表になります..
Cassandra 1.2.9 を実行しています