본문 바로가기

도서 소개

웹 프로그래머를 위한 데이터베이스를 지탱하는 기술

 

 그간 읽어주신 독자들께 감사드립니다. 이 책을 절판되었습니다.


높은 신뢰도의 시스템을 만들기 위한 나침반!
대용량 데이터를 빠르고 안정적으로 처리하는 방법!
데이터베이스의 기본 이론부터 NoSQL까지 데이터베이스의 필수 요소를 빠르고 알기 쉽게 배우자!

 

출판사  제이펍
원출판사  技術評論社
원서명  Webエンジニアのための データベース技術[実践]入門(원서 ISBN 9784774150208)
저자명  마쯔노부 요시노리(松信 嘉範)
역자명  정인식
출판일  2012년 11월 16일
페이지  368쪽
  크라운판 변형(170*225) 반양장(Soft Cover)
  25,000원
ISBN  978-89-94506-55-5   부가기호: 93560
키워드  인덱스, 데이터 모델링, 테이블 설계, 정규화 이론, 복제, 트랜잭션, 배타 제어, 스토리지, 소스 해킹, 열 지향 데이터베이스, NoSQL, 빅 데이터, 고속화, 성능 개선
분야  데이터베이스 / 웹 프로그래밍

 

관련 사이트
원출판사 도서소개페이지
아마존 재팬 도서소개페이지
■ 저자 트위터(@matsunibu)

 

독자 Q&A
■ 출판사 이메일(jeipub골뱅이gmail.com)과 역자 이메일(insik8463골뱅이gmail.com)


관련 도서
■ 웹 개발자를 위한 대규모 서비스를 지탱하는 기술 
24시간 365일 서버/인프라를 지탱하는 기술


정오표 페이지(등록되는 대로 링크를 걸어 드리겠습니다)
■ 번역서 정오표 페이지
 
관련 포스트
2012/11/06 - [출간전 책소식] - 웹 프로그래머, 데이터베이스는 몰라도 될까요?


샘플 챕터(본문 전 앞부속물과 1장 데이터베이스가 없으면 무엇이 곤란한가?, 6장 트랜잭션과 무결성/무정지성, 찾아보기)

부속물.pdf.pdf

ch01.pdf

ch06.pdf

찾아보기.pdf

 

도서구매 사이트(가나다순)

 

도서 소개
높은 신뢰도의 시스템을 만들기 위한 나침반!
대용량 데이터를 빠르고 안정적으로 처리하는 방법!
데이터베이스의 기본 이론부터 NoSQL까지 데이터베이스의 필수 요소를 빠르고 알기 쉽게 배우자!

 

데이터베이스 자체의 역사는 길고 인덱스와 데이터 모델링, 트랜잭션과 같은 기간 기술은 크게 변화되지 않았다. 그럼에도 불구하고 데이터베이스에 기인하는 문제가 자주 발생한다는 것은 데이터베이스에 대한 이해가 충분하지 않다라는 것이 가장 큰 요인일 것이다. 이에 대한 본질을 이해하면 시대적 유행에 휘둘리지 않고 적절한 설계를 할 수 있게 될 것임에 틀림없다.

 

이 책은 데이터베이스 기술 동향을 정리해 체계적으로 설명함으로써 이러한 본질적인 측면에서의 이해가 가능케 하는 것을 목표로 한 서적이다. 본질적인 측면에서의 이야기와 MySQL의 구체적인 이야기를 결합함으로써 보다 확실하게 이해할 수 있도록 구성에 세밀한 주의를 기울였다. 이 책의 내용이 여러분의 일상 업무에 도움이 되었으면 좋겠다.

 

이 책의 대상 독자
• 데이터베이스의 필요성을 모르는 사람
“Excel로는 왜 충분하지 않지?”라고 질문을 받았을 때 대답하기 곤란한 사람, 선배 사원으로부터 “데이터베이스 기술은 중요하기 때문에 익혀 두어야 해!”라는 소릴 들었지만 왜 중요한 것인지 모르는 사람, 혹은 관심은 있지만 어디서부터 공부하면 좋은지를 모르는 사람 등이다.


