Database design 查询Cassandra列族中X天内未更新的行

Database design 查询Cassandra列族中X天内未更新的行,database-design,data-modeling,nosql,cassandra,Database Design,Data Modeling,Nosql,Cassandra,我正在将一个现有的基于MySQL的应用程序转移到Cassandra。到目前为止,找到等效的Cassandra数据模型非常容易,但我偶然发现了以下问题,希望您能提供一些意见: 考虑一个包含数百万实体的MySQL表: CREATE TABLE entities ( id INT AUTO_INCREMENT NOT NULL, entity_information VARCHAR(...), entity_last_updated DATETIME, PRIMARY KEY (id)

我正在将一个现有的基于MySQL的应用程序转移到Cassandra。到目前为止,找到等效的Cassandra数据模型非常容易,但我偶然发现了以下问题,希望您能提供一些意见:

考虑一个包含数百万实体的MySQL表:

CREATE TABLE entities (
  id INT AUTO_INCREMENT NOT NULL,
  entity_information VARCHAR(...),
  entity_last_updated DATETIME,
  PRIMARY KEY (id),
  KEY (entity_last_updated)
);
每五分钟查询一次表,以查找需要更新的实体:

 SELECT id FROM entities 
  WHERE entity_last_updated IS NULL 
     OR entity_last_updated < DATE_ADD(NOW(), INTERVAL -7*24 HOUR)
  ORDER BY entity_last_updated ASC;

相应的Cassandra数据模型是什么,它允许我存储给定的信息并有效地查询entities表中需要更新的实体(即:在过去七天内未更新的实体)?

您必须扫描所有行并从列中获取时间戳你对我感兴趣。如果这是您每天都要运行的东西,那么在Hadoop作业中执行这项操作就可以了。如果您每隔几分钟运行一次,那么您需要想出另一种方法。

要实现您所描述的,您需要将列名作为时间戳,并使用使用“开始时间”和“结束时间”的“获取切片”函数,它将为您提供该范围内所有列名为的行。还可以使用列名排序,以便按时间排序得到结果。

Hi!查询每五分钟发出一次。我现在用这些信息更新了我的问题。
 UPDATE entities 
    SET entity_information = ?, 
        entity_last_updated = NOW()
  WHERE id = ?;