Cassandra 用户维护 CF 索引



这是我想作为标准列系列的POJO的一瞥卡珊德拉:

class Person {
string key
string name
string dob
List<String> phones
List<String> ids }

显然,我的密钥是我的主要索引。不确定如何做列表?必须为它们创建一个新的 CF,还是将它们全部添加为列?
好的,所以我也希望所有内容都可以通过相等来搜索。获取人员,其中电话= 1112223333获取 person,其中名字=Al 和 dob=yyyy-mm-dd

我说的是1亿人,所有列大多都是独一无二的那么这是否排除了内置的二级索引呢?

我"得到"了我自己的 CF 作为索引,其中主键是电话,列名是 Person CF 的主键。

但是,如果我需要删除手机,给定 key=1234,如何维护手机的 CF 索引。TIA Jurgyman

首先,二级索引不是正确的选择,因为它们在基数较低(即大量重复值(的情况下运行良好。 电话号码不能满足这一点。 它们在技术上可以工作,但随着集群大小的增长,效率会很低。

您是正确的,如果您需要没有二级索引的双向查找,最好的方法可能是维护您自己的索引。 这遵循了以读取数据的方式写入数据的一般设计理念。 来自RDBMS世界,这可能需要一些时间来适应,因为您已经习惯了规范化。

我认为你缺少的是,你需要将电话号码存储在两个地方——你的个人CF和索引。 这将允许您查看人的电话和电话的人。 当您需要添加/删除电话时,您将同时在两个地方进行添加/删除。 您只是将保持关系的逻辑从 DBMS 移动到您的应用程序。

最新更新