在cassandra数据建模中使用timeUUID作为主键

问题描述 投票:0回答:0

我们有一个需求,在cassandra中记录时间序列数据

以下数据建模能够满足功能需求。

CREATE TABLE sample_times (c timeuuid ,a varchar, PRIMARY KEY (c));
INSERT INTO sample_times (c,a) VALUES ( now(), 'course1');
INSERT INTO sample_times (c,a) VALUES ( now(), 'course2');
INSERT INTO sample_times (c,a) VALUES ( now(), 'course3');
INSERT INTO sample_times (c,a) VALUES ( now(), 'course0');
INSERT INTO sample_times (c,a) VALUES ( now(), 'course5');
INSERT INTO sample_times (c,a) VALUES ( now(), 'course4');
INSERT INTO sample_times (c,a) VALUES ( now(), 'course0');

要选择数据,我们可以通过一个小范围选择它,只能在该范围内找到限制行数(即 5 分钟)。

SELECT * FROM sample_times
   WHERE c > maxTimeuuid('2023-05-03 00:05+0000')
   AND c < minTimeuuid('2023-05-03 00:10+0000') allow filtering;

但是每次执行此操作时,我们都必须添加一个允许过滤,这意味着该子句可能会对性能产生影响。 我们不想添加一些其他主键,如 workstation_id 等来对时间序列数据进行分组,因为它不方便。

我不知道cassandra在实现中是如何处理的。在大表中使用时间 uuid 作为第一个主键在性能上是否实用?

谢谢~

期望通过提供小的时间范围,可以在大表中快速选择结果。

time cassandra modeling
© www.soinside.com 2019 - 2024. All rights reserved.