Quick Comparison
relational SQL -> schema, joins, constraints, transactions가 중심
key-value -> key로 빠른 조회와 단순 value
document -> document 단위의 유연한 중첩 데이터
wide-column -> partition key 중심의 대규모 분산 접근
graph -> node와 edge traversal 중심NoSQL은 SQL을 절대 지원하지 않는 하나의 제품군이 아닙니다. 관계형이 아닌 여러 모델을 묶는 느슨한 이름이므로 제품의 consistency, transaction, query 계약을 각각 확인합니다.
모델에서 시작
사용자·주문·결제처럼 관계와 constraint가 중요하고 여러 조건으로 query한다면 관계형 모델이 자연스럽습니다. Session cache나 rate limit counter처럼 key로 직접 접근하고 짧은 수명이 중심이면 key-value store가 잘 맞을 수 있습니다.
Schema가 자주 바뀐다는 이유만으로 document database가 자동 정답은 아닙니다. Application이 읽는 shape, 중복 갱신 비용, indexing과 migration은 어느 모델에서도 존재합니다.
일관성과 확장
분산 database의 consistency와 availability는 network partition과 replication 정책에 따라 달라집니다. 제품 소개의 “eventual consistency” 또는 “strong consistency” 한 문장만 믿지 말고 read/write quorum, region, failure mode를 확인합니다.
자주 틀리는 점
- NoSQL이면 transaction이 없다고 단정하지 않습니다.
- SQL이면 scale-out이 불가능하다고 단정하지 않습니다.
- Cache를 source of truth로 사용할 때 eviction과 복구 정책을 빠뜨리지 않습니다.
- 여러 database를 함께 쓰면 데이터 동기화와 운영 복잡성이 증가합니다.
참고 링크
5 sources