@beem7

Какая in-memory база данных поддерживает триггеры во внешний мир, которых можно ждать?

Собственно, требования такие:

1. Чтобы была in-memory.

2. Чтобы поддерживала триггеры вообще. Тут вроде все просто. Да хоть Tarantool.

3. Чтобы триггеры можно было опрашивать извне. То есть пусть не все драйвера (клиентские библиотеки), но некоторые из них должны поддерживать эти триггеры. Чтобы микросервис, использующий эту БД, мог повесить callback на какую-то таблицу - и он бы вызвался, когда в таблицу добавятся данные.
И вот с этим пунктом уже начинается жесткий геморрой. Тот же Tarantool - триггеры-то есть, а вот чтобы какой-то драйвер их пробрасывал вовне, я ничего не нашел абсолютно, кроме одной ишью к одному из драйверов, где разработчик отвечает, что подключение в библиотеке реализовано по сеансовому принципу и поэтому триггеры наружу не поддерживаются и никогда не будут.

4. И не просто опрашивать извне, а чтобы можно было ждать аля await, когда сработает триггер. Допустим, в БД у нас некая очередь, которая иногда пополняется. А в микросервисе есть роут, который опрашивается клиентом по принципу HTTP long polling. Клиент делает запрос, роут вешает триггер... и ждет await'ом, пока триггер не сработает. А как сработает - возвращает данные клиенту, а очередь чистит. И тогда клиент заново делает запрос и все повторяется.

На мой взгляд это вполне логичная идея и даже странно, как это in-memory БД в 2021 году может такого не иметь.

Однако, в том же хваленом Tarantool я не нашел ничего лучшего для этой ситуации, кроме как тупо опрашивать очередь select'ами каждые N*100 мсек. При том, что сами триггеры-то в БД есть.
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Если мне не изменяет память, что-то такое было у Apache Ignite.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы