Cassandra 如何在键值存储区中存储具有2个键的记录?

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+消

这是一个半理论性的问题,我正在研究系统设计,还没有和KV商店合作过。 问题在于设计一个聊天应用程序

我有这样的模式:

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中的键:

您想使用什么数据库/应用程序?您的问题不清楚。您想使用什么数据库/应用程序?你的问题不清楚。