2015-09-21 128 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並分發你的碎片。