CS
[DB] NoSQL이란?
그레고리력
2021. 3. 14. 20:00
NoSQL이란?
- No SQL, Not Only SQL, Non-Relational Operational Database SQL 등의 의견이 있지만, Not Only SQL이라는 의견이 대세이다.
- 즉 SQL만을 사용하지 않는 데이터베이스 관리 시스템을 말한다.
- 초고용량 데이터 처리 등 성능에 특화된 목적을 위해, 비관계형 데이터 저장소에, 비구조적인 데이터를 저장하기 위한 분산 저장 시스템
NoSQL 특징
- 대부분이 오픈소스고 관계형 모델을 사용하지 않는 스키마 없이 동작
- 데이터와 트래픽의 양이 기하급수적으로 증가함에 따라 한 대에서 실행되도록 설계된 관계형 데이터베이스의 단점이 부각
- NoSQL은 데이터의 일관성을 약간 포기한 대신 여러 대로 대량의 데이터와 컴퓨팅 부하를 처리하는 것이 가능
- 기존의 관계형 데이터베이스 보다 더 융통성 있는 데이터 모델을 사용하고, 데이터의 저장 및 검색을 위한 특화된 매커니즘을 제공
- 관계형 모델을 사용하지 않으며 테이블간의 조인 기능 없음
- 대부분 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
NoSQL 종류
- Key Value DB
- Key와 Value의 쌍으로 데이터가 저장되는 가장 단순한 형태의 솔루션
- 수평적 확장이 용이
- 키는 값에 접근하기 위한 용도, 값은 어떠한 형태의 데이터라도 담을 수 있음
- 사용자의 프로필 정보, 웹 서버 클러스터를 위한 세션 정보, 장바구니 정보, URL 단축 정보 저장 등에 사용
- Column-Family DB
- Key Value 에서 발전된 형태의 Column Family 데이터 모델 사용
- SQL이 테이블의 데이터를 레코드 단위로 디스크 내에 연속적으로 저장하는 것과 달리 열 별로 연속적으로 저장
- 하나의 키에 여러 개의 컬럼 이름과 컬럼 값의 쌍으로 이루어진 데이터를 저장하고 조회
- HBase, Cassandra, ScyllaDB 등
- Document DB
- JSON, XML과 같은 Collection 데이터 모델 구조를 채택
- Key Value 모델과 다른 점이라면 Value가 계층적인 형태인 도큐먼트로 저장된다는 것(하나의 구조화된 문서를 저장하고 조회)
- MongoDB, CoughDB 등
- Graph DB
- Nodes, Relationship, Key-Value 데이터 모델 채용
- 개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있으며, 데이터 간의 관계가 탐색의 키일 경우에 적합
- 고도로 연결된 데이터세트를 사용하는 경우
- Neo4J, OreientDB 등
CAP 이론
일관성(Consistency)
- 다중 클라이언트에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증
- 일관성을 지원하지 않는 NoSQL 을 사용한다면 데이터의 일관성이 느슨하게 처리되어 동일한 데이터가 나타나지 않을 수 있음
- 느슨하게 처리된다는 것은 데이터의 변경을 시간의 흐름에 따라 여러 노드에 전파하는 것을 말함
- 각 NoSQL 들은 분산 노드 간의 데이터 동기화를 위해서 동기식 방법과 비동기식 방법을 사용
가용성(Availability)
- 가용성이란 모든 클라이언트의 읽기와 쓰기 요청에 대하여 항상 응답이 가능해야 함을 보증
- 가용성을 보장하기 위해 데이터 복제(Replication)을 사용, 동일한 데이터를 다중 노드에 중복 저장하는 방법
네트워크 분할 허용성(Partition tolerance)
- 지역적으로 분할된 네트워크 환경에서 동작하는 시스템에서 네트워크가 단절이나 네트워크 데이터의 유실이 일어나더라도 각 시스템은 정상적으로 동작해야 함을 의미