Amazon 키스페이스의 DDL 명령문 (데이터 정의 언어) - Amazon Keyspaces(Apache Cassandra용)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon 키스페이스의 DDL 명령문 (데이터 정의 언어)

DDL (데이터 정의 언어) 은 Amazon Keyspace (Apache Cassandra용) 에서 Keyspaces 및 테이블과 같은 데이터 구조를 관리하는 데 사용하는 CQL (카산드라 쿼리 언어) 문 세트입니다. DDL을 사용하여 이러한 데이터 구조를 생성하고, 만든 후 수정하고, 더 이상 사용하지 않을 때는 제거합니다. Amazon 키스페이스는 DDL 작업을 비동기적으로 수행합니다. 비동기 작업이 완료되었는지 확인하는 방법에 대한 자세한 내용은 단원을 참조하십시오키스페이스 및 테이블의 비동기 생성 및 삭제.

다음 DL 문이 지원됩니다.

Keyspaces

키스페이스는 하나 이상의 응용 프로그램과 관련된 관련 테이블을 그룹화합니다. 관계형 데이터베이스 관리 시스템 (RDBMS) 의 관점에서 키스페이스는 데이터베이스, 테이블스페이스 또는 유사한 구조와 거의 유사합니다.

참고

Apache Cassandra에서 키스페이스는 여러 스토리지 노드 간에 데이터가 복제되는 방식을 결정합니다. 하지만 Amazon Keyspaces는 완전 관리형 서비스이므로 스토리지 계층의 세부 정보가 사용자를 대신하여 관리됩니다. 이러한 이유로 Amazon Keyspaces의 키스페이스는 논리적 구조일 뿐이며 기본 물리적 스토리지와는 관련이 없습니다.

Amazon Keyspaces 키스페이스의 할당량 제한 및 제약 조건에 대한 자세한 내용은 을 참조하십시오Amazon Keyspaces (Apache Cassandra용) 에 대한 할당량.

다음은 키스페이스에 사용할 수 있는 유일한 복제 전략입니다.

SingleRegionStrategy— 해당 지역의 3개 가용 영역에 데이터를 복제합니다.

키스페이스 생성

CREATE KEYSPACE명령문을 사용하여 새 키스페이스를 생성합니다.

구문

create_keyspace_statement ::= CREATE KEYSPACE [ IF NOT EXISTS ] keyspace_name WITH options

여기서 각 항목은 다음과 같습니다.

  • keyspace_name생성할 키스페이스 이름입니다.

  • 옵션은 다음 중 하나 이상입니다.

    • REPLICATION— 필요한 경우 추가 값과 함께 키스페이스 (SingleRegionStrategy) 의 복제 전략을 나타내는 맵입니다. (필수)

    • DURABLE_WRITES— Amazon Keyspaces에 대한 쓰기는 항상 지속되므로 이 옵션이 필수는 아닙니다. 단, 지정한 경우 값은 이어야 합니다true.

    • TAGS— 생성 시 리소스에 연결할 키-값 페어 태그의 목록입니다.

다음과 같이 키스페이스를 생성합니다.

CREATE KEYSPACE "myGSGKeyspace" WITH REPLICATION = {'class': 'SingleRegionStrategy'} and TAGS ={'key1':'val1', 'key2':'val2'} ;

키스페이스 변경

ALTER KEYSPACE 사용하여 키스페이스 태그에 태그를 추가하거나 제거합니다.

구문

