Dynamodb扫描到段末

时间:2018-11-13 09:44:33

标签: amazon-dynamodb

我有一个大型DynamoDB(大约20GB并不大),可以存放带有到期时间戳的项目。 我们有32个并行扫描器读取数据库,而其他条目则从系统的其他部分添加到数据库中。 这是我们目前拥有的代码

    val scanRequest = ScanRequest
        .builder()
        .tableName(tableName)
        .filterExpression("expiryDate < :date")
        .expressionAttributeValues(mapOf(":date" to expiredThreshold).asAttributeValueMap())
        .totalSegments(totalSegments)
        .segment(segment)
        .limit(1000)
        .exclusiveStartKey(lastEvaluatedKey)
        .build()

    val scanResult = client.scan(scanRequest).asDeferred().await()

    lastEvaluatedKey = scanResult.lastEvaluatedKey()

我对此模式有一些担忧。

  1. 是否会在一段时间内达到每个细分的结尾?如果是这样,我们怎么知道是否已经达到终点?
  2. 从其他部分添加的项目会在lastEvaluatedKey之前还是在所有之后?
  3. 从段的开头重新开始阅读是一个很好的指示吗?

0 个答案:

没有答案