You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL到DynamoDB数据迁移:如何保留用户关注关系?

确保MySQL到DynamoDB迁移后关注关系完整的方案

要保证迁移后用户关注关系不受影响,核心是建立旧数字ID与新UUID的映射关系,并基于这个映射完成关注数据的转换。具体步骤如下:

1. 创建旧用户ID到UUID的映射表

首先在MySQL中生成每个旧用户对应的UUID,并存储映射关系,这是后续转换关注数据的关键依据。

执行以下SQL创建临时映射表并填充数据:

-- 创建临时映射表
CREATE TABLE UserIdMapping (
    old_user_id INT PRIMARY KEY,
    new_uuid VARCHAR(36) NOT NULL UNIQUE
);

-- 为每个旧用户生成UUID并插入映射表
INSERT INTO UserIdMapping (old_user_id, new_uuid)
SELECT id, UUID() FROM UserTable;

这一步会给每个MySQL用户分配一个唯一的UUID,后续所有涉及用户ID的转换都依赖这个表。

2. 转换并迁移关注关系数据

通过关联映射表,将FollowTable中的旧giver和receiverID替换为对应的UUID,生成符合DynamoDB结构的数据。

执行SQL查询获取转换后的关注数据:

SELECT 
    um_giver.new_uuid AS giverId,
    um_receiver.new_uuid AS receiverId
FROM FollowTable ft
JOIN UserIdMapping um_giver ON ft.giver = um_giver.old_user_id
JOIN UserIdMapping um_receiver ON ft.receiver = um_receiver.old_user_id;

将查询结果集批量写入DynamoDB的FollowTable即可。注意DynamoDB的主键是giverId(哈希键)+receiverId(排序键),确保组合唯一(原MySQL的FollowTable应该已保证这一点)。

3. 迁移后验证

迁移完成后需要验证数据完整性:

  • 检查UserIdMapping中每个旧ID都对应唯一的UUID,无重复或缺失
  • 抽样对比原MySQL的关注关系与DynamoDB中的数据:比如原用户1(John)关注用户2(Joe)和3(Mike),迁移后John的UUID对应的giverId下,必须存在Joe和Mike的UUID作为receiverId
  • 统计原FollowTable的记录数与DynamoDB中FollowTable的记录数,确保一致

额外注意事项

如果迁移过程中旧应用仍在产生新的关注数据,需要先暂停旧应用的写入操作,或者通过CDC(变更数据捕获)工具同步增量数据,避免遗漏新产生的关注关系。

内容的提问来源于stack exchange,提问作者sjaymj62

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:15:50