【发布时间】: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 中的多个列上创建二级索引吗? 我可以这样做吗
在 my_column_family (id,name) 上创建索引 my_composite_index
CQL 抛出错误
:2:Bad Request: line 1:73 mismatched input ',' 期待 ')'
【问题讨论】:
Alex 的回答是正确的,但我想我会添加一些额外的输入。
Cassandra 二级索引 (2i) 真正适用于低基数字段,即不是每个实体/行唯一的事物。
如果您有一个包含 2.5 亿美国公民的表格,那么使用二级索引来跟踪他们所在的州是 2i 的完美用例。使用二级索引来跟踪他们的社会安全号码不是 - 它会为读取和写入带来巨大的性能问题。在第二种情况下,您最好创建自己的索引列族。
2i 不会被复制,并且必须在每个节点中本地创建,因此如果您必须更换节点或添加新节点,则需要进行大量工作来重建它们。
就我个人而言,我使用 2i 来过滤所有在同一 CQL 行上排序的项目结果(即所有项目都具有相同的分区键) - 在该用例中它的性能非常好。
【讨论】:
没有。 Cassandra 二级索引基于单个列。你可以找到创建二级索引的CQL语法here
作为背景知识,二级索引基于单列的原因是为了避免 read-before-write 以保持写入的性能。
【讨论】:
PRIMARY KEY 定义吗?