본문 바로가기

빅데이터/nosql

NoSQL강의) NoSQL 데이터 모델 종류 및 설명

NoSQL 데이터 모델

기존 RDBMS와는 다른 관점에서 바라봐야함. NOSQL 대부분은 ACID를 지원하지 않고 원자적 트랜잭션(Atomic Transaction)을 지원한다. 가능하다면 원자성이 필요한 범위를 하나의 집합 내로 한정하는 것이 바람직. 집합 지향적으로 모델링하게 되면 자연스럽게 데이터 중복이 발생한다. 데이터 중복을 허용함으로써, 애플리케이션에서의 쿼리 효율성에 집중하도록 설계해야함.

Key-Value 모델

Key를 이용해 value에 접근하는 구조. 어떠한 형태(List, Set 등)의 데이터든 저장이 가능함. 각 DB별로 value의 최고 저장 size가 있으므로 이점을 유의. Key를 기반으로 정렬/비정렬 가능한점이 다름.

 

Redis의 Key-value models

Document 모델

집합 구조를 문서형태로 확인 가능. document하나의 크기 제한이 있으므로 유의. 집합 내의 필드를 이용해 쿼리 할수 있음. 문서는 주로 JSON 또는 BSON(Binary JSON)이다. 문서내의 값들은 필드라는 형태로 존재.

mongoDB의 document model

Column Family 모델

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

cassandraDB의 column family 모델

Graph 모델

Entity와 Entity 사이의 관계를 저장하는 형태. 대부분 분산DB가 아님. RDB처럼 ACID를 지원.

반응형