Site A will be generating a set of records. Nightly they will backup their database and ftp it to Site B. Site B will not be modifying those records at all, but will be adding more records and other tables will be creating FK's to Site A's records.
So, essentially, I need to setup a system to take all the incremental changes from Site A's dump (mostly inserts and updates, but some deletes possible) and apply them at Site B.
At this point, we're using Postgres 8.3, but could upgrade if valuable.
I believe I can do this relatively straight-forwardly with Bucardo but I'd love to hear alternatives (or confirmation of Bucardo) before I setup a linux box to test it out.
Most every replication solution would do your trick. The Postgres Wiki has a chapter on the topic. But your case is simple enough. I would just use dblink.
This is generalized from a working implementation of mine:
Create a view in the master db that returns updated rows.
Let's call it
myview
.Create one function per table in the slave db that fetches rows via dblink:
my_user
. Schedule a cronjob or something.In PostgreSQL 9.1 or later there is also the new CREATE FOREIGN TABLE. Might be more elegant.