【问题标题】:Scan DynamoDB table is not returning data扫描 DynamoDB 表未返回数据
【发布时间】:2018-12-05 21:51:35
【问题描述】:

我正在尝试从没有任何索引的 dynamodb 数据库表中扫描失败的令牌计数。它从数据库返回 0。我怀疑它没有扫描完整的数据库。下面是我的方法和dynamoDBClient 工作条件一,它有连接细节。我在这里只发布扫描查询部分

public int getFailedAuthStatusCount() {

    Map<String,String> expressionAttributesNames = new HashMap<>();
      expressionAttributesNames.put("#status","auth_status");

    Map<String, AttributeValue> expressionAttributeValues = new HashMap<String, AttributeValue>();
    expressionAttributeValues.put(":val", new AttributeValue().withS("FAIL"));

    ScanRequest scanRequest = new ScanRequest()
              .withTableName("Token")
              .withFilterExpression("#status = :val")
              .withExpressionAttributeNames(expressionAttributesNames)
              .withExpressionAttributeValues(expressionAttributeValues);
    ScanResult scanResult = dynamoDBClient.scan(scanRequest); //client is working fine.
    return scanResult.getCount();
  }

这是回复。

{Items: [],Count: 0,ScannedCount: 1456,LastEvaluatedKey: {GUID={S: 0c4b281e6f9290c0fb3bf13f28c88fd,}, VENDOR={S: DELL,}},}

我的请求有什么问题?

【问题讨论】:

标签: java amazon-dynamodb dynamodb-queries


【解决方案1】:

您的请求没有问题。扫描时,您必须继续以先前的LastEvaluatedKey 作为下一个请求的ExclusiveStartKey 重新提交请求,直到您在响应中不再收到LastEvaluatedKey。

您的第一个请求仅评估表中的前ScannedCount: 1456 项(≈ 1MB 数据)。

见https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.Pagination

在所有数据库环境中,表扫描都是缓慢且昂贵的。这就是为什么索引很重要的一个关键原因。由于可用的低级 API,DynamoDB 使这一点更加明显。

【讨论】:

    猜你喜欢
    • 2020-07-01
    • 2021-05-25
    • 2017-09-10
    • 2019-05-25
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多