Це дуже орієнтоване на Java, але API рідних клієнтських баз даних можна з'єднати з джерелами даних JDBC. Вольфрамовий Myosotis - приклад для MySQL, що є власником мосту JDBC.
Вольфрам Enterpriese добре підходить для асинхронного керування кількома майстрами. Я думаю, що це працює для MySQL, PostgreSQL та Oracle. Він може працювати окремо або вбудовано в додаток Java. Я бачив, як це працює для MySQL, але вони стверджують, що PostgreSQL. Їх компонент Replicator є відкритим кодом, але повне рішення має більше деталей і вимагає ліцензійних витрат. Первісні спочатку мали Sequoia для синхронного керування кількома майстрами, але вони відмовилися від неї і створили Вольфрам замість асинхронного мультимайстра - вони вважають масштабування більш стратегічним бізнесом, ніж синхронну послідовність ACID. Вольфрам написаний на Java, отже, саме тому вони пропонують Myosotis з'єднати рідних клієнтів баз даних.
SymmetricDS добре підходить для асинхронних мультимайстрів. Це з відкритим кодом. Він встановлює / видаляє тригери для зйомки оновлень, а не логічного журналу. Він може працювати окремо або вбудовано в додаток Java.
HA-JDBC хороший для синхронного керування декількома майстрами. Він випереджає більш старі програми, такі як C-JDBC та Sequoia. Це з відкритим кодом. Він використовує двофазну фіксацію і працює для PostgreSQL, MySQL, Oracle, SQL Server, Derby, Sybase та багатьох інших через діалекти. Це в основному для вбудованих, тому вбудовуйте в програму Java, щоб перевести її на PostgreSQL. Розподіленими блокуваннями, послідовностями, часом, rand тощо, обробляються jGroups від Redhat / JBoss. Одна приємна особливість - режим транзакції "серійний" замість "паралельний", якщо ваш додаток зазнав тупикових ситуацій і не підтримує відкат. Я успішно використовував цей "серійний" режим для доопрацювання застарілого додатка, який не був відомий DB-кластеру, тому в ньому відсутній код повторної транзакції. Серійний режим врятував день і уникнув неприємного переписування.
H2 хороший для синхронного керування кількома майстрами. Це з відкритим кодом. Він підтримує окремі бази даних або кластери, використовуючи двофазну фіксацію, подібну архітектурі HA-JDBC, але це все в одному, замість того, щоб вимагати додаткового компонента для двофазної фіксації. Не впевнений, чи дійсно він розподіляє блокування самостійно, або залежить від сторонніх виробників, таких як jGroups або Hazelcast.
Будь-яка реплікація, що базується на JDBC, для PostgreSQL та інших баз даних, має потребу в мові JDBC, якщо ваша програма вже не написана на Java. Для MySQL Tungsten Enterprise пропонує додатковий компонент під назвою Myosotis. Я успішно використав це для перенесення PHP / Perl / C / mysqlclient до JDBC, де джерело даних JDBC було джерелом даних про-HA-JDBC, що вказує на 4-вузловий кластер MySQL / InnoDB.
Вольфрам підтримує PostgreSQL в компонентах Replicator і Router, але не впевнений у компоненті Myosotis. Можливо. Компоненти вольфрамового реплікатора / маршрутизатора призначені для асинхронного керування декількома майстрами, але Myosotis може переадресувати вас на альтернативний JDBC-бік, як HA-JDBC або H2 для синхронності.
Якщо є PostgreSQL, який є рідним для мосту JDBC, я хотів би почути про це. Теоретично будь-яку базу даних з драйвером JDBC Type 4 можна з'єднати. Тип 4 JDBC розмовляє з нативним протоколом бази даних так само, як і з власним клієнтським інтерфейсом для цієї бази даних, тому має бути індивідуальне відображення нативних викликів для дзвінків JDBC.