低基数列cassandra的二级索引

时间:2015-04-05 17:14:29

标签: cassandra cql datastax cql3 datastax-java-driver

我们有一个包含1500万条记录的表,而我们的表是一个10节点的cassandra集群。我们有一个列有近20个可重复的值。建议在此列上构建二级索引吗?

1 个答案:

答案 0 :(得分:7)

假设该列上的分布完全均匀,则每个列值将映射到750,000行。现在,虽然When To Use An Index上的DataStax文档声明了......

  

内置索引最适用于包含许多包含索引值的行的表。

750,000行当然有资格作为"很多。"但即便如此,请记住,在完成查询时,您还要谈论Cassandra必须忽略的14,250,000行。

此外,除非您的RF为10(并且我怀疑您将使用10个节点),否则您将产生网络时间,因为Cassandra在完成查询所需的所有不同节点之间工作。对于750,000行,这可能会超时。

我认为这可能有效的唯一方法是首先通过分区键限制查询。使用二级索引同时限制分区键将有助于Cassandra更快地找到您的行。即便如此,如果数据集很大,我会重新评估您的数据模型,并尝试找出一个不同的表来实现该查询,而不需要二级索引。