Cassandra

  • 페이스북에 의해 개발되어 2008년 오픈소스로 공개되었으며, 현재는 Apache Software Foundation에서 관리하고 있는 NoSQL 제품이다.
  • 페이스북과 트위터, Digg등 유명 웹서비스에서 성공적으로 사용되고 있어 그 성능과 안정성을 인정받고 있다.
  • 자바로 구현되어 있으며 Apache licence로 운영되고 있다.
  • 대용량의 데이터 트렌젝션에 대해서 고성능 처리가 가능한 시스템이고 노드를 추가함으로써 성능을 낮추지 않고 횡적으로 용량을 확장할 수 있다.
  • 컬럼 그룹(Column Group)형태의 데이터 모델을 갖고 있으며, 업데이트 내역이 일단 메모리에 캐시된 후 디스크에 쓰여지고 주기적으로 데이터 파일이 재구성된다는 점에서는 구글 빅테이블 하둡 Hbase와 유사하다.
  • Eventually Consistent 개념을 도입하여 하나의 노드에 업데이트된 내용이 바로 다른 노드로 복사되지 않고 추후 각 노드의 데이터를 종합하는 방법으로 일관성을 갖추도록 하여 Update/Write 응답시간을 줄였다는 점과, 새로운 노드를 추가하거나 기존 노드를 제거할 때 Consistent Hashing 기법을 이용해 노드 간의 데이터 재구성을 최소화 했다는 점에서는 아마존 다이나모(Amazon Dynamo)와 유사하다.
  • 즉, 카산드라는 구글의 BigTable 컬럼 기반의 데이터 모델과 아마존의 Dynamo의 분산 모델을 기반으로 하여 제작되었다.
  • 각 노드들은 Gossip 기반 알고리듬을 이용해 순수 P2P(Pure-P2P) 프로토콜로 마스터노드(Master-Node)없이 자신들의 상태를 교환하여 고장난 노드를 찾아내고 새로운 노드를 그룹에 가입시키는 방법을 사용한다. 이는 마스터노드가 존재하지 않으므로 SPoF(Single Point of Failure)가 줄어드는 모습이 된다.
  • 타 NoSQL 제품들이 데이터 일관성(Data Consistency)에 대한 보증을 하지 못하는데 반해, 카산드라는 외부 환경변수를 통해 데이터 일관성 정를 사용자가 손쉽게 설정할 수 있도록 하고 있다. 이는 용이한 확장성을 유지하면서도 사용목적에 따라 데이터 일관성 정도를 조절할 수 있어 큰 장점으로 꼽힌다.

NoSQL 성능비교

  • 2010년 6월 야후 리서치 팀(Yahoo! Reseach)은 MySQL과 대표적인 NoSQL 제품들의 성능을 비교한 클라우드 서비스 시스템 벤치마킹 결과를 정리한 논문을 발표했다.
  • 읽기 성능의 경우, 처리량이 증가할수록 MySQL 클러스터는 관계형 데이터베이스의 장점인 빠른 읽기 속도를 보이지 못하고 성능이 급격히 떨어지지만, Hbase와 카산드라는 비교적 높은 처리속도를 보여준다.
  • Update/Write에 최적화되도록 설계된 Hbase와 카산드라의 특성상 매우 높은 처리량을 가능케 하는 모습을 보여주었다. 이는 SNS나 대용량 로그처리처럼 끊임없이 새로운 데이터를 처리해야 하는 시스템에서 NoSQL의 장점이 십분 발휘될 수 있음을 말해준다.