我正在研究将数据从SQL 2012迁移到mongoDB的可能性。我的经理特别要求我查看在SQL和MongoDB中处理数十亿行以决定是否迁移所需的时间。我应该访问哪些建议或建议或地点进行更多研究? 到目前为止我已经完成了
我现在有的问题 3.如何将SQL中的数据库导入Mongo(比如迁移Adventure Works)
提前致谢!
答案 0 :(得分:2)
我学到了一些最好的实践。
在规划MongoDB群集时,您需要了解平均文档大小有多大。为此,请导入大约10k的数据记录。这可以让您了解实际导入需要多长时间的数量:
其中t是导入c。
的n个文件所花费的时间对所有目标集合重复此操作。之后,发出
db.stats()
在mongo shell中。您将看到一些大小统计信息。您现在有两个关键因素的近似值:导入时间(通过总结上述计算结果)和您需要的存储空间。
创建您需要的索引。至于时间计算,与上述相同。但是有一个不同的事情:索引应该驻留在RAM中,因此您需要在迁移所有记录时推断出所需的实际RAM。
有可能将所有数据存储在一台机器上是不划算的,因为RAM在某一点之后变得昂贵(这里需要计算)。如果是这种情况,则需要进行分片。
不能过分强调从一开始就拥有proper shard key权利的重要性:无法更改分片键。花一些时间与开发人员一起找到合适的分片密钥。
在数据迁移期间,您最不希望的是让balancer尝试平衡块的延迟。所以你应该pre-split your chunks并在你的分片中分发它们。
答案 1 :(得分:0)
我创建了一个Node.js脚本,用于将SQL数据库复制到MongoDB。
你可以找到它here。
使用......
克隆回购:
git clone https://github.com/ashleydavis/sql-to-mongodb
安装依赖项:
cd sql-to-mongodb
npm install
设置您的配置:
编辑config.js。添加您的MongoDB数据库的SQL连接字符串和详细信息。
运行脚本:
node index.js
这可能需要一段时间才能完成!但是当它发生时,你将在MongoDB中拥有一个SQL数据库的副本。如果有任何问题,请告诉我。