차이 요약

------------------------------------> 본질적 차이
[ 데이터 구조 ] 
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: 인메모리 해시/스크립

기본 비교

image.png

[ CAP 추가 설명 ]
- C(일관성)
	- 이는 ACID의 C처럼 무결설 제약 조건이 아닌, **분산 시스템에서 모든 노드가 같은 시점에 같은     데이터를 보는가**를 의미

- P(분할 파티션)
	- **네트워크 파티션이 발생해도 시스템이 계속 동작**하는 능력
		- 스위치 고장, 케이블 끊김, 라우팅 문제 등등

데이터 모델 차이

image.png

[ MongoDB BSON ]
- MongoDB가 만든 바이너리 포맷

- JSON을 바이너리로 인코딩 + 추가 타입 지원 (Data, ObjetId, Binary, Decimal128 등)

- MongoDB의 저장 포맷이자 wire protocol(네트워크 전송 포맷)

BSON vs JSONB

BSON

JSONB(JSON Binary)