Cassandra-데이터 모델

Cassandra의 데이터 모델은 RDBMS에서 일반적으로 볼 수있는 것과 크게 다릅니다. 이 장에서는 Cassandra가 데이터를 저장하는 방법에 대한 개요를 제공합니다.

클러스터

Cassandra 데이터베이스는 함께 작동하는 여러 시스템에 분산되어 있습니다. 가장 바깥 쪽 컨테이너를 클러스터라고합니다. 장애 처리를 위해 모든 노드에는 복제본이 포함되어 있으며 장애 발생시 복제본이 책임을집니다. Cassandra는 클러스터의 노드를 링 형식으로 정렬하고 데이터를 할당합니다.

키 스페이스

Keyspace는 Cassandra의 데이터에 대한 가장 바깥 쪽 컨테이너입니다. Cassandra의 Keyspace의 기본 속성은 다음과 같습니다.

  • Replication factor − 동일한 데이터의 사본을 수신 할 클러스터의 머신 수입니다.

  • Replica placement strategy-반지에 복제품을 배치하는 것은 전략 일뿐입니다. 우리는 다음과 같은 전략을 가지고 있습니다.simple strategy (랙 인식 전략), old network topology strategy (랙 인식 전략) 및 network topology strategy (데이터 센터 공유 전략).

  • Column families− 키 스페이스는 하나 이상의 컬럼 패밀리 목록을위한 컨테이너입니다. 차례로 column family는 행 모음의 컨테이너입니다. 각 행에는 정렬 된 열이 있습니다. 열 그룹은 데이터 구조를 나타냅니다. 각 키 스페이스에는 하나 이상의 컬럼 패밀리가 있습니다.

키 스페이스를 생성하는 구문은 다음과 같습니다.

CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

다음 그림은 키 스페이스의 개략도를 보여줍니다.

컬럼 패밀리

column family는 정렬 된 행 모음에 대한 컨테이너입니다. 차례로 각 행은 정렬 된 열 모음입니다. 다음 표는 관계형 데이터베이스 테이블에서 컬럼 패밀리를 구별하는 점을 나열합니다.

관계형 테이블 카산드라 컬럼 패밀리
관계형 모델의 스키마가 수정되었습니다. 데이터를 삽입하는 동안 테이블에 대해 특정 열을 정의하면 모든 행에서 모든 열이 적어도 null 값으로 채워 져야합니다. Cassandra에서는 열 패밀리가 정의되어 있지만 열은 정의되어 있지 않습니다. 언제든지 모든 column family에 원하는 열을 자유롭게 추가 할 수 있습니다.
관계형 테이블은 열만 정의하고 사용자는 테이블을 값으로 채 웁니다. Cassandra에서 테이블은 열을 포함하거나 수퍼 열 패밀리로 정의 할 수 있습니다.

Cassandra 컬럼 패밀리는 다음과 같은 속성을 가지고 있습니다.

  • keys_cached − SSTable 당 캐시 할 위치 수를 나타냅니다.

  • rows_cached − 전체 내용이 메모리에 캐시 될 행 수를 나타냅니다.

  • preload_row_cache − 행 캐시를 미리 채울 것인지 여부를 지정합니다.

Note − column family의 스키마가 고정되지 않은 관계형 테이블과 달리 Cassandra는 개별 행에 모든 열을 포함하도록 강제하지 않습니다.

다음 그림은 Cassandra 컬럼 패밀리의 예를 보여줍니다.

기둥

열은 키 또는 열 이름, 값 및 타임 스탬프의 세 가지 값이있는 Cassandra의 기본 데이터 구조입니다. 아래는 기둥의 구조입니다.

SuperColumn

수퍼 열은 특수 열이므로 키-값 쌍이기도합니다. 그러나 수퍼 열은 하위 열의 맵을 저장합니다.

일반적으로 컬럼 패밀리는 개별 파일의 디스크에 저장됩니다. 따라서 성능을 최적화하기 위해서는 질의 할 가능성이 높은 컬럼을 동일한 컬럼 군에 보관하는 것이 중요하며, 여기서는 수퍼 컬럼이 도움이 될 수 있습니다. 다음은 수퍼 컬럼의 구조입니다.

Cassandra 및 RDBMS의 데이터 모델

다음 표는 Cassandra의 데이터 모델과 RDBMS의 데이터 모델을 구별하는 요점을 나열합니다.

RDBMS 카산드라
RDBMS는 구조화 된 데이터를 다룹니다. Cassandra는 비정형 데이터를 처리합니다.
고정 된 스키마가 있습니다. Cassandra는 유연한 스키마를 가지고 있습니다.
RDBMS에서 테이블은 배열의 배열입니다. (행 x 열) Cassandra에서 테이블은 "중첩 된 키-값 쌍"의 목록입니다. (ROW x COLUMN 키 x COLUMN 값)
데이터베이스는 애플리케이션에 해당하는 데이터를 포함하는 가장 바깥 쪽 컨테이너입니다. 키 스페이스는 애플리케이션에 해당하는 데이터를 포함하는 가장 바깥 쪽 컨테이너입니다.
테이블은 데이터베이스의 엔티티입니다. 테이블 또는 컬럼 패밀리는 키 스페이스의 엔티티입니다.
행은 RDBMS의 개별 레코드입니다. Row는 Cassandra의 복제 단위입니다.
열은 관계의 속성을 나타냅니다. Column은 Cassandra의 저장 단위입니다.
RDBMS는 외래 키, 조인 개념을 지원합니다. 관계는 컬렉션을 사용하여 표현됩니다.