Cassandra 如何在键值存储区中存储具有2个键的记录?
这是一个半理论性的问题,我正在研究系统设计,还没有和KV商店合作过。 问题在于设计一个聊天应用程序 我有这样的模式:Cassandra 如何在键值存储区中存储具有2个键的记录?,cassandra,hbase,message,key-value-store,Cassandra,Hbase,Message,Key Value Store,这是一个半理论性的问题,我正在研究系统设计,还没有和KV商店合作过。 问题在于设计一个聊天应用程序 我有这样的模式: Message PK | channel_id bigint | message_id bigint _______________ | user_id | content | created_at ... 如何组织这些信息以存储在诸如Hbase或Cassandra之类的键值存储中?Cassandra支持复合键 因此,您可以同时按频道id+消
Message
PK | channel_id bigint
| message_id bigint
_______________
| user_id
| content
| created_at
...
如何组织这些信息以存储在诸如Hbase或Cassandra之类的键值存储中?Cassandra支持复合键
因此,您可以同时按
频道id+消息id
架构的示例结构:
CREATE TABLE message (
channel_id bigint,
message_id bigint,
user_id bigint,
content text,
created_at date,
PRIMARY KEY (channel_id, message_id)
);
然而,卡桑德拉的钥匙比这更硬。使用
PRIMARY KEY(channel\u id,message\u id)
您只定义如何对数据进行分区,但是还有集群键选项来定义排序
在这种情况下,它应该是
主键((频道id、消息id),在创建时)
这意味着通过channel\u id+message\u id
进行分区,并根据创建的对分区进行排序
进一步阅读cassandra中的键:
Cassandra支持复合键
因此,您可以同时按频道id+消息id
架构的示例结构:
CREATE TABLE message (
channel_id bigint,
message_id bigint,
user_id bigint,
content text,
created_at date,
PRIMARY KEY (channel_id, message_id)
);
然而,卡桑德拉的钥匙比这更硬。
使用PRIMARY KEY(channel\u id,message\u id)
您只定义如何对数据进行分区,
但是还有集群键选项来定义排序
在这种情况下,它应该是
主键((频道id、消息id),在创建时)
这意味着通过channel\u id+message\u id
进行分区,并根据创建的对分区进行排序
进一步阅读cassandra中的键:
您想使用什么数据库/应用程序?您的问题不清楚。您想使用什么数据库/应用程序?你的问题不清楚。