2015-08-15 48 views
0

首先,我請求你請我承擔,如果這是一個愚蠢的問題,我表示歉意。用Cassandra實現一個像表一樣的堆棧(CQL 3)

我有一張這樣的桌子。

create table users (
cname text, 
--anything else like counter or timestamp 
primary key (cname) 
); 

我需要做的就是用該表實現一個類似堆棧的結構。

一些插入和刪除操作將在那裏。

面臨的問題:

1)我試過使用時間戳。我成功插入使用dateof(now())我只是想刪除最後1條記錄(???)。另外,通過將cname,t(其中t的類型爲timestamp)作爲主鍵,我擁有了我不想要的冗餘cname。

2)我嘗試使用counter,但我覺得它很複雜。另外,我可能有多個線程或客戶端執行插入/刪除操作。所以,我想離開它。

3)另外,我不會知道cname的價值。因此,在where子句中需要密鑰的查詢是不可能的。所以我認爲我需要將主鍵更改爲其他變量。

請幫我前進。我發現它有點困難,因爲沒有好書供cql學習。

回答

0

堆棧和隊列是cassandra中的反模式(http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) - 您可以實現它們,但是您需要先理解內部組件,然後才能做到這一點而不會犯下可怕的錯誤。很明顯,你可能還沒有達到那個水平。

是否有理由認爲您需要使用cassandra進行堆棧?

是的,主鍵的第一部分(稱爲分區鍵)需要您知道,因此如果您不知道cname,它可能不適合您的主鍵。你對數據/使用模式有什麼瞭解?也許時間桶?