Wildfire Chat 数据库表结构文档

1. 概述

本文详细描述了 Wildfire Chat IM 服务器的全部数据库表及其字段含义。

1.1. 表分类

分类 表名
核心实体 t_user, t_group, t_group_member, t_friend, t_channel, t_chatroom, t_robot, t_device, t_domain, t_secret_chat
消息存储 t_messages (36张分片表), t_group_messages (128张分片表), t_user_messages (128张分片表)
会话/认证 t_user_session, t_session (遗留)
状态/回执 t_user_status, t_user_setting, t_read_report, t_user_read_report, t_delivery_report, t_user_delivery_report
关系/请求 t_friend_request, t_join_group_request, t_channel_listener
聊天室管理 t_chatroom_blacklist, t_chatroom_manager
音视频会议 t_conference
文件管理 t_file
敏感词/审计 t_sensitiveword, t_sensitive_messages
基础设施 t_id_generator, t_settings, flyway_schema_history

2. 1. flyway_schema_history — Flyway 迁移记录

Flyway 数据库迁移框架自动维护的元数据表,记录每次迁移脚本的执行情况。

字段 类型 说明
installed_rank int 安装排序序号,主键
version varchar(50) 迁移版本号
description varchar(200) 迁移描述
type varchar(20) 迁移类型(SQL/JAVA等)
script varchar(1000) 脚本文件名
checksum int 脚本校验和
installed_by varchar(100) 执行迁移的数据库用户
installed_on timestamp 迁移执行时间
execution_time int 执行耗时(毫秒)
success tinyint(1) 是否成功

3. 2. t_user — 用户表

存储平台注册用户的核心信息。对应 Java 类 UserInfoData。支持软删除。

字段 类型 说明
id int 自增主键
_uid varchar(64) 用户唯一 ID,业务标识
_name varchar(64) 用户名,唯一索引
_display_name varchar(64) 显示昵称
_gender int 性别(0-未知,1-男,2-女)
_portrait varchar(1024) 头像 URL
_mobile varchar(64) 手机号
_email varchar(64) 邮箱
_address varchar(64) 地址
_company varchar(64) 公司
_social varchar(64) 社交账号信息
_passwd_md5 varchar(64) MD5 密码哈希
_salt varchar(64) 密码加盐值
_extra text 扩展字段,JSON 格式
_type tinyint 用户类型:0-普通用户,1-机器人
_dt bigint 更新时间戳(毫秒)
_createTime datetime 创建时间
_deleted tinyint 软删除标记:0-正常,1-已删除
_external tinyint 外部用户标记:0-内部用户,1-外部用户

索引: _uid(唯一), _name(唯一), _display_name, _mobile, _email


4. 3. t_group — 群组表

存储群组信息。对应 Java 类 GroupInfoData。支持普通群和超级群两种模式。

字段 类型 说明
id int 自增主键
_gid varchar(64) 群组唯一 ID
_name varchar(64) 群名称
_portrait varchar(1024) 群头像 URL
_owner varchar(64) 群主用户 ID
_type tinyint 群类型(保留扩展)
_extra text 扩展字段
_dt bigint 群信息更新时间戳
_member_count int 群成员数量
_member_dt bigint 成员列表变更时间戳
_createTime datetime 创建时间
_mute tinyint 全员禁言标记:0-正常,1-全员禁言
_join_type tinyint 加群方式:0-无需审批,1-需要审批,2-禁止加群
_private_chat tinyint 群内私聊权限:0-允许私聊,1-禁止私聊
_searchable int 是否可被搜索到
_history_message tinyint 新成员是否可见历史消息:0-不可见,1-可见
_max_member_count int 最大成员数(默认2000)
_super_group tinyint 是否为超级群:0-普通群,1-超级群
_deleted tinyint 软删除标记:0-正常,1-已删除

索引: _gid(唯一), _name


5. 4. t_group_member — 群组成员表

存储群组成员关系。对应 Java 类 GroupMemberData

字段 类型 说明
id int 自增主键
_gid varchar(64) 群组 ID
_mid varchar(64) 成员用户 ID
_alias varchar(64) 群内昵称/群备注
_type tinyint 成员类型:0-普通成员,1-管理员,2-群主(与 Owner 相同)
_dt bigint 更新时间戳
_create_dt bigint 加入时间戳
_extra text 扩展字段

