문제

것 다음과 같은 실행 가능한 전략을 구현하기 위한 버전 관리(를 사용하여"예"으로 샘플 문서식):

하나의 원본 문서 형식 필드의 이름 example_original.

이후 변경 사항을 문서에 모든 유형 example_change 의 id 및 example_original 문서 핵심입니다.변경 또한 타임스탬프입니다.

한 doc 형 example_current 결과 example_original 모든 example_change"applied".새로운 example_change 문서는 것이 자동으로 적용됩니다.

을 찾는 특정 버전으로 이루어져 있을 것입에서 검색 example_original doc 및 적용 원하는 대로 변경(대부분이 특정 타임스탬프,그러나 그것은 또한 수 번호의 변경).

나도 언급해야한다는 내용의 경우를 포함 할 것이 제한된 수의 변화를 원래 있습니다.대부분의 업데이트로 구성됩니다 새로운 원본 문서입니다.이것은 현재 사용하는 사례가 될 것이 문제에 관심이 발생하는 경우 많은 변화가 참여했다.

어떤 장점과 단점은 당신이 접근법?

도움이 되었습니까?

해결책

첫 번째 걱정은 다음과 같습니다. 특정 버전을 "가져 오기"할 때 데이터베이스를 수정하지 않고 원본에 변경 사항을 적용 할 수 있습니까?

역사에서 무언가를 삭제해야합니까? 당신은 정말 확실합니까? 정말, 정말 확실합니까? 가지는 어때?

대체로 이것은 복잡한 전략처럼 보입니다. CouchDB에 대해 들었지만 결코 사용하지 않았다는 것을 명심하십시오. 나는 더 간단한 접근 방식을 찾기 위해 갈 것입니다.

  1. 문서를 만들 때 UUID를 할당합니다. 이름을 사용하지 마십시오. 그렇지 않으면 이름을 바꾸는 동안 문제가 발생합니다. "1"을 읽는 버전 필드를 추가하십시오. 동일한 UUID가있는 문서 목록이 포함 된 두 번째 문서를 작성하거나 첫 번째 문서에 "부모"포인터를 추가하십시오.

    문서 당 "히스토리 문서"를 사용하면 역사를 더 빠르게 탐색 할 수 있지만 부모 포인터는 더 "안전한"것입니다 (불법 구조를 쉽게 만들 수 없기 때문에).

  2. 새로운 개정판을 만들 때 UUID를 재사용하고 새롭고 고유 한 버전을 할당하십시오. 히스토리 문서 또는 부모 포인터를 업데이트하십시오.

이 전략은 구현하기가 매우 간단하며 나중에 모든 종류의 유연성을 허용합니다. 역사의 일부를 쉽게 지울 수 있고 이름 바꾸기는 간단하며 가지를 만들 수 있습니다.

다른 팁

CouchDB를 사용한 간단한 문서 버전

이 기사에 설명 된 첨부 파일 접근 방식은 버전 작성에 대한 대부분의 사람들의 요구 사항에 맞아야합니다.

이 문서의 비즈니스 상태, 특히 합법적 인 비즈니스 상태는 무엇입니까? V.3으로 제시된 문서가 실제로 문서의 버전 3이라는 것을 증명할 필요가 있기 때문에 귀하의 제안이 비즈니스 페르시티브에서 적절하지 않은 상황에서 일했습니다. 동적으로 델타를 적용하면 규정 준수 겨자가 줄어들지 않습니다.

당신이 말했듯이, 문서 AE에 대한 변경 사항이 드물다면 전체 문서 대신 델타를 저장하여 많은 디스크 공간을 저장하지 않을 것입니다. 전체 문서를 저장하면 모든 문서에 대한 검색 시간을 신뢰할 수있는 예측이 가능합니다. 또한 검색 프로세스의 복잡성을 줄입니다.

전략에 대한 버전 관리와 CouchDB 가지는 소형을 포함한 데이터베이스에 대한 문서 당신을 유지할 필요가 전체 역사입니다.당신은 여전히는 컴팩트 기타 데이터베이스가 있습니다.이 간단한 전략 오늘의 상자와 편집 분쟁해결 전략입니다.

을 삭제하는 문서 할 수 있는 작성하여 새로운 버전으로 내용이 없지만 삭제한 속성을 설정합니다.

가지를 수행 할 수 없기 때문에 이 방법의 버전 관리 메커니즘 제공하는 단 하나의 스레드할 수 있습니다.

지금에 대한 가능한 미래의 CouchDB:

  • 오늘의 각 버전을 보유하고 전체 문서의 사본이지만 하나 생각할 수 있는 최적화의 CouchDB 엔진할 수 있느 날 저장 델타.
  • 그것은 또한 가능한 미래에 CouchDB 제공하는 것이 API 을 방지하의 압축을 특정 문서 형식입니다.이 것이라 할 수 있도록 허용할 모든 문서에서 같은 데이터베이스입니다.이 될 것이 쉬운 패치를 CouchDB.
  • 이 전략은 사용을 관리의 문서를 가지지만의 특성을 고려하 CouchDB 문서 데이터베이스,이의 합리적인,아직 장기적인,가능성이다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top