몽고db

Jane의 study note.·2022년 10월 11일
0

몽고DB

목록 보기
1/1

몽고디비 소스코드

1부 시작하기

1장 최신 웹을 위한 도큐먼트 데이터베이스

1.1 인터넷에서 태어나다 6
1.2 MongoDB의 핵심 기능 7
1.2.1 도큐먼트 데이터 모델 7
1.2.2 애드혹 쿼리 11
1.2.3 인덱스 12
1.2.4 복제 14
1.2.5 속도와 내구성 14
1.2.6 확장 16
1.3 MongoDB 코어 서버와 툴 18
1.3.1 코어 서버 19
1.3.2 자바스크립트 셸 19
1.3.3 데이터베이스 드라이버 20
1.3.4 커맨드라인 툴 21
1.4 MongoDB를 사용하는 이유 22
1.4.1 MongoDB와 다른 데이터베이스 비교 23
1.4.2 사용 예와 배포 27
1.5 팁과 한계 29
1.6 MongoDB 역사 31
1.7 추가적인 자료 34
1.8 요약 35

2장 자바스크립트 셸을 통한 MongoDB

2.1 MongoDB 셸 경험하기 37
2.1.1 셸 시작하기 37
2.1.2 데이터베이스, 컬렉션, 도큐먼트 38
2.1.3 삽입과 질의 39
2.1.4 도큐먼트 업데이트 43
2.1.5 데이터 삭제 48
2.1.6 기타 셸 특징 49
2.2 인덱스 생성과 질의 50
2.2.1 대용량 컬렉션 생성 50
2.2.2 인덱싱과 explain( ) 52
2.3 기본적인 관리 58
2.3.1 데이터베이스 정보 얻기 58
2.3.2 명령어가 작동하는 방식 60
2.4 도움말 얻기 62
2.5 요약 64

3장 MongoDB를 이용한 프로그래밍

3.1 루비를 통해 보는 MongoDB 66
3.1.1 설치와 연결 66
3.1.2 루비에서 도큐먼트 삽입 68
3.1.3 쿼리와 커서 70
3.1.4 업데이트와 삭제 71
3.1.5 데이터베이스 명령어 73
3.2 드라이버 작동 원리 74
3.2.1 객체 ID 생성 74
3.3 트위터 모니터링 애플리케이션 구축 77
3.3.1 설정 77
3.3.2 데이터 수집 79
3.3.3 아카이브 열람 82
3.4 요약 86

2부 MongoDB 애플리케이션 개발

4장 도큐먼트 지향 데이터

4.1 스키마 설계 원리 92
4.2 전자상거래 데이터 모델 설계 94
4.2.1 스키마 기본 95
4.2.2 사용자와 주문 100
4.2.3 상품평 103
4.3 실제적 세부사항: 데이터베이스, 컬렉션, 도큐먼트 104
4.3.1 데이터베이스 104
4.3.2 컬렉션 109
4.3.3 도큐먼트와 인서트 115
4.4 요약 122

5장 쿼리 작성하기

5.1 전자상거래 쿼리 124
5.1.1 상품, 카테고리, 리뷰 124
5.1.2 사용자와 주문 127
5.2 MongoDB의 쿼리 언어 129
5.2.1 질의 조건과 셀렉터 129
5.2.2 쿼리 옵션 147
5.3 요약 150

6장 집계

6.1 집계 프레임워크 개요 152
6.2 전자상거래 집계 예제 154
6.2.1 상품, 카테고리, 리뷰 156
6.2.2 사용자와 주문 164
6.3 집계 파이프라인 연산자 168
6.3.1 $project 169
6.3.2 $group 170
6.3.3 $match, $sort, $skip, $limit 172
6.3.4 $unwind 173
6.3.5 $out 174
6.4 도큐먼트 재구성 175
6.4.1 문자열 함수 176
6.4.2 산술 함수 177
6.4.3 날짜/시간 함수 177
6.4.4 논리 함수 178
6.4.5 집합 함수 178
6.4.6 기타 함수 180
6.5 집계 파이프라인 성능에 대한 이해 181
6.5.1 집계 파이프라인 옵션 182
6.5.2 집계 파이프라인의 explain( ) 함수 182
6.5.3 allowDiskUse 옵션 186
6.5.4 집계 커서 옵션 187
6.6 기타 집계 기능 188
6.6.1 .count( )와 .distinct( ) 189
6.6.2 맵리듀스 189
6.7 요약 192