索引: (_gid, _mid)(唯一), _mid, (_gid, _dt), (_gid, _type)


6. 5. t_friend — 好友关系表

存储用户之间的好友关系。对应 Java 类 FriendData

字段 类型 说明
id int 自增主键
_uid varchar(64) 用户 ID
_friend_uid varchar(64) 好友用户 ID
_state tinyint 好友状态:0-好友,1-陌生人。历史版本中2表示黑名单,已废弃
_dt bigint 建立/更新时间戳
_alias varchar(64) 好友备注/别名
_blacked tinyint 黑名单标记:0-正常,1-已拉黑
_extra text 扩展字段

索引: (_uid, _friend_uid)(唯一), _friend_uid


7. 6. t_friend_request — 好友请求表

存储用户发送/接收到的好友请求。

字段 类型 说明
id int 自增主键
_uid varchar(64) 请求发起方用户 ID
_friend_uid varchar(64) 请求目标方用户 ID
_reason text 申请理由/验证信息
_status tinyint 请求状态:0-待处理,1-已接受,2-已拒绝
_dt bigint 发起时间戳
_from_read_status tinyint 发起方是否已读
_to_read_status tinyint 目标方是否已读
_extra text 扩展字段

索引: (_uid, _friend_uid)(唯一), _friend_uid


8. 7. t_channel — 频道/公众号表

存储频道(公众号/服务号)信息。对应 Java 类 ChannelData

字段 类型 说明
id int 自增主键
_cid varchar(64) 频道唯一 ID
_name varchar(64) 频道名称
_portrait varchar(1024) 频道头像 URL
_owner varchar(64) 频道所有者用户 ID
_status int 频道状态:0-公开,1-私有,2-已关闭
_desc text 频道描述
_secret varchar(64) 频道密钥(私有频道使用)
_callback varchar(1024) 消息回调 URL(当用户发消息给频道时,服务端回调此地址)
_extra text 扩展字段
_automatic tinyint 是否自动回复模式:0-否,1-是
_dt bigint 更新时间戳
_menu blob 频道菜单配置(二进制序列化数据)

索引: _cid(唯一), _name


9. 8. t_channel_listener — 频道订阅者表

记录订阅了某个频道的用户。

字段 类型 说明
id int 自增主键
_cid varchar(64) 频道 ID
_mid varchar(64) 订阅用户 ID
_dt bigint 订阅时间戳

索引: (_cid, _mid)(唯一), _mid


10. 9. t_chatroom — 聊天室表

存储聊天室信息。对应 Java 类 ChatroomData

字段 类型 说明
id int 自增主键
_cid varchar(64) 聊天室唯一 ID
_title varchar(64) 聊天室标题
_portrait varchar(1024) 聊天室头像 URL
_state tinyint 聊天室状态:0-正常,1-已关闭
_desc text 聊天室描述
_extra text 扩展字段
_dt bigint 更新时间戳

索引: _cid(唯一)


11. 10. t_chatroom_blacklist — 聊天室黑名单表

记录被禁止进入聊天室的用户。

字段 类型 说明
id int 自增主键
_cid varchar(64) 聊天室 ID
_uid varchar(64) 被拉黑的用户 ID
_state tinyint 状态(保留)
_expired_time bigint 解禁时间戳(到期自动解禁)
_dt bigint 拉黑时间戳

索引: (_cid, _uid)(唯一)


12. 11. t_chatroom_manager — 聊天室管理员表

记录聊天室的管理员列表。

字段 类型 说明
id int 自增主键
_cid varchar(64) 聊天室 ID
_uid varchar(64) 管理员用户 ID
_state tinyint 状态(保留)
_dt bigint 设为管理员的时间戳

索引: (_cid, _uid)(唯一)


13. 12. t_conference — 音视频会议表

存储音视频会议房间信息。用于 VoIP/会议功能。

字段 类型 说明
_id varchar(64) 会议房间唯一 ID,主键
_des varchar(64) 会议描述/主题
_pin varchar(16) 会议 PIN 码/密码
_max_publishers int 最大发布者数量(同时发言人数限制)
_bitrate int 比特率设置
_advance tinyint 高级功能标记
_recording tinyint 是否开启录制:0-否,1-是
_create_dt bigint 创建时间戳
_delete_by varchar(64) 删除者用户 ID
_deleted tinyint 软删除标记:0-正常,1-已删除
_delete_dt bigint 删除时间戳

