簡體   English   中英

Cassandra 有沒有辦法在插入時忽略集群鍵?

[英]Is there a way for Cassandra to ignore clustering key when inserting?

現在我有一個包含三列的表: GroupIdObjectIdData ,前兩列定義為分區鍵。

目前它按需要工作:如果GroupIdObjectId匹配現有行,它會被覆蓋。

我正在嘗試添加按日期排序,所以我添加了第三列LastModified並將其指定為聚類鍵。 雖然它適用於排序,但現在我有多行共享相同的GroupIdObjectId對,這不是我需要的。

我怎樣才能實現以前的行為?

  1. 我可以在寫入之前讀取表格並在寫入新行之前刪除匹配的行。
  2. 閱讀后,我可以在我的應用程序中過濾行。

我不喜歡這兩種解決方案,因為它們似乎太復雜了,而且性能是一個大問題。 有沒有更好的辦法?

如果其他人面臨同樣的問題,我是這樣做的:

我有一個以GroupIdObjectId為鍵的表。 我不確定這是否重要,但ObjectId被定義為集群鍵。

然后您從以下視圖中獲得所需的結果:

        CREATE MATERIALIZED VIEW IF NOT EXISTS objectlistbylast
        AS SELECT * FROM objectlist
        WHERE groupid IS NOT NULL AND objectid IS NOT NULL AND lastmodified IS NOT NULL
        PRIMARY KEY(groupid , lastmodified, objectid )
        WITH CLUSTERING ORDER BY(lastmodified DESC);

請注意,定義主鍵時的排序很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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