假设我的用户拥有id
和email
字段,两者都是唯一的,我想通过它们进行查询。 id
将成为主键的一部分,但问题是如何处理email
。
第一个选项是创建一个“手动索引”,类似于email_to_user
表。那里email
将是主键,因此查找应该非常快。但是,必须保持手动索引与主表保持同步的一些开销。
第二个选项是创建二级索引。但是,作为Cassandra's doc say,不应在高基数列上使用二级索引 - 具有唯一值的列肯定是高基数。但是,我还读到二级索引是作为隐藏表实现的 - 实际上两种方法之间是否存在差异? (除了手动创建或隐藏表格)。
对于二级索引,可能具有唯一值与具有高基数值的情况不同?或者也许2.x中的事情发生了变化(网络中关于此主题的大多数材料都是指0.x或1.x版本)?
答案 0 :(得分:3)
您提到的文档还指出,只要该表上的查询量适中,在包含唯一数据的列上使用二级索引就可以了(关于性能)。
简而言之:是,除了手动创建和维护索引表之外,还有其他差异。
有关详细信息,请查看此question。虽然从2013年开始,我认为答案仍然有效。
另外,请访问FAQ on secondary indexes。
P.S。为了给出更复杂的答案,您可能希望分享有关特定用例的更多详细信息,例如读取和写入负载,数据量或使用二级索引的查询。