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