我需要在Cassandra中构建表来存储操作状态。 我的模型看起来像这样:
import 1.. * import_statuses
表格导入:
id - 1
date - 2016-08-09
表import_statuses:
id - 232
import_id - 1
status - IMPORT
现在我必须搜索导入和第二个表中的状态。但我只需要从第二张表中获得最后状态。
这两个表中的非规范化数据:
1, 2016-08-09, 232, 1 IMPORT
1, 2016-08-09, 233, 1 SENDING
1, 2016-08-09, 234, 1 SENT
2, 2016-08-11, 235, 2 IMPORT
2, 2016-08-11, 236, 2 SENDING
我只需要获得第三和第五行:
1, 2016-08-09, 234, 1 SENT
2, 2016-08-11, 236, 2 SENDING
答案 0 :(得分:0)
我将创建以下两个表,并将同时更新两个:
CREATE TABLE import (
id int,
status_id int,
date date static,
status text,
PRIMARY KEY (id, status_id)
) WITH CLUSTERING ORDER BY (status_id DESC);
CREATE TABLE last_import_status (
id int PRIMARY KEY,
date date,
status_id int,
status text
);
第一个包含非规范化数据,但由于日期字段是静态的,因此每次导入只存储一次。状态记录按降序存储 - 我知道这是一个越来越多的数字。如果status_id不是一个不断增加的数字,你可以添加一个timeuuid字段,并将其用作聚类键(PRIMARY KEY中的第二个字段)。
last_import_status表将包含每个导入的记录,status_id和status字段将始终包含最后一个值。