2022. 11. 14. 23:16ㆍDB/MongoDB
- 데이터 모델링과 인덱싱
데이터베이스를 사용하는 환경에서 하드웨어 개선없이 성능을 개선할 수 있는 방법은 데이터 모델링과 인덱싱이다.
데이터 모델링은 업무 수행 시 발생하는 데이터를 정확하고 효율적으로 데이터베이스에 저장하기 위해 데이터 구조를 설계하는 과정이다.
데이터 모델링 : MongoDB의 특성을 고려하여 저장할 데이터의 구조를 정하는 작업
- 관계를 표현하기 위한 도큐먼트 구조
임베디드 방식 : 다른 객체를 도큐먼트 내부에 포함시키는 방식
레퍼런스 방식 : 참조할 도큐먼트의 id를 저장하는 방식
임베디드 방식이 좋은 경우 | 레퍼런스 방식이 좋은 경우 |
작은 서브 도큐먼트 | 큰 서브 도큐먼트 |
주기적으로 변하지 않는 데이터 | 자주 변하는 데이터 |
결과적인 일관성이 허용될 때 | 즉각적인 일관성이 필요할 때 |
증가량이 적은 도큐먼트 | 증가량이 많은 데이터 |
빠른 읽기 | 빠른 쓰기 |
- 몽고디비에서 스키마를 설계할 때 고려해야 할 사항
제약 사항 : 데이터베이스와 하드웨어 사이의 제약 사항의 이해 필요
쿼리 및 쓰기의 접근 패턴 : 쿼리가 실행되는 시기와 빈도 파악
관계 유형 : 애플리케이션 요구 사항 측면과 도큐먼트 간 관게 측면에서 어떤 데이터가 관련되어 있는지 파악한다.
카디널리티 : 1:1, 1:N, N:M의 대응수를 고려해야 한다.
- 정규화 : 데이터를 여러 컬렉션으로 나누는(분해) 작업.
- 비정규화 : 모든 데이터를 하나의 도큐먼트에 내장하는 것.
- 오래된 데이터 제거하는 방법
cappedCollection 이용.
TTL(Time-To-Live) collection 이용.
주기적으로 컬렉션 삭제
- readConcern의 수준
읽을 데이터의 일관성과 격리 속성을 제어.
local, available, majority, linearizable, snapshot의 5개의 수준
'DB > MongoDB' 카테고리의 다른 글
MongoDB의 트랜잭션 (0) | 2022.11.14 |
---|---|
집계 명령어(3) (0) | 2022.11.14 |
집계 명령어(2) (0) | 2022.11.01 |
집계 명령어(1) (0) | 2022.11.01 |
쿼리 작성하기(2) (0) | 2022.10.31 |