티스토리 뷰
1. NoSql의 등장배경
-
2000년 후반으로 넘어오면서 소셜네트워크 서비스 등이 등장하면서 대규모 데이터를 생산하였다.
-
데이터 패러다임이 변화하면서 기존 시스템에 한계가 나타났으며 새로운 형태의 데이터 저장 기술이 필요하게 되었다.
-
대용량 데이터를 보유한 구글과 아마존에 의해 빅테이블(Bigtable)과 Dynamo라는 논문이 발표되었고 이로인해 새로운 데이터 저장 기술을 만들어지기 시작하였다.
2. NoSql의 특징
-
NoSql은 RDBMS(관계형 데이터베이스)와는 달리 데이터 간의 관계를 정의하지 않는다.
-
RDBMS의 Foreign key와 join 이 존재하지 않는다.
-
RDBMS에 비해 비교적 훨씬 대용량의 데이터를 저장할 수 있다.
-
분산형 구조
-
데이터를 여러 대의 서버에 분산해 저장한다.
-
분산 시에 데이터를 상호 복제하여 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 형태로 이루어져 있다.
-
고정되지 않은 테이블 스키마
-
테이블 스키마가 유동적이다.
3. NoSql의 분류
-
Key-Value Database
-
속도가 빠르고 분산 저장에 용이하다.
-
단순한 저장구조를 가지며 복잡한 조회 연산을 지원하지 않는다.
-
고속 읽기와 쓰기에 최적화된 경우가 많다.
-
메모리를 저장소로 쓰는 경우 매우 빠른 속도로 읽기 쓰기가 가능하다.
-
-
Key-Value 하나의 묶음으로 정해진 스키마 없이 저장되는 구조이다.
-
특징
-
ex) Redis, Oracle NoSQL Database, Voldemorte, Memcached, Hazelcast, EhCache
-
Document-based Database
-
Value에 Document를 저장하기 때문에 복잡한 데이터 구조를 표현할 수 있다.
-
여러개의 테이블을 하나의 Document에 모아둘 수 있다. 그렇기 때문에 조회할 때 한번의 조회로 필요한 데이터를 획득할 수 있다.
-
테이블 스키마가 유동적이기 때문에 레코드마다 다른 스키마를 가질 수 있다.
-
-
Key-Value Store의 확장 형태로, Value에 Document 타입을 저장한다. Document는 XML, JSON이 주로 사용된다.
-
특징
-
ex) MongoDB, Azure Cosmos DB, CouchDB, MarkLogic
-
Column-based Database
-
하나의 키에 여러개의 컬럼 묶음으로 데이터를 저장할 수 있다.
-
데이터의 열을 빠르게 검색하는 데에 최적화 되어있다.
-
Column별로 데이터가 저장되기때문에 압축에도 높은 효율을 얻을 수 있다.
-
-
Key-Value Store의 확장 형태로, RDBMS에서 행 단위로 데이터를 저장하는 것과 다르게 열 단위로 연속적으로 저장하는 방식이다.
-
특징
-
ex) Cassandra, HBase, ScyllaDB, GoogleBigTable, Vertica, Druid, Accumulo, Hypertable
-
Graph Database
-
노드 간 관계를 수의 제약 없이 형성할 수 있다.
-
데이터 간의 관계를 쿼리하는 속도가 매우 빠르다.
-
RDBMS에 비해 데이터모델이 가변적이다.
-
-
데이터 간의 관계에 특화된 모델로서 데이터를 노드로 표현하고 노드 사이의 관계를 엣지로 표현하여 저장하는 방식이다.
-
특징
-
ex) Neo4j, Blazegraph, OrientDB, FlockDB
-
SearchEngine
-
JSON 형식으로 문서 저장한다.
-
텍스트를 여러 단어로 변형하거나 텍스트의 특질을 이용한 동의어나 유의어를 활용한 검색이 가능하다.
-
관계형 데이터베이스에서 불가능한 비정형 데이터의 색인과 검색이 가능하다.
-
형태소 분석을 통한 자연어 처리가 가능하다.
-
-
대량의 데이터와 텍스트를 빠르게 검색하기위한 저장스토어이다.
-
특징
-
ex) Elasticsearch
-
Time Series Database
-
시간 단위의 데이터를 처리하고 그래프를 그리는데 용이하다.
-
시간의 흐름에 따라 지속적으로 수집된 데이터를 시간 순서에 따라 저장하고 조회하기에 최적화된 API 제공한다.
-
-
시계열(Time Series)를 처리하기 위해 최적화된 데이터베이스
-
특징
-
ex) InfluxDB, RRDtool, Graphite
'database' 카테고리의 다른 글
[Database] 데이터 모델링 - 데이터 성능 (0) | 2021.03.01 |
---|---|
[Database] 데이터 모델링 - 데이터 모델링의 개요 (0) | 2021.03.01 |
[Database] 루씬(Lucene) (0) | 2020.09.27 |
auto increment (0) | 2020.04.13 |
DBeaver 단축키 (0) | 2020.04.13 |
- Total
- Today
- Yesterday
- 자료구조
- BFS
- 클래스
- 입출력장치
- 병행프로세스
- 세마포어
- 인접리스트
- C++
- 소프트웨어
- stackframe
- 퀵정렬
- react
- javascript
- Java
- 알고리즘
- 동적프로그래밍
- 교착상태
- 운영체제
- 배열
- 이진탐색
- 최단경로
- 구조체
- C
- 스텍
- 재귀함수
- 인접행렬
- client side rendering
- dfs
- server side rendering
- Stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |