메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

몽고DB 완벽 가이드(3판)

실전 예제로 배우는 NoSQL 데이터베이스 기초부터 활용까지

한빛미디어

번역서

판매중

  • 저자 : 크리스티나 초도로우 , 섀넌 브래드쇼 , 오언 브라질
  • 번역 : 김인범
  • 출간 : 2021-03-22
  • 페이지 : 600 쪽
  • ISBN : 9791162244067
  • 물류코드 :10406
  • 초급 초중급 중급 중고급 고급
4.7점 (45명)
좋아요 : 12

NoSQL의 진수 몽고DB 개발부터 관리까지

 

몽고DB 입문자를 위한 기초부터 실제 배포에 적용할 수 있는 실용적이고 깊이 있는 내용까지 담았다. 개정 3판에서는 성능이 강화된 몽고DB 최신 버전을 반영해 복제와 샤딩을 더 깊이 다루며 개발뿐 아니라 관리 방법도 자세히 설명한다. 몽고DB 주요 커미터들이 직접 소개하는 핵심 개념과 풍부한 실전 예제를 통해 애플리케이션 개발 방법을 익히고, 애플리케이션과 서버를 관리하는 방법도 배워보자.

 

 

주요 내용

 

[1부 몽고DB 시작]

도큐먼트 지향 데이터베이스 개념을 소개하고 기본적인 연산과 쿼리 방법을 안내한다. 몽고DB 셸을 소개하고 활용하는 방법을 알려준다.

 

[2부 몽고DB 개발]

인덱싱, 트랜잭션, 집계 프레임워크 등 몽고DB로 애플리케이션을 개발하는 데 필요한 내용을 다룬다.  예제를 통해 공간 정보 인덱스, 텍스트 인덱스 등 특수한 인덱스도 구축해본다.

 

[3부 복제]

복제 셋 기본 개념을 소개한 후 셋을 구축하고 운영하는 방법을 알아본다. 애플리케이션에서 복제 셋에 연결하는 방법과, 구성 변경이나 모니터링을 통해 복제 셋을 관리하는 방법도 다룬다.

 

[4부 샤딩]

샤딩을 구성하고 관리하는 방법을 다룬다. 네트워크 연결 추적, 서버 관리, 데이터 밸런싱 방법을 소개한다.

 

[5부 애플리케이션 관리]

모니터링 등 애플리케이션 관리 방법을 다룬다. 몽고DB 보안을 소개하고 인증, 권한을 구성하는 방법을 설명한다.

 

[6부 서버 관리]

몽고DB를 시작하고 중지하는 방법과 서버를 모니터링하고 백업, 복구하는 방법을 소개한다.

 

[부록]

운영체제에 따른 몽고DB 설치 방법과 몽고DB 내부 작동 방식을 설명한다

 

 

주요 내용

  • 몽고DB 핵심 개념과 연산, 쿼리 방법
  • 데이터 집계 기술과 인덱스, 컬렉션, 트랜잭션 사용법
  • 복제 셋을 구축하고 운영하는 방법
  • 클러스터를 구성하고 샤드 키를 선택하는 방법
  • 애플리케이션 관리를 위한 보안과 인증, 권한 구성 방법
  • 서버를 모니터링하고 백업, 복구하는 방법

 

추천사

 

"몽고DB 최신 정보에 발맞추어 3판까지 개정판을 출간하는 유일한 실전 입문서다. 저자와 역자는 다년간의 사용 경험을 바탕으로 몽고DB에 대한 유용한 정보를 제공한다. 기초뿐 아니라 전반적인 개발 과정에 필요한 다양한 기능을 배울 수 있다. 개발자에게는 데이터베이스에 대한 지식을, 데이터베이스 관리자에게는 도큐먼트 지향 데이터베이스에 대한 개념을, 운영자에게는 고가용성과 분산 환경 경험을 제공한다.”

_ 김동한, 몽고DB 코리아 시니어 컨설팅 엔지니어

 

 


 

크리스티나 초도로우 저자

크리스티나 초도로우

몽고DB 코어 소프트웨어 엔지니어. 전 세계 밋업과 콘퍼런스에서 몽고DB를 주제로 강연하며 기술을 주제로 블로그(www.kchodorow.com)를 운영한다. 현재 구글에서 근무한다.
섀넌 브래드쇼 저자

섀넌 브래드쇼

몽고DB 교육 부사장. 몽고DB 유니버시티와 몽고DB 프로페셔널 인증 프로그램을 통해 제공되는 교육 프로그램을 관리한다. 아이오와 대학교 경영대학원 조교수이자 드류 대학교 컴퓨터공학과 부교수였다. 학계에서 경력을 쌓으며 여러 기업과 소프트웨어 엔지니어로 기술 상담을 했다.

오언 브라질 저자

오언 브라질

몽고DB 시니어 엔지니어. 몽고DB 기술 서비스 지원부에서 다양한 직책을 맡다가 몽고DB 유니버시티에서 온라인 및 강사용 교육을 담당하고 있다. 몽고DB에 합류하기 전에는 학술 연구 부문 모바일 서비스 및 고성능 컴퓨팅 팀을 이끌었다.

김인범 역자

김인범

알스퀘어(RSQUARE) 데이터 엔지니어. 이전에는 SK 주식회사 C&C의 클라우드 컴퓨팅 기술 팀, 클라우드 아키텍트 유닛을 거쳐 CNCITY에너지 AI 설루션 팀에서 데이터 엔지니어로 근무했다. 몽고DB 사용자 그룹MongoDB Korea(https://web.facebook.com/groups/krmug)에서 운영진으로 활동하고 있다. 다양한 분야의 데이터에 관심이 많으며 글쓰기를 좋아한다.

PART I 몽고DB 시작


CHAPTER 1 몽고DB 소개

1.1 손쉬운 사용

1.2 확장 가능한 설계

1.3 다양한 기능

1.4 고성능

1.5 몽고DB의 철학


CHAPTER 2 몽고DB 기본

2.1 도큐먼트

2.2 컬렉션

2.3 데이터베이스

2.4 몽고DB 시작

2.5 몽고DB 셸 소개

2.6 데이터형

2.7 몽고DB 셸 사용

 

CHAPTER 3 도큐먼트 생성, 갱신, 삭제

3.1 도큐먼트 삽입

3.2 도큐먼트 삭제

3.3 도큐먼트 갱신

 

CHAPTER 4 쿼리

4.1 find 소개

4.2 쿼리 조건

4.3 형 특정 쿼리

4.4 $where 쿼리

4.5 커서

 

PART II 몽고DB 개발


CHAPTER 5 인덱싱

5.1 인덱싱 소개

5.2 explain 출력

5.3 인덱스를 생성하지 않는 경우

5.4 인덱스 종류

5.5 인덱스 관리

 

CHAPTER 6 특수 인덱스와 컬렉션 유형

6.1 공간 정보 인덱스

6.2 전문 검색을 위한 인덱스

6.3 제한 컬렉션

6.4 TTL 인덱스

6.5 GridFS로 파일 저장하기

 

CHAPTER 7 집계 프레임워크

7.1 파이프라인, 단계 및 조정 가능 항목

7.2 단계 시작하기: 익숙한 작업들

7.3 표현식

7.4 $project

7.5 $unwind

7.6 배열 표현식

7.7 누산기

7.8 그룹화 소개

7.9 집계 파이프라인 결과를 컬렉션에 쓰기

 

CHAPTER 8 트랜잭션

8.1 트랜잭션 소개

8.2 트랜잭션 사용법

8.3 애플리케이션을 위한 트랜잭션 제한 조정

 

CHAPTER 9 애플리케이션 설계

9.1 스키마 설계 고려 사항

9.2 정규화 vs. 비정규화

9.3 데이터 조작을 위한 최적화

9.4 데이터베이스와 컬렉션 구상

9.5 일관성 관리

9.6 스키마 마이그레이션

9.7 스키마 관리

9.8 몽고DB를 사용하지 않는 경우

 

PART III 복제


CHAPTER 10 복제 셋 설정

10.1 복제 소개

10.2 복제 셋 설정 - 1장

10.3 네트워크 고려 사항

10.4 보안 고려 사항

10.5 복제 셋 설정 - 2장

10.6 복제 관찰

10.7 복제 셋 구성 변경

10.8 복제 셋 설계 방법

10.9 멤버 구성 옵션

 

CHAPTER 11 복제 셋 구성 요소

11.1 동기화

11.2 하트비트

11.3 선출

11.4 롤백

 

CHAPTER 12 애플리케이션에서 복제 셋 연결

12.1 클라이언트-복제 셋 연결 동작

12.2 쓰기 시 복제 대기하기

12.3 사용자 정의 복제 보증

12.4 세컨더리로 읽기 전송

 

CHAPTER 13 관리

13.1 독립 실행형 모드에서 멤버 시작

13.2 복제 셋 구성

13.3 멤버 상태 조작

13.4 복제 모니터링

 

PART IV 샤딩


CHAPTER 14 샤딩 소개

14.1 샤딩이란

14.2 단일 장비 클러스터에서의 샤딩

 

CHAPTER 15 샤딩 구성

15.1 언제 샤딩해야 하나

15.2 서버 시작

15.3 몽고DB는 어떻게 클러스터 데이터를 추적하는가

15.4 밸런서

15.5 콜레이션

15.6 스트림 변경

 

CHAPTER 16 샤드 키 선정

16.1 용도 평가

16.2 샤딩 구상

16.3 샤드 키 전략

16.4 샤드 키 규칙 및 지침

16.5 데이터 분산 제어

 

CHAPTER 17 샤딩 관리

17.1 현재 상태 확인

17.2 네트워크 연결 추적

17.3 서버 관리

17.4 데이터 밸런싱

 

PART V 애플리케이션 관리


CHAPTER 18 애플리케이션 작업 확인

18.1 현재 작업 확인

18.2 시스템 프로파일러 사용

18.3 크기 계산

18.4 mongotop과 mongostat 사용


CHAPTER 19 몽고DB 보안 소개

19.1 몽고DB 인증과 권한

19.2 몽고DB 인증 및 전송 계층 암호화에 대한 지침

 

CHAPTER 20 영속성

20.1 저널링을 통한 멤버 수준의 영속성

20.2 쓰기 결과 확인을 사용하는 클러스터 수준의 영속성

20.3 읽기 결과 확인을 사용하는 클러스터 수준의 영속성

20.4 쓰기 결과 확인을 사용하는 트랜잭션의 영속성

20.5 몽고DB가 보장하지 않는 것

20.6 데이터 손상 확인

 

PART VI 서버 관리


CHAPTER 21 몽고DB 시작과 중지

21.1 명령행에서 시작하기

21.2 몽고DB 중지하기

21.3 보안

21.4 로깅


CHAPTER 22 몽고DB 모니터링

22.1 메모리 사용 모니터링

22.2 작업 셋 계산

22.3 성능 추적

22.4 여유 공간 추적

22.5 복제 모니터링

 

CHAPTER 23 백업

23.1 백업 방법

23.2 서버 백업

23.3 복제 셋 특정 고려 사항

23.4 샤드 클러스터 특정 고려 사항

 

CHAPTER 24 몽고DB 배포

24.1 시스템 설계

24.2 가상화

24.3 시스템 설정 구성

24.4 네트워크 구성

24.5 시스템 관리

 

APPENDIX A 몽고DB 설치

A.1 버전 고르기

A.2 윈도우에 설치하기

A.3 포직스(리눅스와 맥 OS X)에 설치하기

 

APPENDIX B 몽고DB 내부

B.1 BSON

B.2 와이어 프로토콜

B.3 데이터 파일

B.4 네임스페이스

B.5 와이어드타이거 스토리지 엔진

개발자와 데이터베이스 관리자를 위한 몽고DB의 모든 것

몽고DB를 사용하여 애플리케이션을 개발하고 관리하는 데 필요한 폭넓은 내용을 한 권에 담았습니다. 개발을 시작하기에 앞서 도큐먼트와 같이 NoSQL 데이터베이스의 핵심 용어와 동작 방식부터 차근차근 익힙니다. 기초를 익힌 후에는 효율적인 애플리케이션을 설계하기 위한 기능과 고려 사항을 다양한 예제를 통해 학습합니다. 몽고DB 입문자도 책의 내용을 따라가다 보면 전반적인 개발 과정을 익힐 수 있습니다. 데이터베이스 관리자와 운영자에게 유용한 관리 방법도 다룹니다.

 

『개정 3판』에서 달라진 점

몽고DB 최신 버전(v4.x)은 트랜잭션, 집계 표현식, 복제, 샤딩 성능이 강화되고 기능이 추가되었으며  와이어드타이거 스토리지 엔진을 도입하여 성능이 향상되었습니다. 이를 반영한 개정 3판에서는  복제와 샤딩을 더 깊이 있게 다루고 풍부한 예제를 통해 이해하기 쉽게 설명합니다. 애플리케이션 개발 방법뿐 아니라 관리 방법도 자세히 다룹니다. 몽고DB 아틀라스와 같은 클라우드 서비스를 비롯하여 새로 도입된 엔터프라이즈 제품도 소개하며 활용 팁을 제공합니다.

2021년 3월에 출간된 <몽고DB 완벽 가이드 3E>에 대해 소개합니다. 이 책의 부제는 '실전 예제로 배우는 NoSQL 데이터베이스 기초부터 활용까지'입니다. 이 책의 저자는 크리스티나 초도로우, 새넌 브래드쇼, 오언 브라질입니다.  

필자는 이 책과 인연이 있는데, 이 책의 초반 버전을 리뷰(링크)했었던 기억이 있습니다. 이 책의 원서는 아마존 리뷰에서 높은 점수(4.6점, 5점 만점)를 받았습니다. 역자는 김인범 님으로 몽고DB 코리아의 운영진으로 활용하시는 분으로 매끄럽게 번역해 주셨습니다.

은 약 600페이지로 구성되어 있어 휴대하면서 읽기에 부담스럽습니다. 전자책으로도 출간되어 있음으로, 이북 장치가 있으시다면 전자책으로 만나보는 것도 좋을 것 같습니다. 구매 가격도 더 저렴합니다. 

한빛미디어 평가단에 참가하여 작성한 글이며, 한빛미디어에서 제공해준 책을 읽고 작성했음을 밝힙니다. 

이 책의 매력은?

<몽고DB 완벽 가이드 3E>은 6부 24개의 챕터와 2개의 부록으로 구성되어 있습니다. 몽고DB를 학습하는 분들에게 한 권의 책을 추천해야 한다면, 아마도 이 책을 추천하는 분이 많을 정도로 매력적인 책이라고 생각합니다.

1부에서는 몽고DB의 역사와 지향점, 그리고 몽고DB의 개발자가 알아야 할 내용과 사용법을 안내합니다. 2부에서는 몽고DB를 활용하여 개발하는데 필요한 인덱스, 집계 연산, 트랜잭션 등을 소개하며, 몽고DB를 활용하여 애플리케이션을 작성하는 방법을 다루고 있습니다. 3부는 복제와 관련된 내용을 다루고 있으며, 4부는 샤당에 대한 내용을 요약하고 있습니다. 일반 개발자들도 4부의 내용까지는 이해하고 있으면 좋다고 생각합니다. 5부와 6부는 애플리케이션 관리와 서버 관리로 관리자의 관점에서 몽고DB를 다루는 방법을 설명합니다. 개인적으로 부록 B의 내용이 조금 더 상세히 기술되어 있으면 좋지 않았을까? 라는 아쉬움이 있습니다. 다만, 관련 키워드를 찾아 학습하면 되니 큰 단점은 아니라고 생각합니다. 

<몽고DB 완벽 가이드 3E>은 일반 개발자가 알아야 할 지식뿐만 아니라, 몽고DB 관리자가 익혀야 할 내용까지 포괄하여 다루고 있습니다. 일반 개발자도 관련 내용을 이해하고 있으면 좋겠지만, 관련 지식 습득과 경험에 많은 시간을 투자해야 하므로 개인적으로 판단하여 적절하게 선택하여 학습하는 것을 추천합니다. 

NoSQL Database가 출시되었을 때, 엄청난 속도로 스며들 것으로 판단한 전문가들이 많았었습니다. 하지만 여러 이유로 생각보다 더딘 속도로 보급되고 있습니다. NoSQL Database가 가지는 장점은 분명히 있습니다. 쓸모에 맞게 활용한다면 기존 RDBMS에서 누릴 수 없었던 편안함을 제공받을 수 있습니다.

몽고DB에 관심을 가진 분이라면, 이 책을 활용하여 몽고DB의 매력에 빠져보면 좋겠습니다. 

마치면서

NoSQL DBMS가 시장에 나온지도 꽤 오랜 시간이 흘렀습니다. <몽고DB 완벽 가이드 3E>은 대표적인 NoSQL DBMS인 몽고DB를 소개하는 책으로 몽고DB에 관한 대부분의 내용을 다루고 있습니다. 단순한 활용 방법을 넘어 샤딩을 비롯하여, 보안과 인증, 권한 구성과 모니터링, 백업 및 복구 등 다양한 내용을 포함합니다. 몽고DB를 사용하는 애플리케이션 개발자 뿐만 아니라 몽고DB를 관리해야 하는 관리자에게도 도움을 주는 책입니다.  

이 책을 활용하여 몽고DB의 매력에 빠져보면 좋을 것 같습니다. 

 

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

DB 세계에 있어 RDB는 언제나 절대적 지위를 고수해 왔고, 그 권좌를 공고히 해왔다. 이는 DB 랭킹을 통해서도 여실히드러난 사실이며, RDB의 독주는 제법 지칠줄 모르는 형국에 가깝다. 하지만 어느 순간 부터 RDB가 아닌 DB가 RDB의 기세를 위협하는 상황이 연출되고 있으며, 그 영향력이 점차 커져만 가고 있는 실정이다. RDB가 아닌 DB, 이른바 NoSQL로 대변되는 DB가 DB 왕국의 패권에 도전하며 그 위용을 매섭게 드러내고 있는 현상을 맞이하게 되었다. 

 

수 많은 NoSQL 중, 도큐먼트 지향의 DB임을 자처하는 DB가 있으니 바로 MongoDB가 그 중심부에 놓여 있다. MongoDB는 오픈소스 DB로서 온프레미스 환경 뿐만 아니라 최근 클라우드 환경에서도 엄청난 성장세를 이뤄 나가며 맹위를 떨쳐 나가고 있는 상황이다. 태생적으로 Scale out을 지향하며 탄생한 MongoDB는 DB 랭킹에서도 상위권을 고수하며 NoSQL 세계의 선봉에 서 있는 독보적 위치의 DB인 셈이다. 오늘은 한빛미디어에서 출판한 MongoDB와 관련 된 서적에 대해 이야기를 풀어 나갈까 한다. 

 

 

 

 

 

 

 

오늘 소개하는 본 서적은 'MongoDB 완벽 가이드'로서 벌써 3판으로 재탄생한 책이다. 초판 발행 이후 그동안의 변화를 여실히 반영하였기에, 최신 환경의 MongoDB를 다루는데 있어 아주 적합한 책이라 할 수 있겠다. 

 

이 책은 MongoDB에 대한 소개를 시작으로 MongoDB의 기능과 특징, 철학에 대한 본질적인 내용을 언급한다. 챕터 2에서는 MongoDB의 기본 개념과 MongoDB를 시작하는 방법, 쉘, 데이터 타입 등에을 다루며 본격적인 MongoDB 사용에 대한 토대를 쌓을 수 있게 가이드 하고 있다. 이어서 도큐먼트 생성,갱신, 삭제, 쿼리 등에 대한 내용을 통해 MongoDB를 다룰 수 있는 기본 중의 기본을 학습하게 된다.

 

파트 2에서는 MongoDB 개발과 관련 된 내용을 다루게 되는데, 인덱싱, 컬렉션 유형, 집계 프레임워크, 트랜잭션, 애플리케이션 설계 등에 대한 세부적인 가이드를 제공 받고 이후의 파트에서는 복제, 샤드와 같은 MongoDB의 가용성 및 데이터 처리의 성능을 향상 시킬 수 있는 속성에 대해 학습하게 된다. 파트 4,5에서는 MongoDB를 운영 및 관리하는 입장에서 반드시 필요한 개념과 실질적이며 유용하고 다양한 팁을 얻을 수 있는 기회를 여실히 제공 받게 된다. 

 

도큐먼트 지향의 DB 자체가 RDB와 전혀 다른 구조이고, 사상 및 철학 자체가 여타의 RDB와 근본적으로 다르기 때문에 학습 자체가 까다로울 수 있지만, 호기심을 갖고 학습에 임하면 전혀 다른 관점에서 MongoDB를 맛볼 수 있게 되고 MongoDB가 선사하는 다채로운 특징과 속성에 대해 계속해서 관심을 가지지 않을 수 없게 되는 오묘한 매력을 느끼게 되는 것 같다. 국내에 MongoDB와 관련 된 책이 거의 없는 상황 속에서, 이 책은 MongoDB 입문자에게 더할 나위 없이 훌륭한 가이드로 자리매김 하리라 생각한다. MongoDB를 알고 싶은 자, MongoDB를 궁금해 하는 자, 이 책으로 MogoDB를 향한 여정을 시작하시길. 

 

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


자바스크립트의 오브젝트와 매우 유사한 구조라 그간 간단한 애플리케이션을 개발할 때면 데이터베이스로 MongoDB를 많이 사용해왔다. 대부분 사이드 프로젝트 수준의 작은 프로젝트에만 사용했기 때문에 간단한 CRUD와 인덱싱 위주로 몽고DB를 사용해왔는데 때마침 해당 도서를 리뷰하게 되었고 이 기회에 좀 더 심도 깊게 몽고DB 인스턴스를 구성해보기로 했다.

책의 초반부는 특정 상황에서 왜 RDB 대신 MongoDB를 사용해야 되는지 해당 시스템의 철학과 간단한 쿼리에 대해 설명해주었다. 나는 몽고DB를 런타임 시 오브젝트들의 데이터를 단순 저장하는 용도로 많이 사용했기 때문에 해당 책에서 특수 인덱스같은 것을 사용한 경험이 없었다. 하지만 이 책을 통해 공간 정보 인덱스, 텍스트 인덱스, 제한 컬렉션, TTL 인덱스 등 특정 상황에서 매우 강력한 기능을 지원하는 여러 특수 인덱스의 활용에 대해 배울 수 있었다.

챕터 7에서는 집계 파이프라인을 통해 도큐먼트를 여러 방식으로 후처리하는 예시들을 보여줬는데 RDB 같은 스키마 제한이 없으면서도 RDB만큼 강력하게 데이터 쿼리가 가능하다는 점에서 MongoDB의 매력을 다시 한번 느낄 수 있었다. 또한, 트랜잭션이라는 논리적 처리 그룹을 통해 한가지 이상의 쓰기 및 읽기 작업에 대해 ACID 속성을 충족하게 해서 데이터베이스가 일관성있게 내부 데이터를 유지할 수 있게 하는 기능도 인상 깊었다.

이 책에서 가장 좋았던 부분은 파트 3, 4, 5였다. 실제 예제 데이터베이스 하나 띄우고 쿼리 연습하는 일반적인 데이터베이스 관련 서적과 대비하여 실제 프로덕션 환경에서 발생할 수 있는 가용성 문제 해결을 위한 복제 구성 방법, 분산 확장을 애초에 염두에 두고 설계된 MongoDB의 취지에 맞는 실제 샤딩 구성 및 관리 방법 등 DB 운용 시 필요한 각종 유용한 팁을 얻을 수 있었다. 이와 더불어 mongod가 실행될 때 잘 관리하기 위한 리소스 관리 및 모니터링, 배포, 백업 등 기본적이지만 중요한 여러 요소들에 대해 배울 수 있었다.

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

몽고DB는 관계형DB가 아닌

배열을 허용하는 복잡한 계층 관계를

하나의 레코드로 표현하는 도큐먼트를 사용하는 DB다.

 

고정된 스키마가 아닌 필요한 필드를

유연하게 추가/제거할 수 있어서

개발 과정을 줄이고, 개발 시간을 단축할 수 있다.

 

동시성과 처리량을 높이기 위한 장치와

Scale-Up을 통한 성능향상보다는

분산 확장하는 방법으로

성능을 높일 수 있도록 설계된 DB다.

 

이런 몽고DB에 대해 높은 이해도를 가진 저자가

3판까지 개정판을 만들정도로

정확하고, 유용한 정보가 많은 책이다.

 

몽고DB완벽가이드(3판).jpg

 

기본적인 개념, 용어부터

도큐먼트, 컬렉션, 인덱스를 사용하는 방법

복잡한 쿼리로 결과 셋을 이루는 방법

안정성과 속도에 따른 방법까지

몽고DB를 제대로 사용하기 위해 알아야 하는

많은 노하우들을 아낌없이 적어놓은 것 같다.

 

기본적인 내용뿐 아니라

복제 셋을 통한 상호작용/운영 방법과

샤딩/클러스터, 보안, 인증, 권한

서버 모니터링, 백업, 복구, 배포까지

뭐 하나 빠지지 않게 알차게 엮어놓은 것 같다.

 

 

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

 

 

 

KakaoTalk_Photo_2021-12-26-16-59-53.jpeg

 

 

 

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

 

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

 

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

 

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

 

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

 

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

마지막 파트에서는 슬로우 쿼리 찾는 방법이나, 모니터링, 보안 등에 대한 이야기로 짧게 설명하고 끝이 난다.

 

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

 

챕터가 1에서 24까지 이를정도로 굉장히 세분화되어있다.

몽고DB의 배경지식에서부터 개발에 필요한 부분, 또 데이터의 안정성을 보장해주기 위한 복제 파트, 샤딩, 애플리케이션 관리, 서버 관리 등 몽고 DB를 활용함에 있어 필요한 내용들을 모두 언급해주고 있기 때문에 처음 몽고DB를 사용하려는 사람에게 적합할 것 같다는 생각이 들었다.

몽고DB에서 중요한 개념인 도큐먼트와 이를 생성, 갱신, 삭제 하는 방법 부터 쿼리에 대한 부분,

인덱싱과 컬렉션 유형을 다루는 부분부터 noSQL만의 차별화된 트랜잭션에 대한 소개와 사용법, 정규와와 비정규화에 대한 설명과 같은 기본기가탄탄하고 자세하게 설명되어 있기 때문에 기존에 noSQL을 접해보지 않았던 초급자여도 이 한권으로 공부하기 좋을 것 같으며,

기존에 nosql을 조금 다뤄봤던 사람이라도 개념을 다시 적립하며 탄탄히 기본기를 쌓을 수 있기 때문에 이론적인 부분이 부족한 사람들에게도추천해주고 싶다.

 

책에서 복제와 샤딩, 보안, 영속성, 서버 관리, 백업에 대해서도 다루고 있어서 굉장히 흥미롭게 읽을 수 있었다

기존의 관계형 데이터베이스를 사용했던 예전과 다르게 수많은 비정형 데이터들을 처리하게 되면서 대용량 데이터를 처리할 수 있는 DB로 관심이 옮겨지고 있다.

그중에서도 몽고 DB는 전세계적으로 폭넓게 사용되는 NoSQL 데이터베이스인만큼,

몽고DB를 다뤄보고 싶은 초보자나, 직접 개발을 해보고싶은 개발자라면 추천하는 실전 입문서다.

특히 개발자 뿐 아니라 관리자와 운영자에게도 유용한 지식이 될 것같아, 관련업에 종사하고 있다면 강력히 추천하고 싶은 책이다.

예제소스가 제공되고, 해당 도서만으로 부족하다면 관련된 여러 도서들이 있으니 관심이 생긴다면 하루라도 빨리, 책을 읽어보는 것을 추천드립니다:-)

