2014-09-23 3 views
0

Mongodb 행에 데이터 행 2.000.000을 삽입해야하지만 삽입 속도가 매우 느려지고 삽입 속도가 200.000에 도달해야합니다. Mongoid를 사용하고 있으며 대량 자료를 사용할 수 있는지 여부를 모르겠습니다. 삽입하기 전에 데이터 유효성 검사가 필요합니다. 이 과정을 어떻게 빨리 할 수 ​​있습니까? 도움 주셔서 대단히 감사합니다!Mongodb Mongoid 삽입 데이터 속도 향상

답변

0

성능을 크게 개선하려면 Moped::Collection#insert을 통해 배치 삽입을 시도해야합니다. #valid? 번으로 직접 전화해야합니다. data_rows이 Mongoid 모델 MyModel 개체의 배열이라고 가정하고 다음과 같은 것을 시도해보십시오. 당신이 "원시"비 Mongoid 모델 형태로 가져 오기 데이터를 가로 챌 수있는 경우

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 모델 검증을 사용합니다.