2014-01-07 4 views
0

저는 MongoDB에 완전히 익숙하지 않습니다. 그리고 JDO를 불가지론적인 레이어로 사용하여 (많은 프로젝트에서)베이스 퍼시스턴스 코드를 옮기는 것을 보았습니다. 그래서 저는 기본 모델 단위로 콩을 사용하는 것을 좋아하는 자바 개발자의 관점에서이 질문을하고 있습니다.MongoDB는 동일한 데이터로 서브 문서를 복제합니까?

내 질문은 서브 문서에 관한 것이고 그것들이 독립적으로 존재하는지 또는 MongoDB에 의해 내부적으로 통합되었는지에 관한 질문입니다. 즉, 내가 도메인이 같은 구조가 있다면 :

가구 - 내가 여러 사람있을 것입니다 있지만, 각 사람이 동일한 주소를했을 가구를위한 문서를 가지고 있다면 사람

Person 
- name 
- address 

Address 
- street 
- postcode 

의 수집.

각 주소는 MongoDB 내에서 별개의 별개의 엔티티가 될 수 있습니까? (동일한 '클래스'이고 동일한 값을 가졌지 만) Mongo는 동일한 엔티티를 참조하고 내부적으로 UID를 내부적으로 저장한다는 것을 식별합니다. 각 주소? 더 중요한

. 내가 한 주소에 대한 우편 번호를 업데이트하는 경우가 가정용의 주소 하위 문서의 모든 구성원이 그 변경 사항을 반영 것을 의미 하는가?

않는 경우 보인다 다음 관계형 영역에 길을 잃지 있어요하지만, 그러한 참조가 없으면 끔찍한 비 효율성이 발생할 수 있습니다.

답변

0

Mongo는 해당 하위 문서를 중복 제거하지 않습니다. 해당 데이터를 정규화하려면 해당 주소를 다른 콜렉션 (이상적)에 저장하고 엔클루드 문서를 저장할 때 DBRef를 해당 문서에 저장해야합니다. morphia 또는 spring-data와 같은 것을 사용하면 참조를 관리하는 데 도움이됩니다.

1

JDO를 통해 데이터를 지속하는 경우 Person + Address를 세대로 포함 시키거나 개별 객체로 유지할 수 있습니다 (RDBMS와 마찬가지로). 임베디드되지 않은 것으로 저장하는 경우 동일한 사람의 사본이 여러 개 있는지 또는 여러 사람이 언급 한 사람이 한 명인지 여부에 달려 있습니다. 내장으로 저장하면 내장되어 있으므로 가정용의 일부이므로 정보가 중복됩니다.

관련 문제