내가 일하고있는 회사의 프로젝트/작업 추적기로 내부적으로 사용하기 위해 앱에 작품을 보유하고 있습니다. MongoDB atm에서 놀아 라. 나는 다음과 같은 의사 스키마를 염두에두고있다.Python + MongoDB 문서 버전 관리
task
_id
name
project
initial_notes
versions
number
versions
version_1
worker
status
date(if submitted)
review_notes(if rejected)
reply_on(if accepted/rejected)
(version_n)(if any)
내가 가지고있는 문제는 작업을 버전 관리하는 것이다. 나는 가능한 많은 방법을 읽었지 만, 나는 그 모든 것을 이해하는 데 부족합니다. 나는 here을 좋아하는 무언가를 읽고 정말 방법 mongoid처럼 않습니다 더 나은 차라리 그것을 가장 최신 버전 만 보여 싶습니다이
task
_id
versions
number_of_versions: 3
current_version
version_no: 3
worker: bob
status: accepted
old_versions
version
version_no: 2
worker: bob
같은이있을 것이다 그것의 versioning
생각입니다 특정 작업에 대한 세부 정보 페이지를 입력 할 때 특정 작업의 모든 버전을 표시하고 싶습니다. 이 구조가 작동할까요? 그렇다면 필요한 것을 얻기 위해 어떤 쿼리를 실행해야합니까?
미리 읽어 보시고 답해 주셔서 감사합니다. 상태 : 1 명 노동자 : 스미스 상태 : version_no 버전 을 거부
그래서 전체 배열을 검색하고 루프를 통해 가장 최근의 것을 결정하고 표시 하시겠습니까? 다른 스키마보다 이점이 있습니까? 첫 번째 버전에서는 db.task.findOne ({}, name : 1, ..., versions.current_version : 1) 많은 수의 작업을 수행 할 수 있습니까? db가 그렇게 크지는 않을 것이라는 점을 감안할 때 액세스 시간에는 아무런 문제가 없습니다. 그러나이 패턴을 더 큰 규모 (다른 응용 프로그램)에 적용해야 할 경우 향후 참조를 요청하고 있습니다. – pocorschi
모든 작업을 수행하려면 버전을 별도의 컬렉션에 보관해야합니다."sql-way"로 비슷하게 들릴지 모르지만 Mongo DB의 설명서에 권장됩니다. http://www.mongodb.org/display/DOCS/Schema+Design#SchemaDesign-UseCases –
버전은 5-6 범위 여야합니다. 최고. 아직도 내가 길이나 제안을 따라 가야하는지 잘 모르겠다. 거기에 미묘한 차이가 있지만 그것이 긍정적인지 부정인지 나는 볼 수 없다. – pocorschi