읽기 및 쓰기 작업 - Amazon DynamoDB

읽기 및 쓰기 작업

DynamoDB 읽기 작업을 사용하면 파티션 키 값 및 선택적으로 정렬 키 값을 지정하여 테이블에서 하나 이상의 항목을 검색할 수 있습니다. DynamoDB 쓰기 작업을 사용하면 테이블에서 항목을 삽입, 업데이트 또는 삭제할 수 있습니다. 이 주제에서는 이 두 작업의 용량 단위 소비량에 대해 설명합니다.

읽기 작업의 용량 단위 소비량

DynamoDB 읽기 요청은 강력히 일관된 읽기, 최종 읽기 일관성 또는 트랜잭션 읽기 요청일 수 있습니다.

  • 최대 4KB 항목의 강력히 일관된 읽기 요청에는 하나의 읽기 단위가 필요합니다.

  • 최대 4KB 항목의 최종적으로 일관된 읽기 요청에는 절반의 읽기 단위가 필요합니다.

  • 최대 4KB 항목의 트랜잭션 읽기 요청에는 2개의 읽기 단위가 필요합니다.

DynamoDB 읽기 일관성 모델에 대한 자세한 내용은 읽기 정합성 단원을 참조하세요.

읽기 항목 크기는 다음 4KB 배수로 반올림됩니다. 예를 들어, 3,500바이트의 항목을 읽으려면 4KB 항목을 읽을 때와 동일한 처리량이 소비됩니다.

4KB보다 큰 항목을 읽어야 하는 경우, DynamoDB에 추가 읽기 단위가 필요합니다. 필요한 총 읽기 단위 수는 항목 크기 및 최종적으로 일관된 읽기와 강력히 일관된 읽기 중 어느 것을 원하는지에 따라 달라집니다. 예를 들어 항목 크기가 8KB인 경우 강력히 일관된 읽기 1회를 유지하려면 읽기 단위 2개가 필요합니다. 최종적으로 일관된 읽기를 선택하는 경우 읽기 단위 1개가 필요하고 트랜잭션 읽기 요청의 경우 읽기 단위 4개가 필요합니다.

다음 목록은 DynamoDB 읽기 작업이 어떻게 읽기 단위를 소비하는지에 대한 설명입니다.

  • GetItem: 테이블에서 단일 항목을 읽습니다. GetItem에 사용될 읽기 단위 수를 파악하려면 항목 크기를 가져와서 다음 4KB 배수로 반올림합니다. 강력히 일관된 읽기를 지정한 경우, 이 값이 필요한 읽기 단위 수가 됩니다. 최종적으로 일관된 읽기(기본값)의 경우, 이 숫자를 2로 나눕니다.

    예를 들어, 크기가 3.5KB인 항목 하나를 읽는 경우 DynamoDB가 항목 크기를 4KB로 올림합니다. 그리고 크기가 10KB인 항목 하나를 읽는다면 DynamoDB가 항목 크기를 12KB로 올림합니다.

  • BatchGetItem: 하나 이상의 테이블에서 최대 100개의 항목을 읽습니다. DynamoDB는 배치의 각 항목을 개별 GetItem 요청으로 처리합니다. DynamoDB는 먼저 각 항목의 크기를 다음 4KB 배수로 반올림한 후 전체 크기를 계산합니다. 계산 결과는 모든 항목의 전체 크기와 반드시 동일하지는 않습니다. 예를 들어 BatchGetItem이 1.5KB와 6.5KB 크기의 두 항목을 읽는 경우 DynamoDB는 크기를 12KB(4KB + 8KB)로 계산합니다. DynamoDB는 크기를 8KB(1.5KB+6.5KB)로 계산하지 않습니다.

  • Query: 파티션 키 값이 동일한 여러 항목을 읽습니다. 반환되는 모든 항목이 단일 읽기 작업으로 처리됩니다. 이 경우 DynamoDB는 모든 항목의 총 크기를 계산합니다. 그런 다음 DynamoDB는 해당 크기를 다음 4KB 배수로 반올림합니다. 예를 들어, 쿼리가 10개 항목을 반환하여 전체 크기가 40.8KB라고 가정하겠습니다. 이 경우 DynamoDB는 작업 항목 크기를 44KB로 올림합니다. 그리고, 쿼리가 각각 64byte인 항목 1,500개를 반환한다면 누적 크기는 96KB가 됩니다.

  • Scan: 테이블의 모든 항목을 읽습니다. DynamoDB는 스캔으로 반환되는 항목 크기가 아닌 평가할 항목 크기를 계산합니다. Scan 작업에 대한 자세한 설명은 DynamoDB에서 스캔 작업 섹션을 참조하세요.

중요

