메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

카산드라 완벽 가이드: 페이스북, 트위터를 지탱하는 기술, NoSQL

카산드라 완벽 가이드: 페이스북, 트위터를 지탱하는 기술, NoSQL

한빛미디어

번역서

절판

  • 저자 : 에벤 휴잇
  • 번역 : 송무찬 , 최원우
  • 출간 : 2011-10-20
  • 페이지 : 436 쪽
  • ISBN : 9788979148527
  • 물류코드 :1852
  • 초급 초중급 중급 중고급 고급
3.3점 (3명)
좋아요 : 18

대규모 웹을 위한 분산 데이터베이스

시스템을 무한히 확장해 갈 수 있다면 데이터로 무슨 일을 할 수 있을까? 아파치 카산드라를 이용한다면 여러 데이터 센터에 흩어져 있는 수백 테라에 있는 데이터도 처리할 수 있다. 페이스북, 트위터, 그 외 대용량 데이터를 처리하는 회사라면 관심 가는 능력이 아닐까? 『카산드라 완벽 가이드』는 카산드라 데이터베이스 관리 시스템을 이용하는 방법, 실제 서비스 환경에서 사용할 수 있는 실용적인 예제와 기술을 소개한다.

카산드라가 사용하는 비관계형 디자인의 장점과 데이터 모델링에 대해 자세하게 설명한다. 대용량 데이터 처리를 위한 데이터베이스 확장 문제를 해결하거나 애플리케이션의 경쟁력을 얻고 싶은 개발자, DBA, 애플리케이션 아키텍트라면 카산드라의 속도와 유연성이 어떻게 도움이 되는지 살펴보기 바란다.

주요내용

  • 카산드라의 컬럼 지향 구조 이해하기
  • 카산드라 데이터 처리
  • 클러스터에 노드를 추가하거나 제거하기
  • 관계형 모델에서 카산드라 데이터 모델로 변경하기
  • 클러스터의 사용량, 메모리 패턴을 모니터링하기
  • 성능 최적화를 위한 메모리 설정, 데이터 스토리지, 캐시 구성

추천의 글

카산드라를 만든 팀과 함께 일하게 되어 영광입니다. 최신의 연구를 동작하는 코드로 만들어내는 뛰어난 능력을 갖고 있습니다. 에번 휴잇은 복잡한 분산 시스템을 독자가 쉽게 읽을 수 있는 실용적인 가이드로 만들어냈습니다. - 제프 해머바처, Chief Scientist, Cloudera

에벤 휴잇 저자

에벤 휴잇

글로벌 기업에서 애플리케이션 아키텍처의 디렉터로 일하고 있으며, 시스템 전략과 디자인을 책임지고 있다. 아파치 카산드라 프로젝트의 문서화에 기여했으며, 『Java SOA Cookbook』(O’Reilly, 2009)을 비롯해 몇 권의 기술 서적을 집필했다.

송무찬 역자

송무찬

블로그 http://www.sjava.net
한양대학교 컴퓨터 공학과를 석사로 졸업하고 네오위즈, 엔씨소프트 등에서 8년간 서비스 개발을 했다. 카산드라를 기반으로 백 엔드 시스템들을 개발했었고, 현재는 실리콘 밸리에 있는 가상 데스크톱/클라우드 서비스 회사인 ZeroDesktop에서 근무하고 있다.

최원우 역자

최원우

블로그 http://choiwonwoo.tistory.com
현재까지 10년 이상 개발자로서 노력하고 있으며, 금융/증권/보험/국가기관/게임 회사의 다양한 프로젝트에 참여한 경험이 있다. 대학원에서 보안(암호학)을 전공하고 보안 회사에서 다수의 보안 제품(인증/권한관리/PKI/PMI/SSO/EAM등) 개발에 참여했다. 최근 3년여 동안 해외(영국, 미국)에서 근무했으며, 올해 4월 한국으로 돌아왔다. 현재는 엔씨소프트에서 개발자로 근무하고 있다.

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 이라는것을 들어보았을 것입니다.

아파치 카산드라는 오픈 소스, 분산된, 비집중화된,가용성, 빅데이터 관점에서의 공개 프로젝트로 웹에서 매우 유명한 몇몇 사이트에서 사용하고 있다.

전반적으로 번역본의 특징이 많이 느껴지며, 대학교제보다는 어느정도의 아니 그 이상의 지식이 있어야만 이해할 수 있는 수준이며, 생소한 용어들도 많이 나옵니다.
키스페이스, 컬럼 패밀리, 가십, SSTable, SEDA 등 책에서 설명이 나오긴 하지만, 카산드라 고유의 단어로 사용되기도 하고, 많은 지적 수준을 요구하기도 합니다.

