【发布时间】:2021-03-21 23:39:23
【问题描述】:
我需要确定 Cassandra 表中的记录数是否大于某个数字,例如 10000。
我仍然没有大型数据集,但在大规模,可能有数十亿条记录,我如何才能有效地实现这一目标?
可能有数十亿条记录,或者只有数千条。我只需要知道是多于还是少于 10K。
下面的这似乎不对,我认为对于大量记录它会失败或非常慢。
SELECT COUNT(*) FROM data WHERE sourceId = {id} AND timestamp {startDate};
我也可以这样做:
SELECT * FROM data WHERE sourceId = {id} AND timestamp {startDate} LIMIT 10000;
在内存中计数
我不能有新表用于计数,例如,当写入新记录时,增加计数器,该选项是不可接受的。
还有其他方法可以做到这一点吗?限制选择看起来很愚蠢,但似乎最可行。
sourceId 是分区键,时间戳是集群键。
Cassandra 版本是 3.11.4,如果有什么相关的,我在 Spring 工作。
【问题讨论】:
-
表结构是什么?
标签: cassandra