Получить только обновленные поля вместе с идентификаторами в потоке DynamoDB

Есть ли способ получить ТОЛЬКО обновленные поля в объекте вместе с некоторыми другими атрибутами (то есть идентификаторами для этого объекта, будь то первичный ключ или что-то еще) В документации amazon: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html Я вижу, у нас есть четыре варианта : ТОЛЬКО КЛЮЧИ, НОВОЕ ИЗОБРАЖЕНИЕ, СТАРОЕ ИЗОБРАЖЕНИЕ, НОВЫЕ И СТАРЫЕ ИЗОБРАЖЕНИЯ Единственный возможный способ, который я вижу прямо сейчас, чтобы получить все обновленные атрибуты вместе с идентификатором, - это использовать NEW_AND_OLD_IMAGES, а затем перекрестную проверку каждого атрибута в НОВОМ ИЗОБРАЖЕНИИ против СТАРОГО ИЗОБРАЖЕНИЯ. Есть ли лучший способ сделать это?


person Ahmed    schedule 10.02.2021    source источник


Ответы (1)


Нет, нет никакого способа сделать то, на что вы надеетесь. Вы можете представить себе пятый StreamViewType, в котором хранятся только ключ и обновленные атрибуты, но, к сожалению, DynamoDB Streams его не поддерживает.

Интересно, хотя я сомневаюсь, что это поможет вам, ReturnValues действительно поддерживает режим, который вы хотели - см. UPDATED_NEW в документация UpdateItem. Но, увы, это не поддерживается потоками DynamoDB.

Если вы хотите использовать альтернативы DynamoDB, есть Scylla Alternator с открытым исходным кодом, который совместим с DynamoDB и DynamoDB Streams, а его реализация Streams основана на CDC Scylla (сбор данных об изменениях), который может захватывать дельты точно так, как вы надеялись. Эти дельты в настоящее время не представлены в API-интерфейсе Scylla, совместимом с DynamoDB Streams, поскольку он не является частью этого API, но такую ​​функцию можно добавить довольно легко.

person Nadav Har'El    schedule 11.02.2021
comment
Да, кажется, что это невозможно сделать через потоки DynamoDB. Я просто получу JSON DIFF между СТАРЫМ ИЗОБРАЖЕНИЕМ и НОВЫМ ИЗОБРАЖЕНИЕМ, чтобы получить обновленные значения. А за ссылку спасибо, посмотрю - person Ahmed; 11.02.2021