최근 빅데이터와 함께 널리 회자되는 NoSQL을 구체적이고 균형 잡힌 시각으로 다룬 책이다. 먼저 NoSQL의 정의와 개념부터 시작해 각 NoSQL 솔루션의 장단점을 비교/분석하고, 성능 튜닝 및 아키텍처 가이드라인과 같은 고급 주제까지 다룬다. 이 과정에서 NoSQL과 관련된 핵심 개념에 초점을 맞추고 이를 다양한 NoSQL 제품을 통해 설명한다. 몽고디비, 카우치디비, HBase, 하이퍼테이블, 카산드라, 레디스, 버클리 DB 등과 관련한 예시 및 예제를 소개하며, 알기 쉬운 그림을 통해 NoSQL의 아키텍처를 들여다봄으로써 NoSQL을 고수준에서 쉽게 이해할 수 있다. 이 책의 내용은 NoSQL 도입을 고민하는 아키텍트나 NoSQL에 입문하려는 개발자가 어디서부터 시작해야 할지 이해하는 데 크게 도움될 것이다.

NoSQL 데이터베이스를 활용하는 실전 가이드!

NoSQL 데이터베이스는 대용량 데이터를 저장하고 조작할 수 있는 효율적이고, 강력한 툴이다. 대부분의 NoSQL 데이터베이스는 데이터가 늘어남에 따라 잘 확장되며, 반구조화된 데이터나 희소성 데이터셋을 충분히 수용할 수 있을 만큼 유연하다. 방대한 실전 가이드인 이 책에서는 NoSQL을 사용하는 데 필요한 기본 개념과 실질적인 해결책을 제시한다. NoSQL 분야의 전문가인 샤샨크 티와리는 먼저 NoSQL의 특징과 일반적인 사용 사례를 예로 들어 NoSQL을 알기 쉽게 소개한다. 그런 다음 애플리케이션 스택에서 NoSQL을 어떻게 접목시킬지 살펴본다. 이 책에서 얻을 수 있는 저자의 혜안은 특정 데이터 저장소 요구 조건에 가장 적합한 NoSQL 솔루션을 찾는 데 크게 도움될 것이다.

★ 이 책에서 다루는 내용 ★

  • 칼럼 패밀리 지향 저장소, 키/값 데이터 저장소, 도큐먼트 데이터베이스 등 NoSQL 데이터베이스와 관련한 주요 개념을 살펴본다.
  • 다양한 NoSQL 제품과 하둡 관련 툴을 설치 및 설정한다.
  • 몽고디비, HBase, 카산드라, 레디스, 카우치디비, 구글 앱 엔진 데이터 저장소 등을 사용한 예제를 통해 NoSQL 데이터베이스에서 데이터를 저장, 접근, 조회하는 법을 설명한다.
  • 아키텍처와 내부 구조를 들여다본다.
  • 최적화된 사용, 성능 튜닝, 확장 가능한 설정에 대한 가이드라인을 제공한다.
  • 하이브, 피그, RRDtool, 나기오스 등 NoSQL 분산 플랫폼, 확장 가능 처리와 관련한 여러 툴과 유틸리티를 소개한다.

샤샨크 티와리(Shashank Tiwari)

샤샨크 티와리는 고성능 애플리케이션, 데이터 분석, 웹 애플리케이션, 모바일 플랫폼 분야에 관심 있는 숙련된 소프트웨어 개발자이자 IT 기업가다. 샤샨크는 데이터 시각화, 통계, 기계 학습, 커피, 후식, 자전거 타기를 좋아한다. 여러 기술 관련 기사와 서적의 저자이며, 전 세계 여러 컨퍼런스에서 발표한 바 있다.

샤샨크의 회사인 Treasury of Ideas에 대한 자세한 정보는 www.treasuryofideas.com에서 볼 수 있다. www.shanky.org에 블로그를 운영하고, 트위터에서는 @tshanky라는 이름으로 활동하고 있다. 현재 아내, 두 아들과 함께 캘리포니아 팔로 알토에 살고 있다.

유윤선

