在cassandra cql中获取用户消息的最佳方法?
我正在尝试使用Cassandra数据库创建聊天应用程序。所以我想获得在用户之间发送的消息(私人聊天)。所以我想得到做CQL查询的最佳方法?你的想法是什么 我的用户消息表结构。在cassandra cql中获取用户消息的最佳方法?,cassandra,cql,cqlsh,Cassandra,Cql,Cqlsh,我正在尝试使用Cassandra数据库创建聊天应用程序。所以我想获得在用户之间发送的消息(私人聊天)。所以我想得到做CQL查询的最佳方法?你的想法是什么 我的用户消息表结构。 在Cassandra中,表的设计应该基于要执行的查询来完成;在这种情况下,您将如何请求数据?基于fromuser或touser列,两者都可以吗 Datastax Academy的课程可以作为学习Cassandra数据建模的良好起点。在Cassandra,您必须学习数据模型部分,并根据Datastax或Cassandra的建
在Cassandra中,表的设计应该基于要执行的查询来完成;在这种情况下,您将如何请求数据?基于
fromuser
或touser
列,两者都可以吗
Datastax Academy的课程可以作为学习Cassandra数据建模的良好起点。在Cassandra,您必须学习数据模型部分,并根据Datastax或Cassandra的建议优化查询。根据你的应用程序,你也应该在卡桑德拉配置部分工作,这将有利于繁重的写和读。要在应用程序上获得良好的性能,不仅要考虑数据库部分,还要考虑操作系统、网络等。 < P>以上所说的一切都是正确的。p>
- 基于查询的数据模型
- academy.datastax.com上的DS2020是一门全面的课程,旨在解释如何做到这一点
DROP TABLE IF EXISTS sample_chat;
CREATE TABLE IF NOT EXISTS sample_chat (
fromuser text,
touser text,
message_id timeuuid,
body text,
PRIMARY KEY ((fromuser, touser), message_id)
) WITH CLUSTERING ORDER BY (msg_time DESC);
INSERT INTO sample_chat(fromuser, touser, message_id, body) VALUES('Cedrick', 'Hasan', now(), 'Hi Hasan do you like Cassandra');
INSERT INTO sample_chat(fromuser, touser, message_id, body) VALUES('Hasan', 'Cedrick', now(), 'Yeah Cassandra rocks');
INSERT INTO sample_chat(fromuser, touser, message_id, body) VALUES('Cedrick', 'Hasan', now(), 'Take ds220 and give us some feedback');
select fromuser, touser, body from sample_chat;
理性的:
- 您希望根据
和fromuser
检索聊天,因此这是一个很好的分区键。两个用户之间的聊天不应超过100.000行,这是分区建议的最大行数touser
- 您希望您的物品按时间顺序排列,最新信息排在第一位(仅显示聊天中的最后一条消息)。您希望您的消息是唯一的。因此,
对于timeuuid
来说是一种很好的类型,您可以轻松地从中提取时间,并确保统一性message\u id
- 您希望避免使用
作为列名或任何与cql的现有关键字冲突的术语time