IT 삽질기

NoSQL의 분류 본문

BigData/NoSQL

NoSQL의 분류

화이팅빌런 2019. 4. 21. 23:58

NoSQL의 분류

1. Key:Value DB

  • Key:Value 쌍으로 저장되는 가장 단순한 형태로 Riak, Vodemort, Tokyo 등이 있음

2. Wide Columnar Store

  • Big Table DB라고도 하며 Key:Value에서 발전된 형태의 Column Family 데이터 모델을 사용 HBase, Cassandra, ScllaDB등이 있음

3. Document DB

  • JSON, XML과 같은 Collection 데이터 모델 구조를 채택하며 MongoDB, CoughDB가 해당

4. Graph DB

  • Nodes, Relationship, Key-Value 데이터 모델을 사용하며 Neo4j, OreientDB등이 해당

그래프별 기능을 비교하면 아래의 표와 같다.

데이터 모델 성능 확장성 유연성 복잡성 기능
Key-Value 높음 높음 높음 없음 가변적(없음)
Column-Oridnted 높음 높음 준수 낮음 최소
Document-Oriented 높음 가변적(높음) 높음 낮음 가변적(낮음)
Graph 가변적 가변적 높음 높음 그래프 이론
Relational 가변적 가변적 낮음 준수 관계대수

 

DB별 비교

현재 많이 사용되고 있는 3개의 NoSQL DB에 대해 비교해보도록 하자

1. HBase

  • 하둡 분산 파일 시스템(HDFS)에서 동작하는 Key-Value 구조 분산 DB로 Java로 개발

2. Cassandra

  • masterless 아키텍처로 모든 노드가 coordinator 노드와 replica 노드가 될 수 있는 환경으로 Amazon의 Dynamo의 특징인 Hash 알고리즘을 이용

3. MongoDB

  • 현재 가장 많이 사용하는 NoSQL로 10gen(현 MongoDB)이 개발한 document-oriented database로 JSON의 2진 버전인 BSON을 사용, C++로 개발

 

DB

Cassandra

HBase

MongoDB

설명

Facebook에 의해 2008년 발표

JAVA 기반의 분산 DB

컬럼형 NoSQL로 분류

대량 데이터를 우수한 성능으로 데이터 일관성을 보장하면서 다뤄야할때 주로 사용

수십 테라바이트가 넘는 빅데이터에 적합

 

 

높은 성능과 확장성

문서형 DB로 분류

input시 데이터 구조 정보를 포함하여 BSON형식으로 저장하고 Key-value로 사용

비정형 데이터, 파일 데이터등의 스키마프리(scheme free)모델에서 적합

SQL과 비슷한 방식의 쿼리 사용

장점

대량으로 쓰기가 발생하는 서비스에 좋음

확장성이 뛰어남

Apache에서 개발중이며

커뮤니티 활발

Scale-Out에 용이

대용량의 데이터 트랜잭션에 대해 고성능 처리가 가능

Hadoop 기반에서 동작하고 다양한 Hadoop 도구들과 상호 운영성이 좋음

상대적으로 데이터 일관성 보장 우수

스키마 없이 사용 가능

SQL과 비슷한 방식의 쿼리 사용

데이터 input시 메모리에 먼저 Write한 후 1분 단위로 Flushing하는 Write back 방식을 사용하여 write성능이 좋음

 

Read시에는 파일의 index를 메모리에 로딩해 놓은 후 찾음(memory mapped file)

빠름

다양한 기능 제공

단점

최소 3대 이상의 클러스터 환경 구성 권장

복잡한 조건 검색 불가

데이터 갱신 및 입력시 Atomic한 처리가 힘듬

5대 미만에서는 사용할 수 없음

성능이 그렇게 좋지 않음

JOIN이나 트랜잭션 처리 불가능

디스크에 쓰기가 비동식으로 이루어지기 때문에 경우에 따라 데이터가 유실될 가능성이 있음.


RDBMS와 NoSQL

언제 RDBMS를 쓰고 언제 NoSQL을 사용해야 할까

  • 데이터 읽기 쓰기 등 퍼포먼스에 집중한다면 NoSQL
  • 트랜잭션과 같은 정합성 위주의 시스템을 사용한다면 RDBMS
  • NoSQL은 컬럼이 언제든 변할 수 있으므로 데이터 컬럼이 늘어나거나 수정되어야 하는 경우가 발생할 수 있는 경우 NoSQL
  • NoSQL의 경우 sorting, join, grouping, range query, index 부분에 매우 취약
  • NoSQL의 가장 큰 장점은 확장성과 RDB보다 빠른 읽기/쓰기로 이 을 중요시 한다면 NoSQL을 선택

 

참고 자료

https://ko.wikipedia.org/wiki/NoSQL

https://brocess.tistory.com/115

https://www.oss.kr/info_techtip/show/b29a00bb-351e-4834-95c4-debf8589f706

'BigData > NoSQL' 카테고리의 다른 글

NoSQL이란  (0) 2019.04.21
Comments