Qual é a melhor maneira de dividir sites de clientes em uma instalação do PostgreSQL?

1

Eu preciso hospedar vários sites de clientes usando uma instalação do PostgreSQL. Qual é a melhor maneira de dividi-los - por esquema ou por instância?

Os fatores seriam o que torna o administrador mais fácil (especialmente o backup / restauração de sites individuais), o desempenho dos sites e a eficiência geral do uso da memória.

Obrigado Jason

    
por Jason 17.03.2011 / 07:01

1 resposta

1

O "melhor" caminho depende muito do seu caso de uso, no entanto, em meus dias de hospedagem, costumávamos simplesmente dar a cada cliente seu próprio DB, que era DBO em seu banco de dados específico, com permissão apropriada & restrições de login (no Postgres e pg_hba.conf respectivamente) para que eles não pudessem mexer com os dados de outra pessoa.

O Backup / Restore pode ser tratado usando pg_dump (despejar cada banco de dados individualmente para que possam ser facilmente restaurados sem ter que selecionar o arquivo de despejo), e o desempenho / ajuste é o mesmo que qualquer instância média-grande de Postgres.

A divisão por esquema (dentro do mesmo banco de dados) também é uma opção, mas não impõe o mesmo nível de separação que um banco de dados separado, e obviamente você não pode permitir que os clientes criem seus próprios esquemas (ou fazer qualquer outra coisa) que requer DBO) se você fizer isso.

A divisão por instância (servidor Postgres separado para cada cliente) é o nível máximo de separação, mas realmente requer um usuário individual OS para cada cliente (para que o Postgres seja executado em usuários totalmente separados). Esse também é um enorme coletor de memória / recursos: o Postgres (como a maioria dos sistemas de banco de dados) deve idealmente ser a única coisa que está sendo executada em um servidor e apenas uma instância.

    
por 17.03.2011 / 16:13