오라일리 시리즈의 책으로 몽고 DB에 대해서 다루고 있는 책이다.

책은 크게 6파트와 부록으로 나누어져 있고 각 파트마다 다루는 내용들이 명확하게 나누어져 있다. 전반적인 학습 흐름은 책을 순서대로 읽어나가는 것이 좋은데 파트 6의 내용은 학습하는 사람의 상황에 따라 병행하는 것도 크게 문제 없을 것 같다.

 

 

파트 1은 쿼리와 같은 기본적인 사용 방법들에 대해 다루고 있고, 파트 2에서는 인덱싱과 트랜잭션, 스키마 설계를 담고 있다. 몽고 DB의 기본 쿼리가 익숙한 사람은 빠르게 훑고 넘어가면 될 것 같고, 분량이 이 책에서 가장 많고 중요한 내용들을 모아놓은 파트 2를 중점적으로 보는 것을 추천한다.

 

파트 3과 파트 4는 각각 복제와 샤딩에 대해서 다루고 있다.

저마다 필요한 부분에 맞춰 학습하면 되는 파트들인데 개인적으로는 분량이 많고 경험할 일이 적었던 샤딩에 대한 내용을 중점적으로 봤다. 몽고 DB의 샤딩은 어떻게 되어 있는지, 구성 방법과 밸런싱, 전략 등에 대해 중점적으로 학습할 수 있다.

 

파트 5와 6은 실제 운영에 있어서 필요한 부분들에 대해 담아뒀다. 운영적인 부분이라 필요할 때마다 찾아보게 되겠지만, 실습 환경을 구성하는 2장의 내용과 파트 6의 21장 내용을 같이 학습해나가는 것도 좋을 것 같다. 

 

 

총평

책 이름대로 몽고DB에 대해 대부분의 내용을 담고 있는 것 같다.  믿고 볼만한 오라일리 시리즈에 실전 예제를 더한 책이기 때문에 당장 활용하려는 사람들에게 추천할만한 책이다. 입문자에게도 나쁜 책은 아니지만, 많은 분량 때문에 학습 템포를 유지하지 못하면 완독하기 어려운 책으로 느껴졌다.

 

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


요즘은 RDB도 많이 쓰이지만 nosql도 많이 쓰이는데 대표적인 nosql중 하나를 뽑으라하면 mongodb가 생각이 많이 날 것같다.

기업에서 redis도 많이 쓰지만 못지않게 mongodb도 많이 쓰고있는데 이 책을 쭉 보면서 느낀점은 몽고디비에 대한 개념부터 시작해 도큐먼트, 컬렉션 등 기본 부터 인덱싱, 복제셋 과 같은 심화내용까지 잘 설명을 해주어 기존에 RDB를 쓰다가 mongodb를 처음 접해보는 사람도 책을 쭉 훑어보면 몽고디비에 대한 개념이 다 잡힐것같은 책이다

몽고DB 완벽 가이드 


NoSQL 데이터베이스를 기초부터 활용까지 실전 예제로 배울 수 있는 학습서이다. NoSQL의 진수 몽고DB 개발부터 관리까지 모든 것을 총망라하며 몽고DB 입문자를 위한 기초부터 실제 배포에 적용할 수 있는 실용적이고 깊이 있는 내용까지도 담겨있다. 

KakaoTalk_20211225_185828234.jpg

 

 


이번 책은 개정 3판으로 성능이 강화된 몽고DB 최신 버전을 반영해 복제와 샤딩을 더 깊이 다루며 개발뿐 아니라 관리 방법도 자세히 설명한다. 특히 몽고DB 주요 커미터들이 직접 소개한다는 점이 다른 책들과의 차별점이었고 핵심 개념과 풍부한 실전 예제를 통해 애플리케이션 개발 방법을 익히고, 애플리케이션과 서버를 관리하는 방법들을 익힐 수 있어 매우 유익했다. 


책의 초반부에서는 도큐먼트 지향 데이터베이스 개념을 소개하고 기본적인 연산과 쿼리 방법을 안내하고 몽고DB 셸을 소개하고 활용하는 방법을 알려준다. 뒤이어 인덱싱, 트랜잭션, 집계 프레임워크 등 몽고DB로 애플리케이션을 개발하는 데 필요한 내용을 다루고 예제를 통해 공간 정보 인덱스, 텍스트 인덱스 등 특수한 인덱스도 구축해본다.


복제와 샤딩을 다루는 챕터에서는 복제 셋 기본 개념을 소개한 후 셋을 구축하고 운영하는 방법을 알아보고 애플리케이션에서 복제 셋에 연결하는 방법과, 구성 변경이나 모니터링을 통해 복제 셋을 관리하는 방법도 배우고 샤딩을 구성하고 관리하는 방법을 다룬다. 네트워크 연결 추적, 서버 관리, 데이터 밸런싱 방법을 소개한다.


그 외에도 모니터링 등 애플리케이션 관리 방법과 몽고DB를 시작하고 중지하는 방법과 서버를 모니터링하고 백업, 복구하는 방법들도 소개한다.

 

개인적으로는 몽고DB 최신 버전(v4.x) 내용들을 배울 수 있어 큰 도움이 되었는데 트랜잭션, 집계 표현식, 복제, 샤딩 성능이 강화되고 기능이 추가되었으며 와이어드타이거 스토리지 엔진을 도입하여 성능이 향상된 부분을 반영했다. 

MongoDB The Definitive Guide / 실전 예제로 배우는 NoSQL 데이터베이스 기초부터 활용까지

크리스티나 초도로, 섀년 브래드쇼, 오언 브라질 지음

김인범 옮김

 

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

 

12월

나는 리뷰어다 활동의 11번째 리뷰.

(벌써 11번째 리뷰라니... 시간 정말 빠르다! 한빛미디어 항상 감사합니다. 내년에도 잘 부탁드려요!!)

 

2021년 한빛미디어의 마지막 리뷰 책은 "몽고DB 완벽 가이드" 다.

RDBMS도 아직 능숙하지 않지만 그렇다고 NoSQL 공부를 안 할 수는 없지 않겠는가.

 

12월은 NoSQL 이다.

