feat: migrate IM identity and snowflake primary keys
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
> 主要依据:`IM-产品原型需求文档.md`、`IM-前后端对接文档.md`
|
||||
> 多租户依据:`IM-独立库多租户改造方案.md`
|
||||
> 明确排除:已废弃的 `IM-服务端多租户改造方案.md`
|
||||
> 数据库更新:2026-08-18 已完成无独立 `id` 表的雪花主键改造和本地库迁移。
|
||||
|
||||
## 1. 审核说明
|
||||
|
||||
@@ -353,10 +354,13 @@
|
||||
- 好友关系、认证安全、隐私、收藏、通知、会议、报表等业务表已在 MySQL 适配器中出现对应存储实现。
|
||||
- 群业务从 Topic/Subscription 扩展为独立业务表,方向符合复杂群管理需求。
|
||||
- `im_http_idempotency` 和 `im_business_events_outbox` 已纳入应用自动建表与数据库变更汇总脚本。
|
||||
- MySQL 业务表已统一具备独立 `id` 主键;原先使用自然键或复合主键的 11 张表已改用服务端雪花 `BIGINT id`,原业务键保留唯一索引。
|
||||
- 应用启动会在当前租户库幂等补列、回填存量雪花 ID 并切换主键;迁移使用数据库级 advisory lock,独立租户库与残留 `tenant_id` 旧结构均可保留原业务唯一性。
|
||||
- 用户身份字段已结构化:手机号迁入 `im_users.phone`,邮箱迁入 `im_user_profiles.email`;用户 `tags/im_usertags` 在回填后删除,Topic 标签体系继续保留。
|
||||
|
||||
### 需要修正
|
||||
|
||||
1. 建立唯一 schema 版本和迁移入口,禁止“应用启动建部分表 + 手工 SQL 建另一部分表”长期并存。
|
||||
1. 继续把其他历史建表/升级逻辑收敛到唯一 schema 版本和迁移入口;本次雪花主键改造已具备统一自动迁移入口。
|
||||
2. 群业务 SQL 必须参数化目标租户库,禁止硬编码 `tinode`。
|
||||
3. 新租户建库和存量租户升级必须执行同一套 migration。
|
||||
4. 为 Topic、Subscription、群业务表之间的复合写操作提供事务边界。
|
||||
|
||||
Reference in New Issue
Block a user