-
NoSQL이란?
- Not Only SQL
- 비관계형 데이터 베이스
-
RDBMS vs NoSQL
| RDBMS | NoSQL |
---|
스키마 정의 | 필수 | 선택 |
ACID | 제공 | 완화 |
확장성 | 수직적 | 수평적 |
-
SQL과 NoSQL 용어 비교
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|
테이블 | 컬렉션 | 테이블 | 테이블 | 데이터 버킷 |
열 | 문서 | 항목 | 열 | 문서 |
컬럼 | 필드 | 속성 | 컬럼 | 필드 |
기본 키 | ObjectId | 기본 키 | 기본 키 | 문서 ID |
인덱스 | 인덱스 | 보조 인덱스 | 인덱스 | 인덱스 |
보기 | 보기 | 글로벌 보조 인덱스 | 구체화된 보기 | 보기 |
중첩된 테이블 또는 객체 | 포함 문서 | 맵 | 맵 | 맵 |
배열 | 배열 | 목록 | 목록 | 목록 |
-
NoSQL 종류
- Key-Value: 가장 유연한 유형이다. App이 값 필드에 저장된 모든 데이터를 제약없이 완벽하게 제어할수 있음. ex) Redis, Memcached, DynamoDB 등등
- Document: 비정형 대량 데이터를 저장, 검색, 관리하기 위함(JSON, XML 등등). ex) MongoDB
- Graph: 데이터를 노드 및 노드간의 연결을 보여주는 관계로 구성됨. 풍부하고 완전한 데이터 표현을 지원함. ACID 지원, 클러스터링에는 적합하지 않다. ex) SNS, 예약 시스템, 사기 감지
- Column-family: 테이블, 행, 열 형식으로 데이터를 저장 및 관리함. 열 형식을 사용하는 App에 광범위하게 배포되어 스키마 없는 데이터를 수집. ex) HBase, Cassandra, Hypertable
-
장점
- 유연성: 비교적 유연한 스키마를 제공해서 빠르고 반복적인 개발을 가능하게 해줌, 비정형 데이터에 이상적임
- 확장성: 고성능의 강력한 서버대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계(수평적)
- 고성능: 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 관계형 DB를 통해 유사한 기능을 충족하려고 할때보다 뛰어난 성능을 얻게 해줌.
- 고기능성: 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공함.
- 가용성: 여러 서버, 데이터 센터, 클라우드 리소스 전반의 데이터를 자동으로 복제함. 사용자의 위치와 상관없이 대기시간 최소화.
※ 참조