默认
打赏 发表评论 52
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
引用:JackJiang 发表于 2020-05-28 10:43
你问的是本地sqlite怎么设计还是服务端?

@JackJIang  您好,问的是服务器端消息存储的数据库设计。 怎么来按照会话存储,

因为需要按照用户来查询的,所以肯定会把用户编号作为一个独立的列。那么是不是会有两个表,一个是对话信息,记录会话编号及参与者(sessid, userid),另外一个就是会话消息 (sessid, msgid, msgcontent...)
类似这样?

单聊或者群聊的时候,这个会话编号该怎么生成呢。
谢谢。
引用:danielstock 发表于 2020-05-28 12:21
@JackJIang  您好,问的是服务器端消息存储的数据库设计。 怎么来按照会话存储,

因为需要按照用户来 ...

你说的会话id可以用对方的用户id,你这个表里记录的其实是跟“谁”的聊天记录,你要理解问题的本质
引用:JackJiang 发表于 2020-05-28 13:41
你说的会话id可以用对方的用户id,你这个表里记录的其实是跟“谁”的聊天记录,你要理解问题的本质

a/b单聊的话,比方a发了一条消息,就记录 发送方a,接收方b,消息id1, 发送时间/内容等。同样b发送的就记录 发送方b,接收方a, 消息id2,发送时间/内容。  a需要拉取离线消息时,就把所有发送方或者接收方为a的记录,拉取回来就行了。
如果是群聊,发送方为发言的人,接收方为群id。a拉取离线消息时,依次拉取所在群的消息即可。
是这样吗 @JackJiang
引用:danielstock 发表于 2020-05-28 16:46
a/b单聊的话,比方a发了一条消息,就记录 发送方a,接收方b,消息id1, 发送时间/内容等。同样b发送的就记 ...

大概就是这样了。
引用:JackJiang 发表于 2017-11-29 14:15
原作者其实是在推介阿里云的TableStore这个NoSQL数据库,本文在引用时为了让阅读者不会因广告嫌疑而产生 ...

请问在写扩散的场景下,多个接收者同步库之间,以及同步库和存储库之间的数据一致性如何保证
引用:LitJoker7 发表于 2021-04-09 16:39
请问在写扩散的场景下,多个接收者同步库之间,以及同步库和存储库之间的数据一致性如何保证

多接收端的同步,参考 timeline 收件箱,每个端有一个游标,拉取消息时根据本地 lastMsgId 来拉取,各个端之间不需要同步
楼主您好,写扩散和读扩散看到现在还是有点蒙,想问下如本文中的写读扩散的数据库表是如何设计的?想通过一个具体的实例去理解,比如读扩散只需要存一份,单聊下,a发b,存到存储库(from,to,msgid,msg)同步库(from,to,msgid,msg).但是写扩散个人理解也是存这种(from,to,msgid,msg),所说存两份的意思是什么?
引用:封宇_ynOMz 发表于 2018-01-30 15:31
这个问题我这边已经解决了,我近期会在我公众号上放出方案。欢迎版主转过来

ok
有什么开源的timeline数据库可以推荐吗?
所以呢楼主有什么timeline可以满足选型的要求????
TDengine 、或者influxdb能用作IM的时序数据库吗?
引用:xiaoskery2 发表于 2023-08-23 17:36
TDengine 、或者influxdb能用作IM的时序数据库吗?

没这样玩过,但你可以试试
1.同步库和存储库的seq应该是什么样的呢?seq是不是可以保证自增且唯一呢,刚好也可以用来排序。
2.每个会话(存储库中)都会有独立的seq吗?
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部