이미 소장하고 있다면 판매해 보세요.
|
1장. 카산드라 소개
__01 관계형 데이터베이스의 문제점 __02 관계형 데이터베이스 재검토 __03 카산드라 엘리베이터 피치 __04 카산드라의 유래 __05 카산드라 사용 사례 __06 누가 카산드라를 사용하는가? __07 요약 2장. 카산드라 설치 __01 바이너리 설치 __02 소스 빌드 __03 카산드라 실행하기 __04 명령줄 클라이언트 인터페이스 실행하기 __05 CLI 기본 명령어 __06 요약 3장. 카산드라 데이터 모델 __01 관계형 데이터 모델 __02 간단한 소개 __03 클러스터 __04 키스페이스 __05 컬럼 패밀리 __06 컬럼 __07 슈퍼 컬럼 __08 RDBMS와 카산드라의 디자인 차이 __09 디자인 패턴 __10 기억할 점 __11 요약 4장. 예제 애플리케이션 __01 데이터 디자인 __02 호텔 앱 RDBMS 디자인 __03 호텔 앱 카산드라 디자인 __04 호텔 애플리케이션 코드 __05 트위산드라 __06 요약 5장. 카산드라 아키텍처 __01 시스템 키스페이스 __02 P2P __03 가십과 결함 발견 __04 안티엔트로피와 읽기 복구 __05 멤테이블, SSTable, 커밋 로그 __06 힌트 핸드오프 __07 컴팩션 __08 블룸 필터 __09 툼스톤 __10 SEDA __11 매니저와 서비스 __12 요약 6장. 카산드라 설정 __01 키스페이스 __02 복제본 __03 복제본 배치 전략 __04 복제 계수 __05 파티셔너 __06 스니치 __07 클러스터 생성하기 __08 동적 링 참여 __09 보안 __10 기타 도구 __11 요약 7장. 데이터 읽기와 쓰기 __01 RDBMS와 카산드라의 쿼리 차이 __02 기본 쓰기 속성 __03 일관성 레벨 __04 기본 읽기 속성 __05 API __06 설정과 데이터 삽입 __07 간단한 get 사용법 __08 값의 일부를 시딩하기 __09 슬라이스 조건자 __10 범위 슬라이스 가져오기 __11 멀티겟 슬라이스 __12 삭제 __13 배치 뮤테이트 __14 프로그램으로 키스페이스 컬럼 패밀리 정의하기 __15 요약 8장. 클라이언트 __01 클라이언트 기본 API __02 스리프트 __03 에이브로 __04 기트 요약 __05 클라이언트 노드 연결하기 __06 카산드라 웹 콘솔 __07 헥터 __08 HectorSharp __09 Chirper __10 Chiton __11 Pelops __12 Kundera __13 Fauna __14 요약 9장. 모니터링 __01 로깅 __02 JMX와 MBean 개요 __03 JMX로 카산드라와 상호작용하기 __04 카산드라의 MBean __05 사용자 정의 카산드라 MBean __06 런타임 분석 도구 __07 상태 검사 __08 요약 10장. 유지보수 __01 링 정보 __02 통계 정보 __03 기본 유지보수 __04 스냅샷 __05 클러스터의 로드밸런싱 __06 노드 해제 __07 노드 업데이트 __08 요약 11장. 성능 최적화 __01 데이터 스토리지 __02 리플라이 타임아웃 __03 커밋 로그 __04 멤테이블 __05 동시성 __06 캐시 __07 버퍼 크기 __08 파이썬 스트레스 테스트 ____파이썬 스리프트 인터페이스 생성 ____파이썬 스트레스 테스트 실행 __09 시작과 JVM 설정 ____JVM 최적화 __10 요약 12장. 하둡과 통합하기 __01 하둡이란? __02 MapReduce 사용하기 __03 단어 세기 예제 __04 맵리듀스 관련 도구 __05 클러스터 설정 __06 사용 사례 __07 요약 부록A 비관계형 분야의 고찰 __01 비관계형 데이터베이스 __02 객체 데이터베이스 __03 XML 데이터베이스 __04 문서 지향 데이터베이스 __05 그래프 데이터베이스 __06 키-값 저장소와 분산 해시테이블 __07 컬럼형 데이터베이스 __08 요약 부록B 카산드라로 만드는 블로그 __카테고리 테스트 메서드 __포스트 테스트 메서드 __코멘트 테스트 메서드 |
|
최근 국내에서도 대용량 데이터를 위한 비관계형 데이터베이스를 일컫는 NoSQL 또는 빅 데이터 솔루션이 많이 도입되고 있다. 국내의 대용량 처리를 위한 솔루션으로 하둡을 많이 사용하는 경향이 있지만, Map/Reduce에 기반을 둔 비실시간의 데이터 처리보다는 하둡 만큼의 데이터 처리 능력과 실시간 처리를 할 수 있는 솔루션이 바로 카산드라다. 그리고 하둡이나 카산드라와 같은 NoSQL이나 빅 데이터 솔루션 대부분은 엄청난 양의 데이터 처리에 분산 기술을 이용해 용량을 확장해 나가는 특징이 있다.
카산드라가 다른 NoSQL 또는 빅 데이터 솔루션과 비교해서 가장 큰 장점으로 말할 수 있는 것이 바로 P2P 기반으로 클러스터를 구성한다는 것이다. 이 구조는 마스터-슬레이브 구조보다 월등한 네트워크 파티션 허용을 통해서 매우 높은 가용성을 확보할 수 있다. 더불어 카산드라에서 기본적으로 제공하는 도구를 사용해서 관리할 수 있고, 자바에서 기본으로 지원하는 JMX를 이용해서 모니터링할 수 있는 기능도 제공하고 있다. 역자가 작업하는 동안에 카산드라는 여러 번의 버전 릴리스를 해서, 새로운 버전의 코드를 확인하는 데 애를 먹었을 정도로 활발하게 프로젝트가 진행 중인 것이 또 다른 강점이다. 그리고 역자가 있는 미국의 샌프란시스코에서는 카산드라만의 콘퍼런스와 유저 그룹미팅이 종종 열리고 있어 인기를 실감할 수 있다. 또한, 카산드라의 저변을 확대하고 수익을 창출하기 위한 회사가 존재한다는 것이 카산드라의 인기를 방증한다고 볼 수 있겠다. 카산드라는 페이스북에서 약 1,000대 이상의 서버로 클러스터가 구성된 최대의 레퍼런스가 있다. 1,000대 이상의 서버로 구성할 수 있는 클러스터 시스템이라면 독자가 고려하고 있는 용량, 로드가 어느 정도인지는 모르겠지만, 고려하는 용량, 로드는 카산드라가 충분히 처리할 수 있다고 확신한다. 또한, 기존 RDBMS에서 카산드라로 마이그레이션한 서비스들도 인터넷에서 쉽게 찾아볼 수 있다. 마이그레이션을 진행했던 엔지니어들의 인터뷰에서도 굉장히 만족스러운 결과였다고 찬사를 보내는 영상을 쉽게 찾아볼 수 있다. 역자도 카산드라를 사용해서 프로젝트를 진행했었고, 진행할 예정인 프로젝트에도 카산드라를 사용할 예정이다. 카산드라를 이용해서 런타임에 스키마를 바꿔가면서 시스템을 업그레이드하는 것은 여태까지 경험해 보진 못한 "다이나믹한 시스템이란 바로 이런 것이다"라는 것을 느끼기에 충분할 것이다. 마지막으로 이런 멋진 기회를 주신 한빛미디어의 한동훈 님과 항상 함께하는 가족에게 감사드리고, ZeroDesktop에서 고객에게 가치를 주기 위해 고생하는 동료에게도 감사드린다. 옮긴이_ 송무찬 최근 많은 세미나와 매체를 통해서 NoSQL이 전파되고, 대형 프로젝트에 적용되어 놀라운(?) 결과물을 보여주는 기사를 쉽게 접할 수 있다. 개인마다 이해 정도는 다를 수 있지만, 새로운 기술 영역을 만들어 가고 있다는 점을 부정할 수는 없다. 하지만, NoSQL이 기존의 RDBMS를 대체할 것이라는 일부 기사는 동의하기 어렵고, 양 기술이 서로의 장단점을 보완하면서 성장할 것이라는 것이 개인적인 판단이다. 그렇기 때문에 기존 RDBMS와 새로운 NoSQL 제품(Cassandra, CouchDB, MongoDB 등)에 대해 지속적인 학습이 필요하고, 이를 바탕으로 각 제품이 지닌 장점을 조합해 대용량 데이터를 처리하면서 안정적인 성능 performance 과 확장성 scalability 을 가진 서비스 를 개발할 수 있어야 한다. 이러한 요구는 개발자 측면에서 서비스(or 제품)를 개발하기 위한 학습 및 고려해야 할 내용이 이전보다 더욱 많아졌고, 업무가 더욱 힘들어 졌다는 느낌을 받게 한다. 하지만, 이 부분에 대해 걱정하지 말아라. 이 책을 읽고 나면 개발자들이 RDBMS을 통해 작업하면서 느꼈던 답답한 부분이 해결될 것이다. NoSQL은 매우 직관적이고, 시스템적인 확장 및 분산, 그리고 개발하기 편한 시스템이라는 것을 느끼게 될 것이다. NoSQL은 저장 방식에 따라 다양하게 분류된다. 저장 방식을 나열해보면, 키-값 저장, 빅테이블 저장, 문서 저장, 그래프 저장 방식 등이 있다. 카산드라는 키-값 저장에 해당된다. 개인적으로 2009년 영국에서 근무할 때 카산드라를 접했을 때, 2000년 초반 금융 인프라시스템 시스템 개발 시 경험했던 HDB와 개념이 유사하다고 생각했다. 특히, 테이블 간의 조인 Join을 지원하지 않는 점, 데이터 검색과 확장성이 특히 뛰어난 부분이 더욱 유사하다고 생각했다. 근래 대용량 데이터 처리를 고려하는 프로젝트에서는 반드시 NoSQL을 고려하게 된다. 하지만 국내에는 아직까지 국내 개발자가 저술한 전문서를 찾기가 어려워 원서를 찾게 된다. 많은 개발자가 프로젝트의 시스템 아키텍처를 고려하면서 NoSQL 개념과 카산드라에 대한 한글 서적을 찾아보지만, 현재까지는 매우 짧은 글만이 웹에서 발견되고, 책으로는 아직 없었다. 나 역시 이러한 부분 때문에 많은 고생을 했기에 개발자들이 학습하는데 도움을 주고자 이번 번역 작업에 참여했다(개인적으로, 몇 번의 책 번역 작업 중, 이번이 가장 힘들었다. NoSQL이라는 개념이 새로웠고, 번역 작업 중 지속적인 버전업(0.6->0.7->0.8)에 따른 원문과 코드의 반복 수정이 힘들었다). 위에서 짧게 언급했듯이 처음 접하는 몇몇 분들은 개념이 너무 매력적이지만, 과연 기존 RDBMS를 넘어 대신 할 수 있을까? 하는 의구심이 있을 수 있다. 하지만, 지금 그러한 우려는 할 필요가 없다. NoSQL의 사용 용도가 RDBMS와는 확연히 다르기 때문이다. 지막으로 같이 작업했던 무찬이, 영국/미국에서 같이 일을 동료(랜스, 윤정, 리키, 마이클, 아담, 지영, 캐시), 그리고 한국의 김현석 실장님, 이상오 팀장님, 홍영, 호준, 도훈, 현도, 진성 팀원 분들에게 감사의 마음을 전하고 싶습니다. 특히, 많은 조언을 해주신 태윤정님에게 다시 한번 감사의 마음을 전합니다. 옮긴이_ 최원우 ---옮긴이 서문 중에서 |
|
트위터, 페이스북처럼 수억 명의 사용자가 사용하는 대규모 웹 시스템을 위한 카산드라 데이터베이스 입문서
어떤 독자를 위한 책인가? SNS를 비롯한 대규모 웹 서비스 개발이 필요한 독자 스마트폰 서비스처럼 대규모 서비스 제공이 필요한 개발자 대용량 데이터베이스를 다뤄야 하는 기업체 전산실 대규모 서비스를 위한 새로운 해법, NoSQL 습관처럼 데이터베이스라면 관계형 데이터베이스를 사용한 것이 아닐까? 관계형 데이터베이스로는 하루 5억명 이상이 사용하는 서비스를 개발할 수 없다. 대규모 서비스 개발을 위해 등장한 것이 비관계형 데이터베이스다. 비관계형 데이터베이스 솔루션 중에 카산드라는 뛰어난 확장성을 자랑한다. 페이스북에서 개발해서 오픈 소스로 공개되었으며, 현재 다양한 웹 서비스나 SNS에서는 카산드라를 사용하고 있다. 그러나 관계형 데이터베이스라는 관성과 타성에 젖어 있는 사람들은 카산드라가 제시하는 비전을 믿지 않는다. 그리스 신화에서 카산드라는 현실을 정확하게 예언하는 예언자지만, 저주를 받아 아무도 그 말을 믿지 않는다. 그리하여 자신의 도시 트로이의 멸망을 예언하지만, 아무도 믿지 않는다. 지금 카산드라가 처한 현실을 정확하게 설명하는 이름이 아닐까? 이제 여러분도 카산드라의 예언이 진실인지 아닌지 확인해보자. 대규모 웹을 위한 분산 데이터베이스 시스템을 무한히 확장해 갈 수 있다면 데이터로 무슨 일을 할 수 있을까? 아파치 카산드라를 이용한다면 여러 데이터 센터에 흩어져 있는 수백 테라에 이르는 데이터도 처리할 수 있다. 페이스북, 트위터, 그 외 대용량 데이터를 처리하는 회사라면 관심 가는 능력이 아닐까? 『카산드라 완벽 가이드』는 카산드라 데이터베이스 관리 시스템을 이용하는 방법, 실제 서비스 환경에서 사용할 수 있는 실용적인 예제와 기술을 소개한다. 카산드라가 사용하는 비관계형 디자인의 장점과 데이터 모델링에 대해 자세하게 설명한다. 대용량 데이터 처리를 위한 데이터베이스 확장 문제를 해결하거나 애플리케이션의 경쟁력을 얻고 싶은 개발자, DBA, 애플리케이션 아키텍트라면 카산드라의 속도와 유연성이 어떻게 도움이 되는지 살펴보기 바란다. 【주요내용】 o 카산드라의 컬럼 지향 구조 이해하기 o 카산드라 데이터 처리 o 클러스터에 노드를 추가하거나 제거하기 o 관계형 모델에서 카산드라 데이터 모델로 변경하기 o 클러스터의 사용량, 메모리 패턴을 모니터링하기 o 성능 최적화를 위한 메모리 설정, 데이터 스토리지, 캐시 구성 |