MongoDB 운영 가이드 - low-hill/Knowledge GitHub Wiki
몽고디비의 초기 사이징을 결정할 때 고려해야 할 주요 요소들을 설명해드리겠습니다:
1. MongoDB 데이터 크기 예측 가이드
1. 단일 문서 크기 계산
예시 문서 구조
{
"id": ObjectId, // 12 bytes
"userId": String, // ~24 bytes
"name": String, // ~20 bytes
"email": String, // ~32 bytes
"createdAt": Date, // 8 bytes
"updatedAt": Date // 8 bytes
}
// 예상 크기: ~104 bytes + 문서 오버헤드
고려사항
- BSON 형식 오버헤드: 약 문서당 +30-60 bytes
- 필드명도 저장 공간 차지
- 가변 길이 필드는 최대 길이 고려
2. 예상 문서 수 계산
월간/연간 문서 수 계산 공식
일일 신규 문서 수 = (일일 활성 사용자 수 × 사용자당 생성 문서 수)
월간 문서 수 = 일일 문서 수 × 30
연간 문서 수 = 월간 문서 수 × 12
3. 전체 데이터 크기 계산
계산 공식
기본 데이터 크기 = 문서 크기 × 총 문서 수
인덱스 크기 = 기본 데이터 크기 × 0.2 (일반적으로 20% 추가)
총 필요 용량 = (기본 데이터 크기 + 인덱스 크기) × 1.3 (30% 여유 공간)
4. 성장률 계산
예상 크기 계산 공식
6개월 예상 크기 = 현재 크기 × (1 + 월간성장률)^6
12개월 예상 크기 = 현재 크기 × (1 + 월간성장률)^12
5. 실제 크기 측정 명령어
컬렉션 크기 확인
db.runCommand({
collStats: "yourCollection",
scale: 10241024 // MB 단위로 보기
})
데이터베이스 전체 크기 확인
db.runCommand({
dbStats: 1,
scale: 10241024
})
6. 크기 예측 체크리스트
- 문서당 평균 크기 계산
- 예상 문서 증가량 계산
- 인덱스 크기 고려
- 백업 공간 고려
- 로그 파일 크기 고려
- 성장률 반영
- 버퍼 공간 (30% 이상) 확보
7. 주의사항
- 압축 사용 시 실제 저장 공간은 줄어들 수 있음
- WiredTiger 스토리지 엔진 사용 시 기본 압축률 고려
- 샤딩 계획이 있다면 초기부터 고려
- 백업 정책에 따른 추가 공간 필요
8. 권장 모니터링 도구
- MongoDB Compass
- MongoDB Atlas 모니터링
- Google Cloud Monitoring
참고사항
초기 설정 후 최소 3개월간 성장 패턴을 면밀히 모니터링하여 예측의 정확도를 높이는 것을 권장합니다.
- 워크로드 특성
- 동시 접속자 수
- 읽기/쓰기 비율
- 쿼리 복잡도
- 피크 시간대 트래픽
- 권장 초기 사이징 가이드
- 소규모 시작:
- vCPU: 2-4개
- RAM: 8-16GB
- 스토리지: 50-100GB
- 중간 규모 시작:
- vCPU: 4-8개
- RAM: 16-32GB
- 스토리지: 100-500GB
- 구글 클라우드 특화 고려사항
- 머신 타입: n1-standard 또는 n2-standard 시리즈 권장
- 영구 디스크: SSD 권장
- 리전 선택: 한국 리전 사용 시 지연시간 최소화
- 확장성 계획
- 수직적 확장(Scale-up) 가능성
- 수평적 확장(Scale-out) 계획
- 샤딩 전략
- 모니터링 설정 (Google Cloud Monitoring)
- CPU 사용률
- 메모리 사용량
- 디스크 I/O
- 네트워크 대역폭 초기 구성 후에는 실제 사용 패턴을 모니터링하면서 필요에 따라 조정하는 것이 좋습니다. 특히 처음 1-2개월 동안은 면밀한 모니터링이 필요합니다.