또한 기본적으로 책에서 설명하는 예제코드가 자바로 구현되어 있기 때문에 자바의 상식과 웹과 네트워크 개념 숙지도 필요합니다.
물론 DB에 대해 특히 저장구조에 대한 이해야 필요합니다.
전반부에는 쉽게 개요만 큰 그림에 대한 설명은 잘 되있었습니다. CAP의 준수에 대해서는 상세히 설명은 되어 있었습니다.
(물론 3가지는 다 만족하기 어려우며 2가지는 만족한다.는 주제가 확 보이지는 않았지만...)
그리고 예제는 따라하기 식이 아니여서 많이 어렵지 않았는가 생각합니다..
처음 카산드라를 접하는 사람에게는 데이터를 기록하고 읽고 하는 모든 부분이 코드로 작성되기에 처음 이해할 때 어렵게 느꼈던 부분일것 같습니다.

구성을 살펴보면, 1장에서는 카산드라를 전반적 소개 그리고,관계형 데이터베이스와의 차이점을 간단히 언급하며, 2장부터 본격적으로 카산드라의 설치와 데이터모델, 아키텍쳐, 데이터의 읽기/쓰기 절차 세부 유지보수 를 설명합니다. 내부 아키텍처와 예제들을 소개하며, 세부적인 기술사항들을 전개해나갑니다.
이해를 돕기 위해 본문 곳곳에 추가적인 설명이 첨부되어 있긴합니다만, 이것도 어느정도 지식이 필요합니다.
마지막으로 용어정리까지 어려워하는 독자들을 위해 최대한 이해를 돕고자 구성이 되어 있습니다.

중요한건 책을 다 읽고 숙독한다고 해서, 카산드라를 이해하기는 힘듭니다.
다만, 페이스북은 빅데이터를 처리하기 위해서 이런것들이 있구나, 유사한 Mongo DB, 하둡등도 있구나, 기존 RDB랑 다르구나! 정도만 느낄겁니다.
다만, 이 책을 덮은후 "더 알고싶구나" 하면서 느끼는 책인것은 확실한듯 합니다.

이해하기 어려운 부분이 많아 책의 구성과 특징 위주로 리뷰를 하겠습니다.

개발자라면 NoSQL이라는 말을 최근에 한번이라도 들어본 적이 있을것입니다. 카산드라는 페이스북에서 개발하여 아파치재단에 오픈소스로 공개한 프로젝트입니다.

필자가 책 초반에 예고는 했지만 생소한 용어들이 많이 나옵니다.

참고로 이 책을 읽으시는 분들은 저자의 다음 말을 기억하시는게 도움이 될 듯 합니다.

“카산드라를 배우려면 관계형 분야의 지식은 잠시 잊는 것이 효과적이다.”

이 책은 프로그래밍을 막 시작한 초급자에게는 어려울 수 있습니다. 중급자에서 상급자의 수준에 적합할 것 같습니다. 또한 기본적으로 자바언어를 다룰 수 있어야 합니다. 카산드라를 자바개발자만 사용할 수 있는 것은 아니지만, 일단은 책에서 설명하는 예제코드가 자바로 구현되어 있기 때문입니다. 책의 내용 이해를 위해 웹과 네트워크에 대한 지식도 어느 정도 숙지하고 있어야 합니다. 무엇보다도 중요한 것은 카산드라가 관계형 데이터베이스와는 전혀 다른 방식의 저장구조를 구현하고 있다는 점을 염두해두고, 카산드라에서 사용되는 새로운 용어와 개념에 익숙해져야 합니다.

1장에서는 카산드라를 소개하면서 관계형 데이터베이스에 대한 핵심적이고 날카로운 분석내용을 짧지만 명확하게 제시합니다. 관계형 데이터베이스는 트랜잭션이라는 특징이 있고, 간결하면서도 강력한 SQL을 통해 데이터를 관리할 수 있습니다. 그러나 모든 스키마를 관계형모델에 매핑할 수 있는 것은 아니며, 데이터와 사용량의 증가 시 하드웨어적인 수직적 확장으로는 처리속도가 느려지는 문제를 근본적으로 해결할 수는 없다는 점을 언급합니다.

그렇다면 카산드라는 어떤 특징이 있을까요? 오픈소스, 분산된, 비집중화된, 지속적으로 확장 가능한, 고가용성, 결함 허용, 조정가능한 일관성, 컬럼 지향 데이터베이스라는 단어로 요약할 수 있습니다.

