데이터량이 한정되었을때는 관계형데이터베이스를 가지고 처리가 가능했다.
데이터 양이 점점 많아지고 복잡도가 증가함에 따라 관계형데이터베이스가 처리할 수 있는 한계가 있었다.
더 많은 데이터 양을 처리하기 위해 NoSQL이 떠올랐다.
NoSQL(Not Only SQL)
특징
- 전통적인 관계형 데이터베이스보다 덜 제한적
- 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘 제공
- 디자인의 단순화, 수평적 확장성 추구
- 단순 검색 및 추가 작업을 위한 매우 최적화된 키값 저장 공간으로, Latency와 throughput관련하여 상당한 성능 이익 제공
- 빅데이터와 실시간 웹 애플리케이션용
NoSQL의 장점
- 확장성 : NoSQL 데이터베이스는 수평적 확장에 매우 강력하다. 더 많은 서버를 추가함으로써 쉽게 데이터 처리 용량을 늘릴 수 있다. 대규모 분산 시스템이나 클라우드 환경에 유용하다.
- 유연한 스키마 : NoSQL 데이터베이스는 스키마를 미리 정의할 필요가 없거나 유연하게 정의할 수 있다. 이에따라 빠르게 변화하는 데이터 요구사항이나 다양한 데이터 형태의 데이터를 다룰 때 개발 속도를 높이고 유지보수비용을 줄일 수 있다.
- 고성능 : NoSQL은 대량의 읽기/쓰기 등에서 매우 빠른 성능을 제공한다.
- 다양한 데이터 모델 : NoSQL은 키-값, 문서, 컬럼형, 그래프 등 다양한 데이터 모델을 제공하여 특정 문제 해결에 최적화된 데이터베이스를 선택할 수 있도록 한다.
- 빅 데이터 처리 : 대규모 데이터를 처리하고 분석하는데 적합하다.
NoSQL의 단점
- 일관성 부족 : NoSQL은 ACID중 Consistency를 완화하여 성능과 가용성을 우선시 하기 때문에 데이터의 즉각적인 일관성이 중요한 실무에서는 적합하지 않다.
- 복잡한 쿼리 : RDBMS의 SQL처럼 JOIN 및 다중 조인과 같은 조건 검색에 약하다.
- 데이터 중복 : 조인 대신 데이터 중복을 통해 성능을 향상시키는 경우가 많다.
- 도구 부족 : NoSQL은 RDBMS보다 상대적으로 역사가 짧아 생태계가 잘 이루어지지 않았다.
- 데이터 모델링의 어려움 : 유연한 스키마가 장점이지만, 명확한 가이드라인 없이 모델링할 경우 일관성을 유지하거나 효율적인 쿼리를 작성하기 어려워진다.
MongoDB
- 데이터를 JSON의 이진 버전인 BSON을 사용하여 문서에 데이터를 저장한다.
- 웹 응용프로그램과 인터넷 기반 서비스를 위해 설계한다.
- 읽기/쓰기 효율을 높임과 동시에 자동으로 장애조치를 수행하고, 확장이 쉽다.
몽고디비 : 도큐먼트 데이터베이스
NoSQL vs RDBMS
- 둘간의 차이점
| 특징 | RDBMS (관계형 데이터베이스) |
NoSQL (비관계형 데이터베이스)
|
| 데이터 모델 | 테이블 기반 (행과 열), 정규화된 데이터 |
키-값, 문서, 칼럼형, 그래프 등 다양한 모델, 비정형/반정형 데이터
|
| 스키마 | 엄격한 스키마 (데이터 저장 전 스키마 정의 필수) |
유연한 스키마 (스키마가 없거나 변경이 자유로움)
|
| 확장성 | 주로 수직적 확장 (더 강력한 서버), 수평적 확장은 복잡하고 어려움 |
주로 수평적 확장 (서버 추가로 용량 증대 용이)
|
| ACID 속성 | 강력한 ACID(원자성, 일관성, 고립성, 지속성) 보장 |
BASE(Basically Available, Soft state, Eventually consistent) 모델, 일관성 완화
|
| 쿼리 언어 | SQL (Structured Query Language) |
각 데이터베이스마다 다른 쿼리 API 또는 언어 (예: MongoDB의 MQL)
|
| 데이터 관계 | 조인(JOIN)을 통한 복잡한 관계 표현 및 관리 용이 |
조인 기능이 없거나 제한적, 데이터 중복을 통해 관계 표현
|
| 성능 | 복잡한 쿼리 및 트랜잭션 처리에서 강점 |
대량의 읽기/쓰기, 특정 유형의 데이터 액세스에서 고성능
|
| 개발 복잡성 | 스키마 변경 시 영향이 크고, 초기 설계에 시간 소요 |
스키마 변경이 자유로워 빠른 개발 가능, 데이터 모델링 유연성
|
| 주요 사용처 | 금융 시스템, ERP, CRM 등 데이터 일관성이 중요한 애플리케이션 |
빅 데이터, 실시간 웹 서비스, IoT, 모바일 앱, 콘텐츠 관리 등
|
| 예시 | MySQL, PostgreSQL, Oracle, SQL Server |
MongoDB, Cassandra, Redis, Neo4j
|
NoSQL은 확장성, 유연성, 성능이 중요하며, 대량의 비정형 데이터를 빠르게 처리하고 스키마 변경이 잦은 서비스에 유리하다.
'공부 > DB' 카테고리의 다른 글
| 몽고DB에 문서 대량 삽입하기 (4) | 2025.08.06 |
|---|---|
| MongoDB 4장(MongoDB 모델링) (2) | 2025.08.01 |
| MongoDB 3장 (4) | 2025.07.31 |
| MongoDB 1장 (1) | 2025.07.28 |