簡體   English   中英

如何掃描Dynamo數據庫中的所有項目?

[英]How to scan all items in dynamo db?

我有以下方法來掃描dynamo db表中的所有項目

async def scan_all(self, parse_item: Callable[[dict], dict], **kwargs) -> List[dict]:
    response = await self._db.scan(**kwargs)
    response_items = response.get('Items', [])
    items = list(parse_item(item) for item in response_items)
    last_evaluated_key = response.get('LastEvaluatedKey', None)
    while last_evaluated_key is not None:
        response = await self._db.scan(ExclusiveStartKey=last_evaluated_key, **kwargs)
        response_items = response.get('Items', [])
        items.extend(parse_item(item) for item in response_items)
        last_evaluated_key = response.get('LastEvaluatedKey', None)
    return items

是正確的方法還是我可以改善它? 使用LastEvaluatedKey的最佳實踐是什么?

好吧,我不確定這是不是更好,但這就是我的做法(閱讀dynamodb文檔):

Map<String, AttributeValue> lastKeyEvaluated = null;

    do {
        ScanRequest scanRequest = new ScanRequest().withTableName(TABLE_NAME)
                .withExclusiveStartKey(lastKeyEvaluated);
        ScanResult result = client.scan(scanRequest);
        for (Map<String, AttributeValue> item : result.getItems()) {

        }
    }while(lastKeyEvaluated != null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM