Весенняя загрузка, уведомляемая базой данных о любом изменении значений

#database #oracle #spring-boot #triggers #spring-data-jpa

#База данных #Oracle #spring-boot #триггеры #spring-data-jpa

Вопрос:

У меня есть приложение Spring boot. мне нужно обращаться к базе данных / запускать запрос каждые 15 секунд, чтобы проверять значения столбца состояния. Теперь я хотел бы проверить приведенные ниже возможности вместо запроса данных каждые 15 секунд

  1. любой механизм, при котором база данных автоматически уведомляет приложение без явного запроса (триггер и т.д.?) Если да, пожалуйста, поделитесь примером

Комментарии:

1. Есть ли у вас несколько приложений, работающих в одной базе данных?

Ответ №1:

То, на что вы смотрите, обычно известно как CDC (change data capture) и является широко используемым шаблоном проектирования программного обеспечения.

Существуют некоторые коммерческие инструменты, такие как Oracle GoldenGate, Hevo, которые реализуют CDC для базы данных Oracle. Кроме того, есть также некоторые инструменты с открытым исходным кодом, такие как JDBC Connector для Kafka и Debezium (с соединителем, разработанным сообществом), на которые вы, возможно, захотите взглянуть.

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

Комментарии:

1. В дополнение к этому Debezium также можно использовать как библиотеку, встроенную в само Java-приложение, которое, похоже, хорошо подходит для этого варианта использования. В этом случае Apache Kafka не требуется, вам нужно будет самостоятельно позаботиться о сохраняющихся смещениях соединителя.

Ответ №2:

Чтобы сократить количество операций с течением времени, вы можете указать триггер. Возможно, можно следовать другой стратегии — отслеживать размер схем. Например,

 SELECT table_name ,
  round(((data_length   index_length) / 1024), 2) as SIZE_KB
FROM information_schema.TABLES
WHERE table_schema = DATABASE();
  

В этом запросе будут перечислены строки таблицы схемы вместе с их соответствующими размерами в Кб / Мб. Вероятно, можно создать класс обслуживания под ним и отслеживать изменение размера и обновлять ответственную службу с интервалом, скажем, в 25 секунд.

Это может пригодиться! введите описание изображения здесь