------------------------------------> 본질적 차이
[ 데이터 구조 ]
RDB
- 행과 열로 이루어진 테이블
- 스키마 고정
NoSQL
- Key-Value, Document처럼 다양한 형태로 스키마 유연
[ 스케일링 ]
RDB
- Scale-UP
NoSQL
- Scale-Out
-------------------------------------> 전형적 경향
[ 트랜잭션 원칙 ]
RDB
- ACID
- CAP 원칙 준숙
NoSQL
- BASE
- CAP 원칙 준수
=> 반대인 경우도 있음, EX MongoDB 멀티 도큐먼트 트랜잭션
[ 자료구조 ]
RDB
- B+Tree
NoSQL
- LSM Tree
=> 아닌 경우도 있음, EX. MongoDB: B+Tree, Redis: 인메모리 해시/스크립

[ CAP 추가 설명 ]
- C(일관성)
- 이는 ACID의 C처럼 무결설 제약 조건이 아닌, **분산 시스템에서 모든 노드가 같은 시점에 같은 데이터를 보는가**를 의미
- P(분할 파티션)
- **네트워크 파티션이 발생해도 시스템이 계속 동작**하는 능력
- 스위치 고장, 케이블 끊김, 라우팅 문제 등등

[ MongoDB BSON ]
- MongoDB가 만든 바이너리 포맷
- JSON을 바이너리로 인코딩 + 추가 타입 지원 (Data, ObjetId, Binary, Decimal128 등)
- MongoDB의 저장 포맷이자 wire protocol(네트워크 전송 포맷)
BSON
wire protocol(네트워크 전송 포맷)
즉, 저장 및 전송에 사용되는 공통 인터페이스JSONB(JSON Binary)
파싱해서 바이너리 트리 구조로 저장JSON : 텍스트 그대로 저장 (입력 순서/공백 유지, 읽을 때마다 파싱)JSONB : 파싱된 바이너리 (공백/중복키 제거, 키 순서 변경, GIN 인덱스 가능)