Top

MongoDB NoSQL로 구축하는 PHP 웹 애플리케이션

  • 원서명PHP and MongoDB Web Development Beginner's Guide (ISBN 9781849513623)
  • 지은이루베이트 이슬람
  • 옮긴이박재호
  • ISBN : 9788960773752
  • 30,000원
  • 2012년 12월 24일 펴냄
  • 페이퍼백 | 320쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 클라우드 컴퓨팅

책 소개

동적인 웹 2.0 애플리케이션을 제작하는 과정에서 PHP와 몽고DB(MongoDB) NoSQL을 결합해 설명하는 책으로 데이터베이스 백엔드로 몽고DB를 사용해 동적인 웹 애플리케이션을 PHP로 개발하는 방법, 몽고DB에 접근하기 위한 각종 PHP API를 비롯한 몽고DB 실전 활용법, 사용자 세션 관리, 실시간 사이트 분석 내용 저장, 위치 인식 웹 애플리케이션 개발 방법을 알려주고 단계별 설명과 실용적인 예제를 통해 현장에 바로 적용 가능한 지식을 쌓을 수 있다.


[ 소개 ]

PHP와 몽고DB의 위력을 결합해 동적 웹 2.0 애플리케이션 개발하기

PHP와 몽고DB 웹 개발 초보자용 지침서는 PHP와 몽고DB를 사용해 웹 애플리케이션 개발을 시작하기 위한 내용을 담은 실전서로 빠른 전개와 직접 실행해보는 사례 연구를 특징으로 삼는다. 이 책은 '코드를 먼저 소개하고 나중에 설명하는' 접근법을 따르고 있으며, 몽고DB의 독특한 기능을 소개하기 위해 PHP로 만든 실질적인 사례를 활용한다.

이 책은 몽고DB 이면에 숨겨진 개념을 소개하며 시작한다. 각 장은 데이터베이스의 특정 기능들을 설명하기 위한 실질적인 사례를 포함한다.


[ 이 책에서 다루는 내용 ]

■ 몽고DB를 내려받아 컴퓨터에서 동작시키기(윈도우/맥/리눅스)
■ 자료 저장 해법으로서 몽고DB와 더불어 PHP로 웹 사이트 구축
■ 몽고DB로 HTTP 세션 다루기
■ 실시간으로 웹 사이트 분석 자료 저장
■ 맵리듀스로 대규모 자료 집합 처리
■ 기존 관계형 데이터베이스를 보충하기 위해 몽고DB 활용(몽고DB로 자료 저장소와 캐시 층을 구축하고, 값비싼 SQL 질의 결과 저장)
■ 위치 인식 웹 애플리케이션 구현
■ 더 나은 성능과 보안을 위한 몽고DB 최적화


[ 이 책의 대상 독자 ]

이 책은 독자들이 PHP, HTML, CSS를 사용한 웹 애플리케이션 개발에 대한 배경 지식이 있다고 가정한다. 몇몇 장을 읽으려면 자바스크립트에 대한 지식이 있어야 하며 AJAX에 친숙해야 한다. MySQL 같은 관계형 데이터베이스 시스템 활용에 대한 실용적인 지식이 있다면 몇 가지 개념을 훨씬 빨리 익힐 수 있지만 필수는 아니다. 몽고DB에 대한 선행 지식은 필요하지 않다.


[ 이 책의 구성 ]

‘1장 몽고DB 시작하기’는 몽고DB의 기반 개념을 소개하고, 컴퓨터에서 몽고DB 서버를 설치하고 돌린 다음 PHP와 몽고DB가 서로 대화하도록 만드는 방법을 단계적으로 소개한다.

‘2장 몽고DB를 사용한 첫 웹 애플리케이션 제작'은 PHP와 몽고DB를 사용해 간단한 블로깅 웹 애플리케이션 제작 기법을 보여준다. 2장에 나오는 PHP 예제는 몽고DB에서 CRUD(Create/Read/Update/Delete) 기법을 보여줄 것이다.

‘3장 세션 관리자 제작’은 HTTP 세션을 다루기 위해 PHP와 몽고DB를 사용하는 방법을 보여준다. 단독형 세션 관리자 모듈을 제작하고, 이 모듈을 사용해 사용자 인증/권한 부여 기법을 배울 것이다.