NoSQL은 무엇인가?

 

행과 테이블을 사용하는 관계형(SQL) 데이터베이스보다 훨씬 다양한 방식으로 빠르게 바뀌는 대량의 비정형 데이터를 처리할 수 있다는 점을 강조하기 위해 "비관계형", "NoSQL DB" 또는 "non-SQL" 이라고도 한다.

1960년대부터 다양한 이름으로 존재해 온 NoSQL 기술은 데이터 환경이 변화하고 개발자들이 클라우드, 모바일, 소셜 미디어와 빅 데이터로부터 생성되는 다양한 대규모 데이터를 처리해야 할 필요가 늘어남에 따라 그 인기가 급증하고 있다.

바이럴 성격의 유명인 트윗에서 전자 의료 기록에 포함된 의학 정보에 이르기까지, 새로운 데이터와 데이터 형식이 놀라운 속도로 만들어지고 있다.

 

빅데이터에 대한 중요성이 부각되기 시작한 시점부터 NoSQL에 대한 관심이 증대되었다.

이해를 돕기 위해 SQL과 NoSQL의 차이에 대해 잘 정리해놓은 표를 한번 보자.

출처 : https://azure.microsoft.com/ko-kr/overview/nosql-database/

NoSQL 에 대한 이해가 없었던 개발자라면 오늘 차이점을 알고 가도록 하자.(필자 역시...)

 

책을 살펴보도록 하자.

(총 600 페이지에 달하는 얇은 종이다.)

몽고DB 코리아 시니어 컨설팅 엔지니어이신 김동한 님의 추천사를 보면,

이 책은 몽고DB 최신 정보에 발맞추어 3판까지 개정판을 출간하는 유일한 실전 입문서라고 한다.

책에서는 기초뿐 아니라 전반적인 개발 과정에 필요한 다양한 기능을 배울 수 있고, 개발자에게는 데이터베이스에 대한 지식을, 데이터베이스 관리자에게는 도큐먼트 지향 데이터베이스에 대한 개념을, 운영자에게는 고가용성과 분산 환경 경험을 제공한다고 한다.

 

이 책을 통해 독자들은 몽고DB를 사용해 개발 시간을 단축하고 유연한 스키마를 설계함으로써 빠르게 변화하는 비즈니스에 대응하고 새로운 사업의 가능성을 확인할 수 있다고 한다.

 

사실 추천사가 크게 와닿지는 않지만 개발자가 NoSQL을 공부해야 한다는 사실만은 확실하다. 아직까지 국내 IT 시장은 Java&Spring을 이용한 웹 개발 시장이 가장 크고, 보통은 RDBMS를 사용하고 있다. 하지만 신생 스타트업이나 새로운 프로젝트들은 조금씩 MongoDB를 채택해 나가고 있는 상황이다. 아직 NoSQL 엔지니어들이 많지 않은 상황에서 MongoDB에 대한 이해력을 가진다면 본인의 가치를 높일 수 있는 것은 확실하다.

 

다음으로 이 책의 구성에 대해서 살펴보도록 하자.

 

몽고DB 시작

1장 - 몽고DB가 만들어진 배경과 지향점, 몽고DB를 선택해야 하는 이유

2장 - 몽고DB의 핵심 개념과 용어 설명, 데이터베이스와 셸을 실행하는 방법

3장 - 기본적인 쓰기 연산 방법. 안전성과 속도에 따른 방법

4장 - 도큐먼트를 검색하는 방법과 복작한 쿼리를 생성하는 방법

 

몽고DB 개발

5장 - 인덱스의 개념과 몽고DB 컬렉션에서 인덱스를 사용하는 방법

6장 - 여러 유형의 인덱스와 컬렉션을 사용하는 방법 설명

7장 - 카운트, 고유한 값 찾기, 도큐먼트 그룹화하기, 집계 프레임워크, 그리고 이러한 결과를 컬렉션에 쓰기 등 데이터 집계를 위한 기술

8장 - 트랜잭션

9장 - 몽고DB와 잘 연동되는 애플리케이션을 작성하는 팁

 

복제

10장 - 복제 셋을 구축하고 활용 가능한 설정 옵션을 다루는 방법

11장 - 복제와 관련된 다양한 개념

12장 - 복제가 어떻게 애플리케이션과 상호작용 하는지

13장 - 관리자 측면에서 복제 셋을 운영하는 방법

 

샤딩

14장 - 샤딩에 관한 간단한 설정

15장 - 클러스터 구성 요소의 전반적인 면을 살펴보고 어떻게 설정하는지

16장 - 다양한 애플리케이션에서 샤드 키를 고르는 방법

17장 - 샤드 클러스터를 운영하는 방식

 

애플리케이션 관리

18장 - 몽고DB가 어떤 작업을 하는 중인지 살펴보는 방법

19장 - 몽고DB의 보안과 더불어 배포를 위한 인증 및 권한을 구성하는 방법

20장 - 몽고DB가 어떻게 데이터를 견고하게 저장하는지 설명

 

서버 관리

21장 - 몽고DB를 구동하고 멈출 때의 일반적인 옵션

22장 - 각 유형별 배포에 대해 백업하고 복구하는 방법

23장 - 각 유형별 배포에 대해 백업하고 복구하는 방법

24장 - 몽고DB를 배포할 때 유의해야 하는 여러 시스템 설정

 

부록 A - 몽고DB 버전 부여 방식과 각 OS에서 몽고DB를 설치하는 방법

부록 B - 몽고DB의 내부 작동 방식과 관련된 스토리지 엔진, 데이터 포맷, 와이어 프로토콜

 

내용이 굉장히 방대하다. 정말 이 책 한권만 통달하면 몽고DB를 실무에서 다루는 데는 문제가 없을 것 같다.

본문의 일부를 살펴보자.

쿼리 조건

RDBMS를 사용하던 분들도 SQL과 비교하면서 보면 이해가 더 잘 될 것 같다.

예약어를 사용하여 쿼리문을 뽑아내는 과정이 재미있다. 예약어를 한 번만 더 생각해 보면 어느 정도 뜻을 유추해 낼 수 있다.

처음에는 익숙하지 않더라고 연반추 학습법으로 보고 또 보자.

 

아직 뒷부분은 보지 못했지만, 빅데이터를 다루고자 하는 직군이라면 필수적으로 학습해야 하는 책임은 분명하다.

 

개발자의 공부는 끝이 없지만, NoSQL을 다뤄야 하는 시기가 온다면 꼭 "몽고DB 완벽 가이드" 를 통해 능력 있는 엔지니어가 되도록 하자.

 

우리 개발자 모두들

메리 크리스마스 & 해피 뉴 티어!!


