【问题标题】:Can I create a secondary index on multiple columns in cassandra我可以在 cassandra 的多个列上创建二级索引吗
【发布时间】:2013-12-04 16:31:03
【问题描述】:

我可以在 cassandra 中的多个列上创建二级索引吗? 我可以这样做吗

在 my_column_family (id,name) 上创建索引 my_composite_index

CQL 抛出错误

:2:Bad Request: line 1:73 mismatched input ',' 期待 ')'

【问题讨论】:

    标签: cassandra cql cql3


    【解决方案1】:

    Alex 的回答是正确的,但我想我会添加一些额外的输入。

    Cassandra 二级索引 (2i) 真正适用于低基数字段,即不是每个实体/行唯一的事物。

    如果您有一个包含 2.5 亿美国公民的表格,那么使用二级索引来跟踪他们所在的州是 2i 的完美用例。使用二级索引来跟踪他们的社会安全号码不是 - 它会为读取和写入带来巨大的性能问题。在第二种情况下,您最好创建自己的索引列族。

    2i 不会被复制,并且必须在每个节点中本地创建,因此如果您必须更换节点或添加新节点,则需要进行大量工作来重建它们。

    就我个人而言,我使用 2i 来过滤所有在同一 CQL 行上排序的项目结果(即所有项目都具有相同的分区键) - 在该用例中它的性能非常好。

    【讨论】:

      【解决方案2】:

      没有。 Cassandra 二级索引基于单个列。你可以找到创建二级索引的CQL语法here

      作为背景知识,二级索引基于单列的原因是为了避免 read-before-write 以保持写入的性能。

      【讨论】:

      • 在我的公司中,我们在多个列上有二级索引。自您回答此问题以来,情况是否发生了变化?
      • @user911, the latest 仍然表示单列。你确定你没有考虑你的PRIMARY KEY 定义吗?
      猜你喜欢
      • 1970-01-01
      • 2012-06-28
      • 2018-05-04
      • 2023-03-29
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多