Я пытаюсь добиться своего рода оптимистической блокировки в DynamoDB, где я вставляю новую запись, основываясь на количестве записей, существующих с данным ключом раздела (таблица использует составной ключ).
Конкретным контекстом будет книга, где каждый документ в книге представляет собой депозит или снятие и содержит такие вещи, как totalBalance
, purchasedItem
(ноль, если депозит), userId
, createDate
и т. д.
Идея состоит в том, что служба (асинхронная) будет извлекать количество записей главной книги для данного пользователя, а также их последнюю запись в начале своего рабочего процесса.Он будет выполнять несколько операций перед обновлением главной книги.Я бы хотел, чтобы последний шаг выполнял TransactWrite
, когда проверка условия гарантирует, что для пользователя существует такое же количество записей в бухгалтерской книге, как и в начале.Если нет, процесс начинается заново.
Я знаю, что DynamoDB поддерживает условные проверки атрибутов для одной записи, но можно ли написать проверку условий, которая проверяет количество записей, возвращаемых запросом?
aws dynamodb query --table-name myLedger --key-condition-expression "userId = :u" --expression-attribute-values '{":u": {"S": "0123abcd"}}' --select "COUNT"