Document
- an ordered set of keys with associated value
- RDB에서 Row와 비슷
{ "greeting" : "Hello World!"}
// value는 모든 타입 다 들어갈 수 있음(Embedded도 가능)
// key는 String만 (utf-8) & null Character 포함불가 & `.`, `$`은 예약어라 안됨
// Type Sensitive(대소문자 구분)
Collections
- group of documents
- RDB에서 Table과 비슷
Dynamic Schemas
- documents in single collection can be shaped different
- 만약 Dynamic Schemas가 지원된다면 왜 각자 다른 collection을 생성해 사용하는가?
- 한 번 쿼리를 날렸을 때 다양한 종류의 document가 리턴된다면 개발자가 분리해야하는 코드를 더 많이 작성해야함
- 하나의 다큐먼트에서 타입을 구별하는 쿼리를 날리는 것 보다 컬렉션을 분리해 사용하는게 더 빠름
- 데이터 그룹화를 통한 지역화 → 디스크 조회 최소
- 효율적인 인덱싱 가능
Naming
- utf-8
- no empty string
- prefix
system.
과 $
는 예약어
Subcollections
- blog 컬렉션에 posts 컬렌션이 들어갈 수 있음
Databases
- 여러개의 컬렉션을 묶어 하나의 데이터베이스를 구성하며 host 하나당 여러 데이터베이스를 만들 수 있다.