2011-11-18 3 views
0

데이터베이스를 ruby on rails 응용 프로그램과 함께 사용하기 위해 couchrest을 사용하도록 설정했습니다.couchdb에 속성 추가

이제 데이터베이스에는 약 100,000 개의 레코드가 있으며 정수 형식으로 타임 스탬프를 저장할 필드를 추가하려고합니다.
루프를 통해 업데이트하려고하면 요청 시간이 초과됩니다.

couchdb에 새 필드/속성을 추가하는 가장 좋은 방법은 무엇입니까?

코드

pages = Page.all 
pages.each do |p| 
    p.update_attributes(:created_at_to_i => p.created_at.to_i) 
    puts p.created_at_to_i.inspect 
end 

추적

>> Page.update_timestamp 
RestClient::RequestTimeout: Request Timeout 
    from /usr/local/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:184:in `transmit' 
    from /usr/local/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:64:in `execute' 
    from /usr/local/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:33:in `execute' 
    from /usr/local/lib/ruby/gems/1.8/gems/couchrest-1.1.2/lib/couchrest/rest_api.rb:89:in `execute' 
    from /usr/local/lib/ruby/gems/1.8/gems/couchrest-1.1.2/lib/couchrest/rest_api.rb:45:in `get' 
    from /usr/local/lib/ruby/gems/1.8/gems/couchrest-1.1.2/lib/couchrest/database.rb:260:in `view' 
    from /usr/local/lib/ruby/gems/1.8/gems/couchrest-1.1.2/lib/couchrest/design.rb:52:in `view_on' 
    from /usr/local/lib/ruby/gems/1.8/gems/couchrest_model-1.1.2/lib/couchrest/model/views.rb:142:in `fetch_view' 
    from /usr/local/lib/ruby/gems/1.8/gems/couchrest_model-1.1.2/lib/couchrest/model/views.rb:135:in `fetch_view_with_docs' 
    from /usr/local/lib/ruby/gems/1.8/gems/couchrest_model-1.1.2/lib/couchrest/model/views.rb:104:in `view' 
    from /usr/local/lib/ruby/gems/1.8/gems/couchrest_model-1.1.2/lib/couchrest/model/document_queries.rb:12:in `all' 
    from /var/www/monitoring_couch/app/models/page.rb:309:in `update_timestamp' 
    from (irb):2 

답변

0

당신이 각 문서를로드를 수정하고 다시 데이터베이스에 저장해야 새 속성을 추가 할 수 있습니다. 당신은 bulk update api을 사용하여 그것을 할 수 있었지만, 단지 100k에 대해 나는 그것이 여분의 번거 로움의 가치가 없다고 생각할 것입니다.

시간 초과가 발생하면 업데이트 스크립트와 추적을 게시하십시오.

+0

감사 ... 추가 된 코드 및 추적 .. – Pravin