移动端常见即时通讯数据库设计

本文详细解析了移动端钉钉和QQ的数据库设计,包括用户信息表、企业群组、聊天记录表以及消息类型和数据来源。特别关注了MD5加密在关联聊天记录中的应用和QQ使用Protobuf处理图片和语音消息的复杂性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

移动端常见即时通讯数据库设计

钉钉数据库表

表名描述
conntact用户信息
usual_contact常用联系人
org_username企业群组
DTOrganization企业信息
DingDING消息
WKConversation会话消息
WKChat_V32String聊天记录
根据WKConversation表关联WKChat_V32String主要步骤可描述为:
  • STEP1:从WKConversation表中查找conversationId字段所对应的值,记为VcId标识会话ID,执行STEP2。

  • STEP2:根据STEP1所得的会话ID关联与相应的聊天内容表。即对VcId进行MD5加密得32位的密文,记为VMD5String。即VMD5String = MD5Encode(VcId) ,其中MD5Encode表示MD5加密算法,执行STEP3。

  • STEP3:拼接表名。在STEP2计算所得的32位密文VMD5String,前添加” WKChat_”前缀后即为所求表名。
    表2

    表3

    表4

钉钉数据来源:逆向开发学习手机取证之钉钉取证分析

QQ数据库表

表名描述
conversation_info会话信息表
Friends好友表
TroopInfoV2群聊表
TroopMemberInfo群成员信息表
TroopMemberCardInfo群成员信息表
DynamicAvatar头像表
好友表:Friends

目前好友表存储中好友的qq号,昵称,备注,昵称全拼,时间字段等等有效信息,sql如下所示:

字段名描述
uinqq号
name昵称
remark备注
mCompareSpell昵称全拼
datetime时间

未通过的添加好友信息也在该表中

群聊表:TroopInfoV2

群聊表中包含了当前qq号,群qq号,群昵称,群备注,群主qq,时间等字段,sql如下所示:

字段名描述
uinqq号
troopuin群qq号
troopname群昵称
troopRemark群备注
troopowneruin群主qq
timeSec时间
陌生人信息:TroopMemberInfo

即同属于一个群但不是好友的关系的sql如下
select memberuin,troopuin, alias, autoremark, friendnick, datetime from TroopMemberInfo where memberuin not in(select uin from Friends)

会话表:conversation_info

会话表有存入所有的会话uin,uin的md5加密大写32字符串得到相应会话聊天记录表

消息记录表
  • mr_friend_md5(qq)_New
  • mr_troop_md5(qq)__New

好友会话消息记录表:mr_friend__New:其中的”“是好友的QQ号uin的MD5加密32位字符串。

eg:mr_friend_3DAEEB4D801A88F08AF16930B5DB7C60_New

群会话消息记录表:mr_troop__New: 其中的”“是群组的群号uin的MD5加密32位字符串。

eg:mr_troop_62CE79A16BB9C8F8193BF1B043B05D82_New

-1000:文本消息 -2000:图片 -2002:语音

(1)消息都是存在msgData这个字段里面,需要解密,msgData原生字段类型为blob,解密的方式:文本和图片,语音的解密方式是不一样的。
(2)图片,语音解密相对就比较复杂,qq使用了Google的Protobuf

QQ数据来源:析QQ数据库

网易云信

表5

表名描述
msghistory消息表
lstmsg存储每个会话最后一条消息
session_read_record会话读取记录
message_receipt消息回执
clear_message_record清除消息记录
delete_message_record删除消息记录
send_receipt_record发送收据记录
sender_nick发送人昵称
消息表:msghistory

群聊和单聊在一张表,使用sessiontype区分

最后一条消息:lstmsg

记录每个会话最后一条消息

发送人昵称:sender_nick

仅有account和nick来记录用户信息

  1. 动态建表目前数据库Room不支持
  2. 字段太多,数据库读写太频繁
  3. 需求上没有太多本地化的要求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值