NoSQL이란?
1. 비관계형 데이터 모델
- 유연한 스키마 : RDBMS 처럼 정해진 스키마를 바탕으로 데이터를 입출력 할 때 형태가 정해지지 않는다.
- 다양한 데이터 모델 : JSON, XML 등의 데이터 형식으로 저장할 수 있다.
2. 확장성
- 수평 확장 : 샤딩을 통한 분산 저장을 하는 NoSQL 특성 상 성능 확장을 위해 단순히 서버 컴퓨터의 수를 늘리는 방식이 가능하다.
- 샤딩 : 데이터를 조각내 분산 저장하는 데이터 처리 기법
3. 고가용성 및 장애 복구
- 자동 복제 : 데이터 복제 및 분산 저장을 통해 높은 가용성과 장애 복구가 가능하다.
- 고가용성 : 시스템이 지속적으로 안정적인 동작을 할 수 있도록 보장하는 것
- CAP 이론에서 분산 시스템은 Consistency, Availability, Partition Tolerance 중 두 가지 특성을 만족 가능 -> NoSQL은 Consistency를 포기
4. 높은 성능
- Key-Value 에 기반한 DB이기 때문에 기본적으로 읽기와 쓰기에 빠른 속도를 가진다.
- 디스크 기반인 RDBMS와 달리 NoSQL은 메모리 기반이기 때문에 빠른 속도를 가질 수 있다.
NoSQL 종류
1. Key-Value DB
- Key, Value의 쌍인 배열 구조의 데이터가 저장되는 가장 기본적인 형태
- Key-Value Store는 단순한 조회 질의를 이용한 대량의 데이터 추출에 적합
- ex. Redis, Oracle NoSQL DB
2. Wide Column Store
- Big Table DB라고도 하며, Key Value에서 발전된 형태의 Clumn Family 데이터 모델로, 테이블 안에 테이블을 포함할 수 있으며, 데이터를 수직적으로 쌓아가는 방식
- Key-Value Store의 확장으로, Row Key와 Column Name의 조합으로 값을 저장
- ex. Hbase, Cassandra, GoogleBigTable, Vertica
3. Document DB
- Key Value 에서 확장된 형태로 Document라는 구조화된 데이터 타입(JSON, XML)인 Collection 데이터 모델
- Document DB는 내부 구조에 의존하여 데이터를 처리하며, 추가 최적화를 위해 메타 데이터 추출을 사용
- ex. MongoDB, CouchDB, Riak, Azure Cosmos DB
4. Graph DB
- Nodes, Relationship 데이터 모델
- 데이터를 그래프 구조로 저장하며, 노드와 엣지를 사용하여 데이터 간의 관계를 표현
- 그래프 데이터베이스는 연결된 데이터 간의 관계 분석 및 탐색에 적합
- ex. Sones, AllegroGraph, neo4j, BlazeGraph, Orient DB
NoSQL 장단점
1. 장점
- 확장성
- NoSQL 데이터베이스는 수평적 확장을 지원하여, 데이터베이스의 용량 증가 용이
- 클라우드 환경에서 NoSQL 데이터베이스는 추가 서버를 쉽게 추가하여 확장 가능
- 가용성
- NoSQL 데이터베이스는 분산 아키텍처를 사용하여, 일부 서버가 오프라인 상태가 되어도 데이터베이스의 나머지 부분 계속 작동 가능
- 고가용성 기능을 통해 데이터베이스의 신뢰성 보장
- 고성능
- NoSQL 데이터베이스는 대량의 데이터를 빠르게 처리할 수 있으며, 실시간 응답이 필요한 애플리케이션에 적합
- 다양한 데이터 형식을 지원하여, 구조화되지 않은 데이터를 효율적으로 처리
- 유연성
- NoSQL 데이터베이스는 동적 스키마를 사용하여, 데이터 구조를 유연하게 변경
- 다양한 데이터 모델을 지원하여, 애플리케이션의 요구 사항에 맞게 데이터를 저장
- 비정형 데이터
- 설계 비용 감소
- 정의된 구조가 없어 정형화되지 않은 데이터
- ex. 동영상, 오디오 ,사진, 보고서, 문서 등
- 분산 시스템
- RDBMS에 비해 저렴한 비용으로 분산 처리 및 병렬 처리 가능
- 빅데이터 처리에 효율적
2. 단점
- 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능성
- 많은 인덱스를 쓰려면 충분한 추가 메모리가 필요하다.
- 데이터 일관성이 항상 보장되지 않는다.
- 최종적 일관성 지향
- 모든 업데이트가 시간이 지나면서 모든 노드에 전파되어 결과적으로 모든 노드가 일관된 상태가 되는 것을 보장하는 개념
- 특정 시간에는 데이터가 일관되지 않을 수도 있다.
- 가용성, 분할용인, 속도 를 위해 희생
NoSQL 사용 분야
- 실시간 빅데이터 처리
- Amazon
- DynamoDB : 전자 상거래 플랫폼 등을 위해 실시간 빅데이터 처리\
- 소셜 네트워크 서비스
- Instagram
- Cassandra : 대규모 데이터에 대한 빠른 쓰기와 확장성이 요구되는 피드 데이터, 시간에 따른 데이터 저장 등에 사용, 데이터 고가용성 및 장애 복구가 큰 장점