SQL?
-데이터가 고정된 열과 행을 가지고 있는 테이블에 저장되는 관계형 데이터베이스와 상호 작용할 때 사용하는 것.
-관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
key-value가 하나의 묶음으로 저장되는 기본적인 패턴
속도가 빠르고, 분산 저장 시 용이
Key안에 (COLUMN, VALUE)형태의 COLUMN FAMILIES를 갖는다.
주로 SERVER CONFIG, SESSION CLUSTERING 등에 사용된다.
액세스 속도는 빠르지만 SCAN에 용이하지 않다.
행마다 키와 해당 값을 저장할 때마다 각각 다른값의 다른 수의 스키마를 가질 수 있다.
대량의 데이터 압축, 분산처리, 집계쿼리(SUM, COUNT, AVG ...) 및 쿼리 동작 속도 그리고 확장성이 뛰어난 것이 특징이다.
테이블의 스키마가 유동적, 즉 레코드마다 각각 다른 스키마를 가질 수 있다.
보통 XML, JSON과 같은 DOCUMENT를 이용해 레코드를 저장한다.
트리형 구조로 레코드를 저장하거나 검색하는데 효과적이다.
데이터를 노드(그림의 원)로 표현하며 노드 사이의 관계를 엣지(그림의 화살표)로 표현한다.
일반적으로 RDBMS보다 성능이 좋고 유연하며 유지보수에 용이하다.
Social networks, Network diagrams등에 사용할 수 있다.
분산형 구조는 일관성(Consistency), 가용성(Availability), 분산 허용(Partitioning Tolerance)의 3가지 특징을 가지고 있다.
CAP 이론은 이 중 2가지만 만족할 수 있다는 이론이다.
NoSQL은 대부분 이 CAP 이론을 따르고 있다.
일반적으로 RDBMS는 일관성과 가용성을 만족한다.
NoSQL은 가용성과 분산허용을 만족하는 제품군과 일관성과 분산허용을 만족하는 제품군으로 나눌 수 있다.
참고 사이트
https://www.mongodb.com/ko-kr/nosql-explained
https://code-lab1.tistory.com/53