【问题标题】:Mongodb Mongoid inserting data speed upMongodb Mongoid插入数据加速
【发布时间】:2014-09-24 23:38:04
【问题描述】:

我需要将 2.000.000 行数据逐行插入到 Mongodb 中,但是当它达到 200.000 时插入它变得非常慢,我正在使用 Mongoid,我不知道我是否可以使用批量插入我们我需要数据验证在插入之前。我怎样才能加快这个过程? 非常感谢您的帮助!

【问题讨论】:

    标签: ruby mongodb mongoid3


    【解决方案1】:

    为了显着提高性能,您应该尝试通过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 模型验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2011-10-30
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2013-03-06
      • 2020-01-31
      相关资源
      最近更新 更多