Amazon Keyspaces의 DML 문(데이터 조작 언어) - Amazon Keyspaces(Apache Cassandra용)

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

Amazon Keyspaces의 DML 문(데이터 조작 언어)

데이터 조작 언어(DML)는 Amazon Keyspaces(Apache Cassandra용) 테이블의 데이터를 관리하는 데 사용하는 Cassandra 쿼리 언어(CQL) 문 집합입니다. DML 문을 사용하여 테이블의 데이터를 추가, 수정 또는 삭제할 수 있습니다.

또한 DML 문을 사용하여 테이블의 데이터를 쿼리합니다. (참고로 CQL은 조인 또는 하위 쿼리를 지원하지 않습니다.)

SELECT

SELECT 문을 사용하여 데이터를 쿼리합니다.

구문

select_statement ::= SELECT [ JSON ] ( select_clause | '*' ) FROM table_name [ WHERE 'where_clause' ] [ ORDER BY 'ordering_clause' ] [ LIMIT (integer | bind_marker) ] [ ALLOW FILTERING ] select_clause ::= selector [ AS identifier ] ( ',' selector [ AS identifier ] ) selector ::= column_name | term | CAST '(' selector AS cql_type ')' | function_name '(' [ selector ( ',' selector )* ] ')' where_clause ::= relation ( AND relation )* relation ::= column_name operator term TOKEN operator ::= '=' | '<' | '>' | '<=' | '>=' | IN | CONTAINS | CONTAINS KEY ordering_clause ::= column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )*

예제

SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ; SELECT JSON name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

JSON 인코딩 데이터 유형을 Amazon Keyspaces 데이터 유형에 매핑하는 테이블은 Amazon Keyspaces 데이터 유형의 JSON 인코딩을 참조하세요.

IN 키워드 사용

IN 키워드는 하나 이상의 값이 같도록 지정합니다. 파티션 키와 클러스터링 열에 적용할 수 있습니다. SELECT 문에 키가 표시된 순서대로 결과가 반환됩니다.

예제

SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and clustering.key1 = 2; SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and clustering.key1 <= 2; SELECT * from mykeyspace.mytable WHERE primary.key1 = 1 and clustering.key1 IN (1, 2); SELECT * from mykeyspace.mytable WHERE primary.key1 <= 2 and clustering.key1 IN (1, 2) ALLOW FILTERING;

IN 키워드 및 Amazon Keyspaces가 문을 처리하는 방식에 대한 자세한 내용은 Amazon Keyspaces에서 SELECT 문과 함께 IN 연산자 사용섹션을 참조하세요.

결과 순서 지정

ORDER BY 절은 반환된 결과의 정렬 순서를 지정합니다. 각 열의 정렬 순서와 함께 열 이름 목록을 인수로 사용합니다. 정렬 절에는 클러스터링 열만 지정할 수 있습니다. 비클러스터링 열은 허용되지 않습니다. 정렬 순서 옵션은 ASC(오름차순)과 DESC(내림차순) 정렬 순서입니다. 정렬 순서를 생략하면 클러스터링 열의 기본 순서가 사용됩니다. 가능한 정렬 순서는 Amazon Keyspaces의 결과 순서 지정을 참조하세요.

SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;

IN 키워드와 함께 ORDER BY을 사용하면 페이지 내에서 결과가 정렬됩니다. 페이지 매김이 비활성화된 상태에서는 전체 재정렬이 지원되지 않습니다.

토큰

TOKEN 함수를 SELECTWHERE 절의 PARTITION KEY 열에 적용할 수 있습니다. TOKEN 함수를 사용하면 Amazon Keyspaces는 PARTITION KEY의 값이 아닌 PARTITION_KEY의 매핑된 토큰 값을 기준으로 행을 반환합니다.

IN 키워드에서는 TOKEN 관계가 지원되지 않습니다.

예제

SELECT TOKEN(id) from my_table; SELECT TOKEN(id) from my_table WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;

TTL 함수

TTL 함수를 SELECT 문과 함께 사용하여 열에 저장된 만료 시간(초)을 검색할 수 있습니다. TTL인 값이 설정되지 않으면 없으면 함수가 null를 반환합니다.

SELECT TTL(my_column) from my_table;

수집과 같은 다중 셀 열에는 TTL 함수를 사용할 수 없습니다.

WRITETIME 함수

테이블에서 클라이언트 측 타임스탬프를 사용하는 경우에만 WRITETIME 함수를 SELECT 문과 함께 사용하여 열 값의 메타데이터로 저장된 타임스탬프를 검색할 수 있습니다. 자세한 정보는 Amazon Keyspaces에서 클라이언트 측 타임스탬프 사용하기을 참조하세요.

SELECT WRITETIME(my_column) from my_table;

수집과 같은 다중 셀 열에는 WRITETIME 함수를 사용할 수 없습니다.

참고