alter_keyspace_statement ::= ALTER KEYSPACE keyspace_name [[ADD | DROP] TAGS

여기서 각 항목은 다음과 같습니다.

  • keyspace_name는 변경할 키스페이스 이름입니다.

  • TAGS— 키스페이스에 추가하거나 제거할 키-값 페어 태그의 목록입니다.

다음과 같이 키스페이스를 변경합니다.

ALTER KEYSPACE "myGSGKeyspace" ADD TAGS {'key1':'val1', 'key2':'val2'};

드롭 키스페이스

DROP KEYSPACE명령문을 사용하여 테이블과 같은 모든 내용을 포함한 키스페이스를 제거할 수 있습니다.

구문

drop_keyspace_statement ::= DROP KEYSPACE [ IF EXISTS ] keyspace_name

여기서 각 항목은 다음과 같습니다.

  • Keyspace_이름은 삭제될 키스페이스 이름입니다.

DROP KEYSPACE "myGSGKeyspace";

테이블

테이블은 Amazon 키스페이스의 기본 데이터 구조입니다. 테이블의 데이터는 행과 열로 구성됩니다. 이러한 열의 하위 집합은 파티션 키 지정을 통해 파티셔닝 (및 궁극적으로는 데이터 배치) 을 결정하는 데 사용됩니다.

또 다른 열 집합을 클러스터링 열로 정의할 수 있습니다. 즉, 이러한 열을 쿼리 실행에 조건자로 사용할 수 있습니다.

기본적으로 새 테이블은 온디맨드 처리 용량으로 생성됩니다. 새 테이블과 기존 테이블의 용량 모드를 변경할 수 있습니다. 읽기/쓰기 용량 처리량 모드에 대한 자세한 내용은 단원을 참조하십시오Amazon Keyspaces (Keyspaces) 의 읽기/쓰기 용량 모드.

Amazon Keyspaces 테이블의 할당량 제한 및 제약 조건에 대한 자세한 내용은 을 참조하십시오Amazon Keyspaces (Apache Cassandra용) 에 대한 할당량.

CREATE TABLE

CREATE TABLE명령문을 사용하여 새 테이블을 만들 수 있습니다.

구문

create_table_statement ::= CREATE TABLE [ IF NOT EXISTS ] table_name '(' column_definition ( ',' column_definition )* [ ',' PRIMARY KEY '(' primary_key ')' ] ')' [ WITH table_options ] column_definition ::= column_name cql_type [ STATIC ][ PRIMARY KEY] primary_key ::= partition_key [ ',' clustering_columns ] partition_key ::= column_name | '(' column_name ( ',' column_name )* ')' clustering_columns ::= column_name ( ',' column_name )* table_options ::= [table_options] | CLUSTERING ORDER BY '(' clustering_order ')' [ AND table_options ] | options | CUSTOM_PROPERTIES | WITH TAGS | WITH default_time_to_live clustering_order ::= column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*

여기서 각 항목은 다음과 같습니다.

  • table_name는 생성할 테이블의 이름입니다.

  • column_definition다음 구성 요소로 이루어져 있습니다.

    • column_name— 컬럼 이름.

    • cql_type— Amazon Keyspaces 데이터 유형 (참조데이터 유형).

    • STATIC— 이 열을 정적 열로 지정합니다. 정적 열에는 동일한 파티션의 모든 행이 공유하는 값이 저장됩니다.

    • PRIMARY KEY— 이 열을 테이블의 기본 키로 지정합니다.

  • primary_key다음 구성 요소로 이루어져 있습니다.

    • partition_key

    • clustering_columns

  • partition_key:

    • 파티션 키는 단일 열일 수도 있고 둘 이상의 열로 구성된 복합 값일 수도 있습니다. 기본 키의 파티션 키 부분은 필수이며 Amazon Keyspaces가 데이터를 저장하는 방법을 결정합니다.

  • clustering_columns:

    • 기본 키의 선택적 클러스터링 열 부분은 각 파티션 내에서 데이터가 클러스터링되고 정렬되는 방식을 결정합니다.

  • table_options다음 구성 요소로 이루어져 있습니다.

    • CLUSTERING ORDER BY— 테이블의 기본 클러스터링 순서는 정렬 방향ASC (오름차순) 의 클러스터링 키로 구성됩니다. 기본 정렬 동작을 재정의하도록 지정하십시오.

    • CUSTOM_PROPERTIES— Amazon 키스페이스와 관련된 설정 맵입니다.

      • capacity_mode: 테이블의 읽기/쓰기 처리량 용량 모드를 지정합니다. 옵션은 throughput_mode:PAY_PER_REQUESTthroughput_mode:PROVISIONED입니다. 프로비저닝된 용량 모드에서는read_capacity_units 및 를write_capacity_units 입력으로 필요로 합니다. 기본값은 throughput_mode:PAY_PER_REQUEST입니다.

      • encryption_specification: 저장된 데이터 암호화에 대한 암호화 옵션을 지정합니다. 지정되지 않은 경우 기본값은 입니다encryption_type:AWS_OWNED_KMS_KEY. 암호화 옵션 고객 관리 키에는kms_key_identifier:ARN 다음과 같은 Amazon 리소스 이름 (ARN) 형식의AWS KMS 키가 입력되어야kms_key_identifier:ARN 합니다.

      • point_in_time_recovery: 테이블에 대해 point-in-time 복원을 활성화할지 비활성화할지를 지정합니다. 옵션은 status:enabledstatus:disabled입니다. 지정하지 않은 경우 기본값은 입니다status:disabled.

      • ttl: 테이블에 대한 Tto Live 사용자 정의 설정을 활성화합니다. 활성화하려면 를 사용하십시오status:enabled. 기본값은 status:disabled입니다. 를ttl 활성화하면 테이블에 대해 비활성화할 수 없습니다.

    • TAGS— 리소스가 생성될 때 리소스에 연결할 키-값 페어 태그의 목록입니다.

    • default_time_to_live— 테이블의 기본 Time to Live 설정 (초 단위) 입니다.

  • clustering_order다음 구성 요소로 이루어져 있습니다.

    • column_name— 컬럼 이름.

    • ASC | DESC— 오름차순 (ASC) 또는 하위순 (DESC) 순서 수정자를 설정합니다. 지정하지 않은 경우 기본 순서는 ASC입니다.

CREATE TABLE IF NOT EXISTS "my_keyspace".my_table ( id text, name text, region text, division text, project text, role text, pay_scale int, vacation_hrs float, manager_id text, PRIMARY KEY (id,division)) WITH CUSTOM_PROPERTIES={ 'capacity_mode':{ 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20 }, 'point_in_time_recovery':{'status': 'enabled'}, 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } } AND CLUSTERING ORDER BY (division ASC) AND TAGS={'key1':'val1', 'key2':'val2'} AND default_time_to_live = 3024000;