2장부터는 카산드라의 설치와 데이터모델, 아키텍쳐, 데이터의 읽기/쓰기 방법을 상세하게 설명합니다. 예제 전문을 수록하여 꼼꼼하게 설명하거나, 메소드 하나에 각 절을 할애하여 설명하고 있습니다. 또한 카산드라의 내부동작이나 아키텍쳐를 설명하기 위해서 저자는 관계형 데이터베이스의 개념과 카산드라의 차이를 적절한 예로 제시하고 있습니다. RDB에 익숙한 독자들에게 N x M의 고정된 테이블이 아닌 데이터베이스를 설명하기 위한 최상의 방법일 것입니다.

저자는 관계형 데이터베이스 보다 카산드라와 같은 NoSQL 부류의 데이터베이스가 최선이라고 말하지 않습니다. 각각 장단점이 있기 때문에 프로젝트의 성격에 맞게 사용하라고 권유합니다.

번역본 임에도 문장이 매우 매끄럽습니다. 이해를 돕기 위해 본문 곳곳에 추가적인 설명이 첨부되어 있습니다. 카산드라의 버전업 주기가 빠르기에 책의 집필 시점에서도 버전이 업그레이드 되고 있었다고 합니다. 역자분들 또한 최신버전으로 반영하려 애쓴 모습이 보입니다. 특히 역자주를 통해 버전 간의 차이점과 어느 버전을 반영했는지 명시하고 있습니다. 가장 마음에 들었던 부분은 용어집입니다. 뒷부분에 별도로 용어집을 두어서 책에서 언급된 용어들에 대한 설명을 자세히 하고 있습니다. 참고하면서 읽으시면 좋을 듯 합니다.

IT에서 일하기 시작하면서 가장 먼저 알게된 데이터베이스는 MySQL이었다. 그런데, 이 MySQL이란 녀석은 정말 참하게도 초등학교 6년, 중 3년, 고 3년 내내 보았던 시간표 녀석과 그리도 닮아있기에, 아하~ 이런거구나 하고 아주 쉽게 개념을 익혔었다.

그로부터.. 시간이 꽤 오래 흘렀다. 지금은 소셜(사람과 사람) 지향을 뒷받침 하는 데이터베이스로서 카산드라나 MongoDB 같은 아이들이 성장했다.

책을 처음 받아보았을땐 새 1마리가 하늘을 올려다 보고 있는 모습이 인상적이기도 했고, 카산드라 참 재미있겠다 싶었는데, 재미와 별도로 제일 어려웠어요! 라는 느낌을 책을 모두 읽은 후에야 알게되었다.

우선 NoSQL이란 단어를 한번이라도 들어보지 못했다면, "그건 모에요?"라고 물어보실거고, 들어봤다면 그게 SQL이 없는 데이터베이스인가요 라고 물어보실거다.

본 책의 용어 정리에도 NoSQL이란 단어가 언급되지만, SQL을 사용하지 않는다고 해서 카산드라나 MongoDB, CouchDB 같은 것들이 모두 동일한 특징이나 행동 방법을 갖지 않고, 목표로 하고 있는 모든 것들이 다 다르다.

카산드라가 막연히 페이스북에서 사용되기에 한번 책을 보고 해보고 싶다 라고 책을 선택한다면 아마도 후회할 것이다. 어느분의 도서 리뷰처럼 이 책은 그저 카산드라의 기본정도는 알고 삽질하자이기 때문인데, 그 이유가 카산드라가 가지고 있는 고유한 특징 때문이다.

클러스터, 키스페이스, 컬럼 패밀리, 컬럼, 로우, 슈퍼컬럼, 디자인 패턴, 가십, SSTable, SEDA, 결과적 일관성, 힌트 핸드오프 등.. 아니 뭐.. 사실 이런 단어 중 한두개는 다른 곳에서 들어봤을지도 모르지만, 카산드라에서 이 모든 단어는 카산드라 고유의 단어로 사용된다.

카산드라는 대량의 데이터를 한번에 받아들이기 위해서 일관성을 다소 희생한다. 늘 그렇지만 한국 사람들 꼭 단어 하나씩 잘라먹고 이해한다. "다소" 라는 단어가 있었음에 주의해야 한다.

카산드라는 기본적으로 1대의 PC에서 동작시키는 데이터베이스라고 볼 수 없다. P2P 음악 공유 프로그램이었던 냅스터를 기억하는가? 그 냅스터에 쓰였던 P2P 기술이 분산 시스템 확인과 적용에 필요한 가십 프로토콜로 일부 가지를 치게 되었는데 이러한 가십 프로토콜로 카산드라 노드 구성을 통하여 사용하다 보니 이러한 과정에서 데이터의 유실보다 기록된 최신의 데이터보다 과거 데이터를 볼 수 있다. 뭐 이런 종류의 말로 받아들이는게 좋다.

