Bon Voyage

NoSQL 데이터 모델링 Tip 본문

개념정리/데이터베이스

NoSQL 데이터 모델링 Tip

nangkyeong 2019. 7. 16. 21:49

https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ 
General Notes on NoSQL Data Modeling 부분을 번역함

 

NoSQL Data Modeling Techniques

NoSQL databases are often compared by various non-functional criteria, such as scalability, performance, and consistency. This aspect of NoSQL is well-studied both in practice and theory because sp…

highlyscalable.wordpress.com


 

 

NoSQL 데이터 모델링에 대한 일반적인 참고사항

 

  • NoSQL 데이터 모델링은 (관계형 모델링과는 달리) 응용프로그램(application) 별 쿼리에서 시작한다.
    • 관계형 모델링은 일반적으로 사용 가능한 데이터의 구조에 따라 주도된다.
      주요 주제는 "답변으로 무엇을 얻게 되는가?" 다.
    • NoSQL 데이터 모델링은 이와 달리, 응용프로그램 별 접근 패턴 즉 지원할 쿼리 유형에 따라 결정된다.
      주요 주제는 "어떠한 질문을 할 것인가?" (즉 어떠한 쿼리를 사용할 것인가?)
  • NoSQL 데이터 모델링은 종종 관계형 데이터베이스 모델링보다, 자료구조 및 알고리즘에 대한 더욱 깊은 이해가 필요하기도 하다.
  • 데이터 복제 및 비정규화가 아주 중요하다. (아래에 설명)
  • 관계형 데이터베이스는 계층적 혹은 그래프와 유사한 데이터 모델링 및 처리에는 그리 편리하지 않다. NoSQL 솔루션의 대부분은 이러한 문제에 대해 강점을 가진다.

 

데이터 모델링의 기술은 기본적으로 실제 DB구현과는 독립적(agnostic)이지만, 리스트를 꼽아본다면 아래와 같다.

  • Key-Value Stores: Oracle Coherence, Redis, Kyoto Cabinet
  • BigTable-style Databases: Apache HBase, Apache Cassandra
  • Document Databases: MongoDB, CouchDB
    Value의 데이터 타입으로 Document라는 구조화된 데이터 타입(JSON, XML, YAML 등)을 사용한다
  • Full Text Search Engines: Apache Lucene, Apache Solr
  • Graph Databases: neo4j, FlockDB

 

 

비정규화

 

비정규화는 같은 데이터를 여러 문서나 테이블에 복사해넣는 것을 의미한다. 쿼리 처리를 단순화/최적화하는 목적이나, 유저의 데이터를 특정 데이터 모델로 맞춰 넣으려는 목적으로 사용되는 기법이다.

일반적으로, 비정규화는 다음과 같은 trade-off에 도움이 된다.

  • 쿼리 데이터의 규모 혹은 쿼리 당 IO VS 전체 데이터 규모.
    비정규화를 사용하면 한 곳에서 쿼리를 처리하는데 필요한 모든 데이터를 묶을 수 있다. 왜냐하면 같은 데이터라도 서로 다른 쿼리에서 서로 다른 조합으로 묶여 사용될 수 있기 때문이다. 해당 데이터를 복제해야 하므로 전체 데이터 규모는 증가한다.
  • 처리의 복잡도 VS 전체 데이터 규모 Processing complexity VS total data volume. 모델링 시간 정규화와 그에 따른 쿼리-시간 조인들은 특히 분산 시스템에서 쿼리 처리기의 복잡도를 증가시킨다. 비정규화는 쿼리 친화적인 구조로 데이터를 저장하여 쿼리 처리를 단순화한다.

적용분야: Key-Value Stores, Document Databases, BigTable-style Databases

Comments