Cassandra如何模拟连接语句
Cassandra how can I simulate a join statement
我是 cassandra 的新手,来自 Postgres。我想知道是否有一种方法可以从 2 个不同的表或列族中获取数据,然后 return 结果。我有这个查询
select p.fullname,p.picture s.post, s.id, s.comments, s.state, s.city FROM profiles as p INNER JOIN Chats as s ON(p.id==s.profile_id) WHERE s.latitudes>=28 AND 29>= s.latitudes AND s.longitudes
">=-21 AND -23>= s.longitudes
查询有 2 个表:Profiles 和 Chat,它们共享一个公共字段 Chats.id==Proifles.profile_id 基本上可以归结为 return 聊天 ID 等于配置文件 ID 的所有行。我想保持这种方式,因为现在更新配置文件很简单,每次配置文件更新只需要更新 1 行,而不是对所有内容进行非规范化和更新数千条记录。任何帮助或建议都会很棒
您必须以不需要联接的方式设计 table。最佳做法是,如果您的 table 与它所用的用例完全匹配。
Cassadra 有一个叫做 shared static columns 的功能;这允许您将值与主键的分区部分绑定。因此,您可以创建 "joined" 版本的 table 而不会重复。
CREATE TABLE t (
p_id uuid,
p_fullname text STATIC,
p_picture text STATIC,
s_id uuid,
s_post text,
s_comments text,
s_state text,
s_city text,
PRIMARY KEY (p_id, s_id)
);
我是 cassandra 的新手,来自 Postgres。我想知道是否有一种方法可以从 2 个不同的表或列族中获取数据,然后 return 结果。我有这个查询
select p.fullname,p.picture s.post, s.id, s.comments, s.state, s.city FROM profiles as p INNER JOIN Chats as s ON(p.id==s.profile_id) WHERE s.latitudes>=28 AND 29>= s.latitudes AND s.longitudes
">=-21 AND -23>= s.longitudes
查询有 2 个表:Profiles 和 Chat,它们共享一个公共字段 Chats.id==Proifles.profile_id 基本上可以归结为 return 聊天 ID 等于配置文件 ID 的所有行。我想保持这种方式,因为现在更新配置文件很简单,每次配置文件更新只需要更新 1 行,而不是对所有内容进行非规范化和更新数千条记录。任何帮助或建议都会很棒
您必须以不需要联接的方式设计 table。最佳做法是,如果您的 table 与它所用的用例完全匹配。
Cassadra 有一个叫做 shared static columns 的功能;这允许您将值与主键的分区部分绑定。因此,您可以创建 "joined" 版本的 table 而不会重复。
CREATE TABLE t (
p_id uuid,
p_fullname text STATIC,
p_picture text STATIC,
s_id uuid,
s_post text,
s_comments text,
s_state text,
s_city text,
PRIMARY KEY (p_id, s_id)
);