我正在学习数据模型在Cassandra中的工作原理,你可以做什么,不做什么等等。
我已经看到你可以拥有收藏品,我想知道你是否可以搜索收藏中的元素。我已经看到你可以用contains来查找一个元素,但是如果你想要查找多个元素,你需要添加更多的过滤器,有没有办法更好地做到这一点?这是一种不好的做法吗? 这是我的表定义:
CREATE TABLE data (
group_id int,
user timeuuid,
friends LIST<VARCHAR>,
PRIMARY KEY (group_id, user)
);
我知道这可以用来在列表中查找多个项目:
SELECT * FROM groups where friends contains 'bob' and friends contains 'Pete' ALLOW FILTERING;
谢谢
答案 0 :(得分:3)
出于性能原因,通常不建议使用辅助索引。
通常,在Cassandra中,应遵循基于查询的建模。
所以,
这意味着另一张桌子:
CREATE TABLE friend_group_relation (
friend VARCHAR,
group_id int,
<user if needed>
PRIMARY KEY ((friend), group_id)
);
现在,您可以在此表中使用IN查询(不推荐)或异步查询(强烈推荐,非常快速的响应)。
答案 1 :(得分:0)
您可以遵循两种不同的方法