NoSQL
초고용량 데이터 처리 등 성능에 특화된 목적을 위해, 비관계형 데이터 저장소에, 비구조적인 데이터를 저장하기 위한 분산 저장 시스템
기존 관계형 데이터 베이스 시스템의 주요 특성을 보장하는 ACID(Atomic, Consistencym IntegrityM Duarabity) 특성을 제공하지 않지만 뛰어난 확장성이나 성능 등의 특성을 갖는 수많은 비 관계형, 분핫ㄴ 데이터 베이스틀의 등장으로 보편적으로 사용됨
- Not Only SQL
- 단순히 기존 관계형 DBMS가 갖고 있는 특성 뿐만 아니라, 다른 특성들을 부가적으로 지원함
- 기존 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 샤용하고, 데이터의 저장 및 검색을 위한 특화된 매커니즘을 제공함
- 단순 검색 밎 추가 작업에 있어서 매우 최적화 된 키 값 저장 기법을 사용하여, 응답 속도나, 처리 효율 등에 있어서 매우 뛰어난 성능을 나타냄
기존 관계형 데이터 베이스와 NoSQL의 차이점
- 관계형 모델을 사용하지 않으며 테이블 간의 조인 기능 없음
- 직접 프로그래밍을 하는 등의 비SQL 인터페이스를 통한 데이터 액세스
- 대용량의 데이터 저장가능
- 분산형구조
- 대부분 여러 대의 데이터 베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
- 관계형 데이터 베이스에서는 지원하는 Data 처리 완결성(Transaction ACID 지원) 미보장
- 데이터의 스키마와 속성들을 다양하게 수용 및 동적 정의 (Schema-less)
- 데이터베이스의 중단 없는 서비스와 자동 복구 기능 지원
- 다수가 Open Source로 제공
- 확장성, 가용성, 높은 성능
NoSQL의 장점
- RDBMS에 비해 저렴한 비용으로 분산처리와 병렬 처리 가능
- 비정형 데이터 구조 설계로 설계비용 감소
- Big Data 처리에 효과적
- 가변적인 구조로 데이터 저장이 가능
- 데이터 모델의 유현한 변화가 가능
NoSQL의 단점
- 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
- 많은 인덱스를 사용하려면 충분한 메모리가 필요, 인덱스 구조가 메모리에 저장
- 데이터 일관성이 항상 보장되지 않음
NoSQL의 종류
Key Value DB
- key와 Value 의 쌍으로 데이터가 저장되는 가장 단순한 형태의 솔루션으로 Amazon의 Dynamo Paper에서 유래
Wide Columnar Store
- Bing Table DB라고도 하며 , Google의 BigTable Paper에서 유래
- Key Value 에서 발전된 형태의 Column Family데이터 모델을 샤용하고 있고, HBase, Cassandra, ScyllaDB 등이 있음
Document DB
- Lotus Notes에서 유래
- JSON, XML 과 같은 Collection 데이터 모델 구조를 채택하고 있음
- MongoDBM CoughDB가 해당
Graph DB
- Euler & Graph Theory에서 유래한 DB
- Nodes, Relationship, Key-Value 데이터 모델을 채용