-
[개념] MongoDB 알고 사용하기 - 데이터 모델링STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 02:13
개요
- 하나의 MongoDB 인스턴스는 여러 개의 데이터베이스(scheme)를 가질 수 있고, 각 데이터베이스는 다시 여러 개의 컬렉션을 가진다.
데이터베이스와 컬렉션
1) 네임스페이스
- MongoDB에서 데이터베이스 이름과 컬렉션의 이름 조합을 '네임스페이스'라고 한다.
- WiredTiger 스토리지 엔진에서는 별도의 네임스페이스 파일을 사용하지 않기 때문에 MMAPv1 스토리지 엔진과 달리 최대로 생성할 수 있는 컬렉션이나 인덱스의 개수에 제약이 없다.
2) 데이터베이스
- WiredTiger 스토리지 엔진은 MySQL과 동등한 수준인 도큐먼트(레코드) 수준의 잠금을 제공한다.
3) 컬렉션
- 샤딩 관점
- MongoDB는 내부적으로 이미 샤딩 기능을 가지고 있기 때문에 컬렉션 단위의 샤딩은 별도로 크게 고려하지 않아도 된다.
- 컬렉션 분리 관점
-
- 정기적으로 대량의 데이터를 삭제해야 하는 요건이 있다면, 그리고 그 삭제 작업이 서비스 중인 상태에 실행되어야 한다면 이때는 삭제 단위로 컬렉션을 분리하는 방법이 좋은 선택이 될 것이다.
- 하나의 컬렉션에 저장되는 도큐먼트들의 액세스 패턴이 많이 다를 때에도 컬렉션을 물리적으로 분리하고, 자주 읽히는 데이터 위주로 메모리 캐시를 활용하도록 유도하면 성능상 이점을 기대할 수 있을 것으로 보인다.
- 컬렉션 설계에서 중요한 것은 샤드 키의 선정이다.
- 샤드 키를 잘못 선정하면, MongoDB의 데이터 분산 효과를 무효로 만들 정도의 영향을 미침
4) BSON 도큐먼트
- Binary JSON의 약자로 JSON 형태의 도큐먼트를 바이너리 포맷으로 인코딩한 도큐먼트를 의미한다.
데이터 타입
- MongoDB 서버는 최종적으로 데이터를 BSON으로 인코딩해서 디스크에 저장하므로 결국 BSON이 지원하는 데이터 타입만 사용할 수 있다.
'STOVE DEVCAMP 3기 > 알림 서비스' 카테고리의 다른 글
[알림 서비스] 알림 서비스 구조 개선 - 알림 전송 외부 라이브러리 의존성 분리 리팩토링 (0) 2023.03.10 [알림 서비스] 알림 서비스 구조 개선 - 신뢰성 있는 알림 서비스 제공 (0) 2023.03.10 [알림 서비스] 알림 서비스 데이터베이스 설계 (0) 2023.03.10 [개념] MongoDB 알고 사용하기 (0) 2023.03.10 [알림 서비스] 전체 구성 설계 (0) 2023.03.10