t_message分表规则是什么

yangyangyang 2023-4-3 684

请问t_message_%d 这里的%d的规则是什么 另外t_message表怎么没有看到会话id的字段,想通过某个会话id查看该会话的聊天记录

最新回复 (7)
  • x86 11月前
    引用 2

    关于消息的表有两个,一个是消息表,这个表里存储着消息的原始数据,另外一张是用户消息表,记录用户的消息记录。

    使用h2db存储消息时,消息存储在t_message表中,用户消息记录在t_user_message表中;

    使用mysql存储消息时,消息存储在t_message_X表中,X = (月份 - 1 + (年份%3) * 12) ,例如2019年4月存储在t_message_3表中,因为X = (4 - 1 +(2019 % 3) * 12) = 3

    用户消息记录表是t_user_message_Y,记录用户和消息的对应关系,分表规则是用 Java 计算用户id 的hashCode的绝对值,再对128取余,比如用户id为userId1Java语言里面"userId1".hashCode()-147154261,其绝对值取模就是147154261 % 128 = 85,所以这个用户的消息记录在t_user_message_85表中。

  • HeavyRain 11月前
    引用 3
    https://docs.wildfirechat.cn/faq/server.html 问题2
  • 540huazai 11月前
    引用 4
    1想问下t_message_X的月份和年份是指群组创建时的月份和年份吗,还是说接收消息时的月份和年份?
    2如果同个群组(创建时间是2023年1月)的两条消息分别在2023年2月和2022年2月发出,这两条记录是存在同个X表吗?
  • x86 11月前
    引用 5
    1. 接收消息时的月份和年份
    2. 不是,你可以按上面的规则计算一下
  • 540huazai 11月前
    引用 6

    那有没有什么好的办法或函数拿到一个群组的所有消息mid?(如图中的keys)

    上传的附件:
  • x86 11月前
    引用 7
    没有现成的好办法,只能根据上面的分表规则和群组信息等,从数据库查询
  • 540huazai 11月前
    引用 8
    好的 谢谢
返回