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

한빛미디어

독자리뷰

카산드라가 제일 어려웠어요!

sear***

|

2011-12-12

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

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

  • 저자 : 에벤 휴잇
  • 번역 : 송무찬 , 최원우
  • 출간 : 2011-10-20
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여년간 관계형 데이터베이스가 시장의 주도권을 잡았고 이제 비관계형 데이터베이스가 시장을 잠식해 가고 있다고 해서 관계형 데이터베이스가 비관계형 데이터베이스에 완전하게 시장을 잠식 당할거진 않을 거라고 생각된다.

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

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

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

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

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