도큐먼트
도큐먼트 표현 방식은 맵, 해시, 딕셔너리와 같이 자연스럽게 표현하는 자료구조를 가집니다
키는 중복될 수 없고, 대소문자를 구별합니다
컬렉션
컬렉션은 도큐먼트의 모음입니다
컬렉션 - 테이블
도큐먼트 - 행
동적 스키마
컬렉션은 동적 스키마를 가집니다
하나의 컬렉션 내 도큐먼트들이 모두 다른 구조를 가질 수 있습니다
{ "greeting" : "Hello, world!", "views" : 3 }
{ "signoff" : "Good night, and good luck" }
애플리케이션 스키마는 기본적으로 필요하지는 않지만 정의하면 좋습니다
네이밍
컬렉션명에 몇 가지 제약 조건이 있습니다
- 빈 문자열 X
- \0 (null 문자) X
- system.으로 시작하는 이름은 시스템 컬렉션에서 사용하는 예약어라서 X
- 예약어 $를 포함할 수 없음
서브 컬렉션
.(마침표) 문자를 사용해 컬렉션을 체계화할 수 있습니다
예를 들어, blog.posts, blog.authors 라는 컬렉션을 만들 수 있습니다
하지만, blog 컬렉션과 자신 컬렉션과는 아무런 관계는 없습니다
(blog 컬렉션이 존재하지 않아도 됩니다)
<aside> 💡 서브컬렉션은 몽고DB의 데이터를 체계화하는 훌륭한 방법입니다
</aside>
데이터베이스
몽고DB는 데이터베이스에 컬렉션을 그룹 지어 놓습니다
한 애플리케이션의 데이터를 동일한 데이터베이스에 저장하는 것이 좋은 방식입니다
데이터베이스 이름에도 몇 가지 제약 조건이 있습니다
- 빈 문자열 x
- 데이터베이스 이름에는 \, /, ., ', ', *, <, >, :, |, ?, $, \0(null) 문자를 포함할 수 없습니다
- 대소문자를 구별합니다
- 이름은 최대 64바이트
admin
admin 데이터베이스는 인증과 권한 부여 역할을 합니다
local
단일 서버에 대한 데이터를 저장합니다
config
샤딩된 몽고DB 클러스터는 config 데이터베이스를 사용해 각 샤드의 정보를 저장합니다
ObjectIds
ObjectId는 "_id"의 기본 데이터형입니다
자동 증가하는 기본 키처럼 전통적인 것이 아닌 ObjectId를 사용하는 주요 이유는 몽고DB의 분산 특성 때문입니다
여러 서버에 걸쳐 자동으로 증가하는 기본 키를 동기화하는 작업은 어렵고 시간이 걸립니다
몽고DB는 분산 데이터베이스로 설계됐기 때문에 샤딩된 환경에서 고유 식별자를 생성하는 것이 매우 중요합니다
ObjectId는 12바이트 스토리지를 사용하며 24자리 16진수 문자열 표현이 가능합니다
ObjectId 12바이트에서 첫 4바이트는 타임스탬프입니다
타임스탬프는 그 다음 5바이트와 묶일 때 초 단위의 유일성을 제공합니다
_id 자동 생성
도큐먼트를 저장할 때, _id를 명시하지 않으면 자동으로 추가됩니다
'MongoDB' 카테고리의 다른 글
[MongoDB] Ch6 - 특수 인덱스와 컬렉션 유형 (0) | 2021.12.24 |
---|---|
[MongoDB] Ch5 - Indexing (인덱싱) (1) | 2021.12.24 |
[MongoDB] Ch4 - Query (쿼리) (0) | 2021.12.23 |
[MongoDB] Ch3 - 도큐먼트 생성, 갱신, 삭제 (0) | 2021.12.22 |
[MongoDB] Ch1 - 몽고DB 소개 (0) | 2021.12.22 |
댓글