가입하고 포인트 받기
MongoDB NoSQL로 구축하는 PHP 웹 애플리케이션
루베이트 이슬람 지음
에이콘출판
 펴냄
30,000 원
27,000원 
앱에서 포인트받고 구매
324쪽 | 2012-12-24
분량 보통인책 | 난이도 보통인책
상세 정보
동적인 웹 2.0 애플리케이션을 제작하는 과정에서 PHP와 몽고DB(MongoDB) NoSQL을 결합해 설명하는 책으로 데이터베이스 백엔드로 몽고DB를 사용해 동적인 웹 애플리케이션을 PHP로 개발하는 방법, 몽고DB에 접근하기 위한 각종 PHP API를 비롯한 몽고DB 실전 활용법, 사용자 세션 관리, 실시간 사이트 분석 내용 저장, 위치 인식 웹 애플리케이션 개발 방법을 알려주고 단계별 설명과 실용적인 예제를 통해 현장에 바로 적용 가능한 지식을 쌓을 수 있다.
더보기
목차

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로 세션 처리기 구현
______session_set_save_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 비교
______결론
___요약

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