Это сильно ориентировано на Java, но собственные API-интерфейсы клиента базы данных могут быть соединены с источниками данных JDBC. Mygsotis из вольфрама является примером MySQL, встроенной в мост JDBC.
Tungsten Enterpriese хорош для мультимастерного асинхронного. Я думаю, что это работает для MySQL, PostgreSQL и Oracle. Он может работать автономно или встраиваться в приложение Java. Я видел, как это работает для MySQL, но они утверждают, PostgreSQL. Их компонент Replicator имеет открытый исходный код, но полное решение состоит из нескольких частей и требует затрат на лицензирование. Первоначально у Continuent была Sequoia для одновременной работы нескольких мастеров, но они отказались от нее и создали Tungsten вместо асинхронной работы с несколькими мастерами - они считают, что масштабирование бизнеса более стратегически важно, чем синхронная согласованность ACID. Вольфрам написан на Java, поэтому они предлагают Myosotis для мостового подключения клиентов баз данных.
SymmetricDS хорош для асинхронного мультимастера. Это с открытым исходным кодом. Он устанавливает / удаляет триггеры для захвата обновлений, а не ведение журнала. Он может работать автономно или встраиваться в приложение Java.
HA-JDBC хорош для одновременной работы нескольких мастеров. Это заменяет старое несуществующее программное обеспечение как C-JDBC и Sequoia. Это с открытым исходным кодом. Он использует двухфазную фиксацию и работает для PostgreSQL, MySQL, Oracle, SQL Server, Derby, Sybase и многих других через диалекты. Он в основном для встраиваемых систем, поэтому встраивайте его в Java-приложение, чтобы связать его с PostgreSQL. Распределенные блокировки, последовательности, время, ранд и т. Д. Обрабатываются jGroups из Redhat / JBoss. Приятной особенностью является режим транзакции «последовательный», а не «параллельный», если ваше приложение столкнулось с блокировками и не поддерживает откат. Я успешно использовал этот «последовательный» режим для модернизации устаревшего приложения, которое не было осведомлено о кластере БД, поэтому в нем отсутствовал код повторной транзакции. Последовательный режим спас день и избежал неприятного переписывания.
Н2 хорош для одновременного использования нескольких мастеров. Это с открытым исходным кодом. Он поддерживает автономные базы данных или кластеры с использованием двухфазной фиксации, аналогично архитектуре HA-JDBC, но все в одном, вместо того, чтобы требовать дополнительный компонент для двухфазной фиксации. Не уверен, что он сам распределяет блокировки или зависит от сторонних разработчиков, таких как jGroups или Hazelcast.
Любая репликация на основе JDBC для PostgreSQL и других баз данных требует нативного моста JDBC, если ваше приложение уже не написано на Java. Для MySQL Tungsten Enterprise предлагает дополнительный компонент под названием Myosotis. Я успешно использовал это для соединения PHP / Perl / C / mysqlclient с JDBC, где источником данных JDBC оказался прокси-источник данных HA-JDBC, указывающий на 4-узловый кластер MySQL / InnoDB.
Tungsten поддерживает PostgreSQL в своих компонентах Replicator и Router, но не уверен насчет компонента Myosotis. Может быть. Компоненты Tungsten Replicator / Router предназначены для асинхронной работы нескольких мастеров, но Myosotis может соединить вас с альтернативным внутренним интерфейсом JDBC, таким как HA-JDBC или H2, для синхронного.
Если есть PostgreSQL, родной для моста JDBC, я хотел бы услышать об этом. Теоретически, любая база данных с драйвером JDBC типа 4 может быть соединена мостом. JDBC типа 4 говорит на собственном протоколе базы данных так же, как и на собственном клиентском интерфейсе для этой базы данных, поэтому должно быть однозначное сопоставление собственных вызовов с вызовами JDBC.