옮긴이 머리말 xv
머리말 xvii
이 책에 대하여 xix
감사의 글 xxiii
표지에 대하여 xxv
PART I 최신 웹 애플리케이션을 위한 데이터베이스
CHAPTER 1 몽고DB의 세계 이해하기 4
1.1 도큐먼트 지향 데이터 모델 검토 5
1.2 데이터 수평 확장 8
1.3 몽고DB 생태계 탐색 10
1.4 TCMalloc 버전 향상 13
1.5 몽고DB 쿼리 API 살펴보기 13
요약 14
CHAPTER 2 아틀라스와 몽고DB 데이터로 시작하기 16
2.1 아틀라스 CLI를 사용하여 첫 번째 아틀라스 클러스터 설정하기 17
2.2 샘플 데이터셋 적재하기 22
2.3 프로젝트 접근 목록에 IP 주소 추가하기 23
2.4 사용자 생성하기 24
2.5 몽고DB 셸을 통한 몽고DB 연결 설정 24
2.6 데이터베이스, 컬렉션, 도큐먼트로 데이터 관리하기 26
요약 37
CHAPTER 3 몽고DB와 통신하기 39
3.1 몽고DB Wire Protocol을 통한 상호작용 40
3.2 mongosh 살펴보기 41
3.3 몽고DB Compass 사용해보기 49
3.4 몽고DB 드라이버를 사용하여 연결하기 52
3.5 Node.js 드라이버를 사용하여 연결하기 52
3.6 파이썬 드라이버 활용해보기 56
3.7 루비 드라이버 통합 61
3.8 Mongoid 학습 62
요약 64
CHAPTER 4 CRUD 작업 실행하기 65
4.1 CRUD 작업을 위한 mongosh 연결 66
4.2 도큐먼트 삽입 66
4.3 도큐먼트 갱신 69
4.4 배열 갱신 73
4.5 도큐먼트 교체 79
4.6 도큐먼트 조회 80
4.7 정규 표현식 검색 수행하기 87
4.8 배열 쿼리 89
4.9 임베디드/중첩된 도큐먼트 쿼리하기 92
4.10 정렬, 건너뛰기, 제한 96
4.11 도큐먼트 삭제 97
4.12 bulkWrite() 사용 98
4.13 커서 이해하기 100
4.14 몽고DB Stable API 사용하기 102
요약 104
CHAPTER 5 몽고DB 스키마 설계 105
5.1 몽고DB 데이터 모델 구성 106
5.2 임베딩 vs. 참조 112
5.3 스키마 설계 패턴 이해하기 115
5.4 스키마 유효성 검사 129
5.5 몽고DB 스키마 안티패턴 136
요약 137
CHAPTER 7 쿼리 성능을 위한 인덱싱 159
7.1 몽고DB 쿼리 플래너 160
7.2 지원되는 인덱스 유형 165
7.3 인덱스 삭제 188
7.4 몽고DB 인덱스 속성 189
7.5 인덱스 빌드 이해 194
7.6 인덱스 관리 197
7.7 인덱스를 사용하지 않아야 하는 경우 203
요약 204
CHAPTER 8 멀티도큐먼트 ACID 트랜잭션 실행 206
8.1 WiredTiger 스토리지 엔진 207
8.2 단일 도큐먼트 트랜잭션 209
8.3 ACID 정의 209
8.4 멀티도큐먼트 트랜잭션 210
8.5 몽고DB 트랜잭션 고려 사항 222
요약 223
CHAPTER 9 복제와 샤딩의 사용 224
9.1 복제를 통한 데이터 고가용성 보장 225
9.2 변경 스트림 이해 236
9.3 샤딩을 통한 데이터의 수평적 확장 240
9.4 몽고DB 8.0 샤드 클러스터 기능 262
9.5 데이터 일관성과 가용성 관리 266
요약 272
PART II 몽고DB 아틀라스 데이터 플랫폼
CHAPTER 10 Database as a Service 깊이 살펴보기 278
10.1 공유 M0과 Flex 클러스터 279
10.2 전용 클러스터 283
10.3 글로벌 클러스터 290
10.4 워크로드 격리를 통한 멀티리전 구현 291
10.5 쿼리를 위한 사전 정의된 복제 세트 태그 사용 293
10.6 아틀라스 사용자 정의 쓰기 보장 수준 이해 296
요약 297
CHAPTER 11 아틀라스 검색을 사용한 전문 검색 수행 299
11.1 전문 검색 구현 300
11.2 아파치 루씬의 이해 302
11.3 아틀라스 검색 알아보기 305
11.4 아틀라스 검색 인덱스 구축 311
11.5 아틀라스 검색 쿼리 실행 316
11.6 아틀라스 검색 명령어 학습 338
11.7 아틀라스 검색 플레이그라운드 사용하기 338
요약 340
CHAPTER 12 시맨틱 기술과 아틀라스 벡터 검색 학습하기 343
12.1 임베딩으로 시작하기 344
12.2 아틀라스 벡터 검색과 함께 임베딩 사용 350
12.3 아틀라스 벡터 검색 쿼리 실행하기 356
12.4 프로그래밍 언어로 벡터 검색 실행하기 363
12.5 아틀라스 트리거로 자동화된 임베딩 생성하기 367
12.6 벡터 검색 전용 노드를 통한 워크로드 격리 372
12.7 아틀라스 벡터 검색 성능 향상 373
요약 374
CHAPTER 14 검색 증강 생성 AI 챗봇 구축하기 401
14.1 검색 증강 생성에 대한 통찰 얻기 402
14.2 RAG 생태계에 랭체인 임베딩하기 404
14.3 몽고DB 아틀라스 벡터 검색 RAG 템플릿 소개 405
14.4 AI 챗봇 시작하기 406
14.5 AI 기반 몽고DB 챗봇 생성하기 408
요약 427
CHAPTER 15 이벤트 기반 애플리케이션 구축하기 429
15.1 이벤트 기반 기술 이해하기 430
15.2 스트림 프로세싱 개념 검토하기 432
15.3 아틀라스 스트림 프로세싱 시작하기 434
15.4 아틀라스 스트림 프로세싱 탐색하기 436
15.5 스트림 프로세서 집계 파이프라인 구조화하기 440
15.6 아틀라스 스트림 프로세싱 마스터하기 448
15.7 스트림 프로세싱 흐름 제어하기 474
15.8 아틀라스 스트림 프로세싱 보안 476
요약 477
CHAPTER 16 아틀라스 데이터 페더레이션으로 데이터 프로세싱 최적화하기 480
16.1 쿼리 API를 통한 아마존 S3 및 애저 블롭 스토리지 데이터 쿼리 480
16.2 아틀라스 데이터 페더레이션 아키텍처 학습하기 482
16.3 아틀라스 페더레이티드 데이터베이스 인스턴스 배포 484
16.4 아틀라스 데이터 페더레이션의 제한 사항 484
16.5 아틀라스 데이터 페더레이션의 요금 485
요약 486
CHAPTER 17 아틀라스 온라인 아카이브로 온라인 아카이빙하기 487
17.1 데이터 아카이빙하기 488
17.2 온라인 아카이브 초기화하기 491
17.3 온라인 아카이브 연결 및 쿼리하기 495
17.4 아카이브 데이터 복원하기 498
요약 499
CHAPTER 18 SQL을 사용하여 아틀라스 쿼리하기 501
18.1 아틀라스 SQL 인터페이스 소개 502
18.2 아틀라스 SQL 인터페이스에 연결하기 503
18.3 SQL을 사용하여 몽고DB 쿼리하기 505
요약 511
CHAPTER 19 차트, 데이터베이스 트리거, 함수 생성하기 512
19.1 아틀라스 차트로 데이터 시각화하기 513
19.2 아틀라스 애플리케이션 서비스 521
요약 531
PART III 몽고DB 보안과 운영
CHAPTER 20 아틀라스 몽고DB 보안 기능 이해하기 535
20.1 공유 책임 모델 이해하기 536
20.2 인증 관리 539
20.3 권한 부여 처리 543
20.4 아틀라스 감사하기 548
20.5 아틀라스의 데이터 암호화 551
20.6 네트워크 보안 557
20.7 심층적 방어 구현 560
요약 562
CHAPTER 21 아틀라스를 통한 운영 우수성 565
21.1 백업 전략 및 관행 수립 566
21.2 아틀라스 클러스터의 성능 검사 575
21.3 알림 및 로깅 585
21.4 아틀라스 클러스터 업그레이드 589
요약 590
찾아보기 593
상세 이미지
저자소개
저자 : 아레크 보루츠키(Arek Borucki)
몽고DB 챔피언이자 몽고DB 및 몽고DB 아틀라스 공인 관리자다. 분산 시스템, NoSQL 데이터베이스, 쿠버네티스 분야의 전문가로 활동하고 있다.
역자 : 김인범
RSQUARE의 DATA 기술팀 팀장이자 데이터 엔지니어로, 열정적인 동료들과 함께 여러 데이터 과제를 수행하고 있다. SK AX 클라우드 컴퓨팅 기술팀 및 클라우드 아키텍트 유닛을 거쳐, CNCITY에너지 AI 솔루션팀에서 데이터 엔지니어 및 DBA로 근무했다. 다양한 분야의 데이터에 관심이 많으며 글쓰기를 좋아한다.
출판사 서평
몽고DB를 단순한 NoSQL 데이터베이스로만 알고 있다면, 이제 다시 배울 때다
오늘날 몽고DB 8.0과 몽고DB 아틀라스는 데이터 저장, 검색, 분석, 실시간 처리, AI 애플리케이션 구축까지 포괄하는 데이터 플랫폼으로 확장되고 있다. 데이터 모델링과 샤딩, 인덱싱 같은 전통적인 데이터베이스 역량은 물론, 전문 검색과 벡터 검색, 스트림 처리, 데이터 페더레이션, 온라인 아카이브, 생성형 AI 애플리케이션 구축까지 하나의 플랫폼 안에서 가능하다. 이 책은 이렇게 확장된 몽고DB를 처음부터 다시 이해하게 해주는 실전적인 안내서다.
1부에서는 현대적인 웹 애플리케이션을 위한 데이터베이스로서의 몽고DB의 기초를 다진다. 도큐먼트 지향 데이터 모델과 아틀라스 클러스터 구성, 몽고DB 셸과 드라이버 사용법을 살펴본 뒤, CRUD 작업, 스키마 설계, 집계 파이프라인, 인덱싱, 다중 문서 ACID 트랜잭션, 복제와 샤딩을 다룬다. 명령어를 나열하는 데 그치지 않고, 어떤 데이터 구조가 효율적인지, 어떤 인덱스와 샤딩 전략이 성능과 확장성에 영향을 미치는지를 예제로 설명한다.
2부에서는 이 책의 가장 큰 차별점인 몽고DB 아틀라스 데이터 플랫폼을 본격적으로 다룬다. 아틀라스 클러스터 운영과 아틀라스 검색, 벡터 검색, 로컬 AI 애플리케이션 개발, RAG 챗봇 구축을 통해 생성형 AI 시대에 몽고DB가 어떤 역할을 할 수 있는지 보여준다. 또한 아틀라스 스트림 프로세싱, 데이터 페더레이션, 온라인 아카이브, SQL 인터페이스, 차트, 트리거 등으로 몽고DB가 단순 저장소를 넘어 애플리케이션 데이터 흐름 전체를 지원하는 플랫폼으로 확장되는 과정을 입체적으로 설명한다.
마지막 3부에서는 보안과 운영을 다룬다. 암호화, 접근 제어, 백업과 복구, 성능 모니터링, 느린 쿼리 분석, 운영 우수성 사례를 통해 실제 서비스 환경에서 몽고DB 아틀라스를 안정적으로 관리하는 방법을 익힌다.
몽고DB 8.0의 새로운 기능을 소개하는 데서 멈추지 않고 데이터 모델링부터 검색, AI, 운영까지를 하나의 흐름으로 연결한다는 점이 큰 장점이다. 최신 기능과 아틀라스 중심의 활용법을 체계적으로 안내하는 책으로서, 오늘날 몽고DB를 제대로 다시 배우고 싶은 개발자라면 가장 먼저 읽어볼 실전 가이드북이다.
주요 내용
몽고DB 8.0의 최신 기능
몽고DB 아틀라스 데이터 플랫폼 활용법
데이터 모델링과 집계 파이프라인 설계
샤딩과 복제를 활용한 확장성 확보
전문 검색과 벡터 검색 구현
생성형 AI와 RAG 애플리케이션 구축
스트림 프로세싱, 데이터 페더레이션, 온라인 아카이브 활용
보안, 백업, 성능 최적화 및 운영
책 속에서
몽고DB는 스케일 아웃에 최적화되어 있으며, 도큐먼트 지향 모델을 사용하여 여러 서버에 데이터를 효율적으로 분산시킨다. 몽고DB의 도큐먼트 지향 모델은 각 도큐먼트가 자체 완결적이라는 특성으로 인해 데이터 분산에 적합하며, 필요한 모든 정보가 한곳에 저장된다. 관계형 데이터베이스에서는 흔한 데이터 간의 복잡한 조인의 필요성이 줄어든다는 것을 의미한다. 결과적으로 몽고DB는 서버 간에 데이터를 효율적으로 관리하고 할당할 수 있어, 손쉬운 확장이 가능하다. (…) 그림 1.1은 이러한 스케일 아웃 접근 방식을 보여준다. 이 접근 방식을 구현하는 프로세스를 샤딩(sharding)이라고 한다. 샤딩은 여러 장비에 데이터를 분산시키며, 데이터 확장에 대한 관리를 단순화하기 위해 자동화된 데이터 균형 조정과 부하 분산이 이루어진다. (8쪽)
여러 도큐먼트를 검색하는 조회 작업은 쿼리와 일치하는 모든 도큐먼트를 동시에 직접 제공하지는 않는다. 쿼리가 많은 수의 도큐먼트와 일치할 수 있으므로 이러한 작업들은 커서를 생성한다. 이 커서는 쿼리 기준을 충족하는 도큐먼트를 가리키고, 배치로 도큐먼트를 검색하여 메모리 사용과 네트워크 대역폭을 최소화하는 데 도움이 된다. 커서는 다양하고 세밀하게 조정할 수 있으며, 다양한 시나리오에 맞는 다양한 상호작용 방법을 지원한다. find() 메서드는 커서를 직접 반환한다. (…) 커서를 시작하려면 일반적으로 커서를 반환하는 db.routes.find()와 같은 쿼리를 실행한다. 커서는 모든 도큐먼트를 즉시 반환하지 않고, 배치로 도큐먼트를 가져올 수 있게 한다. 이 커서를 변수에 저장할 수 있다. (100~101쪽)
몽고DB는 WiredTiger를 인수하여 기본 스토리지 엔진으로 통합했으며, 이는 몽고DB의 성능과 확장성을 크게 향상시켰다. WiredTiger는 다중 버전 동시성 제어(MVCC)를 통해 여러 조회 및 쓰기 작업을 차단 없이 동시에 수행함으로써 경합을 최소화한다. 또한 압축 기능을 지원하여 필요한 저장 공간을 줄이고 I/O 효율성을 향상시킨다. 그뿐 아니라 메모리 내 캐싱을 사용하여 빈번한 디스크 접근의 필요성을 줄여 조회 및 쓰기 작업 속도를 대폭 향상시킨다. 자유로운 잠금 메커니즘은 특정 데이터 단위의 작업을 지원함으로써 동시성을 향상시키고 병목현상을 줄여주며, 다음과 같은 여러 스토리지 아키텍처를 지원한다. (207쪽)
아틀라스 루씬을 기반으로 구축된 아틀라스 검색은, 몽고DB 데이터베이스와 함께 별도의 검색 시스템을 실행할 필요성을 제거해준다. 그림 11.2에 표시된 것처럼 아틀라스 검색은 루씬 검색 인덱스를 데이터베이스와 통합하여 두 시스템 간의 자동적인 데이터 동기화를 보장한다. 단일 API를 통해 관리를 간소화하여 별도 시스템의 필요성을 줄이고 운영 복잡성을 낮춘다. 전문 검색은 단일 몽고DB 쿼리 API를 통해 접근할 수 있으며, 몽고DB용과 검색 엔진용 같은 서로 다른 쿼리 언어의 필요성을 제거한다. 이러한 통합된 시스템 아키텍처는 데이터베이스와 검색 엔진 구성 요소의 유지 관리를 단순화하면서 데이터 인덱싱과 검색 속도를 향상시킨다. (305쪽)
스트림 프로세싱 플랫폼을 애플리케이션 스택에 통합하면 추가 드라이버, 도구, 보안 조치를 필요로 하는 복잡성이 높아진다. Apache Kafka Streams, ksqlDB, Apache Flink, Apache Storm, AWS Kinesis와 같은 기술은 실시간 데이터 스트림을 처리하기 위한 강력한 설루션을 제공하지만, 이는 API 단편화와 스키마 경직성 같은 과제도 동반한다. (…) 아틀라스는 더 통합된 설루션을 제공한다. 이벤트는 자연스럽게 유연한 JSON과 유사한 도큐먼트 구조에 매핑되며 강력한 쿼리 API를 사용하여 처리할 수 있는데, 이 둘은 모두 몽고DB 설계의 핵심이다. 이는 이벤트 기반 애플리케이션을 처리하는 더 효율적이고 통합된 접근 방식을 제공한다. (434쪽)
아틀라스 SQL은 SQL 쿼리를 작성하기 위해 집계 파이프라인 스테이지 구문과 단순화된 단축형 구문이라는 두 가지 구문 옵션을 제공한다. mongosh 내에서 두 옵션을 모두 사용하여 쿼리를 작성할 수 있다. $sql 집계 파이프라인 스테이지를 사용하면 컬렉션 내의 데이터에서 SQL 쿼리를 처리하여 아틀라스 SQL 쿼리를 작성할 수 있다. (…) 예제 18.2와 같이 간결한 db.sql 메서드를 사용하여 아틀라스 SQL 문을 직접 입력할 수 있다. 이 구문은 SQL 문을 직접 전달하여 더 복잡한 집계 파이프라인 구조를 우회함으로써 몽고DB 내에서 SQL 쿼리 실행을 단순화한다. (505~507쪽)
리뷰(0)
0 / 5.0
리뷰를 작성하시면 소정의 적립금을 드립니다.
도서의 첫번째 리뷰부터 10번째 리뷰까지는 기본 적립금의 2배를 적립해 드립니다.
리뷰 혜택 및 유의사항
리뷰 작성 안내 및 유의사항
•
리뷰 작성 시 관리자 확인 후 적립금이 지급되며 영업일 기준 평균 1~2일 소요될 수 있습니다.
•
적립금 유효기간은 적립 일로부터 1년입니다.
•
적립금이 지급된 리뷰는 수정,삭제가 불가합니다.
•
최소 20자 이상 리뷰 작성 시 적립금이 지급됩니다.
기본 적립금
•구매상품
3개월 까지
300원
(100자 이상)
100원
(100자 미만)
3개월 이후
100원
(20자 이상)
•비구매 상품 리뷰 작성 시 적립금은 적립되지 않는 점 참고바랍니다.
2배 적립금
상품의 첫번째 리뷰부터 10번째 리뷰까지는 기본 적립금의 2배를 적립해 드리며, 이후 리뷰부터는 기본 적립금이 적립됩니다.
아래에 해당하는 글은 리뷰 승인이 되지 않을 수 있습니다.
•
상품 내용과 무관한 사진 및 글을 작성한 경우
•
시리즈나 세트 상품이라 하더라도 비슷한 내용을 반복적으로 올리거나 같은 글을 복사해서 올리는 경우
•
기타 상품 리뷰에 적합하지 않은 내용이 있는 경우
•
비속어를 사용하거나 상품에 관한 잘못된 정보를 전달하는 경우
•
상업적 목적의 광고성 내용이나 저작권, 명예훼손 등의 우려가 있는 경우
작성하신 리뷰는 본 사의 마케팅 활동(온라인 이벤트, 프로모션, 광고 등)에 사용될 수 있습니다.
상품의 주문/취소, 배송·포장, 파본, 재입고 등 CS/배송 서비스 관련 문의는 1:1 게시판을 이용해 주세요.