Cassandra 有没有办法在插入时忽略聚簇键?

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

现在我有一个包含三列的 table:GroupIdObjectIdData,前两个定义为分区键。

目前它按预期工作:如果 GroupIdObjectId 匹配现有行,它会被覆盖。

我正在尝试添加按日期排序,因此我添加了第三列 LastModified 并将其指定为聚类键。虽然它适用于排序,但现在我有多行共享相同的 GroupIdObjectId 对,这不是我需要的。

我怎样才能实现以前的行为?

  1. 我可以在写入之前阅读 table 并在写入新行之前删除匹配行。
  2. 阅读后,我可以过滤我的应用程序中的行。

我不喜欢这两种解决方案,因为它们似乎太复杂,而且性能是一个大问题。有没有更好的方法?

如果其他人遇到同样的问题,我是这样做的:

我有一个 table,其中 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);

注意定义主键时的顺序很重要。