【发布时间】:2018-07-17 10:00:36
【问题描述】:
我仍在学习理解 Cassandra。我已阅读有关对话消息的类似问题和答案,但不满意,因为它不符合我的需求。这些都是我要解决的问题
- 一个用户可以向一个或多个用户发送消息
- 对话表 - 保存用户与用户之间的消息
- 对话表 - 为您的所有用户显示最近的对话消息 与某个日期建立了对话,将其标记为已读或未读。
- A 对话消息表 - 用户 A 可以加载与用户 B 的所有对话 或用户 C
- 对话消息表 - 发送的消息将被标记为已读或未读
- A 对话消息表 - 用户 A 可以删除消息,但用户 B 消息不会被删除。 非常重要
我有以下表格
创建表用户( 用户名文本主键, 密码文本 ); 创建表朋友( 用户名文本, 朋友的文字, 自时间戳以来, 主键(用户名,朋友) ); 创建表关注者( 用户名文本, 追随者文字, 自时间戳以来, PRIMARY KEY(用户名,关注者) ); 创建表会话_A ( 参与者文本, 参与者B文本, 对话文本, 消息文本, 读取布尔值, 日期时间戳, 主键(参与者A,日期) ); 创建表会话_B ( 参与者文本, 参与者B文本, 对话文本, 消息文本, 读取布尔值, 日期时间戳, 主键(参与者A,日期) ); 创建表会话消息发送( 对话文本, 消息id bigint, 发件人文字, 收件人文本, 消息文本, 读取布尔值, 日期时间戳, 主键(会话 ID,日期) }; 创建表会话消息接收( 对话文本, 消息id bigint, 发件人文字, 收件人文本, 消息文本, 读取布尔值, 日期时间戳, 主键(会话 ID,日期) }; 创建表messages_sent( 消息id bigint, 消息文本, 日期时间戳, 主键(messageid,日期) ); 创建表messages_receive( 消息id bigint, 消息文本, 日期时间戳, 主键(messageid,日期) );如果用户 A id 为 100,则与用户 B 建立会话,而用户 B id 为 101,则会话 ID 将为 100-101。
请是 Cassandra 的新手,我想知道我的建模是否正确。
如果用户 A 向用户 B 发送消息,哪些会话表属于用户 A 或用户 B
如果用户 A 与用户 B 建立对话,用户 C 与用户 A 建立对话,并且用户 A 想要加载与用户 C 的所有对话,将从哪个对话消息表中获取消息?
我将如何查询会话表以列出所有用户,用户 A 已与用户 A 建立了对话,以及与用户 A 建立了包含最后发送或接收消息的对话的所有用户。
【问题讨论】:
-
消息_send/receive的意义何在?
-
@danicheeta 是的
-
我没有得到你的答案,你为什么不创建一个线程表并在其中存储消息,其中包含“已删除”、“已查看”、参与者 a ...等字段?
-
这也是我想要实现的。我可以得到它的样本吗
标签: database cassandra nosql datastax cassandra-3.0