MongoDB 완벽 가이드
연구이야기/도서이야기☆

MongoDB 완벽 가이드

얼마 전, 제3기 한빛리더스(IT 전문서)에 선정이 되는 행운(?)을 얻게 되었습니다. 한빛리더스는 IT(Information Technology: 정보기술) 분야의 유명 출판사인 한빛미디어에서 제공하는 독자와의 커뮤니케이션 프로그램입니다. 우연한 기회에 한빛리더스 모집 공지가 있어 참여하게 되었는데, 이렇게 선정되고 보니 행복하기도 하고 두렵기도 합니다. 한빛리더스에 참여하면, 여러 가지 혜택도 있지만, 한빛미디어에서 제시하는 다양한 미션을 수행해야 합니다. 아직 프로그램에 참여한 지 얼마 되지 않았기 때문에 어떤 미션들이 있는지는 모르겠습니다만, 과거의 글을 살펴보니 꽤 재미있는 미션도 있었던 것 같습니다.


제게 주어진 첫 번째 미션은 한빛미디어에서 최근 출간했던 IT 전문서 중에서 한 권을 선정한 후, 이 책의 내용을 독자에게 잘 전달하는 것입니다. 이와 더불어, 오탈자 및 이 책의 개선사항을 한빛미디어에 전달하는 것도 포함되어 있습니다.


The Book INSIDE

[제목] MongoDB 완벽 가이드
[평점] ★★★☆

[저자] 크리스티나 초도로우 · 마이클 디롤프(지은이) | 윤진석(옮긴이)

[링크] 도서소개 | 미리보기


한빛미디어 | 2011-05-30 | 원제 MongoDB The Definitive Guide First Edition

반양장본 | 240쪽 | 235*188mm | ISBN(13) : 9788979148251


크리스티나 초도로우

