1
|
mohsenJsh MohammadTaha Sameni · 技术社区 · 7 年前 |
![]() |
1
3
您的表允许您按用户ID获取所有聊天记录,因此您可以将数据两次插入此表,但在第二次插入时更改用户ID。 为第一个用户放置消息:
并为第二个用户输入相同的消息:
现在,您可以获取每个用户的所有聊天:
在两个用户之间聊天:
反之亦然:
这种方法会复制数据,但对于Cassandra来说,这是一种支付读取速度的常见方法。 [编辑] 大分区问题 如果每个用户期望的消息太多,您应该选择另一个分区键,而不是用户ID。例如,您可以使用由用户ID和日期组成的复合分区键,在这种情况下,每个分区只包含一天的消息,但每天都有单独的分区。这种技术通常被称为“套桶法”, some example of bucketing |
![]() |
2
1
您可以为具有反向ID的两个用户创建两条记录: 记录1:用户ID=1,第二个用户ID=2 记录2:用户ID=2,第二个用户ID=1
显然,两个记录必须相同
所以你的第二个查询有效
此外,您的第一个查询在所有情况下都可以工作,因为无论您在查询中提供的ID的顺序如何:
两个查询将提供相同的结果。 |
![]() |
3
0
我建议对第二个用户使用辅助索引,如下所示: 在sample.user_messages(second_user_id)上创建索引索引_second_user_id; 所以现在您的第一个查询将保持不变。 第二个查询将分为两个单独的查询,分别查询用户ID和第二个用户ID,如下所示
这应该会有所帮助。 |
![]() |
blogger13 · 视频租赁店数据库的规范化 7 月前 |
![]() |
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 8 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 8 月前 |
|
Grenish Rai · Firestore错误“用户文档不存在” 1 年前 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 1 年前 |
![]() |
Dante · Django::配置不当:池不支持持久连接 1 年前 |
![]() |
YouLocalRUser · 删除重复行,保留第一行 1 年前 |