我正在尝试为以下问题定义cassandra表
我有以下关系:
用户(user_id)可以看到许多添加(add_id)
更多的用户可以看到添加(add_id)。
我想在cassandra中进行以下查询:
我采取的方法是用关系创建两个表
CREATE TABLE adds_by_user (
user_id text,
add_id text,
PRIMARY KEY (user_id, add_id)
);
CREATE TABLE user_by_add (
add_id text,
user_id text,
PRIMARY KEY (add_id, user_id)
);
我的算法执行以下操作 给定 user_id :
另一种看待它的图形方式是:
(一)user_id - > (很多)add_id - > (很多+)user_id - > (很多++)add_id
当我有很多关系并且算法花费大量时间来完成所有查询时出现问题(尽管事实上每个单独的查询都在0.5毫秒或更短的时间内完成,但是有很多它们)
我已经在使用异步查询
是否有可以让查询更快的模型?
是否有一个模型可以使算法减少查询并尊重Cassandra标准?
谢谢!
答案 0 :(得分:1)
数据模型示例:
CREATE TABLE user_address_user(
user_id text,
address_id text,
user_level2 text,
address_level2 text,
PRIMARY KEY((user_id), address_id, user_level2, address_level2)
);
这个表结构可以看作是
Map<user_id, SortedMap<address_id, SortedMap<user_level2, SortedSet<address_level2>>>>