1. Document Database
- 문서는 문서 데이터베이스의 주요 개념입니다.
- 문서 데이터베이스는 문서를 저장하고 조회합니다.
- 문서는 XML, JSON, BSON 등의 형식으로 저장됩니다.
- 문서는 맵, 컬렉션, 스칼라 값을 가질 수 있습니다.
- 저장된 문서는 서로 비슷하지만 구조가 완전히 같지 않아도 됩니다.
- 문서 데이터베이스는 키-값 저장소의 값 부분에서 문서를 저장한다고 볼 수 있습니다.
- 즉 문서 데이터베이스는 값을 검사할 수 있는 키-값 저장소라고 볼 수 있습니다.
2. RDB와 비교
- RDB의 대표로 Oracle을, Document Database의 대표로 MongoDB를 들어 비교해보겠습니다.
| Oracle (RDB) | MongoDB (Document DB) |
|---|
| 데이터베이스 인스턴스 | MongoDB 인스턴스 |
| 스키마 | 데이터베이스 |
| 테이블 | 컬렉션 |
| 로우(행) | 문서 |
| rowid | _id |
| 조인 | DBRef |
- 각 MongoDB 인스턴스는 여러 개의 데이터베이스를 가지며, 각 데이터베이스는 여러 개의 컬렉션을 가질 수 있습니다.
- 문서를 저장할 때 어느 데이터베이스의 어느 컬렉션에 속할지 지정해야 합니다.
3. 문서
- 문서 데이터베이스에서는 컬렉션에 구조가 다른 문서를 저장할 수 있습니다.
- 테이블의 모든 행이 같은 스키마를 따라야하는 관계형 데이터베이스와는 다릅니다.
4. 일관성
- 몽고 디비는 데이터베이스에서 복제본 집합을 사용해 일관성 수준을 설정합니다.
- 쓰기가 모든 슬레이브에 복제될 때까지 기다릴지 아니면 주어신 수의 슬레이브에 복제되면 바로 응답할지 설정할 수 있습니다.
- 각 쓰기 명령마다 성공을 반환하기 전에 쓰기를 전파해야 하는 서버 수를 설정할 수 있습니다.
db.runCommand({ getlasterror: 1, w: "majority"}) 같은 명령어로 일관성이 어느 정도로 강해야 하는지 설정할 수 있습니다.
- 예를 들면, 서버가 한 대 있고 w를 majority로 설정하면, 노드가 하나뿐이므로 쓰기는 즉시 리턴됩니다.
- 만약 복제본 집합에 노드가 세 개 있고 w를 majority로 설정하면, 최소 두 개 노드에서 쓰기가 완료되어야 성공으로 보고됩니다.
- 일관성을 강화하기 위해 w를 높일 수 있습니다.
- 그러나 쓰기가 더 많은 노드에서 완료되어야 하므로 쓰기 성능이 저하됩니다.
5 트랜잭션