Real MongoDB

Real MongoDB

$51.94
Description
MongoDB의 "Know-How"가 아닌 "Know-Why"를 전달해 드립니다!
MongoDB 메뉴얼은 아주 간결하고 기본적인 내용에 충실하게 작성되어 있다. 하지만 문법이나 명령만으로는 DBMS를 사용할 수 없다. 내부 작동 방식을 모르면 수많은 시행착오를 거치게 되며, 이런 시행착오는 결국 서비스 품질 저하로 연결될 것이다. 이 책에서는 MongoDB 서버를 사용하는 데 꼭 필요한 아키텍처와 함께 MongoDB 내부(Internal)에 대해 자세히 설명하고 있다. 또한 다양한 시행 착오를 줄이기 위한 주의 사항들에 대해서도 설명한다.

이 책은 MongoDB 서버(특히 MongoDB 1.x와 2.x 버전)에 실망했던 독자들에게 다시 한 번 MongoDB 서버의 가능성을 보여주고, 새로운 DBMS 솔루션을 찾고 있는 독자들에게 대안을 제시해 줄 것이라 생각한다.
저자

이성욱

저자이성욱은컴퓨터과학을전공하고,금융권의CRM/DW프로젝트리더로참여했으며,2년여간DW를위한ETL솔루션을개발했다.이후네이버와라인의DBA로근무했으며현재카카오에서DB운영과트러블슈팅그리고신기술벤치마킹과DBMS엔진최적화를수행하고있다.또한지금까지배운내용과경험한것을전파하기위해서저술활동과세미나를진행하고있다.

[저서]
PHP5웹프로그래밍(2007.대림)
RealMySQL(2012.위키북스)
RealMariaDB(2014.위키북스)

[번역서]
MySQL성능최적화(2010.위키북스)

목차

▣01장:MongoDB
1.1데이터베이스트렌드
1.2MongoDB의라이선스
1.3MongoDB버전
__1.3.1setFeatureCompatibilityVersion옵션
1.4MongoDBvs.RDBMS(MySQL)
1.5MongoDBvs.NoSQL(HBase)
1.6MongoDB아키텍처
1.7MongoDB배포형태
__1.7.1단일노드(Standalone)
__1.7.2단일레플리카셋(SingleReplica-set)
__1.7.3샤딩된클러스터(ShardedCluster)

▣02장:스토리지엔진
2.1플러그인스토리지엔진
__2.1.1MongoDB스토리지엔진
__2.1.2스토리지엔진혼합사용
2.2MMAPv1스토리지엔진
__2.2.1MMAPv1스토리지엔진설정
__2.2.2데이터파일구조
__2.2.3MongoDB서버상태확인
__2.2.4운영체제캐시
__2.2.5데이터파일프레그멘테이션
2.3WiredTiger스토리지엔진
__2.3.1WiredTiger스토리지엔진설정
__2.3.2WiredTiger스토리지의저장방식
__2.3.3데이터파일구조
__2.3.4WiredTiger의내부작동방식
__2.3.5공유캐시
__2.3.6캐시이빅션(CacheEviction)
__2.3.7체크포인트(Checkpoint)
__2.3.8MVCC(MultiVersionConcurrencyControl)
__2.3.9데이터블록(페이지)
__2.3.10운영체제캐시(페이지캐시)
__2.3.11압축
__2.3.12암호화
2.4메모리스토리지엔진
__2.4.1PerconaMongoDB의메모리스토리지엔진설정
__2.4.2Percona메모리스토리지엔진의특성
2.5기타스토리지엔진

▣03장:복제
3.1복제란?
__3.1.1컨센서스알고리즘(ConsensusAlgorithm)
__3.1.2복제의목적
3.2레플리카셋멤버
__3.2.1프라이머리(Primary)
__3.2.2세컨드리(Secondary)
__3.2.3아비터(Arbiter)
3.3프라이머리선출(PrimaryElection)
__3.3.1프라이머리텀(PrimaryTerm)
__3.3.2프라이머리스텝다운(PrimaryStepDown)
__3.3.3프라이머리선출시나리오
__3.3.4프라이머리선출시정족수(Quorum)의의미
__3.3.5롤백(Rollback)
__3.3.6롤백(Rollback)데이터재처리
3.4복제아키텍처
__3.4.1복제로그(OpLog)구조
__3.4.2local데이터베이스
__3.4.3초기동기화(InitialSync)
__3.4.4실시간복제(Replication)
3.5복제로그(OperationLog)설정
__3.5.1OpLog컬렉션크기설정
__3.5.2복제동기화상태확인
__3.5.3OpLog컬렉션과백업
3.6레플리카셋설정
__3.6.1하트비트(Heartbeat)메시지주기와프라이머리선출타임아웃
__3.6.2레플리카셋멤버설정
3.7레플리카셋배포
__3.7.1레플리카셋멤버의수
__3.7.2DR(DisasterRecovery)구성
__3.7.3레플리카셋배포시주의사항

▣04장:샤딩
4.1샤딩(Sharding)이란?
__4.1.1샤딩의필요성
__4.1.2샤딩의종류
4.2MongoDB샤딩아키텍처
__4.2.1샤드클러스터(ShardedCluster)컴포넌트
__4.2.2샤드클러스터의쿼리수행절차(라우터와컨피그서버의통신)
__4.2.3컨피그서버
__4.2.4컨피그서버의복제방식
__4.2.5컨피그서버가용성과쿼리실행
__4.2.6라우터(mongos)
__4.2.7라우터의쿼리분산
__4.2.8라우터배포
__4.2.9컨넥션풀관리
__4.2.10백업복구시주의사항
4.3샤딩알고리즘
__4.3.1청크(Chunk)
__4.3.2레인지샤딩(RangeSharding)
__4.3.3해시샤딩(HashedSharding)
__4.3.4지역기반샤딩(ZoneSharding)
__4.3.5샤드키
4.4프라이머리샤드
4.5청크밸런싱
__4.5.1샤드클러스터밸런서
__4.5.2청크스플릿(Chunksplit)
__4.5.3청크머지(Chunkmerge)
__4.5.4청크이동(Chunkmigration)
__4.5.5청크사이즈변경
__4.5.6점보청크(JumboChunk)
__4.5.7고아도큐먼트(Orphaneddocument)삭제
4.6샤딩으로인한제약
__4.6.1트랜잭션
__4.6.2샤딩과유니크인덱스
__4.6.3조인과그래프쿼리
__4.6.4기존컬렉션에샤딩적용

