2015-09-21 95 views
0

我正在研究将数据从SQL 2012迁移到mongoDB的可能性。我的经理特意要求我看看在SQL和MongoDB中处理数十亿行以作出迁移决定的时间。任何建议或建议或地点,我应该访问研究更多? 到目前为止,我已经做了从SQL迁移到MongoDB?

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

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

在此先感谢!

+0

你见过这个[Mongify](http:// mongify。com /) –

+0

非常感谢尼古拉斯。这似乎是我的情况的正确工具。我会更多地探索它,看看它是否适合我。但它看起来像Mongify不适用于Windows?对尼古拉斯有任何想法? – ebro

+0

怎么回事?它在哪里陈述? –

回答

1

一些最佳实践我学会了艰难的道路。

执行部分进口

在规划的MongoDB集群,你需要有一个想法平均文档大小有多大。为了做到这一点,请输入您的数据的一些10k记录。这给你的实际进口需要多长时间的数量级的想法:

time to migrate

其中T是它采取进口的C N个文档的时间。

重复此为所有目标集合。之后,在mongo shell中发出

db.stats() 

。您将看到一些尺寸统计数据。您现在有两个关键因素的近似值:导入所需的时间(通过总结上述计算结果)和您需要的存储空间。

在部分导入上创建索引

创建您将需要的索引。至于时间计算,与上面相同。但是还有一个不同的地方:索引应该驻留在RAM中,所以当需要迁移所有记录时,需要推断实际需要的RAM。

机会是,它是不符合成本效率的所有数据存储在一个机器上,因为RAM的某一个点(计算是必要这里)后得到昂贵。如果是这样的话,你需要分片。

当分片:选择合适的片键

它不能过分强调它是多么重要的是有从一开始就一个proper shard key碎片键不能改变。花一些时间与开发人员一起寻找合适的分片密钥。

当分片:预裂块

数据迁移过程中你想的最后一件事是有它由balancer延迟试图以平衡块。所以你应该pre-split your chunks并分发你的碎片。