책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 데이터베이스 프로그래밍 > SQL
· ISBN : 9788960774049
· 쪽수 : 404쪽
책 소개
목차
1장 시작하기
___들어가며
___하나의 노드로 구성된 간단한 카산드라 설치하기
___커맨드라인을 이용해 테스트 데이터 읽고 쓰기
___하나의 머신에서 여러 개의 인스턴스 실행하기
___다중 인스턴스 설치를 스크립트로 처리하기
___빌드 및 테스트 환경 갖추기
___디버깅 가능하도록 포어그라운드에서 실행하기
___임의 파티셔너에 사용할 이상적인 초기 토큰 구하기
___순서 보존 파티셔너에 사용할 초기 토큰들 선택하기
___카산드라와 JConsole 이해하기
___SOCKS 프록시를 이용해 JConsole과 연결하기
___자바와 스리프트로 카산드라에 연결하기
___CLI를 이용하여 카산드라에 연결하기
2장 커맨드라인 인터페이스
___CLI에서 키스페이스 생성하기
___CLI에서 컬럼 패밀리 만들기
___키스페이스 상세 정보 보기
___CLI를 이용하여 데이터 기록하기
___CLI를 이용하여 데이터 읽기
___CLI에서 로우와 컬럼 지우기
___컬럼 패밀리에 있는 모든 로우의 목록 보기
___키스페이스와 컬럼 패밀리 삭제하기
___CLI에서 슈퍼 컬럼 다루기
___assume 명령어로 컬럼 이름과 컬럼 값 디코드하기
___컬럼을 삽입할 때 TTL값 넣기
___CLI 내장 함수들 사용하기
___컬럼 메타데이터와 컴패러터 사용으로 타입 정하기
___CLI의 일관성 레벨 바꾸기
___CLI에서 도움말 보기
___파일에서 CLI 명령어 불러오기
3장 API
___들어가며
___카산드라 서버에 연결하기
___클라이언트에서 키스페이스와 컬럼 패밀리 생성하기
___MultiGet을 이용하여 라운드 트립과 오버헤드 제한하기
___임베디드 카산드라 서버를 이용하여 유닛 테스트 작성하기
___유닛 테스트 전에 데이터 디렉토리 비우기
___다양한 언어를 위한 스리프트 바인딩 생성 (C++, PHP 등)
___카산드라 스토리지 프록시, 팻 클라이언트(Fat Client) 사용하기
___범위 검색을 이용하여 오래된 데이터를 검색하고 삭제하기
___큰 키에 대해 모든 컬럼 탐색하기
___컬럼 순서 뒤바꾸기
___데이터 삽입 성능을 향상시키고 코드를 견고하게 하기 위해 배치 뮤테이션 사용하기
___TTL을 이용하여 자가 탐지 시간이 있는 컬럼 만들기
___2차 인덱스 이용하기
4장 성능 튜닝
___들어가며
___운영체제와 배포판 선택하기
___JVM 선택하기
___커밋 로그 전용 디스크 사용하기
___RAID 레벨 설정하기
___하드디스크 성능 개선을 위한 파일시스템 최적화
___키 캐시로 읽기 성능 개선하기
___로우 캐시로 읽기 성능 개선하기
___예측 가능한 성능을 위한 스왑 메모리 비활성화
___시스템 설정을 건드리지 않은 채 카산드라에서만 스왑 메모리 사용하지 않게 하기
___메모리 맵 디스크 모드 활성화하기
___쓰기집약적 작업에 맞는 멤테이블 튜닝
___64비트 아키텍처에서 압축된 포인터 사용으로 메모리 절약하기
___처리량 증가를 위한 동시접근 읽기와 동시접근 쓰기 튜닝
___컴팩션 한계값 설정하기
___JVM 멈춤 현상을 최소화하는 가비지 컬렉션 튜닝
___여러 클라이언트의 연결을 허용하기 위해 동시에 열 수 있는 파일 개수 올리기
___규모를 확대해서 성능 개선하기
___서버와 클라이언트에 네트워크 타임 프로토콜 활성화하기
5장 카산드라에서의 일관성, 가용성, 파티션 허용
___들어가며
___강한 일관성 보장을 위해 공식 이용하기
___쓰기 작업시 타임스탬프 설정하기
___힌트 핸드오프 비활성화하기
___성능 향상을 위해 읽기 수리 확률 조절하기
___클러스터들 사이에서 같은 스키마 레벨 보장하기
___Quorum에 맞추기 위해 복제 계수 조절하기
___지연시간이 짧아야 하는 작업을 위해 쓰기 일관성 ONE, 읽기 일관성 ONE 사용하기
___강한 일관성을 위해 쓰기 일관성 QUORUM, 읽기 일관성 QUORUM 사용하기
___쓰기 일관성 QUORUM, 읽기 일관성 ONE 두 레벨을 섞어서 사용하기
___일관성 ALL을 사용하여 가용성보다 일관성을 우위에 두기
___쓰기 일관성 ANY를 사용하여 일관성보다 가용성을 우위에 두기
___일관성이 락이나 트랜잭션과 다르다는 것을 보이기
6장 스키마 디자인
___들어가며
___짧은 컬럼 이름을 사용하여 용량 줄이기
___작은 인덱스 크기를 위해 데이터를 큰 컬럼으로 직렬화하기
___시계열 자료를 효과적으로 저장하기
___중첩 구조 맵을 사용하기 위해서 슈퍼 컬럼 사용하기
___디스크 용량을 절약하고 성능을 개선하기 위하여 복제 계수 낮추기
___순서 보존 파티셔너를 사용한 하이브리드 랜덤 파티셔너
___큰 데이터 저장하기
___카산드라로 분산 캐싱하기
___크기가 크거나 자주 접근하지 않는 데이터를 따로 분리된 컬럼 패밀리에 저장하기
___카산드라에서 에지 그래프 데이터 저장 및 검색하기
___이차 데이터 정렬 방법과 인덱스 만들기
7장 관리
___가십 통신을 위한 시드 노드 정의하기
___노드툴 Move: 노드를 특정한 링 위치로 옮기기
___노드툴 Remove: 정지된 노드 제거하기
___노드툴 Decommission: 작동중인 노드 제거하기
___자동 부트스랩을 중지해 노드를 빠르게 추가하기
___새로운 하드웨어에 데이터 디렉토리 복사하기
___데이터 복사를 통해 노드 추가하기
___노드툴 Repair: 안티엔트로피 수리를 언제 사용해야 하는가
___노드툴 Drain: 업그레이드시 파일 보호하기
___빠른 툼스톤 cleanup을 위해 gc_grace 낮추기
___메이저 컴팩션 스케줄링 하기
___백업을 위해 노드툴 snapshot 사용하기
___노드툴 clearsnapshot을 이용해 스냅샷 전부 지우기
___스냅샷으로부터 복원하기
___sstable2json을 이용하여 데이터를 JSON으로 내보내기
___노드툴 cleanup: 불필요한 데이터 제거하기
___노드툴 compact: 데이터 조각모음 및 삭제된 데이터 디스크에서 제거하기
8장 다수의 데이터센터 사용하기
___디버깅 환경을 수정하여 읽기가 라우팅되는 위치 알아보기
___IPTable을 이용해서 로컬 환경에서 복잡한 네트워크 시나리오 시뮬레이션 해보기
___RackInferringSnitch에 사용할 IP주소 결정하기
___다수의 데이터센터에 설치하기 위한 스크립트 작성하기
___주어진 키에 대해 랙, 데이터센터와 엔드포인트 찾기
___프로퍼티 파일 스니치를 사용해 임의로 랙과 데이터센터 설정값 명시하기
___JConsole을 사용해 다이나믹 스니치 오류 해결하기
___다수의 데이터센터 환경에서 Quorum 레벨 사용하기
___Traceroute를 사용해서 네트워크 기기 간 지연 시간 개선하기
___여러 개의 랙 사용시 스위치간 대역폭 확보하기
___데이터센터간 지연 시간 개선을 위해 rpc_timeout값 올리기
___다수 데이터센터 환경에서 CLI를 이용한 일관성 레벨 테스트
___일관성 레벨 TWO와 THREE 사용해보기
___네트워크 토폴로지 전략과 임의 파티셔너에 사용하는 이상적인 초기 토큰 지정하기
9장 코딩과 내부구조
___들어가며
___공통 개발 툴 설치하기
___소스코드에서 카산드라 빌드하기
___기본 타입을 서브클래스화하여 새로운 타입 만들기
___데이터 삽입시 데이터 밸리데이션하기
___IRC와 이메일을 활용해 카산드라 개발자들과 연락하기
___서브버전의 diff 기능 활용하기
___패치 명령의 diff 기능 활용하기
___Strings와 od 명령어를 통하여 데이터 파일 검색하기
___Sstable2json 내보내기 유틸리티 커스터마이징
___메모리 사용량을 낮춰주는 인덱스 인터벌 기간 설정하기
___불안정한 네트워크를 위하여 phi_convict_threshold 값 올리기
___카산드라 메이븐 플러그인 사용하기
10장 라이브러리와 애플리케이션
___들어가며
___벤치마킹을 위한 contrib 스트레스 툴 빌드하기
___Stress 툴을 사용해서 데이터를 삽입하고 읽기
___야후 클라우드 서빙 벤치마크 실행하기
___카산드라를 위한 하이레벨 클라이언트 헥토르
___헥토르를 이용하여 일괄처리하기
___카산드라와 자바 퍼시스턴스 아키텍처
___카산드라를 사용하는 텍스트 인덱싱 프로그램 솔란드라 설정하기
___트랜잭션 잠금을 위한 케이지를 지원하도록 주키퍼 설치하기
___케이지를 사용하여 원자성을 만족하는 읽기와 쓰기 구현하기
___CLI의 대안책, 그루반드라 사용하기
___로그산드라를 이용한 검색 가능한 로그 스토리지
11장 하둡과 카산드라
___들어가며
___임의의 형태의 하둡 클러스터 설치하기
___ColumnFamilyInputFormat을 이용하여 카산드라로부터 데이터를 읽는 맵핑 프로그램
___CassandraOutputFormat을 이용하여 카산드라에 데이터를 쓰는 맵핑 프로그램
___맵리듀스를 이용하여 카산드라의 입출력을 그룹화하고 카운팅하기
___카산드라 스토리지 핸들러를 지원하는 하이브 구성하기
___카산드라 컬럼 패밀리 위에 하이브 테이블 정의하기
___하이브를 이용하여 두 개의 컬럼 패밀리 조인하기
___하이브를 이용하여 컬럼의 값을 그룹짓고 그 수를 세기
___카산드라 노드와 하둡 태스크트래커 함께 이용하기
___맵리듀스 작업을 위한 '섀도우' 데이터센터 구성하기
___카산드라, 하둡, 하이브로 구성된 스택인 데이터스택스 브리스크 구성하기
12장 성능 통계 수집 및 분석
___노드툴 tpstats를 이용하여 병목 지점 찾기
___노드툴 cfstats를 이용하여 컬럼 패밀리 통계 얻기
___CPU 사용량 모니터링
___읽기/쓰기 그래프를 추가하여 활동 중인 컬럼 패밀리 찾기
___멤테이블 그래프를 사용하여 멤테이블이 언제, 왜 디스크에 기록되는지 알아보기
___SSTable 개수 그래프화하기
___디스크 사용량 모니터링 및 성능의 기초선 갖기
___캐시 그래프를 사용하여 캐시의 유효성 확인하기
___그래프를 사용하여 컴팩션 모니터링하기
___노드툴 컴팩션 stats를 사용하여 컴팩션의 진척도 알아보기
___컬럼 패밀리에 대한 통계 그래프를 통하여 로우 크기의 평균과 최대값 알아보기
___지연시간 그래프를 사용하여 키를 검색하는 데 드는 시간 측정하기
___컬럼 패밀리의 시간에 따른 크기 트래킹하기
___쿼리 지연시간의 분포를 알아보기 위하여 노드툴 cfhistograms 사용하기
___열려있는 네트워크 연결 트래킹하기
13장 카산드라 서버 모니터링
___들어가며
___Log4j 로그를 중앙 서버로 보내기
___전체적 성능 파악을 위하여 top 사용하기
___현재 디스크 성능 파악을 위하여 iostat 사용하기
___시간에 따른 성능 파악을 위하여 sar 사용하기
___카산드라 JMX에 접근하기 위하여 JMXTerm 사용하기
___가비지 컬렉션 이벤트 모니터링
___병목 지점 판단을 위하여 tpstats 명령 사용하기
___카산드라를 위한 나기오스 체크 스크립트 작성하기
___컴팩션 리미트 값을 사용하여 대용량의 로우 주시하기
___IPTraf를 사용하여 네트워크 트래픽 검토하기
___드랍된 메시지 찾아보기
___컬럼 패밀리에 위험한 조건이 적용되어 있는지 여부 확인하기