NoSQL 데이터베이스는 행과 테이블을 사용하는 관계형(SQL) 데이터베이스보다 훨씬 다양한 방식으로 빠르게 바뀌는 대량의 비정형 데이터를 처리할 수 있다.
NoSQL은 Not Only SQL의 약자로 기존 관계형 데이터 베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태이다. RDBMS가 클라이언트/서버 환경에 맞는 데이터 저장기술이라면, NoSQL은 클라우드 환경에 맞는 저장 기술이다.
RDBMS란
관계형 데이터베이스(RDMBS)는 아래와와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있다.
외래 키를 사용해 테이블 간 Join이 가능하다.
[학생 Table]
학번 | 이름 | 과목id(foreign key) |
11 | 홍ㅇㅇ | 01 |
22 | 김ㅇㅇ | 02 |
[과목 Table]
과목id(foreign key) | 교수 |
01 | 박ㅇㅇ |
02 | 김ㅇㅇ |
NoSQL의 특징
- NoSQL은 RDBMS와는 달리 데이터 간의 관계를 정의하지 않는다.
- 가장 큰 특징 중 하나는 관계형 데이터 베이스인 RDBMS가 데이터의 관계를 Foreign Key 등으로 정의하고 이를 이용해 Join 등의 관계형 연산을 한다고 하면, NoSQL은 데이터 간의 관계를 정의하지 않는다. 데이터 테이블은 그냥 하나의 테이블이며 각 테이블 간의 관계를 정의하지 않고 일반적으로 테이블 간의 Join도 불가능하다.
- RDBMS에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다.
- RDBMS의 복잡도와 용량의 한계를 극복하기 위한 목적으로 등장한 만큼 페타바이트급의 대용량 데이터를 저장할 수 있다.
- 분산형 구조이다.
- NoSQL은 기존 RDBMS와는 다르게 하나의 고성능 머신에 데이터를 저장하는 것이 아니라 일반적인 서버 수십 대를 연결해 데이터를 저장 및 처리하는 구조를 갖는다. 즉 분산형 구조를 통해 데이터를 여러 대의 서버에 분산해 저장하고 분산 시에 데이터를 상호 복제해 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 구조의 형태를 가진다.
- 고정되지 않은 테이블 스키마를 갖는다.
- RDBMS와는 다르게 테이블의 스키마가 유동적이다. 데이터를 저장하는 컬럼은 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다.
- 스키마란? 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다.
즉, RDBMS로는 관리할 수 없는 복잡하고 용량이 큰 데이터들을 관리 할 수 있다!
NoSQL의 종류
Key-Value DB
- Key와 Value의 쌍으로 데이터가 저장되는 유형으로써 Amazon의 Dynamo Paper에서 유래되었다. Riak, Vodemort, Tokyo 등의 제품이 알려져 있다.
출처: https://en.wikipedia.org/wiki/Key-value_database
Wide Columnar DB
- Big Table DB라고도 하며, Google의 BigTable Paper에서 유래되었다. Column Family 데이터 모델을 사용하고 있고, HBase, Cassandra, Hypertable이 이에 해당된다.
행마다 키와 해당 값을 저장할 때마다 각각 다른값의 다른 수의 스키마를 가질 수 있다. '그림2'를 참고하면 사용자의 이름(key)에 해당하는 값에 스키마들이 각각 다름을 볼 수 있다. 이러한 구조를 갖는 WIDE COLUMN DATABASE 는 대량의 데이터의 압축, 분산처리, 집계 쿼리 (SUM, COUNT, AVG 등)및 쿼리 동작 속도 그리고 확장성이 뛰어난 것이 그 대표적 특징이다.
출처: https://database.guide/what-is-a-column-store-database/
KDoument DB
- Lotus Notes에서 유래되었으며, JSON, XML과 같은 Collection 데이터 모델 구조를 채택하고 있다. Mongo DB, Cough DB가 이 종류에 해당된다.
출처: https://inyl.github.io/programming/2017/05/09/database.html
Graph DB
- Euler & Graph Theory에서 유래한 DB이며, Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있다. Neo4J 등의 제품이 있다.
출처: https://database.guide/what-is-a-graph-database/#more-896
RDBMS, NoSQL 언제 사용해야 될까?
- NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용
데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야한다.
이러한 특징들을 기반으로 Update가 많이 이루어지지 않는 시스템이 좋으며 또한 Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 해서 Database를 Scale-Out를 해야 되는 시스템에 적합합니다.
- RDBMS는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용
중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합합니다.
참고https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90https://universitytomorrow.com/26http://www.incodom.kr/NoSQL_DB_%EC%9D%98_%EC%A2%85%EB%A5%98
'취업준비 > 빅데이터분석' 카테고리의 다른 글
데이터 결측값 처리(missing value) (0) | 2021.09.13 |
---|---|
데이터 정제 (0) | 2021.09.13 |