Amazon Keyspaces에서 읽기 및 쓰기 처리량의 용량 소비를 추정하는 방법 - Amazon Keyspaces(Apache Cassandra용)

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

Amazon Keyspaces에서 읽기 및 쓰기 처리량의 용량 소비를 추정하는 방법

Amazon Keyspaces에서 데이터를 읽거나 쓸 때 쿼리에서 소비하는 읽기/쓰기 요청 단위 (RRU/WRU) 또는 읽기/쓰기 용량 단위 (RCU/WCU) 의 양은 Amazon Keyspaces가 쿼리를 실행하기 위해 처리해야 하는 총 데이터 양에 따라 달라집니다. 경우에 따라 Amazon Keyspace가 쿼리를 처리하기 위해 읽어야 했던 데이터의 하위 집합이 클라이언트에 반환되는 데이터가 될 수 있습니다. 조건부 쓰기의 경우 조건부 검사가 실패하더라도 Amazon Keyspaces는 쓰기 용량을 소비합니다.

요청에 대해 처리되는 총 데이터 양을 추정하려면 인코딩된 행 크기와 총 행 수를 고려해야 합니다. 이 주제에서는 Amazon Keyspaces가 쿼리를 처리하는 방식과 이것이 용량 소비에 미치는 영향을 보여주기 위해 일반적인 시나리오와 액세스 패턴의 몇 가지 예를 다룹니다. 예제를 따라 테이블의 용량 요구 사항을 추정하고 Amazon을 사용하여 이러한 사용 사례의 읽기 및 쓰기 용량 사용량을 CloudWatch 관찰할 수 있습니다.

Amazon Keyspace의 인코딩된 행 크기를 계산하는 방법에 대한 자세한 내용은 을 참조하십시오. Amazon Keyspaces에서의 행 크기 계산

범위 쿼리

범위 쿼리의 읽기 용량 사용량을 살펴보기 위해 온디맨드 용량 모드를 사용하는 다음 예제 표를 사용합니다.

pk1 | pk2 | pk3 | ck1 | ck2 | ck3 | value -----+-----+-----+-----+-----+-----+------- a | b | 1 | a | b | 50 | <any value that results in a row size larger than 4KB> a | b | 1 | a | b | 60 | value_1 a | b | 1 | a | b | 70 | <any value that results in a row size larger than 4KB>

이제 이 테이블에서 다음 쿼리를 실행합니다.

SELECT * FROM amazon_keyspaces.example_table_1 WHERE pk1='a' AND pk2='b' AND pk3=1 AND ck1='a' AND ck2='b' AND ck3 > 50 AND ck3 < 70;

쿼리에서 다음 결과 세트를 수신하고 Amazon Keyspace에서 수행하는 읽기 작업은 정합성 보장 모드에서 RRU 2개를 소비합니다. LOCAL_QUORUM

pk1 | pk2 | pk3 | ck1 | ck2 | ck3 | value -----+-----+-----+-----+-----+-----+------- a | b | 1 | a | b | 60 | value_1

Amazon Keyspace는 2개의 RRU를 사용하여 값이 있는 행을 평가하고 쿼리를 ck3=60 처리합니다ck3=70. 하지만 Amazon Keyspaces는 쿼리에 지정된 WHERE 조건이 참인 행, 즉 값이 있는 행만 반환합니다. ck3=60 쿼리에 지정된 범위를 평가하기 위해 Amazon Keyspace는 범위의 상한과 일치하는 행을 읽지만 (이 경우ck3 = 70) 결과에 해당 행을 반환하지는 않습니다. 읽기 용량 소비량은 반환된 데이터가 아니라 쿼리를 처리할 때 읽은 데이터를 기준으로 합니다.

쿼리 제한

LIMIT절을 사용하는 쿼리를 처리할 때 Amazon Keyspace는 쿼리에 지정된 조건을 일치시키려고 할 때 최대 페이지 크기까지 행을 읽습니다. Amazon Keyspaces에서 첫 페이지의 LIMIT 값을 충족하는 충분한 매칭 데이터를 찾을 수 없는 경우 페이지를 매긴 호출이 한 번 이상 필요할 수 있습니다. 다음 페이지에서 계속 읽으려면 페이지 매김 토큰을 사용할 수 있습니다. 기본 페이지 크기는 1MB입니다. LIMIT조항을 사용할 때 읽기 용량을 적게 소비하려면 페이지 크기를 줄일 수 있습니다. 페이지 매김에 대한 자세한 내용은 Amazon Keyspaces의 결과 페이지 매김 섹션을 참조하세요.

예를 들어 다음 쿼리를 살펴보겠습니다.

SELECT * FROM my_table WHERE partition_key=1234 LIMIT 1;”

