본문 바로가기
공부/개념

NoSQL 저장 유형별 간단 정리

by 촌쥐 2021. 6. 6.

출처 : https://redislabs.com/nosql/what-is-nosql/

NoSQL은 특정한 DB를 말하는 게 아니라 RDB와 달리 데이터 액세스에 SQL만 사용하지 않는 DB들을 일컫는 단어입니다.

따라서 정확한 정의도 없으며 NoSQL을 분류하는 기준도 사람에 따라 모두 다 다릅니다. 

NoSQL이라는 단어 대신 비관계성 데이터베이스라는 단어도 사용하기도 합니다.

저는 위의 그림에 따라 Wide Column, Graph, Key-Value, Document 이 네 가지 방법 저장 형태에 따라 살펴보겠습니다.


1. Key - Value 

출처 : https://aws.amazon.com/ko/nosql/key-value/

Key를 고유한 식별자로 사용하는 Key - Value 쌍의 집합으로 데이터를 저장합니다.

일반적으로 RDB는 모든 Record가 동일한 Field를 가지고 있지만 Key - Value DB는 각 Record가 모두 다른 Field를 

가지고 있을 수 있어 유연성이 있습니다.  Python의 Dictionary 혹은 Hash Table와 거의 동일한  형태라고 보면 됩니다. 

일반적인 특징으로는 아래와 같습니다.

  • 구현이 매우 간단합니다.
  • Key를 가지고 데이터를 불러오기 때문에 대체로 검색이 빠릅니다. (대신 value로는 검색이 힘듭니다.)
  • 대부분의 데이터형이 저장이 가능합니다.
  • 확장성이 좋습니다.

많이 사용되는 Key-Value형 DB에는 Redis, Dynamo DB가 있으며

주로 복잡한 쿼리문을 사용할 일이 없는 DB의 경우에 사용 시 효과적입니다.

 

2. Document  

출처 : https://www.mongodb.com/ko-kr/document-databases

일반적인 RDB와 달리 Document Store라고 한다면 위의 그림의 오른쪽 부분이 잘 설명해주고 있습니다.

문서 형태라고 하여 docx나 hwp 같은 문서가 아닙니다.

일반적으로 JSON, BSON, XML 등의 형식으로 저장하는 방식을 가지고 있습니다.

일반적인 특징으로는 다음과 같습니다.

  • 생산성이 좋습니다.
  • 유연성이 뛰어납니다. (스키마가 존재하지 않으며 각 문서마다 같은 필드를 가지고 있을 필요가 없습니다.)
  • 필드에 따라 쿼리가 가능합니다.
  • 확장성이 좋습니다.

생산성이 좋다는 말은 JSON 같은 형태를 사용하기 때문에 프로그래머들이 이를 가지고 놀기가 쉽다는 뜻입니다.

코드에서 별다른 처리를 해주지 않더라도 Document Store DB에 넣으면 그대로 저장이 가능하기 때문이죠.

개인적으로는 생산성이 Document Store DB의 가장 큰 무기라고 생각합니다.

많이 사용되는 Document형 DB에는 Elasticsearch, MongoDB가 있습니다.

각 콘텐츠에 대해 정보를 관리하거나 카탈로그 같은 것을 저장할 때 특히 효과적입니다.

 

3. Graph

출처 : https://aws.amazon.com/ko/neptune/

Graph DB는 말 그대로 위 그림과 같이 그래프의 형태로 저장하는 데이터베이스입니다.

Node와 Edge로 이루어져 있는데 Node에는 Data Entity를 저장하며 Edge에는 Node 간 관계를 저장합니다. 

일반적인 특징으로는 아래와 같습니다.

  • Graph 시각화도 같이 있는 경우가 많습니다.
  • 각 데이터들 간의 관계를 찾는데 특화되어 있습니다.

Graph DB는 노드 간 관계(에지)를 따로 저장하는 만큼 각 데이터 간 관계를 저장하고 탐색하는데 특화되어 있습니다.

많이 사용되는 DB로는 Neo4j, Neptune 등이 있습니다.

특색이 확실한 만큼 소셜 네트워크 및 추천 엔진에서 자주 사용된다고 합니다.

 

4. Wide Column

출처 : https://stackoverflow.com/questions/62010368/what-exactly-is-a-wide-column-store

마지막인 wide column DB입니다. 

생긴 게 조금 복잡하게 생겼지만 간단합니다. RDB 형태에서 row 마다 가지고 있는 column이 다 다를 수 있는 겁니다.

그 column이 뭉친 것을 column family라고 하기도 합니다.

일반적인 특징으로는

  • 대량의 데이터에서 상대적으로 쿼리 속도가 빠릅니다.
  • 확장성이 좋습니다.

대표적인 DB로는 Cassandra, HBase 등이 있습니다. 

로그 데이터 및 IOT 센서 데이터, 시계열 데이터 등등에 많이 쓰이고 있습니다.


참조

NoSQL Database Guide | https://www.scylladb.com/resources/what-is-nosql/

NoSQL 데이터베이스 | https://azure.microsoft.com/ko-kr/overview/nosql-database/

NoSQL이란 무엇입니까? | https://www.mongodb.com/ko-kr/nosql-explained

NoSQL이란? | https://aws.amazon.com/ko/nosql/

NoSQL | https://en.wikipedia.org/wiki/NoSQL

What exactly is a wide column store? | https://stackoverflow.com/questions/62010368/what-exactly-is-a-wide-column-store

 

 

'공부 > 개념' 카테고리의 다른 글

DB에서의 partitioning(분할, 파티셔닝)  (0) 2021.06.07
RDBMS, NoSQL, Elasticsearch 그리고 Hadoop  (0) 2021.06.04
apache kafka 개념 정리  (0) 2021.06.03
[네트워크] TCP/UDP 간단 정리  (2) 2021.05.30
RESTful API 개념 정리  (0) 2021.05.29

댓글