#database #oracle #spring-boot #triggers #spring-data-jpa
#База данных #Oracle #spring-boot #триггеры #spring-data-jpa
Вопрос:
У меня есть приложение Spring boot. мне нужно обращаться к базе данных / запускать запрос каждые 15 секунд, чтобы проверять значения столбца состояния. Теперь я хотел бы проверить приведенные ниже возможности вместо запроса данных каждые 15 секунд
- любой механизм, при котором база данных автоматически уведомляет приложение без явного запроса (триггер и т.д.?) Если да, пожалуйста, поделитесь примером
Комментарии:
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 секунд.