14. 13. t_robot — 机器人表

存储机器人账号信息。对应 Java 类 RobotData

字段 类型 说明
id int 自增主键
_uid varchar(64) 机器人用户 ID(关联 t_user._uid
_owner varchar(64) 机器人所有者用户 ID
_secret varchar(64) 机器人密钥(用于回调认证)
_callback varchar(1024) 机器人消息回调 URL(收到消息时回调此地址)
_state tinyint 状态:0-正常,1-已删除
_extra text 扩展字段
_dt bigint 更新时间戳

索引: _uid(唯一), _owner


15. 14. t_device — 设备表

存储 IoT/设备类账号信息。对应 Java 类 DeviceData

字段 类型 说明
id int 自增主键
_uid varchar(64) 设备用户 ID(唯一标识)
_token varchar(64) 设备令牌
_state tinyint 状态:0-正常,1-已删除
_extra text 扩展字段
_dt bigint 更新时间戳

索引: _uid(唯一)


16. 15. t_domain — 域/租户表

存储企业域/租户信息。对应 Java 类 DomainInfoData。用于多租户场景。

字段 类型 说明
_domain_id varchar(128) 域唯一 ID,主键
_name varchar(64) 域名/企业名称
_desc varchar(256) 域描述
_email varchar(64) 联系邮箱
_tel varchar(64) 联系电话
_address varchar(64) 联系地址
_extra varchar(1024) 扩展字段
_dt bigint 更新时间戳

17. 16. t_secret_chat — 端到端加密聊天表

存储端到端加密会话信息。对应 Java 类 SecretChatData

字段 类型 说明
id int 自增主键
_uid varchar(64) 加密会话唯一 ID
_from varchar(64) 发起方用户 ID
_from_cid varchar(64) 发起方客户端 ID
_to varchar(64) 接收方用户 ID
_to_cid varchar(64) 接收方客户端 ID
_state tinyint 会话状态:0-待接受,1-已建立
_dt bigint 创建/更新时间戳

索引: _uid(唯一)


18. 17. t_user_session — 用户会话表

记录用户的登录会话信息。是当前活跃使用的会话管理表。

字段 类型 说明
id int 自增主键
_uid varchar(64) 用户 ID
_cid varchar(64) 客户端 ID(设备唯一标识)
_token varchar(240) 推送通知的设备 Token(如 APNs/小米/华为等推送 token)
_voip_token varchar(240) VoIP 推送 Token(iOS VoIP 推送专用)
_secret varchar(64) 会话密钥(用于客户端与服务端通信认证)
_db_secret varchar(64) 数据库级密钥(用于消息加密)
_platform tinyint 客户端平台:0-iOS,1-Android,2-Windows,3-OSX,4-WEB,5-Linux
_push_type tinyint 推送通道类型:0-无推送,1-小米,2-华为,3-APNs 等
_package_name varchar(64) 应用包名
_device_name varchar(64) 设备型号名称
_device_version varchar(64) 设备系统版本
_phone_name varchar(64) 手机名称
_language varchar(64) 系统语言设置
_carrier_name varchar(64) 运营商名称
_dt bigint 最后更新/活跃时间戳
_deleted tinyint 软删除标记:0-正常,1-已登出/过期
_user_type tinyint 用户类型:0-普通用户,1-机器人,2-设备
_ip varchar(40) 登录 IP 地址

索引: (_cid, _uid)(唯一), _token, _uid


19. 18. t_session — 会话表(遗留)

旧的会话管理表。当前代码不再引用此表,由 t_user_session 替代。

字段 类型 说明
row_id varchar(64) 会话行 ID,主键
del_flag tinyint(1) 删除标记
create_time datetime 创建时间
update_time datetime 更新时间
expire_time datetime 过期时间
user_id int 关联用户 ID

索引: row_id(主键), (user_id, expire_time)(唯一)


20. 19. t_user_setting — 用户设置表

存储用户的个性化设置。使用 (uid, scope, key) 三元组来存储键值对设置。对应 Java 类 UserSettingData

字段 类型 说明
id int 自增主键
_uid varchar(64) 用户 ID
_scope int 设置分类/作用域(如:1-全局设置,2-会话设置等)
_key varchar(128) 设置键名
_value varchar(4096) 设置值
_dt bigint 更新时间戳

索引: (_uid, _scope, _key)(唯一)


21. 20. t_user_status — 用户在线状态表

记录用户当前的在线状态(由服务端维护)。

字段 类型 说明
id int 自增主键
_uid varchar(64) 用户 ID
_status int 在线状态:0-离线,1-在线
_dt bigint 状态变更时间戳

索引: _uid(唯一)


22. 21. t_messages — 消息表(按时间分片)

存储所有会话(私聊、群聊等)的原始消息内容。按 (year * 12 + month) % 36 分片到 t_messages_0 ~ t_messages_35 共 36 张表。t_messages 基表本身不使用,仅为模板定义。

: 分片表中额外包含 _content_type 字段,基表无此字段。

字段 类型 说明
id int 自增主键
_mid bigint 消息全局唯一 ID
_from varchar(64) 发送者用户 ID
_type tinyint 会话类型:0-单聊,1-群组,2-聊天室,3-频道,4-客服等
_target varchar(129) 会话目标 ID(单聊为对方UID,群聊为群GID等)
_line int 会话线路号(用于多设备同步)
_data blob 消息内容的 Protobuf 二进制数据
_searchable_key text 可搜索的文本内容(用于全文检索)
_dt datetime 消息时间
_content_type int (仅分片表有)消息内容类型:0-文本,1-图片,2-语音,3-视频,4-位置,5-文件,6-贴图,7-链接等
_to varchar(64) 显式接收者(群聊中指定特定成员可见时使用)

索引: _mid(唯一), (_type, _target, _line)


23. 22. t_user_messages — 用户消息索引表(按用户ID分片)

存储"用户-消息"的映射关系,用于快速拉取某个用户收到的消息列表。按 userId % 128 分片到 t_user_messages_0 ~ t_user_messages_127

字段 类型 说明
id int 自增主键
_mid bigint 消息 ID
_uid varchar(64) 接收消息的用户 ID
_seq bigint 该用户在全局递增的消息序列号(用户级别,非会话级别)
_dt datetime 消息时间戳
_line int 会话线路号
_type tinyint 会话类型
_target varchar(129) 会话目标 ID
_directing tinyint(1) 方向标记:0-收到的消息,1-发送的消息
_cont_type int 消息内容类型

索引: (_uid, _seq DESC), (_uid, _line, _mid DESC), _mid, (_uid, _type, _target, _line, _mid DESC)


24. 23. t_group_messages — 群消息表(按群ID分片)

存储发送到群组的消息。按 gid % 128 分片到 t_group_messages_0 ~ t_group_messages_127

字段 类型 说明
_mid bigint 消息 ID,主键
_sender varchar(64) 发送者用户 ID
_gid varchar(64) 群组 ID
_line int 会话线路号
_client_id varchar(64) 客户端消息 ID(用于去重)
_seq bigint 群内递增的消息序号
_persist_flag int 持久化标记
_mentioned_type int @提及类型:0-未提及,1-@所有人,2-@指定成员
_mentioned_targets blob @提及的目标用户列表(二进制序列化)
_to blob 指定接收者列表(群内定向发送)
_cont_type int 消息内容类型
_duration int 语音/视频消息时长
_dt bigint 消息时间戳

索引: (_gid DESC, _line, _seq DESC)


25. 24. t_read_report — 会话读取报告表

存储每个用户在每个会话中的最新已读位置。id 是分配的自增 ID,关联到 t_user_read_report

字段 类型 说明
id int 自增主键(同时也是读取报告的全局 ID)
_uid varchar(64) 用户 ID
_type tinyint 会话类型
_line int 会话线路号
_target varchar(64) 会话目标 ID
_dt bigint 最后读取时间戳

索引: (_uid, _type, _line, _target)


26. 25. t_user_read_report — 用户读取回执表

存储每个用户各会话的已读消息序列号。用于跨设备同步已读状态。

字段 类型 说明
id int 自增主键
_rid int 关联的读取报告 ID(关联 t_read_report.id
_uid varchar(64) 用户 ID
_seq bigint 用户已读到的最新消息序列号
_dt datetime 记录时间

索引: (_uid DESC, _rid DESC)(唯一), (_uid DESC, _seq DESC)


27. 26. t_delivery_report — 送达回执表

存储每个用户消息送达的最大时间戳,每个用户一条记录。用于多节点场景下传递的幂等性。

字段 类型 说明
id int 自增主键
_uid varchar(64) 用户 ID
_dt bigint 已送达的最晚消息时间戳

索引: _uid(唯一)


28. 27. t_user_delivery_report — 用户送达回执明细表

存储每条消息在每个设备上的送达状态。

字段 类型 说明
id int 自增主键
_rid varchar(64) 消息 ID(字符串类型)
_uid varchar(64) 用户 ID
_seq bigint 该消息在此用户的序列号
_dt datetime 送达时间

索引: (_uid DESC, _rid DESC)(唯一), (_uid DESC, _seq DESC)


29. 28. t_file — 文件记录表

存储通过 IM 发送的文件记录,用于文件管理和下载统计。

字段 类型 说明
_mid bigint 关联消息 ID,主键
_from varchar(64) 发送者用户 ID
_type tinyint 会话类型:0-单聊,1-群组
_target varchar(64) 会话目标 ID
_line int 会话线路号
_name varchar(128) 文件名
_url varchar(1024) 文件存储 URL
_size int 文件大小(字节)
_download_count int 下载次数统计
_dt bigint 发送时间戳

索引: (_type, _line, _target, _mid), (_from, _mid)


30. 29. t_join_group_request — 加群请求表

存储用户申请加入群组的请求记录。

字段 类型 说明
id int 自增主键
_uid varchar(64) 申请人用户 ID
_gid varchar(64) 目标群组 ID
_mid varchar(64) (用于标识请求来源,可能关联邀请人)
_request_uid varchar(64) 实际申请的用户 ID
_accept_uid varchar(64) 审批人/邀请人用户 ID
_reason text 申请理由
_extra text 扩展字段
_status tinyint 状态:0-待处理,1-已同意,2-已拒绝
_dt bigint 申请时间戳
_read_status tinyint 是否已读标记

索引: (_uid, _gid, _mid, _request_uid)(唯一), (_gid, _mid), (_uid, _dt)


31. 30. t_user_device — 用户-设备关联表

记录用户与设备ID的绑定关系。

字段 类型 说明
id int 自增主键
_uid varchar(64) 用户 ID
_did varchar(64) 设备 ID

索引: (_uid, _did)(唯一), _did


32. 31. t_sensitiveword — 敏感词表

存储需要被过滤/审计的敏感词列表。

字段 类型 说明
id int 自增主键
_word text 敏感词内容

33. 32. t_sensitive_messages — 敏感消息审计表

当消息内容命中敏感词时,消息会被复制存储到本表,用于事后审计。

字段 类型 说明
id int 自增主键
_mid bigint 原始消息 ID
_from varchar(64) 发送者用户 ID
_type tinyint 会话类型
_target varchar(64) 会话目标 ID
_line int 会话线路号
_data blob 消息内容 Protobuf 数据
_searchable_key text 可搜索文本
_dt datetime 消息时间
_content_type int 消息内容类型

索引: _mid DESC


34. 33. t_id_generator — ID 生成器表

一个仅用于生成数据库自增 ID 的辅助表。通过 INSERT + SELECT LAST_INSERT_ID() 来获取全局唯一 ID,用于消息序列号等场景。

字段 类型 说明
id int 自增主键(生成的 ID 通过 LAST_INSERT_ID 获取)

35. 34. t_settings — 系统设置表

存储系统级别的键值配置。由 updateSystemSetting() / getSystemSetting() 管理。

字段 类型 说明
id int 设置项 ID(键),主键
_value varchar(64) 设置值
_desc varchar(64) 设置描述

36. 附:分片表说明

36.1. t_messages 分片(36张)

  • 表名: t_messages_0 ~ t_messages_35
  • 分片算法: (year * 12 + month) % 36(基于消息时间,3年循环)
  • 与基表的差异: 分片表额外包含 _content_type 字段

36.2. t_user_messages 分片(128张)

  • 表名: t_user_messages_0 ~ t_user_messages_127
  • 分片算法: userId % 128
  • 用于高效拉取单个用户的消息列表

36.3. t_group_messages 分片(128张)

  • 表名: t_group_messages_0 ~ t_group_messages_127
  • 分片算法: gid % 128
  • 用于高效拉取单个群组的消息列表
2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2026-06-11 15:05:24

results matching ""

    No results matching ""