在blog我看到以下声明
辅助索引是MongoDB中的第一类构造。这使得 很容易索引存储在MongoDB中的对象的任何属性,即使 它是嵌套的。这使得基于这些查询非常容易 二级指标。卡桑德拉只是粗略支持中学 索引。二级索引也仅限于单列和 平等比较。
我有两个相关的问题。
Cassandra只粗略支持二级索引。
不确定是什么让Mongo得到比cassandra更好的支持?cassandra只是粗略支持?
二级索引[Cassandra]也仅限于单列
我对上述陈述的理解是,cassandra仅支持单列而不是复合列
的二级索引二级索引[Cassandra]也仅限于等式比较。 我认为这意味着Mongo可以使用指数比操作更大/更少,但cassandra仅限于平等?
我的理解是Mongo以与RDBMS类似的方式实现了secondar索引,但不确定cassandra如何在高级别实现它?
答案 0 :(得分:3)
Mongo与...之间的主要区别Cassandra就是这样,Mongo是主/从DB Vs Cassandra是一个无主系统。
话虽如此,所有写入都发生在Mongo中的一个PRIMARY节点上,该节点被复制到SECONDARIES。因此,整个数据在单个节点中可用,因此具有二级索引&通过它查询变得更简单(就像任何其他RDBMS一样)。因此,它支持针对二级索引的所有类型的查询。当我们转向Mongo Sharded系统而不是简单的replicaset时,它会变得复杂。
对于Cassandra,数据基于分区键分发到多个节点。现在构建二级索引仅与该特定节点上的数据相关,并且不了解其他节点中的数据。因此,查询二级索引中的列会导致分散聚集,因为匹配数据可能位于任何节点中。由于没有涉及限制节点数量的分区键,因此这种类型的查询会非常慢(取决于簇大小)。
因此在Mongo中进行RANGE查询没什么大不了的,因为整个数据在PRIMARY节点中可用。而Cassandra二级索引的范围扫描意味着扫描该给定节点中的每一行。因此范围查询可以永久使用,因此不受支持。