
NoSQL
Not Only SQL의 약자로, 관계형 데이터베이스와 달리 유연한 스키마와 다양한 데이터 모델을 지원하는 데이터베이스 유형을 말한다. 주로 대용량 처리, 고속의 읽기/쓰기, 그리고 수평적 확장성에 중점을 둔 시스템에서 활용된다.
- NoSQL: 관계형 데이터베이스(RDBMS) 이외의 다른 데이터 저장 방식을 사용하는 데이터베이스를 지칭한다. MongoDB는 대표적인 문서형 NoSQL 데이터베이스로, JSON 형식의 문서를 데이터로 저장하고 관리한다.
- 유연한 스키마: 관계형 데이터베이스처럼 테이블 구조를 미리 정의하지 않아도 되며, 데이터 구조를 동적으로 변경할 수 있다.
- 수평적 확장성: 서버를 추가하여 데이터베이스 용량을 확장할 수 있어, 대규모 트래픽이나 데이터 처리에 적합하다.
- CAP 이론: 일관성(Consistency), 가용성(Availability), 파티션 히용성(Parilon Tolerance) 중 두 가지 특성만을 보장할 수 있다는 이론이 적용된다.
NoSQL 유형
- 키-값(Key-Value) 데이터베이스
- 구조: 키와 그에 해당하는 값으로 이루어져 있다.
- 사용 사례: 세션 관리, 캐시, 프로필 저장
- 예시: Redis, Amazon DynamoDB
- 문서 데이터베이스
- 구조:JSON, BSON XML 등의 형식으로 데이터를 저장하며, 복잡한 구조를 가질 수 있다.
- 사용 사례: 제품 카탈로그, 사용자 프로필, 콘텐츠 관리
- 예시: MongoDB Couchbase
- 열(Row) 데이터베이스
- 구조: 행(Row)과 여러 열(Column)로 이루어져 있으며, 특정 열 집합율 그룹화하여 관리한다.
- 사용 사례: loT 데이터 수집, 로그 데이터 분석
- 예시: Apache Cassandra, HBase
- 그래프 데이터베이스
- 구조: 노드(Node)와 엣지(Edge)로 데이터를 표현하며, 데이터 간의 관계를 저장하고 탐색하는 데 적합합니다.
- 사용 사례: 소셜 네트워크, 추천 시스템, 경로 탐색
- 예시: Neo4j, Amazon Neptune
장점
- 유연한 스키마: 데이터 구조가 고정되어 있지 않아 애플리케이션 요구사항에 따라 쉽게 변경할 수 있다.
- 수평적 확장: 데이터 증가에 따라 여러 서버에 분산하여 저장하고 처리할 수 있다.
- 높은 성능: 대용량의 데이터 읽기/쓰기 작업에서 뛰어난 성능을 제공한다.
- 다양한 데이터 유형 지원: 문서, 키-값, 그래프, 열 기반 등 다양한 데이터 구조를 지원하여 유연한 데이터 모델링이 가능하다.
단점
- 일관성 문제: 일부 NoSQL 데이터베이스는 완벽한 ACID 트랜잭션을 지원하지 않아 데이터 일관성에 대한 문제가 발생할 수 있다.
- 복잡한 쿼리 기능 부족: 관계형 데이터베이스만큼 복잡한 쿼리 기능을 제공하지 않는 경우가 많다.
- 표준화 부족: SQL과 달리 데이터베이스마다 사용하는 쿼리 언어나 기능이 다르기 때문에 학습 곡선이 높을 수 있다.
NoSQL을 사용하는 예시
- 소설 미디어 애플리케이션: 사용자가 생성한 콘텐츠, 피드, 댓글 동을 저장하고 처리하는 데 적합하다.
- 실시간 데이터 분석: 빠른 데이터 쓰기/읽기 성능이 필요한 로그 분석, 모니터링 시스템
- IoT 데이터 수집: 센서 데이터, 로그 데이터 동 대랑의 비정형 데이터를 처리하는 시스템
- 전자상거래 플랫폼: 제품 정보, 사용자 프로필, 장바구니 등을 저장하고 검색하는 시스템