Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Jupyter notebook
- python3
- 맥에 파이썬 설치
- util.inspect
- Installation
- Node.js
- MacOS
- pip jupyter
- Projection
- nodejs mongodb
- collection.find
- mongodb
- Windows10
- MYSQL
- mongoDB [Object]
- homebrew
- node.js설치
- node.js 연동
- query
- [Object]
- mongodb nodejs driver
- 맥
- console.log
- 파이썬3
- mongo-native
Archives
- Today
- Total
Bon Voyage
NoSQL 데이터 모델링 Tip 본문
https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
General Notes on NoSQL Data Modeling 부분을 번역함
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
'개념 공부 > 데이터베이스' 카테고리의 다른 글
'MongoDB in Action'으로 정리해보는 MongoDB의 인덱스 개념 (0) | 2019.09.29 |
---|---|
'이것이 MySQL이다'로 정리해보는 인덱스 개념 (0) | 2019.09.28 |
Node.js MongoDB 드라이버 : collection.find() option 사용법 (0) | 2019.07.18 |
MongoDB Node.js 드라이버, 간단하게 시작해보기 (0) | 2019.07.17 |
MongoDB에서의 Geospatial Data (0) | 2019.07.16 |
Comments