[英]Cassandra CQL table INSERT and INDEX issue
我在我們的用例中使用下表-
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。
我將下面的數據插入到我的上表中-
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());
我可以執行所有上述查詢模式,但是仍然存在一個問題。
我的問題是要避免在下面的查詢中出現這種特殊情況。 如果以某種方式錯誤地嘗試執行以下查詢該怎么辦。 如果他們這樣做,它將創建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());
有什么想法嗎? 我知道這是一個值得商situation的情況,因為有關使用RDBMS與Cassandra的爭論
而且還要在employee_name上創建索引會導致任何問題嗎? 在我的示例中,相同的employee_name可以具有多個employee_id,但是具有不同的值。 請記住, employee_id
不得大於32767
因此這意味着上表中的最大行數為32767
。
我正在運行Cassandra 1.2.9
我不希望任何人再次在Cassandra數據庫中插入相同的employee_id
保證 Cassandra提供的唯一方法(“僅在沒有相同PK的行存在時才插入”)是Cassandra 2.0中引入的條件插入/ udpates: http : //www.datastax.com/dev/blog/lightweight -transactions-in-cassandra-2-0 。
但請注意,其性能不是很好。 如果不增加新員工往往那么它可能只是你想要什么,但如果這是做了很多的查詢和競爭是可能的,這可能會無法正常工作那么好。 但是您說您不需要超過32K的employee_id值這一事實表明,添加新員工實際上根本不是一個頻繁的查詢。
話雖這么說,如果唯一擔心的是您不會重復使用相同的employee_id兩次,則C *中的標准解決方案是對employee_id使用uuid,因此您不必擔心沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.