데이터 모델링과 인덱스 (1)

2022. 11. 14. 23:16DB/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