기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Keyspaces에서 사용자 정의 유형(UDT) 생성
단일 리전 키스페이스에서 UDT를 생성하려면 CQL의 CREATE TYPE
문, create-type
명령을 AWS CLI또는 콘솔과 함께 사용할 수 있습니다.
UDT 이름은 48자 이하여야 하고, 영문자로 시작해야 하며, 영숫자와 밑줄만 포함할 수 있습니다. Amazon Keyspaces는 대문자를 자동으로 소문자로 변환합니다.
또는 UDT 이름을 큰따옴표로 선언할 수 있습니다. 큰따옴표로 UDT 이름을 선언할 때 Amazon Keyspaces는 대문자를 보존하고 특수 문자를 허용합니다.
UDT를 생성할 때 이름의 일부로 큰따옴표를 사용할 수도 있지만 각 큰따옴표 문자를 추가 큰따옴표 문자로 이스케이프 처리해야 합니다.
다음 표에는 허용되는 UDT 이름의 예가 나와 있습니다. 첫 번째 열은 유형을 생성할 때 이름을 입력하는 방법을 보여주고, 두 번째 열은 Amazon Keyspaces가 내부적으로 이름의 형식을 지정하는 방법을 보여줍니다. Amazon Keyspaces는와 같은 작업에 형식이 지정된 이름을 기대합니다GetType
.
입력한 이름 |
형식이 지정된 이름 |
Note |
MY_UDT
|
my_udt |
큰따옴표 없이 Amazon Keyspaces는 모든 대문자를 소문자로 변환합니다. |
"MY_UDT"
|
MY_UDT |
큰따옴표를 사용하면 Amazon Keyspaces는 대문자를 사용하고 형식이 지정된 이름에서 큰따옴표를 제거합니다. |
"1234"
|
1234 |
큰따옴표를 사용하면 이름이 숫자로 시작할 수 있으며 Amazon Keyspaces는 형식이 지정된 이름에서 큰따옴표를 제거합니다. |
"Special_Ch@r@cters<>!!"
|
Special_Ch@r@cters<>!! |
큰따옴표를 사용하면 이름에 특수 문자가 포함될 수 있으며 Amazon Keyspaces는 형식이 지정된 이름에서 큰따옴표를 제거합니다. |
"nested""""""quotes"
|
nested"""quotes |
Amazon Keyspaces는 형식이 지정된 이름에서 외부 큰따옴표와 이스케이프 큰따옴표를 제거합니다. |
- Console
-
- Cassandra Query Language (CQL)
-
CQL을 사용하여 사용자 정의 유형(UDT) 생성
이 예제에서는에 사용되는 책 보상 테이블의 새 버전을 생성합니다Amazon Keyspace에서 테이블 생성. 이 표에는 작성자가 주어진 책에 대해 받는 모든 보상이 저장됩니다. 중첩되고 상을 받은 책에 대한 정보가 포함된 두 개의 UDTs를 생성합니다.
-
이름이 인 키스페이스를 생성합니다catalog
.
CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};
-
첫 번째 유형을 생성합니다. 이 유형은 책의 장르를 정의하는 데 사용되는 BISAC 코드를 저장합니다. BISAC 코드는 영숫자 코드와 최대 4개의 주제 영역으로 구성됩니다.
CREATE TYPE catalog.bisac (
bisac_code text,
subject1 text,
subject2 text,
subject3 text,
subject4 text
);
-
첫 번째 UDT를 사용하는 책 보상에 대한 두 번째 유형을 생성합니다. 중첩된 UDT를 고정해야 합니다.
CREATE TYPE catalog.book (
award_title text,
book_title text,
publication_date date,
page_count int,
ISBN text,
genre FROZEN <bisac>
);
-
작성자 이름의 열이 있는 테이블을 생성하고 책 보상에 목록 유형을 사용합니다. 목록에 사용된 UDT는 고정되어야 합니다.
CREATE TABLE catalog.authors (
author_name text PRIMARY KEY,
awards list <FROZEN <book>>
);
-
이 단계에서는 데이터 행 하나를 새 테이블에 삽입합니다.
CONSISTENCY LOCAL_QUORUM;
INSERT INTO catalog.authors (author_name, awards) VALUES (
'John Stiles' ,
[{
award_title: 'Wolf',
book_title: 'Yesterday',
publication_date: '2020-10-10',
page_count: 345,
ISBN: '026204630X',
genre: { bisac_code:'FIC014090', subject1: 'FICTION', subject2: 'Historical', subject3: '20th Century', subject4: 'Post-World War II'}
},
{award_title: 'Richard Roe',
book_title: 'Who ate the cake?',
publication_date: '2019-05-13',
page_count: 193,
ISBN: '9780262046305',
genre: { bisac_code:'FIC022130', subject1: 'FICTION', subject2: 'Mystery & Detective', subject3: 'Cozy', subject4: 'Culinary'}
}]
);
-
마지막 단계에서는 테이블에서 데이터를 읽습니다.
SELECT * FROM catalog.authors;
명령의 출력은 다음과 같아야 합니다.
author_name | awards
-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
John Stiles | [{award_title: 'Wolf', book_title: 'Yesterday', publication_date: 2020-10-10, page_count: 345, isbn: '026204630X', genre: {bisac_code: 'FIC014090', subject1: 'FICTION', subject2: 'Historical', subject3: '20th Century', subject4: 'Post-World War II'}}, {award_title: 'Richard Roe', book_title: 'Who ate the cake?', publication_date: 2019-05-13, page_count: 193, isbn: '9780262046305', genre: {bisac_code: 'FIC022130', subject1: 'FICTION', subject2: 'Mystery & Detective', subject3: 'Cozy', subject4: 'Culinary'}}]
(1 rows)
CQL 구문에 대한 자세한 내용은 CREATE TYPE 섹션을 참조하세요.
- CLI
-
를 사용하여 사용자 정의 유형(UDT) 생성 AWS CLI
-
유형을 생성하려면 다음 구문을 사용할 수 있습니다.
aws keyspaces create-type
--keyspace-name 'my_keyspace'
--type-name 'my_udt'
--field-definitions
'[
{"name" : "field1", "type" : "int"},
{"name" : "field2", "type" : "text"}
]'
이 명령의 출력은이 예제와 비슷합니다. 는 UDT의 형식이 지정된 이름을 typeName
반환합니다.
{
"keyspaceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/",
"typeName": "my_udt"
}