Realmente é difícil justificar o uso de bancos de dados separados. Em
geral, utilizar schemas é sempre mais indicado. Vale a pena lembrar
que existem 3 níveis de compartilhamento num mesmo servidor:

* Cluster, que compartilham a mesma porta, os mesmos processos e a
mesma configuração global (postgresql.conf e pg_hba.conf);
* Bancos de Dados, que compartilham o mesmo cluster mas podem ter
codificação de caracteres distintos e dependendo da configuração,
podem ter usuários distintos (se 'db_user_namespace' for configurado
como ON);
* Shemas, que compartilham o mesmo banco de dados;

Em geral, utilizar mais de um banco de dados pode ser uma boa se:
- Você realmente precisa ter usuários com poderes plenos num banco de
dados sem afetar outras aplicações. Isto é muito incomum, pois é
normal você dar permissões para um usuário em um schema específico.
Mas se você quiser soltar seu estagiário para brincar no seu
servidor... esta pode ser uma opção (mas eu instalaria o PostgreSQL
localmente na máquina dele)
- Você precisa de ambientes de teste, homologação e/ou produção na
mesma máquina. Em geral é melhor deixar seu ambiente de teste em outro
servidor. Você vai descobrir que uma única consulta mal feita no
ambiente de teste pode sentar todo o servidor... melhor evitar isso a
todo o custo! Você também pode criar ambientes isolados em clusters
separados e garantir mais recursos para o ambiente de testes ao
ambiente de produção e ainda deixar os ambientes mais isolados,
utilizando portas distintas.
- Você precisa de bancos de dados com codificações de caracteres
diferentes. Bom... seria ideal você pensar em utilizar utf-8 para
todas as bases se você está nesta situação. Mas isto é uma looooonga
conversa, para lá de complicada.
- Você precisa de configurações de desempenho diferentes para
diferentes aplicações (OLTP x BI por exemplo). Bom, você pode fazer
isso com schemas também... especificando parâmetros por usuário, ao
invés de parâmetros por banco de dados, mas se você quer levar isto
realmente a sério, é melhor criar clusters distintos e melhor ainda,
utilizar servidores distintos.

Conclusão:
Se mais de uma aplicação podem conviver no mesmo servidor e no mesmo
clustrer, então elas podem estar no mesmo banco de dados. Existem
raras casos em que isto não se aplique... mas são exceções e não a
regra.

Criei um pequeno tutorial explicando como unificar vários bancos de
dados distintos utilizando schemas... vide:
http://www.midstorm.org/~telles/2006/09/28/unificando-bases-de-dados-com-schemas/

Atenciosamente,
Fábio Telles

Em 22/08/07, Jorge Vilela<[EMAIL PROTECTED]> escreveu:
> Olá pessoal!
>
> Onde trabalho temos hoje 3 servidores (não conheço bem a configuração deles,
> sei que não são tão bons se comparados a muitos por aí), e agora estamos com
> uma v40 com 8gb mem sobrando.
>
> Então surgiu a idéia de migramos os bancos dessas 3 máquinas para essa v40
> para unificar o maior número possível de tabelas que são usadas em vários
> sistemas sem precisar de replicação.
>
> Para programação usamos PHP e um pouco de JAVA, mas ficariam em um servidor
> separado, deixaríamos a v40 somente para o postgres.
>
> Minha dúvida é: Seria melhor separar uma database para cada sistema e
> abandonar os schemas, ou colocar tudo logo em schemas já que estariam no
> mesmo servidor? Assim eu usaria um schema/db só para as tabelas usadas por
> várias sistemas também.
>
>
> Algum de vocês já passou por isso?
> Schemas podem ser mais fáceis de se usar mas dbs são melhores para se
> gerenciar separadamente não é? Me corrijam se estiver falando abobrinha...
>
>
> []'s
> Jorge Vilela
>

-- 
blog: http://www.midstorm.org/~telles/
e-mail / jabber: [EMAIL PROTECTED]
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a