【发布时间】:2021-10-17 12:36:57
【问题描述】:
对于消息传递应用程序,我的数据库结构相对于:
CREATE TABLE users(
userid text,
name text,
rooms list<text>
...
PRIMARY KEY (userid)
);
CREATE TABLE rooms(
roomid text,
members list<text>,
createdat bigint,
lastmessage bigint,
...
PRIMARY KEY (roomid, createdat)
);
CREATE TABLE messages(
roomid text,
bucket int,
messageid bigint,
authorid text,
...
PRIMARY KEY ((hash, roomid), messageid)
);
客户端在启动时为给定用户请求所有房间。我希望在某个时候,用户将成为数百个频道的成员。所以我只想检索最后 X 个活动频道以减少流量。
目前房间存储了最后一个 messageid(包括时间戳的雪花),所以我可以在检索所有房间后进行排序。
仅从 cassandra 加载最后 X 个活动房间需要进行哪些更改? 我知道我需要以某种方式对结构进行非规范化,但我不知道如何。
提前致谢!
【问题讨论】:
标签: cassandra cql cassandra-3.0 cql3