我是Casssandra的新手,我覺得難以實現數據模型。定義Cassandra datamodel的難度
我已經面臨很多問題來設計一個表。
之前我提到的表定義,我想告訴你,我們必須檢索和更新記錄
select * from email where username='suresh' and inactive='N' and type='outbound'
order by insert_ts desc allow filtering;
update email set inactive='Y' where username='suresh' and inactive='N'
and id=101;
要創建一個表,我應該遵循所有卡桑德拉定義的規則的方式。我面臨的問題,同時爲表
指標如果我創建這樣
PRIMARY KEY(username, inactive,type,insert_ts);
我能夠檢索記錄,但是當我做更新,我得到錯誤說主鍵「主鍵部分在設置中找到「錯誤。
如果我創建主鍵和像下面
PRIMARY KEY(username, type,insert_ts);
Secondary index = inactive;
我能夠做的更新,但是當我找回,我得到錯誤說
「二級索引將不會被使用ORDER BY子句允許」次級鍵我創建使用定製列表的電子郵件表像
Create table email(id int, username varchar, comment text,
inactive boolean, insert_ts timestamp, type varchar,
PRIMARY KEY(<<some columns yet to decide>>));
請建議我如何創建滿足我的查詢郵件表。
從你迄今爲止提供的內容來看,你應該沒有問題根據insert_ts進行過濾或排序。因爲在插入行後它永遠不會改變,所以可以將它添加到主鍵中,然後按照原始帖子中的第一個SELECT查詢在WHERE或ORDER BY中使用它(唯一的區別是,您不會在WHERE中無效)。 –
至於id,我不認爲你需要額外的列來做你想做的。只需存儲主鍵(username + type + insert_ts)的最後一個返回值並將該值用於分頁,而不需要額外的列。有關詳細信息,請參閱此答案:http://stackoverflow.com/questions/11832886/cassandra-cql-method-for-paging-through-all-rows。 –