• 데이터베이스 관련 지식을 정리하고 싶은 사람이나 전체 모습을 파악하고 싶은 사람
기존 기술의 특징과 과제를 잘 이해해 두면 새로운 기술이 나올 때 그 의미를 제대로 이해할 수 있고, 그 기술이 본질적으로 유효한 것(장기간 활용할 수 있는 것)인지 일시적인 열풍에 지나지 않는 것인지도 판단할 수 있을 것이다. 그리고 앞으로 어떤 기술이 주목을 모을지도 예상할 수 있을 것이다. 

 

책속으로
이 책은 기본적인 데이터베이스 이론에서부터 저자 자신이 온라인 서비스를 제공하는 현장에서 체험한 경험까지 하나하나 체계적으로 정리한 책으로, 대용량 데이터베이스 솔루션을 다루는 웹 엔지니어에게 많은 도움을 줄 것이다. 특히, MySQL에 대한 소스 레벨에서의 구체적인 접근 방법과 데이터베이스 운용에서 필요한 복제(Replication), 복구, 트랜잭션과 NoSQL 등 전반적인 데이터베이스 기술 동향에 대해 그 개념과 활용 방법을 자세하게 설명하고 있다
_옮긴이 머리말 중에서

 

지금까지 서술한 것처럼 고정 길이 방식으로 데이터를 관리하는 방법은 실용성이 부족하다. 그러면 고정 길이가 아닌 가변 길이 방식으로 데이터를 관리하는 경우에는 데이터를 어떤 방법으로 빠르게 검색할 수 있을까?
_23쪽

 

이러한 테이블을 일반적으로 「매핑 테이블」이라고 한다. 매핑 테이블은 데이터 모델링 과정에서 자주 나온다. 이번 예제에서는 emp 테이블과 dept 테이블 두 개를 매핑하고 있지만, 수십 개에 걸친 테이블을 매핑하는 경우도 있다. 매핑 테이블의 특징적인 사항으로는 다음과 같은 것을 들 수 있다.
_50쪽

 

DB 서버는 메모리에 전부 다 캐싱할 수는 없기 때문에 랜덤 리드가 다발하는 성질이 있어 랜덤 읽기 성능이 매우 높은 SATA SSD가 적합하다. SSD는 병렬성도 높지만, 특별히 강조하자면 단일 스레드에서 성능이 매우 높기 때문에 HDD에서는 병목현상을 일으키는 경향이 있었던 단일 스레드 처리도 크게 단축할 수 있다.
_120쪽

 

물론 열 지향 데이터베이스도 좋은 것만 있는 것은 아니다. 본래 DWH와 같이 광범위한 레코드와 좁은 범위의 열을 검색하는 데 뛰어난 데이터베이스이기 때문에 기존의 데이터베이스와 동일한 방식으로는 사용할 수 없다라는 것을 짐작할 수 있을 것이다. 여기서는 구체적으로 어떤 단점이 있는지 간단하게 소개하겠다. 기존의 데이터베이스를 대체할 존재가 아니라 어디까지나 용도별로 보완적으로 사용하는 것이라고 생각하는 편이 적절할 것 같다
_263쪽

 

앞서 언급한 예제에서 SQL 문의 처리 자체의 비용이 의외로 높다는 것을 알 수 있었다. 이러한 배경에서 기본 키 검색과 같은 단순하기 짝이 없는 액세스 패턴은 「SQL 문과 같은 복잡한 언어를 사용하지 않고 프로그래밍 언어의 라이브러리 함수를 사용하여 직접 데이터를 액세스하는 편이 훨씬 고속으로 되는 것은 아닌가」라고 생각하는 기술자들이 많아졌다. 그런 배경에서 주목을 끌게 된 것이 NoSQL이다.
_267쪽


저자 소개
마쯔노부 요시노리(松信 嘉範)
MySQL 데이터베이스 기술 전문가.
MySQL 컨설턴트로서 현장의 수많은 문제들을 해결하고 있고, 서비스 사업자의 스텝으로서 안정된 운용과 현장주의 정책을 고수하고 있다. 주요 저서로 『Linux-DB 시스템 구축/운영 입문』, 『현장에서 사용하는 MySQL』 등이 있다.
트위터: @matsunobu

 

역자 소개
정인식

