无二级索引的Cassandra数据模型
我有一张桌子无二级索引的Cassandra数据模型,cassandra,nosql,data-modeling,Cassandra,Nosql,Data Modeling,我有一张桌子 CREATE TABLE tablea ( hour text, key_mod int, processed int, column1 bigint, column2 biginit, column3 biginit, PRIMARY KEY ((event_hour, key_mod, processed), item_id, variation_id) CREATE INDEX processed_idx ON ta
CREATE TABLE tablea (
hour text,
key_mod int,
processed int,
column1 bigint,
column2 biginit,
column3 biginit,
PRIMARY KEY ((event_hour, key_mod, processed), item_id, variation_id)
CREATE INDEX processed_idx ON tablea (processed);
已处理接受两个值-1表示已处理0表示未处理
SELECT * FROM tablea WHERE hour=? AND key_mod=? AND p1='N' LIMIT 300;
这将创建一个巨大的二级索引,我感觉它也会导致频繁的gc
我的访问模式看起来像
感谢这种情况使您看起来像是试图使用Cassandra作为队列(未处理的事件),这是一种反模式(您可以看到我对类似情况的另一个答案:) 将状态设置为分区列或集群列将使更新变得不可能,因此还需要删除,可能还需要先读后写,除了开销之外,这将创建墓碑 此外,正如您所提到的,在2值字段上建立索引会产生问题 我不会在这里复制粘贴我的另一个答案,但我非常确信,这些内容也可以解决您的问题(使用类似卡夫卡的东西似乎是您所需要的)。
干杯 多谢各位。这很有道理。