【发布时间】:2018-06-24 07:18:51
【问题描述】:
我很惊讶以前没有提出这个问题。
假设我们在 cassandra 中有一个巨大的表,我们需要获得其中的估计行数(不精确,只是近似值)。
显然简单的select count(*) from table 效率不高,可能需要很多时间。我们需要一些又脏又快的东西。
Datastax 博客建议the following:
我不关心确切的数字,我可以大致估计一下吗?
因为 Cassandra 知道每个 SSTable 中有多少行 可能得到一个估计。 “nodetool cfstats”输出告诉你 这些计数在“键数(估计)”行中。这是总和 每个 SStable 中的行数(由于使用的索引,再次近似 但默认关闭不能超过 128)。
我的问题:我们可以使用DataStax Enterprise Java driver 执行相同的操作吗?
P.S. 我无法更改表格结构或其他任何东西。考虑我使用旧模式。换句话说,我对添加计数器或其他特殊字段之类的解决方法不感兴趣。
【问题讨论】:
-
如果没有自动方式,你可以只存储一个计数器。
-
@DonBranson 如果我在 prod 中有一个已经遗留的数据库,这将不起作用
-
是的,不好。对 nodetool 的估计值初始化一个计数器将允许一个粗略的值。取决于您可以容忍多少粗略值。如果你能通过 api 得到一些东西肯定会更好。
标签: java cassandra datastax-java-driver