I"ve never handled big data since I worked. As you know, database part is so big and crucial.
When I learned database in my university, my professors taught me integrity and non-redundancy of data based on relational database.
Have been working in a real field as a software programmer, I always worry about its performance and optimization.
However, as a system is bigger, database is much complexer. Which means I have no choice but to do join operation and make new table or view to support new functionality. It could follow a consideration about database"s scalability. Relational database has weak points such as that.
Moreover, trends have changed from relational database to ORM(object-relational mapper) with new many frameworks like Django which is web framework by Python. One of disappointments of ORM is not to support full functionality of relational database and performance.
I finally tried to find new database system. As soon as I did, I realized that NoSQL is new wave for Web2.0. Mongo DB system, one of NoSQL database systems, is from 2007 and made to overcome many flaws of relational database even thought Object-oriented-database exist to solve the same problems.
Mongo DB provides simply syntax, light operations and extra new features. The most interesting thing has no schema which can offer the freedom of changing data anytime. One more thing provides system"s scalability and backup. You can backup database with 1 line command. It is awesome.
This book is perfect for beginner. Basically it is thin but gives good benefit not to lose your interesting. I read it for 5-6 hours without testing examples in it.
In terms of Django which aims to develop fast and flex, it is just the job with Mongo DB. Pymongo is a package for developer to use it with Python and mongo engine is suitable for Django.
I recommend a few things
- It helps to choose DB system http://www.odbms.org/download/Cattell.Dec10.pdf
- After installing mongo DB, you can meet this warning message "*** warning: spider monkey build without utf8 support. consider rebuilding with utf8 support" about UTF-8. You can fix it from this site(http://wmilesn.com/2011/07/code/why-does-mongodb-fail-when-searching-non-ascii-entries-a-k-a-how-to-properly-install-mongoddb/).
- http://www.youtube.com/watch?v=w5qr4sx5Vt0
MongoDB 완벽가이드 (한빛미디어)
MongoDB를 배우고 싶은 사람이라면 이 책부터 시작하세요..
시중에서 MongoDB를 다루는 국내서/번역서는 이 책이 유일하다. 그만큼 아직 MongoDB는 대중화가 안됐고 사용층이 넓지 않기 때문이다. 하지만 요새 내가 자주 방문하는 해외 블로그에서는 MongoDB 이용한 오픈소스 프로젝트를 진행 중이다. MongoDB 공식 웹 사이트에서도 이와 관련한 설명을 얻을 수 있지만, 책으로 정리된 내용을 보는 것이 아무래도 관련 지식 습득에는 제일 빠른 방법일 것이다. 다행히 이 책이 번역되어 있어서 굉장히 빠르게 MongoDB를 파악할 수 있었다.
기초 → 고급 → 실전의 구성 맘에 들어
책의 구성은 내가 좋아하는 스타일인 기초설명 → 고급 설명 → 예제 프로젝트 순으로 되어 있다. 기초 설명 부분은 나처럼 NoSQL을 처음 접한 사람도 쉽게 따라갈 수 있을 정도다. 하지만 역시 고급 설명 부분로 들어서면서 부터는 아무래도 내가 기초 지식이 부족한 상황이라 설명이 제대로 이해가 안되는 부분이 꽤 있었다.
번역서에 대한 아쉬움
항상 한빛미디어에서 출간되는 오라일리 책 번역본을 보면 초보자가 보기에는 기술적인 난이도가 있어 보인다. 물론 원서에 충실하다면 상관없겠지만, 결국 독자는 이 책을 읽은 후 보다 많은 지식을 얻어갔으면 하는 바램을 가지고 있을 것이다. 그렇다면 부록 등을 이용해서 저자가 좀 더 독자들을 위해서 관련 내용을 설명해주는 페이지가 있었으면 얼마나 좋을까?
만약 이런 지원이 된다면 독자는 이 책의 가격인 25,000원이라는 값을 절대 부담스러워하지 않을 것이다.
또한 전체적으로 번역은 매끄러운 편이나
MongoDB의 책의 앞 커버에 "NoSQL의 진수를 만나다!"와 책의 뒷 커버에 있는 "페이스북, 트위터가 선택한 MongoDB"가 책을 구매하도록 끌리게 하는 문구이기는 하지만, NoSQL에 대한 정의 부터 정리되지 않고 바로 문법적인 설명을 들어가는 등 사전 지식이 없는 사람에게는 초반부터 정신을 차리지 못하게 하는 책인 듯 하다.
우선 책이 얇아서 접근이 용이하기에 빠르게 MongoDB를 알아가는데 많은 도움이 될 듯하다.
그런데 1장에서 간략한 MongoDB의 자랑이 있기는 한데 NoSQL의 정보라든가 좀더 도움이 될만한 정보다 더 있었으면 하는 아쉬움이 남는다.
2장, 3장, 4장, 5장, 6장, 7장을 통해서 문법적인 부분에 대해서 잘 설명이 되어 있는 것 같지만 정작 예제를 실행하는데에는 많은 한계가 노출된다. 미리 어떤 데이터들이 등록되어 있어야 예제들을 실행해 볼 수 있을 텐데 그러지 못하는 부분이 상당히 많고, 아예 테스트를 해보지 못할 코드도 있어 예제에 믿음이 안가기도 한다. 테스트 해볼 수 있는 예제 소스가 미리 제공되지 않는다는 것이 아쉽다.
8장 이후로 관리 및 여러 DB 서버를 구축해서 분산 처리하는 부분이 나오는데 맵리듀스에 관해서는 너무 간략하게 나와서 그냥 이런게 있구나 하는 식으로밖에 이해하고 넘어가는 수준인거 같다. 좀더 자세히 알아보기 위한 가이드나 링크 아니면 한빛에서 나온 다른 참고 도서 소개가 추가되었으면 좋았겠다는 생각이 든다. 아직도 이 부분은 이해가 안되는 부분이기도 하다.
특히나 관리부분에 대해서는 실제로 예제 부분도 적고 확인하는 방법도 제약적이라 이해하는데 어려움이 많았다.
전반적으로 MongoDB의 완벽가이드라기 보다는 MongoDB를 맛볼 수 있는 입문서로 적합할 것 같다는 생각이 든다. 다 읽고 나서도 MongoDB를 좀더 잘 사용하기 위해서는 좀더 배워야 할 것 같고 다른 도서를 더 봐야 할 것 같은 불안감에 휩싸인다.
얼마전 자바 컨퍼런스에 갔다가 한빛미디어 부스에서 이 책을 발견하고 바로 샀습니다.(5000원 dc)
쭉 못 읽고 있다가 얼마전 몇 시간동안 통독을 했는데..기대 이하의 내용이라 많이 실망했습니다.
* 단점
1. 완벽가이드인가?
- 책의 분량이 적었는데도 완벽 가이드, 샤딩 설명 그림등을 보고, 구조적인 부분을 기대했는데 몽고쉘을 이용한 사용법과 문법 위주.
- 샤딩을 제외한 아주 간소한 구조 설명
- 완벽가이드 보다는 입문서.
- 절대 nosql의 진수를 알 수 없음
2. 번역...
- 역자가 아파치 커미터 여서 어느정도 안심했었는데, 용어에대한 통일성이 없고 억지 번역이 많이 보임.
ex)
* 종결자.. finalizer라고 생각할 수 있는 개발자가 얼마나될까요? 그냥 finalizer라고 하지..;;
* 맵리듀스 mapdeduce의 수행 결과를 임시 컬렉션 이름으로 사용되는 부분이 있는데 이걸 그냥 맵리듀스라고 번역해서 어이없었음.(tmp.mr.맵리듀스_1266.....<== tmp db의 mapreduce 컬렉션 명)
- 기본적인 번역은 나쁘지 않은데 용어들에대해서 마지막에 전체 바꾸기를 통해서 바꾼듯한 인상이 강하게 듬
3. 가격...
- 이책이 2만5천의 가치가 있는가?
4. nosql의 진수 부하분산, 샤딩에 대한 예제가 너무 미약함.(www.mongodb.org 를 보는게 1000번 낫다!!)
* 장점.
- 빠른시간안에 몽고디비를 설치해서 테스트 가능
- 간단한 프로젝트에 바로 적용 가능한 아이디어를 제공하는 예제 (뎃글, 태그, 조회수 분석 등..)
- kt 가상서버에 서버를 올리고 서비스를 제공하는 모바일 서비스에 적합할 것으로 보임(빠른시간안에 만들고 서비스하고..)
- 얇아서 부담없이 언제 어디서나 읽을 수 있음.