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는 외래 키, 조인 개념을 지원합니다. | 관계는 컬렉션을 사용하여 표현됩니다. |