Нет - если вы уже получили элемент, вы не получите его снова в той же операции Scan
, даже если он был изменен. Более того, если ваша модификация добавляет новый элемент, этот новый элемент может или не может быть возвращен текущим сканированием - вы не знаете.
Чтобы понять, почему это так, вам нужно понять, как на самом деле работает Scan
:
Хотя DynamoDB не гарантирует какой-либо порядок сортировки между ключами раздела, в их внутренней реализации есть некоторый порядок для этих ключей раздела (основанный на ха sh функция клавиши - вот почему эти ключи также известны в документации к DynamoDB как га sh клавиши ). A Scan
перебирает ключи раздела в этом порядке ha sh и не go назад. Если проверка прошла какую-то позицию в значениях ha sh, она не пройдет ее снова, и, в частности, тот же элемент с тем же ключом разделения не будет получен снова, а новые элементы будут или не будут получены в зависимости от от того, находится ли ключ раздела нового элемента до или после текущей позиции сканирования.
Если вам действительно нужно получать все новые модификации, как они происходят, вам следует рассмотреть возможность использования функции «Поток» в DynamoDB вместо - или в дополнение к - Scan
. Функция Stream в DynamoDB позволяет вам читать все изменения в базе данных по мере их возникновения. Некоторые приложения объединяют как Scan
для чтения существующих элементов, так и поток для чтения элементов, измененных после запуска сканирования.