페이지 크기를 설정하지 않으면 Amazon Keyspaces는 행 1개만 반환하더라도 1MB의 데이터를 읽습니다. Amazon Keyspace가 한 행만 읽도록 하려면 이 쿼리의 페이지 크기를 1로 설정하면 됩니다. 이 경우, Amazon Keyspaces는 T ime-to-live 설정 또는 클라이언트 측 타임스탬프를 기반으로 만료된 행이 없는 한 하나의 행만 읽습니다. 읽기 용량을 적게 사용하려면 페이지 크기를 LIMIT 값과 동일하게 설정하여 Amazon Keyspace가 읽는 데이터 양을 줄이는 것이 좋습니다.

테이블 스캔

ALLOW FILTERING옵션을 사용한 쿼리와 같이 전체 테이블 스캔이 발생하는 쿼리는 결과로 반환되는 것보다 더 많은 읽기를 처리하는 쿼리의 또 다른 예입니다. 또한 읽기 용량 소비는 반환된 데이터가 아니라 읽은 데이터를 기준으로 합니다.

테이블 스캔 예제에서는 온디맨드 용량 모드에서 다음 예제 테이블을 사용합니다.

pk | ck | value ---+----+--------- pk | 10 | <any value that results in a row size larger than 4KB> pk | 20 | value_1 pk | 30 | <any value that results in a row size larger than 4KB>

Amazon Keyspace는 기본적으로 4개의 파티션이 있는 온디맨드 용량 모드에서 테이블을 생성합니다. 이 예제 테이블에서는 모든 데이터가 한 파티션에 저장되고 나머지 세 개의 파티션은 비어 있습니다.

이제 테이블에서 다음 쿼리를 실행합니다.

SELECT * from amazon_keyspaces.example_table_2;

이 쿼리로 인해 Amazon Keyspaces가 테이블의 4개 파티션을 모두 스캔하고 정합성 모드에서 6개의 RRU를 소비하는 테이블 스캔 작업이 발생합니다. LOCAL_QUORUM 먼저, Amazon Keyspace는 세 개의 행을 읽는 데 RRU 3개를 사용합니다. pk=‘pk’ 그러면 Amazon Keyspace는 테이블의 빈 파티션 3개를 스캔하는 데 추가로 RRU 3개를 사용합니다. 이 쿼리는 테이블 스캔으로 이어지기 때문에 Amazon Keyspaces는 데이터가 없는 파티션을 포함하여 테이블의 모든 파티션을 스캔합니다.

간단한 트랜잭션

경량 트랜잭션 (LWT) 을 사용하면 테이블 데이터에 대해 조건부 쓰기 작업을 수행할 수 있습니다. 조건부 업데이트 작업은 현재 상태를 평가하는 조건에 따라 레코드를 삽입, 업데이트 및 삭제할 때 유용합니다.

Amazon Keyspace에서는 모든 쓰기 작업에 LOCAL_QUORUM 일관성이 필요하며 LWT 사용에 따른 추가 비용은 없습니다. LWT의 차이점은 LWT 조건 검사 결과가 FALSE인 경우 쓰기 용량 단위를 소비한다는 것입니다. 소비되는 쓰기 용량 단위 수는 행 크기에 따라 달라집니다. 행 크기가 2KB인 경우 실패한 조건부 쓰기는 쓰기 용량 단위 2개를 소비합니다. 해당 행이 현재 테이블에 없는 경우 작업은 쓰기 용량 단위 1개를 소비합니다. 의 ConditionalCheckFailed 메트릭을 모니터링하여 LWT 상태 검사 실패로 인해 소비된 용량을 CloudWatch 확인할 수 있습니다.

Amazon의 읽기 및 쓰기 용량 사용량 추정 CloudWatch

CloudWatch 대시보드를 사용하여 읽기 및 쓰기 용량 사용량을 추정하고 모니터링할 수 있습니다. Amazon Keyspace에 사용할 수 있는 지표에 대한 자세한 내용은 을 참조하십시오. Amazon Keyspaces 지표 및 차원

특정 명세서에서 소비한 읽기 및 쓰기 용량 단위를 모니터링하려면 다음 단계를 따르세요. CloudWatch

  1. 샘플 데이터를 사용하여 새 테이블을 생성합니다.

  2. 테이블에 대한 Amazon Keyspaces CloudWatch 대시보드를 구성합니다. 시작하려면 Github에서 제공하는 대시보드 템플릿을 사용할 수 있습니다.

  3. 예를 들어 ALLOW FILTERING 옵션을 사용하여 CQL 문을 실행하고 대시보드에서 전체 테이블 스캔에 사용된 읽기 용량 단위를 확인합니다.