R2DBC можно использовать для сбора измененных данных при загрузке Spring?

У меня есть классическое приложение Spring Boot, подключенное к базе данных MySQL.

Могу ли я использовать драйвер r2dbc и spring data r2dbc для разработки другого приложения, которое прослушивает изменения базы данных, такие как сбор данных изменений?

Я изучил документацию по драйверу r2dbc, но не понимаю, производят ли они реактивные горячие потоки или только холодные потоки. Если это невозможно, я считаю, что мне следует использовать Debezium, как я нашел в этом статья.

Большое спасибо


person Michelantonio Trizio    schedule 20.03.2021    source источник


Ответы (1)


TL;DR

R2DBC - это, прежде всего, спецификация для обеспечения реактивного / неблокирующего взаимодействия с вашей базой данных. Возможности драйвера R2DBC во многом зависят от вашей базы данных.

Более длинная версия

R2DBC определяет набор интерфейсов, включая методы, в которых каждый диалог с базой данных активируется через Publisher. R2DBC не имеет мнения относительно основного проводного протокола. Вместо этого драйвер базы данных, реализующий R2DBC, должен придерживаться своего протокола связи с базой данных. То, что вы получаете через JDBC или ODBC, в значительной степени совпадает с тем, что вы можете ожидать от драйвера R2DBC.

Есть меньшие различия: некоторые драйверы JDBC требуют опроса данных (например, уведомления Postgres Pub / Sub), тогда как в R2DBC поток уведомлений может использоваться без потока опроса, поскольку весь ввод-вывод основан на прослушивании буферов приема и отправка данных после того, как драйвер получит данные. Напротив, JDBC (и почти все императивные API) требует, чтобы кто-то вызвал метод для потребления / получения данных.

Я не уверен, как CDC работает с MySQL; Я думаю, вам нужно сканировать (опрашивать) BINLOG с помощью команд MySQL или протокола MySQL. В настоящий момент драйвер MySQL R2DBC не поддерживает опрос BINLOG.

Postgres имеет аналогичную функциональность (логическое декодирование). Он поддерживается R2DBC Postgres (см. Документацию Логическое декодирование с использованием R2DBC Postgres). В Postgres сервер отправляет журнал репликации клиенту, что дает вам горячий поток, поскольку логическое декодирование подписывается на журнал репликации.

Суть в том, что это зависит от фактической технологии базы данных.

person mp911de    schedule 23.03.2021