클러스터링 열을 사용하는 테이블에서는 테이블 정의에서 클러스터링이 아닌 열을 정적으로 선언할 수 있습니다. 정적 열에 대한 자세한 내용은 단원을 참조하십시오Amazon 키스페이스의 정적 열.

CREATE TABLE "my_keyspace".my_table ( id int, name text, region text, division text, project text STATIC, PRIMARY KEY (id,division));

ALTER TABLE

ALTER TABLE명령문을 사용하여 새 열을 추가하거나, 태그를 추가하거나, 테이블의 사용자 지정 속성을 변경할 수 있습니다.

구문

alter_table_statement ::= ALTER TABLE table_name [ ADD ( column_definition | column_definition_list) ] [[ADD | DROP] TAGS {'key1':'val1', 'key2':'val2'}] [ WITH table_options [ , ... ] ] ; column_definition ::= column_name cql_type

여기서 각 항목은 다음과 같습니다.

  • table_name는 변경할 테이블의 이름입니다.

  • column_definition는 추가할 열 이름 및 데이터 유형입니다.

  • column_definition_list는 괄호 안에 있는 쉼표로 구분된 열 목록입니다.

  • TAGS는 리소스에 연결할 키-값 페어 태그의 목록입니다.

  • default_time_to_live: 테이블의 기본 To Live 설정 (초 단위) 입니다.

  • table_options다음 구성 요소로 이루어져 있습니다.

    • CUSTOM_PROPERTIES— Amazon Keyspaces 전용 설정 맵입니다.

      • capacity_mode: 테이블의 읽기/쓰기 처리량 용량 모드를 지정합니다. 옵션은 throughput_mode:PAY_PER_REQUESTthroughput_mode:PROVISIONED입니다. 프로비저닝된 용량 모드에서는read_capacity_units 및 를write_capacity_units 입력으로 필요로 합니다. 기본값은 throughput_mode:PAY_PER_REQUEST입니다.

      • encryption_specification: 저장된 데이터 암호화에 대한 암호화 옵션을 지정합니다. 옵션은 encryption_type:AWS_OWNED_KMS_KEYencryption_type:CUSTOMER_MANAGED_KMS_KEY입니다. 암호화 옵션 고객 관리 키에는 Amazon 리소스 이름 (ARN) 형식의AWS KMS 키가 입력되어 있어야 합니다kms_key_identifier:ARN.

      • point_in_time_recovery: 테이블에 대해 point-in-time 복원을 활성화할지 비활성화할지를 지정합니다. 옵션은 status:enabledstatus:disabled입니다. 기본값은 status:disabled입니다.

      • ttl: 테이블에 대한 Tto Live 사용자 정의 설정을 활성화합니다. 활성화하려면 를 사용하십시오status:enabled. 기본값은 status:disabled입니다. 를ttl 활성화하면 테이블에 대해 비활성화할 수 없습니다.

참고

ALTER TABLE을 사용하면 하나의 사용자 지정 속성만 변경할 수 있습니다. 동일한 명령문에 둘 이상의 ALTER TABLE 명령을 결합할 수 없습니다.