설정된 Cassandra 드라이버 동작과의 호환성을 위해 Cassandra 드라이버 및 개발자 도구를 통해 Cassandra 쿼리 언어(CQL) API 호출을 사용하여 시스템 테이블에서 작업을 수행할 때는 태그 기반 권한 부여 정책이 적용되지 않습니다. 자세한 정보는 태그를 기반으로 한 Amazon Keyspaces 리소스 액세스을 참조하세요.

INSERT

INSERT 문을 사용하여 테이블에 행을 추가합니다.

구문

insert_statement ::= INSERT INTO table_name ( names_values | json_clause ) [ IF NOT EXISTS ] [ USING update_parameter ( AND update_parameter )* ] names_values ::= names VALUES tuple_literal json_clause ::= JSON string [ DEFAULT ( NULL | UNSET ) ] names ::= '(' column_name ( ',' column_name )* ')'

INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project, region, division, role, pay_scale, vacation_hrs, manager_id) VALUES ('012-34-5678','Russ','NightFlight','US','Engineering','IC',3,12.5, '234-56-7890') ;

파라미터 업데이트

INSERT에서 update_parameter로 지원하는 값은 다음과 같습니다.

  • TTL — 시간 값(초)입니다. 구성 가능한 최댓값은 630,720,000초로 20년에 해당합니다.

  • TIMESTAMP — epoch로 알려진 표준 기준 시간인 1970년 1월 1일 00:00:00(그리니치 표준시 기준) 이후 경과된 시간을 마이크로초 단위로 나타내는 bigint 값입니다. Amazon Keyspaces의 타임스탬프는 과거 2일에서 미래 5분 사이의 범위여야 합니다.

INSERT INTO my_table (userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello','205.212.123.123') USING TTL 259200;

JSON 지원

JSON 인코딩 데이터 유형을 Amazon Keyspaces 데이터 유형에 매핑하는 테이블은 Amazon Keyspaces 데이터 유형의 JSON 인코딩을 참조하세요.

JSON 키워드를 사용하여 JSON 인코딩 맵을 단일 행으로 삽입할 수 있습니다. 테이블에는 있지만 JSON insert 문에서 생략된 열의 경우 DEFAULT UNSET을(를) 사용하여 기존 값을 보존합니다. DEFAULT NULL을 사용하여 생략된 열의 각 행에 NULL 값을 쓰고 기존 값을 덮어씁니다(표준 쓰기 요금 적용). DEFAULT NULL가 기본 옵션입니다.

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "manager_id": "234-56-7890"}';

JSON 데이터에 중복 키가 포함된 경우 Amazon Keyspaces는 키의 마지막 값을 저장합니다(Apache Cassandra와 유사). 중복 키가 id인 다음 예제에서는 234-56-7890 값이 사용됩니다.

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "id": "234-56-7890"}';

UPDATE

UPDATE 문을 사용하여 테이블의 행을 수정합니다.

구문

update_statement ::= UPDATE table_name [ USING update_parameter ( AND update_parameter )* ] SET assignment ( ',' assignment )* WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] update_parameter ::= ( integer | bind_marker ) assignment ::= simple_selection '=' term | column_name '=' column_name ( '+' | '-' ) term | column_name '=' list_literal '+' column_name simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term

UPDATE "myGSGKeyspace".employees_tbl SET pay_scale = 5 WHERE id = '567-89-0123' AND division = 'Marketing' ;

counter를 증가하려면 다음 구문을 사용합니다. 자세한 정보는 카운터을 참조하세요.

UPDATE ActiveUsers SET counter = counter + 1 WHERE user = A70FE1C0-5408-4AE3-BE34-8733E5K09F14 AND action = 'click';

파라미터 업데이트

UPDATE에서 update_parameter로 지원하는 값은 다음과 같습니다.

  • TTL — 시간 값(초)입니다. 구성 가능한 최댓값은 630,720,000초로 20년에 해당합니다.

  • TIMESTAMP — epoch로 알려진 표준 기준 시간인 1970년 1월 1일 00:00:00(그리니치 표준시 기준) 이후 경과된 시간을 마이크로초 단위로 나타내는 bigint 값입니다. Amazon Keyspaces의 타임스탬프는 과거 2일에서 미래 5분 사이의 범위여야 합니다.

UPDATE my_table (userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello again','205.212.123.123') USING TIMESTAMP '2022-11-03 13:30:54+0400';

DELETE

DELETE 문을 사용하여 테이블에서 행을 제거합니다.

구문

delete_statement ::= DELETE [ simple_selection ( ',' simple_selection ) ] FROM table_name [ USING update_parameter ( AND update_parameter )* ] WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term

위치:

  • table_name는 삭제하려는 행이 포함된 테이블입니다.

DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive' ;

DELETE은 다음 값을 update_parameter로 지원합니다.

  • TIMESTAMP — epoch로 알려진 표준 기준 시간인 1970년 1월 1일 00:00:00(그리니치 표준시 기준) 이후 경과된 시간을 마이크로초 단위로 나타내는 bigint 값입니다.