본문 바로가기
Q&A2018년 9월 15일1분 읽기

MongoDB에서 관계형 데이터 어떻게 처리하나요

개
개발자준호
조회 1915댓글 4
MongoDB를 쓰고 있는데, 사용자와 게시글 같은 관계형 데이터를 어떻게 처리해야 하나요? RDB처럼 JOIN이 되나요? 아니면 임베딩을 해야 하나요? 데이터 구조 설계가 너무 어렵습니다.

댓글 4

김김영삼8년 전
MongoDB에서 관계형 데이터 처리 방법은 크게 두 가지입니다:

**1. 임베딩 (Embedding)**
```json
{ "user": "홍길동", "posts": [{"title": "글1"}, {"title": "글2"}] }
```
함께 조회하는 데이터에 적합. 문서 크기 16MB 제한 주의.

**2. 참조 (Reference)**
```json
{ "userId": ObjectId("..."), "title": "글1" }
```
$lookup으로 JOIN 가능 (3.2+). 하지만 RDB JOIN보다 느립니다.

원칙: **함께 읽는 데이터는 함께 저장한다.**
개개발자준호김영삼8년 전
그러면 댓글처럼 많이 늘어날 수 있는 데이터는 참조가 낫겠네요?
김김영삼김영삼8년 전
네 맞습니다. 무한히 늘어날 수 있는 배열은 임베딩하면 안 됩니다. 별도 컬렉션으로 분리하세요.
데데이터사이언스현8년 전
참고로 관계형 데이터가 많다면 처음부터 PostgreSQL 같은 RDB를 쓰는 게 나을 수 있습니다. MongoDB는 비정형 데이터에 강점이 있으니까요.
Ctrl+Enter로 등록