Сканирование Dynamodb до конца сегмента - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть большая DynamoDB (не большая, около 20 ГБ), которая содержит элементы с отметками времени истечения. У нас есть 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. Будут ли элементы, которые добавляются из другой части, идти перед последним ключом оценки или все будет после?
  3. Что было бы хорошим показателем для возобновления чтения с начала сегмента?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...