无二级索引的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

我的访问模式看起来像

  • 获取一小批未处理的记录
  • 处理它们
  • 将批次中的记录标记为“已处理”
  • 对这个表进行建模的最佳方式是什么?我们无法将processed添加到群集列,因为我们将无法更新它。我们的想法快用完了


    感谢

    这种情况使您看起来像是试图使用Cassandra作为队列(未处理的事件),这是一种反模式(您可以看到我对类似情况的另一个答案:)

    将状态设置为分区列或集群列将使更新变得不可能,因此还需要删除,可能还需要先读后写,除了开销之外,这将创建墓碑

    此外,正如您所提到的,在2值字段上建立索引会产生问题

    我不会在这里复制粘贴我的另一个答案,但我非常确信,这些内容也可以解决您的问题(使用类似卡夫卡的东西似乎是您所需要的)。
    干杯

    多谢各位。这很有道理。