我正在研究将数据从 SQL 2012 迁移到 mongoDB 的可能性。我的经理特意让我看看在 SQL 和 MongoDB 中处理数十亿行以决定是否迁移所需的时间。有什么建议或建议或我应该去研究更多的地方吗?
到目前为止我已经完成了
我现在的问题
3.如何将SQL中的数据库导入Mongo(比如迁移Adventure Works)
提前致谢!
最佳答案
我通过艰难的方式学到了一些最佳实践。
做部分导入
在规划 MongoDB 集群时,您需要了解平均文档大小有多大。为此,请导入大约 10k 条数据记录。这让您了解实际导入需要多长时间(数量级):
其中 t 是导入 c 的 n 个文档所花费的时间。
对所有目标集合重复此操作。之后,发出一个
db.stats()
在 mongo 外壳中。您将看到一些尺寸统计信息。您现在有两个关键因素的近似值:导入所需的时间(通过总结上述计算的结果)和您需要的存储空间。
在部分导入上创建索引
创建您将需要的索引。至于时间计算,同上。但是有一点不同:索引应该驻留在 RAM 中,因此您需要在迁移所有记录时推断您需要的实际 RAM。
可能将所有数据存储在一台机器上并不划算,因为在某个时间点之后 RAM 变得越来越昂贵(此处需要进行计算)。如果是这种情况,您需要分片。
分片时:选择合适的分片键
拥有一个proper shard key 的重要性不言而喻。从一开始:无法更改分片键 .花一些时间与开发人员一起寻找合适的分片键。
分片时:预分割块
在数据迁移过程中,您最不希望发生的事情是被 balancer 延迟。试图平衡块。所以你应该pre-split your chunks并将它们分配到您的碎片中。
关于sql-server - 从 SQL 迁移到 MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699431/