Print
카테고리: [ NoSQL ]
조회수: 849

1. MongoDB의 특장점

DocumentDB vs RDBMS 예제 1: "전문 분야가 Trader인 사람들의 자동차와 사는 도시 이름은?" 문제의 해결 과정 비교

DocumentDB vs RDBMS 예제 2: 새로운 category 추가 과정 비교

 


2. MongoDB 용어 및 개념 정리

2.1. Document

1개 이상의 Field-Value Pair를 포함한 JSON 형식의 문서를 말한다. RDBMS 기준으로는 Row에 해당한다.

Field의 추가가 손쉬운 DocumentDB의 특성상, 여러 Table의 row를 동시에 지정한 것과 대응되는 Document도 존재할 수 있다. (DocumentDB vs RDBMS 예제 2 참조)

2.2. Field

Value를 저장하고 불러오는 Key의 역할을 한다. RDBMS에서의 Column과 대응된다. 

Value의 자료형은 다음 네가지가 있다: String, Number, Geo location, Array

Value 예시(자료형 ← 변수명):

2.3. Collection

여러 Document의 집합이다. RDBMS의 기준으로는 여러 Row의 집합인 Table과 비견할 수 있다.

2.4. Database

여러 Collection의 집합이다. RDBMS 기준으로도 Database이며, 여러 Table의 집합이라는 점에서 차이가 있다.

2.5. Index

Collection에 대한 Link를 말한다. RDBMS 기준으로도 Index이며, 링크 대상이 Row인 점에서 차이가 있다.(차후 설명)

2.6 Embedding

DocumentDB에서는 "같이 조회되는 데이터는 같은 Document에 저장하라"라는 원칙을 기반으로 데이터를 document로 묶는 방식을 말한다.

DocumentDB vs RDBMS 예제 2에서 "student"라는 이름의 새로운 카테고리가 발생하는 경우, DocumentDB에서는 같이 조회되는 데이터일 경우에는 같은 Document에 포함시키는 반면, RDBMS에서는 정규화하면 "student" Table을 두게 된다.

이 사례에서 Embedding된 Collection과 동일 내용의 Row를 얻기 위해서는 두 테이블을 JOIN해야 하므로, DocumentDB의 Embedding이 RDBMS의 JOIN과 대응된다.

RDBMS와 큰 차이가 있는 요소이다.

2.7. Database References

Document 내 Field의 개수가 100, 200 등 사이즈가 비대해지는 경우에는 비효율성이 초래될 수 있는데, 이 경우에는 중복되는 data를 서로 다른 Document로 분리한 후, 참조하게 만들 수 있다.

RDBMS에서 마치 Table간 Join하는 것과 유사하다. 

DB level Join과 Application level join 중에서 후자에 속한다.

2.8. $lookup

하나의 collection으로부터 특정 field 간의 조건을 이용하여 여러 collection을 join 할 수 있는 방법이다.

RDBMS의 left outer join과 대응된다.

DB level Join과 Application level join 중에서 전자에 속한다.

2.9. $graphLookup

서로 다른 collection(document), 또는 같은 collection(document) 내 서로 다른 field에 대해서 parent와 Child를 지정하면, 귀납적으로 탐색하여, 전체적인 Tree구조를 Output으로 내보내는 역할을 한다.

하나의 Table로부터 재귀적으로 특정 row를 찾는, Oracle DB의 Connect by 절과 유사한 개념이다.

2.10. Multi-Document ACID Transaction

하나의 collection 또는 여러 collection에 걸친 여러 document에 대하여 여러 단계의 read, write 기능이, 나누어질 수 없는 연산인 경우에 사용한다.(Atomicity)

마치 RDBMS의 Transaction이 전체 연산이 성공하거나 전체 연산이 실패하거나(Rollback)의 두 결과만 용납하는 것과 유사하다.

MongoDB 4.0, 4.2버전에서 신설, 업데이트된 기능으로써, 이전 버전에서 데이터의 정합성 확보가 어려웠던 단점을 개선하기 위한 기능이다.