DynamoDb сохранит элементы в течение определенного времени - PullRequest
0 голосов
/ 23 мая 2019

У меня есть этот поток, в котором мы должны сохранять в DynamoDb некоторые элементы в течение определенного времени.После истечения срока действия элементов мы должны позвонить в некоторые другие службы и сообщить им, что срок действия данных истек.

Я думал о двух решениях:

1) Переместитьпроверка срока действия в логике Java: извлечение данных DynamoDb в пакетном режиме, проверка элементов срока действия в Java, после чего удаление данных в пакетном режиме и уведомление других служб.

Существуют некоторые ограничения:

BatchGetItem позволяет получать макс. 100 элементов. BatchWriteItem позволяет удалять макс. 25 элементов

2) Переместить проверку истечения в логику БД: Запрос к DynamoDb, чтобы проверить, какие элементы устарели (и удалить их), и вернуть идентификаторы клиенту, чтобы мы могли уведомить другиеservices.

Опять же, существуют некоторые ограничения:

Набор результатов из запроса ограничен 1 МБ на вызов.

Для обоих решений будет задание, которое будет запускаться периодически, или мы собираемся использовать некоторую лямбду aws, которая будет периодически запускаться и будет вызывать конечную точку из нашего приложения, которое будет удалятьэлемент из базы данных и уведомить другие службы.

У меня вопрос, подходит ли DynamoDb для моего случая, или я должен использовать какую-то реляционную базу данных, которая не имеет такого рода ограничений, как Mysql?Как вы думаете ?Спасибо!

1 Ответ

3 голосов
/ 23 мая 2019

Рассматривали ли вы возможность использования DynamoDB TTL ? Это позволяет вам создать столбец на основе времени в вашей таблице, который DynamoDB будет использовать для автоматического удаления элементов на основе значения времени.

Это не требует никакой реализации с вашей стороны и ограничений по опросам, запросам или пакетированию. Вам нужно будет заполнить столбец TTL, но эта информация может уже присутствовать, если вы используете собственную логику истечения срока действия.

Если другие службы должны быть уведомлены, когда происходит событие TTL, вы можете создать Lambda , который обрабатывает DynamoDB stream и предпринимать действия, когда TTL удаляет событие * Происходит 1012 *.

...