У меня есть следующий метод, который хранит или обновляет список объектов json события. Я не мог найти большую функцию create_or_update для couchdb, мне приходилось запрашивать каждый объект и посмотреть, существует ли он в базе данных и соответствующим образом создавать/обновлять. К сожалению, это крайне неэффективно, для обработки 1725 событий требуется 6 минут. Может ли кто-нибудь предложить лучший дизайн? Это нужно сделать через пару секунд. Мой couchdb на самом деле является облачной базой данных ssl, а мое приложение размещено на Heroku, которое отличается от приложения на heroku, которое фактически сочетается с облачным.Массовая оптимизация update_or_create в CouchDb с Ruby
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