微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在键值存储中存储带有 2 个键的记录?

如何解决如何在键值存储中存储带有 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 举报,一经查实,本站将立刻删除。