hanbit-hands_on_hacking-01

이 리뷰는 한빛미디어 <나는 리뷰어다=""> 활동을 위해서 책을 제공받아 작성된 서평입니다.

가장 유명한 Nosql 이라고 하면 MongoDB 혹은 redis 를 떠올리는 분들이 많을 것이다. 그 중에서도 이 책은 완벽 가이드란 타이틀에 mongo db 에 대해서 자세히 설명하고 있다.

아무래도 데이터베이스 책이 대부분 그러하듯 이 책 또한 mongodb 의 변수, CRUD 방식, 쿼리 방식, 복제, 샤딩 등에 대해 자세히 설명해주고 있다. 다만 책 중간중간에 특정 기능을 설명하면서 “이 기능을 사용할 수 있지만 스키마 설계를 다르게 하면 다른 방식으로 쓰는게 성능적으로 낫다” 라는 등의 팁들이 곳곳에 적혀 있는 것이 특징이다. 예를 들어 $size 를 사용하기 보다는 스키마 내에 size 필드를 넣어라 등의 이야기를 해준다. 또한 이 책의 특징이라고 한다면 Nosql 의 가장 큰 장점인 복제, 분산 등의 기능에 대해 많은 페이지를 할애했다는 것이다.

책은 mongodb 의 기본으로 시작한다. mongodb shell 에서 기본적인 타입인 ObjectId, 숫자, 문자 등에 대해서 설명하고, 그 뒤에는 docuement 의 생성, 갱신, 삭제에 대해서 설명해준다. 그리고 데이터베이스에서 가장 잘 일어나는 쿼리에 대허서 설명하면서 다양한 제약, 연산자 등에 대해서 설명해준다. 이 챕터에서는 단순히 사용법을 알려주고 있어서 크게 어려운 부분들을 느끼지는 못했다.

그 뒤에는 데이터베이스에서 필수적으로 사용해야 하는 인덱싱에 대해서 설명한다. 단일 인덱싱, 복합인덱싱을 포함해서 인덱싱이 있을 때 쿼리플랜 방식, 커버링 인덱스 등 다양한 방식의 인덱싱에 대해서 설명해준다. 또한 TTL 인덱싱, geo location 관련 인덱싱 등 특수한 인덱싱 방식에 대해서 설명한다. 그 이후에는 자주 사용되는 집계 프레임워크에 대해서 알려주고 짧게나마 mongodb 트랜잭션에 대해서 설명한다. 9장이 조금 특이하기도 했는데 많은 스키마 페턴들을 설명하고 간단하게나마 예시를 들어주면서 설계하는 방법에 대해서 알려준다.

그 뒤부터는 복제와 샤딩에 대한 이야기를 이어나간다. mongob 를 사용하는 가장 큰 이유중에 하나인 분산환경에 대한 이야기이다. 물론 클라우드를 사용하면 이 기능을 자동으로 제공해주기도 하지만 어떤 식으로 복제가 구성되는지, 샤딩을 어떻게 설계해야 하는지 등에 대해서 자세히 알려주고 있어 나중에 도움이 될 수 있을 것 같았다. 개인적으로는 아직 사용해본 경험이 없지만 그래도 이해하기 어렵지는 않았다. 마지막 파트에서는 슬로우 쿼리 찾는 방법이나, 모니터링, 보안 등에 대한 이야기로 짧게 설명하고 끝이 난다.

몽고db 에 대한 레퍼런스로 하나정도 원한다면 이 책이 괜찮을 것 같다는 생각이 든다.