Amazon Keyspaces에서 행으로 작업하기 - Amazon Keyspaces(Apache Cassandra용)

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

Amazon Keyspaces에서 행으로 작업하기

이 섹션에서는 Amazon Keyspaces(Apache Cassandra용)의 행 작업에 대한 세부 정보를 제공합니다. 테이블은 Amazon Keyspaces의 기본 데이터 구조이며 테이블의 데이터는 열과 행으로 구성됩니다.

Amazon Keyspaces에서의 행 크기 계산

Amazon Keyspaces는 한 자릿수 밀리초의 읽기 및 쓰기 성능을 제공하고 여러 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, TEXTVARCHAR 문자열 데이터 유형은 모두 UTF-8 바이너리 인코딩의 유니코드를 사용하여 Amazon Keyspaces에 저장됩니다. Amazon Keyspaces의 문자열 크기는 UTF-8 인코딩된 바이트 수와 같습니다.

  • Cassandra INT, BIGINT, SMALLINTTINYINT 데이터 유형은 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);

이 쓰기 작업에 필요한 총 바이트를 추정하려면 다음 단계를 사용하면 됩니다.

  1. 열에 저장된 데이터 유형의 바이트와 메타데이터 바이트를 더하여 파티션 키 열의 크기를 계산합니다. 모든 파티션 키 열에 대해 이 과정을 반복합니다.

    1. 파티션 키(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
    2. 파티션 키(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
    3. 두 열을 모두 더하여 파티션 키 열의 총 예상 크기를 구합니다.

      8 bytes + 8 bytes = 16 bytes for the partition key columns
  2. 열에 저장된 데이터 유형의 바이트와 메타데이터 바이트를 더하여 클러스터링 열의 크기를 계산합니다. 모든 클러스터링 열에 대해 이 과정을 반복합니다.

    1. 클러스터링 열(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
    2. 클러스터링 열(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
    3. 두 열을 모두 더하여 클러스터링 열의 총 예상 크기를 구합니다.

      6 bytes + 6 bytes = 12 bytes for the clustering columns
  3. 일반 열의 크기를 더합니다. 이 예제에서는 한 자리 정수를 저장하는 열이 하나뿐이며 이 경우 열 ID로 2바이트에 1바이트가 필요합니다.

  4. 마지막으로 인코딩된 총 행 크기를 구하려면 모든 열의 바이트를 더하고 행 메타데이터에 대해 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 섹션을 참조하세요.