数据库 Schema(43 张表)与核心关系
概述
数据库位于 teamgramd/deploy/sql/,基础 schema 在 1_teamgram.sql(38 表),迁移补齐到 43 表。
所有服务共用同一个 MySQL 数据库 teamgram,字符集 utf8mb4。
43 张表完整列表
| 表名 | 核心用途 |
|---|
| authkeyinfos | authkey 元信息 |
| authkeys |
auth_key 存储(加密密钥) |
| auth
sequpdates | 每个 auth_key 的 updates 序列号 |
| auth
users | authkey ↔ user 绑定关系 |
| auths | 授权记录 |
| bot_commands | Bot 命令列表 |
| bots | Bot 信息 |
| chat
inviteparticipants | 通过邀请链接加入的成员 |
| chat_invites | 聊天邀请链接 |
| chat_participants | 群成员关系 |
| chats | 群组信息 |
| default
historyttl | 默认历史消息 TTL |
| devices | 推送设备/token |
| dialog_filters | 对话文件夹 |
| dialogs | 对话列表(每用户每对等方一行) |
| documents | 文件/文档元数据 |
| drafts | 消息草稿 |
| encrypted_files | 加密文件 |
| hash_tags | 消息 hashtag 索引 |
| imported_contacts | 导入的联系人 |
| message
readoutbox | 消息已读状态(outbox 侧) |
| messages | 消息存储(核心表) |
| phone_books | 通讯录 |
| photo_sizes | 照片尺寸变体 |
| photos | 照片元数据 |
| popular_contacts | 热门联系人 |
| predefined_users | 预定义用户 |
| saved_dialogs | 保存的消息对话 |
| unregistered_contacts | 未注册联系人 |
| user_contacts | 用户联系人关系 |
| user
globalprivacy_settings | 全局隐私设置 |
| user
notifysettings | 通知设置 |
| user
peerblocks | 屏蔽关系 |
| user
peersettings | 对等方设置 |
| user_presences | 用户最后上线时间 |
| user_privacies | 隐私规则 |
| user
profilephotos | 用户头像 |
| user
ptsupdates | 每用户 pts 更新序列 |
| user
savedmusic | 保存的音乐 |
| user_settings | 用户设置 |
| username | 用户名 |
| users | 用户信息(核心表) |
| video_sizes | 视频尺寸变体 |
核心 ER 关系
CODEBLOCK0
关键表结构说明
users 表
- - 核心用户信息表
- userid 为主键(Snowflake ID)
- 包含 phone、firstname、last_name、username 等字段
- deleted 字段标记软删除
messages 表
- - 消息存储核心表
- 按 userid + peer 维度存储(inbox/outbox 双写)
- dialogid1/dialogid2 用于双向对话定位
- dialogmessageid 为对话内消息序号(递增)
- messagetype 区分文本/媒体/服务消息等
dialogs 表
- - 每个用户与每个对等方(私聊/群聊)一行
- peertype: 1=user, 2=chat, 3=channel
- 包含 unreadcount、readinboxmaxid、readoutboxmaxid
- pinned 字段控制置顶排序
authkeys / authusers 表
- - authkeys 存储 MTProto 授权密钥(256字节 authkey)
- authusers 维护 authkeyid → userid 的绑定
- 一个用户可以有多个 authkey(多设备登录)
- authkeyid 是 authkey 的 SHA1 后 8 字节
chat_participants 表
- - chatid + userid 复合主键
- participanttype 区分普通成员/管理员/创建者
- inviteruserid 记录邀请人
- joinedat 记录加入时间
SQL 文件路径
- - 基础 schema: INLINECODE4
- 迁移脚本:
teamgramd/deploy/sql/ 下的后续编号文件
Source Code References
- - Repository: https://github.com/teamgram/teamgram-server (Apache-2.0)
数据库 Schema(43 张表)与核心关系
概述
数据库位于 teamgramd/deploy/sql/,基础 schema 在 1_teamgram.sql(38 表),迁移补齐到 43 表。
所有服务共用同一个 MySQL 数据库 teamgram,字符集 utf8mb4。
43 张表完整列表
| 表名 | 核心用途 |
|---|
| authkeyinfos | authkey 元信息 |
| authkeys |
auth_key 存储(加密密钥) |
| auth
sequpdates | 每个 auth_key 的 updates 序列号 |
| auth
users | authkey ↔ user 绑定关系 |
| auths | 授权记录 |
| bot_commands | Bot 命令列表 |
| bots | Bot 信息 |
| chat
inviteparticipants | 通过邀请链接加入的成员 |
| chat_invites | 聊天邀请链接 |
| chat_participants | 群成员关系 |
| chats | 群组信息 |
| default
historyttl | 默认历史消息 TTL |
| devices | 推送设备/token |
| dialog_filters | 对话文件夹 |
| dialogs | 对话列表(每用户每对等方一行) |
| documents | 文件/文档元数据 |
| drafts | 消息草稿 |
| encrypted_files | 加密文件 |
| hash_tags | 消息 hashtag 索引 |
| imported_contacts | 导入的联系人 |
| message
readoutbox | 消息已读状态(outbox 侧) |
| messages | 消息存储(核心表) |
| phone_books | 通讯录 |
| photo_sizes | 照片尺寸变体 |
| photos | 照片元数据 |
| popular_contacts | 热门联系人 |
| predefined_users | 预定义用户 |
| saved_dialogs | 保存的消息对话 |
| unregistered_contacts | 未注册联系人 |
| user_contacts | 用户联系人关系 |
| user
globalprivacy_settings | 全局隐私设置 |
| user
notifysettings | 通知设置 |
| user
peerblocks | 屏蔽关系 |
| user
peersettings | 对等方设置 |
| user_presences | 用户最后上线时间 |
| user_privacies | 隐私规则 |
| user
profilephotos | 用户头像 |
| user
ptsupdates | 每用户 pts 更新序列 |
| user
savedmusic | 保存的音乐 |
| user_settings | 用户设置 |
| username | 用户名 |
| users | 用户信息(核心表) |
| video_sizes | 视频尺寸变体 |
核心 ER 关系
text
users (user_id)
|\
| \-- authusers (authkeyid -> userid) # 登录设备/授权关系
| \-- devices (authkeyid, user_id) # push token / device
| \-- userpresences (userid) # last seen
| \-- userprofilephotos (userid -> photoid)
| \-- usersettings / userprivacies / usernotifysettings
|
\-- dialogs (userid, peertype, peer_id) # 会话列表
|
\-- messages (userid, peertype, peerid, dialogid1/2, dialogmessageid)
|
\-- documents/photos/encryptedfiles (+ photosizes/video_sizes)
chats (chat_id)
\-- chatparticipants (chatid, user_id)
\-- chatinvites / chatinvite_participants
关键表结构说明
users 表
- - 核心用户信息表
- userid 为主键(Snowflake ID)
- 包含 phone、firstname、last_name、username 等字段
- deleted 字段标记软删除
messages 表
- - 消息存储核心表
- 按 userid + peer 维度存储(inbox/outbox 双写)
- dialogid1/dialogid2 用于双向对话定位
- dialogmessageid 为对话内消息序号(递增)
- messagetype 区分文本/媒体/服务消息等
dialogs 表
- - 每个用户与每个对等方(私聊/群聊)一行
- peertype: 1=user, 2=chat, 3=channel
- 包含 unreadcount、readinboxmaxid、readoutboxmaxid
- pinned 字段控制置顶排序
authkeys / authusers 表
- - authkeys 存储 MTProto 授权密钥(256字节 authkey)
- authusers 维护 authkeyid → userid 的绑定
- 一个用户可以有多个 authkey(多设备登录)
- authkeyid 是 authkey 的 SHA1 后 8 字节
chat_participants 表
- - chatid + userid 复合主键
- participanttype 区分普通成员/管理员/创建者
- inviteruserid 记录邀请人
- joinedat 记录加入时间
SQL 文件路径
- - 基础 schema:teamgramd/deploy/sql/1_teamgram.sql
- 迁移脚本:teamgramd/deploy/sql/ 下的后续编号文件
Source Code References
- - Repository: https://github.com/teamgram/teamgram-server (Apache-2.0)