Database design 查询Cassandra列族中X天内未更新的行
我正在将一个现有的基于MySQL的应用程序转移到Cassandra。到目前为止,找到等效的Cassandra数据模型非常容易,但我偶然发现了以下问题,希望您能提供一些意见: 考虑一个包含数百万实体的MySQL表: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)
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 = ?;