Eu tenho a seguinte situação: Eu tenho três máquinas executando bancos de dados postgresql. Uma máquina mantém as informações da conta do cliente (chame esta máquina C), as outras duas máquinas mantêm as informações de log do cliente (chame essas L1 e L2). O motivo da divisão é separar o carregamento em várias máquinas (para que alguns clientes enviem informações de log para L1, alguns para L2 ... e talvez algum tempo para L3, L4, ...).
Ao recuperar informações de log, em geral, eu gostaria de ser JOIN entre as tabelas de log no Ln e as tabelas da conta do cliente no C. Na realidade, não posso fazer JOINs como este (e, mesmo que pudesse, gostaria de para evitar carregar C).
Meu pensamento é replicar as tabelas em C em cada um dos L1, L2, ... para que eu possa fazer as junções. No que diz respeito às tabelas de C, C é mestre e L1, L2, ... são escravos. Mas para as outras tabelas de L1, L2, ... essas máquinas são mestres. Não é exatamente a replicação mestre-mestre e não é exatamente mestre-escravo.
A replicação do postgres (estou executando a versão 9.1) pode ser persuadida a fazer isso ou, se não houver, existem outros pacotes que executariam o trabalho. Em último caso, posso escrever um código que sincronize periodicamente as tabelas (posso tolerar algum atraso), mas seria bom não!
Desde já, obrigado.