RDBMS vs NoSQL :
。일관성 / 무결성을 중시하는 경우 rdbms를 사용하고, 대규모 비정형 데이터 처리 시 NoSQL 사용
NoSQL ( Not only SQL DB ) : redis , elastic search , Mongo DB
。Schema 없이 다양한 Data Type의 데이터를 처리하는 비관계형 데이터베이스 시스템
。ACID가 아닌 BASE 원칙을 중시하여 일관성보다 속도 / 가용성을 중시
▶ 대용량 비정형 데이터 처리에 적합
。Amazon DynamoDB, Amazon MemoryDB 등이 존재
NoSQL 특징
- 대부분
ANSI로 통일된 SQL을 사용하지 않으므로 RDBMS와 달리 각 NoSQL DB에 따라 Data Access 구문의 차이 존재
。Query가 복잡하지 않으나 간단한 처리만 가능
Schema의 개념이 없으므로 정해진 테이블 구조 없이 데이터의 저장이 가능하며 유연성이 좋음
수평확장이 용이하여 확장성이 좋으므로 클라우드 환경에 적합
。RDBMS와는 달리 여러 DB서버로 수평 확장 및 분산하여 저장이 가능
▶ 클라우드 환경에서 다량의 데이터를 실시간 처리해야하며 여러 서버에 데이터를 분산하여 저장해야하므로 RDBMS는 수평확장에 불리하므로 NoSQL을 사용
- 다양한
Data Type( ex. JSON, Key-Value )등 의 데이터 모델을 지원
。 API를 사용해 NoSQL에 접근하여 저장, 검색 시 데이터변환의 필요성이 감소.
BASE 원칙
。ACID에 비해 훨씬 유연한 원칙
▶ RDBMS에 경우 ACID에 의해 Commit시 즉각적으로 확정이 되나, NoSQL의 경우 BASE에 따라서 업데이트를 하더라도 즉각 반영되지않고 여유롭게 확정
B : Basically Available :
。 가용성을 중심으로 처리하는 방식으로 언제나 접근 가능한 상태로 유지
▶ 데이터를 다수 저장장치에 저장 및 접근가능하도록 유지
A , S : Soft state :
。DB 상태 를 고정되지않고 느슨하고 유연하게 원하는 상태로 수렴하도록 설정
▶ 잠깐의 불일치 상태가 발생할 수 있음.
E : Eventually Consistent :
。일관성이 바로 확보되지는 않아도 시간이 지나면 결국 일관된 상태로 수렴
NoSQL 데이터 별 데이터 모델
Key-Value type :
。Key-Value 형태로 하나의 키에 하나의 Value로 데이터를 저장하는 구조
▶ 가장 단순하고 빠름

ex) Redis, Amazon DynamoDB
Document type
。JSON Format으로 문서를 저장하는 구조
▶ Key-Value를 확장한 형태로서 하나의 키에 문서를 저장

ex) Mongo DB, Couch DB, Firestore
Column type
。컬럼 단위로 저장하는 구조
▶ 하나의 키에 여러개의 <컬럼이름, 컬럼값>으로 구성된 데이터를 저장
。 분석 및 통계에 강점
ex ) HBase, Cassandra
Graph type

。데이터를 노드로서 노드 관계를 정의하여 저장
▶ SNS, 추천 시스템에 유용
ex ) Neo4j, ArangoDB