Копирование некоторых с сервера PostgreSQL на другой - PullRequest
0 голосов
/ 14 сентября 2009

Мне нужно приложение, которое может периодически передавать выбранные строки из базы данных PostgreSQL по сети на второй сервер PostgreSQL. Обычно это самые последние строки, добавляемые, извлекаемые и передаваемые каждые 10-30 секунд.

Основные серверы работают в среде MS Windows с высокой задержкой и иногда прерывистым сетевым подключением. Поэтому любое приложение должно быть терпимо к этому и в идеале автоматически повторно подключать / повторно отправлять данные, которые не могут быть переданы. Из-за условий и требований полный пакет репликации не требуется.

Я ценю любую помощь в решении этой проблемы.

Ответы [ 2 ]

1 голос
/ 15 сентября 2009

Я думаю, что самым простым способом было бы добавить в таблицу последовательный столбец (change_id), который будет автоматически обновляться с помощью триггера обновления и вставки.

Подчиненная база данных будет периодически подключаться к мастеру и делать что-то подобное в псевдокоде:

for
    select *
    into row
    from master.tablename
    where change_id>(select max(change_id) from slave.tablename)
loop
    delete from slave.tablename where id=row.id;
    insert into slave.tablename values (row.*);
end loop;

Это не поддерживает удаление строк на главном, поэтому я бы также создал триггер удаления (и усечение в 8.4 или новее), который просто выдает ошибку.

1 голос
/ 14 сентября 2009

Я полагаю, что гигантский репликатор может удовлетворить ваши потребности. Это полнофункциональные системы, которые можно масштабировать для поддержки репликации одной таблицы.

http://www.commandprompt.com/products/mammothreplicator/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...