簡體   English   中英

Cassandra CQL表INSERT和INDEX問題

[英]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。

  1. 給我所有的employee_id?
  2. 將過去5分鍾內發生的所有變化都告訴我嗎?
  3. 把所有的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());

我可以執行所有上述查詢模式,但是仍然存在一個問題。


我的問題是要避免在下面的查詢中出現這種特殊情況。 如果以某種方式錯誤地嘗試執行以下查詢該怎么辦。 如果他們這樣做,它將創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM