0
我需要插入2.000.000行數據到Mongodb中,逐行但到達200.000插入它變得非常慢,我使用Mongoid,我不知道我是否可以使用bulk插入我們我需要在插入前進行數據驗證。我如何加快這個過程? 非常感謝您的幫助!Mongodb Mongoid插入數據加速
我需要插入2.000.000行數據到Mongodb中,逐行但到達200.000插入它變得非常慢,我使用Mongoid,我不知道我是否可以使用bulk插入我們我需要在插入前進行數據驗證。我如何加快這個過程? 非常感謝您的幫助!Mongodb Mongoid插入數據加速
爲了顯着提高性能,您應該嘗試通過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模型驗證。