-
MongoDB A to Z - NoSQL 데이터 모델링 기법정보정리 2022. 1. 31. 12:45
해당 포스팅은 T아카데미 MongoDB 프로그래밍 강의를 보고 정리한 내용이다.
NoSQL의 데이터 모델링 개념
- Denormalization (비정규화)
- 데이터 중복 허용
- 쿼리 프로세싱을 간단하게 하거나 최적화하기 위해서, 사용자의 데이터를 특정한 데이터 모델에 맞추기 위해서 같은 데이터를 여러 Document나 테이블에 복제하여 중복하는 것을 허용함
- 비정규화 시 query 수행을 위한 모든 데이터를 한 곳에 모아놓고 query를 수행하기 때문에, I/O 숫자를 줄여 전체 성능을 향상시킬 수 있음
- 연속적인 Join은 query process의 complexity를 증가시킴
- 다른 쿼리 수행을 위해 다른 document 또는 table에 중복 저장되기 때문에, 사이즈는 필연적으로 증가
- 비정규화로 인한 trade-off
- Query 당 I/O, Query data size vs Total data volume
- Processing complexity vs Total data volume
- Aggregates
- "유연한 스키마" 속성은 복잡하고 다양한 구조의 내부 요소(nested entities)를 가지고 있는 데이터 클래스를 구성 가능케 함
- 1:n 관계를 최소화하여 결과적으로 Join 연산을 줄임
- 복잡하고 다양한 비즈니스 요소를 담을 수 있음
- Application size joins
- 불가피한 join 시, 대상 데이터에 비정규화, aggregation을 수행할 때 문제가 발생하는 경우
- Join 대상 데이터가 n:m 관계를 가지는 경우
- Join 대상 데이터가 수시로 변동하는 경우
- 이런 경우, 차라리 변경이 잦은 데이터만을 추려내어 query time join을 수행하는 것이 대안
- DB가 아닌 Application에서 join 수행
- 불가피한 join 시, 대상 데이터에 비정규화, aggregation을 수행할 때 문제가 발생하는 경우
- Composite key
- 하나 이상의 필드를 deliminator를 이용하여 구분지어 사용하는 방법
- Key를 서너정할 때는 전체 서버에 걸쳐 부하가 골고루 분산될 수 있는 key를 선정해야 함
- Invertied search index
- value의 내용을 key로 하고, key의 내용을 반대로 value로 하는 패턴
- 검색엔진에서 많이 사용하는 방법
- 검색은 단어를 Key로 검색하기 때문에, value에 검색 키워드가 들어있을 경우 효과적인 검색이 불가
- 검색 키워드를 key로 하여 URL을 value로 하는 테이블을 다시 만들어 사용
- Tree aggregation
- Tree 구조 자체를 하나의 Value에 저장하는 방식
- Materialized Path
- Tree 구조를 테이블에 저장할 때, root에서부터 현재 노드까지의 전체 경로를 key로 저장하는 방법
- 구현에 드는 노력 대비 매우 효율적인 저장 방식
- Key에 대한 search를 수행할 때, Regular expression을 사용할 수 있으면, 특정 노드의 하위 트리 등을 query하는 기능 등 다양한 쿼리가 가능
'정보정리' 카테고리의 다른 글
B+ Tree Index (0) 2022.02.06 MongoDB A to Z - MongoDB 기본 개념 (0) 2022.01.31 MongoDB A to Z - NoSQL의 특징 (0) 2022.01.31 Container Runtime Interface(CRI) (0) 2021.12.13 suffix tree를 통한 string pattern matching (0) 2020.04.12 - Denormalization (비정규화)