[한빛미디어에서 제공 받은  2021년 '나는 리뷰어다' 도서 리뷰입니다


'빅데이터'가 세상을 바꾸기 위해 등장하면서

함께 각광받는 기술이 바로 '데이터베이스'


그간 많이 사용되던 RDB와는 조합이 별로였는지

NoSQL 몽고DB가 널리 알려지기 시작했고

이젠 NoSQL의 대표주자로 우뚝 자리매김 하였다.


오늘은 오레일리에서 출간한 정말 잘팔렸는지 3판까지 나온

'실전 예제로 배우는'


몽고DB 완벽 가이드(3판)에 대해 리뷰한다.


  • 서적 요약 및 정리

1. 관계형 모델을 사용하지 않는 주된 이유는 분산 확장을 쉽게 하기 위함, 다른 이점으로는 복잡한 계층 관계를 하나의 레코드로 표현할 수 있다는 점(최신 객체 지향 언어를 사용하는 개발자의 관점에 매우 적합하다고 함), 도큐먼트의 키와 값을 미리 정의하지 않기 때문에 고정된 스키마가 없어서 쉽게 필드를 추가하거나 제거할 수 있음(개발 속도의 향상).

2. 복잡한 조인은 존재하지 않는데, 3.6 버전부터 서브쿼리 뿐 아니라 여러 조건으로 복잡한 조인도 할 수 있다고 함.

3. 몽고 DB 데이터의 기본 단위는 도큐먼트(정렬된 키와 값의 집합, 프로그래밍 언어마다 map, hash dictinary와 같이 불리는것이 도큐먼트를 표현하는 자료구조), RDB의 행과 유사하지만 더 다양한 자료 표현이 가능하다고 함.

4. 일반적으로 써오던 RDB의 DML, CRUD와는 다른 문법을 사용, json 형태로 쿼리를 구성, 출력함

5. 인덱스, 컬렉션, 프레임워크 등 처음보는 개념에 대해 예를 들어 쿼리를 작성해 설명하여 보여주기 때문에 직접 따라하면서 결과를 확인해 볼 수 있음

6. 몽고DB 4.2 버전 이상에서 트랜잭션을 지원, 몽고DB 드라이버를 4.2 버전 이상에 맞게 갱신해야 함, (이 책에서는 4.2버전 사용중인듯)

v4.2.0

7. 몽고DB 사용방법 뒤로 복제, 샤딩 같은 고급(?) 기능에 대해 설명하고 어플리케이션, 서버 관리에 대해 설명.

 

  • 여담

1. '접근이 쉽다', '진입장벽이 낮다'고 했는데, 기본적인 도큐먼트에 대한 설명이 부족한 것 같음, RDB랑 비교를 했을 때 뭐가 어떻게 다른지 그림으로라도 설명 해줬으면 좋았을 거라 생각...

진입장벽이 낮다...? 흠...


2. 몽고DB를 처음 접해서 그런지, RDB만 했었기 때문에 그런지 모르겠지만 문법이 익숙하지 않아서 매우 어렵게 다가옴, 말로는 별거아닌 쿼리인것 같은데 bson 문법(BSON은 JSON 문서 의 이진 표현 이지만 JSON보다 더 많은 데이터 유형을 포함)으로 길게 써있으니까 복잡한 느낌이 듦(이건 익숙해지면 나아질까?)

json이랑 차이가 별로 없는것 같다.

3. 그림이 너무 없음... 왜...? 설치부터 하는거면 입문자도 대상 독자에 들어가 있을 텐데, 예시를 사용하느라 지면이 늘어난 반면에 간단하게 설명 가능하다고 생각되는 그림이 너무 적음...

4. 다양한 내용, 개정 3탄까지 나온것을 보면 정말 좋은 책임에는 분명하나... DB를 처음 접하는 사람이나 개념이 부족한 사람은 이 책 하나만 가지고 몽고 DB를 논하기에는 매우 어려울 거라 생각됨(반면에 몽고 DB에 대한 지식이 어느정도 있다면 기초적인 설명이 많지 않기 때문에 재미나게 읽을 수 있을 듯)

5. 기본적인것은 RDB와 유사하나 몽고DB에서만 사용되는 명칭, 몽고DB만의 특징들이 많이 나열되어 있어 복잡한 느낌이 들지만 RDB를 공부할 때도 그랬듯이 갑작스레 전부 활용하거나 한번에 사용할 것이 아니기 때문에 초반부분부터 차례로 읽어나가면 좋을것 같음(대부분의 책들이 그렇지만 앞부분만 너덜너덜...!)

6. 오레일리는 참 멋진 기본서(?) 느낌이 나지만 내용이 어렵게 느껴지는건 어쩔 수 없는듯 하다...

7. 책을 다시한번 훑어보는데 책 부제목이 '실전 예제로 배우는' 이었다. 뭔가 실생활에서 사용될법한 예제들을 많이 사용했다 싶었는데 책 제목에 충실한 내용이구나 싶다(이 부제를 보고나니 왜 기초 개념에 대한 설명이 적었는지 대충 이해가 갔음).

몽고DB(MongoDB)는 도큐멘트(Document) 모델 기반, NoSQL 제품이다.

여기서 도큐멘트의 의미는 Word 파일과 같은 일반적인 문서가 아닌 Key-Value 형태의 데이터 한 쌍을 의미한다.

현업에서도 몽고DB 커뮤니티 버전을 대용량 데이터 서비스에 사용한 적이 있는데, 한빛미디어에서 출간한 몽고DB 완벽 가이드(3판)을 읽다 보니 상용 버전(commericial ver.)에는 더욱 풍부한 기능이 존재함을 알 수 있었다.

이 도서는 도큐멘트 DB의 가장 큰 특징인 도큐멘트, 컬렉션의 소개로부터 시작하여 도큐멘트의 삽입, 삭제, 갱신과 같은 기본적인 CRUD 방식, 쿼리 방법, 인덱싱, 특수 인덱싱등을 전반부에서 다루고 있다.

중반부에서는 쿼리, 인덱싱, 트랜잭션과 같은 중급 내용과 후반부에서는 몽고DB를 사용할 애플리케이션의 설계와 고급 관리 기술을 다룬다,

내용의 흐름은 다음과 같다.

● 몽고DB 소개

● 도큐멘트

● 컬렉션

● 데이터베이스

● 몽고DB 쉘

● 쿼리

● 인덱싱

● 집계 프레임워크

● 트랜잭션

● 애플리케이션 설계(스키마, 정규화, 최적화, 일관성)

● 복제 셋

● 샤딩

● 보안(인증, 권한, 전송 계층 암호화)

● 영속성

● 서버 관리(시작/중지, 모니터링, 백업, 배포)

MongoDB는 협업에서도 지리 데이터 서비스에 많이 활용되고 있는 것으로 유명한데, 6장에서 공간 정보 인덱스와 전문 검색을 위한 인덱스, TTL 인덱스 등, 인덱싱에 많은 부분을 할애하였다. 실제로 국내에서도 교통 관련 서비스에서 몽고DB를 사용하고 있다고 들은 적 있다.

9장 애플리케이션 설계에서는 스키마 설계 고려 사항, 정규화, 일관성 등을 다루었고 10장에서는 복제 셋(replication set)을 생성하고 설정하는 방법을 다루었다.

대용량 DB에서 가장 중요한 점은 일관성과 성능이라고 할 수 있는데 복제 셋의 경우 성능과 백업을 모두 지원하는 유일한 방식이기 때문에 매우 중요한 내용이라 할 수 있다.

PART 4는 아예 샤딩(sharding)을 다루었는데 데이터의 크기가 점점 늘어나면 질의가 느려지고, 전반적인 애플리케이션 성능에 영향을 주게 된다. 이때 성능 개선을 위해 진행 가능한 방법 중 하나가 데이터를 분류하여 쪼개고 관련 있는 그룹에서만 데이터 조회를 하는 샤딩이라 할 수 있다.

이 책의 가장 큰 특징은 그리 두껍지 않는 분량이지만 몽고DB의 모든 기능을 모두 깊이 있게 다루었다는 점이다. APPENDIX에서는 몽고DB의 설치와 BJSON, Wire Protocol과 같이 DB 내부적으로 구성되는 방식의 기술을 설명하는 부록 파트도 있다.

번역서다 보니 한국 저자들이 쓴 책의 아기자기함보다는 묵직한 팩트 위주의 간결한 설명이 주 내용을 이룬다. 예를 들어 특정 기술에 대해 자세한 다이어그램을 제시하여 그림으로 설명하는 친절한(?) 방식보다는 해당 기술의 설명에 많은 문장을 할애하는 방식을 사용한다. 책에서 다루는 설정 파일의 예제 및 소스 코드가 충실히 제공되기 때문에 개발자나 DBA가 따라 하기에 무리 없어 보인다.

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

리뷰를 시작하기 앞서
 
이 리뷰는 한빛미디어 도서 서평단으로 책을 제공 받아 리뷰를 쓰는 글임을 알립니다.
 
책 소개
 
이 책은 몽고 DB 에 관련된 가이드가 들어있는 책이다. 공식 가이드(https://docs.mongodb.com/guides)만 봤을 때 영어로 되있어서 영어가 익숙하지 않은 사람들에게는 익히기가 어렵겠다는 생각도 하여서 마침 이런 책이 나와 몽고db를 본격적으로 사용하는 사람에게 유용한 책이겠다라는 생각이 들었다.
 
제목 그대로 이 책은 몽고db에 대한 완벽 가이드라고 볼 수 있다. 내가 생각하는 이 책의 대상 독자는 몽고db에 대해 한번 사용해봤는데 좀 더 자세하게 사용 방법과 원리를 알고 싶은 사람이라고 생각한다.
 
목차
 
목차는 크게 6부분으로 나뉘는데 다음과 같다.
 
  • 몽고DB 시작
  • 몽고DB 개발
  • 복제
  • 샤딩
  • 애플리케이션 관리
  • 서버 관리
 
목차만 봐도 몽고db에 대해 얼마나 자세하게 다룰 수 있는지를 알 수 있었다.
 
내용
 
처음 책을 읽었을 때는 몽고db의 소개와 기본 개념들이 잘 나와 있어서 몽고 db의 기본 개념이 잘 들어 있다는 느낌을 받았다. 하지만 뒤로 갈수록 내용이 나에게는 어렵게 느껴졌고 기능에 대한 체감이 잘 되지 않았다. 물론 실습이 있어서 하나하나 해보면서 하기엔 정말 좋은 책인듯 하다.
 
내가 생각하는 이 책의 사용법은 몽고 db를 개발하면서 모르는 부분이 있으면 찾는 용도로 사용하는 일종의 참고서 역할이 적당하다고 느꼈다. 실습을 하나하나 다 해보면서 책을 진행하기에는 너무 많은 시간이 소요되어 책에 대한 흥미를 잃을 수도 있지 않을까 싶다.
 
후기
 
읽고 나니까 확실히 몽고db에 대한 자세한 정보들을 확인할 수 있었고 실습들이 들어있어서 직접 따라해보며 기능과 명령어를 익히기에 좋다고 느꼈다. 단, 종종 처음 보는 개발 용어들도 봐서 미리 데이터베이스에 대한 선행 지식이 어느정도 필요하다고 생각했다.
 
이런 부분에서 항상 오레일리 책들이 상당히 전문적이기 때문에 발생하는 장점이자 단점이라고 생각했다. 기술이 어느정도 익숙한 사람에겐 쉬울 수 있겠지만 초급자용이 아니다 보니 기술 언어에 대한 각주 같은 것들이 있었으면 조금 더 좋지 않았을까 싶다.
 
마지막으로 책을 살지 말지 고민하여 이 글을 접하게 되었다면 어느정도 db에 대한 지식과 관계형 db정도는 써본 사람들에게 이 책을 권하고 싶다. 반면, db에 대한 선행 지식이 없거나 관계형 db등을 써보지 않은 사람들에게는 먼저 db책을 하나 보는 것을 권하고 싶다.

몽고 DB에 대해서 하나도 몰랐었는데 이제 어느정도 사용할수 있게 되었습니다. 번역 서적인데 번역된 느낌이 하나도 안들어서 굉장히 좋았습니다.

몽고DB가 충분히 원숙해진 후인 3.4 버전 때에 경험 많은 엔지니어에게 배우며 적당한 트래픽 환경에서 운영했던 행운을 누렸던 터라, RDB를 굳이 쓰지 않아도 되는 사안에는 자연스럽게 몽고DB를 기준으로 생각하곤 합니다. 그러다 보니, <몽고DB 완벽 가이드(3판)>는 세 번째 읽는 몽고DB 교재입니다.

 

실전 예제로 배우는 NoSQL DB라는 홍보문구 답게 질의 예제를 충분히 다룹니다. 더불어 운영 관점에서 복제(replica)와 샤딩과 더불어 서버 관리와 모니터링에 분량을 상당히 할애합니다. 몽고DB를 몽고DB 답게 하는 Replica와 sharding 내용이 충분한 편입니다. 몽고DB와 Spark를 엮어 쓰며 고생스러웠던 적이 몇 번 있었던 경험이 떠올랐습니다. 설치/배포 관련해서도 리눅스 운영체제 설정이나 가상화 관련해서도 조언을 줍니다.제가 처음 배우던 때에 이런 책이 있었으면 좋았겠습니다.

 

3판은 버전 4가 나온 후에 나왔기에 버전 4의 강점에 대해서도 많이 다룹니다. 일례로 공간 정보(Geospatial) 인덱스 예제가 참 상세해서 만족스러웠습니다. 몽고DB가 지도 기반 서비스에도 아주 효용이 크다는 점을 아주 잘 알 수 있었습니다. 텍스트 검색 관련 예제도 마찬가지로 볼 만했습니다.

 

다만, WiredTiger Storage Engine 외에 In-Memory Storage Engine도 언급은 할 법한데 제가 놓쳤는지는 몰라도 다루지 않았습니다. 대세 엔진은 아닌지 모르겠지만 Redis를 굳이 쓰지 않아도 되는 좋은 선택지 중 하나라고 보았으므로 살짝 아쉬웠습니다. 번역 면에서는 한국어로 번역한 용어를 처음 언급할 때나 소제목으로 쓸 때에는 영어 원문을 병용하면 좋았을 텐데 일관적이지 못합니다. 해당 기능을 익히는 데에는 별 문제가 없긴 하겠습니다.

 

버전 4.0이 나온지 엊그제 같은데 4.2를 거쳐 벌써 4.4 버전이군요. 발전이 참 빠릅니다. 때문에 내년쯤 되어 팀원이 몽고DB 교재를 필요로 한다면 새로 나올 책을 사야 하지 않을까 싶기도 합니다. 이 책도 4판이 나오려나요? 기대하고 있겠습니다.

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


 

장점

1.     페이지가 600페이지 가까이 되다 보니 MongoDB 대한 이론적인 부분이나 문법적인 부분이 자세하게 설명이 되어 있어 학교에서 교재로 활용하면 좋겠다고 느낄 정도로 이해하는데 부담감이 없음

2.    기존의 RDB형식의 경우 Standard SQL형식의 문법으로 스키마의 관계와 테이블의 조인 기능을 고려하여 모델을 만들기 때문에 어려운감이 있으나 MongoDB의 경우 NoSQL이기 때문에 JSON이나 파이썬의 Dict형태의 키-값구조로 되어 있어 이러한 키-값 구조의 경우 대부분의 프로그래밍언어에서 지원을 하기 때문에 새로운 것을 배운다는 느낌보다는 확장되어 배운다는 느낌이 강해 부담감이 없음

3.     Mongo DB의 경우 기존의 SQL과는 달리 빅데이터에 적합함을 목표로하여서 유연함과 확장성을 중요하게 생각하기 때문에 ACID속성을 완화하는 형태를 지녔으며 여러대의 DB서버를 클러스터링 하여 하나의 DB로 구성할 수 있어 이러한 NoSQL의 특성인 DB의 확장 및 관리 측면에 대한 내용이 꼼꼼하게 적혀 있으며 이해하기 쉬웠음

 

단점

    1.   문법에 포커스를 맞춰서 연습을 할 때 활용할 데이터 셋은 본인지직접 만들면서 해야함

 

후기

1. RDBMS를 주로 사용을 하다가 이번에 처음으로NoSQL형식의 몽고 DB를 이용을 해보았는데 문법적인 부분에있어서는 키-값구조의 형태를 지원하기 때문에 어려움이 없었으며 몽고DB의특색인 확장 및 관리에 대한 부분에 대해서 낯선 부분이 있지만 어려움 없이 잘 설명이 되어 따라오는데 부담감이 없어 빅데이터에 대해 좀 알고 싶고 거기에 적합한 DB는무엇이 있을까 궁금하다면 이 책으로 접하는게 좋을 것 같다

 

20210419_023922.jpg

 

이번에 소개할 책은 MongoDB 완벽 가이드 3판입니다.

관계형 데이터베이스에 관련된 기초는 학교에서나 회사에서 접할 기회가 많았지만 NoSQL에 대해서는 특별히 공부할 기회가 없었는데

운 좋게도 한빛 미디어 서평 이벤트를 통해 이 책을 지원받아 이 글을 쓰게 되었습니다. 

 

시작하기 전에

먼저 책을 읽기 전에 MongoDB가 속해있는 NoSQL Database가 무엇인지에 대해서 잠시 >찾아보기로 했습니다.

(원본 자료는 아래 "참고 자료" 링크를 참고하시기 바랍니다.)

NoSQL는 "non SQL" or "not Only SQL"의 줄임말 

 

NoSQL의 장점 

* 유연한 데이터 모형: 스키마 변경이 용이하여 외부 변화 대응에 용이

* 수평적 확장성: 서버의 하드웨어 성능을 높이지 않고 일반적인 성능의 서버 수를 늘

림으로써 확장 가능

* 빠른 조회: 조인이 필요없는 구조 (단, 저장 공간의 손해는 발생한다) 

* 높은 개발 생산성: 개발 언어에서 사용하는 데이터 구조와 거의 동일한 방식으로 저

장되기 때문에 직관적이고 코드량을 줄일 수 있음  

 

NoSQL의 단점

* 복수 문서에 대한 Transasction 기능이 없다. (MongoDB에서는 4.0부터 복수 문서에 대한 ACID Transaction 지원)

* SQL Database에 비해 저장 공간을 많이 사용한다. (하드웨어 기술의 발달로 더이상 저장 공간 비용은 큰 문제가 되지 않는다. 몇몇 NoSQL Database는 압축을 지원하여 저

장되는 데이터의 크기를 줄이고 있다) 

* 특정 목적에만 적합한 NoSQL Database가 있을 수 있으므로 자신의 Use case에 맞는 Database를 골라야 한다. (MongoDB는 범용 Database)

 

책의 구성

이 책은 6부, 24장, 2개의 부록으로 구성되어 있으며 다음의 내용을 설명하고 있습니다. 

* 몽고DB 핵심 개념과 연산, 쿼리 방법

* 데이터 집계 기술과 인덱스, 컬렉션, 트랜잭션 사용법  

* 복제 셋을 구축하고 운영하는 방법 

* 클러스터를 구성하고 샤드 키를 선택하는 방법

* 애플리케이션 관리를 위한 보안과 인증, 권한 구성 방법

* 서버를 모니터링하고 백업, 복구하는 방법

 

content.jpg

실습 예제 및 관련된 상세 설명이 잘 나와 있어서 하나씩 따라하면서 개념과 사용법을 손쉽게 익힐 수 있었습니다.

 

현재 몽고DB는 여러 유명한 서비스에서 문제없이 사용되고 있으며 공식적으로 다양한 개발 언어를 지원하고 있습니다.

(C, C++, C#, Go, Java, Node.js, PHP, Python, Ruby, Rust, Scala, Swift)

이번 기회에 이 책을 통해 몽고DB를 학습한 후 새로운 서비스에 적용해보는 것도 좋은 선택이 될 수 있을꺼라 생각합니다.

 

총평

* MongoDB에 대한 기초부터 활용까지 대부분의 내용을 책 하나로 배울 수 있다.

* 번역이 잘 되어 있어서 이해하는데 문제가 없었다.

* 실습 예제와 설명이 잘 나와 있어서 쉽게 따라하면서 사용법을 습득할 수 있다.

 

참고 자료

* https://www.mongodb.com/nosql-explained

* https://www.mongodb.com/nosql-explained/nosql-vs-sql

 

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

 

 

 

현재 개발 프로젝트에서 RDB만 사용하는데 이력 저장이나 대용량의 저장 방식의 변화에 적용하기 위해 NOSQL에 대한 사용을 생각해보게 되었고 해당 정보를 알아가고 있는 도중에 한빛미디어에서 "몽고DB 완벽 가이드 3판" 이 나와서 리뷰어를 신청하여 읽어보게 되었다.

 

우선 NOSQL에 대한 정보가 없는 상태에서 RDB, SQL에 대한 정보와 비교하면서 해당 책을 읽어 보았다.

 

"몽고DB 완벽가이드"는 24개의 챕터와 6개의 PART, 부록으로 구성되어 있었다.

 

우선

 

PART 1.몽고DB의 시작

몽고 DB 도큐먼트 CRUD , 쿼리에 대한 사용법을 확인할 수 있는 주제로 구성되어 있었다.

몽고 DB의 기본적인 내용을 학습할 수 있고 몽고 DB를 활용하는 개발자라면 꼭 읽어야 할 내용이라고 생각한다.

 

PART 2.몽고DB 개발

인덱싱, 집계 프레임워크 , 트랜잭션등 학습할 수 있는 주제로 구성되어 있었다.

그리고 해당 부분에 애플리케이션 설계 부분이 있는데 설계를 어떻게 해야 하는지 학습할 수 있게 구성되어 있었다.

정규화, 비정규화의 구성 및 개발 방식에 대한것을 생각해 볼 수 있게 구성되어 있었고 개발자나 설계자가 꼭 읽어야 할 내용이라고 생각한다. 스키마 설계 패턴등은 꼭 읽기를 추천한다.

 

PART 3.복제

몽고 DB를 어떻게 안전하게 사용할 수 있는지 복제 및 관리하는 방식에 대한 것을 학습할 수 있는 주제로 구성되어 있었다. DB를 운영하거나 관리를 한다고 하면 꼭 읽어봐야 하는 내용으로 구성되어 있었고 설계자, 운영자라면 읽어보기를 추천한다.

 

PART 4.샤딩

대규모 서비스에서 꼭 이야기 하는 샤딩이라는 주제에 대해 한 파트로 구성되어 있었다. 샤딩이라는게 NOSQL의 핵심 개념이라고 하는데 책을 읽는 도중에 가장 어려웠던 부분이었던것 같다.

 

PART 5.애플리케이션 관리

몽고DB 보안 (인증, 권한, 정책에 대한 학습), 데이터의 영속성에 대한 것을 설명하고 있었다.

운영자라면 꼭 읽어야할 내용이라고 생각한다.

 

PART 6.서버관리

몽고 DB 시작 종료, 모니터링 (메모리 사용 모니터링, 성능 추척 등), 백업, 설계방법(하드웨어 식의 설명) 등 몽고 DB를 운영한다면 꼭 알고 있어야 하는 내용으로 구성되어 있으며 운영자라면 꼭 읽어야 할 내용이라고 생각한다.

 

일반적인 개발에서 몽고DB를 활용하는 사람이라고 하면 PART1 몽고DB의 시작 , PART2 몽고DB 개발을 읽어도 충분하게 원하는 정보를 습득할 수 있을거라고 생각하고 설계자나 운영자라면 전체적인 내용을 보는게 좋을거라고 생각한다.

몽고DB에 대한 전반적인 내용을 해당 " 몽고DB 완벽 가이드" 를 통해 학습할 수 있고 책 내용 학습이후에는 몽고DB 도큐먼트를 학습한다면 충분하게 전문가가 되지 않을까 예상해 본다.

 

다만 아쉬운 것은 설치나 그밖의 환경이 클라우드 관련 예제가 좀 있으면 좋지 않을까 하는 생각이 들었다. 요즘에 해당 내용에 대한 관심이 있어서 인터넷 세미나와 그밖의 정보를 보고 있는데 클라우드 환경에서 활용하는 내용이 있었는데 해당 내용이 없어서 조금은 아쉬웠다.

 

마지막으로 해당 책은 몽고 DB를 처음접하는 개발자, 설계자, 운영자가 기본적인 내용을 학습하기 위한 책이라고 생각한다.

뒷부분에 조금은 어려운 전문적인 내용도 있지만 활용하는 입장에서는 몽고DB의 큰 그림을 학습할 수 있는 내용이었다고 생각한다.

 

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

책의 이름처럼 "몽고DB 완벽 가이드" 는 몽고DB의 교과서이자 사전이다. 

처음 이 책을 접하는 사람은 600 페이지에 달하는 두껍고 많은 분량에 부담을 느낄 수도 있지만 구성이 마음에 든다면, 당분간 다른 책은 필요가 없을 것이라고 생각한다.

 

 

아주 기본적인 내용부터 운영에 필요한 내용까지 순서대로 책에 잘 녹여져 있어 마치 교과서 같다.

 

 

1, 2부에서는 몽고DB가 무엇인지, Document 기반의 DB, NoSQL 에 대한 설명과 개발에 필요한 쿼리, 인덱스와 같은 내용들을 다루고 3부 이후로는 DB 를 운용하고 관리하는 기술들을 포함해 복제, 샤딩, 보안과 같은 내용을 순차적으로 다룬다. 다른 책들도 구성은 크게 다르지는 않겠지만 모든 내용에 대해 자자세하게 예제가 달려있고 더욱이 이책은 몽고DB 코어 소프트웨어 엔지니어와 몽고DB 교육 부사장가 직접 저술했기 때문에 같은 내용이라도 몽고DB의 철학을 잘 녹여내어져서 써져있다고 할 수 있다.

 

 

 

O'Reilly 책들을 여러 권 봐온 덕에 이런 구성과 느낌이 익숙해서 더 좋았다

 

올해 시작한 토이 프로젝트에서 데이터베이스를 몽고DB로 선택했고, 혼자서 꾸역꾸역 마음대로 개발했다가 날렸다가 하고 있는 중에 나에게 정말 필요한 책이 나왔고, 그 책을 바로 얻게 되어 정말 행운이다. 개발과 함께 올해가 가기 전 스터디를 진행하면서 깊게 공부할 예정인데 책은 "몽고DB 완벽 가이드" 로 정할 수 밖에 없을 것 같다. 

 

한챕터 한챕터 공부하면서 더 깊은 내용의 리뷰와 요약을 블로그에 기록해봐야겠다.

 

추천 대상

두꺼운 책이기 때문에 당장 몽고DB를 사용하고자 하는 사람들에게는 약간의 심리적(?) 부담이 생길 수도 있을 것 같다. 두껍고 무거운 책 싫으면 다른 책이나 E북을 노려보자...

근데, 그치만, 그럼에도, 무거워도... 이 책 보자.

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

 

 

  "완벽 가이드" 시리즈(?) 이름에 걸맞게 몽고DB의 소개부터 시작해서 CRUD, 인덱싱, 트랜잭션, 샤딩 같은 핵심적인 내용과 더불어 모니터링이나 보안, 백업 같은 부분까지 다루고 있다. 

 

  몇 년 전만해도 트랜잭션 미지원 같은 이슈들로 인해 관계형데이터베이스와 장단점이 명확히 구분되는 느낌이었다. 하지만 몽고DB 4.2버전 이상에서는 트랜잭션도 지원하고 여러 기능적/성능적 단점들을 보완했다. 그래서 이제는 관게형데이터베이스의 장점을 거의 다 가져온 느낌이 든다. (물론 조인 같은 기능은 관계형데이터베이스가 뛰어나겠지만) 

 

  인덱싱부분은 관계형데이터베이스와 매우 유사한 것 같다. B+ Tree를 활용한 인덱스의 구성이라던지 방식이 말이다. 효과적인 인덱싱을 위해 복합 인덱싱일 때 생성 순서 같은 부분들도 중요한데 그런 부분들도 잘 얘기해 주고 있다.

 

  개발을 처음 시작하는 사람이 몽고DB를 첫 데이터베이스로 사용하는 것도 나쁘지 않을 것 같다. (서비스와 상황에 맞게 써야 하겠지만) 충분히 데이터베이스라고 부를 만큼 성숙하고 훌륭한 것 같다.

 

  현재 회사에서 몽고DB를 사용하지 않아서 내용들을 깊게 이해하며 보지는 못했지만 나중에 몽고DB를 다룰 일이 생긴다면 다시 펼쳐보고 공부할 것 같다.

 

 

 

 

한빛미디어에서 제공받는 책으로 해당 리뷰를 작성하였습니다.

 

전체 페이지는 총 600페이지로, 개발 서적들 중에서 그래도 꽤 두꺼운 편이 아닐까 싶습니다.
전체 내용을 훑으며 한 번에 쭉 읽어보기에는 버거울 수 있는 정도의 양이라고 생각합니다.
파트 1과 2에서는 기본적인 개념과 질의에 관련해 다루고 있고요, 이후 부분에서는 실제 운영과 관련된 부분인 것으로 보입니다.

 

이런 종류의 서적은, 몽고DB를 공부하기 위해 모든 내용을 완독하겠다!는 느낌보다는,
업무 중이나 공부하던 중에 더 깊게 알고 싶은 부분이 생기면 그 때 그 때 들여다보면 좋은 레퍼런스?가 된다고 생각합니다.
앞으로 몽고DB를 통해 업무를 진행할 일이 많을 것 같은데, 그 때마다 좋은 참고서가 될 것 같습니다. 

목차가 잘 정리되어 있고, 매 연산자 마다 예시가 있는 등 이해하는 데 도움이 많이 되는 구성입니다.

 

다만 하나 아쉬운 점은, 쿼리나 집계 연산과 같은 경우 기존에 데이터셋이 있어야 직접 실습하면서 익히기가 쉬운데,

이 점은 직접 준비해야 한다는 점이 조금 아쉬웠습니다.

 

처음 몽고DB를 만났을 때, 정말 충격적이였습니다.
'이게 DB라고?'란 생각까지 들었으니까요.
DB라고 하면 당연이 RDB-관계형 데이터베이스-만을 생각했었는데, 새로운 형태의 DB를 만난지도 거의 10여년이 되어 가네요.
NoSQL이란 것을 처음 알았고, 그 중에서 가장 많이 사용한 것은 몽고DB였습니다.
지금까지 많이 사용하였지만, 레퍼런스나 가이드를 제대로 본 적은 없는 것 같네요.
프로젝트에 필요한 부분만 찾아서 부분적으로 본 것 같습니다.
이번에 '몽고DB 완벽 가이드'를 통해 제대로 배워보고 싶었습니다.
 

mongo.jpg

 

 
이 책이 벌써 3번째 개정판이네요.
기존의 RDB에 익숙했던 개발자라면 새로운 DB에 대한 흥미를 느끼실 수 있을 겁니다.
몽고DB는 도큐먼트 지향 데이터베이스입니다.
스키마로 명확히 분리된 RDB와는 많이 다르지요.
쉽게 설명하면, JSON 형태처럼 키와 밸류로 구성되어 있습니다.
그만큼 유연하게 DB를 사용할 수 있다는 장점이 있지요.
그래서 많은 프로젝트에서 사용하고 있습니다.
 
이 책은 몽고DB의 모든 것을 설명해 주고 있습니다.
'The Definitive Guide'라는 부제처럼 최고의 가이드입니다.
 
DB의 구조에 대한 설명은 물론이고, 데이터라고 할 수 있는 도큐먼트 생성, 갱신, 삭제에 대한 설명도 상세하게 보여줍니다.
기존의 RDB에서도 사용하고 있는 인덱싱이나 트랙잭션을 몽고DB에서는 어떻게 사용하는지도 확인할 수 있습니다.
무엇보다 이 몽고DB를 실제로 어떻게 사용해야 하는지를 '애플리케이션 설게' 부분을 통해 보여주고 있습니다.
이 부분을 보면서 그동안 내가 해왔던 설계의 부족한 부분이 무엇인지를 알 수 있었습니다.
 
RDB에 대한 얄팍한 지식으로 자연스럽게(?) 몽고DB도 사용하게 되었습니다.
이 책을 보면서 내가 얼마나 몽고DB를 잘못 사용해 왔는지, 제대로 이해하지 않았는지를 알 수 있었습니다.
몽고DB를 다루어야 하는 분들이라면 '꼭' 봐야 할 책으로 추천드립니다.

한빛미디어를 통해 받게 된 책 '몽고DB 완벽 가이드(3판)'은 SQL을 공부하면서 NoSQL이라는 것을 비교하기 위함이었습니다. SQL, NoSQL 모두 데이터베이스를 다룬다는 것은 동일하지만, NoSQL 앞에 No가 붙은 것처럼 두 성향이 매우 달랐습니다. 그래서 책을 받자마자 당황을 했고, 다행스럽게도 이전에 받았던 책과 다르게 '몽고DB 완벽 가이드'는 초심자도 NoSQL을 이해하고 다룰 수 있도록 기본적인 내용부터 다뤄 처음부터 하나하나 배워갈 수 있었죠.

 

 

몽고DB는 대표적인 NoSQL 데이터베이스입니다. 이 책에서 말하는 몽고DB의 기본 개념으로 몇 가지가 있는데,

 · 몽고DB 데이터의 기본 단위는 도큐먼트이며, 이는 관계형 데이터베이스의 행과 유사하다.

 · 같은 맥락에서 컬렉션(Collection)은 동적 스키마(Dynamic Schema)가 없는 테이블과 같다.

 · 몽고DB의 단일 인스턴스는 자체적인 컬렉션을 갖는 여러 개의 독립적인 데이터베이스를 호스팅한다.

 · 모든 도큐먼트는 컬렉션 내에서 고유한 특수키인 "_id"를 가진다.

 · 몽고DB는 몽고셸(The Mongo Shell)이라는 간단하지만 강력한 도구와 함께 배포된다. Mongo 셸은 몽고DB 인스턴스를 관리하고 몽고DB 쿼리 언어로 데이털르 조작하기 위한 내장 지원을 제공한다. 또한 사용자가 다양한 목적으로 자신의 스크립트를 만들고 로드할 수 있는 완전한 기능의 자바스크립트 해석기다.

 

책은 크게 6개의 파트로 나뉘어져 있으며, 각 파트에는 여러 개의 챕터로 구성되어 있고, 파트로 구분하자면 몽고DB 시작 / 몽고DB 개발 / 복제 / 샤딩 / 애플리케이션 관리 / 서버 관리로 구성되어 있습니다. 

 

앞에서 말한 것처럼 현재 SQL을 공부하고 있지만, 마치 한글과 영어처럼 같은 것을 조회하거나 만드려고 해도 방식이 아예 다르다보니 두개를 같이 공부하는 것은 효과적이지 않은 듯 합니다. 아마 NoSQL을 공부하고 SQL을 공부하거나 그 반대의 경우엔 좀 더 효과적이 될 수 있겠죠.

 

 

책 몽고DB 완벽 가이드의 장점이라고 하면, 다양한 예제를 통해 특별히 이해가 안되는 부분 없이 초반 부분을 쉽게 넘어갈 수 있다는 점입니다. 그만큼 예제를 하나하나 써보고 동작을 확인하는데 걸리는 시간이 다소 크다고 해도, 몽고DB에서 사용하는 NoSQL도 결국 하나의 언어이기 때문에 많이 써보고 동작을 확인하는 방식에 저에겐 잘 맞았습니다. 특히 몽고DB와 NoSQL에 대해 아무것도 모르는 제가 배우기에도 무리가 없을 정도로 기초적인 내용도 잘 다루고 있고, 후반부 내용을 직접 경험해본 것은 아니지만, 책을 차근차근 따라가다보면 몽고DB의 기본적인 것들은 다룰 수 있을 듯 합니다.

 

특히 몽고DB 완벽 가이드(3판)은 초판이 나왔던 2011년 이후로도 2014년에 2판, 2021년 최근에 나온 3판과 같이 주기적으로 최신 정보를 반영하고 있습니다. 최신 몽고DB를 배우고 싶은 사람이라면 누구에게나 좋은 지침이 되리라 생각합니다. 지금 공부하고 있는 SQL이 어느 정도 마무리되고 NoSQL이 필요하다고 생각하면 이 책을 통해 중후반부를 배워나갈 계획입니다.

# 시작하기

 

빅데이터에서 AI까지, 대용량데이터의 관리의 필요성

처음 빅데이터 교육을 이수했을 때에는 Python 문법과 데이터 수집에 중점을 두고 실습하느라 과연 수집한 데이터를 어떻게 해야 잘 관리할 수 있는지를 고려하지 못했었다. 당시 수집하는 데이터 크기도 필자가 가진 pc의 하드만으로도 커버가 되는 양이었기 때문에 몽고DB에 대해서 들어는 봤지만 공부할 필요성을 느끼지 못했었다.

그러나 프로젝트를 경험하면서 데이터베이스에 실시간으로 많은 사람들이 접근하고 있기 때문에 서버관리와 모니터링 역시 굉장히 중요하다는 것을 몸소 깨닫게 되었다. 웹 개발자로서 방대해지는 데이터를 관리하는 목적에서라도 단순 SQL 지식보다도 DB에 대해 공부할 필요성을 느끼게 되었다.

몽고DB 완벽가이드는 30%는 개발을 위해 알아야할 DB지식을, 나머지 70% 이상은 DB를 확장하고 모니터링, 관리하기 위해 필요한 지식을 담고 있다고 할 수 있다. NoSQL을 처음 접하거나 DB의 개발부터 관리까지 큰 그림에서의 DB를 알고자하는 사람들에게 유용할 것이다.

 

# 책 구성 살펴보기

 

2.jpg

몽고DB 완벽가이드 뒷표지

 

 

 

이 책은 총 6개의 Part로 나누어져 있다.

 

Part1. 몽고DB 시작

Part2. 몽고DB 개발

Part3. 복제

Part4. 샤딩

Part5. 애플리케이션 관리

Part6. 서버관리

 

Part1은 몽고DB의 철학과 핵심 개념을 시작으로 개발자의 입장에서 데이터베이스를 이용하기 위해 필요한 지식을 전달한다. shell 명령어와 몽고DB 쿼리를 통한 기본적인 연산부터 복잡한 쿼리까지 소개되고 있다.

Part2에서는 Index의 개념, 트랜젝션 처리, 몽고DB와 연동되는 애플리케이션 작성 팁을 소개한다.

Part3은 DB의 복제셋을 구성하고 관리하는 방법론을 소개하고 있다. Part4에서는 샤딩과 클러스터링 개념을 중점으로 DB 확장하는 방법을 소개한다. Part5와 6에서는 DB와 관련한 인증, 보안 등 Infra 담당자에 유용할 관리적 측면을 소개하고 있다.

 

Part1과 Part2는 개발자의 입장에서, Part3~6은 대체로 관리자의 입장에서 DB 활용방법을 소개하고 있다.

 

# 장점 골라내기

 

 

1. 각 chapter별 핵심 개념 소개와 자세한 실습

3.jpg

 

쿼리 실습 및 핵심 개념 소개

몽고DB에 관한 어렴풋한 개념만 있는 상태에서 접했을 때 생소한 용어와 개념들이 많았지만, chapter가 시작되기 전 명확하게 개념을 소개하고 있어 해당 내용을 읽을 때 어려움을 덜 수 있었다.

또한, 혼자서도 쿼리 및 shell 작업 실습이 가능하도록 간결하면서도 예시를 들어 이해를 도왔다. Github을 통해 예제 소스도 공유되고 있기 때문에 실습에는 무리가 없다고 생각되었다.

 

 

2. DB의 입문 ~ 개발 ~ 관리 전면을 아우르는 데이터베이스 서적

 

저자는 앞서 대상독자를 개발자와 DB관리자, 운영자로 나누었다. 첫 번째 장에서는 DB의 핵심철학을 이해하고 이어서 DB를 조작해봄으로써 이해를 돕고 있다. DB를 구축하고 관리하기 위해 필요한 지식을 각 개념별로 상세하게 소개하고 있기 때문에 독자의 목표에 맞게 취사선택이 가능한 점도 실용적이라고 할 수 있다.

전반부에서 몽고DB의 사용법이 소개되었다면, 후반부의 내용은 데이터베이스 구축과 관리의 목적을 이룰 수 있도록 단계별 이슈와 함께 소개하고 있기 때문에 꼭 몽고DB에 국한되지 않을 수 있다는 점에서 데이터베이스에 관해 전반적으로 알고자 하는 사람에게 유용할 것으로 생각된다.

 

 

# 제안하기

 

 

[단점]

'완벽가이드'라는 제목에 걸맞게 상당히 방대한 범위의 지식을 담고 있는 서적임에 틀림없다. 특히 DB의 확장 및 관리 측면에서의 내용이 절반 이상의 양을 차지하고 있기 때문에 서버에 관한 기본 지식이 전무한 상태에서는 이해하기 버거운 부분도 있으리라 생각된다. 또한, 개발한 애플리케이션과 몽고DB의 연동을 중점으로 한 실무적인 지식을 기대했다면 아쉬운 부분이며 개인적으로 커버할 방안을 찾는 것이 필요하다고 생각한다.

 

 

[기대하는 점]

이름부터 직관적인 몽고( humongous, 매우매우 큰!) DB는 개발된 지 10년 이상이 되었고 현재는 빅데이터와 관련한 대표적인 DB가 되었다. 저자는 꾸준히 최신의 지식을 업데이트하고 있기 때문에 몇 년 뒤의 몽고DB는 과연 어떻게 진화하였을지가 기대된다.

 

 

 

# 맺기

 

[추천]

빅데이터 관련 데이터베이스의 최신 지식이 필요한 사람

비관계형 데이터베이스로 개발부터 모니터링까지 커버하고자 하는 사람

데이터베이스 관리자로서 몽고DB 지식이 필요한 사람

 

 

위 사람들에게 몽고DB 완벽가이드는 폭넓은 지식을 제공할 것이다. 특히 어느정도 DB를 경험해본 사람의 입장에서는 비교해가면서 다른 쿼리를 익혀보는 재미가 쏠쏠하고, 빅데이터 분석 환경을 구축하면서 스스로가 DB구축 및 환경설정에 대해서도 가이드라인이 될 수 있기때문에 단순히 사용법에 그치지 않고 관리의 목적에서 접근한다면 굉장히 좋은 최신의 레퍼런스가 될 것이다.

 

 

[소감]

빅데이터 분석도 결국은 대용량의 데이터로부터 유의미한 결과를 도출하는 것이기 때문에 많은 데이터를 어떻게 관리하느냐도 이슈일 것이다. 필자는 DB에서 어떻게 데이터를 꺼내오고, 그것의 속도를 개선하기 위해 쿼리 공부를 했었다. 데이터베이스를 관리하기 위해 복제하고 서버를 증설하는 것은 주로 다른 부서에서 맡아하기 때문에 전혀 다른 영역인 것 같았는데, 개발자로서 모니터링이나 관리 부분도 숙지하고 있는다면 변화하는 환경에 대해서 적응하는 것에 그치지 않고 보다 효율적인 어플리케이션 작성을 고안할 수 있다는 점에서 매력적인 것 같다.

RDBMS를 주로 다루다가 NoSQL을 사용하고자 하면 가장 먼저 고려하게 되는게 몽고DB일것이다. 이미 현업에서도 많이 사용되고 있고 key-value 형태의 동적 스키마형 도큐먼트를 다루기에 적합하다.

NoSQL은 RDBMS에 비해 확장성과 유연성을 가지며 대용량 데이터를 다루기에도 적합하다.

몽고DB책이 많이 않은 상황에서 이 책은 3판이라는 점에서도 몽고DB를 익히고자 할 때 가장 추천할만한 책이 아닐까 싶다. 3판에서는 최신 트랜드를 반영한 예제와 함께 복제와 샤딩을 더 깊이 다루며 애플리케이션 개발 뿐만 아니라 관리 노하우까지도 다루고 있다.

몽고DB의 기초부터 활용, 관리까지 한권으로 몽고DB에 필요한 거의 모든 필요한 내용을 익힐 수 있도록 구성되어 있다.

데이터를 주로 다루다 보면 스키마가 변경되거나 데이터 타입이 변경될 때가 많은데 그 때마다 스키마 관리 등이 이슈가 되곤 하는데 몽고DB를 사용하며 이런 부분에 대해 좀 더 유연하고 확장성 있게 사용할 수 있다.

스키마 설계에 대한 고려사항, 최적화를 위한 팁, 스키마 마이그레이션 방법, 스키마 관리 방법에 대해서도 잘 설명이 되어 있으며 몽고DB를 사용하지 않고 RDBMS를 사용해야 하는 상황에 대해서도 설명하고 있다.

또, 대용량 데이터를 다루다보면 부딪치게 되는 느린 작업을 찾아서 강제 종료하는 방법이나 컬렉션과 데이터 베스에 대한 통계를 가져오고 해석하는 방법, 명령행 도구를 사용해서 몽고DB가 실행중인 작업을 알아내는 방법도 잘 정리가 되어 있다.

너무 큰 JSON 파일이나 CSV파일 등을 다루다보면 몽고DB로 다뤄야겠다고 생각될 때가 종종 있다. 몽고DB를 사용하는게 적합한 경우도 있고 그렇지 않을 때도 있는데 이 책을 통해 몽고DB 실용가이드를 얻는데 도움이 될것 같다.

교재의 예제소스는 여기에서 볼 수 있다 => mongodb-the-definitive-guide-3e/mongodb-the-definitive-guide-3e: MongoDB: The Definitive Guide 3rd Edition

이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다.

20210418_102310~2.jpg

몽고 db는 NoSQL 기반으로 의 DBMS다.

NoSQL

“Non Relational Operation Database SQL” 의 줄임말로써 “관계형 데이터베이스가 아닌 SQL” 입니다.

일반적인 관계형 데이터베이스에서는 데이터의 중복을 제거하고 무결성을 보장하기 위해서 정규화를 하게 되는데 이러한 정규화가 과도한 JOIN으로 인해 성능 저하가 있을 수 있다고한다.

이책은 이러한 문제를 잘극복할수있도록 처음 설치부터 컬렉션을 다루는 방법까지 자세하게 해당 책에서 내용을 담고있다.

몽고 db의 쉘은 자바스크립트 해석기이고, 자바스크립트 프로그램이 실행이 가능하다.> x = 200;200> x / 5;40> Math.sin(Math.PI /2)1> new Date("2019/1/1");ISODate("2018-12-31T15:00:00Z")> "Hello, World!".replace("World","MongoDB");Hello, MongoDB!replace 를 통해 글자를 수정가능하다. //현재 db조회> dbtest//데이터베이스 선택> use videoswitched to db video> dbvideo//db변수에서 컬랙션에 접근한다. > db.moviesvideo.movies//movie 변수를 생성한다. > movie={"title":"Star Wars:Episode IV -A New Hope","director":George Lucas","year":1977}2021-04-03T20:20:48.637+0900 E QUERY [js] SyntaxError: missing } after property list @(shell):1:68> movie={"title":"Star Wars:Episode IV -A New Hope","director":George Lucas","year":1977};2021-04-03T20:20:55.541+0900 E QUERY [js] SyntaxError: missing } after property list @(shell):1:68> movie={"title":"Star Wars:Episode IV -A New Hope","director":"George Lucas","year":1977};{ "title" : "Star Wars:Episode IV -A New Hope", "director" : "George Lucas", "year" : 1977}

 

collection을 다루고 있는 만큼 key,value 형식으로 값을 입력이 가능했다.

//무비컬렉션에 값을 저장한다. 

> db.movies.insertOne(movie)

{

        "acknowledged" : true,

        "insertedId" : ObjectId("6068501d5890e9d90fadf7ea")

}

find를 통해 결과를 확인한다. 

> db.movies.find().pretty()

{

        "_id" : ObjectId("6068501d5890e9d90fadf7ea"),

        "title" : "Star Wars:Episode IV -A New Hope",

        "director" : "George Lucas",

        "year" : 1977

}

find와 findone은 컬렉션을 쿼리하는데 사용한다. 

> db.movies.findOne()

{

        "_id" : ObjectId("6068501d5890e9d90fadf7ea"),

        "title" : "Star Wars:Episode IV -A New Hope",

        "director" : "George Lucas",

        "year" : 1977

 

}

해당 책을 통해 기본 부터, 활용하는데 익히는데 큰무리가 없었다.

몽고db를 익히고자 하는 데에 이책을 추천하고싶다.

 
 
 
 

이 책을 선택한 이유

실무에서 AWS DynamoDB를 사용할 일이 생겼는데 NoSQL의 N자도 모르는( 사실 DB의 D자도 모르는) 수준이어서 알아보던 와중에 입문자를 위한 기초부터 배포 까지라는 문장에 당했다고 한다.

이 책의 구조

  • 몽고 디비 시작( 이라 쓰고 기본이라 읽는다. )
  • 몽고 디비 개발( 이라 쓰고 고급이라 읽는다. )
  • 복제
  • 샤딩
  • 관리

실제 입문자로서 이 책을 접한 소감

DB는 학부 때 수업만 들어본 정도의 수준으로 수업을 들은 지도 언 10년이 지났다.

그래도 항상 기본이 중요한 만큼 기본은 어느 정도 알고 있기에 첫 번째 파트인 몽고 디비 기본은 이해하는데 어려움이 없었다.

오히려 학부때 배웠던 RDB의 select 블라블라로 시작되는 sql이 아닌 자바스크립트 함수를 호출하는 듯한 느낌의 CRUD API들은 몽고 디비 3.x 버전 이후에 나온 API들을 기준으로 명칭도 직관적이고 사용법도 간단했다.

말 그대로 몽고 디비 시작 파트는 설치해보고 실행해보고 명령 따라 해보고 하는 정도라 입문이 맞다고 생각한다.

그러나 두 번째 파트인 몽고 디비 개발부터 조금씩 난이도가 올라가는 느낌이 들었다. ( 실제로 그렇다 )

인덱싱, 특수 인덱스와 컬렉션, 트랜잭션, 스키마 설계 등등의 내용은 정말 중요하지만 하나하나 가벼운 느낌은 아니었다. 그래도 예제들이 크게 복잡하진 않기 때문에 개념적으로 이해하는데 무리는 없었다.

세 번째 파트부터는 사실상 관리, 운영 부분들이어서 가벼움 마음으로 읽어보고 나중에 실제 구성할 일이 생겼을 때 다시 책을 보면서 익혀나가도록 하면 좋을 것 같다.


사실상 책의 절반 정도는 사용법, 최적화 방법, 설계 방법 등등 개발적인 요소이지만 나머지 절반 정도는 관리, 운영 부분이다.

완벽 가이드라는 말처럼 다루는 내용이 많지만 이는 필요에 따라 학습하고 필요에 따라 찾아보는 방식으로 책을 활용하면 된다고 생각한다.

다만 반반 나누어서 라도 한 번쯤은 전체 내용을 읽어보길 바란다. 이런 게 있구나 라는 걸 알고 있는 것과 모르는 것은 차이가 크며 실제 동작 방식에 대한 이해도와 몽고 디비의 설계 사상에 대한 이해도가 달라지기 때문이다.

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

 


 

IT기술은 새로운 기술들이 많이 나옵니다.


시간이 흐르면서 없어지는 언어도 있고 새로 생기는 것도 있는데요.

데이터베이스의 큰 틀은 한번 공부해두면 크게 변화지 않아서 쭉 사용할 수 있습니다.


전통적인 데이터베이스 구조는 관계형 데이터베이스입니다. 많은 분이 관계형 데이터베이스는 다뤄봤을 것으로 보입니다.


NO sql 중 많이 쓰이는 몽고 DB는 도큐맨트 형태의 구조로 궁금하신 분들이 많을 것 같아 소개해 드리려고 합니다.


그 책은 바로 ‘몽고DB 완벽 가이드’입니다.


이 책은 몽고DB의 핵심 용어부터 동작 방식을 알려줍니다.


몽고DB에 대해 몇 가지 이야기 나눠보겠습니다.



02 2.jpg

 


1) 몽고DB NO SQL

몽고 DB는 페이스북, 트위터에서 등 메신져 회사나 게임에서 많이 사용합니다.


사용 방법은 기존 관계형 데이터베이스를 바탕으로 쓰면서 서브로 NO SQL을 비정형 데이터 위주로 씁니다.


NOSQL 특성상 데이터 모델을 관계형 데이터베이스보다 융통성 있게 사용 할 수 있기 때문이죠.


로그 자료나 여러 대의 데이터베이스 서버를 묶어서 사용할 때 주로 쓰입니다.



03 2.jpg

 


2) 공부 방법

공부 방법은 직접 DB를 설계해보면서 감을 잡는 게 제일 빠릅니다.

하지만 그게 어렵다면 이 책을 통해서 예제 파일들을 실행해 보는 게 가장 빠른 길이겠죠.


이 책은 몽고디비 최신 버젼인 4.x에 맞춰져 있어서 트랜잭션, 집계 표현식 등 성능이 이슈에 개선이 돼 실습하는 데 버젼 이슈는 없습니다.


또한 기존 RDB에 대한 경험이 있다면 큰 차이는 없으며, JSON 구조라 편하다는 점도 느낄 수 있습니다.



01 2.jpg

 


Ps

몽고DB 관련된 책 중 가장 최적화된 책으로 볼 수 있습니다.


입문자나 데이터베이스 관리 및 운영자들에게는 단비 같은 책으로 볼 수 있는데요.

1독을 하면서 전체 큰 틀을 잡고 하는 방향이나 예제 파일을 돌려 보면서 필요한 부분만 사전 형식으로 봐도 무방해 보입니다.


몽고DB에 관심 있는 분들에게 이 책을 추천합니다.

 

20210418_120229.jpg

 

 

 

국내에 MongoDB에 대한 최신 기본서가 없는 상황에서 나온 책이라서 굉장히 반갑다. Part 1에서는 mongodb 에 대한 기본적인 사용법, 도큐먼트 생성하고 삭제하는 법, 기본적인 쿼리문 등을 다룬다. RDB에서의 CRUD 를 공부한다 생각하면 될 것 같다. Part 2 에서는 인덱싱과 컬렉션 유형, 집계 프레임워크 , 트랜잭션을 공부한다. 개발자라면 Part2 까지 꼼꼼하게 공부하면 많은 도움이 될 것이다. 

 

 

20210418_120253.jpg

 

20210418_120319.jpg

 

 

 

Part3 부터는 서버 관리자에게 적합한 내용이다. Part3 의 첫 내용이 "복제셋"인데 이는 이름처럼 데이터의 동일한 복사본을 여러 서버상에서 보관하는 방법 및 서비스를 배포할 때 권장되는 부분입니다. 복제셋의 변경,모니터링 등 복제 셋의 설정과 구성 요소를 공부할 수 있습니다. 그 다음에는 실제 어플리케이션과 연결은 어떻게하는 지를 다루고, 이후 '관리'하는 방법에 대해서 다룹니다.이러한 내용들은 개발자가 알아도 좋겠지만 서버 작업을 많이하는 사람들이라면 더 필수적으로 알아야 하는 내용들입니다. 특히나, 대용량 서비스를 다룬다며 더 중요한 내용들입니다.

'샤딩'에 대한 설명도 자세히 나와있다. 몽고db초보자인 나에게는 꽤나 중요하면서도 쉽지 않은 내용인데 이 부분 설명이 나와있어서 좋은 공부가 됐다. 

 

 

20210418_120347.jpg

 

 

 

 

이 책을 통해서 문법들과 인덱싱 등을 좀 더 자세히 알 수 있어서 좋았다. 종종 필요할 때마다 꺼내볼 수 있는 책인 것 같습니다. 국내에 mongodb 에 대한 국내 서적은 희귀한 편입니다. 그런 만큼, 올해 출간된 이 책은 mongodb를 다루는 사람들이 영어로 된 공식문서 등의 자료를 제외하고 만날 수 있는 반가운 '우리말' 참고서적이다. 내용도 꽤 깊이가 있고, 알차기에 옆에 두고 보기 딱 좋은 책이라고 생각한다. 

 

그러므로, Mongodb에 대한 기본서로 이 책을 옆에 두면서 mongodb 에 대한 작업을 심화할 수 있을 것이다. 구글링과 공식문서도 좋지만, mongodb는 한글 자료가 희귀한만큼 이런 우리말 기본서 하나 정도는 갖고 있는게 좋지 않을까 싶다.

 

 

 

 

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



몽고디비_small.jpg

 

 

몽고DB란 무엇인가, 무엇이 있나.

이 책의 목표는 몽고DB가 지향하는 목표(확장성이 높고 유연하고 빠른 완전한 데이터 스토리지를 만드는 것)를 독자에게 느낄 수 있게 하는 것이다.

 

파트가 아닌 챕터마다 이 챕터에선 무엇을 설명하는지 알려주는 것이 교과서의 단원목표 보는 것 같다.

 

몽고DB를 처음 접했을 때는 그 당시 같이 배우던 게 오라클이었는데 그것도 초보인데 이걸 배우니 이게 뭔소리야 어쩌라고 구조가 왜 없어? 란 생각만 가득가득했었다.

그래서 이걸 어떻게 써야할 지도 모르겠어서 우리 팀은 포기했었지만 한 팀은 몽고DB를 이용해서 좌표정보를 넣고 프로젝트를 마무리한 팀이 있었다.

그 때 더 막막했던 이유 중 가장 큰 것은 몽고DB의 막막함이었다.

뭘 검색해야할 지도 모르겠는데 그래도 mysql, postsql, 오라클은 뭐라도 많이 나오지만 이건 뭔지 잘 안 나오던 시기였다.

이 책은 python을 검색할 때 보았던 문서 중에서 목차가 나눠져 있고 이건 이렇게 쓰는 거다 설명해주는 문서가 있는데 그런 느낌이다.

 

나는 업무에서 딱히 DB를 만질 일이 없어서 있어도 이미 있는 것에서 연결하는 역이라서 몽고DB는 좀 새로운 편이었다. 그리고 DB를 언제 어떤 걸 쓰게 될지 모르는 일이니...(DB는 많다..) 이렇게 공부할 기회가 있었으니 나중에 고생은 조금 덜하지 않을까 라는 막연한 기대감을 품게하는 가이드책이다.



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

 

한빛미디어에서 제공받는 책으로 해당 리뷰를 작성하였습니다.

책표지!

0

2021년에 JavaScript(이하, JS) 관련 기술을 계속해서 공부하고 있다. 평생을 먹고 살게해주었던 Spring을 잘 활용하기 위해서 Kotlin과 JUnit5는 작년부터 계속해서 진행하고 있었고, 학위과정에서 관심이 있는 Haskell은 활용할 곳이 마땅하지 않아서 학문적인 수준에 머물러있는데 반해서 JS는 사용할 곳이 많아지고 다양한 곳에서 활용되기 때문에 열심히 배우고 있다.

1

JS를 공부할 때 언제나 그렇듯이 API를 만들기 위해서 Express를 배웠고, async/await를 활용하기 시작하면서 koa를 사용했다. 하지만 API를 JSON 파일을 사용해서 파싱을 했다가, DB와 연결하면서 가장 많이 등장하는 2개가 있는데 하나가 MongoDB이고 다른 하나가 MySQL이다. 대부분의 튜토리얼이나 교재는 대부분 MongoDB를 선택한다. 개인적으로 MongoDB를 사용했던 경험은 log를 수집하기 위해서 사용했고, 프로젝트에 적극적으로 사용할 땐 Spring에서 제공하는 JPA를 사용해서 진행했기 때문에 MongoDB를 진지하게 사용해본적은 없는 듯 싶었다. JS에서 워낙에 많이 사용하는 듯 해서 이번에 MongoDB에 대해서 좀 심도 깊게 공부할 수 있는 기회가 있어서 MongoDB 교재의 리뷰를 선택하였다.

적절한 이미지를 사용한 설명

2

책 제목이 모든 것을 말한다. 정말 MongoDB에 대한 “거의” 모든 범위를 설명하고 있다. 이 책 한권이면 MongoDB에 대한 사용법이나 의문점 문제등은 해결된다고 할 수 있다. 즉, Query에서 시작해서 배포까지 알려준다. 번역도 무난하게 되어있기 때문에 큰 어려움이 없이 MongoDB에 대해서 배울 수 있다.

하지만, 한 권에서 모든 것을 설명한다는 점에서 부담감이 될 수 있기 때문에 이 책을 사용할 때는 몇가지 주의사항이 필요하다. 예를 들어, 나처럼 JS를 기반으로 개인 개발을 진행하고 계시다면 “1장,2장,3장,4장,7장,8장”만 읽어도 충분할 듯 싶다. 반면, 회사에서 log를 분석하거나, 데이터를 수집하는 용도로 사용하신다면 “1장,2장,3장,4장,5장,6장,7장”을 읽어보시고 샤딩이나 복제와 같은 것은 필요한 시점에 읽어도 충분하듯 싶다. 배포 및 인프라 담당자는 “IV. 샤딩, V. 애플리케이션 관리, VI. 서버관리” 부분을 참고하면 된다.

JSON을 자주 사용하자!

3

결론적으로 말하자면, 한 권에서 모든 것을 설명하고 있기 때문에 이 책을 처음부터 다 읽기 보다는, 자신의 역할(Role)과 필요에 따라서 목차를 참고해서 선택하고 읽으면 좋을 듯 싶다. MongoDB에 대한 개략적인 소개 뿐만 아니라 사용법, 배포까지 포함하고 있기 때문에 JS를 기반으로 개발하시거나, JSON을 표준 인터페이스로 활용하신다면 이 교재는 많은 도움을 된다.

 

 대중적인 MySQL의 시대를 뒤로하고 지금은 다양한 스타일의 DB가 등장하고 있다. In Memory 데이터 Storage인 Redis와 Document 스타일의 MongoDB (noSQL), 분산 DB 등 이를 비롯한 다양한 DB가 현재 실무에서 다양한 용도로 쓰이고 있기 때문이다.

요즘 필자가 근무하는 조직에서는 한참 MongoDB를 활용한 데이터 관리가 핫한 주제로 떠오르고 있다. 그만큼 MySQL 외에 MongoDB가 실무에서 대중화가 되었고 MongoDB의 고도화 수준이 안정선에 이르른 것이라 생각된다. 아마 MongoDB의 출연 연도를 생각해 보았을 때, 이 정도 안정화는 어찌 보면 당연한 것일 수도 있겠다는 생각이 든다.

다만 최신 기술이라 하여 모든 서비스에 적용 가능한 만능은 아니라 생각된다. 멀티 샤딩, 존 샤딩, 그리고 어그리게이션 등 MongoDB에서도 다양한 기능들을 제공하고 있다. 기능들만 봐서는 정말 MongoDB만 알면 모든 서비스들을 손쉽게 구축하여 데이터를 관리할 수 있을 것 같이 느껴진다. 그러나 몇몇 sql 기반의 DB가 MongoDB보다 강점인 부분이 분명히 존재하는 만큼 실무 개발을 하려는 초, 중급 개발자들이라면 이 부분을 명확히 집고 갔으면 싶다. (이와 관련된 자세한 내용들은 구글링 해보시길 권한다)

필자의 서론이 길었다. 그렇다면 간략하게나마 해당 도서에 관해 소개하면 책의 포커스는 다음과 같을 것이다.

- MongoDB를 단순히 학습 목적으로 공부해보고 싶은 사람

- MongoDB를 실무에 적용해보고자 하는 뉴비 혹은 중급자

필자가 다년간 한빛미디어 도서를 리뷰한 경험에 따르면 한빛미디어의 책들은 굉장히 친절하다. (어느 정도 CS 지식만 갖췄다면) 그렇기 때문에 이번 도서도 기본적인 SQL 혹은 DB에 관한 지식을 가졌다면 학습하는 데에 그리고 실무에 적용하는 데에 큰 무리가 없을 것이라 생각된다.

 

【어떤 독자를 위한 책인가】

 이 책은 앞서 언급한 바와 같이 MongoDB를 처음 시작하는 뉴비와 중급자를 대상으로 한다. 고급자들은 해당 도서를 공부하기보단 MongoDB 사이트에서 제공하는 레퍼런스를 참고하는 편이 좋을 수 있다. (그런데 필자의 경험상 MongoDB 사이트의 내용이 최신 버전의 내용을 못 따라가는 것으로 알고 있다. 필시 개발을 하면서 stack overflow에 신규 기능들은 사람들의 의견을 종합하여 도입하도록 하자)

하지만 해당 도서를 공부하기 전에 기본적인 DB에 관한 지식을 알고 있으면 좋을듯싶다. 적어도 SQL과 noSQL의 개념 정도는 알아둬야 한다고 본다. A가 있고 B가 있는데 A와 B중 무엇이 어떤 상황에서 좋고 나쁜지를 가늠하려면 적어도 비교 군에 대한 대략적인 정보 혹은 지식수준이 있어야 한다. 이런 비교 학습은 머리에도 오래 남고 실무에 추후 적용할 때도 훨씬 유연하게 대처할 수 있으므로 필시 사전 지식으로 갖추고 학습에 임한다면 훨씬 도움이 될 것이라 생각된다.

중급 개발자의 경우, 이 책은 통해 기초 지식과 실습 자료들을 한 번 더 수행해봄으로써 보다 MongoDB, Document 형태의 DB에 관한 지식의 고도화를 이룰 수 있을 것이라 생각된다.

 

【책의 구성】 'MongoDB 완벽 가이드'의 책의 구성은 어떠한가.

 이 책은 크게 24개의 챕터 그리고 6개의 part로 구성되어 있다. 각 part는 다음과 같다.

 


 

1파트 : 몽고DB의 시작

 몽고DB에 관한 배경지식에 대해서 설명한다 Document가 무엇인지 Collection이 무엇인지. 몽고 DB 시작을 어떻게 하면 좋은지 그릭 Document의 생성과 삽입에 관해서 어느 정도 다양한 예를 들어 설명한 후에, MongoDB에서 제공하는 기본적인 Query에 대해서 학습한다. 솔직히 실무에서 DBA가 아닌 이상 개발자가 알아도 되는 정도는 기본적은 CRUD에 대한 지식들이다. 그렇기에 해당 부분은 반드시 직접 실습하며 내 것으로 체득하길 추천한다.

 


 

2파트 : 몽고 DB 개발

 이 파트에서는 몽고 DB 개발에 있어 Indexing 그리고 Indexing에 따른 collection 유형 등에 대해서 학습한다. 재미있는 주제인 정규화와 비정규화에 관한 서로의 장점을 설명한다. 모든 기술은 적절한 용도에 맞게 사용될 때 비롯이 서 빛을 발하는 법이므로 저자도 필자도 강조하는 서비스 목적에 맞는 방식을 잘 고민해서 적용해보도록 하자. 이후 해당 파트는 일관성 관리, 스키마 마이그레이션 등에 대해서 설명한다.

 


 

3파트 : 복제

 이번 장은 실무에서 가장 중요시 다루는 부분이다. 바로 데이터의 안정성을 보장하는 파트이다. 아무리 빠른 처리를 보여주는 DB라 할지라도 언제든 접근 가능하지 못하고 내구성과 일관성을 보장하지 못한다면 해당 DB는 실제 서비스에서는 사용해선 안되는 DB이다. 그렇기에 필자의 경우, 해당 파트를 이 책에서 가장 중요시 봤고 아마도 실무에 적용하려는 대다수의 개발자들 역시 해당 부분을 메인으로 들여보지 않을까 싶다.

해당 파트는 3-노드 복제 셋을 설정하는 방법과 이러한 복제 셋 구성의 변경 방법, 그리고 프리머리 서버가 다운되었을 때 세컨더리 서버들이 대표를 어떻게 선정하는지 등에 대해서 자세히 서술되어 있다. (대표 선출에 사용되는 합의 알고리즘은 실무에서도 간혹 쓰이므로 알아두면 분명 좋을 것이라 생각된다)

그 외에 동기화 방법(oplog), 하트비트란 무엇인지 관리에 대한 자세한 내용을 다루므로 한번 살펴보길 권장한다.

 


 

4파트 : 샤딩

 안정성 다음으로 실무에서 많이 고려되는 부분이 바로 샤딩이다. 특히 IDC를 여러 개 가진 대규모 회사나 혹은 다른 나라에 IDC를 가진 회사에서 일하게 된다면 존 샤딩을 비롯한 멀티 샤딩 등에 대해서 잘 알아야 한다. 왜냐하면 각 나라별로 샤드를 관리하여 그에 알맞은 데이터 파편화와 관리가 필요하기 때문이다.

이 파트에서는 샤딩이 무엇인지, Mongos/ Mongod 가 무엇인지 등을 다룬다. 또한 샤딩을 왜 해야 하고 언제 해야 하는지에 대해서도 저자 나름의 의견을 잘 정리해두었다. (저자의 의견 외에도 다양한 요건 혹은 상황에서 샤딩이 발생할 수 있다는 점도 알아두도록 하자) 또한 청크가 무엇인지 청크는 어떻게 관리되는지에 대해서도 저술하고 있다. 하지만 이 부분의 경우 다른 나라로 샤딩을 구성할 경우, 저자의 말 한 대로만 동작하지 않을 가능성이 있으므로 주의하도록 하자.

또한 샤드 키 같은 경우, MongoDB 버전에 따라서 수정 가능하고 가능하지 않은 버전이 있다는 부분 역시 명심하도록 하자 (MongoDB 4.2 이전, 이후로 나뉨)

 


 

5파트 : 애플리케이션 관리

 해당 파트에서는 mongotop, mongostat 등의 사용 방법에 대해서 익힌다. 각각 linux의 top와 netstat 등의 명령어와 매핑되므로 직접 실행해서 어떤 것들인지 확인해 보도록 하자.

이 외로 해당 파트에서는 MongoDB의 보안과 영속성 그리고 몽고 DB에서 보장하지 않는 부분 등에 대해서 다룬다. (시스템의 파일 시스템과 연관된 파트이다.)

 


 

6파트 : 서버 관리

 솔직히 해당 파트는 개발자보단 DBA 분들이 읽어보시면 좋을듯싶다. 말 그대로 MongoDB 모니터링과 백업 방법 등에 대해서 다룬다. 물론 MongoDB를 직접 설치 및 구성하고 관리하는 입장이라면 해당 파트를 유심히 들여다볼 것을 권장한다.

 

【 MongoDB 완벽 가이드를 읽고서…….】

 모든 기술은 목적과 취지에 맞게 사용되어야 그 빛을 발할 수 있다. 최신 기술이라고 해서 모든 상황에 알맞은 것도 아니고 옛날 기술이라고 해서 요즘 기술에 사용하지 못하라는 법도 없다는 것이다.

왜 필자가 위와 같은 말을 하냐면 간혹 요즘 기술이라고 해서 기존에 잘 구성되어 있던 시스템을 무조건 갈아엎으려는 움직임이 종종 보이기 때문이다. 물론 시대의 트렌드를 따라가는 것은 좋다. 하지만 이것이 실재 서비스와 연관이 되면 좀 더 고려해봐야 한다. 특히 DB와 같은 고객, 사용자의 데이터를 보관하는 소프트웨어의 선택은 더욱더 신중할 수밖에 없다. (생각해 보라, 은행에 예금한 돈이 어느 날 DB 에러라고 해서 1억이 0원이 된다면 얼마나 난감하겠는가? 물론 은행의 예금 히스토리 시스템은 보다 안정적인? 방법으로 개발되어가고 있다. 이와 관련된 리뷰로 전에 썼던 '사토시의 서'를 읽어보길 추천한다.)

개발자로 살아간다는 것은 때론 보수적이며 때로는 진보적인 성향을 가져야 한다. 이 두 가지가 적절히 융합되어 본인이 구축하고자 하는 시스템을 정확히 이해하고 이에 맞는 소프트웨어 구성과 각각의 프레임워크 도입을 해낼 수 있다면, 요즘 말하는 억대 연봉을 받는 개발자는 손쉽게 이룰 수 있을 것이라 본다.

 

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

 


 

 


몽고DB 완벽가이드 책.

 


​몽고db관련 서적이 많지는 않은데 이렇게 기초부터 활용까지 배울 수 있는 책을 보니 반갑다.


관련 공부할때도 mongodb 공식홈페이지에 있는 Docs에 의존&구글링이 전부였는데 이런 가이드 책이 있다니!


db관련 쿼리를 짤때나 필요한 게 있을때만 그때그때 검색해서 썼는데 전반적으로 설명이 되어있는 책을 접하니 좋다.

 

  

 


책은 크게 몽고db의 기본과 개발관련된 내용과 복제, 샤딩, 어플리케이션/서버관리 등 서버관리쪽의 내용을 담고 있다.


개발자들이라면 part1,2가 도움이 될 것 같고, 서버담당자라면 part3,4,5,6 쪽을 보면 좋을 것 같다.


늘 영어로된 docs만 보다가 한글판을 보니 이해도도 높아지고 좋다.


이전에는 RDB만 쓰다가 몽고DB로 넘어왔는데, 기존의 습관때문인지 처음엔 몽고DB가 너무 어려웠다.


쓰다보니 정말 확장성 측면에서는 장점이 큰 DB.


개발할때는 정말 편한 DB인 것은 맞는데, 운영자의 입장에서는 쿼리를 짤때나 DB 스키마같은게 따로 없기 때문에 그 부분에서는 좀 힘든 것 같다. 아무튼 장단점이 확실한 DB.

 

 


읽으면서 문법들도 많이 익히고, 인덱싱 하는 부분도 재밌었다. 여러가지 예를 들어서 쿼리플랜도 상세하게 설명되어져 있어서 좋았다.

 


몽고DB의 핵심이라 하는 복제, 샤딩 부분은 사실 업무에서 아직 데이터가 많지않아 필요한 부분이 아니므로 ... 간단하게 읽고 넘겼는데 대용량을 다루는 업무라면 효율적일 것 같다. 


실무에서 도움이 많이 될 것 같은 책! mongodb를 다루고 있다면 가이드책으로 추천한다.

 

 


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

 

벌써 3쇄나 나올정도로 핫한 몽고DB
책 한권으로 확실한 개념과 기초를 다지고, 실제 운영에 사용할 스킬까지
두고두고 도움이 될 책!

 

mongodb-definitive.jpg

 

 

몽고DB는 웹 애플리케이션, 특히 백엔드 개발에서 자주 등장하는 단골 손님이라고 할 수 있습니다. 특히 빅데이터가 대중화되면서 기존의 RDBMS 의 한계가 드러나고 noSQL DB가 DBMS의 한 축을 담당하면서 몽고DB가 대표 주자로서 부각되고 있습니다.

실제 개발 시에는 아직 MySQL이나 SQLite를 주로 사용하고 있는 관계로 noSQL을 그리 사용할 기회는 없었습니다. 최근에는 웹 관련 개발을 하면서 redis나 neDB를 도입하게 되면서 key/value 기반의 DB를 조금이나마 맛을 보았습니다. key/value 는 개념적으로는 단순하게 와닿기 때문에 몽고DB라고 별거 있을까하는 마음으로 이 책을 접하게 되었습니다.

그러나, 우선 책의 두께부터 흠칫 놀라게 되었습니다. 책의 분량이 무려 600페이지 가까이 되어서, 처음의 자신감에서 두려움으로 조금씩 변해갔습니다. 책 표지는 오라일리의 특징처럼 동물의 그림이 등작하는데, 몽구스여우원숭이라고 합니다. 몽구스가 몽고DB를 접근하여 제어할 수 있는 드라이버와 같은 역할을 하는데, 아마 이와 연관이 있거나 발음이 비슷해서 이 동물을 소개한 것이 아닐까 하는 짐작을 잠깐 해봅니다.

지은이는 3명이나 되는데 — 그래서 책 내용이 많은가 봅니다 — 몽고DB를 개발하시는 소프트웨어 엔지니어와 교육을 담당하시는 두 분이 참여하셨습니다. 실무적인 부분과 내용전달이 잘 될 수 있도록 교육적인 부분이 잘 어울어져 구성이 되어 있을 것이라 기대할 만 했습니다.

초반에는 역시나 몽고DB에 대한 기본적인 개념과 간단한 사용방법들이 등장합니다. 설명이 자세하고 예제도 풍부하기 때문에 굉장히 재미있고, 술술 읽을 수 있는 부분이었습니다. 그래서 3판까지 인쇄가 된 것 아니겠는가 라는 생각도 잠깐 들었습니다. 읽다가 느낀 것이지만, 몽고DB가 역동적으로 기능이 발전하고 개선하고 있기 때문에, 이로 인해 새로운 판이 나온 큰 이유겠구나 하는 생각도 하게 됩니다.

중반부터는 개념이 어려워집니다. DB를 다루어 본 경험이 거의 없기 때문이기도 하지만, 초반 나오는 검색, 읽기, 쓰기 등의 단순한 개념의 내용과는 달리, 인덱싱, 트랜잭션, 설계 등의 내용은 데이터베이스의 기반 지식이 있어야 이해도를 높일 수 있지 않을까 합니다. 갑자기 이 부분부터 조금씩 집중도가 떨어지는 느낌이 들었습니다.

복제 파트에서는 신선한 느낌이 듭니다. 저장소의 안정성이나 성능을 높이기 위해서 RAID를 이용해서 사용하기도 합니다. 이와 유사하게 여러 개의 복제 셋을 구성해서 안정성이나 성능을 높이는 방법입니다. 다루기가 복잡할 것 같기도 하고, 몽고DB의 위력을 맛볼 수 있는 부분이기도 합니다.

샤딩 파트부터는 아직 읽어보진 못했습니다. 그래서 지금 글은 아직 중간 서평이라고 할 수 밖엔 없을 것 같습니다. 이전에 블록체인 관련 업무를 할 때 트랜잭션 속도를 올리기 위해서 샤딩을 도입해야 한다는 얘기를 종종 들었습니다. 같은 개념이라면, 데이터를 분산해서 노드의 부하를 줄이고 속도를 올릴 수 있는 방법일 것이라 짐작합니다. 흥미롭게 읽을 수 있는 부분일 것 같습니다.

이 책은 몽고DB의 바이블이라 할 수 있습니다. 몽고DB를 사용하는 방법부터, 몽고DB를 구성하고 관리하는 방법까지 다루고 있기 때문에, 이 책 하나면 몽고DB에 대해서 충분한 지식을 얻어갈 수 있을거라 생각합니다. 물론 이 책을 읽기 전에 데이터베이스에 대한 기본적인 지식을 갖추고 접근하는 것이 더 유익할 것 같습니다.

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

몽고DB 완벽 가이드는 약 600페이지의 분량의 6개의 부와 부록으로 구성되어 몽고DB 개발, 관리, 배포에 관한 내용을 다룹니다.

학교 공부할 때도, 프로젝트에서도 주로 RDBMS를 사용해왔고, 개인적으로 공부하다가 NoSQL을 사용해 본 경험은 있지만 잘 알지 못하는 상황이었는데 이번에 책을 제공받아 조금 더 자세하게 알아보게 되었습니다.

 

단순히 데이터(도큐먼트)를 삽입, 수정, 삭제하고 쿼리하는 것을 넘어서 데이터 집계, 인덱스, 컬렉션, 트랜잭션, 샤딩을 비롯하여 복제 셋 구축 및 운영, 애플리케이션 관리를 위한 보안과 인증, 권한 구성과 서버 모니터링, 백업 및 복구 방법까지 다루는 이 책은 제목처럼 몽고DB와 관련하여 볼 수 있는 국문 가이드, 참고서로써의 역할을 합니다.

 

개인적으로는 구글링이나 영문 문서 및 가이드를 보는 것이 더 편하다고 생각하긴 하지만, 곁에 두고 관련 키워드와 관련된 내용을 한번쯤 예제와 함께 살펴본 다음 필요할 때 그때그때 찾아보는 식으로 보면 많은 도움이 될 것 같습니다! 

 

이 책을 통해 데이터베이스에 대한 한층 더 깊은 이해를 하는데 있어 입문자이자 백엔드 개발자가 되기를 희망하는 입장에서 유익했고 비슷한 상황에 계신 분들께 추천드립니다 :)

 

 

