【问题标题】:secondary indexes for low cardinality columns cassandra低基数列的二级索引 cassandra
【发布时间】:2015-06-10 04:23:34
【问题描述】:

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

【问题讨论】:

    标签: cassandra cql datastax-java-driver cql3


    【解决方案1】:

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

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

    750,000 行当然可以称为“很多”。但即便如此,请记住,您还谈到 Cassandra 在完成查询时必须忽略的 14,250,000 行。

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

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

    【讨论】:

    • 嗨布莱斯;非常感谢您的解释。要添加到上述问题,我们将对查询应用限制“1”。所以这将是“从secondary_index ='xyz'限制1的表中选择*”。限制函数也会导致 RPC 超时吗??
    • @kris433 限制为 1,可能还不错。试试看,看看你的响应时间是怎样的。
    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2018-07-01
    • 2013-09-30
    相关资源
    最近更新 更多