2014-09-23 71 views
0

我需要插入2.000.000行數據到Mongodb中,逐行但到達200.000插入它變得非常慢,我使用Mongoid,我不知道我是否可以使用bulk插入我們我需要在插入前進行數據驗證。我如何加快這個過程? 非常感謝您的幫助!Mongodb Mongoid插入數據加速

回答

0

爲了顯着提高性能,您應該嘗試通過Moped::Collection#insert批量插入。您必須自己明確地撥打#valid?。嘗試如下所示,假設data_rows是一個Mongoid模型MyModel對象的數組。

slice_size = 1000  
data_rows.each_slice(slice_size) do |slice| 
    slice.each{|data_row| raise "validation error" unless data_row.valid?} 
    MyModel.collection.insert(slice.collect{|data_row| data_row.serializable_hash}) 
end 

如果你能在「原始」非Mongoid模型形式截取您的進口數據,您可以通過插入散列陣列繞過一些開銷,但你將有自己的自定義的驗證程序,並不能使用Mongoid模型驗證。