KakaoTalk_Photo_2021-04-15-16-01-07.jpeg

 

 

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

컴퓨터쪽에 있으면서 오레일리를 모를수는 없죠..

이번에 리뷰에 이벤트로 받게되었는데..

RDBMS가 아닌 NoSQL 쪽은 처음이라 잘 이해할 수 있을까? 하는 생각이 들었습니다. 

벌써 개정 3판이라고 하니.. 여태까지 RDBMS만 알고 살았구나 싶은 생각이 들었습니다.

mongoDB에 대해서 전반적으로 알 수 있는 좋은 책입니다. 

입문자부터 잘 이해할 수 있다고 적혀있는데.. 사실 한번씩 이해안되는 부분이 

있어서 인터넷 검색으로 더 찾아봐야 했습니다. ㅠ-ㅠ 

입문자 입장에서는 조금 더 자세히 설명해줬으면 하는 부분이 있던 것도 사실입니다.

 


 


하지만 실행결과를 JSON형태로 되어있어서 조금 자세한 부분을 알수 있어서 전체적인 

내용을 이해하는데는 좋았던것 같아요.

오레일리 책이 좀 어려운 책이 많아서 그렇지.. 

그런것에 비해서는 나름 괜찮게 전개되고, 설치하면서 하나하나 따라 하다보면

