2013-02-19 2 views
0

MongoDB 데이터 모델링을 배우기 위해 this 비디오를 보았습니다.MongoDB의 임베디드 배열 배열과 정규화 된 스타일의 차이점

  1. 포함 된 배열/배열 키 : 많은 관계로 하나에서 스피커에 대한 세 가지 다른 종류의 이야기 특정 문서에서 당신은 배열 될 필드를 것이라고 참조 다른 문서 (예를 들어, blog_posts 속성은 사용자가 작성한 블로그 게시물의 모든 ID를 저장합니다.
  2. 임베디드 트리 : 다른 것들에 대한 참조가있는 배열을 갖는 것이 아니라 문서에 문서가 완전히 삽입되어 있습니다.
  3. 정규화 : 서로간에 두 개의 모음 및 참조가있는 것은?

그럼 임베디드 어레이 키와 정규화 된 종류의 차이점은 무엇입니까? 임베디드 배열도 두 개의 다른 컬렉션을 참조하지 않습니까?

답변

1

차이점은 간단합니다. (불행하게도 그 비디오에서 혼란스럽게 나타납니다.)

블로그 게시물 (Post) 및 의견 (Comment) 모델링을 상상해보십시오.

  1. 포함 된 배열은 다음 Post 문서는 Comment 모든 문서의 모든 ID의 배열을 포함하고 있습니다. Comment은 별도의 문서 (및/또는 컬렉션)에 저장됩니다.
  2. 트리 : Post 문서에 포함 된 Comment s가 들어 있습니다. 고유 한. 서 또는 자체 콜렉션에 저장되지 않습니다. 이것이 잘 수행되는 동안, BSON 문서의 크기 제한은 16MB이기 때문에 작업하기가 더 어려워 질 수 있습니다.
  3. 정규화 : Post 문서 및 Comment은 별도로 저장됩니다. 그러나이 경우 Comment 문서에는 Post에 대한 외래 키와 같은 참조가 있습니다. 예를 들어 postId이라는 필드가있을 수 있습니다. Comment과 관련된 Post을 참조합니다. 이 패턴은 Post 문서에 Comments의 목록이 없기 때문에 # 1과 다릅니다. 따라서이 옵션은 주석의 수를 본질적으로 제한되지 않거나 무제한으로 만들지 만 특정 색인을 만들지 않으면 주석을보다 효율적으로 검색 할 수 있습니다 (예 : postId, commentDate이 유용 할 수 있음).