다음 문은 기존 테이블에 열을 추가하는 방법을 보여줍니다.

ALTER TABLE mykeyspace.mytable ADD (ID int);

테이블의 용량 모드를 변경하고 읽기 및 쓰기 용량 단위를 지정하려면 다음 명령문을 사용할 수 있습니다.

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}};

다음 명령문은 테이블의 고객 관리형 KMS 키를 지정합니다.

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={ 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } };

테이블에 대한 point-in-time 복원을 활성화하려면 다음 명령문을 사용할 수 있습니다.

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'point_in_time_recovery': {'status': 'enabled'}};

테이블의 기본 Time to Live 값을 초 단위로 설정하려면 다음 명령문을 사용할 수 있습니다.

ALTER TABLE my_table WITH default_time_to_live = 2592000;

이 명령문을 사용하면 테이블에 대한 사용자 지정 Time to Live 설정을 사용할 수 있습니다.

ALTER TABLE mytable WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};

복원 테이블

RESTORE TABLE문을 사용하여 테이블을 특정 시점으로 복원합니다. 이 명령문을 사용하려면 테이블에서 point-in-time 복구를 활성화해야 합니다. 자세한 정보는 Amazon Keyspaces (Apache Cassandra용) 에 대한 특정 시점으로 복구을 참조하세요.

구문

restore_table_statement ::= RESTORE TABLE table_name FROM TABLE table_name [ WITH table_options [ , ... ] ];

여기서 각 항목은 다음과 같습니다.

  • restored_table_name는 복원된 테이블의 이름입니다.

  • source_table_name소스 테이블의 이름입니다.

  • table_options다음 구성 요소로 이루어져 있습니다.

    • restore_timestamp는 ISO 8601 형식의 복원 시점 시간입니다. 지정하지 않으면 현재 타임스탬프가 사용됩니다.

    • CUSTOM_PROPERTIES— Amazon Keyspaces 전용 설정 맵입니다.

      • capacity_mode: 테이블의 읽기/쓰기 처리량 용량 모드를 지정합니다. 옵션은 throughput_mode:PAY_PER_REQUESTthroughput_mode:PROVISIONED입니다. 프로비저닝된 용량 모드에서는read_capacity_units 및 를write_capacity_units 입력으로 필요로 합니다. 기본값은 소스 테이블의 현재 설정입니다.

      • encryption_specification: 저장된 데이터 암호화에 대한 암호화 옵션을 지정합니다. 옵션은 encryption_type:AWS_OWNED_KMS_KEYencryption_type:CUSTOMER_MANAGED_KMS_KEY입니다. 암호화 옵션 고객 관리 키에는 Amazon 리소스 이름 (ARN) 형식의AWS KMS 키가 입력되어 있어야 합니다kms_key_identifier:ARN. 고객 관리 키로 암호화된 테이블을 암호화된 테이블로 복원하려면 Amazon Keyspaces에서 원본 테이블의 키에 액세스할 수 있어야 합니다.AWS 소유 키AWS KMS

      • point_in_time_recovery: 테이블에 대해 point-in-time 복원을 활성화할지 비활성화할지를 지정합니다. 옵션은 status:enabledstatus:disabled입니다. 새 테이블을 만들 때와 달리 복원된 테이블의 기본 상태는 설정이 원본 테이블에서status:enabled 상속되기 때문입니다. 복원된 테이블에 대해status:disabled PITR을 사용하지 않도록 설정하려면 명시적으로 설정해야 합니다.

    • TAGS는 리소스에 연결할 키-값 페어 태그의 목록입니다.

참고

삭제된 테이블은 삭제 시점까지만 복원할 수 있습니다.

RESTORE TABLE mykeyspace.mytable_restored from table mykeyspace.my_table WITH restore_timestamp = '2020-06-30T04:05:00+0000' AND custom_properties = {'point_in_time_recovery':{'status':'disabled'}, 'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}} AND TAGS={'key1':'val1', 'key2':'val2'};

DROP TABLE

DROP TABLE명령문을 사용하여 키스페이스에서 테이블을 제거합니다.

구문

drop_table_statement ::= DROP TABLE [ IF EXISTS ] table_name

여기서 각 항목은 다음과 같습니다.

  • IF EXISTS테이블이 존재하지 않는 경우 실패를DROP TABLE 방지합니다. (선택 사항)

  • table_name는 삭제될 테이블의 이름입니다.

DROP TABLE "myGSGKeyspace".employees_tbl;