我正在将 MongoDB 数据库迁移到 MySQL,我不确定应该如何管理 ID,我仍然需要访问 ObjectID,因为它们被用于打印在标签上的二维码。
第一种明显的想法就是将原始的ObjectID作为ID。这将是最简单的方法,我只关心 MySQL 是否有任何问题或性能受到影响,因为迁移后的新行将是 UUID。
我能想到的另一个解决方案是让他们在迁移时自动生成 UUID,并有一个单独的表将旧的 ObjectID 与新的 UUID 相关联。我可以在查询之前检查我得到的 ID 是 ObjectID 还是 UUID,并确定我是否需要通过该表获取或直接在主表上获取。
第三种解决方案是让一个列保存 ObjectID 并通过它进行索引,但这看起来不正确,因为新添加的行都不会使用它。
这三个中哪个是最好的解决方案?有没有我遗漏的更好的解决方案?
如果你的目标是 MySQL(或 MariaDB),每一行都应该有一些在整个表中是唯一的列。这可能是一个 auto_increment、一个 UUID 或一些“自然”键。如果当前的ObjectID是Unique,再加上numeric,string,或者
BINARY
,那大概就没问题了。 PRIMARY KEY
可能有一些大小限制。
由于您当前的 ObjectID 是 12 个字节,因此应该没有问题。如果这是固定大小和“二进制”,请使用BINARY(12)
。
暂时保持简单。除非你有数百万或行,否则不要担心性能。 (即便如此,也可能不会出现性能问题。)