Динамический планировщик заданий или таймер в PostgreSQL - PullRequest
0 голосов
/ 25 сентября 2018

Случай:

Временная запись вставляется на определенный период времени (например, сейчас () в течение следующих 5 минут) .

Если «соответствующее действие» происходит в течение определенного периода (например, сейчас () + 2 минуты) , то запись удаляется с помощью оператора удаления .

Если период заканчивается, запись должна автоматически удаляться .

На первый взгляд, я хотел бы решить эту проблему в пределах пространства БД.

Возможные решения:

Я нашел два инструмента, которые могут помочь; pg_cron и pgAgent .Я не уверен, будут ли они установлены динамически в реальном времени, не так ли?

Например: (expired_time) et = now () + 10 минут

SELECT cron.schedule('minutes(et) hours(et) * * *', $$DELETE FROM ... $$);

Примечание: Приведенный выше синтаксис является ориентировочным!

Есть ли другой способ или инструмент для этого, всегда в БД?

Tia

1 Ответ

0 голосов
/ 08 октября 2018

После некоторого времени оценки доступных решений это текущая ситуация для людей, которые хотят использовать функцию Time-To-Live ( TTL ) в пределах PostgreSQL .

  • MongoDB :

    Фоновая задача, которая удаляет просроченные документы, запускается каждые 60 секунд.

  • Redis :

    Начиная с Redis 2.6 ошибка истечения составляет от 0 до 1 миллисекунды.

Для Redis существует два fdw s:

  • redis_fdw , которые:

    • is active , но
    • не поддерживает функцию TTL и
  • rw_redis_fdw , который:

    • является не активным ,
    • поддерживает функцию TTL и
    • к сожалению не работает для Pg10.x

Итак, так как я хотел получить высокое разрешение (небольшая ошибка) TTL в Pg10.x Я использовал:

  • Pg9.6 с redis_fdw и
  • Pg10.5 с postgres_fdw .

postgres_fdw redis_fdw PG10.5 ------------> PG9.6 ---------> Redis

PS: структура данных или любая другая функция в данном случае не имеет значения.Только TTL.

ОБНОВЛЕНИЕ

Сейчас rw_redis_fdw поддерживает PostgreSQL10.x и 11.

Следовательно:

           redis_fdw
PG10.5/11  --------->  Redis
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...