PART 1 스케일링 MongoDB
1장. 분산 컴퓨팅의 세계에 오신 것을 환영합니다!
1 샤딩이란 무엇인가?
2장. 샤딩 이해하기
1 데이터 분할
1-1 데이터 분산
1-2 청크는 어떻게 생성되는가
2 밸런싱
2-1 일상적 밸런싱에 얽힌 정신병리학
3 mongos
4 설정 서버
5 클러스터 해부하기
3장 클러스터 구축
1 샤드 키 선택하기
1-1 카디널리티가 적은 샤드 키
1-2 값이 증가하는 샤드 키
1-3 무작위 샤드 키
1-4 좋은 샤드 키
2 새 컬렉션 샤딩하기
2-1 속성 매뉴얼
2-2 설정 서버
2-3 mongos
2-4 샤드
2-5 데이터베이스와 컬렉션
3 기존 컬렉션을 샤딩하기
3-1 컬렉션 샤딩 준비
3-2 shardcollection 실행
4 저장 공간을 추가하고 삭제할 때
4-1 샤드 제거하기
4-2 샤드를 구성하는 서버 교체하기
4장. 클러스터 운용
1쿼리 수행
2 왜 이런 결과를 얻게 될까?
2-1 문서 개수
2-2 고유 색인
2-3 갱신
3 맵리듀스
3-1 임시 컬렉션
5장. 관리
1 셸 사용하기
1-1 요약 정보 보기
1-2 "config" 컬렉션
1-3 ○○ 작업을 하려는데, 어디로 접속해야 하나요?
2 모니터링
2-1 mongostat
2-2 웹 관리 도구 인터페이스
3 백업
3-1 설정 서버 백업
4 시스템 구성 제안
4-1 비상 사이트를 만들어 놓자
4-2 해자를 설치하자
5 오작동에 대한 대처
5-1 샤드 자체가 다운된 경우
5-2 샤드 구성원 대부분이 다운된 경우
5-3 설정 서버가 다운된 경우
5-4 mongos 프로세스가 다운된 경우
5-5 그 밖에 고려할 점
6장 더 읽어보기
PART 2 MongoDB 팁 & 트릭
7장. 애플리케이션 디자인 팁
TIP 11 속도가 중요하면 복제를, 데이터 무결성integrity이 중요하면 참조를 사용하라
TIP 12 데이터가 미래에도 유용한 상태이기를 원하면 정규화하라
TIP 13 단일 쿼리로 데이터를 가져오라
TIP 14 의존적인 필드는 내장하라
TIP 15 특정 시점의 데이터는 내장하라
TIP 16 계속해서 커지는 필드는 내장하지 말라
TIP 17 미리 만들 수 있는 것은 만들어 놓자
TIP 18 가능하면 공간을 미리 할당하라
TIP 19 데이터를 내장할 때, 식별자identifier 없이 검색하려면 배열에 저장하라
TIP 10 문서가 자급자족할 수 있도록 설계하라
TIP 11 자바스크립트보다는 제한자를 사용하라
TIP 12 집계는 다른 작업과 함께 처리한다
TIP 13 데이터 무결성 문제에 대처하는 코드를 작성하라
8장. 구현 관련 팁
TIP 14 정확한 데이터 타입을 사용하라
TIP 15 간단하고 고유성을 갖는 자체적인 id 체계가 있다면 id 대신 사용하라
TIP 16 id 필드에 문서를 넣지 말라
TIP 17 데이터베이스 참조를 사용하지 말라
TIP 18 작은 이진 데이터를 저장할 때는 GridFS를 사용하지 말라
TIP 19 장애 극복은 깔끔하게 처리하라
TIP 20 레플리카 셋의 고장 및 장애극복에 대처하라
9장. 최적화를 위한 팁
TIP 21 디스크 접근을 최소화하라
TIP 22 보다 적은 메모리로 많은 작업을 수행하기 위해 색인을 사용하라
TIP 23 무조건 색인을 사용하지는 말라
TIP 24 색인만으로도 쿼리를 수행할 수 있는 색인을 생성하라
TIP 25 여러 개의 쿼리를 빠르게 수행하려면 복합 색인을 사용하라
TIP 26 탐색 속도를 높이려면 문서를 계층적으로 생성한다
TIP 27 AND 쿼리의 수행은 적은 것이 가능한 빨리 실행되도록 하라
TIP 28 OR 쿼리는 많은 것이 가능한 빨리 실행되도록 하라
10장. 데이터 안전성 및 일관성
TIP 29 단일 서버 환경에서는 저널에, 다중 서버 환경에서는 레플리카에 쓰라
TIP 30 항상 레플리케이션이나 저널링, 혹은 둘 다 사용하라
TIP 31 데이터를 복구할 때 repair 명령에 의존하지 말라
TIP 32 getlasterror를 이해하라
TIP 33 개발 중에는 언제나 안전한 쓰기를 사용하라
TIP 34 레플리케이션을 사용할 때는 w를 사용하라
TIP 35 w를 사용할 때는 항상 wtimeout을 같이 사용하라
TIP 36 쓰기 연산마다 fsync를 수행하지 말라
TIP 37 서버가 멈추었을 때는 보통의 방법으로 재시작하라
TIP 38 서버의 순간적인 백업을 만들 때
11장. 시스템 관리 팁
TIP 39 청크 컬렉션은 수동으로 삭제하라
TIP 40 repair 명령을 통해 데이터베이스를 밀도 있게 관리하라
TIP 41 레플리카 셋 구성원의 표 수를 변경하지 말라
TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다
TIP 43 --shardsvr와 --configsvr 옵션이 필수는 아니다
TIP 44 --notablescan 옵션은 개발 중에만 사용하라
TIP 45 자바스크립트를 조금은 배워 두라
TIP 46 모든 서버와 데이터베이스는 하나의 셸에서 관리하라
TIP 47 함수에 대해 자세한 사항을 보려면 "help"를 수행하라
TIP 48 구동 파일을 작성하라
TIP 49 자신이 만든 함수를 추가하라
TIP 50 스스로 쓴 것을 다시 읽는 명령은 단일 접속을 통해서 수행하라