NoSQL 저장방식에 따른 분류

NoSQL 저장방식에 따른 분류

반응형

간단하게

NoSQL이란 ?

Not Only SQL의 의 약자로 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며 관계형 데이터 베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태로 수평적 확장성이 있다

RDBMS 가 클라이언트/서버 환경에 맞는 데이터 저장기술이라면 NoSQL은 클라우드 환경에 맞는 저장 기술이다.

나오게된 배경

이전까지의 컴퓨팅 시스템은 기업 업무를 자동화하고 효율화 하는데 그 목적이 있었고 복잡한 데이터를 저장하거나 그 데이터간의 관계를 정의하고 분석하는데 최적화되어 있었다. 물론 그 과정에서 생성되는 데이터의 양은 한계를 가지고 있었다.

그러나 인터넷의 발전과 함께 특정 고객이 아닌 전세계의 사람들을 대상으로 하는 형태의 서비스가 발전이 되었고 이는 기존의 기업 시스템에서 볼 수 없었던 대규모 데이터를 생산해냈다.

또한 이 데이터들은 기존에 복잡했던 데이터 형태에 비해 매우 단순한 형태를 띠었고 이것은 기존의 Oracle, MySQL 등으로 대변되는 RDBMS 중심의 데이터 저장 기술 시장에서 새로운 데이터 저장 기술인 NoSQL이 등장하는 계기가 되었다.

- > 대용량의 데이터가 계속 들어온다면, 스키마에 맞춰 변경해서 넣기 위해 긴 시간의 down time이 발생한다.

NoSQL은 거대한 Map이라고 할 수 있다. 따라서 대부분 NoSQL은 Key/Value 개념을 지원한다. 이 때 저장소는 RAM일 수도, 디스크일 수도 있다. 보통 데이터 모델(key에 저장되는 값)에 따라 NoSQL을 분류한다.

저장방식 분류

1. Key/Value Database : Redis(인메모리), Oracle Coherence 등

Key를 이용해 value에 접근하는 구조 .

단순한 저장구조를 가지며, 복잡한 조회 연산을 지원하지 않는다.

고속 읽기와 쓰기에 최적화된 경우가 많다. key에 대한 단위 연산이 빠른 것이지, 여러 key에 대한 연산은 느릴 수 있다.

메모리를 저장소로 쓰는 경우, 아주 빠른 get과 put을 지원한다.

Value는 문자열이나 정수와 같은 원시 타입이 들어갈 수도 있고, 아래 사진처럼 또 다른 key/Value이 들어갈 수도 있다. 이를 Column Family이라고 하며, Key 안에 (Column, Value) 조합으로 된 여러 개의 필드를 갖는 것을 말한다.

이를 Column Family이라고 하며, Key 안에 (Column, Value) 조합으로 된 여러 개의 필드를 갖는 것을 말한다. 어떠한 형태 (List, Set 등) 의 데이터든 저장이 가능함. 각 DB별로 value의 최고 저장 size가 있으므로 이점을 유의. Key를 기반으로 정렬/비정렬 가능한점이 다름.

Redis의 Key-value models

2. Big Table Database (= Ordered Key/Value, Column Family) : Hbase, Cassandra 등

Key/Value Store와 데이터 저장 방식은 동일하다. 보통 NoSQL은 RDBMS의 order by같은 정렬기능을 제공해주지 않는다. 그러나 이 모델은 내부적으로 Key를 정렬한다.

키를 정렬함으로써, 값을 날짜나 선착순으로 정렬해서 보여줄 때 매우 유용하다.

두 단계의 집합(Map) 구조.

Row Key에 다수의 column&value;가 들어감 . Row key로 자동정렬, column key로 자동정렬 가능.(각 NoSQL마다 상이) 하나의 행에 수천~수만개의 컬럼을 저장가능.

cassandraDB의 column family 모델

3. Document Database : MongoDB, CouchDB, Riak

Key/Value Store의 확장된 형태로, value에 Document라는 타입을 저장한다. Document는 구조화된 문서 데이터(XML, JSON, YAML 등)을 말한다.

복잡한 데이터 구조를 표현가능하다.

Document id 또는 특정 속성값 기준으로 인덱스를 생성한다. 이 경우 해당 key 값의 range에 대한 효율적인 연산이 가능해 지므로 이에 대한 쿼리를 제공한다. 따라서 Sorting, Join, Grouping 등이 가능해진다.

쿼리 처리에 있어서 데이터를 파싱해서 연산을 해야하므로 overhead가 key-value 모델보다 크다. 큰 크기의 document를 다룰 때는 성능이 저하된다.

mongoDB의 document model

4. Graph Database : Sones, AllegroGraph, neo4j

node들과 relationship들로 구성된 개념이다. 역시 Key/Value Store이며 모든 노드는 끊기지 않고 연결되어 있다.

relationship은 direction, type, start node, end node에 대한 속성 등을 가진다. 보통 양(코스트, 무게 등)적인 속성들을 가진다.

ref)

https://helloworld-88.tistory.com/18

https://sjh836.tistory.com/97

https://blog.voidmainvoid.net/231

728x90

반응형

from http://kwangkyun-world.tistory.com/91 by ccl(A) rewrite - 2021-11-07 18:27:01