从SQL迁移到MongoDB?

时间:2015-09-21 15:47:09

标签: sql-server mongodb migration

我正在研究将数据从SQL 2012迁移到mongoDB的可能性。我的经理特别要求我查看在SQL和MongoDB中处理数十亿行以决定是否迁移所需的时间。我应该访问哪些建议或建议或地点进行更多研究? 到目前为止我已经完成了

  1. 在我的开发环境中安装了MongoDB
  2. 我已经能够连接到MongoDB,创建了数据库和集合
  3. 我现在有的问题  3.如何将SQL中的数据库导入Mongo(比如迁移Adventure Works)

    提前致谢!

2 个答案:

答案 0 :(得分:2)

我学到了一些最好的实践。

执行部分导入

在规划MongoDB群集时,您需要了解平均文档大小有多大。为此,请导入大约10k的数据记录。这可以让您了解实际导入需要多长时间的数量:

time to migrate

其中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数据库的副本。如果有任何问题,请告诉我。