Cassandra CQL 테이블: 생성, 변경 및 삭제 예제
⚡ 스마트 요약
Cassandra 테이블 작업에는 생성, 수정, 삭제가 포함됩니다.pingCQL을 사용하여 컬럼 패밀리를 잘라내는 방법에 대해서도 설명합니다. 이 페이지에서는 각 명령어, 데이터 분포를 결정하는 세 가지 기본 키 형식, 그리고 행을 제거하는 것과 테이블을 제거하는 것의 차이점을 설명합니다.

구문 Cassandra 질의 언어(CQL)는 다음과 유사합니다. SQL 언어.
테이블을 만드는 방법 Cassandra
컬럼 패밀리 Cassandra RDBMS 테이블과 유사합니다. 컬럼 패밀리는 데이터를 저장하는 데 사용됩니다.
'Create Table' 명령은 컬럼 패밀리를 생성하는 데 사용됩니다. Cassandra.
통사론
CREATE TABLE KeyspaceName.TableName ( ColumnName DataType, ColumnName DataType, ColumnName DataType, PRIMARY KEY (ColumnName) ) WITH PropertyName = PropertyValue;
1. 기본 키: 두 종류의가 있습니다 기본 키.
- 단일 기본 키: 단일 기본 키는 다음 구문을 통해 지정됩니다.
통사론
PRIMARY KEY (ColumnName)
단일 기본 키에는 열이 하나만 있습니다. 해당 열을 분할 키라고도 합니다. 데이터는 해당 열을 기준으로 분할됩니다. 데이터는 파티션 키를 기준으로 여러 노드에 분산됩니다.
2. 복합 기본 키: 복합 기본 키는 다음 구문으로 지정됩니다.
통사론
PRIMARY KEY (ColumnName1, ColumnName2, ...)
위 구문에서 ColumnName1은 분할 키이고 ColumnName2는 분할 키입니다. Clustering 키. 데이터는 ColumnName1을 기준으로 분할되고 데이터는 ColumnName2를 기준으로 클러스터링됩니다. Clustering은 파티션의 데이터를 정렬하는 프로세스입니다.
3. 복합 분할 키: 복합 분할 키는 다음 구문을 통해 지정됩니다.
통사론
PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)
위 구문에서 ColumnName1과 ColumnName2는 복합 파티션 키입니다. 데이터는 ColumnName1과 ColumnName2 두 열을 기준으로 파티션되고, ColumnName3을 기준으로 클러스터링됩니다. 단일 파티션에 너무 많은 데이터가 있는 경우 복합 파티션 키를 사용합니다. 복합 파티션 키는 데이터를 여러 파티션으로 나누는 데 사용됩니다.
- 조항 포함
"With 절"은 정의된 테이블에 대한 속성과 해당 값을 지정하는 데 사용됩니다. 예를 들어 압축하려는 경우 Cassandra 테이블 데이터입니다. "With 절"에서 압축 알고리즘 속성 값을 지정하여 압축 속성을 설정할 수 있습니다. 동일한 절에서 클러스터링 열의 정렬 방향을 반전시키는 CLUSTERING ORDER BY와 모든 행이 자동으로 만료되도록 하는 default_time_to_live도 설정할 수 있습니다.
예시
다음은 키스페이스 'University'에 테이블 이름 'Student'를 생성하는 'Create table' 명령의 실행입니다.
CREATE TABLE University.Student ( RollNo int, Name text, dept text, PRIMARY KEY (RollNo) );
'테이블 생성' 명령이 성공적으로 실행되면 'University' 키스페이스에 RollNo, Name, dept 열을 가진 'Student' 테이블이 생성됩니다. RollNo는 기본 키이며 파티션 키이기도 하므로 각 학생은 개별 단일 행 파티션을 차지합니다.
Cassandra 테이블 변경
테이블 변경 명령은 컬럼 삭제, 새 컬럼 추가, 컬럼 이름 변경, 컬럼 유형 변경, 테이블 속성 변경 등의 작업을 수행하는 데 사용됩니다.
통사론
'Alter Table' 명령의 구문은 다음과 같습니다.
ALTER TABLE KeyspaceName.TableName ADD ColumnName ColumnDataType; ALTER TABLE KeyspaceName.TableName DROP ColumnName; ALTER TABLE KeyspaceName.TableName RENAME ColumnName TO NewColumnName; ALTER TABLE KeyspaceName.TableName WITH PropertyName = PropertyValue;
각 양식은 별도의 명세서로 발행됩니다. 현재 두 가지 제한 사항이 적용됩니다. Cassandra 릴리스 내용: 기존 열의 데이터 형식을 더 이상 변경할 수 없으며, RENAME 작업은 기본 키의 클러스터링 열에서만 작동합니다.
예시
다음은 Student 테이블에 새 열을 추가하는 'Alter Table' 명령의 스냅샷입니다.
ALTER TABLE University.Student ADD Semester int;
'Alter Table' 명령을 성공적으로 실행하면 데이터 유형이 'int'인 새 열 'Semester'가 Student 테이블에 추가됩니다.
다음은 업데이트된 Student 테이블을 보여주는 스크린샷입니다.
Cassandra 테이블 삭제
'Drop table' 명령어는 지정된 테이블과 해당 키스페이스의 모든 데이터를 삭제합니다. 삭제하기 전에ping 테이블, Cassandra 스키마가 아닌 데이터의 스냅샷을 백업으로 가져옵니다.
통사론
DROP TABLE IF EXISTS KeyspaceName.TableName;
예시
다음은 키스페이스 'University'에서 Student 테이블을 삭제하는 실행된 명령 'Drop Table'의 스냅샷입니다.
DROP TABLE University.Student;
'Drop Table' 명령을 성공적으로 실행하면 테이블 Student가 키스페이스 University에서 삭제됩니다.
다음은 반환된 오류를 보여주는 스냅샷입니다. Cassandra 존재하지 않는 Student 테이블에 액세스하려고 할 때.
Cassandra 테이블 자르기
'Truncate table' 명령은 지정된 테이블에서 모든 데이터를 제거합니다. 데이터를 자르기 전에, Cassandra 데이터의 스냅샷을 백업으로 가져옵니다.
통사론
TRUNCATE KeyspaceName.TableName;
예시
Student 테이블에는 세 개의 레코드가 있습니다. 테이블에 있는 기록들입니다.
다음은 Student 테이블에서 모든 데이터를 제거하는 'Truncate table' 명령을 실행한 스냅샷입니다.
'Truncate Table' 명령을 성공적으로 실행하면 Student 테이블에서 모든 데이터가 제거됩니다.
다음은 Student 테이블에 레코드가 없는 데이터베이스 상태의 스냅샷입니다.
Truncate 명령은 클러스터 전체에서 동시에 실행되므로 모든 노드에 접근 가능해야 합니다. 노드 중 하나라도 다운되면 명령 실행이 실패하는데, 이는 불완전한 데이터가 남는 것을 방지하기 위한 의도적인 안전 장치입니다.
삭제 vs 잘라내기 vs 삭제 Cassandra
세 가지 명령어가 데이터를 삭제하는데, 잘못된 명령어를 선택하면 스키마가 손상되거나 성능 문제가 발생할 수 있습니다.
| Command | 제거되는 것 | 스키마가 유지됨 | 비용 |
|---|---|---|---|
| 드롭 테이블 | 모든 행과 테이블 정의 | 아니 | 저렴합니다. SSTable은 스냅샷으로 저장된 후 삭제됩니다. |
| 자르기 | 모든 행 | 가능 | 저렴하지만 모든 노드가 작동 중이어야 합니다. 묘비는 생성되지 않습니다. |
| 삭제 | 선택한 행 또는 열 | 가능 | 대규모로 진행하면 비용이 많이 듭니다. 제거할 때마다 다짐이 완료될 때까지 건너뛰어야 한다는 내용이 적힌 비석이 세워집니다. |
테이블 전체를 삭제할 때는 대량 삭제(DELETE)보다는 TRUNCATE를 사용하는 것이 실질적인 규칙입니다. 수천 개의 툼스톤(tombstone)이 해당 파티션을 이후에 읽을 때마다 속도를 저하시키기 때문입니다. 행 단위 삭제는 다음에서 다룹니다. CQL 삽입, 업데이트 및 삭제 튜토리얼.