‘4장 집계 연산 질의’는 강력한 함수형 프로그래밍 방법론인 맵리듀스(MapReduce)를 소개하고 몽고DB에서 집계 연산 질의를 수행하기 위해 맵리듀스를 사용하는 방법을 보여준다.

‘5장 몽고DB를 사용한 웹 분석’은 실시간으로 몽고DB에 웹사이트 트래픽 데이터를 저장하고 중요한 분석 결과를 추출하기 위해 맵리듀스를 사용하는 방법을 보여준다.

‘6장 관계형 데이터베이스와 함께하는 몽고DB 활용’은 관계형 데이터베이스와 함께 몽고DB를 사용할 수 있는 활용 사례를 탐구한다. 몽고DB에 데이터를 보관하는 방법, 값비싼 질의 결과를 캐시하기 위해 몽고DB를 활용하는 방법, 도메인에서 다양한 객체에 대한 비구조적인 메타 데이터를 저장하는 방법을 보여준다.

‘7장 GridFS로 대용량 파일 처리’는 데이터베이스에서 대용량 파일을 저장하도록 몽고DB가 제공하는 특화된 명세인 GridFS를 소개한다.

‘8장 몽고DB와 PHP로 위치 인식 웹 애플리케이션 제작’은 PHP, HTML5, 자바스크립트, 몽고DB의 지리공간 색인 기능을 활용해 현재 위치에서 가까운 식당을 찾도록 도와주는 웹 애플리케이션을 구현한다.

‘9장 보안과 성능 향상’은 색인을 사용해 질의 성능을 끌어올리고, 질의를 분석하고 미세 조정하기 위한 내장 도구를 사용하고, 데이터베이스 보안을 강화하고, 데이터 내구성을 보증하는 방법을 소개한다.

‘10장 RockMongo와 phpMoAdmin를 사용한 손쉬운 몽고DB 관리’는 몽고DB 서버를 관리하기 위한 PHP 기반 GUI 도구인 RockMongo와 phpMoAdmin 활용법을 소개한다.


[ 아마존 서평 ]

몽고DB NoSQL과 PHP를 위한 훌륭한 웹 2.0 개발 서적!
몽고DB에 관심이 있으며 몽고DB가 지원하는 데이터베이스 아키텍처 유형을 배우고 싶어하는 개발자에게 아주 도움이 되는 책이다. 이 책은 누구나 따라할 수 있는 단계별 예제를 보여주는 웹 중심 시각으로 만들어졌다.
(내 경우) 이 책은 서가에 특별히 잘 보이는 위치에 꽃아 놓을 가치가 있다는 생각이다. 이 책은 웹 2.0 개발에서 몽고DB와 PHP의 위력을 명확하게 보여주며, 웹 개발자에게 훌륭한 지침서가 될 것이다.
- Joe(뉴욕 브루클린) ★★★★★

훌륭한 책
이 책을 읽고 따라 하면서 무척 즐거웠다. 이 책은 논리적으로 구성되어 있고, 책에서 소개하는 힌트와 지침은 상당히 많은 도움을 준다. 책 내용은 웹 개발에 배경 지식이 있으며 새로운 기술을 접하려는 개발자를 대상 독자로 적절히 잘 맞췄다는 생각이다. (내 경우) 이 책의 가장 좋은 부분은 유용한 예제와 연습 문제다. 특히 몽고DB를 사용해 클러스터 환경에서 웹 애플리케이션을 위한 세션 관리자 구축, 지리 공간 색인, 비동기식 쓰기로 웹 분석을 하는 내용이 마음에 들었다. 이 책의 연습 문제는 몽고DB의 장점을 아주 잘 살리고 있다. 또한 맵/리듀스 개념을 멋지게 소개하므로, 여기 익숙하지 않은 사람들에게 좋은 사례를 제공한다.
물론 만능은 아니지만 몽고DB에 여러 가지 장점이 있다는 사실을 보여주기 위해 저자는 훌륭한 작업을 해냈다. 저자는 관계형 데이터베이스 시스템을 사용해야 할 때와 그렇지 않을 때를 구분하며 몽고DB를 가장 효율적으로 사용하기 위한 예를 들고 있다. 이 책은 몽고DB의 고급 활용법과 여러 가지 측면을 더 깊게 파고들고 싶은 독자를 위해 힌트도 제공한다.
- cedub ★★★★★

