NoSQL
기술노트
🗃️ NoSQL
NoSQL은 "Not Only SQL"의 약자로, 전통적인 관계형 데이터베이스(RDBMS)와 다른 형태의 데이터 저장 및 관리 방식을 사용하는 모든 데이터베이스를 통칭하는 용어입니다. RDBMS의 엄격한 스키마와 관계 모델에서 벗어나, 대용량의 비정형 데이터를 더 유연하고 빠르게 처리하기 위해 등장했습니다.
🧐 NoSQL의 주요 특징
- 유연한 스키마 (Flexible Schema) : 정해진 스키마 없이, 각기 다른 구조의 데이터를 자유롭게 저장할 수 있습니다.
- 수평적 확장 (Horizontal Scaling / Scale-out) : 고성능의 단일 서버로 성능을 높이는(Scale-up) RDBMS와 달리, 여러 대의 일반 서버를 연결하여 시스템 전체의 성능과 용량을 확장하는 데 용이합니다.
- 다양한 데이터 모델 : 데이터의 특성에 맞춰 다양한 모델을 선택할 수 있습니다.
- 분산 시스템 : 대부분의 NoSQL 데이터베이스는 처음부터 데이터 복제, 분산 저장을 염두에 두고 설계되어 가용성과 확장성이 높습니다.
📚 NoSQL 데이터 모델의 종류
모델 종류 | 설명 | 대표 제품 |
---|---|---|
Key-Value | 가장 단순한 모델. 고유한 키(Key)에 하나의 값(Value)을 저장. | Redis, DynamoDB |
Document | JSON이나 XML과 유사한 문서(Document) 형태로 데이터를 저장. | MongoDB, Couchbase |
Column-Family | 행이 아닌 열(Column)을 기준으로 데이터를 저장. 대규모 데이터의 읽기/쓰기에 유리. | Cassandra, HBase |
Graph | 데이터와 그 관계를 노드(Node)와 엣지(Edge)로 표현. 소셜 네트워크, 추천 시스템에 적합. | Neo4j, ArangoDB |
💡 개발자 핵심 Point
- NoSQL은 대용량의 비정형 데이터를 빠르고 유연하게 처리하는 데 강점을 가집니다.
- 특히 실시간 로그 수집, 소셜 미디어 피드, IoT 데이터 등 스키마가 정해져 있지 않고 데이터 양이 급격하게 늘어날 수 있는 서비스에 적합합니다.
- RDBMS의 강점인 강한 데이터 일관성(Strong Consistency)이나 복잡한 트랜잭션을 지원하지 않는 경우가 많습니다. 대부분의 NoSQL은 '최종 일관성(Eventual Consistency)' 모델을 따릅니다.
- NoSQL은 RDBMS를 대체하는 기술이 아니라, 상호 보완적인 관계입니다. 서비스의 특징과 데이터의 성격에 맞춰 RDBMS와 NoSQL을 함께 사용하는 '폴리글랏 퍼시스턴스(Polyglot Persistence)' 전략이 일반적입니다.