如何解决如何在键值存储中存储带有 2 个键的记录?
这是一个半理论问题,我是研究系统设计的,我没有和KV商店合作过。 问题是关于设计一个聊天应用。
我有这样的架构:
Message
PK | channel_id bigint
| message_id bigint
_______________
| user_id
| content
| created_at
...
我将如何组织这些信息以存储在 Hbase 或 Cassandra 等键值存储中?
解决方法
Cassandra 支持复合键
所以你可以同时做一个键 channel_id + message_id
架构的示例结构:
CREATE TABLE message (
channel_id bigint,message_id bigint,user_id bigint,content text,created_at date,PRIMARY KEY (channel_id,message_id)
);
但是,cassandra 密钥有点难。
使用 PRIMARY KEY (channel_id,message_id)
,您只能定义如何对数据进行分区,
但还有用于定义排序的 CLUSTERING KEY 选项
在这种情况下可能是PRIMARY KEY ((channel_id,message_id),created_at)
这意味着按 channel_id + message_id
进行分区并根据 created_at
对分区进行排序。
进一步阅读 cassandra 中的密钥:
Difference between keys in cassandra
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。