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
相关产品推荐
相关产品推荐

