목차
NoSQL 개요
NoSQL은 비관계형 데이터베이스를 지칭합니다. 즉 관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회하는 특화되어 있으며 스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소를 의미합니다.
NoSQL은 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며, 관계형 데이터베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태입니다.
NoSQL 특징
1. RDBMS와 달리 데이터 간의 관계를 정의하지 않습니다.
RDBMS는 데이터 관계를 외래키 등으로 정의하고 JOIN 연산을 수행할 수 있지만, NoSQL은 JOIN 연산이 불가능합니다.
2. RDBMS에 비해 대용량 데이터를 저장할 수 있습니다.
페타바이트 급의 대용량 데이터를 저장할 수 있습니다.
3. 분산형 구조 입니다.
여러 곳의 서버에 데이터를 분산 저장해 특정 서버에 장애가 발생했을 때도 데이터 유실 혹은 서비스 중지가 발생하지 않도록 합니다.
4. 고정되지 않은 테이블 스키마를 갖습니다.
RDBMS와 달리 테이블의 스키마가 유동적입니다. 데이터를 저장하는 칼럼이 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용됩니다.
NoSQL 장점
- RDBMS에 비해 저렴한 비용으로 분산처리와 병렬 처리가 가능합니다.
- 비정형 데이터 구조 설계로 설계 비용이 감소합니다.
- Big Data 처리에 효과적입니다.
- 가변적인 구조로 데이터 저장이 가능합니다.
- 데이터 모델의 유연한 변화가 가능합니다.
NoSQL 단점
- 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능합니다.
- 많은 인덱스를 사용하려면 충분한 메모리가 필요합니다. 인덱스 구조가 메모리에 저장됩니다.
- 데이터 일관성이 항상 보장되지 않습니다.
NoSQL 종류
![](https://blog.kakaocdn.net/dn/cy3UGt/btrEZDYNakR/YkLKKC0usmqtJ7Nd2pILA0/img.png)
1. Document Database
![](https://blog.kakaocdn.net/dn/IY4WP/btrEZE4r1PZ/2nKmtrSjWHl1cVNZC2VTw1/img.png)
테이블의 스키마가 유동적, 즉 레코드마다 각각 다른 스키마를 가질 수 있습니다.
보통 XML, JSON과 같은 DOCUMENT를 이용해 레코드를 저장합니다.
트리형 구조로 레코드를 저장하거나 검색하는데 효과적 입니다.
MongoDB, CouchDB, Azure Cosmos DB
2. Key-Value Database
![](https://blog.kakaocdn.net/dn/PqhA5/btrEWGCvsH0/arKk5yVGGBKbZbBUqdihdK/img.png)
기본적인 패턴으로 Key-Value 하나의 묶음(Unique)으로 저장되는 구조로 단순한 구조이기에 속도가 빠르며 분산 저장 시 용이합니다. Key 안에 (Column, Value) 형태로 된 여러 개의 필드, 즉 COLUMN N FAMILIES 를 갖습니다.
주로 SERVER CONFIG, SESSION CLUSTERING 등에 사용되고 엑세스 속도는 빠르지만 SCAN에는 용이하지 않습니다.
Redis, Oracle NoSQL Database, VoldeMorte
3. Wide - Column Database
![](https://blog.kakaocdn.net/dn/x8A96/btrEYBNJvod/ST8edjIRIilTykfhl6rp20/img.png)
행마다 키와 해당 값을 저장할 때마다 각각 다른 값의 다른 수의 스키마를 가질 수 있습니다.
위 그림을 참고하면 사용자의 이름(Key)에 해당하는 값에 스키마들이 각각 다름을 볼 수 있습니다.
이러한 구조를 갖는 WIDE COLUMN DATABASE는 대량의 데이터 압축, 분산처리, 집계쿼리(SUM, COUNT, AVG 등) 및 쿼리 동작 속도 그리고 확장성이 뛰어난 것이 그 대표적 특징이라 할 수 있습니다.
Hbase, GoogleBigTable, Vertica
4. Graph Database
![](https://blog.kakaocdn.net/dn/bMKd8h/btrEZexZccb/XGVR7HrDvABSXUxhpcg8n1/img.png)
데이터를 노드로 (그림에 파란, 녹색 원) 표현하며 노드 사이의 관계를 엣지(그림에서 화살표)로 표현합니다.
일반적으로 RDBMS 보다 성능이 좋고 유연하며 유지보수에 용이한 것이 특징입니다.
Social networks, Network diagrams 등에 사용할 수 있습니다.
Neo4j, BlazeGraph, OrientDB
참조
https://code-lab1.tistory.com/53
[DB] NoSQL이란?, NoSQL 특징, NoSQL 종류, NoSQL 장점
NoSQL이란? NoSQL은 비관계형 데이터베이스를 지칭한다. 즉, 관계형 데이터 모델을 지양 하며 대량의 분산된 데이터를 저장하고 조회하는 데 특화되었으며 스키마 없이 사용 가능하거나 느슨한
code-lab1.tistory.com
항상 감사합니다.