책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 데이터베이스 프로그래밍 > 데이터베이스 구축
· ISBN : 9788998139551
· 쪽수 : 256쪽
책 소개
목차
[1부] 빅데이터 시대의 방향
▣ 1장: 데이터를 성공적으로 다루는 네 가지 법칙
언제부터 데이터가 중요해졌는가?
데이터와 단일 서버
빅데이터 트레이드오프
- 무한대로 확장 가능한 루션을 구축하라
- 인터넷을 통해 데이터를 공유할 수 있는 시스템을 구축하라
- 인프라가 아닌 솔루션을 구축하라
- 데이터에서 가치를 찾는 것에 집중하라
빅데이터 파이프라인의 해부
궁극의 데이터베이스
정리
[2부] 대용량 데이터의 수집 및 공유
▣ 2장: 대용량의 미가공 데이터를 호스팅하고 공유하기
파일 더미에서 괴로워하다
- 다량의 파일을 공유할 때 직면하는 문제
스토리지: 인프라 서비스
- 네트워크는 느리다
적합한 데이터 포맷 선택하기
- XML: 데이터, 스스로 표현하다
- JSON: 프로그래머의 선택
문자 인코딩
- 파일 변환
데이터 이동: 데이터 직렬화 포맷
- 아파치 쓰리프트와 프로토콜 버퍼
- 아파치 아브로
정리
▣ 3장: 대중이 생성한 데이터를 수집하기 위한 NoSQL 기반의 웹 애플리케이션 구축하기
관계형 데이터베이스: 명령과 제어
- 관계형 데이터베이스 ACID 테스트
관계형 데이터베이스와 인터넷 비교
- CAP 이론과 BASE
비관계형 데이터베이스 모델
- 키-값 데이터베이스
- 문서 저장소
쓰기 속도 최적화: 레디스
여러 레디스 인스턴스에 걸쳐 샤딩하기
- 트윔프록시를 이용한 자동 파티셔닝
- 레디스의 대안
NewSQL: 코드의 귀환
정리
▣ 4장: 데이터 사일로를 다루는 전략
전문용어 투성이인 웨어하우스
- 현실에서의 문제
- 데이터 규약과 안전을 위한 계획하기
- 데이터 웨어하우스 입문하기
- 데이터 웨어하우스의 마법 주문: 추출하고 변환하고 읽는다(ETL )
하둡: 웨어하우스의 코끼리
데이터 사일로에 좋은 면도 있다
- 기술이 아닌 데이터 도전과제에 집중한다
- 직원들이 직접 질문할 수 있는 권한 주기
- 데이터 사일로를 연결하는 기술에 투자하기
융합: 데이터 사일로의 끝
룬의 비즈니스 인텔리전스 시스템은 실현될 것인가?
정리
[3부] 데이터에 관해 질문하기
▣ 5장: 하둡, 하이브, 샤크를 이용해 대용량 데이터 집합에 대해 질문하기
데이터 웨어하우스란 무엇인가?
아파치 하이브: 하둡을 위한 대화식 질의하기
- 하이브 활용 사례
- 하이브 사용하기
- 하이브로 추가 데이터 소스 사용하기
샤크: RAM 속도로 질의하기
클라우드에서의 데이터 웨어하우스
정리
▣ 6장: 구글 빅쿼리를 이용한 데이터 대시보드 구축하기
분석형 데이터베이스
드리멜: 구글의 혁신 전파하기
- 드리멜과 맵리듀스는 어떻게 다른가?
빅쿼리: 서비스로서의 데이터 분석
- 빅쿼리의 질의 언어
맞춤형 데이터 대시보드 구축하기
- 빅쿼리 API 접근 인증하기
- 질의를 실행하고 결과 받기
- 질의 결과 캐싱하기
- 시각화 추가하기
분석형 질의 엔진의 미래
정리
▣ 7장: 대용량 데이터 탐색을 위한 데이터 시각화 전략
주의를 요하는 이야기: 데이터를 이야기로 바꾸기
인간 규모 대 컴퓨터 규모
- 상호작용성
대화식 데이터 애플리케이션 구축하기
R과 ggplot2를 이용한 대화식 시각화
- matplotlib: 파이썬을 이용한 2D 차트
- D3.js: 웹을 위한 대화식 시각화
정리
[4부] 데이터 파이프라인 구축하기
▣ 8장: 하나로 합치기: 맵리듀스 데이터 파이프라인
데이터 파이프라인이란 무엇인가?
- 작업에 적합한 도구
하둡 스트리밍을 이용한 데이터 파이프라인
- 맵리듀스와 데이터 변환
- 가장 간단한 파이프라인: stdin에서 stdout으로
단일 맵리듀스 변환
- 미가공 NVSS 데이터에서 관련 정보 추출하기: 맵 단계
- 월별 출생 수 세기: 리듀서 단계
- 로컬에서 맵리듀스 파이프라인 테스트하기
- 하둡 클러스터에서 맵리듀스 잡 실행하기
복잡성 관리: 하둡용 파이썬 맵리듀스 프레임워크
- mrjob을 이용해 하둡 스트리밍 예제 재작성하기
- 여러 단계 파이프라인 구축하기
- 엘라스틱 맵리듀스에서 mrjob 스크립트 실행하기
- 파이썬 기반의 대안 맵리듀스 프레임워크
정리
▣ 9장: 피그와 캐스케이딩을 이용한 데이터 변환 워크플로우 구축하기
실전에서의 대규모 데이터 워크플로우
복잡하다: 다단계 맵리듀스 변환
- 아파치 피그: 복잡함을 제거하다
- 대화식 그룬트 셸을 이용해 피그 실행하기
- 데이터 워크플로우를 필터링하고 최적화하기
- 배치 모드로 피그 스크립트 실행하기
캐스케이딩: 견고한 데이터 워크플로우 애플리케이션 만들기
- 소스과 싱크 개념으로 생각하기
- 캐스케이딩 애플리케이션 만들기
- 캐스케이드 만들기: 간단한 JOIN 예제
- 하둡 클러스터에 캐스케이딩 애플리케이션 배포하기
피그와 캐스케이딩 중에서 선택해야 할 때
정리
[5부] 대용량 데이터를 위한 기계 학습
▣ 10장: 머하웃을 이용한 대용량 분류기 구축하기
컴퓨터는 미래를 예측할 수 있는가?
기계 학습의 도전과제
- 베이지안 분류
- 클러스터링
- 추천 엔진
아파치 머하웃: 확장 가능한 기계 학습
- 텍스트 분류에서 머하웃 사용하기
MLBase: 분산 기계 학습 프레임워크
정리
[6부] 대용량 데이터에 대한 통계 분석
▣ 11장: 대용량 데이터에 R 활용하기
통계는 왜 섹시한가?
- 대용량 데이터에서 R이 지닌 한계
- R 데이터 프레임과 행렬
대용량 데이터를 다루는 전략
- 큰 행렬 연산: bigmemory와 biganalytics
- ff: 메모리보다 큰 데이터 프레임 다루기
- biglm: 대용량 데이터를 위한 선형 회귀 분석
- RHadoop: R에서 아파치 하둡에 접근하기
정리
▣ 12장: 파이썬과 Pandas를 이용한 분석 워크플로우 구축하기
데이터 동물원에서 뱀(Python )이 풀려나다
- 통계 계산을 위한 언어 선택
- 기존 코드 확장하기
- 도구와 테스팅
데이터 처리를 위한 파이썬 라이브러리
- NumPy
- SciPy: 파이썬을 위한 과학 컴퓨팅
- 이미지 데이터를 위한 SciPy 사용하기
- 판다스 데이터 분석 라이브러리
좀 더 복잡한 워크플로우 구축하기
- 잘못됐거나 누락된 레코드 처리하기
아이파이썬: 과학 컴퓨팅 도구의 완성
- 클러스터를 이용한 아이파이썬 병렬화하기
정리
[7부] 향후 전망
▣ 13장: 언제 구축하고, 언제 구매하고, 언제 아웃소싱할 것인가?
중복된 솔루션
데이터 문제 이해하기
구축 대 구매 문제를 위한 각본
- 이미 투자한 바는 무엇인가?
- 작게 시작하기
- 확장 계획하기
나만의 사설 데이터 센터
오픈소스 사용에 따른 비용 이해하기
정리
▣ 14장: 데이터 기술의 미래 트렌드
하둡: 파괴자와 피파괴자
모든 것은 클라우드 속에 있다
데이터 과학자의 흥망
융합: 궁극의 데이터베이스
문화의 융합
정리
책속에서
★ 이 책의 구성 ★
대용량 데이터를 다루려면 특화된 기술이 필요하고, 각 기술에는 트레이드오프와 해결해야 할 과제가 있다. 이 책은 공통적인 활용 사례 측면에서 데이터 문제와 성공적인 솔루션을 설명하는 내용으로 구성돼 있다. 1부, "빅데이터 시대의 방향"은 1장, "데이터를 성공적으로 다루는 네 가지 법칙"을 담고 있다. 1장에서는 왜 빅데이터가 중요하고 왜 새로운 기술들이 많은 기회만큼 갖가지 문제를 만들어내는지 설명한다. 이 책의 전반에서 다루는 "확장 가능한 애플리케이션 구축에 집중하기", "개별 사일로가 아닌 협업을 위한 툴 구축하기", "기술을 사용하기에 앞서 활용 사례 고민하기", "필요하지 않을 경우 인프라 구축하지 않기" 등과 같은 공통된 주제를 소개한다.
2부, "대용량 데이터의 수집 및 공유"에서는 대용량 데이터를 수집하고 공유하는 것과 관련된 활용 사례를 설명한다. 2장, "대용량 미가공 데이터의 호스팅과 공유"에서는 겉으로 보기에는 쉬운, 많은 양의 파일을 서비스하고 공유하는 방법을 설명한다. 올바른 데이터 포맷을 정하는 것은 매우 중요하다. 2장에서는 데이터 공유 방법에 관한 적절한 의사결정을 내리는 데 고려해야 할 사항도 다룬다. 그뿐만 아니라 대용량 데이터를 경제적으로 호스팅하는 데 필요한 인프라의 종류도 다룬다. 데이터를 한 곳에서 다른 곳으로 옮길 때 필요한 데이터 직렬화 포맷을 설명하면서 2장을 마무리한다.
3장, "대중이 생성한 데이터를 수집하기 위한 NoSQL 기반의 웹 애플리케이션 구축하기"에서는 확장 가능한 데이터베이스 기술 분야를 소개한다. 관계형 데이터베이스와 비관계형 데이터베이스의 역사를 비롯해 각 기술의 특징을 설명한다. 많이 사용하는 레디스(Redis) 데이터베이스를 소개하고, 여러 대의 장비에 설치된 레디스의 샤딩(sharding) 전략을 다룬다.
대용량 데이터 분석을 위해서는 여러 기술을 사용하고 관련된 지식을 습득해야 하며, 그로 인해 때로는 데이터를 호환되지 않는 여러 곳에 저장하기도 한다. 4장 "데이터 사일로를 다루는 전략"에서는 데이터 사일로가 존재하는 이유와 관련 문제를 극복하는 전략을 다룬다. 또한 데이터 사일로의 이점도 설명한다.
정보가 수집, 저장, 공유되면 수집된 데이터에 대한 통찰이 필요하다. 3부, "데이터에 대해 질문하기"에서는 대용량 데이터 집합에 관해 질문하기와 관련된 활용 사례와 기술을 다룬다. 대용량 데이터를 대상으로 질의하려면 분산 솔루션이 필요할 때가 많다. 5장, "하둡, 하이브, 샤크를 이용해 대용량 데이터에 대해 질문하기"에서는 계속 증가하는 데이터 집합을 대상으로 질의를 수행하는 데 필요한 유명한 확장 가능한 도구를 소개한다. 5장에서는 SQL과 비슷한 질의를 하둡에서 실행 가능한 맵리듀스 잡(job)으로 변환하는 도구인 아파치 하이브(Apache Hive)를 다룬다.
때로는 데이터를 반복해서 질의할 필요가 있다. 분석형 데이터베이스는 빠르게 데이터를 대상으로 질문하고 결과를 검색하는 데 최적화된 소프트웨어다. 6장, "구글 빅쿼리를 이용한 데이터 대시보드 구축하기"에서는 분석형 데이터베이스 활용 사례를 보여주고, 어떻게 하둡과 같은 배치 처리 도구의 보조수단으로 사용되는지 설명한다. SQL과 비슷한 문법을 사용하는 완전히 관리되는 분석형 데이터베이스인 빅쿼리를 소개한다. 6장에서는 웹 기반 대시보드의 엔진 역할을 하는 빅쿼리 API의 사용법도 설명한다.
데이터 시각화는 역사가 오래된 유서 깊은 분야다. 7장, "대용량 데이터 탐색을 위한 데이터 시각화 전략"에서는 대용량 데이터에 시각화 도구를 사용하는 것의 장점과 잠재적 위험을 소개한다. 7장에서는 데이터의 규모가 비약적으로 커질 때 발생하는 시각화 문제와 널리 사용되는 데이터 분석 기술을 이용하는 실용적인 시각화 도구를 설명한다.
확장 가능한 데이터 기술을 이용할 때의 공통적인 주제는 각 소프트웨어 도구가 각기 다른 활용 사례에 최적화돼 있다는 점이다. 그러므로 대용량 데이터를 하나의 포맷에서 다른 포맷으로 변환하는 것이 일반적인 활용 사례다. 4부, "데이터 파이프라인 구축하기"에서는 데이터 변환을 위한 파이프라인과 워크플로우를 구현하는 주제를 다룬다. 8장, "하나로 합치기: 맵리듀스 데이터 파이프라인"에서는 대용량 데이터를 처리하기 위해 하둡 맵리듀스 프레임워크를 사용하는 개념을 소개한다. 하둡 스트리밍 API와 파이썬 같은 스크립트 언어를 이용해 실용적이고 손쉽게 활용 가능한 맵리듀스 애플리케이션을 만드는 방법을 설명한다.
데이터 처리 작업이 매우 복잡할 경우 변환 작업을 자동화하는 워크플로우 도구를 사용할 필요가 있다. 9장, "피그와 캐스케이딩을 활용한 데이터 변환 워크플로우 구축"에서는 매우 복잡한 맵리듀스 작업을 표현하는 두 기술을 소개한다. 아파치 피그는 복잡하고 여러 단계에 걸친 맵리듀스 작업을 쉽게 만들어주는 워크플로우 표현 언어다. 또한 캐스케이딩(Cascading)도 소개하는데, 캐스케이딩은 하둡에서 복잡한 데이터 워크플로우 애플리케이션을 구축하는 데 유용한 자바 라이브러리다.
데이터의 규모가 매우 커지면 컴퓨터가 사람들에게 유용한 정보를 제공해주길 바랄 것이다. 기존 데이터 모델을 기반으로 유입되는 정보를 분류, 추천, 예측하기 위해 기계 학습을 활용하면 매우 유용하다. 5부, "대용량 데이터를 위한 기계 학습"에서는 10장, "머하웃을 이용한 대용량 분류기 구축하기"를 통해 기계 학습 분야를 소개한다. 또한 10장에서는 흔히 쓰이는 기계 학습 작업인 텍스트 분류에 아파치 머하웃 기계 학습 라이브러리를 이용하는 것을 시연한다.
데이터의 품질과 의미를 해석하는 것도 통계의 목표 중 하나다. 6부, "대용량 데이터를 위한 통계 분석"에서는 대용량 데이터의 통계 분석을 위한 도구와 활용 사례를 소개한다. R 프로그램은 통계 분석에 널리 사용되는 대표적인 오픈소스 언어다. 11장, "대용량 데이터를 위한 R 사용하기"에서는 R을 이용해 대용량 데이터를 효과적으로 사용하는 일반화된 활용 사례를 다룬다. 11장에서는 데이터의 규모가 가용한 시스템 메모리보다 더 커졌을 때 유용한 R 라이브러리를 다룬다. 또한 하둡과 R을 연동하는 방법도 설명한다.
R이 매우 유명하긴 하지만 데이터 분석이라는 과제를 해결하기 위해 범용 프로그래밍 언어를 사용하는 것은 장점이 있다. 12장, "파이썬과 판다스를 활용한 분석 워크플로우 구축"에서는 날로 인기를 얻고 있는 파이썬 분석 기술을 소개한다. 또한 시계열 데이터를 분석하기 위한 판다스(Pandas) 라이브러리를 비롯해 공유와 협업을 위한 스크립트 환경인 아이파이썬 노트북(iPython notebook)의 사용법도 소개한다.
데이터 관련 과제가 모두 기술과 관련된 것은 아니다. 7부, "향후 전망"에서는 데이터 분석 혁신에 직면한 기업의 불확실성을 다루기 위한 실용적인 전략을 소개한다. 13장, "언제 구축하고, 언제 구매하고, 언제 아웃소싱할 것인가?"에서는 매우 혁신적인 데이터 분석을 위한 구매결정 전략을 다룬다. 또한 오픈소스 기술을 활용해 데이터 솔루션을 직접 구축하는 방법의 장단점도 간단히 다룬다.
마지막으로 14장, "데이터 기술의 미래 트렌드"에서는 혁신을 자극하는 몇몇 요소를 비롯해 확장 가능한 데이터 기술의 현재 트렌드를 소개한다. 또한 소위 데이터 과학자(Data Scientist)라고 하는 직무의 역할과 다양한 데이터 기술의 융합을 심도 있게 다룬다.
-서문 중에서