저자/역자 소개

[ 저자 서문 ]

몽고DB는 현대적인 웹 2.0 애플리케이션의 일반적인 요구 사항을 충족하도록 설계한 오픈 소스이자 비관계형 데이터베이스 시스템이다. 현재 몽고DB는 전 세계에서 가장 인기 있는 몇몇 웹사이트에서 도입해 사용 중이다. 이 책은 PHP를 사용해 웹 애플리케이션을 개발해본 배경 지식이 있는 웹 개발자에게 몽고DB를 소개한다. 이 책은 몽고DB가 무엇이며, 관계형 데이터베이스 관리 시스템과 차이점이 무엇이며, 데이터를 저장하기 위해 관계형 데이터베이스 대신 개발자가 몽고DB를 사용해야 하는 시점과 이유를 설명한다.

HTTP 세션 처리, 사용자 인증 등과 같은 일반적인 문제를 해결하는 방법을 비롯해 데이터 백엔드로서 몽고DB를 사용하는 PHP 애플리케이션 개발 방법을 설명할 것이다.

또한 맵리듀스(MapReduce)를 사용한 웹 분석, GridFS를 사용한 대용량 파일 저장, 지리공간(Geospatial) 색인을 사용한 위치 인식 애플리케이션 제작과 같은 흥미로운 문제를 몽고DB로 푸는 방법도 배우게 될 것이다.

마지막으로 몽고DB를 최적화해 성능을 끌어올리고, 보안을 강화하고, 데이터 내구성을 보증하기 위한 방법을 배울 것이다. 이 책에서는 데이터베이스 관리를 좀더 편하게 만드는 편리한 GUI 도구의 사용법도 보여줄 것이다.


[ 저자 소개 ]

루베이트 이슬람(Rubayeet Islam)
오픈 소스 기술 스택(LAMP, 파이썬/장고, 루비 온 레일스)을 이용한 대규모 웹 애플리케이션 개발에 4년 이상 몸담은 소프트웨어 개발자다. 이슬람은 현재 해석과 메타데이터 벡엔드로 몽고DB를 사용하는 클라우드 기반 분산 소프트웨어를 개발하고 있다. 이슬람은 또한 전반적인 몽고DB와 NoSQL 데이터베이스의 활용을 촉진하기 위한 세미나에서 연사로 활약하고 있다. 이슬람은 다카 대학교의 전산과에서 학사 학위를 받았다.


[ 옮긴이의 말 ]

최근 클라우드 시대가 도래하면서 업계에 NoSQL 열풍이 불고 있다. 일부에서는 좋았던 관계형 데이터베이스의 시절은 저물고 NoSQL 시절이 도래하고 있다는 다소 과격한 주장까지 나오고 있으니, 개발자라면 누구나 한 번쯤 NoSQL에 대해 관심을 보여도 전혀 이상하지 않다. 하지만 컴퓨터 분야의 신기술이 나올 때마다 늘 반복되듯 중요한 것은 용어가 아니라 실체다. 하지만 실체는 직접 만져보고 써보기 전에는 관념에 불과하므로 어떻게든 시간을 투자해 신기술과 친해져야 할 필요가 있다. 그렇다면 어떻게 새로운 기술을 실전에 적용해볼까? 데이터베이스에 “Hello, World!”를 넣고 검색하는 테스트 프로그램만 작성해서는 감조차 오지 않을 것이고 그렇다고 실제 프로젝트에 적용하기에는 짊어져야 할 위험이 너무 크다. 방법은? 다행스럽게도 몽고DB 분야에서는 이 책이 신기술 탐험에 나선 여러분들을 도와줄 것이다.

이 책은 현재 나와 있는 여러 NoSQL 계열 데이터베이스 중에서 문서 중심(document-centric) 데이터베이스인 몽고DB를 설명하는 책이다. 하지만 단순히 NoSQL 이론을 늘어놓은 다음 몽고DB 관리법과 사용법만 설명하는 선에서 끝내는 대신, 웹 개발자라면 누구나 손쉽게 사용할 수 있는 PHP 스크립트와 자바스크립트를 사용해 가상적인 웹 서비스를 실제 몽고DB로 구축하는 방법을 단계에 맞춰 차근차근 소개한다. 따라서 이런 전개 방식은 실질적인 구현을 거쳐 추상적인 개념을 이해하는 과정에 큰 도움을 주리라는 생각이다. 이렇게 컴퓨터에서 실제로 다양한 실험 과정을 거치고 나면 비로소 몽고DB의 실체에 한 걸음 다가간 자신을 발견할 수 있을 테다.

