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)
);