我可以在cassandra中的多个列上创建二级索引吗? 我能做什么
在my_column_family(id,name)上创建索引my_composite_index
CQL抛出错误
:2:错误请求:第1:73行不匹配输入','期待')'
答案 0 :(得分:20)
Alex的回答是正确的,但我想我会添加一些额外的输入。
Cassandra二级索引(2i)实际上适用于低基数字段,即每个实体/行不唯一的事物。
如果您有一个包含2.5亿美国公民的桌子,使用二级索引来跟踪他们所处的状态是2i的完美用例。使用二级索引来跟踪他们的社会安全号码不会 - 它会为读取和写入带来巨大的性能问题。在第二种情况下,最好创建自己的索引列族。
2i不会被复制,必须在每个节点本地创建,因此如果您必须替换节点或添加新节点,则需要重建大量工作。
就我个人而言,我使用2i来过滤所有在同一CQL行上排序的项目结果(即所有项目都具有相同的分区键) - 在该用例中它非常高效。
答案 1 :(得分:13)
没有。 Cassandra二级索引基于单个列。您可以找到用于创建二级索引here
的CQL语法作为一个背景,二级索引基于单个列的原因是为了避免先写后读,以保持写入的性能。