이 책에서는 몽고DB의 훌륭한 특성(특히 맵리듀스와 지리 공간 색인)을 실제 현장에서 어떻게 적용할지를 놓고 충분히 고민한 내용을 담고 있다. 간단한 블로그를 만들어 로그 분석기를 추가하는 방법으로 몽고DB의 맵리듀스 기능을 실시간으로 활용하는 예제나 방문객의 위치에 인접한 음식점을 찾아주는 위치 인식 애플리케이션을 만들어 W3C API와 지리 공간 색인 기능을 활용하는 예제는 (비록 상용에서 직접 사용하기는 어려울지라도) 몽고DB의 특성이 잘 녹아난 사례라 볼 수 있겠다. 몽고DB에 처음 입문하는 개발자를 대상 독자로 삼아 지나치게 복잡하지 않으면서도 그렇다고 부족함도 없이 딱 필요한 만큼 예제 중심으로 설명하는 방식을 따르기에 NoSQL에 대한 이론적인 사전 지식이 없더라도 웹과 PHP에 대한 기초 지식만 있으면 부담 없이 이 책이 여러분에게 다가올 것이다.

물론 몽고DB를 처음 접하는 독자를 위해 쉽게 작성하느라 중급 개발자들을 소외시키지도 않았다. 이 책에서는 클라우드에서 흔히 일어나는 다중 노드 배포 과정에서 분명히 직면할 세션 관리를 몽고DB를 사용해 처리하는 방안은 물론이고, 비동기식 특성을 사용해 여러 노드에서 동시에 접근 가능한 로그 시스템을 추축하는 방안도 소개한다. 또한 레거시 시스템을 버리지 못하는 상황에서 관계형 데이터베이스 시스템인 MySQL과 몽고DB를 함께 활용하는 방안을 소개하며, MySQL에서 몽고DB로 완전히 이주할 경우를 대비해 양쪽의 차이점과 주의 사항을 쉽게 설명하는 배려도 잊지 않고 있다. 마지막으로 몽고DB의 특성에 맞춰 보안과 성능 향상을 위해 기본으로 고려해야 하는 내용도 빠짐없이 다루고 있기에 상용 환경에서 고급 기능을 원하는 개발자라면 이를 출발선으로 삼아도 좋겠다.

백문이 불여일견이라고 이 책을 읽고 나서 LAMP(Linux-Apache-MongoDB-PHP) 스택에서 자신만의 개성 만점의 웹 애플리케이션을 직접 개발해보자. 여기서 한걸음 더 나가 몽고DB 위에 만들어진 뛰어난 오픈소스 소프트웨어를 분석해 몽고DB의 고급 기능을 적용하는 방법도 익혀보자. 그러고 나서 다시 한 번 직접 개발한 소프트웨어에 고가용성과 고성능을 달성하기 위한 특질을 추가해보면 몽고DB의 큰 그림이 머리 속에 그려질 것이다. 이제 몽고DB행 티켓을 손에 넣었으니, 애독자 여러분들 앞에 펼쳐질 즐거운 여행을 기원하겠다.


[ 옮긴이 소개 ]

