데이터베이스 인터널스 (분산 데이터베이스 시스템 심층 분석)

데이터베이스 인터널스 (분산 데이터베이스 시스템 심층 분석)

$36.00
Description
데이터베이스에 데이터를 저장하는 방식과 분산 시스템의 일관성을 유지할 때 사용되는 개념과 알고리즘을 설명한다. 나아가 이들을 개선하기 위해 등장한 여러 새로운 알고리즘도 설명한다. 최신 분산 시스템과 논문에서 찾아볼 수 있는 개념들과 관련 문헌을 정리한 이 책을 통해 데이터베이스에 어떤 고질적인 문제가 있는지, 이들을 어떻게 해결할 수 있으며 또 어떤 새로운 연구들이 진행되고 있는지 배우게 될 것이다.
저자

알렉스페트로프

저자알렉스페트로프(AlexPetrov)
데이터인프라엔지니어이자아파치카산드라커미터,PMC멤버다.주요연구분야는데이터베이스와스토리지시스템이며스토리지와분산시스템,알고리즘에관심이많다.

목차

1부.스토리지엔진

1장.소개및개요
__DBMS구조
__인메모리DBMS대디스크기반DBMS
__칼럼형DBMS대로우형DBMS
__데이터파일과인덱스파일
__버퍼링과불변성,순서화
__요약

2장.B-트리개요
__이진탐색트리
__디스크기반자료구조
__디스크기반자료구조
__유비쿼터스B-트리
__요약

3장.파일포맷
__파일포맷의중요성
__바이너리인코딩
__파일포맷설계원칙
__페이지구조
__슬롯페이지
__셀구조
__셀병합으로슬롯페이지구성
__가변길이데이터관리
__버전관리
__체크섬
__요약

4장.B-트리구현
__페이지헤더
__이진검색
__분할과병합
__탐색경로
__리밸런싱
__오른쪽추가기법
__압축
__정리와유지
__요약

5장.트랜잭션처리와복구
__버퍼관리
__복구
__동시성제어
__요약

6장.B-트리의변형
__쓰기시복사
__노드업데이트추상화
__지연형B-트리
__FD-트리
__Bw-트리
__캐시비인지형B-트리
__요약

7장.로그구조스토리지
__LSM트리
__읽기,쓰기,메모리공간증폭
__세부구현설명
__비정렬LSM스토리지
__LSM트리동시성제어
__로그스태킹
__LLAMA와투명한스태킹
__요약

2부.분산시스템

8장.분산시스템개요
__동시수행
__분산컴퓨팅의오류
__클럭과시간
__분산시스템추상화
__장애모델
__요약

9장.장애감지
__하트비트와핑
__파이누적장애감지
__가십과장애감지
__장애전파를사용한문제해결
__요약

10장.리더선출
__불리알고리즘
__다음서열로리더역할승계
__후보/일반노드최적화
__초대알고리즘
__링알고리즘
__요약

11장.복제와일관성
__고가용성
__CAP이론
__수확률과산출률
__공유메모리
__순서화
__일관성모델
__세션모델
__결과적일관성
__조정가능한일관성
__증명복제노드
__강력한결과적일관성과CRDTs
__요약

12장.안티-엔트로피와배포
__읽기복구
__다이제스트읽기
__힌트핸드오프
__머클트리
__비트맵버전벡터
__가십전파
__요약

13장.분산트랜잭션
__원자적연산처럼수행하기
__2단계커밋
__3단계커밋
__칼빈의분산트랜잭션처리
__스패너의분산트랜잭션처리
__데이터베이스파티셔닝
__퍼콜레이터의분산트랜잭션처리
__코디네이션생략
__요약

14장.합의
__브로드캐스트
__원자적브로드캐스트
__팍소스
__래프트
__비잔틴합의
__요약

부록A.참고문헌

출판사 서평

★이책에서다루는내용★