어느새 개념과 함께 이해할 수 있어서 좋았던 책입니다...

입문자에게 바로 추천하기는 좀 어렵지만.. 좀 더 쉬운 책을 지나서 옆에 놔두고 보려면

좋은 책인것 같네요..


 

 

 

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

OREILLY 시리즈는 언제나 그렇듯 입문자부터 현업에 계신 분들도 읽기 좋은 책이라고 생각됩니다.

이번에 리뷰하게 될 책은 몽고DB 완벽 가이드 3판입니다.

 

개정된 3판에서는

최신 트렌드를 반영한 예제를 이해하기 쉽게 설명하고,

복제와 샤딩을 더 깊이 있게 다루고,

애플리케이션 개발뿐 아니라 관리도 자세히 다룹니다.

 

개발자에게는 데이터베이스에 대한 지식을 !

데이터베이스 관리자에게는 도큐먼트 지향 데이터베이스에 대한 개념을 !!

운영자에게는 고가용성과 분산 환경 경험을 !!!

제공한다고 합니다.

 

 

 

 

600페이지 정도 되며 몽고DB에 관한 대부분의 내용을 다루고 있습니다.

몽고 DB 입문자도 이해하기 쉽게 내용 설명이 자세히 되어 있습니다.

APPENDIX A 몽고 DB 설치에서 윈도우와 맥에서 설치하는 방법이 설명되어 있어 설치부터 차근차근 따라하실 수 있을 것입니다. 