박재호
포항공과대학교 컴퓨터공학과 학부와 컴퓨터공학과 대학원을 졸업했다. 현재 고성능 고가용성 전문 회사인 이노디에스(http://www.innods.com/)에서 개발에 전념하고 있으며, 블로그 ‘컴퓨터 vs책(http://jhrogue.blogspot.com)’을 운영 중이다. 옮긴 책으로 에이콘출판사에서 펴낸 『조엘 온 소프트웨어』, 『초난감 기업의 조건』, 『리눅스 시스템 관리 완벽 가이드』, 『코드로 읽는 리눅스 디바이스 드라이버』, 『악성코드와 멀웨어 포렌식』 등이 있다.

목차

목차
  • 1장 몽고DB 시작하기
    • NoSQL 운동
      • NoSQL 데이터베이스 유형
    • 몽고DB - 문서 기반 NoSQL 데이터베이스
      • 몽고DB가 인기 있는 이유
      • 몽고DB를 사용하는 곳은?
      • 몽고DB 개념 - 데이터베이스, 컬렉션, 다큐먼트
        • 다큐먼트 해부
        • BSON - 몽고DB용 자료 교환 형식
        • 관계형 데이터베이스와 유사성
    • 몽고DB 내려받고, 설치하고, 구동하기
      • 시스템 요구 사항
    • 실습 예제 | 윈도우에서 몽고DB를 내려받아 구동하기
      • 64비트 버전 설치하기
    • 실습 예제 | 리눅스에서 몽고DB를 내려받아 구동하기
      • OS X에서 몽고DB 설치하기
      • 몽고DB 구성하기
        • 명령행 매개변수
        • 파일 기반 구성
      • 몽고DB 중지하기
        • 컨트롤 + C 누르기
        • 몽고 셸에서
        • 유닉스에서 INT나 TERM 시그널 전송
      • 데이터베이스, 컬렉션, 다큐먼트 생성하기
    • 실습 예제 | 데이터베이스, 컬렉션, 다큐먼트 생성하기
    • 몽고DB용 PHP 드라이버 설치하기
    • 실습 예제 | 윈도우에 몽고DB용 PHP 드라이버 설치하기
      • 유닉스에 PHP-몽고DB 드라이버 설치하기
      • PHP에서 몽고DB 서버에 연결하기
        • PHP-몽고 연결 수립하기
    • 실습 예제 | PHP에서 몽고DB 서버로 연결을 수립하기
      • PHP-몽고DB 연결을 구성하기
      • 연결 시도를 위한 타임아웃 지정하기
    • 요약
  • 2장 몽고DB를 사용한 첫 웹 애플리케이션 제작
    • 몽고DB로 만든 블로그
    • 몽고DB 서버 구동
    • 몽고DB에서 다큐먼트 삽입하기
    • 실습 예제 | 블로그 포스트 작성기 구현하기
      • 암시적으로 데이터베이스와 컬렉션 생성하기
      • ‘안전한’ insert 수행하기
        • 안전한 ‘insert’의 장점
      • insert에서 타임아웃 지정하기
      • 사용자가 생성한 _id를 설정하기
      • MongoDate 객체
    • 컬렉션에서 다큐먼트 질의하기
    • 실습 예제 | 데이터베이스에서 아티클을 인출하기
      • Mongo 질의 언어
        • MongoCursor 객체
        • 조건 질의
    • 몽고DB에서 고급 질의 수행하기
    • 실습 예제 | 블로그 대시보드 구현하기
      • 필드 부분 집합 반환하기
      • 질의 결과를 정렬하기
      • count, skip, limit 활용하기
      • 날짜로 범위 질의 수행하기
    • 몽고DB에서 다큐먼트 갱신하기
    • 실습 예제 | 블로그 편집기 구현하기
      • update 메소드에 사용할 옵션 인수
      • ‘upsert’ 수행하기
      • update와 save의 차이점
      • 변경자 연산을 활용하기
        • $set으로 설정하기
        • $inc로 값 증가시키기
        • $unset으로 필드 삭제하기
          • $rename으로 필드 이름 변경하기
    • 몽고DB에서 다큐먼트 삭제하기
    • 실습 예제 | 블로그 포스트 삭제하기
      • remove 메소드에 사용할 옵션 인수
    • 다큐먼트 사이의 관계 관리하기
      • 내장된 다큐먼트
      • 참조된 다큐먼트
    • 실습 예제 | 블로그 포스트에 댓글 올리기
      • 내장된 다큐먼트와 참조된 다큐먼트 ? 무엇을 사용할까?
        • 내장된 객체를 질의하기
    • 요약
  • 3장 세션 관리자 제작
    • HTTP 세션 이해하기
    • PHP 내장 세션 처리 기법 이해
    • 실습 예제 | PHP 내장 세션 처리기 테스트
      • 내장 PHP 세션 처리기의 제약 사항
    • 몽고DB로 세션 처리기 구현
      • sessionsetsave_handler()로 세션 처리 기법 확장
      • SessionManager 클래스
    • 실습 예제 | SessionManager클래스 구현
      • SessionManager 동작 방식
        • 생성자
        • open과 close 메소드
        • read 메소드
        • write 메소드
        • destroy 메소드
        • gc 메소드
    • SessionManager 실행하기
    • 실습 예제 | SessionManager 적용
    • 사용자 인증 모듈 구현
    • 실습 예제 | User 클래스 구현
    • 로그인, 로그아웃, 프로파일 페이지 구현
    • 실습 예제 | 로그인, 로그아웃, 프로파일 페이지 구현
    • 안전한 세션 기법 활용하기
      • 세션 쿠키에 만료 기간을 짧게 설정하기
      • 세션 타임아웃 활용하기
      • 세션 쿠키를 위한 적절한 도메인 설정
      • 브라우저 일관성 검사
    • 요약
  • 4장 집계 연산 질의
    • 예제 자료 생성하기
    • 실습 예제 | 예제 자료 생성하기
    • 맵리듀스 이해하기
      • 맵리듀스 시각화하기
    • 몽고DB에서 맵리듀스 수행하기
    • 실습 예제 | 작성자별 아티클 수 세기
      • Map 함수 정의
      • Reduce 함수 정의
      • Map과 Reduce 함수 적용
      • 결과 보기
      • 컬렉션의 부분 집합에 대한 맵리듀스 수행하기
      • 병행 처리
    • PHP 내부에서 몽고DB 맵리듀스 수행하기
    • 실습 예제 | 태그 클라우드 생성하기
    • group()을 사용해 집계 연산 수행하기
    • 실습 예제 | 작성자별 평균 평가 점수 계산하기
      • 사용자 정의 키로 그룹 짓기
      • 맵리듀스와 group() 비교
    • 필드에 대한 유일한 값 열거하기
    • 실습 예제 | 아티클의 유일한 카테고리를 열거하기
      • mongo 셸에서 distinct() 활용하기
      • count()로 다큐먼트 세기
    • 요약
  • 5장 몽고DB를 사용한 웹 분석
    • 몽고DB가 웹 분석 백엔드로 좋은 선택인 이유
    • 몽고DB로 로깅하기
    • 실습 예제 | 몽고DB로 페이지 방문 로깅하기
      • 상한이 정해진(capped) 컬렉션
        • 자연스런 순서로 정렬하기
        • 상한이 정해진 컬렉션에서 다큐먼트를 갱신하고 삭제하기
        • 일반적인 컬렉션의 크기 지정하기
        • 일반적인 컬렉션을 상한이 정해진 컬렉션으로 변환하기
    • 맵리듀스로 분석 자료 추출하기
    • 실습 예제 | 블로그 포스트마다 전체 방문 회수와 평균 응답 시간 찾기
      • map, reduce, finalize 함수
      • 결과 출력하기
        • 실시간으로 맵리듀스를 돌리거나 배경 작업으로 맵리듀스 돌리기
    • 몽고DB를 사용한 실시간 분석
    • 실습 예제 | 실시간 페이지 방문 카운트 구현하기
    • 요약
  • 6장 관계형 데이터베이스와 함께하는 몽고DB 활용
    • 몽고DB와 RDBMS를 함께 활용하는 이면에 존재하는 동기
      • 잠재적인 사례
      • 관계형 모델 정의하기
    • 실습 예제 | MySQL에서 데이터베이스 생성하기
    • 몽고DB에 집계 연산 캐시하기
    • 실습 예제 | 몽고DB에 일일 제품 판매 이력 저장하기
    • 몽고DB에서 질의를 캐시할 때 얻는 장점
      • 값비싼 JOIN 연산 결과 저장하기
    • 자료 저장 목적으로 몽고DB 활용하기
    • 실습 예제 | 몽고DB에 예전 판매 기록 저장하기
      • 저장과 이주 과정에서 고려할 난제
        • 외래 키 제약 다루기
        • 자료 타입 보존하기
    • 몽고DB에 메타 자료 저장하기
    • 실습 예제 | 몽고DB를 사용해 고객 메타 자료 저장하기
    • 몽고DB와 RDBMS를 함께 쓰는 과정에서 일어나는 문제점
    • 요약
  • 7장 GridFS로 대용량 파일 처리
    • GridFS란 무엇인가?
      • GridFS의 이론적 설명
      • GridFS 명세
      • 파일 시스템과 비교한 장점
    • GridFS에 파일 저장하기
    • 실습 예제 | GridFS로 이미지 올리기
      • 이면에 숨겨진 내용 살펴보기
    • GridFS에서 파일 서비스하기
    • 실습 예제 | GridFS에서 이미지 서비스하기
      • 파일의 메타자료 갱신하기
      • 파일 삭제하기
    • chunks에서 파일 읽기
    • 실습 예제 | chunks에서 이미지 읽기
    • GridFS를 사용해서는 안 될 때
    • 요약
  • 8장 몽고DB와 PHP로 위치 인식 웹 애플리케이션 제작
    • 지리 공간 입문
      • 위치를 결정하는 방법
    • 웹 페이지 방문객의 위치 파악하기
      • W3C 지리 공간 API
        • 지리 공간을 지원하는 브라우저
    • 실습 예제 | W3C API로 위치 파악하기
      • Geolocation 객체
        • getCurrentPosition() 메소드
      • 구글 맵스 API를 활용해 지도 그리기
    • 지리 공간 색인
    • 실습 예제 | 지리 공간 색인 생성하기
      • 지리 공간 색인 - 알아야하는 핵심 사항
    • 위치 질의 수행하기
    • 실습 예제 | 현재 위치에 가까운 음식점 찾기
      • geoNear() 명령
      • 경계가 정해진 질의
    • 지리 공간 헤이스택 색인
    • 실습 예제 | 버거를 판매하는 근처 음식점 찾기
    • 요약
  • 9장 보안과 성능 향상
    • 색인을 사용해 질의 성능 높이기
    • 실습 예제 | 몽고DB 컬렉션에 색인 생성하기
      • _id 색인
      • 유일한 색인
      • 복합 키 색인
      • 내장된 다큐먼트 필드에 대한 색인
      • 배열 필드에 대한 색인
      • 색인 삭제하기
      • 색인을 사용할 수 없는 경우
      • 색인 지침
        • 키를 현명하게 선택하자
        • 색인 크기에 주목하자
        • 구분 가능성이 낮은 단일 키 색인을 피하자
        • 색인 비용에 주의하자
        • 동작 중인 데이터베이스에서는 배경으로 색인 작업을 수행하자
    • 질의 최적화하기
      • explain()을 사용한 질의 설명
        • 최적화 규칙
      • hint() 활용하기
      • 질의 프로파일링
        • 출력 결과 이해하기
        • 최적화 규칙
    • 몽고DB 안전하게 만들기
    • 실습 예제 | 몽고DB에 사용자 인증 추가하기
      • 관리자 생성하기
      • 일반 사용자 생성하기
      • 사용자 계정 확인, 변경, 삭제
      • PHP 드라이버를 사용한 사용자 인증
      • 사용자 입력 걸러내기
      • 안전한 환경에서 몽고DB 서버 운영하기
    • 자료 내구성 보증하기
      • 저널링
        • 성능
        • fsync 사용하기
      • 복제
    • 요약
  • 10장 RockMongo와 phpMoAdmin을 사용한 손쉬운 몽고DB 관리
    • RockMongo로 몽고DB 관리하기
    • 실습 예제 | 컴퓨터에 RockMongo 설치하기
      • RockMongo로 자료 탐색하기
        • 질의
        • 다큐먼트 갱신, 삭제, 생성
      • 자료 가져오기와 내보내기
      • 상태 보기
      • 기타
    • 몽고DB 관리를 위해 phpMoAdmin 활용하기
    • 실습 예제 | 컴퓨터에 phpMoAdmin 설치하기
      • 데이터베이스와 컬렉션 보기
      • 다큐먼트 질의
      • 객체 저장과 삭제
      • 자료 가져오기와 내보내기
      • 상태 보기
      • 기타 기능
    • RockMongo와 phpMoAdmin 비교
      • 결론

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[ p55 예제 code ]
$article = array{ ... };$article = array( ... );

[ p73 예제 code ]
<th width =""27%"> → <th width ="27%">

[ p73 예제 code ]
$article[savedat']
→ $article['saved
at']

[ p95 comment.php 소스 코드 ]
$article = $collection->findOne(array('_id' => MongoId($id))); 삭제

[ p95 comment.php 소스 코드 ]
$comment$comments

[ p104 6행 ]
</h tml></html>