카테고리
국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 웹 서비스/웹 프로그래밍
책소개
데이터를 처리하고 저장하는 다양한 기술의 장단점을 검토한다. 소프트웨어는 계속 변하지만 근본 원리는 동일하다. 이 책에서 소프트웨어 엔지니어와 아키텍트는 실전에 이 개념을 어떻게 적용하는지, 그리고 현대 애플리케이션에서 어떻게 데이터를 최대한 활용하는지 배운다.
목차
▣ 01장: 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션
데이터 시스템에 대한 생각
신뢰성
___하드웨어 결함
___소프트웨어 오류
___인적 오류
___신뢰성은 얼마나 중요할까?
확장성
___부하 기술하기
___성능 기술하기
___부하 대응 접근 방식
유지보수성
___운용성: 운영의 편리함 만들기
___단순성: 복잡도 관리
___발전성: 변화를 쉽게 만들기
정리
참고 문헌
▣ 02장: 데이터 모델과 질의 언어
관계형 모델과 문서 모델
___NoSQL의 탄생
___객체 관계형 불일치
___다대일과 다대다 관계
___문서 데이터베이스는 역사를 반복하고 있나?
___관계형 데이터베이스와 오늘날의 문서 데이터베이스
데이터를 위한 질의 언어
___웹에서의 선언형 질의
___맵리듀스 질의
그래프형 데이터 모델
___속성 그래프
___사이퍼 질의 언어
___SQL의 그래프 질의
___트리플 저장소와 스파클
___초석: 데이터로그
정리
참고 문헌
▣ 03장: 저장소와 검색
데이터베이스를 강력하게 만드는 데이터 구조
___해시 색인
___SS테이블과 LSM 트리
___B 트리
___B 트리와 LSM 트리 비교
___기타 색인 구조
트랜잭션 처리나 분석?
___데이터 웨어하우징
___분석용 스키마: 별 모양 스키마와 눈꽃송이 모양 스키마
칼럼 지향 저장소
___칼럼 압축
___칼럼 저장소의 순서 정렬
___칼럼 지향 저장소에 쓰기
___집계: 데이터 큐브와 구체화 뷰
정리
참고 문헌
▣ 04장: 부호화와 발전
데이터 부호화 형식
___언어별 형식
___JSON과 XML, 이진 변형
___스리프트와 프로토콜 버퍼
___아브로
___스키마의 장점
데이터플로 모드
___데이터베이스를 통한 데이터플로
___서비스를 통한 데이터플로: REST와 RPC
___메시지 전달 데이터플로
정리
참고 문헌
고부하로 확장
___비공유 아키텍처
___복제 대 파티셔닝
참고 문헌
▣ 05장: 복제
리더와 팔로워
___동기식 대 비동기식 복제
___새로운 팔로워 설정
___노드 중단 처리
___복제 로그 구현
복제 지연 문제
___자신이 쓴 내용 읽기
___단조 읽기
___일관된 순서로 읽기
___복제 지연을 위한 해결책
다중 리더 복제
___다중 리더 복제의 사용 사례
___쓰기 충돌 다루기
___다중 리더 복제 토폴로지
리더 없는 복제
___노드가 다운됐을 때 데이터베이스에 쓰기
___정족수 일관성의 한계
___느슨한 정족수와 암시된 핸드오프
___동시 쓰기 감지
정리
참고 문헌
▣ 06장: 파티셔닝
파티셔닝과 복제
키-값 데이터 파티셔닝
___키 범위 기준 파티셔닝
___키의 해시값 기준 파티셔닝
___쏠린 작업부하와 핫스팟 완화
파티셔닝과 보조 색인
___문서 기준 보조 색인 파티셔닝
___용어 기준 보조 색인 파티셔닝
파티션 재균형화
___재균형화 전략
___운영: 자동 재균형화와 수동 재균형화
요청 라우팅
___병렬 질의 실행
정리
참고 문헌
▣ 07장: 트랜잭션
애매모호한 트랜잭션의 개념
___ACID의 의미
___단일 객체 연산과 다중 객체 연산
완화된 격리 수준
___커밋 후 읽기
___스냅숏 격리와 반복 읽기
___갱신 손실 방지
___쓰기 스큐와 팬텀
직렬성
___실제적인 직렬 실행
___2단계 잠금(2PL)
___직렬성 스냅숏 격리(SSI)
정리
참고 문헌
▣ 08장: 분산 시스템의 골칫거리
결함과 부분 장애
___클라우드 컴퓨팅과 슈퍼컴퓨팅
신뢰성 없는 네트워크
___현실의 네트워크 결함
___결함 감지
___타임아웃과 기약 없는 지연
___동기 네트워크 대 비동기 네트워크
신뢰성 없는 시계
___단조 시계 대 일 기준 시계
___시계 동기화와 정확도
___동기화된 시계에 의존하기
___프로세스 중단
지식, 진실, 그리고 거짓말
___진실은 다수결로 결정된다
___비잔틴 결함
___시스템 모델과 현실
정리
참고 문헌
▣ 09장: 일관성과 합의
일관성 보장
선형성
___시스템에 선형성을 부여하는 것은 무엇인가?
___선형성에 기대기
___선형성 시스템 구현하기
___선형성의 비용
순서화 보장
___순서화와 인과성
___일련번호 순서화
___전체 순서 브로드캐스트
분산 트랜잭션과 합의
___원자적 커밋과 2단계 커밋(2PC)
___현실의 분산 트랜잭션
___내결함성을 지닌 합의
___멤버십과 코디네이션 서비스
정리
참고 문헌
▣ 10장: 일괄 처리
유닉스 도구로 일괄 처리하기
___단순 로그 분석
___유닉스 철학
맵리듀스와 분산 파일 시스템
___맵리듀스 작업 실행하기
___리듀스 사이드 조인과 그룹화
___맵 사이드 조인
___일괄 처리 워크플로의 출력
___하둡과 분산 데이터베이스의 비교
맵리듀스를 넘어
___중간 상태 구체화
___그래프와 반복 처리
___고수준 API와 언어
정리
참고 문헌
▣ 11장: 스트림 처리
이벤트 스트림 전송
___메시징 시스템
___파티셔닝된 로그
데이터베이스와 스트림
___시스템 동기화 유지하기
___변경 데이터 캡처
___이벤트 소싱
___상태와 스트림과 불변성
스트림 처리
___스트림 처리의 사용
___시간에 관한 추론
___스트림 조인
___내결함성
정리
참고 문헌
▣ 12장: 데이터 시스템의 미래
데이터 통합
___파생 데이터에 특화된 도구의 결합
___일괄 처리와 스트림 처리
데이터베이스 언번들링
___데이터 저장소 기술 구성하기
___데이터플로 주변 애플리케이션 설계
___파생 상태 관찰하기
정확성을 목표로
___데이터베이스에 관한 종단 간 논증
___제약 조건 강제하기
___적시성과 무결성
___믿어라. 하지만 확인하라.
옳은 일 하기
___예측 분석
___사생활과 추적
정리
참고 문헌