2012-12-21 1 views
0

특정 문서가있는 경우 type 내 응용 프로그램에서 마지막 문서의 단일 필드 만 선택하는 단일 쿼리가 있습니다. 이러한 문서를 날짜별로 매핑하므로 내림차순 쿼리를 1로 제한하면 확실히 트릭을 수행해야합니다. 내가 궁금해하는 문제는이 뷰가이 유형의 모든 문서를 캐시하여 분명히 중복 된 공간을 차지한다는 것입니다.공간 효율적인보기

그래서 제 질문은 다음과 같습니다

  1. 겠습니까 나를 위해 어떤 공간을 절약 또는 뷰가 여전히 관련된 모든 문서를 저장해야이보기에, A는 하나의 마지막 문서로 줄일 기능을 감소 추가 ?
  2. 그렇지 않은 경우 다른 공간 효율적인 전략이 있습니까?

답변

2
  1. 번호는 맵 기능의 결과로 여전히 낭비됩니다.
  2. 현재 내 마음에 몇 가지 :
    • 데이터베이스의 디자인을 변경하십시오. 문서의 ID에 유형 및 날짜가 포함되어 있으면지도없이 검색을 수행 할 수 있습니다./http://127.0.0.1:5984/YOURDB/_all_docs?start_key="<TYPE>_<CURRENT_TIME>"&descending=true&limit=1과 같이 줄일 수 있습니다.
    • map 최대한 활용하십시오. 아무 값도 내 보내지 마라.지도는 키와 문서의 ID/ver를 저장한다. 쿼리 할 때 include_doc을 사용하여 문서를 검색하십시오.
    • 문서가 마지막 후보가됨을 나타내는 추가 필드를 추가하십시오. 필드가있는 후보자 만 매핑하십시오. 주기적으로 정리를 실행하여 최신 문서를 제외한 모든 문서에서 필드를 제거하십시오. 참고 : 마지막으로 추가 한 문서를 삭제할 때 어려울 수 있습니다.
나를 위해 CouchDB를의 아이디어 것 같다

: 쿼리를 캐싱하여 "폐기물"공간이므로 데이터가 자주에 변경되지 않은 경우 그들은 신속하게 답변 할 수 있습니다로. 아마도 공간 낭비에 너무 많은 관심이 있다면 CouchDB가 아닌 귀하의 경우에 대한 답변을 원하십니까?

+0

아주 좋은 대답입니다. 고맙습니다! 클라우드를 클라우드에있는 db-hoster로 사용하고 있기 때문에 저는 약간의 소파에 묶여 있습니다. 어떤 NoSQL 대안을 제안 하시겠습니까? 이 경우 Cloudant에 대한 대체 서비스에 대한 제안은 더욱 좋습니다. –

+1

'type'과'date' 필드로 인덱스를 만들지 않으면 원하는 쿼리를 선택하는 DB 시스템이 매우 느릴 것입니다. 'type'을 필터링하는 맵을 고려해 키 날짜와 값을 인덱스로 반환합니다. 다른 DB보다 공간 효율성이 더 좋습니다. 소파의 문제는 효율적이지 않다는 생각을하는 것이 어렵다는 것입니다. 조인이없고, 색인 없이는 검색하지 않습니다. –

+0

나는 여러분의 모든 제안이 매우 재치가 좋습니다. 또 다른 질문 : ' _ '기반 쿼리의 ID가 가장 느릴 것인가? 그것을 찾을 때까지 모든 문서 ID를 거쳐야하지 않겠습니까? –

1

내 couchdb 설정에는 데이터 및 색인이 특수 RAID 드라이브에 있습니다. 지도는 자바 스크립트와지도보다 8 배 빠름 빠르게 찾을 수있는 erlang으로 작성됩니다. 물론 null을 반환합니다. 키를 작게 유지하고 여러 디자인 문서에서 내 의견을 깨고 데이터를 매우 평평하게 유지하여 직렬화 성능을 향상시킵니다.

+0

좋은 제안. 고맙습니다 –