double-oh.log
로그인
double-oh.log
로그인
[NoSQL] NoSQL 모델링 방법
double-oh
·
2021년 8월 8일
팔로우
0
NoSQL모델링
nosql
0
RDBMS/NoSQL 데이터 모델링 차이
개체모델링 -> 쿼리결과 지향
RDBMS: 도메인 분석 -> 테이블 디자인 -> 쿼리 디자인
NoSQL: 도메인 분석 -> 쿼리 디자인 -> 테이블 디자인
정규화 -> 비정규화
RDBMS
데이터의 일관성, 도메인 모델과의 일치성을 위해 정규화 필요
데이터 중복 저장하지 않음
NoSQL
쿼리의 효율성을 위해 데이터 정규화 하지 않음
의도적으로 데이터 중복 저장
NoSQL 모델링 절차
도메인 분석
RDBMS와 마찬가지로 ERD를 그려 도식화하며 분석
쿼리 결과 디자인
어플리케이션에서 쿼리가 수행되는 결과값을 먼저 정함
출력형식을 기반으로 필요한 쿼리 정의
테이블 디자인
일반적으로 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 뿐 아니라 인프라(네트워크, 디스크)에 대한 디자인을 함께 고려해야함.
double-oh
Yes, Code Wins Arguments!!
팔로우
이전 포스트
[자연어처리] MobileBERT 정리
다음 포스트
[Logstash] Logstash 일자 Rolling
0개의 댓글
댓글 작성