-
[ MongoDB ] 몽고DB modelingTopic/Database 2022. 12. 31. 09:23반응형
몽고 DB에서의 모델링은 sql의 모델링과 다르다.
몽고 DB에서의 모델링은 2가지 방법을 가지고 있는데
Embedding 방법, Multiple-Collection 방법이 있다.
이 두 가지 방법은 일대일이나 일대다 관계냐에 따라 나뉜다.
- 일대일 관계
{ \_id: “joe”, name: “Joe Bookreader” } { street: “123 Fake Street”, city: “Faketon”, state: “MA”, zip: “12345” }
위와 같이 document끼리 일대일 관계인 경우
{ \_id: “joe”, name: “Joe bookreader”, address: { street: “0123 Fake Street”, city: “Faketon”, state: “MA”, zip: “12345” }
이렇게 embedding하는 모델링을 쓸 경우 가시성도 좋고 좀 더 효율적인 쿼리가 가능해진다.
- 일대다 관계
일대다 관계는 embedding 방식과 multiple collection 방식으로 나뉘게 된다.
일대일 관계의 경우 embedding 방식 사용 시 embedding된 데이터가 동적으로 계속 증
가하지 않기 때문에 document의 사이즈를 신경쓸 필요는 없다.
하지만 일대다 관계의 경우 embedding된 데이터의 크기가 계속 해서 증가할 수도 있고,
document의 사이즈 제한(16MB)을 넘는 문제가 발생할 수도 있다.
- embedding 방식
속도가 빨라 성능 issue를 줄일 수 있다.
slice를 통해 range 쿼리를 함으로써 paging처리에 용이
- multiple collection 방식
document의 사이즈가 많이 크다면 multiple collecion 방식을 추천
query의 다양성을 기대할 수 있다.
반응형'Topic > Database' 카테고리의 다른 글
[ Mongo DB ] buffering timed out after 10000ms" 에러 해결법 (0) 2023.03.04 [ MongoDB ] Document에서 중첩 객체의 속성을 제거하는 방법(객체 내 객체) (0) 2023.02.11 [ MongoDB ] 몽고cloud IP 등록하기 (ft. 연결 에러) (0) 2022.12.24 [ MongoDB ] mongoose 배열 값 추가, 삭제 (0) 2022.09.13 [ MongoDB ] 몽고DB 컬렉션 내 필드 전체에 update하는 방법 (0) 2022.09.01