【问题标题】:What is the difference between a secondary index and an inverted index in Cassandra?Cassandra 中的二级索引和倒排索引有什么区别?
【发布时间】:2013-10-08 13:01:43
【问题描述】:

当我读到这两个时,我以为他们都在解释相同的方法,我用谷歌搜索但一无所获。执行上有区别吗? Cassandra自己做二级索引但是倒排索引要自己实现?

顺便问一下,哪个搜索速度更快?

【问题讨论】:

    标签: search indexing cassandra inverted-index


    【解决方案1】:

    主要区别在于 Cassandra 中的二级索引与手动倒排索引的分布方式不同。使用内置的二级索引,每个节点都会索引它在本地存储的数据(使用 LocalPartitioner)。使用手动索引,索引的分布独立于存储值的节点。

    这意味着,对于内置索引,每个查询都必须转到每个节点,而如果您手动进行反向索引,则只需转到一个节点(加上副本)来查询您正在查找的值。将索引存储在本地的一个优点是可以使用数据自动更新索引。 (虽然,从 Cassandra 1.2 开始,原子批处理可以用于此,尽管它们有点慢。)

    这就是为什么不建议将 Cassandra 索引用于非常高的基数数据的原因。如果你在每个节点上进行查找但只有一两个结果,效率低下,手动倒排索引会更好。如果您的查找返回许多结果,那么您无论如何都需要在每个节点上查找,以便内置索引正常工作。

    使用 Cassandra 的内置索引的另一个优点是索引是延迟更新的,因此您无需在每次更新时都进行读取。 (请参阅CASSANDRA-2897。)对于具有高写入吞吐量的索引表,这可以显着提高速度。

    【讨论】:

    • 受这个问题的启发,我在我的博客上写了一个更详细的答案:www.wentnet.com/blog/?p=77
    • 数据库连接失败的讽刺
    猜你喜欢
    • 1970-01-01
    • 2014-01-16
    • 2019-10-08
    • 2018-11-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多