반응형
AWS DynamoDB에서 데이터를 가져오는 방법으로 주로 Query
, GetItem
, 그리고 BatchGetItem
작업을 사용합니다. 이 중 Query
는 테이블에서 하나 이상의 항목을 검색하는 데 사용되며, GetItem
은 특정 항목을 직접 검색하는 데 사용됩니다. 여러 GetItem
요청을 병렬로 실행하기 위해 Promise.all
을 사용할 수도 있습니다.
성능과 비용 차이
- Query
- 성능:
Query
는 단일 요청으로 여러 항목을 검색할 수 있기 때문에 네트워크 지연 시간이 줄어들고, 전체적으로 더 빠른 성능을 제공할 수 있습니다. - 비용:
Query
는 읽기 용량 단위(RCU)를 기반으로 비용이 청구됩니다. 반환된 데이터의 양에 따라 비용이 달라질 수 있습니다.const AWS = require('aws-sdk'); const dynamoDB = new AWS.DynamoDB.DocumentClient(); const params = { TableName: "테이블명", KeyConditionExpression: "PartitionKey = :value", ExpressionAttributeValues: { ":value": "원하는 파티션 키 값" } }; dynamoDB.query(params, function(err, data) { if (err) { console.error("Error", err); } else { console.log("Query succeeded:", data.Items); } });
- 성능:
- GetItem with Promise.all
- 성능: 각
GetItem
요청은 별도의 네트워크 호출을 필요로 하므로,Query
에 비해 네트워크 지연이 더 클 수 있습니다. 그러나Promise.all
을 사용하면 이러한 요청들이 병렬로 실행되므로, 단일GetItem
요청보다는 빠를 수 있습니다. - 비용:
GetItem
은 요청된 각 항목에 대해 RCU를 소비합니다. 따라서, 가져올 항목 수가 많을수록 비용이 증가할 수 있습니다.let keys = [ { "PartitionKey": "값1", "SortKey": "값2" }, { "PartitionKey": "값3", "SortKey": "값4" }, // 여기에 더 많은 키를 추가할 수 있습니다. ]; let requests = keys.map((key) => { return dynamoDB.get({ TableName: "테이블명", Key: key }).promise(); }); Promise.all(requests) .then(results => { console.log("All items:", results); }) .catch(error => { console.error("Error", error); });
- 성능: 각
선택 기준
- 데이터 양과 종류: 적은 양의 특정 항목을 가져와야 할 경우
GetItem
이 더 적합할 수 있습니다. 반면, 특정 범위의 항목을 검색해야 하는 경우Query
가 더 효율적일 수 있습니다. - 응답 시간:
Query
는 일반적으로 더 빠른 응답 시간을 제공합니다. - 비용 예산: 많은 수의 항목을 가져와야 하는 경우,
Query
가 비용 효율적일 수 있습니다.
결론적으로, 어떤 방법을 사용할지는 사용 사례와 요구 사항에 따라 결정되어야 합니다. Query
는 대체로 더 빠르고 비용 효율적이지만, 특정 항목만 필요한 경우에는 GetItem
이 더 적합할 수 있습니다.
반응형
'Applied > AWS' 카테고리의 다른 글
Java에서 aws lambda로 internal invoke 시키기 (0) | 2024.01.20 |
---|---|
nodejs Lambda 함수에서 다른 Lambda 함수 호출하기 (0) | 2023.12.17 |
[AWS] Lambda에서 S3 파일 읽기 실습 (0) | 2022.12.02 |
[AWS] KMS(Key Management Service) 실습 (0) | 2022.11.30 |
Yaml 파일이란? (0) | 2022.09.20 |