1.同步库和存储库的seq应该是什么样的呢?seq是不是可以保证自增且唯一呢,刚好也可以用来排序。 2.每个会话(存储库中)都会有独立的seq吗? |
引用:xiaoskery2 发表于 2023-08-23 17:36 没这样玩过,但你可以试试 |
TDengine 、或者influxdb能用作IM的时序数据库吗? |
所以呢楼主有什么timeline可以满足选型的要求???? |
有什么开源的timeline数据库可以推荐吗? |
引用:封宇_ynOMz 发表于 2018-01-30 15:31 ok |
楼主您好,写扩散和读扩散看到现在还是有点蒙,想问下如本文中的写读扩散的数据库表是如何设计的?想通过一个具体的实例去理解,比如读扩散只需要存一份,单聊下,a发b,存到存储库(from,to,msgid,msg)同步库(from,to,msgid,msg).但是写扩散个人理解也是存这种(from,to,msgid,msg),所说存两份的意思是什么? |
引用:LitJoker7 发表于 2021-04-09 16:39 多接收端的同步,参考 timeline 收件箱,每个端有一个游标,拉取消息时根据本地 lastMsgId 来拉取,各个端之间不需要同步 |
引用:JackJiang 发表于 2017-11-29 14:15 请问在写扩散的场景下,多个接收者同步库之间,以及同步库和存储库之间的数据一致性如何保证 |
引用:danielstock 发表于 2020-05-28 16:46 大概就是这样了。 |
引用:JackJiang 发表于 2020-05-28 13:41 a/b单聊的话,比方a发了一条消息,就记录 发送方a,接收方b,消息id1, 发送时间/内容等。同样b发送的就记录 发送方b,接收方a, 消息id2,发送时间/内容。 a需要拉取离线消息时,就把所有发送方或者接收方为a的记录,拉取回来就行了。 如果是群聊,发送方为发言的人,接收方为群id。a拉取离线消息时,依次拉取所在群的消息即可。 是这样吗 @JackJiang |
引用:danielstock 发表于 2020-05-28 12:21 你说的会话id可以用对方的用户id,你这个表里记录的其实是跟“谁”的聊天记录,你要理解问题的本质 |
引用:JackJiang 发表于 2020-05-28 10:43 @JackJIang 您好,问的是服务器端消息存储的数据库设计。 怎么来按照会话存储, 因为需要按照用户来查询的,所以肯定会把用户编号作为一个独立的列。那么是不是会有两个表,一个是对话信息,记录会话编号及参与者(sessid, userid),另外一个就是会话消息 (sessid, msgid, msgcontent...) 类似这样? 单聊或者群聊的时候,这个会话编号该怎么生成呢。 谢谢。 |
引用:danielstock 发表于 2020-05-27 21:47 单聊肯定是各写一条,群聊有两种方式:各写一条叫“扩散写”、只写一条叫“扩散读”,各有各有好处,具体你看看这篇《IM群聊消息究竟是存1份(即扩散读)还是存多份(即扩散写)?》。 |
引用:danielstock 发表于 2020-05-27 23:10 你问的是本地sqlite怎么设计还是服务端? |
消息存储是按照会话来的,比方a/b的单聊,a/c的单聊,某个组的群聊,在数据库设计的时候,怎么来表示这个Timeline。@JackJiang 谢谢 |
消息同步库用于存储所有用于消息同步的Timeline,每个Timeline对应一个接收端 --------> 如果a和b单聊,a发了一条信息,是否会在to-a和to-b的Timeline里面,各写一条记录。 如果abcd群聊,a发了一条信息,是否会在to-a/b/c/d的Timeline里面,各写一条记录。 @JackJiang 谢谢。 |
引用:封宇_ynOMz 发表于 2018-01-30 15:31 老哥, 我目前也遇到你说的这个问题, 离线消息还没拉取完, 在线状态时发的消息又推送过来了.. 可能导致离线消息没全部拉取到. 不知道您这边最后是怎样解决的. 目前我能想到的方案就是在线推送的时候不直接推送, 而是发送一个推送的事件, 然后后端程序监听到这个事件后从每个涉及到的客户的上一次客户端ack的地方获取后续的消息, 再推送到客户端, 但这样带来的问题是群聊本来一个消息+多个接收人就能搞定的事情, 需要n次操作才能完成一条消息的推送. |
引用:榴莲与狗 发表于 2020-02-10 19:01 它这个timeline应该是兼有队列和存储的作用,所以技术上应该不仅仅主Mongodb这种持久化存储技术,很可能还包含了内存数据库的技术概念,不然性能无法保证。如果是内存数据库的话,这个timeline就能很好的实现顺序性、订阅和分发。 |