Примечание: этот вопрос не о синхронизации базы данных , схема / структура
, проблема
В моем веб-приложении У меня есть сервер базы данных PostgreSQL
(PGS
) и сервер бизнес-логики (отдельный компьютер) (BLS
), который регулярно (каждую минуту или две) запрашивает «SELECT ALL» для PGS
.
Проблема в том, что запрос SELECT ALL может легко возвращать 50-200 МБ каждый раз. Очевидно, что было бы не очень хорошо с точки зрения архитектуры передавать так много данных через Интернет.
Возможное решение
Я хотел бы запустить инструмент diff
для PGS
и сравнить новый запрос с предыдущим (все это должно быть сделано на PGS
). Когда сравнение будет сделано, я бы хотел получить дамп из PGS
и перенести его в BLS
. Я ожидаю, что дамп на основе diff будет намного, намного меньше, чем весь запрос SELECT ALL.
Вопрос
Существует ли какой-либо инструмент сравнения данных для PostgreSQL, который может выполнять сравнения, сравнивающие данные PostgreSQL между 2 таблицами или 2 дампами?
Примечание: Я бы предпочел какой-нибудь программный инструмент с открытым исходным кодом.
Пост-ГРЭС может сделать весь этот материал для Вас без любых дополнительных инструментов. Сервер производит WAL (Журнал с упреждающей записью) файлы, которые содержат все изменения, сделанные на базах данных. Я думаю, в чем Вы действительно нуждаетесь, передает репликацию потоком. Чтение о:
, Если Вы действительно не хотите говорить о синхронизации схемы базы данных / структура, можно интересоваться решение, описанное в этом ответе.