•
Key-Value Store (Redis, DynamoDB) → 빠른 데이터 조회
•
Document Store (MongoDB) → JSON 기반 웹 애플리케이션
•
Column-Family Store (Cassandra) → 빅데이터 저장
•
Graph Database (Neo4j) → 관계 데이터 분석
Key-Value Database
•
Key-Value Database는 데이터가 Key와 Value의 쌍으로 저장된다. Key는 Value에 접근하기 위한 용도로 사용되며, 값은 어떠한 형태의 데이터라도 담을 수 있다. 심지어는 이미지나 비디오도 가능하다. 또한 간단한 API를 제공하는 만큼 질의의 속도가 굉장히 빠른 편이다.
•
대표적인 NoSQL Key-Value Model로는 Redis, Riak, Amazon Dynamo DB 등이 있다.
언제 사용하는지
•
성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱
•
장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적
•
모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장
•
이미지나 오디오 파일 같은 대용량 객체 저장
Document Database
•
Documnet Database 데이터는 Key와Document의 형태로 저장된다. Key-Value 모델과 다른 점이라면 Value가 계층적인 형태인 도큐먼트로 저장된다는 것이다. 객체지향에서의 객체와 유사하며, 이들은 하나의 단위로 취급되어 저장된다. 다시 말해 하나의 객체를 여러 개의 테이블에 나눠 저장할 필요가 없어진다는 뜻이다.
•
주요한 특징으로는 객체-관계 매핑이 필요하지 않다. 객체를 Document의 형태로 바로 저장 가능하기 때문이다.
•
또한 검색에 최적화되어 있는데, 이는 Ket-Value 모델의 특징과 동일하다.
•
단점이라면 사용이 번거롭고 쿼리가 SQL과는 다르다는 점이다.
•
대표적인 NoSQL Document Model로는 MongoDB, CouthDB 등이 있다.
언제 사용하는지
•
대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
•
제품처럼 다양한 속성이 있는 데이터 관리
•
다양한 유형의 메타데이터 추적
•
JSON 데이터 구조를 사용하는 애플리케이션
Wide Column Database
•
Column-family Model 기반의 Database이며 이전의 모델들이 Key-Value 값을 이용해 필드를 결정했다면, 특이하게도 이 모델은 키에서 필드를 결정한다. 키는 Row(키 값)와 Column-family, Column-name을 가진다. 연관된 데이터들은 같은 Column-family 안에 속해 있으며, 각자의 Column-name을 가진다. 관계형 모델로 설명하자면 어트리뷰트가 계층적인 구조를 가지고 있는 셈이다. 이렇게 저장된
데이터는 하나의 커다란 테이블로 표현이 가능하며, 질의는 Row, Column-family, Column-name을 통해 수행된다.
•
대표적인 NoSQL Column-family Model로는 HBase, Hypertable 등이 있다.
언제 사용하는지
•
데이터베이스에 쓰기(Write) 작업이 많은 애플리케이션
•
지리적으로 여러 데이터 센터에 분산되어 있는 애플리케이션
•
대용량 데이터를 다루는 애플리케이션
Graph Database
•
Graph Model에서는 데이터를 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장하는 Database입니다. 개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있으며, 데이터 간의 관계가 탐색의 키일 경우에 적합하다.
페이스북이나 트위터 같은 소셜 네트워크에서(내 친구의 친구를 찾는 질의 등) 적합하고, 연관된 데이터를 추천해주는 추천 엔진이나
패턴 인식 등의 데이터베이스로도 적합하다.
•
대표적인 NoSQL Graph Model로는 Neo4J가 있다.
언제 사용하는지
•
지식 그래프나 소셜 그래프
•
사기 탐지 및 추천 엔진



