기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Keyspaces에서 행으로 작업하기
이 섹션에서는 Amazon Keyspaces(Apache Cassandra용)의 행 작업에 대한 세부 정보를 제공합니다. 테이블은 Amazon Keyspaces의 기본 데이터 구조이며 테이블의 데이터는 열과 행으로 구성됩니다.
Amazon Keyspaces에서의 행 크기 계산
Amazon Keyspaces는 10밀리초의 읽기 및 쓰기 성능을 제공하고 여러 가용 영역에 데이터를 안정적으로 저장하는 완전 관리형 스토리지를 제공합니다. AWS Amazon Keyspaces는 모든 행과 프라이머리 키 열에 메타데이터를 연결하여 효율적인 데이터 액세스와 고가용성을 지원합니다.
이 섹션에서는 Amazon Keyspaces의 인코딩된 행 크기를 추정하는 방법에 대한 세부 정보를 제공합니다. 인코딩된 행 크기는 청구서 및 할당량 사용량을 계산할 때 사용됩니다. 또한 테이블의 프로비저닝된 처리량 용량 요구 사항을 계산할 때는 인코딩된 행 크기를 사용해야 합니다. Amazon Keyspaces 내에서 인코딩된 행 크기를 계산하려는 경우 다음 지침을 사용할 수 있습니다.
프라이머리 키가 아닌 열인 일반 열, 클러스터링 열 또는
STATIC
열의 경우 데이터 유형에 따른 셀 데이터의 원시 크기를 사용하고 필요한 메타데이터를 추가합니다. Amazon Keyspaces에서 지원되는 데이터 유형에 대한 자세한 내용은 데이터 타입 섹션을 참조하세요. Amazon Keyspaces가 데이터 유형 값과 메타데이터를 저장하는 방식의 몇 가지 주요 차이점은 다음과 같습니다.각 열 이름에 필요한 공간은 열 식별자를 사용하여 저장되고 열에 저장된 각 데이터 값에 추가됩니다. 열 식별자의 스토리지 값은 테이블의 전체 열 수에 따라 달라집니다.
1-62개 열: 1바이트
63-124개 열: 2바이트
125-186개 열: 3바이트
62개 열을 추가할 때마다 1바이트를 추가합니다. Amazon Keyspaces에서는 단일
INSERT
또는UPDATE
문으로 최대 225개의 일반 열을 수정할 수 있다는 점에 유의하세요. 자세한 정보는 Amazon Keyspaces 서비스 할당량을 참조하세요.파티션 키는 최대 2048바이트의 데이터를 포함할 수 있습니다. 파티션 키의 각 키 열에는 최대 3바이트의 메타데이터가 필요합니다. 행 크기를 계산할 때는 각 파티션 키 열이 전체 3바이트의 메타데이터를 사용한다고 가정해야 합니다.
클러스터링 열은 최대 850바이트의 데이터를 저장할 수 있습니다. 데이터 값의 크기 외에도 각 클러스터링 열에는 메타데이터에 대한 데이터 값 크기의 최대 20%가 필요합니다. 행 크기를 계산할 때는 클러스터링 열 데이터 값 5바이트당 메타데이터 1바이트를 추가해야 합니다.
Amazon Keyspaces는 각 파티션 키와 클러스터링 키 열의 데이터 값을 두 번 저장합니다. 추가 오버헤드는 효율적인 쿼리와 내장된 인덱싱에 사용됩니다.
Cassandra
ASCII
,TEXT
및VARCHAR
문자열 데이터 유형은 모두 UTF-8 바이너리 인코딩의 유니코드를 사용하여 Amazon Keyspaces에 저장됩니다. Amazon Keyspaces의 문자열 크기는 UTF-8 인코딩된 바이트 수와 같습니다.Cassandra
INT
,BIGINT
,SMALLINT
및TINYINT
데이터 유형은 Amazon Keyspaces에 가변 길이(유효 자릿수 최대 38자리)의 데이터 값으로 저장됩니다. 앞과 끝의 0은 잘립니다. 이러한 데이터 유형의 크기는 유효 숫자 2자리당 약 1바이트+1바이트입니다.Amazon Keyspaces의
BLOB
은 값의 원시 바이트 길이와 함께 저장됩니다.Null
값 또는Boolean
값의 크기는 1바이트입니다.LIST
또는MAP
과 같은 컬렉션 데이터 유형을 저장하는 열에는 내용에 관계없이 3바이트의 메타데이터가 필요합니다.LIST
또는MAP
의 크기는 (열 ID) + 합계(중첩 요소 크기) + (3바이트)입니다. 빈LIST
또는MAP
의 크기는 (열 ID) + (3바이트)입니다. 또한 각 개별LIST
또는MAP
요소에는 1바이트의 메타데이터를 필요로 합니다.STATIC
열 데이터는 최대 행 크기인 1MB에 포함되지 않습니다. 정적 열의 데이터 크기를 계산하려면 Amazon Keyspaces의 논리적 파티션당 정적 열 크기 계산 섹션을 참조하세요.기능이 켜져 있을 때 각 행의 모든 열에 대해 클라이언트 측 타임스탬프가 저장됩니다. 이러한 타임스탬프는 약 20~40바이트(데이터에 따라 다름)를 차지하며 행의 스토리지 및 처리량 비용에 영향을 줍니다. 자세한 정보는 Amazon Keyspaces에서 클라이언트 측 타임스탬프 사용하기을 참조하세요.
행 메타데이터의 경우 각 행 크기에 100바이트를 추가합니다.
인코딩된 데이터 행의 총 크기는 다음 공식을 기반으로 합니다.
partition key columns + clustering columns + regular columns + row metadata = total encoded size of row
중요
모든 열 메타데이터(예: 열 ID, 파티션 키 메타데이터, 클러스터링 열 메타데이터, 클라이언트 측 타임스탬프 및 행 메타데이터)는 최대 행 크기인 1MB에 포함됩니다.
모든 열의 유형이 정수인 다음 테이블을 예로 들어 보겠습니다. 테이블에는 파티션 키 열 2개, 클러스터링 열 2개, 일반 열 1개가 있습니다. 이 테이블에는 5개의 열이 있으므로 열 이름 식별자에 필요한 공간은 1바이트입니다.
CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, primary key((pk_col1, pk_col2),ck_col1, ck_col2));
이 예제에서는 다음 문과 같이 테이블에 행을 쓸 때의 데이터 크기를 계산합니다.
INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, ck_col1, ck_col2, reg_col1) values(1,2,3,4,5);
이 쓰기 작업에 필요한 총 바이트를 추정하려면 다음 단계를 사용하면 됩니다.
열에 저장된 데이터 유형의 바이트와 메타데이터 바이트를 더하여 파티션 키 열의 크기를 계산합니다. 모든 파티션 키 열에 대해 이 과정을 반복합니다.
파티션 키(pk_col1)의 첫 번째 열 크기를 계산합니다.
(2 bytes for the integer data type) x 2 + 1 byte for the column id + 3 bytes for partition key metadata = 8 bytes
파티션 키(pk_col2)의 두 번째 열 크기를 계산합니다.
(2 bytes for the integer data type) x 2 + 1 byte for the column id + 3 bytes for partition key metadata = 8 bytes
두 열을 모두 더하여 파티션 키 열의 총 예상 크기를 구합니다.
8 bytes + 8 bytes = 16 bytes for the partition key columns
열에 저장된 데이터 유형의 바이트와 메타데이터 바이트를 더하여 클러스터링 열의 크기를 계산합니다. 모든 클러스터링 열에 대해 이 과정을 반복합니다.
클러스터링 열(ck_col1)의 첫 번째 열 크기를 계산합니다.
(2 bytes for the integer data type) x 2 + 20% of the data value (2 bytes) for clustering column metadata + 1 byte for the column id = 6 bytes
클러스터링 열(ck_col2)의 두 번째 열 크기를 계산합니다.
(2 bytes for the integer data type) x 2 + 20% of the data value (2 bytes) for clustering column metadata + 1 byte for the column id = 6 bytes
두 열을 모두 더하여 클러스터링 열의 총 예상 크기를 구합니다.
6 bytes + 6 bytes = 12 bytes for the clustering columns
일반 열의 크기를 더합니다. 이 예제에서는 한 자리 정수를 저장하는 열이 하나뿐이며 이 경우 열 ID로 2바이트에 1바이트가 필요합니다.
마지막으로 인코딩된 총 행 크기를 구하려면 모든 열의 바이트를 더하고 행 메타데이터에 대해 100바이트를 더 추가합니다.
16 bytes for the partition key columns + 12 bytes for clustering columns + 3 bytes for the regular column + 100 bytes for row metadata = 131 bytes.
Amazon에서 서버리스 리소스를 모니터링하는 방법을 CloudWatch 알아보려면 을 참조하십시오아마존을 통한 아마존 키스페이스 모니터링 CloudWatch.