교재의 예제 소스는 깃허브에서 보실 수 있습니다.

github.com/mongodb-the-definitive-guide-3e/mongodb-the-definitive-guide-3e

 

 

mongodb-the-definitive-guide-3e/mongodb-the-definitive-guide-3e

MongoDB: The Definitive Guide 3rd Edition. Contribute to mongodb-the-definitive-guide-3e/mongodb-the-definitive-guide-3e development by creating an account on GitHub.

github.com

 

처음부터 차근차근 설명을 읽으며 예제를 따라해도 좋고,

필요한 부분만 찾아 보는 것도 도움이 될 거 같습니다.

관계형 데이터베이스만 다루시던 분들은 해당 도서를 통해 도큐먼트 지향 데이터베이스에 대한 개념 및 지식을 얻어가실 수 있으리라 생각됩니다.

시중에 몽고DB만 다루는 책 찾기 쉽지 않은데 몽고DB를 자세히 보고 싶은 분께 추천드립니다.

 

 

 

 

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

NoSQL이 뜬지는 한참되었지만 업무적에서 RDB를 주로 쓰다보니 써보진 못했다.

몽고DB 역시 어떤 DB인지, 어떤 장점이 있는지 주워 들은 정도로만 알고 있었다.

이번에 몽고DB 완벽 가이드를 보며 몽고DB에 대해 조금은 이해할 수 있었다.

