多重卡桑德拉二级指数是如何工作的



由于Cassandra没有执行计划,我们想知道多个二级索引如何工作?例如,如果查询是由不同的列顺序过滤的,那么哪个二级索引将获得优先级,为什么?

我们知道这是一个不好的做法,应该用于低基数集或许多重复,但我们试图利用现有的传统cassandra表,不能同时使用cassandra二级索引和SOLR索引,所以这里没有选择。

这里讨论的也不多:http://www.datastax.com/docs/1.1/ddl/indexes

二级索引就像您自己创建的查找表,由cassandra管理。节点存储其包含的行的索引信息。对节点上索引的更新和该节点上数据的更新是原子的。如果查询中使用了多个索引,那么实际上只会使用一个索引。我希望有人能纠正我的错误,但据我所知,谓词中的第一个过滤器是将要使用的。

不要认为索引是全局查找(在一般情况下)。这将导致恼人的性能问题等。将索引看作一种快速获取分区内某些列的方法,其中您希望使用相等过滤器的列不是集群键(或者您希望能够在不指定第一个键的情况下对第二个集群键进行过滤)。如果碰到分区,那么索引性能通常不差。关于低基数的信息是正确的——基数越高,索引的性能就越差。

这里有一个关于索引的简短faq:http://wiki.apache.org/cassandra/SecondaryIndexes

最新更新