イベントjsonオブジェクトのリストを保存または更新する次の方法があります。私はcouchdbの一括create_or_update関数を見つけることができなかった、私は各オブジェクトを照会し、それがデータベースに存在し、それに応じて作成/更新しなければならなかった。残念ながら、これは非常に非効率的で、1725イベントが処理されるには6分かかります。誰かがより良いデザインを提案できますか?それは数秒で完了しなければならない。私のcouchdbは実際にはsslクラウドデータベースであり、私のアプリは、クラウドと実際に組み合わせられているheroku上のアプリよりも、Heroku上でホストされています。Rubyを使用したCouchDbのバルクupdate_or_createの最適化
def self.store(bulk, resource)
JSON::Validator.validate!(SCHEMA, bulk, :list => true)
bulk.each{ |event|
response = resource.get("/database-dev/_design/Event/_view/byEID?key=\"#{event['eid']}\"")
if (response["rows"].nil? || response["rows"].empty?) then
o = [('a'..'z'),('A'..'Z'),(0..9)].map{|i| i.to_a}.flatten
o.push('-','_')
event['_id'] = (0..50).map{ o[rand(o.length)] }.join
event['resource'] = 'Event'
resource.post('/database-dev', event.to_json)
else
resource.put("/database-dev/#{response['rows'][0]['id']}", event.to_json)
end
}
end