이책은관계형DBMS나NoSQL시스템에관한책이아니다.대신다양한종류의데이터베이스시스템에서사용되는알고리즘과개념을스토리지엔진과분산저장을담당하는컴포넌트에초점을두고설명한다.
쿼리계획과쿼리최적화,스케줄링,관계형모델등의주제는여러훌륭한이론서에서쉽게접할수있다.이들은대부분사용자의관점에서각주제를설명하지만이책은데이터베이스의내부구조를집중적으로설명한다.
이책에서언급된데이터베이스시스템간의공통적언어는없기때문에쿼리언어는다루지않는다.이책을집필하고자15권의책과300편이상의논문,수많은블로그글,소스코드,여러오픈소스데이터베이스의기술문서를참고했다.“데이터베이스업계와연구자들이이주제에대해논의하는가?”라는질문의답을기반으로주제를책에포함할지여부를결정했다.답이“그렇다”라면주저없이긴목록에추가했다.

■스토리지엔진:스토리지종류와분류법을알아보고B-트리기반과불변로그구조기반의스토리지엔진을설명한다.
■스토리지구성요소:페이지캐시와버퍼풀과같은보조자료구조를사용해데이터베이스파일을효율적으로저장하는스토리지구축방법을설명한다.
■분산시스템:노드및프로세스가서로어떻게연결되고복잡한통신패턴을형성할수있는지단계별로설명한다.
■데이터베이스클러스터:최신데이터베이스에서사용되는일관성모델과분산스토리지시스템이일관성을보장하는방법을설명한다.

★이책의대상독자★

여러중요한데이터베이스시스템관련개념을쉽게설명한다.각개념을더깊이알고싶은독자에게지침서가될것이다.이미모두익숙한개념이라면참고서로도움될것이다.
이책의대상독자는데이터베이스개발자만이아니다.데이터베이스시스템을사용해소프트웨어를개발하는소프트웨어개발자와신뢰성엔지니어,아키텍트,엔지니어링매니저에게도도움이될것이다.
회사에서데이터베이스,메시징큐,컨테이너플랫폼,태스크스케줄러등의인프라를사용중이라면해당프로젝트의변경로그를읽고,메일링리스트에가입하고,커뮤니티와교류해프로젝트에관한최신정보를항상알고있어야한다.시스템에관련된용어와내부구조를이해하면더많은정보를알아낼수있으며좀더효율적으로툴을사용해문제와병목현상을방지,식별및해결할수있다.데이터베이스시스템의동작방식에대한전반적인이해는문제를해결하는데많은도움이될것이다.이런지식을바탕으로가설을형성하고검증한뒤에원인을찾아다른프로젝트관리자에게알리는것은중요하다.
또한취미로컴파일러를만들고직접운영체제와텍스트에디터,컴퓨터게임을개발하거나새로운프로그래밍언어를학습하는등새로운정보를습득하길좋아하는호기심많은사람들에게도움이될것이다.
아울러독자는백엔드시스템개발시또는사용자로데이터베이스시스템을이용해본경험이있을거라고가정한다.자료구조에관한사전지식이있다면내용을더빨리이해할수있을것이다.

★이책의구성★

데이터베이스시스템간의가장중요한차이점은데이터저장방법과분산처리방법에있다(다른중요한서브시스템이있을수있지만이책에서는다루지않는다).이책은스토리지(1부)와분산(2부)을담당하는서브시스템및구성요소에관한설명으로이뤄져있다.
1부에서는노드로컬프로세스를논의하고,데이터베이스시스템의핵심구성요소이며가장중요한스토리지엔진을설명한다.DBMS의구조에대한설명으로시작해기본저장매체및레이아웃을기반으로데이터베이스시스템을분류하는몇가지방법을소개한다.
이어스토리지구조를설명한다.디스크기반자료구조와인메모리자료구조의차이점을알아보고B-트리알고리즘과직렬화,페이지레이아웃,디스크에서의표현방식등의B-트리를효율적으로디스크에저장하는데필요한개념을설명한다.나아가B-트리에서파생된여러다양한변형B-트리도소개한다.
마지막으로몇가지로그구조스토리지변형을설명하고왜파일및스토리지시스템구현에서자주사용되는지알아본다.
2부에서는여러독립적인노드를데이터베이스클러스터로구성하는방법을설명한다.장애허용분산시스템을구축하는데필요한이론적개념을설명하고분산시스템이단일노드애플리케이션과어떻게다르고분산환경에서어떤문제와제약,복잡성이발생할수있는지알아본다.
이어분산알고리즘을설명한다.장애감지시이를보고하고장애가발생한노드는시스템에서제외시켜성능과안정성을높일수있는장애감지알고리즘을설명한다.뒷장에서설명하는대부분의알고리즘은리더프로세스가필요하기때문에리더선출알고리즘과사용사례에대해서도논의한다.
분산시스템에서가장어려운부분은데이터의일관성을유지하는것이기때문에데이터이중화,일관성모델,복제본간의불일치,결과적일관성등의개념도설명한다.결과적일관성을보장하는시스템에서데이터의일관성을유지하기위해사용하는안티-엔트로피알고리즘과데이터전파를위해사용하는가십프로토콜도알아본다.마지막으로데이터베이스트랜잭션의맥락에서논리적일관성을논의하고,합의알고리즘에관한설명으로마무리한다.

