Ao desenvolver um aplicativo para vários clientes, planejamos usar um banco de dados diferente para cada cliente. Mas pode haver mais de 1000 clientes (aplicativos).
O PostgreSQL lidará com isso sem problemas?
Alguém já tentou algo semelhante?
Nota: 35 tabelas para cada uma, com até 3000 registros em média, para cada banco de dados.
fonte
Parece uma coisa bagunçada de se fazer do ponto de vista gerencial. Como você planeja fazer backup de tantos bancos de dados? com um script que circula por cada um?
A menos que você tenha um motivo realmente bom, por que não apenas um banco de dados em que a estrutura foi projetada para que todos os dados sejam vinculados a um ID do cliente. Adicione índices / chave estrangeira / chaves primárias com base nesse campo para garantir a integridade dos dados.
Então você só precisa ter uma cláusula where em todas as suas consultas para acessar apenas um ID do cliente. Isso será muito mais simples de manter e é fácil de desenvolver (porque em ambos os casos você precisa permitir a identificação do cliente)
fonte
search_path
faz isso por você.Há pessoas que fazem isso, principalmente para hospedagem compartilhada de servidores.
Pensando nas questões aqui, não há almoço grátis. Você provavelmente poderia fazer isso com esquemas de uma maneira transparente do aplicativo. No entanto, você obtém milhares de esquemas e dezenas de milhares de tabelas, o que apresentará problemas adicionais.
Eu acho que, no geral, a abordagem de vários bancos de dados é a mais correta, considerando seus comentários.
O gerenciamento (como backups) se tornará interessante. Também eu acho que em algum momento as conexões com o db começarão a demorar mais tempo. Se você estiver usando o pg_hba.conf para restringir o acesso (o que você deve fazer), isso também se tornará uma dor de cabeça e você provavelmente desejará criar uma solução para gerar esse arquivo para você ...
fonte
Espero que seja melhor ler este link: 10.000 bancos de dados em um cluster PostgreSQL por Jon Jensen, 2008.
Um trecho:
fonte