我可以在cassandra中的多个列上创建二级索引

时间:2013-11-20 15:30:17

标签: cassandra cql cql3

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

  

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

CQL抛出错误

  

:2:错误请求:第1:73行不匹配输入','期待')'

2 个答案:

答案 0 :(得分:20)

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

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

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

2i不会被复制,必须在每个节点本地创建,因此如果您必须替换节点或添加新节点,则需要重建大量工作。

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

答案 1 :(得分:13)

没有。 Cassandra二级索引基于单个列。您可以找到用于创建二级索引here

的CQL语法

作为一个背景,二级索引基于单个列的原因是为了避免先写后读,以保持写入的性能。