전반적으로 좋은 책이지만, 아쉬운 점도 있었다.

 

우선 장점은 내용이 차근차근 잘 구성되어 있다는 점이다.

목차를 보면 몽고DB를 사용하기 위한 거의 모든 내용을 담고 있다.

또한, 쓰는 방법뿐 아니라 왜, 어떻게 써야 하는지도 설명해주고 있다.

읽어 보기만 헤도 많은 도움이 되리라 생각한다.

몽고DB를 처음 접하는 사람에게 추천하고 싶은 책이었다.

특히, 몽고DB 관리자라면 가이드북으로 곁에 두면 좋을 것 같다.

 

이 책의 가장 아쉬운 점은 번역이 매끄럽지 못하다는 것이다.

읽다가 보면 몇 번씩 다시 읽어봐야 하는 부문이 계속 나온다.

중간중간 도저히 이해가 안 돼서 원서를 찾아봐야 했다.

그나마 읽을 수 있는 정도라도 되는 건… 구글번역이 좋아졌기 때문이라고 생각한다.

문장뿐 아니라 용어의 선택에도 좀 아쉬운 부분이 있다.

예를 들어 false positive를 “허위 양성”이라고 번역했다.

허위는 거짓을 만들어 내는 것을 의미하므로, 허위 양성이면 거짓말로 양성으로 만들었다는 뜻이 된다…

보통 “거짓 양성”,”위양성”이라고 하거나, “1종 오류”라고 하는데 왜 이렇게 했는지 모르겠다.

파트2의 원래 제목은 “Designing Your Application”인데 “몽고DB 개발”이 된 것도 이해가 안 되고…

Tailable Cursors의 경우 “꼬리를 무는 커서”라고 번역했는데…

차라리 그냥 음차를 하는게 좋지 않았을까? 어차피 “커서”도 음차인데…? 

 

또 한가지 아쉬운 점이 있다.

실행 결과를 JSON 형태 그대로 책에 표시한 경우가 많다.

설명은 석 줄뿐인데 전체 결과를 다 보여줄 필요가 있을까?…

심한 경우엔 JSON만 7페이지나 나오는 경우도 있다.

전부 다른 내용도 아니고 비슷한 내용이 반복되는데 그대로 책에 넣어 놨다.

이건 원서의 문제이지만 번역서를 내면서 손봤다면 좋았을 텐데… 그냥 그대로 냈다.

 

개인적으로 이 책을 통해 처음 몽고DB를 써보며 어떤 장점이 있는지 잘 느낄 수 있었다.

예를 들면, 6장에서 특수 인덱스 중 하나인 공간정보(좌표)인덱스를 소개하고 있다.

예전에 DB에 있는 좌표를 가지고 일정 범위를 찾는 기능을 만든적이 있는데, 그때랑 비교하면 정말 편리하다.

좋은 책이지만 읽기 힘들다는 점이 좀 아쉽다.

2판에서도 고구마를 먹는 것 같다는 평을 보았다.

새삼 번역이 쉽지 않음을, 그만큼 역자의 능력이 중요함을 깨닫게 해준 책이다.

2020년도 '나는 리뷰어'다 이벤트를 통하여 많은 책을 읽으며 지식을 쌓을 수 있었습니다. 운이 좋게도 이번 2021년에도 '나는 리뷰어다 이벤트'에 선정이 되어서 지식의 깊이를 더 확장할 수 있는 기회를 얻게 되어 감사할 다름입니다.

이번 4월에 제가 읽어보고 리뷰할 책은 Mongo DB 완벽가이드 책입니다.

이전에 데이터베이스를 처음 접하였을때는 MySQL을 통하여 실습을 진행하였고 대중성과 범용성이 있어 업계 및 학교에서 실습을 진행하는데 있어서 많이 사용되고 있습니다.

사실 Mongo DB또한 이전에 자격증 문제로 실습을 해본 경험이 있습니다.

먼저 Mongo DB의 특성은 관계형 데이터 베이스가 아니며 도큐먼트 지향 데이터 베이스로 알려져 있습니다. 관계형을 쓰지 않는 이유는 분산 확장을 쉽게하여 유연하게 사용을 하기 위함이라 합니다.

본 책을 읽으면서 처음에는 개괄적인 Mongo DB의 특성에 대하여 알아볼 수 있었습니다. 그리고 Mongo DB의 구조와 architecture 또한 배워볼 수 있다는 점이 크게 장점으로 작용하였습니다. 또한 책에서 제공하는 실습들을 step별로 진행하면서 연습 또 연습을 할 수 있는 점 또한 좋다고 말씀드릴 수 있을 것 같습니다.

그리고 항상 DB를 공부하면서 제가 어려워 하였던 점은 제한자 및 제약을 주어서 Query문을 생성하는 점입니다. 본 책을 통해서 부족한 부분을 연습할 수 있었고, 추가적으로 더 익히고 싶은 부분 및 연습은 구글링을 통하여 보충하였습니다.

마지막으로 본 책에서 제가 부족했던 데이터베이스의 개념을 배워나갈 수 있었으며, 관계형 데이터 베이스가 아닌 도큐먼드 지향 데이터 베이스의 특성 및 실습에 대해서도 꼼꼼하게 숙지할 수 있었습니다. 그리고 수업시간에 들었을때 잘 이해가 가지 않았던 부분들과 데이터 밸선싱 작업은 추후 제가 Mongo DB를 사용하여 데이터를 분산 시키는 작업을 진행하는데 있어서 큰 도움이 될 것 같습니다.

마지막으로 좋은 책 제공과 기회를 주신 한빛미디어 담당자 분들께 감사 드립니다. 5월에도 내용이 탄탄한 도서를 읽고 빨리 리뷰를 남기고 싶습니다.

#나는리뷰어다 #몽고DB완벽가이드

이 책은 몽고DB로 개발하기 위한 인덱싱(공간 정보 인덱스, 텍스트 인덱스 등), 트랜잭션, 집계 프레임워크, 복제 셋, 샤딩 뿐만 아니라

 

애플리케이션 관리를 위한 모니터링과 보안 관리와 백업, 복구 하는 방법까지 몽고DB의 모든 기능에 대한 가이드를 제공한다

 

 

한번 펼쳐보고 마는 책이 아니라 계속 해서 옆에 두고 참고용으로 보기에 아주 좋은 책이며

 

각 기능들에 대해 이해하기 쉬운 예제들이 수록되어 있어 책을 보고 실습을 해보면 더욱 빨리 이해할 수 있다

 

 

몽고DB를 사용할 예정이거나 사용하고 있는 사람에게 적극 추천할만한 책이다

 

물론 좋은 책이라면 추천하지 않아도 출간되자마자 알아서 구매를 하겠지만 말이다

 

MongoDB_The DefinitiveGuide_축소.jpg

 

 

 

   몽고DB에 대해서 자세하고 알고 싶은 사람들에게 추천하는 책입니다. 익히 알고 있는 오렐리에서 나온 책을 옮긴 것으로 600페이지에 걸쳐서 설명을 해줍니다.

   몽고DB의 기초가 되는 document부터 시작해서 query, indexing 등을 자세하게 소개하고, replica set과 sharding의 구조 및 활용법을 알려줍니다. 마지막 부분에 몽고DB 서버를 구성해서 운영하는 방법을 알려주고 있지만, 몽고DB를 잘 모르는데 당장 운영을 해야하는 상황이라면 앞에서 소개되는 기초 부분에 대해서는 개념정도만 알고 넘어간다고 해도 replica set과 sharding에 대해서는 어느정도 자세하게 알아야 할 것입니다. 운영을 할 때 장애상황으로 인해서 관련 내용을 아는 것이 큰 도움이 될 것입니다.

   몽고DB는 예전부터 익숙하게 사용하던 오라클과는 다른 NoSQL 데이터베이스입니다. 관계형이 아니라 document를 중심으로 구성되어 있는 데이터베이스이기 때문에 처음 시작할 때는 많이 당황할 수도 있습니다. 그렇지만 좀 더 자유롭고 고성능으로 구성될 수 있다는 장점이 있어서 흥미롭게 다가갈 수 있을 것입니다. 이 책은 그러한 몽고DB에 대해서 기초부터 활용까지 예제 등을 통해서 익숙해지도록 도와줄 수 있을 것입니다.

 

 

 

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

본 책은 몽고 DB에 대해 설치부터 활용까지 전반적인 내용에 대해

 

초보부터 중급수준까지 전반적으로 다루고 있다.

 

몽고 DB는 기존의 RDB 와는 달리 대표적인 NoSQL 방식으로 데이터를 관리한다.

 

몽고 DB는 데이터의 관계를 정의하지 않아 읽고 쓰는 속도가 빠른 장점도 있지만

 

조인, 트랜잭션을 지원하지 않는 큰 단점을 가지고 있다.

 

본 책은 이미 RDB의 활용이 가능하다는 전제하에 NoSQL를 활용해 더 나은 결과물을 

 

얻기 위한 분들을 위해 유용한 정보를 제공해 주리라 보인다.

 

이 책에서 다른 데이타 베이스 관리에서 생소한 단어가 등장하는데 그것은  

 

'샤딩' (여러 장비에 걸쳐 데이터를 분할 하는 과정 통상 '파티셔닝'으로 사용된다.)이라는 것으로

 

제4부 14~17장 까지에서 이를 설명하고 있다.  

 

아직 생소한 면도 있지만 모든일엔 명암이 있듯 이 책을 통해 몽고 DB의 장점을 잘 활용하면

 

업무 효율, 비용절감등을 통해 타 조직에 대해 경쟁 우위를 확보할 수 있으리라 판단된다.

<이 리뷰는 한빛미디어 도서협찬을 받아 작성하였습니다>

제가 알고 있기로는 이게 3번째 판인데 처음부터 꾸준하게 번역하면서 점점 양질이 되어 가는 것 같습니다. 

 

처음 공부하시는 분들에게도 많은 도움이 될 것 같습니다. 추천 드립니다. 

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
몽고DB 완벽 가이드(3판)
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
몽고DB 완벽 가이드(3판)
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
몽고DB 완벽 가이드(3판)
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0