Установите некоторый триггер, который удаляет строки старше нескольких минут из БД с помощью Spring Boot - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть приложение Java в Spring Boot с Cassandra DB, где я пишу сущности DB Person. Каждый ряд людей в БД должен быть удален, когда ему исполняется 5 минут, поэтому концепция проста:

Некоторый человек добавляется в БД с отметкой времени, и этот человек должен быть удален ровно через 5 минут.

Единственная идея, которая приходит на ум, - это установить Spring Scheduler, который запускается каждую секунду и проверяет каждую строку, истек ли ее срок, и если он есть, то он удаляется.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2020

Поскольку вы используете Cassandra в качестве БД, вы можете использовать функцию TTL Cassandra.

Во время вставки данных вы должны указать значение 'ttl' в секундах. Значение 'ttl' - это время существования данных. По истечении этого времени данные будут автоматически удалены.

Синтаксис TTL в cql будет выглядеть как

INSERT INTO person (name, age) VALUES ('ExampleName', '39') USING TTL 300;
1 голос
/ 02 февраля 2020

вместо того, чтобы запускать Spring Scheduler каждую секунду, вы можете легко создать задачу таймера после каждой записи и, используя TimerTask (Core java), создать задачу, которая будет выполняться через заданный интервал, и удалить запись. PFB полезная ссылка и пример:

https://www.baeldung.com/java-timer-and-timertask

...