ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MongoDB A to Z - NoSQL 데이터 모델링 기법
    정보정리 2022. 1. 31. 12:45

    해당 포스팅은 T아카데미 MongoDB 프로그래밍 강의를 보고 정리한 내용이다.

    https://youtu.be/oUjpMJNtfYE

     

    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 수행
    • 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
Designed by Tistory.