7장 업데이트, 원자적 연산, 삭제 194
7.1 도큐먼트 업데이트 195
7.1.1 대치에 의한 수정 196
7.1.2 연산자에 의한 수정 196
7.1.3 두 방법의 비교 197
7.1.4 결정: 대치 vs. 연산자 198
7.2 전자상거래 업데이트 199
7.2.1 상품과 카테고리 200
7.2.2 리뷰 205
7.2.3 주문 207
7.3 원자적 도큐먼트 프로세싱 210
7.3.1 주문 상태 전이 211
7.3.2 재고 관리 214
7.4 실제적인 세부사항: MongoDB 업데이트와 삭제 220
7.4.1 업데이트 타입과 옵션 221
7.4.2 업데이트 연산자 222
7.4.3 findAndModify 명령 233
7.4.4 삭제 234
7.4.5 동시성, 원자성, 고립 235
7.4.6 업데이트 성능 236
7.5 업데이트 연산자 리뷰 238
7.6 요약 239

3부 MongoDB 마스터하기
8장 인덱싱과 쿼리 최적화 243
8.1 인덱싱의 이론적 고찰 244
8.1.1 개념 실험 244
8.1.2 인덱싱 핵심 개념 248
8.1.3 B-트리 253
8.2 인덱싱의 실제 255
8.2.1 인덱스 타입 255
8.2.2 인덱스 관리 260
8.3 쿼리 최적화 267
8.3.1 느린 쿼리 탐지 268
8.3.2 느린 쿼리 분석 274
8.3.3 쿼리 패턴 296
8.4 요약 299

9장 텍스트 검색 300
9.1 텍스트 검색 ― 단지 패턴 매칭만은 아니다 301
9.1.1 텍스트 검색 vs. 패턴 일치 303
9.1.2 텍스트 검색 vs. 웹 페이지 검색 303
9.1.3 MongoDB 텍스트 검색 vs. 전용 텍스트 검색 엔진 306
9.2 Manning 서적 카탈로그 데이터 다운로드 310
9.3 텍스트 검색 인덱스의 정의 312
9.3.1 텍스트 인덱스 크기 313
9.3.2 인덱스 이름 지정 및 컬렉션의 모든 텍스트 필드 인덱싱 314
9.4 기본 텍스트 검색 315
9.4.1 더 복잡한 검색 317
9.4.2 텍스트 검색 스코어 320
9.4.3 텍스트 검색 스코어에 의한 결과 정렬 321
9.5 집계 프레임워크 텍스트 검색 322
9.5.1 MongoDB In Action, Second Edition은 어디에 있나? 324
9.6 텍스트 검색 언어 327
9.6.1 인덱스에서의 언어 지정 327
9.6.2 도큐먼트에서 언어 지정 329
9.6.3 검색에서 언어 지정 330
9.6.4 사용 가능한 언어 332
9.7 요약 334

10장 WiredTiger와 플러그형 스토리지 335
10.1 플러그형 스토리지 엔진 API 335
10.1.1 왜 다른 스토리지 엔진을 사용할까? 336
10.2 WiredTiger 338
10.2.1 WiredTiger로의 전환 338
10.2.2 데이터베이스를 WiredTiger로 마이그레이션 340
10.3 MMAPv1과의 비교 341
10.3.1 구성 파일 342
10.3.2 삽입 스크립트와 벤치마크 스크립트 344
10.3.3 삽입 벤치마크 결과 347
10.3.4 읽기 성능 스크립트 348
10.3.5 읽기 성능 결과 350
10.3.6 벤치마크 결론 353
10.4 플러그형 스토리지 엔진의 다른 예 354
10.5 고급 주제 355
10.5.1 플러그형 스토리지 엔진은 어떻게 동작할까? 355
10.5.2 데이터 구조 357
10.5.3 잠금 360
10.6 요약 360

11장 복제 362
11.1 복제 개관 363
11.1.1 복제의 중요성 363
11.1.2 복제의 사용 예와 한계 365
11.2 복제 세트 367
11.2.1 셋업 367
11.2.2 복제 작동 방식 376
11.2.3 관리 385
11.3 드라이버와 복제 397
11.3.1 연결과 장애조치 397
11.3.2 쓰기 concern 400
11.3.3 읽기 스케일링 402
11.3.4 태깅 404
11.4 요약 407