▣05장:인덱스
5.1디스크읽기방식
__5.1.1디스크저장매체
__5.1.2랜덤I/O와순차I/O
5.2인덱스란?
5.3MongoDB인덱스의개요
__5.3.1클러스터링인덱스
__5.3.2인덱스내부
__5.3.3로컬인덱스(LocalIndex)
__5.3.4인덱스키엔트리자료구조
5.4B-Tree인덱스
__5.4.1구조및특성
__5.4.2B-Tree인덱스키추가및삭제
__5.4.3B-Tree인덱스사용에영향을미치는요소
__5.4.4B-Tree인덱스를통한데이터읽기
__5.4.5컴파운드인덱스(CompoundIndex)
__5.4.6B-Tree인덱스의정렬및스캔방향
__5.4.7B-Tree인덱스의가용성과효율성
5.5해시(Hash)인덱스
__5.5.1해시인덱스의구조및특성
__5.5.2해시인덱스의가용성및효율성
__5.5.3MongoDB해시인덱스의구조및특성
__5.5.4MongoDB해시인덱스의제한사항
5.6멀티키인덱스
__5.6.1멀티키인덱스의주의사항
__5.6.2멀티키인덱스의성능
__5.6.3멀티키인덱스의제한사항
5.7전문검색인덱스
__5.7.1형태소분석알고리즘
__5.7.2N-Gram알고리즘
__5.7.3형태소분석과N-Gram의장단점
__5.7.4전문검색인덱스의활용
__5.7.5부정비교와문장검색
__5.7.6MongoDB전문검색인덱스의버전호환성
__5.7.7전문검색인덱스의제약사항
5.8공간검색인덱스
__5.8.1GeoHash알고리즘
__5.8.2S2Geometry알고리즘
__5.8.3MongoDB의공간인덱스
__5.8.4MongoDB의컴파운드공간인덱스
5.9인덱스속성
__5.9.1프라이머리키와세컨드리인덱스
__5.9.2유니크인덱스
__5.9.3Partial인덱스와Sparse인덱스
__5.9.4TTL인덱스
__5.9.5인덱스콜레이션(대소문자구분설정)
__5.9.6외래키

▣06장:잠금과트랜잭션
6.1잠금
__6.1.1MongoDB엔진의잠금
__6.1.2WiredTiger스토리지엔진의잠금
__6.1.3잠금Yield
__6.1.4잠금진단
6.2트랜잭션
__6.2.1쓰기충돌(WriteConflict)
__6.2.2단일도큐먼트트랜잭션(SingleDocumenttransaction)
__6.2.3문장의트랜잭션(Statementtransaction)처리
6.3격리수준
__6.3.1READ-COMMITTED
__6.3.2SNAPSHOT(REPEATABLE-READ)
__6.3.3MongoDB서버의격리수준
__6.3.4MongoDB서버의격리수준과정렬
6.4Read&WriteConcern과ReadPreference
__6.4.1WriteConcern
__6.4.2ReadConcern
__6.4.3ReadPreference
__6.4.4maxStalenessSeconds설정
__6.4.5샤딩환경의중복도큐먼트처리

▣07장:데이터모델링
7.1데이터베이스와컬렉션
__7.1.1네임스페이스
__7.1.2데이터베이스
__7.1.3컬렉션
__7.1.4뷰(View)
__7.1.5BSON도큐먼트
__7.1.6제한사항
7.2데이터타입
__7.2.1데이터타입비교
__7.2.2필드값의비교및정렬
__7.2.3문자셋과콜레이션
__7.2.4MongoDB확장JSON(ExtendedJSON)
7.3모델링고려사항
__7.3.1도큐먼트의크기
__7.3.2정규화와역정규화(DocumentReferencingvs.Embedding)
__7.3.3서브도큐먼트(SubDocument)
__7.3.4배열(Array)
__7.3.5필드이름
__7.3.6프레그멘테이션(Fragmentation)과패딩(Padding)
__7.3.7도큐먼트유효성체크
__7.3.8조인

▣08장:쿼리개발과튜닝
8.1기본CRUD쿼리
__8.1.1쿼리작성
8.2확장검색쿼리
__8.2.1맵리듀스(MapReduce)
__8.2.2Aggregation
__8.2.3FulltextSearch
__8.2.4공간검색
8.3스키마변경(DDL)
__8.3.1데이터베이스관리
__8.3.2컬렉션관리
__8.3.3인덱스관리

▣09장:실행계획및쿼리최적화
9.1실행계획
__9.1.1쿼리의처리과정
__9.1.2실행계획수립
__9.1.3옵티마이저옵션
__9.1.4플랜캐시
__9.1.5실행계획스테이지

출판사 서평

★이책에서다루는내용★

◎데이터베이스트렌드
◎MongoDB복제와샤딩
◎WiredTiger스토리지엔진의내부구조와작동방식
◎MongoDB인덱스와쿼리튜닝
◎한글전문검색과위치기반검색
◎MongoDB의잠금과트랜잭션
◎운영을위한보안과백업