-
MongoDB A to Z - NoSQL의 특징정보정리 2022. 1. 31. 12:21
해당 포스팅은 T아카데미 MongoDB 프로그래밍 강의를 보고 정리한 내용이다.
MongoDB는 Document store NoSQL 데이터베이스이다.
Document store: Key-Value store의 확장.
MongoDB는 JSON 형태로 데이터를 저장하며, Value는 다른 key-value 쌍이 될 수 있음
NoSQL의 특징
- NoSQL은 일반적인 서버 여러대를 연결하여 데이터를 저장 및 처리하는 구조를 가짐
- 분산형 구조를 통해 데이터를 여러 대의 서버에 분산해 저장하고, 분산 시 상호 복제하여 특정 서버에 장애가 발생했을 때에도 데이터 유실 및 서비스 중지가 없음
- NoSQL은 RDBMS와 다르게 테이블의 스키마가 유동적임
- ID로 사용되는 Key만 Type이 동일하고, Value는 각기 다른 형태로 나타날 수 있음
CAP 이론
분산 컴퓨팅 환경은 Consistency(일관성), Availability(가용성), Partitioning Tolerance(분산 허용) 3가지 특징을 가지고 있으며, 이중 2가지만 만족할 수 있다는 이론
- 일관성(Consistency) : 분산된 노드 중 어느 노드로 접근하더라도 데이터 값이 같아야 한다. (데이터 복제 중에 쿼리가 되는 일관성을 제공하지 않는 시스템의 경우 다른 데이터 값이 쿼리될 수 있다.)
- 가용성(Availability) : 클러스터링된 노드 중 하나 이상의 노드가 실패(Fail)라도 정상적으로 요청을 처리할 수 있는 기능을 제공한다.
- 분산 허용(Partition Tolerance): 클러스터링 노드 간에 통신하는 네트워크가 장애가 나더라도 정상적으로 서비스를 수행한다. 노드 간 물리적으로 전혀 다른 네트워크공간에 위치도 가능하다.
기존 RDBMS는 일관성과 가용성을 선택하는 반면, NoSQL은 가용성과 분산 허용 또는 일관성과 분산 허용을 만족하는 경우로 나뉨
분산 허용을 허용함으로써, 서비스 동작 상태에서도 시스템의 확장이 가능함
NoSQL 종류
- Key/Value Store
- 중복되지 않는 Unique Key에 하나의 Value를 가지고 있는 형태
- Redis, Memcached 등
- Ordered Key/Value Store
- 데이터가 내부적으로 Key를 순서로 Sorting되어 저장됨
- Key 안에 (Column:value) 조합으로 된 여러개의 필드를 가지는 구조
- Hbase, Cassandra 등
- Document Key/Value Store
- Document라는 구조화된 데이터 타입(JSON, XML, YAML) 등 사용
- 복잡한 계층구조 표현 가능
- MongoDB, CouchDB 등
NoSQL 장/단점
어플리케이션의 특징적인 데이터 접근 패턴에 따라 모델링
어플리케이션의 필요한 쿼리와 성능을 정의한 이후, 요구 사항에 부합하도록 데이터 모델을 구성
관계형 데이터베이스 모델링보다 더 깊은 데이터 구조 및 접근 알고리즘에 대한 이해가 필요
NoSQL 쿼리가 실제 몇개의 물리 노드에 걸쳐서 수행되는지에 대한 이해가 있어야 제대로된 쿼리 디자인이 가능함
NoSQL 디자인은 DB와 어플리케이션 뿐만 아니라 인프라(네트워크, 디스크)에 대한 디자인을 함께 해야 함
대부분의 NoSQL DB는 인증이나 인가 체계가 없어 보안에 취약하기 때문에 별도의 보안 체계를 마련해야 함 (방화벽, Reverse proxy 등)
RDBMS의 장점
- 범용적이며 고성능
- 대부분의 경우에 관계형 데이터베이스를 사용하는 것이 안정적
- 데이터의 일관성을 보증할 수 있음(트랜젝션)
- 정규화를 전제로 하고 있어 업데이트 비용이 적다
- 데이터베이스 설계 시 이미 불필요한 중복이 삭제됨
- 복잡한 형태의 쿼리도 가능(Join 등)
RBDMS의 단점
- 대량의 데이터 입력 처리 제약
- 테이블의 인덱스 생성 및 스키마 변경 제약
- 개발/운영 단계에서 column을 확정하기 어려운 경우 사용이 힘듦
NoSQL의 장점
- 특정 용도에 특화됨
- 데이터 분산에 용이
- 데이터의 join이 불가능
- 데이터 모델 자체가 독립적으로 설계되어 데이터를 분산하는것이 용이
- 데이터 캐시, 배열 형식의 데이터 고속 처리, 모든 데이터를 저장하고 싶은 경우 적합
NoSQL의 단점
- 각 솔루션의 특징을 이해할 필요가 있음
- 특색을 가진 새로운 NoSQL DB가 계속 출시되는 중
'정보정리' 카테고리의 다른 글
MongoDB A to Z - MongoDB 기본 개념 (0) 2022.01.31 MongoDB A to Z - NoSQL 데이터 모델링 기법 (0) 2022.01.31 Container Runtime Interface(CRI) (0) 2021.12.13 suffix tree를 통한 string pattern matching (0) 2020.04.12 Thread 별 event pattern을 통한 전체 event pattern 도출 (0) 2020.04.12