Home
Database
카산드라 학습 - 기초 및 특징 - 첫 번째 (Apache Cassandra Database)
devfoxstar
devfoxstar
June 24, 2022
2 min

Table Of Contents

01
설계 목표
02
기본 용어
03
분산과 확장
04
데이터 분산
05
데이터 복제
06
데이터 일관성
07
유연한 환경 구성

Apache Cassandra는 확장성과 고가용성을 보장하는 오픈소스 NoSQL 분산 데이터베이스입니다.

분산과 확장은 카산드라의 핵심 기능입니다.
유연하게 분산과 확장이 가능하고, 이를 통해 데이터 성능을 향상 시키고 손실을 방지합니다.


설계 목표

  • 전체 다중 마스터 데이터베이스 복제
  • 짧은 대기 시간의 글로벌 가용성
  • 상용 하드웨어에서 확장
  • 프로세서가 추가될 때마다 선형 처리량 증가
  • 온라인 로드 밸런싱 및 클러스터 성장
  • 분할된 키 지향 쿼리
  • 유연한 스키마

기본 용어

  • DataCenter
    복제 및 워크로드 분리를 위해 클러스터 내에서 함께 구성된 관련 노드 그룹입니다.

  • Cluster
    가십 프로토콜을 사용하여 메시지를 교환하는 둘 이상의 데이터베이스 인스턴스입니다.

  • Node
    데이터가 모여 있는 단일 인스턴스를 노드라고 합니다.

  • Keyspace
    데이터 센터별로 데이터 세트가 복제되는 방식을 정의합니다.
    키스페이스는 테이블을 포함합니다.

  • Table
    파티션 모음에 대한 형식화된 스키마를 정의합니다.
    테이블은 열과 행이 있는 파티션을 포함합니다.

  • Parition
    모든 행이 저장된 클러스터의 노드를 식별하기 위해 반드시 있어야 하는 기본 키의 필수 부분을 정의합니다.
    모든 성능 쿼리는 쿼리에 파티션 키를 제공합니다.

  • Row
    파티션 키로 구성된 고유한 기본 키로 식별되는 열 모음과 선택적으로 추가 클러스터링 키가 포함됩니다.

  • Column
    행에 속하는 유형의 단일 데이터로, Name + Value로 구성됩니다.

  • CQL
    Cassandra Query Language로 데이터베이스 스키마를 생성하고 데이터에 액세스합니다.
    SQL과 유사한 언어로 개발자는 CQL을 통해 노드 클러스터에 데이터를 구성합니다.

Apache Cassandra Diagram
Apache Cassandra Diagram

Apache Cassandra Data Structure
Apache Cassandra Data Structure

다음으로 카산드라의 특징을 알아보겠습니다.


분산과 확장

카산드라는 Node를 통해서 분산과 확장이 이루어 집니다.
서비스 상황에 맞게 다운타임 없이 언제든 노드를 확장하거나 축소할 수 있습니다.

노드는 단일 인스턴스로 P2P 통신 프로세스인 Gossip Protocol을 통해 다른 노드와 통신합니다.

또한 노드는 선형 확장으로 무한대로 적용이 가능합니다.
그래서 많은 글로벌 IT 서비스 기업들이 카산드라를 선택하고 있습니다.

실제로 애플은 오랜 기간 카산드라를 사용했습니다.
알려진 바로 애플은 10만 개 이상의 노드를 실행 중입니다.

Apache Cassandra Ring Diagram
Apache Cassandra Ring Diagram


데이터 분산

카산드라는 Partition을 통해 데이터를 분산합니다.
노드는 특정 토큰 범위를 가지는 토큰 세트가 있습니다.

그리고 모든 테이블은 Partition Key를 지정합니다.
파티션 키는 Hashing Function을 통해 해쉬 값으로 변환됩니다.

이 해쉬 값이 바로 토큰이 되고, 토큰 범위에 맞는 노드로 데이터가 배포됩니다.

Apache Cassandra Partition Diagram
Apache Cassandra Partition Diagram


데이터 복제

카산드라 데이터베이스는 마스터리스 아키텍처입니다.
그래서 모든 노드는 다른 노드와 똑같은 기능을 제공할 수 있습니다.

그리고 Replication 설정을 통해 데이터를 여러 노드에 복제할 수 있습니다.
Replication Factor(RF) 값으로 복제 개수를 정할 수 있습니다.

Apache Cassandra Replication Diagram
Apache Cassandra Replication Diagram

데이터 복제는 안정성과 내결함성을 보장합니다.
그래서 일부 노드에 장애가 발생해도 안정적인 서비스 운영이 가능합니다.

만약 세 개의 복제본 중에 하나의 복제본에 장애가 발생했습니다.
그러면 두 개의 복제본을 통해 서비스가 이루어 지고, 장애 복제본이 복구되면 다시 데이터가 연동됩니다.

모든 것은 자동으로 이루어 집니다.

Apache Cassandra Error Diagram
Apache Cassandra Error Diagram

데이터 복제는 성능상의 이점도 있습니다.

하나의 데이터 센터의 데이터는 다른 데이터 센터로 자동 복제됩니다.
멀티 인스턴스를 지원하고, 데이터 로드 밸런싱이 가능하기 때문에 빠른 데이터 액세스가 가능합니다.

Apache Cassandra DataCenter Diagram
Apache Cassandra DataCenter Diagram


데이터 일관성

CAP일관성(Consistency), 가용성(Availability), 분할 용인(Partition tolerance)이라는 세 가지 조건을 의미합니다.
분산 시스템에서는 세 가지 조건을 모두 만족할 수 없기 때문에, 보통 두 가지를 우선합니다.

Apache Cassandra CAP Diagram
Apache Cassandra CAP Diagram

카산드라는 AP(Available Parition-tolerant) 분산 시스템입니다.
그래서 데이터 일관성을 유지하기 위해, 쿼리별로 일관성 수준(CL)을 구성할 수 있습니다.

만약 데이터가 3개의 노드로 복제됐고 CL 값이 QUORUM 이라면, 과반수인 2개(RF/2 + 1)의 노드에서 승인을 받아야 합니다.

Apache Cassandra CL Diagram
Apache Cassandra CL Diagram


유연한 환경 구성

카산드라는 온프레미스, 클라우드 등 어느 환경에 배포해도 간편하게 연동이 가능합니다.
그래서 유연하고 유기적인 시스템 구성이 가능합니다.

Apache Cassandra Server Diagram
Apache Cassandra Server Diagram


Tags

#Database#DB#데이터베이스

Related Posts

Redis CLI, GUI (REDISINSIGHT)
March 11, 2023
1 min
© 2024, All Rights Reserved.

Quick Links

About Me

Media