快手聊天数据库结构详解
本文档不保证内容完全正确,个人精力有限,如果你认为该页面有错误或写的不行欢迎发起issues和提交pr更正
数据库基本信息
- 数据库类型:SQLite 3
- 文件大小:通常几MB到几十MB(取决于聊天频率)
- 字符编码:UTF8
- 时间:毫秒级时间戳
imsdk.db 数据库表结构说明
以下表格按照数据库默认排序(字母顺序)排列。
1. 表结构速查 (按原序排列)
| 序号 | 表名 (Table Name) | 类型 | 功能说明 | 建议 |
|---|---|---|---|---|
| 1 | android_metadata |
系统 | 安卓系统生成的元数据表(如本地化信息) | ❌ 忽略 |
| 2 | fts_kwai_message |
索引 | 全文搜索虚拟表 (Full-Text Search) 主表 | ❌ 忽略 |
| 3 | fts_kwai_message_content |
索引 | 全文搜索内容数据 | ❌ 忽略 |
| 4 | fts_kwai_message_docsize |
索引 | 全文搜索相关 | ❌ 忽略 |
| 5 | fts_kwai_message_segdir |
索引 | 全文搜索相关 | ❌ 忽略 |
| 6 | fts_kwai_message_segments |
索引 | 全文搜索相关 | ❌ 忽略 |
| 7 | fts_kwai_message_stat |
索引 | 全文搜索相关 | ❌ 忽略 |
| 8 | ktv_data |
键值 | 键值KV数据表,暂不知用处 | ❌ 忽略 |
| 9 | kwai_attachment |
附件 | 附件表,目前来看只有一堆表情的链接 | ❌ 忽略 |
| 10 | kwai_conversation |
核心 | 会话列表。记录你和谁聊过天、最后一条消息、未读数。 | ⭐⭐ 核心 |
| 11 | kwai_conversation_tag |
辅助 | 会话标签,实际上无数据,不知用处 | ❌ 忽略 |
| 12 | kwai_group_info |
群组 | 群信息。存储群名称、群公告、群主 ID。 | ⭐ 重要 |
| 13 | kwai_group_member |
群组 | 群成员。存储群内成员列表及群昵称。 | ⭐ 重要 |
| 14 | kwai_gruop_msg_read_info |
状态 | 群消息已读回执。(注意:官方拼写错误 gruop) |
❌ 忽略 |
| 15 | kwai_message |
核心 | 消息内容表。存储所有聊天记录详情。 | ⭐⭐⭐ 核心 |
| 16 | kwai_receipt |
状态 | 消息回执(无数据) | ❌ 忽略 |
| 17 | kwai_retry |
队列 | 消息发送失败重试队列。 | ❌ 忽略 |
| 18 | supplement_msg_range |
同步 | 消息补全范围,用于客户端与服务器同步数据。 | ❌ 忽略 |
2. 详细功能解析 (按重要性)
按照优先级排序如下:
🟢 核心数据
1. kwai_message (序号 15)
- 这是整个数据库的灵魂
- 用途:存储每一条消息
2. kwai_conversation (序号 10)
* 这是你的“消息列表”
* 用途:获取所有聊过天的人或群
🟡 完善体验数据
. kwai_group_info & kwai_group_member (序号 12, 13)
* 用途:用于处理群聊
* 场景:在 kwai_message 表里,群聊消息只显示发送者的 ID(一串数字)
需要通过关联 kwai_group_member 表,才能把这串数字变成群昵称
🔴 冗余/系统数据 (忽略即可)
1. fts_kwai_message... 系列 (序号 2-7)
* 解释:FTS = Full-Text Search。这是 SQLite 自带的全文搜索扩展表。
* 为什么忽略:这些表里的数据是 kwai_message 的重复备份,搜索用的,无视即可
2. kwai_attachment (序号 9)
* 用途:快手黄豆表情包的链接,没什么大用处。
2. kwai_gruop_msg_read_info (序号 14)
* 用途:群聊消息已读信息,没什么价值
* 趣闻:这是一个快手开发者的拼写错误彩蛋,group 被拼成了 gruop