请选择 进入手机版 | 继续访问电脑版

默认
发表评论 7
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
请教下IM的聊天记录的设计问题
请教下各位大佬,关于IM的聊天记录这块,我是这样设计的,每一个聊天创建一个会话,会话有个id,然后每一条聊天消息都存储到数据库,有个字段是会话ID,然后获取聊天记录时,根据会话ID去拉取全部的,根据时间戳去排序,前端显示,不知道这样可不可行?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:求助 IM开发
上一篇:万字长文:手把手教你实现一套高效的IM长连接自适应心跳保活机制下一篇:分享几个我的Netty长连接压力测试性能优化实践
推荐方案
评论 7
你这问的是服务端的数据库设计,还是客户端的本地离线sqlite表设计?
引用:JackJiang 发表于 2022-05-30 22:27
你这问的是服务端的数据库设计,还是客户端的本地离线sqlite表设计?

服务端的数据库设计
签名: 今天还不错
引用:小毛驴Lucas 发表于 2022-06-01 09:17
服务端的数据库设计

所有聊天记录存在一张表不合理,服务器的存储要考虑会话和用户量,根据读写的比例首先你要确定是读扩散存储还是写扩散存储,或者是分场景确定读还是写扩散存储。
读扩散和写扩散详细的说明你可以在论坛搜到相关文章,大体意思就是:
读扩散:以会话纬度存储,针对超大群,一个群一个表
写扩散:以用户纬度存储,主要是单聊、小群会话,谁需要收到消息,就写入谁的消息表,这样会导致用户表很多,可以根据id取模等方式合并表或者分布式存储
相应方案很多,你可以了解读写扩散各自的优缺点,根据你实际情况考虑设计
引用:小毛驴Lucas 发表于 2022-06-01 09:17
服务端的数据库设计

看你的描述应该设计没问题,所谓的会话id,其实就是聊天好友的ui或群聊的群id
引用:溺水的小青蛙 发表于 2022-06-01 11:05
所有聊天记录存在一张表不合理,服务器的存储要考虑会话和用户量,根据读写的比例首先你要确定是读扩散存 ...

im聊天记录其实是有时效性的,超过多长时间的记录删掉或转储就好了
引用:JackJiang 发表于 2022-06-01 11:05
看你的描述应该设计没问题,所谓的会话id,其实就是聊天好友的ui或群聊的群id

好咧,我实现下这种方案
签名: 今天还不错
引用:溺水的小青蛙 发表于 2022-06-01 11:05
所有聊天记录存在一张表不合理,服务器的存储要考虑会话和用户量,根据读写的比例首先你要确定是读扩散存 ...

感谢回复,我先去了解下
签名: 今天还不错
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部