【问题标题】:Why do we need secondary indexes in cassandra and how do they really work?为什么我们需要 cassandra 中的二级索引以及它们是如何工作的?
【发布时间】:2014-05-04 05:07:30
【问题描述】:

我试图理解为什么在 Cassandra 上甚至需要二级索引。

我知道使用二级索引是因为:

“二级索引允许使用相等谓词(其中列 x = 值 y)通过特定值进行高效查询。此外,对索引值的查询可以应用其他过滤器来执行范围查询等操作。”

来自:http://www.datastax.com/docs/0.7/data_model/secondary_indexes

但我不明白为什么这样的查询:

get users where birth_date = 1973;

要求birth_date 有一个二级索引。为什么二级索引甚至需要存在? cassandra 不能只遍历表,然后在匹配约束时返回值吗?为什么我们需要以任何特殊方式处理我们可能想要以这种方式查询的东西?

我假设 cassandra 是分布式的并且遍历整个表这一事实可能并不容易,因为每个行键都分配给不同的节点,这使得它有点复杂。但我并不真正理解如何使它分布复杂化问题以及二级索引如何解决它(即 cassandra 如何解决这个问题?)。

关于这个问题,是不是只有二级索引和主键是SELECT * FROM column_family_table WHERE col_x = constraint的for中唯一可以查询到的东西?为什么主键特殊?

【问题讨论】:

    标签: cassandra cql


    【解决方案1】:

    由于这些 nosql 数据库要处理的数据量很大,因此无法进行表扫描或区域扫描。这就是 Cassandra 仅在启用辅助索引时才限制和允许对非行键列的查询。这样,这些索引和数据将位于同一个数据节点上。

    希望对你有帮助。

    -Vivek

    【讨论】:

    • 是的,这很有帮助。作为一个后续问题,我有点不确定究竟可以用这样的约束查询什么东西?即只能使用 colx= 约束查询二级索引?或者这是否也包括整个主键?谢谢!
    猜你喜欢
    • 2011-09-19
    • 2014-06-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多