我目前有一个mySQL数据库,我将迁移到MongoDB。我已经开始编写一个迁移工具,我很好奇是否有更有效的方法来达到我的最终目标。
数据的实际结构相当复杂,但我会尝试使用简化版本来提问我的问题。假设我有以下MySQL表:
Surveys
Survey_id
Title
CreateUser (fk)
Users
User_id
Fname
Lname
我的计划是将这些迁移到基本匹配此结构的MongoDB集合。外键将成为User
集合的引用。我目前正计划采取以下步骤来执行此操作:
SELECT Survey_id, Title FROM Surveys
Select User_id, fname, lname FROM Users
SELECT CreateUser, SurveyId FROM Surveys
Users
集合中的每个相应记录,并将对Users
集合的引用插入到现有Surveys
文档中。 Survey_id
文档中删除Surveys
字段User_id
文档Users
字段表单
醇>
这是一种合理的方法,还是我让事情变得比他们需要的更复杂?
答案 0 :(得分:0)
如果数据不是很大,那么更改操作顺序并在RAM中进行映射是有意义的,即
SELECT * FROM Users
(SQL id, MongoDB id)
添加到哈希表SELECT * FROM Surveys
CreateUser
替换为Hashtable[CreateUser]
通常情况下,这会快得多,因为您不需要更新mongodb中的对象,而且您不必再次查询数据。
您应该尝试使用MongoDB的批量插入,而不是逐个插入文档。而不是获取新创建的文件'来自数据库的id,您可以自己分配MongoDB主键。否则,驱动程序无论如何都会这样做,而不是数据库本身,所以没有这样做没有真正的优势。
如果数据量巨大(这样您无法将查找表保留在RAM中),我会尝试坚持查找并逐个子集地处理它们。如果你有很多外键,这将是棘手的。