sql-server - 从 SQL 迁移到 MongoDB?

标签 sql-server mongodb migration

我正在研究将数据从 SQL 2012 迁移到 mongoDB 的可能性。我的经理特意让我看看在 SQL 和 MongoDB 中处理数十亿行以决定是否迁移所需的时间。有什么建议或建议或我应该去研究更多的地方吗?
到目前为止我已经完成了

  • 在我的开发环境中安装了 MongoDB
  • 我已经能够连接到 MongoDB,创建数据库和集合

  • 我现在的问题
    3.如何将SQL中的数据库导入Mongo(比如迁移Adventure Works)

    提前致谢!

    最佳答案

    我通过艰难的方式学到了一些最佳实践。

    做部分导入

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

    time to migrate

    其中 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/

    相关文章:

    django - 如何使用 mongoengine 避免竞争条件(对 ListFields 和 DictFields 进行原子更改)

    sql-server - 将引用 FSharp.Data.SqlProvider 的 SQL CLR 程序集注册到 SQL Server 时出现问题

    sql - 使用 'ISNULL(x, 0) = 0' 而不是 (x is null OR x = 0)

    sql - 为什么一个简单的 T-SQL UDF 函数会使代码执行速度慢 3 倍

    mysql - 将 Joomla 3 站点迁移到新域

    python - 如何使用 django 在项目内仅迁移一个应用程序

    使用 golang-migrate/migrate 进行 Gorm 迁移

    sql-server - 如何在 SQL Server 的事务日志中完成回滚后找到更新事务的更改增量值

    javascript - 为什么在 meteor /蒙戈中观察 oplog 需要这么多时间?

    mongodb - 如何在环回中创建引用?