물론 카산드라 노드 구성자가 정확성을 중요시 한다면 복제 계수, 일관성 레벨 설정을 통하여 강력한 일관성을 얻을수도 있지만, 굳이 이렇게 할 정도라면 관계형 데이터베이스를 쓰는게 나을지도 모른다.

지극히 개인적으로 C급 프로그래머로 카산드라 책의 예제 애플리케이션을 보면서 뭔 말인가 싶었는데 5장, 6장을 넘나들면서 보다보니 겨우 코드가 이해되었다. 이렇게 이해를 어렵게 만든데에는 카산드라의 스키마 설계 방식이 데이터 검색 구조에 맞게 스키마를 설계하는 것이기 때문이기도 하다.

본 도서의 원서는 카산드라 0.6 버전을 기준으로 다루고 있는데, 번역서는 0.8 버전을 기준으로 코드를 수정하거나 하는 식으로 재구성을 하거나 중간중간 해당 버전에 맞춰서 설명한 것이 좋았던 책이었다. 하지만 독자가 이 책을 읽을 시점의 카산드라 버전은 1.0 버전을 넘어섰기에 1.0 버전을 가지고 본 도서의 내용을 완전하게 실습해보기 어려울수도 있으니 카산드라의 최신 문서를 볼 필요가 있겠다.

원서보다 번역서가 최신이라는건 번역서에만 있는 장점일지도 모르겠으나, 어쩌면 단점일지도 모르겠다.

참 카산드라 자체가 JMX로 많은 부분을 감시하거나 수정할 수 있으니 자바 시스템을 관리할 줄 안다면 많은 부분에서 카산드라를 원격 조정할 수 있을 것이다.

그리고 카산드라의 태생이 분산 데이터베이스이기 때문에 하둡과의 연동에 대해서도 다루고 있으며 이러한 분산 데이터베이스에서 성능을 어떻게 최적화할 수 있는지에 대해서도 다루고 있다.

책을 보면서 한가지 아쉬웠던건 만족할만한 예제는 없었다는 것과 책에선 Thift 인터페이스와 Avro 인터페이스 모두 약간씩 다루고 있기에 향후 Avro 인터페이스로 바뀔때를 대비하여 Thift 에서 Avro 로 변경되는 마이그레이션 관련 부분이 있었다면 어땠을까 싶었다.

그리고 카산드라에서 데이터를 가져오는 부분은 있었으나 데이터를 검색하는 (어디까지나 SQL에 생각을 고정해서 본다면 where 이후 구문) 방법을 알 수 없었다(없진 않겠지만 찾지 못했다)

그리고 카산드라에서 데이터를 기록하고 읽고 하는 모든 부분이 코드로 작성되기에 처음 이해할 때 어렵게 느꼈던 부분이기 하다.

지난 40여년간 관계형 데이터베이스가 시장의 주도권을 잡았고 이제 비관계형 데이터베이스가 시장을 잠식해 가고 있다고 해서 관계형 데이터베이스가 비관계형 데이터베이스에 완전하게 시장을 잠식 당할거진 않을 거라고 생각된다.

서로 목표로 하고 있는 시장이 다르고 기능과 목표가 다르기 때문이다. 기존에 대규모 관계형 데이터베이스로 데이터의 관리와 사용에 애를 먹었던 기업이나 단체라면 카산드라가 하나의 답이 될지 모른다.

하지만 카산드라가 만병 통치약은 아니며 독자들이 이와 같은 상황에 직면했을때 카산드라가 하나의 선택 방안이 될수도 있다는 그런 것이다.

여담이지만, 카산드라가 소설가 베르베르 베르나르의 카산드라의 거울인줄 알았던 완전 무식하기만 했던 본 독자다. 아이러니하게도 카산드라의 서드파티 툴 중에서는 카산드라의 오빠인 헥터의 이름을 딴 도구도 있다는게 그나마 무식했던 본 독자를 위로한다.

좋은 책을 리뷰할 수 있는 기회를 주신 한빛미디어에게 감사한다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
카산드라 완벽 가이드: 페이스북, 트위터를 지탱하는 기술, NoSQL
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
카산드라 완벽 가이드: 페이스북, 트위터를 지탱하는 기술, NoSQL
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
카산드라 완벽 가이드: 페이스북, 트위터를 지탱하는 기술, NoSQL
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0