★옮긴이의말★

이책을번역하는데생각이상으로오랜시간이걸렸다.학교에서공부하기도했고업무에서도종종논의한개념이기때문에꽤알고있다고생각했지만오산이었다.여러번읽고다른자료들도참고해야어느정도이해할수있었다.데이터베이스분야는번역용어가아직정립되지않았다는것도몸소느꼈다.일반적으로원서와영어논문을참고하다보니영어가더익숙한용어들을굳이번역해야하나싶기도했다.예를들어‘READUNCOMMITTED’격리수준을‘커밋전에읽기’라고부르는경우는흔하지않다.하지만어색하더라도의미가더잘와닿는다면좋은시도라고생각한다.
이책은데이터베이스를지탱하는알고리즘을설명하고최신논문과시스템에서만접할수있는관련개념들을정리한책이다.데이터베이스를공부하는학생과현업개발자그리고특히여러최신데이터베이스의원리와기술을숙지해야하는데이터베이스연구자들을위한책이다.관계형데이터베이스시스템을사용해봤고,분산시스템을사용해새로운시스템을구축하려는개발자라면많은도움이될것이다.이미검증된라이브러리가많아서직접알고리즘을작성하거나데이터베이스엔진을개발하는일은흔하지않다.하지만이론과알고리즘을이해하는정도는컴퓨터과학자와일반개발자를나누는기준이되며,최선의해결책을찾는데결정적인역할을한다.이책은데이터베이스개발자라면반드시알아야하는분산시스템의기본이론및알고리즘을설명하는책이다.
데이터베이스별로어떤기능이있는지,얼마나빠른지또어떤유형의애플리케이션에서사용되는지등의실용적인측면은다루지않는다.SQL과같은쿼리언어와쿼리플랜도설명하지않는다.MySQL과오라클중에어떤것을선택해야할지고민중이거나,1억건이넘는로우를어떤데이터베이스에저장해야할지고민중이라면이책은도움이되지않을것이다.대신데이터베이스이론과알고리즘을스토리지관점에서설명하고,분산시스템의기본개념과알고리즘을설명한다.다른이론서와의차이점은기존알고리즘을개선한여러변형알고리즘도설명한다는점이다.최신분산시스템에서사용되는알고리즘이궁금하다면많은도움이될것이다.
1부(1~7장)는데이터베이스에데이터를저장하는방식에대해설명한다.데이터베이스에서가장중요한B-트리알고리즘을설명하고캐시정책,복구,동시성제어등의중요한주제도다룬다.6장과7장이1부의핵심이다.LazyB-트리와Bw-트리,LSM트리,Wisckey등의변형된B-트리를설명한다.
2부(8~14장)는분산데이터베이스시스템의일관성을유지하기위해사용되는알고리즘에대해설명한다.장애감지,리더선출,안티엔트로피,분산트랜잭션,합의알고리즘등을다룬다.분산시스템은여러노드로구성되기때문에이들사이에는서로의문제를감지하고,작업을나눠서실행하고,상태에대한합의를하는알고리즘이필요하다.
각주제를더알고싶다면각장끝에정리된문헌과논문을꼭참고하길바란다.인터넷에서관련자료와예제를찾아보는것도많은도움이될것이다.