존재하지 않는 항목에 대해 읽기 작업을 수행하는 경우 DynamoDB는 위에 설명된 대로 읽기 처리량을 계속 사용합니다. Query/Scan 작업의 경우 데이터가 없더라도 읽기 일관성 및 요청을 처리하기 위해 검색된 파티션 수에 따라 추가 읽기 처리량에 대한 요금이 계속 부과됩니다.

항목을 반환하는 모든 작업에서 검색할 속성의 하위 집합을 요청할 수 있습니다. 그러나 이렇게 해도 항목 크기 계산에 영향이 미치지 않습니다. 또한 QueryScan 작업은 속성 값이 아닌 항목 수를 반환하기도 합니다. 항목 수를 가져올 때도 사용되는 읽기 단위의 수는 동일하며, 항목 크기 계산도 똑같이 적용됩니다. 이는 DynamoDB가 수를 늘리기 위해 각 항목을 읽어야 하기 때문입니다.

쓰기 작업의 용량 단위 소비량

쓰기 단위 1은 최대 1KB 크기의 항목에 대해 1회 쓰기를 나타냅니다. 1KB보다 큰 항목을 써야 하는 경우, DynamoDB가 추가 쓰기 단위를 사용해야 합니다. 트랜잭션 쓰기 요청은 최대 1KB 크기 항목의 1회 쓰기를 수행하는 데 2개의 쓰기 단위가 필요합니다. 필요한 총 쓰기 요청 단위 수는 항목 크기에 따라 결정됩니다. 예를 들어 항목 크기가 2KB인 경우 쓰기 요청 1회를 지속하는 데 쓰기 단위 2개가 필요하고, 트랜잭션 쓰기 요청의 경우 쓰기 단위 4개가 필요합니다.

쓰기 항목 크기는 다음 1KB 배수로 반올림됩니다. 예를 들어, 500바이트의 항목을 쓰려면 1KB 항목을 쓸 때와 동일한 처리량이 소비됩니다.

다음 목록은 DynamoDB 쓰기 작업이 어떻게 쓰기 단위를 소비하는지에 대한 설명입니다.

  • PutItem: 테이블에 단일 항목을 씁니다. 이때 기본 키가 동일한 항목이 테이블에 존재하면 이 항목까지 바뀝니다. 프로비저닝된 처리량 소비를 계산할 경우 둘 중 항목 크기가 더 큰 것이 적용됩니다.

  • UpdateItem: 테이블에서 단일 항목을 수정합니다. DynamoDB는 업데이트 전후에 표시되는 항목의 크기를 고려합니다. 이때 할당 처리량을 소비하려면 크기가 더 큰 항목이 반영됩니다. 항목 속성의 하위 집합을 업데이트하더라도 UpdateItem은 할당 처리량(‘사전’ 항목 크기와 ‘사후’ 항목 크기 중 더 큰 것)을 모두 소비합니다.

  • DeleteItem: 테이블에서 단일 항목을 제거합니다. 할당된 처리량 소비는 삭제된 항목의 크기를 기준으로 합니다.

  • BatchWriteItem: 하나 이상의 테이블에 최대 25개의 항목을 씁니다. DynamoDB는 배치의 각 항목을 개별 PutItem 또는 DeleteItem 요청으로 처리합니다(업데이트는 지원되지 않음). DynamoDB가 먼저 각 항목의 크기를 다음 1KB 배수로 반올림한 후 전체 크기를 계산합니다. 계산 결과는 모든 항목의 전체 크기와 반드시 동일하지는 않습니다. 예를 들어 BatchWriteItem이 500바이트와 3.5KB 크기의 두 항목을 쓰는 경우 DynamoDB는 크기를 5KB(1KB + 4KB)로 계산합니다. DynamoDB는 크기를 4KB(500바이트 + 3.5KB)로 계산하지 않습니다.

PutItem, UpdateItemDeleteItem 작업의 경우 DynamoDB는 항목 크기를 다음 1KB로 올림합니다. 예를 들어 크기가 1.6KB인 항목 하나를 업로드하거나 삭제한다면 DynamoDB가 항목 크기를 2KB로 반올림합니다.

PutItem, UpdateItemDeleteItem 작업은 대부분 조건부 쓰기가 가능합니다. 이 경우 사용자가 지정한 표현식이 true로 평가되어야만 작업이 성공적으로 완료됩니다. 표현식이 false로 평가되더라도 DynamoDB는 계속 테이블에서 쓰기 용량 단위를 소비합니다. 사용된 쓰기 용량 단위 수는 항목 크기에 따라 결정됩니다. 이 항목은 테이블의 기존 항목이거나 생성 또는 업데이트하려는 새 항목일 수 있습니다. 예를 들어 기존 항목의 크기가 300KB입니다. 생성 또는 업데이트하려는 새 항목은 310KB입니다. 이 경우 새 항목에 소비되는 쓰기 용량 단위는 310KB입니다.