[NoSQL] NoSQL 모델링 방법

double-oh·2021년 8월 8일
0
  • RDBMS/NoSQL 데이터 모델링 차이

    1. 개체모델링 -> 쿼리결과 지향
      • RDBMS: 도메인 분석 -> 테이블 디자인 -> 쿼리 디자인
      • NoSQL: 도메인 분석 -> 쿼리 디자인 -> 테이블 디자인
    2. 정규화 -> 비정규화
      • RDBMS
        • 데이터의 일관성, 도메인 모델과의 일치성을 위해 정규화 필요
        • 데이터 중복 저장하지 않음
      • NoSQL
        • 쿼리의 효율성을 위해 데이터 정규화 하지 않음
        • 의도적으로 데이터 중복 저장
  • NoSQL 모델링 절차

    1. 도메인 분석
      • RDBMS와 마찬가지로 ERD를 그려 도식화하며 분석
    2. 쿼리 결과 디자인
      • 어플리케이션에서 쿼리가 수행되는 결과값을 먼저 정함
      • 출력형식을 기반으로 필요한 쿼리 정의
    3. 테이블 디자인
      • 일반적으로 join, sorting 등을 제공하지 않음
      • Put/Get 기반 데이터 가공
      • 데이터를 중복 저장 등 반정규화를 통해 NoSQL을 여러번 호출하는 것을 줄여야함
  • NoSQL 데이터 모델링 패턴

    • Denormalization
      • 같은 데이터를 중복해서 저장하는 방식
      • 테이블 간의 join을 업앨 수 있음
      • 장점: 쿼리 성능 향상, 쿠러ㅣ 로직 복잡도 감소
      • 단점: 전체 데이터 사이즈 증가, 데이터 일관성 문제 발생 가능
    • Server side join
      • 서버에서 데이터의 조인 수행
    • Aggregation
      • 유연한 스키마를 특성으로 key만 똑같다면 각각의 row들이 다른 컬럼으로 구성 가능
      • 컬럼의 데이터 타입이 모두 달라도 됨
        • 1:n 관계를 최소화 하여 결과적으로 join 연산을 줄임
        • 복잡하고 다양한 비즈니스 요소를 담을 수 있음
    • Application side join
      • Join 대상 만큼 IO 작업이 발생하지만, Denormalization에 비해 데이터 사이즈를 절약할 수 있음
      • Join 대상 데이터에 대해 Denormalization, Aggregation 패턴 사용으로 해결되지 않는 경우 사용
  • NoSQL 모델링 고려사항

    • RDBMS 모델링보다 데이터 구조 및 접근 알고리즘에 대한 더 깊은 이해 필요
    • NoSQL 쿼리가 실제 몇 개의 물리 노드에 걸쳐서 수행되는지에 대한 이해 필요
    • DB와 Application 뿐 아니라 인프라(네트워크, 디스크)에 대한 디자인을 함께 고려해야함.
profile
Yes, Code Wins Arguments!!

0개의 댓글