12장 샤딩을 통한 시스템 확장 409
12.1 샤딩 개관 410
12.1.1 샤딩이란 무엇인가? 410
12.1.2 언제 샤딩을 할 것인가? 411
12.2 샤드 클러스터 구성 요소의 이해 413
12.2.1 샤드: 애플리케이션 데이터의 저장소 414
12.2.2 mongos 라우터: 연산 라우터 414
12.2.3 설정 서버: 메타데이터의 저장소 415
12.3 샤드된 클러스터에서의 데이터 분산 416
12.3.1 샤드된 클러스터에 데이터를 분산시킬 수 있는 방법 417
12.3.2 샤드에 데이터베이스 분산 처리 418
12.3.3 컬렉션 내에서 샤딩하기 419
12.4 샘플 샤드 클러스터 구축하기 420
12.4.1 mongod와 mongos 서버 시작하기 421
12.4.2 클러스터 설정 424
12.4.3 샤딩 컬렉션 425
12.4.4 샤딩 클러스터에서의 쓰기 연산 427
12.5 샤딩 클러스터 질의 및 인덱싱 435
12.5.1 쿼리 라우팅 435
12.5.2 샤드 클러스터에서 인덱싱하기 436
12.5.3 샤드 클러스터에서의 explain( ) 437
12.5.4 샤드 클러스터에서의 집계 439
12.6 샤드 키 선택 440
12.6.1 불균형적인 쓰기(핫스팟) 441
12.6.2 분할될 수 없는 청크(낮은 수준의 세분화) 443
12.6.3 부족한 타깃팅(쿼리에 샤드 키가 없음) 444
12.6.4 이상적인 샤드 키 444
12.6.5 고유한 설계 트레이드 오프(이메일 애플리케이션) 445
12.7 실제 서비스에서의 샤딩 447
12.7.1 프로비저닝 448
12.7.2 배포 451
12.7.3 유지 보수 453
12.8 요약 459

13장 배포와 관리 460
13.1 하드웨어와 프로비저닝 461
13.1.1 클러스터 구성 461
13.1.2 배포 환경 463
13.1.3 프로비저닝 471
13.2 모니터링과 진단 473
13.2.1 로깅 473
13.2.2 MongoDB 진단 명령어 474
13.2.3 MongoDB 진단 도구 475
13.2.4 MongoDB 모니터링 서비스 478
13.2.5 외부 모니터링 애플리케이션 478
13.3 백업 479
13.3.1 mongodump와 mongorestore 480
13.3.2 데이터 파일 기반 백업 481
13.3.3 MMS 백업 482
13.4 보안 483
13.4.1 안전한 환경 483
13.4.2 네트워크 암호화 484
13.4.3 인증 487
13.4.4 복제 세트 인증 492
13.4.5 샤딩 인증 494
13.4.6 엔터프라이즈 보안 특징 494
13.5 관리 작업 494
13.5.1 데이터 들여오기와 내보내기 494
13.5.2 압축과 복구 496
13.5.3 업그레이드 497
13.6 성능 문제 해결 498
13.6.1 작업 데이터 499
13.6.2 성능 절벽 500
13.6.3 쿼리 상호작용 500
13.6.4 전문가의 도움 501
13.7 배포 체크리스트 502
13.8 요약 504

부록 A MongoDB 설치 505
A.1 설치 505
A.1.1 실제 서비스 배포 506
A.1.2 32비트 vs. 64비트 506
A.2 리눅스 506
A.2.1 이미 컴파일된 바이너리로 설치 507
A.2.2 패키지 매니저를 이용한 설치 508
A.3 맥 OS X 508
A.3.1 이미 컴파일된 바이너리 509
A.3.2 패키지 매니저를 이용한 설치 510
A.4 윈도우 511
A.4.1 컴파일된 바이너리 설치 파일을 이용한 설치 511
A.5 소스 컴파일 512
A.6 문제 해결 513
A.6.1 다른 아키텍처 513
A.6.2 데이터 디렉터리의 부재 513
A.6.3 권한의 부족 514
A.6.4 포트 바인딩 실패 514
A.7 기본 설정 옵션 515
A.8 루비 설치 516
A.8.1 리눅스와 맥 OS X 517
A.8.2 윈도우 517

부록 B 설계 패턴 518
B.1 임베드 vs. 레퍼런스 518
B.2 일대다 519
B.3 다대다 520
B.4 트리 521
B.5 작업자 큐 525
B.6 동적 속성 527
B.7 트랜잭션 529
B.8 지역성 및 선 계산 530
B.9 안티 패턴 531
B.9.1 부주의한 인덱싱 531
B.9.2 모틀리(Motley) 타입 531
B.9.3 버킷(bucket) 컬렉션 531
B.9.4 깊게 중첩된 대용량 도큐먼트 532
B.9.5 사용자당 한 컬렉션 532
B.9.6 샤드 불가능한 컬렉션 532

부록 C 이진 데이터 및 GridFS 533
C.1 간단한 이진 저장 534
C.1.1 섬네일 저장 534
C.1.2 MD5 저장 535
C.2 GridFS 536
C.2.1 루비에서의 GridFS 537
C.2.2 mongofiles 유틸리티 540

찾아보기 543

0개의 댓글