Cassandra

Ji·2022년 4월 8일
0

카산드라

  • 자유 오픈 소스 분산형 노에스큐엘(NoSQL) 데이터베이스 관리 시스템(DBMS)
  • 단일 장애 점 없이 고성능을 제공하면서 수많은 서버 간의 대용량의 데이터를 관리하기 위해 설계되었음
  • Amazon의 Dynamo 분산 스토리지 및 복제 기술과 Google의 Bigtable 데이터 및 스토리지 엔진 모델이 결합된 모델

RDBMS? NOSQL?

  • 데이터의 읽기 쓰기 등 퍼포먼스에 치중한다면 NOSQL, 트랜잭션과 같은 정합성 위주의 시스템을 사용한다면 RDBMS가 유리함.
  • RDBMS 컬럼 변경이 용이하지 않고, NOSQL은 컬럼 변경이 용이
  • NOSQL의 경우 sorting, join, grouping, range query, index 작업에 매우 취약함.
  • RDBMS 학습 비용 x / NOSQL 학습 비용 소요 (운영시 어떤 장애상황이 생길지 예측이 어려움)
    NOSQL 가장 큰 장점들 : Scale-Out, RDBMS보다 상대적으로 빠른 쓰기/읽기

카산드라의 특징

  • 여러개의 데이터 베이스가 복제된다. (마스터기준)
  • 짧은 지연 시간
  • 프로세스가 추가될 때마다 선형 처리량 증가
  • 온라인 부하분산
  • 분할된 키 지향 쿼리
  • 유연한 스키마
  • CQL (Cassandra Query Language) 사용
  • Schemaless (Schema-free)

장점

분산화와 집중화

  • 카산드라는 분산형이므로 여러 머신에서 동작하지만, 사용자에게는 통합된 하나로 보임.
  • 다중머신에서 운영해야 함. 물리적으로 떨어져 있는 데이터센서 간에도 단일 카산드라 클러스터 운영 가능

  • 카산드라는 "비집중화"이므로 모든 노드가 같다. 그러므로 조직화 연산을 수행하는 마스터가 없다. 대신 카산드라는 피투피(P2P) 프로토콜이며 활성 노드와 비활성 노드의 목록을 동기화하고 유지관리

탄력적인 확장성

  • 약간의 성능 저하를 동반하지만, 계속해서 더 많은 요청을 처리할 수 있는 시스템의 아키텍처 특징

  • 수평 확장은 데이터 전체나 일부를 갖는 머신을 추가해서 요청처리를 여러 머신이 나눠 갖는 방법. 탄력적인 확장성(elastic scalability)은 수평 확장의 특별한 속성으로, 클러스터의 중단 없이 규모를 확대하거나 축소할 수 있다는 뜻

고가용성과 결함 허용

  • 시스템의 가용성은 요청을 수행하는 능력으로 측정. 고가용성 시스템을 구축하려면 일반적으로 다중네트워크로 구성된 컴퓨터, 클러스터에서 운용할 수 있는 소프트웨어, 노드 장애를 인식하고 시스템의 다른 파티션으로 요청을 대체 할 수 있는 기능

  • 클러스터에서 시스템을 중단하지 않고 장애가 발생한 노드를 교체 할 수 있고, 다중 데이터 센터에 데이터를 복제해 로컬 성능을 개선할 수 있음. 또한 한 데이터 센터가 화재나 홍수 같은 치명적인 재앙을 당하더라도 다중 데이터 센터에 데이터를 복제해서 서비스 중단을 예방

카산드라 단점

높은 진입장벽

  • 칼럼형 데이터베이스로 로우형 데이터베이스인 관계형 데이터베이스와는 다른 생소한 개념

복잡한 조건의 검색 불가

  • 많은 사용자를 대상으로 대량 데이터를 다루는 서비스가 아닐 경우 쓸 필요 X

  • 로우 키와 칼럼 두가지에 대한 인덱스만 가능. 따라서 데이터는 대량이지만 검색 조건은 단순한 서비스에 적합

  • Join이나 Transaction을 지원하지 않음. Index 등의 검색을 위한 기능도 매우 단출

데이터 입력시 자동화 처리의 어려움

  • 데이터에 대한 동시 갱신 요청이 발생할 가능성이 높거나 자동화한 트랜잭션이 필요한 서비스에서는 다른 데이터베이스를 고려하는게 좋음.

카산드라 데이터 구조

  • 스키마 선택적 열 지향 데이터 모델
  • 카산드라는 데이터를 노드에 저장 (직접 저장되는 것이 아닌, 테이블이라는 논리적 저장소가 필요함)
  • 노드의 연결 구조를 클러스터 or 링이라 함.
  • 노드는 키스페이스(Keyspace)를 포함하며 논리적 저장소인 테이블은 키스페이스에 포함. 카산드라에서는 테이블 생성 전에 반드시 키스페이스를 생성해야 함.
  • 키스페이스 생성 시 데이터를 몇 개의 노드에 복제할지를 결정하는데 이를 Replication Factor (RF)라 함. (ex) RF가 3으로 선언되면 저장된 인접한 두 개의 노드에 데이터를 복제.

출처
http://wiki.hash.kr/index.php/%EC%B9%B4%EC%82%B0%EB%93%9C%EB%9D%BC#cite_note-.EA.B0.80-1
https://goyunji.tistory.com/95
https://brocess.tistory.com/115

profile
공부방

0개의 댓글