我看我们公司私聊和群聊这种功能在设计上是单表的,群里一个人发送消息后,没当前群里每个人都存储一条数据。我感觉这样的方式肯定是有问题,群里有1000人,每人发送一条消息,将要存储1000*1000记录,而且很多都是冗余信息。是不是应该维护一个群组聊天记录表,根据当前用户所在的群组去找当前群组聊天记录?还是说通过消息中间件那种订阅主题模式,每一个群组做为一个主题群组成员去订阅,然后实现分发。请问下qq实现这种功能机制什么,求一个最佳实践,谢谢
我看我们公司私聊和群聊这种功能在设计上是单表的,群里一个人发送消息后,没当前群里每个人都存储一条数据。我感觉这样的方式肯定是有问题,群里有1000人,每人发送一条消息,将要存储1000*1000记录,而且很多都是冗余信息。是不是应该维护一个群组聊天记录表,根据当前用户所在的群组去找当前群组聊天记录?还是说通过消息中间件那种订阅主题模式,每一个群组做为一个主题群组成员去订阅,然后实现分发。请问下qq实现这种功能机制什么,求一个最佳实践,谢谢
15 回答8.4k 阅读
7 回答5.3k 阅读
8 回答6.2k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
4 回答3.8k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
关于聊天记录我个人在设计网站消息分发的时候逻辑是
设置一个字段
0:面向所有用户的消息(群发)
n:给特定某个用户发的消息(发给用户id为n的用户)
所以你可以像上述方式设计,在群调取后台记录时候调取后台的标记为0的消息即可
(不过我这个是设计为单群(也就是网站全站消息),多群消息的话你可以自己结合这个逻辑考虑一下)
(不一定有用,不过这样可以节省数据库空间,也就是说,用户在调取自己信息的时候数据库会返回用户id相符和与字段为0的消息)