10gen 개발자이자 MongoDB 메인 커미터다. 그녀는 데이터베이스 서버와 PHP, Perl 드라이버 등을 만들었으며 OSCON, LinuxCon, FOSDEM, Latinoware 같은 세계적인 컨퍼런스에서 활동하였고, MongoDB와 몇 가지 주제를 다룬 웹사이트를 운영 중이다(http://www.snailinaturtleneck.com). 현재 뉴욕에 거주하고 있다.


마이클 디롤프

10gen 개발자이며 PyMongo 프로젝트 관리자다. 또한 전 MongoDB 루비 드라이버 프로젝트 관리자였으며, 다른 몇 가지 라이브러리와 도구에도 기여하였다. 세계 메이저 컨퍼런스에서 MongoDB에 대한 강연을 한 바 있고, 현재 뉴욕에 거주하고 있다.


윤진석

오픈 소스 개발자이자 아파치 소프트웨어 파운데이션 멤버다. 지난 5년간 하둡과 HBase 프로젝트에 기여해왔고, 현재는 하둡 기반의 과학 연산 프레임워크인 Hama 프로젝트를 설립하여 리드개발하고 있다. 또한 KT 클라우드 추진본부에서 NoSQL 관련 프로젝트를 리드개발하고 있다. 트위터는 http://twitter.com/eddieyoon이다.


MongoDB 완벽 가이드를 선택한 이유

MongoDB? 여러분은 이 단어가 익숙하신가요?

필자에게는 매우 생소한 단어입니다. 필자의 블로그를 방문하시는 분 중에서 MongoDB에 대해 알고 계신 분은 아마도 손에 꼽을 것입니다.


단어에 DB가 있으니 데이터베이스(Database)인 것은 어렵지 않게 추측할 수 있을 것입니다.

대부분의 사람이 새로 출시된 데이터베이스의 하나로 생각할 것입니다. 물론, MongoDB도 데이터베이스이니 틀린 생각은 아닙니다. 하지만 이미 알려진 데이터베이스[각주:1]와는 구조와 형태가 많이 다릅니다.


<MongoDB 완벽 가이드>의 부제는 'NoSQL의 진수를 만나다'입니다.


NoSQL이란?

먼저 NoSQL이 무엇인지에 대해 알아보는 것이 순서일 것 같습니다.

여기서 NoSQL에 대해 자세히 설명하기에는 주제도 크게 벗어나고, NoSQL에 대한 내공이 아직 많이 부족합니다. 자세한 내용을 알고 싶으신 분은 위키백과를 참조하시거나 아래에 제가 첨부한 링크를 참조하시면 어렴풋이나마 이해하실 것으로 믿어 의심치 않습니다.


관련글
◎ Calmglow's Blog - NoSQL의 기본 개념 정리 [관련링크]
◎ Channy's Blog - NoSQL, 소셜웹 시대의 대안? [관련링크]
◎ OUTSIDER'S DEV STORY - NoSQL에 대해서 #1 [관련링크]
◎ OUTSIDER'S DEV STORY - NoSQL에 대해서 #2 [관련링크]
◎ 아이들의 개똥철학 - NoSQL 방식이 RDBMS의 대안으로 인정받는 이유? [관련링크]


NoSQL이 유행에 그칠 것인지 새로운 영역에서 독보적인 데이터베이스로 생존하게 될지 예측하기는 어렵습니다.

그동안 역사적으로 많은 기술이 있었지만, 그중에서 빛을 본 것은 많지 않으니까요. 더구나 데이터베이스 시장은 이런 경향이 더욱 큽니다. 이와 관련해서 Stelligent Incorporated의 CEO인 'Andrew Glove'가 남긴 메시지로 이 절을 마칩니다. 'Andrew Glove'가 남긴 메시지의 전문을 확인하고 싶으신 분은 다음 링크[관련링크]를 참조하세요.


유행은 변하기 때문에 가끔은 이러한 유행을 무시하는 것이 낫다(옷장에 레저용 옷만 가득한 사람이 제공하는 현명한 조언이다). 하지만 NoSQL은 유행이라기 보다는 확장성 높은 웹 애플리케이션 개발의 새로운 기반이다. 하지만 NoSQL 데이터베이스는 RDBMS를 대체하지는 않고 보완한다. 무수히 많은 성공적인 도구와 프레임워크가 관계형 데이터베이스 위에서 활발하게 사용되고 있으며 RDBMS 자체는 인기가 시드는 위험에 처해 있지 않다.


결국 NoSQL 데이터베이스는 오브젝트-관계형 데이터 모델에 대한 적절한 대안으로 존재한다. NoSQL 데이터베이스는 다른 방식을 사용할 수 있으며 매우 뛰어난 구체적인 유스 케이스의 경우에는 다른 방식이 더 낫다는 것을 보여 준다. 스키마 없는 데이터베이스는 빠른 데이터 검색 및 확장성이 필요한 멀티노드 웹 애플리케이션에 가장 적합하다.


- Andrew Glove


MongoDB란?

MongoDB(official home page, Wikipedia)는 NoSQL의 대표적인 제품으로 오픈 소스(open source) 프로젝트입니다[각주:2]. MongoDB는 2007년 10월에 10gen(official home page, Wikipedia)에 의해 개발이 시작되어, 2009년 2월에 첫 번째 공식 제품이 발표되었습니다[각주:3].


여기서 한 가지 의문점이 생깁니다. 왜, MongoDB일까요?

이 이름은 어떤 어원에서 출발했을까요? MongoDB는 'humongous'로 부터 파생되었습니다. 재미있지 않으세요? 이쯤 되면 <MongoDB 완벽 가이드>의 표지 모델이 몽구스 여우원숭이인지 감이 오실 것입니다.


다시 본론으로 돌아가서 MongoDB는 NoSQL의 다양한 제품(솔루션) 중에서 최근에 가장 높은 관심과 인지도를 얻고 있는 제품으로, C++언어로 제작되었으며, 고성능(high-performance), 스키마 없는(schema-free) 문서 기반 데이터베이스(document-oriented database)입니다.


MongoDB의 특징을 간단히 요약하면…

  1. C++로 작성 (written in the C++ programming language)
  2. 문서기반 데이터베이스 (document-oriented database)
  3. 빠르고 사용하기 쉬움
  4. RDBMS의 일부 기능을 지원 - 범위 쿼리, 색인, 정렬, 집계 연산 기능 등을 지원
  5. 다양한 언어를 지원 (Language support) - C, C++, C#, Java, Python 등 언어에 맞는 드라이버 제공
  6. 다양한 플랫폼 지원 (Cross-platform support) - Windows, Linux, OS X, and Solaris
  7. 데이터는 BSON(binary json) 형태로 저장
  8. 구조적이지 않음(schema-free)


MongoDB의 특징을 간단히 살펴봤습니다. 더 자세하게 기술하고 싶었는데, 그렇게 되면 분량이 너무 많아지고 다음에 작성할 내용과 중복되는 부분이 많을 것 같습니다. 이런 이유로 이번 단락은 짧게 구성하겠습니다. 이곳에 기술되지 않은 내용은 MongoDB의 공식 홈페이지나 위키 페이지에서 알아보실 수 있을 것입니다. 이 글을 위해 자료를 조사하면서 MongoDB와 같은 문서기반 데이터베이스가 생각보다 많은 것을 알고 조금 놀랐습니다. 물론 아직 활성화가 된 데이터베이스가 눈에 띄지는 않지만, 새로운 구조의 데이터베이스이기 때문에 앞으로 지속적인 관심을 두고 살펴봐야겠습니다.


첫인상 & 첫느낌

<MongoDB 완벽 가이드>의 첫인상은 전형적인 오라일리 출판사(O'Reilly Media)의 책과 다르지 않았기 때문에, 익숙하고 편안한 느낌이 들었습니다. 이미 많은 분이 알고 계시겠지만, 오라일리 출판사의 책은 표지에 큰 특징을 가지고 있습니다. 바로 동물이 표지 중심에 자리를 잡고 있는 것입니다.


많은 출판사가 책 표지에 대해 노력을 기울이고 있습니다. 왜냐하면, 표지는 출판사 이미지에 큰 영향을 미치며, 책의 특성을 잘 표현해야 하기 때문입니다. 오라일리 출판사는 동물을 중심으로 표현하여 그 누가 보더라도 오라일리 출판사의 책임을 알게 해주고 있습니다. 이런 표지 디자인은 책의 특성(주제)을 명확하게 표현하지는 못하지만, 오라일리 출판사가 IT 분야에서 꽤 믿음직한 출판사 브랜드로 고객에게 신뢰를 얻고 있는데 한몫하고 있습니다. 오라일리 출판사의 표지에 대해 자세히 알고 싶으신 분은 다음 아티클을 참조하시면 도움을 얻을 수 있을 것입니다. 참고로 <MongoDB 완벽 가이드> 표지의 동물은 몽구스 여우 원숭이입니다.


많은 영장류 중 마다가스카르 고유 종인 몽구스 여우원숭이다. 여우원숭이는 6천 5백만년 전 아프리카에서 마다가시크르로 최소 560km 거리를 우연히 뗏목을 타고 건너 왔다고 여겨진다. 아프리카의 원숭이나 다람쥐 같은 다른 종과의 경쟁에서 자유로워, 다양한 생태적 지위를 차지하는데 적응하여 현재는 거의 100 여종에 가깝다. 이 동물은 희귀한 울음소리, 야행성, 커다란 눈 때문에 로마 신화의 레무레스로부터 이름을 얻었다. 마다가스카르인 또한 여우원숭이를 초자연적으로, 조상의 영혼으로, 똔느 복수의 화신으로 결부시킨다. 어떤 마을은 여우원숭이의 특별한 종을 자신들의 조상으로 여긴다.


- MongoDB 완벽 가이드의 표지 설명


<MongoDB 완벽 가이드>는 240여 페이지로 전공 서적치고는 꽤 적은 분량으로 구성되어 있습니다. 아직 전체 내용을 모두 살펴보지는 못했습니다만, 개인적으로 이 책의 제목이 좀 알맞지 않다고 생각합니다. 이 책의 구성과 내용으로는 MongoDB의 기본과 정의 등을 알려주는 기본서에 가까우므로, 완벽 가이드는 독자에게 약간의 오해(?)의 소지를 줄 수 있을 것 같습니다[각주:4].


<MongoDB 완벽 가이드>의 편집 상태는 나쁘지 않습니다. 기존 한빛미디어의 책처럼 깔끔한 편집 상태를 유지하고 있습니다. 종이의 질도 매우 우수합니다. 다만, 좋은 품질 때문에 생산 단가가 올라가 책의 가격이 다소 높은 느낌을 지울 수가 없습니다. 이 책의 가격이 25,000원인데, 개인적으로 조금 비싼 것 같습니다.


마지막으로 이 책은 번역서이기 때문에 번역 상태에 대해 말씀드리겠습니다. 제가 읽은 부분에서 큰 불편함(이질감)을 느끼지는 못했습니다. 다만, 조금 아쉬운 부분도 없지 않아 있었습니다. 예를 들어, 한 부분을 살펴보겠습니다.


원서내용
The ObjectId type, as we’ll see, is easy to generate in a sharded environment. (원서 21page)

번역내용

앞에서 보겠지만 ObjectId형은 공유된 환경에서 생성하기 쉽다. (번역서 42page)


위 문장에서 'as we'll see' 부분이 '앞에서 보겠지만'으로 번역되어 있습니다. 이 부분은 문맥적으로도 알맞지 않은 표현인 것 같습니다. '곧 알게 되겠지만/곧 살펴 보겠지만' 등으로 번역하는 것이 더 좋을 것 같습니다.


Book Review


MongoDB 완벽 가이드 요약

MongoDB는 새로운 데이터베이스를 원하는 사람들의 갈증을 해결하고 있는 가장 대중적인 데이터베이스라고 할 수 있습니다.

<MongoDB 완벽 가이드>는 MongoDB를 쉽게 이해할 수 있고, 간단히 사용해 볼 수 있는 지침이 되는 멋진 책입니다.국외에도 MongDB에 대한 책이 몇 권 출간되지 않았는데, 벌써 MongoDB에 대한 번역서가 출간되다니 개인적으로 빠른 행보를 보여준 한빛미디어와 역자분께 깊은 감사의 메시지를 전하고 싶습니다.



MongoDB 완벽가이드 장점과 단점

<MongoDB 완벽 가이드>의 장점을 한 가지 꼽는다면, 무엇보다 빠르게 MongoDB에 대해 습득할 수 있는 지식이 가득 담겨 있는 책이라는 데 있습니다. 국내에서 MongoDB에 대한 개괄적인 지식을 습득하는 데, 이 책보다 빠르게 습득할 방법이 있을까요? 개인적인 생각으로 아직은 없을 것으로 생각합니다.


<MongoDB 완벽 가이드>의 단점이라기 보다는 아쉬운 점인데, 독자에 대한 배려가 부족하다고 생각합니다. 간단한 예를 들어 설명하겠습니다. <MongoDB 완벽 가이드>의 38페이지를 읽다보면, BSON이라는 단어가 등장합니다. 이 책은 IT 전문서(?)보다는 기본서에 가깝다고 생각합니다. 또한, 이 책을 보는 분들이 BSON에 대해 자세히 알고 있다고 생각하더라도, 'Binary JSON'을 표시해주는 것이 좋았을 것 같습니다. 이런 작은 친절함이 독자에게는 큰 감동(?)으로 다가 올 수 있다는 것을 이해해주셨으면 좋겠습니다[각주:5].



천사마음의 목소리

<MongoDB 완벽 가이드>는 기본서에 가까운 책입니다.

그럼에도 <MongoDB 완벽 가이드>의 친절도(?)를 평가하면 높은 점수를 주기는 어려울 것 같습니다. 이전 단락에서 언급했듯이, 책의 전개 방식과 편집 방식이 아쉽습니다. 원서의 내용 구성을 그대로 따라 할 수밖에 없었다면, 부록이나 역자주, 홈페이지 자료 등을 통해 독자가 더 쉽게 이 책을 이해할 방법을 제공했으면 어땠을까? 하는 아쉬움이 두고두고 남더군요.


마치면서

지금까지 한빛미디어의 <MongoDB 완벽 가이드>에 대한 리뷰를 마칩니다.

개인적으로 매력적이면서도 아쉬움이 남는 책이었습니다. 번역서와 계약 관계, 제작 비용 등으로 기존 원서와의 차별성을 두기는 어려웠을 것으로 보입니다만, 독자의 처지에서 생각하는 배려가 있었으면 보다 완성도 있는 책이지 않았을까? 란 생각을 해봅니다.

  1. 대표적으로 Oracle, MS-SQL, DB2 등이 있습니다. 가장 익숙한 데이터베이스로는 APM의 구성요소인 MySQL이 있을 것입니다. 최근에는 국산 데이터베이스인 Cubrid도 많은 인기를 얻고 있습니다 [본문으로]
  2. 정확한 라이센스는 GNU AGPL v3.0 (drivers: Apache license)입니다. [본문으로]
  3. 다음 링크의 내용을 참조하여 작성했습니다. [http://goo.gl/YjqJ, http://goo.gl/eTjh] [본문으로]
  4. 아직 완독하지 못해 이런 느낌이 들었을지도 모르겠습니다. [본문으로]
  5. 참고로, 원서에도 'BSON'이라는 단어만 있습니다. [본문으로]