从 SQL 迁移到 MongoDB?
Migrate from SQL to MongoDB?
我正在研究将数据从 SQL 2012 迁移到 mongoDB 的可能性。我的经理特别要求我查看处理 SQL 和 MongoDB 中的数十亿行所需的时间,以决定是否迁移。我应该访问以进行更多研究的任何建议或建议或地方?
到目前为止我已经完成
- 在我的开发环境中安装了 MongoDB
- 我已经能够连接到 MongoDB,创建了数据库和集合
我现在的问题
3.如何将SQL中的数据库导入到Mongo中(比如migrate Adventure Works)
提前致谢!
我通过艰辛的方式学到的一些最佳实践。
进行部分导入
在规划 MongoDB 集群时,您需要了解平均文档大小有多大。为此,请导入大约 10k 条数据记录。这让您了解实际导入需要多长时间:

其中 t 是导入 c 的 n 个文档所花费的时间。
对所有目标集合重复此操作。之后,发出
db.stats()
在mongoshell。您将看到一些尺寸统计数据。您现在有两个关键因素的近似值:导入所需的时间(通过总结上述计算结果)和您需要的存储 space。
在部分导入时创建索引
创建您需要的索引。至于时间计算,同上。但有一点不同:索引应该驻留在 RAM 中,因此您需要推断迁移所有记录时所需的实际 RAM。
很可能将所有数据存储在一台机器上并不符合成本效益,因为在某个时间点之后 RAM 变得昂贵(此处需要计算)。如果是这样,你需要分片。
分片时:选择合适的片键
从一开始就拥有 proper shard key 的重要性怎么强调都不为过:不能更改分片键。花一些时间与开发人员一起寻找合适的分片键。
分片时:预拆分块
在数据迁移过程中,您最不想要的就是让它被 balancer trying to balance out the chunks. So you should pre-split your chunks 延迟并将它们分布在您的分片中。
我创建了一个 Node.js 脚本,可以将 SQL 数据库复制到 MongoDB。
你可以找到它here。
使用...
克隆存储库:
git clone https://github.com/ashleydavis/sql-to-mongodb
安装依赖:
cd sql-to-mongodb
npm install
设置您的配置:
编辑config.js。添加 SQL 连接字符串和 MongoDB 数据库的详细信息。
运行 脚本:
node index.js
这可能需要一段时间才能完成!但是当它发生时,您将在 MongoDB 中拥有 SQL 数据库的副本。如果有任何问题,请告诉我。
我正在研究将数据从 SQL 2012 迁移到 mongoDB 的可能性。我的经理特别要求我查看处理 SQL 和 MongoDB 中的数十亿行所需的时间,以决定是否迁移。我应该访问以进行更多研究的任何建议或建议或地方? 到目前为止我已经完成
- 在我的开发环境中安装了 MongoDB
- 我已经能够连接到 MongoDB,创建了数据库和集合
我现在的问题 3.如何将SQL中的数据库导入到Mongo中(比如migrate Adventure Works)
提前致谢!
我通过艰辛的方式学到的一些最佳实践。
进行部分导入
在规划 MongoDB 集群时,您需要了解平均文档大小有多大。为此,请导入大约 10k 条数据记录。这让您了解实际导入需要多长时间:
其中 t 是导入 c 的 n 个文档所花费的时间。
对所有目标集合重复此操作。之后,发出
db.stats()
在mongoshell。您将看到一些尺寸统计数据。您现在有两个关键因素的近似值:导入所需的时间(通过总结上述计算结果)和您需要的存储 space。
在部分导入时创建索引
创建您需要的索引。至于时间计算,同上。但有一点不同:索引应该驻留在 RAM 中,因此您需要推断迁移所有记录时所需的实际 RAM。
很可能将所有数据存储在一台机器上并不符合成本效益,因为在某个时间点之后 RAM 变得昂贵(此处需要计算)。如果是这样,你需要分片。
分片时:选择合适的片键
从一开始就拥有 proper shard key 的重要性怎么强调都不为过:不能更改分片键。花一些时间与开发人员一起寻找合适的分片键。
分片时:预拆分块
在数据迁移过程中,您最不想要的就是让它被 balancer trying to balance out the chunks. So you should pre-split your chunks 延迟并将它们分布在您的分片中。
我创建了一个 Node.js 脚本,可以将 SQL 数据库复制到 MongoDB。
你可以找到它here。
使用...
克隆存储库:
git clone https://github.com/ashleydavis/sql-to-mongodb
安装依赖:
cd sql-to-mongodb
npm install
设置您的配置:
编辑config.js。添加 SQL 连接字符串和 MongoDB 数据库的详细信息。
运行 脚本:
node index.js
这可能需要一段时间才能完成!但是当它发生时,您将在 MongoDB 中拥有 SQL 数据库的副本。如果有任何问题,请告诉我。