Search

NoSQL 종류와 대응되는 제품들

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가 있다.

언제 사용하는지

지식 그래프나 소셜 그래프
사기 탐지 및 추천 엔진