인디 개발자이자 프리랜서 번역가로 활동 중이다. 이따금 http://joshy21.com/weblog에 번역과 상관없는 글을 올리고 있다. 역서로는 《프로 스프링 3 (위키북스)》, 《라이프해커》, 《시작하세요! 아이폰 5 프로그래밍》, 《안드로이드 레시피》, 《시작하세요! Unity 3D 게임 프로그래밍》, 《시작하세요! 안드로이드 게임 프로그래밍》, 《시작하세요! 아이폰 4 프로그래밍》, 《플래시 빌더 4 & 플렉스 4 바이블》, 《쉽고 빠르게 익히는 CSS3》, 《스프링 시큐리티 3》, 《시작하세요! 아이패드 프로그래밍》, 《오브젝티브 C 개발 레시피 (길벗)》, 《프로 제이쿼리 완벽 마스터》, 《5일 만에 아이폰 앱 개발하기》, 《WebGL 개발 입문》, 《플래시 게임 마스터(에이콘출판사)》, 《Adobe AIR 인 액션(위키북스, 공역)》, 《스프링 3 레시피(위키북스, 공역)》, 《액션스크립트 3.0 완벽가이드(인사이트, 공역)》 등이 있다.

  • 1부 시작하기
    • ▣ 01장: NoSQL장: 정의와 필요성
      • 정의 및 소개
        • 배경 및 약간의 역사
        • 빅 데이터
        • 확장성
        • 맵 리듀스의 정의 및 소개
      • 순서 정렬된 칼럼 지향 저장소
      • 키/값 저장소
      • 도큐먼트 데이터베이스
      • 그래프 데이터베이스
      • 정리
      •  
    • ▣ 02장: 헬로 NoSQL장: 첫 발 담그기
      • 첫 인상: 두 개의 간단한 예제 살펴보기
        • 간단한 영속성 사용자 설정 데이터셋
        • 자동차 제조사 및 모델 데이터의 저장
      • 언어 바인딩 활용
        • 몽고디비 드라이버
        • 쓰리프트 처음 살펴보기
      • 정리
      •  
    • ▣ 03장: NoSQL과의 인터페이싱 및 상호작용
      • SQL이 없다면 무엇을 사용할까?
        • 데이터 저장 및 접근
        • 몽고디비에서의 데이터 저장 및 접근
        • 몽고디비 쿼리
        • 레디스를 활용한 데이터 저장 및 접근
        • 레디스 쿼리
        • HBase에서의 데이터 저장 및 접근
        • HBase 조회
        • 카산드라에서의 데이터 저장 및 접근
        • 아파치 카산드라 조회
      • NoSQL 데이터 저장소용 언어 바인딩
        • 쓰리프트 활용
        • 자바용 언어 바인딩
        • 파이썬용 언어 바인딩
        • 루비용 언어 바인딩
        • PHP용 언어 바인딩
      • 정리
      •  
  • 2부 NoSQL 기본 학습
    • ▣ 04장: 저장소 아키텍처의 이해
      • 칼럼 지향 데이터베이스의 활용
        • 관계형 데이터베이스에서의 테이블 및 칼럼 사용
        • RDBMS와 대조적인 칼럼 데이터베이스
        • 키/값 쌍의 중첩 맵으로서의 칼럼 데이터베이스
        • 웹 테이블
      • HBASE 분산 저장소 아키텍처
      • 도큐먼트 저장소의 내부
        • 메모리 매핑된 파일을 통한 데이터 저장
        • 몽고디비에서 컬렉션 및 인덱스 사용에 대한 가이드라인
        • 몽고디비의 안전성 및 지속성
        • 수평적 확장
      • MEMCACHED 및 레디스의 키/값 저장소의 의미
        • Memcached의 내부 들여다보기
        • 레디스 내부
      • 궁극적으로 일관적인 비관계형 데이터베이스
        • 일관적 해싱
        • 객체 버전 관리
        • 가십 기반 멤버십과 힌티드 핸드오프
      • 정리
      •  
    • ▣ 05장: CRUD 작업의 수행
      • 레코드의 생성
        • 도큐먼트 지향 데이터베이스에서의 레코드 생성
        • 칼럼 지향 데이터베이스의 생성 작업
        • 키/값 맵에서의 생성 작업
      • 데이터 접근
        • 몽고디비에서의 도큐먼트 접근
        • HBase에서의 데이터 접근
        • 레디스 쿼리
      • 데이터 업데이트 및 삭제
        • 몽고디비, HBase, 레디스에서의 데이터 업데이트 및 수정
        • 제한된 원자성과 트랜잭션 정합성
      • 정리
      •  
    • ▣ 06장: NoSQL 저장소 쿼리
      • SQL과 몽고디비 쿼리 기능의 유사성
        • 무비렌즈 데이터의 로드
        • 몽고디비의 맵리듀스
      • HBase 같은 칼럼 지향 데이터베이스에서의 데이터 접근
        • 역사적인 일간 시장 자료
      • 레디스 데이터 저장소의 쿼리
      • 정리
      •  
    • ▣ 07장: 데이터 저장소 수정 및 변화 관리
      • 도큐먼트 데이터베이스의 변경
        • 스키마 없는 유연성
        • 몽고디비에서의 데이터 내보내기/불러오기
      • 칼럼 지향 데이터베이스의 스키마 발전
      • HBASE의 데이터 불러오기/내보내기
      • 키/값 저장소에서의 데이터 진화
      • 정리
      •  
    • ▣ 08장: 인덱싱 및 데이터셋 정렬
      • 데이터베이스 인덱스와 관련한 내부 개념
      • 몽고디비의 인덱싱 및 정렬
      • 몽고디비에서의 인덱스 활용
        • 복합 키와 임베디드 키
        • 고유 인덱스 및 희소 인덱스의 생성
        • 키 기반 검색과 멀티키
      • 카우치디비의 인덱싱 및 정렬
        • 카우치디비의 B 트리 인덱스
      • 아파치 카산드라의 인덱싱
      • 정리
      •  
    • ▣ 09장: 트랜잭션 관리 및 데이터 정합성
      • RDBMS와 ACID
        • 격리 수준과 전략
      • 분산 ACID 시스템
        • 일관성
        • 가용성
        • 분할 지속성
      • CAP 이론의 확인
        • 가용성의 희생
        • 분할 지속성의 희생
        • 일관성의 희생
      • 몇몇 NoSQL 제품의 일관성 구현체
        • 몽고디비의 분산 일관성
        • 카우치디비의 궁극적인 일관성
        • 아파치 카산드라의 궁극적인 일관성
        • 멤베이스의 일관성
      • 정리
      •  
  • 3부 NoSQL 실력 쌓기
    • ▣ 10장: 클라우드에서의 NoSQL 활용
      • 구글 앱 엔진 데이터 저장소
        • GAE 파이썬 SDK장: 설치, 설정, 시작하기
        • GAE를 위한 파이썬의 데이터 모델링
        • 쿼리 및 인덱스
        • 지원하는 필터와 결과의 정렬
        • 자바 앱 엔진 SDK 살펴보기
      • 아마존 심플디비
        • 심플디비 시작하기
        • REST API의 활용
        • 자바를 활용한 심플디비 접근
        • 루비 및 파이썬을 통한 심플디비 상호작용
      • 정리
      •  
    • ▣ 11장: 맵리듀스를 활용한 확장 가능 병렬 처리
      • 맵리듀스의 이해
        • 각 종목별 최고가 찾기
        • 카우치디비로의 NYSE 마켓 데이터 업로드
      • HBASE의 맵리듀스 활용
      • 맵리듀스의 가능성과 아파치 머하웃
      • 정리
      •  
    • ▣ 12장: 하이브를 활용한 빅 데이터 분석
      • 하이브 기본
      • 다시 영화 평점으로
      • 익숙한 SQL 작업
      • 하이브 QL에서의 조인
        • 설명 플랜
        • 파티션 테이블
      • 정리
      •  
    • ▣ 13장: 데이터베이스 내부 살펴보기
      • 몽고디비의 내부
        • 몽고디비 와이어 프로토콜
        • 도큐먼트의 삽입
        • 컬렉션 조회
        • 몽고디비 데이터베이스 파일
      • 멤베이스 아키텍처
      • 하이퍼테이블의 내부
        • 정규식 지원
        • 블룸 필터
      • 아파치 카산드라
        • p2p 모델
        • 가십 및 안티엔트로피 기반
        • 빠른 쓰기
        • 힌티드 핸드오프
      • 버클리 디비
        • 저장소 설정
      • 정리
      •  
  • 4부 NoSQL 마스터
    • ▣ 14장: NoSQL 제품의 선택
      • NOSQL 제품 비교
        • 확장성
        • 트랜잭션 정합성 및 일관성
        • 데이터 모델링
        • 쿼리 지원
        • 접근 및 인터페이스 가용성
      • 성능 벤치마크
        • 50/50 읽기 및 업데이트
        • 95/5 읽기 및 업데이트
        • 스캔
        • 확장성 테스트
        • 하이퍼테이블 테스트
      • 맥락 비교
      • 정리
      •  
    • ▣ 15장: 공존
      • NOSQL 솔루션으로서의 MySQL 활용
      • 일반적으로 불변하는 데이터 저장소
        • 페이스북의 다언어 영속성
        • 데이터 웨어하우싱 및 비즈니스 인텔리전스
      • 웹 프레임워크와 NoSQL
        • 레일즈를 통한 NoSQL 활용
        • 장고를 통한 NoSQL 활용
        • 스프링 데이터의 활용
      • RDBMS에서 NOSQL로의 이전
      • 정리
      •  
    • ▣ 16장: 성능 튜닝
      • 병렬 알고리즘의 목적
        • 지연 시간 감소의 의미
        • 처리량을 늘리는 방법
        • 선형적 확장 가능성
      • 확장성에 영향을 미치는 방정식
        • 암달의 법칙
        • 리틀의 법칙
        • 메시지 비용 모델
      • 파티셔닝
      • 이기종 환경에서의 스케줄링
      • 추가적인 맵리듀스 튜닝
        • 통신 부담
        • 압축
        • 파일 블록 크기
        • 병렬 복사
      • HBASE 코프로세서
      • 블룸 필터 활용
      • 정리
      •  
    • ▣ 17장: 툴과 유틸리티
      • RRDTOOL
      • 나기오스
      • 스크라이브
      • 플룸
      • 추크와
      • 피그
        • 피그 인터페이스 활용
        • 피그 라틴의 기본
      • 노드툴
      • OPENTSDB
      • 솔란드라
      • 허밍버드와 C5T
      • 지오카우치
      • 알케미 데이터베이스
      • 웹디스
      • 정리
      •  
  • ▣ 부록: 툴과 유틸리티
    • 하둡의 설치 및 설정
      • 하둡 설치
      • 단일 노드 하둡 설정
      • 의사 분산 모드 설정
    • HBASE 설치 및 설정
    • 하이브의 설치 및 설정
      • 하이브 설정
      • 하둡 설정 오버레이
    • 하이퍼테이블의 설치 및 설정
      • FHS 호환을 위한 하이퍼테이블 설정
      • 하둡과 하이퍼테이블 설정
    • 몽고디비의 설치 및 설정
      • 몽고디비 설정
    • 카우치디비의 설치 및 설정
      • 우분투 10.04에서 소스로부터 카우치디비 설치하기
    • 레디스의 설치 및 설정
    • 카산드라의 설치 및 설정
      • 카산드라 설정
      • 카산드라용 log4j 설정
      • 소스를 통한 카산드라 설치
    • 멤베이스 서버 및 MEMCACHED의 설치 및 설정
    • 나기오스 설치 및 설정
      • 나기오스 내려받기 및 빌드
      • 나기오스 설정
      • 나기오스 플러그인의 컴파일 및 설치
    • RRDTOOL의 설치 및 설정
    • MySQL용 핸들러 소켓 설치

예제코드 관련 GitHub 페이지