숭실대학교에서 전자계산학을 전공하였다. 사회 초년생 시절 자바에 심취해 현대정보기술에서 웹 애플리케이션 개발을 하였고, 그 후 이동통신단말기 분야로 전직하여 휴대전화단말기의 부가서비스 개발업무를 담당하였다. 일본 키스코㈜ 모바일 사업부 팀장을 역임하면서 일본 교세라의 북미향 휴대전화기 개발에 참여하였고, 현재 일본에서 가나안 솔루션즈의 공동창업자이자 시스템 엔지니어로 일하고 있다. 옮긴 책으로는 『머리에 쏙쏙 들어오는 jQuery 입문』, 『자바스크립트 마스터 북』, 『좋은 코드를 작성하는 기술』이 있다.

 

차 례
1장 데이터베이스가 없으면 무엇이 곤란한가?

1.1 기술자로서 요구되는 스킬 _ 2
1.2 데이터베이스가 없으면 무엇이 곤란한가? _ 7
1.3 이 책에서는 무엇을 다루어 나갈 것인가? _ 16

 

2장 인덱스로 고속 액세스 실현하기
2.1 「키와 값의 페어」를 관리하고 싶다 _ 20
2.2 인덱스의 기본 「B+Tree 인덱스」 _ 28
2.3 RDBMS에서는 어떻게 최적화를 실현하고 있는가? _ 31
2.4 업데이트 비용 절감을 위한 노력 _ 34

 

3장 테이블 설계와 릴레이션
3.1 데이터 모델링 기술의 중요성 _ 38
3.2 예제를 사용하여 생각해 보자 _ 39
3.3 포인트 1: 「테이블 관계」를 도입 _ 43
3.4 포인트 2: 테이블 설계의 타당성 검증하기 _ 47
3.5 정규화 이론의 기본을 파악해 두자 _ 53

 

4장 SQL 문의 특징과 이를 잘 다루는 법
4.1 테이블 조작하기 _ 58
4.2 SQL 문의 실행 효율 의식하기 _ 70
4.3 SQL의 장점과 단점 _ 74

 

5장 가용성과 데이터의 복제
5.1 데이터베이스는 어떤 때에 크래쉬되는가? _ 78
5.2 복제 _ 83

 

6장 트랜잭션과 무결성·무정지성
6.1 트랜잭션의 중요성 이해하기 _ 96
6.2 잠금 메커니즘에 의한 배타 제어 _ 105
6.3 복제 및 트랜잭션 _ 109

 

7장 스토리지 기술의 변천과 데이터베이스에 끼치는 영향
7.1 하드웨어 성능 개선의 역사 _ 114
7.2 데이터베이스 개선의 역사 _ 126
7.3 향후 데이터베이스에 요구되는 것 _ 130

 

8장 데이터베이스 운용 기술의 급소
8.1 데이터베이스 운용의 어려움을 알자 _ 134
8.2 문제 예방 _ 136
8.3 문제 인지 _ 141
8.4 문제 해결 _ 148

 

9장 MySQL로 배우는 데이터베이스 관리
9.1 MySQL 도입의 포인트 _ 152
9.2 MySQL 운용에 필요한 파일의 기초 지식 _ 162
9.3 MySQL 백업의 기초 _ 168
9.4 MySQL에서의 백업/복구 _ 172

 

10장 MySQL의 소스 코드를 추적해 보자
10.1 소스 코드를 아는 것이 의미가 있을까? _ 186
10.2 소스 코드의 구조를 보자 _ 190
10.3 소스 코드를 분석해 보자 _ 193
10.4 MySQL의 설계 사상을 알아보자 _ 205
10.5 소스 해킹 사례 연구 _ 210
10.6 MySQL 개발 커뮤니티 _ 235

 

11장 데이터베이스 기술의 현재와 미래
11.1 데이터베이스 기술 동향 _ 240
11.2 대량의 데이터를 고속으로 처리하는 기술 _ 245
11.3 분석계 처리 및 열 지향 데이터베이스 _ 251
11.4 NoSQL 데이터베이스 _ 264
11.5 그 외의 주제 _ 277

 

12장 빅 데이터 시대의 데이터베이스 설계
12.1 웹 서비스를 위한 데이터베이스 개론 _ 282
12.2 Mobage에서의 데이터베이스 활용 사례 _ 294
12.3 웹 서비스 및 데이터 모델링 _ 308
12.4 데이터 양 증가 대책과 고속화 수법 _ 317
12.5 MySQL의 성능 개선 테크닉 _ 330

 

찾아보기 _ 345