Em 20 de abril de 2011 14:38, Wagner Porto de Souza <[email protected]> escreveu: > Boa tarde ! > Pessoal, > hoje temos aqui na empresa um sistema com vários banco de dados Firebird, > sua estrutura foi construida de modo que a cada novo cliente eu tenho um > novo DB (Hoje tenho 84 bancos com a mesma estrutura e a tendência e > crescer). > Cada cliente está vinculada a uma empresa, > hoje são duas empresas que compartilham o mesmo banco para > clientes/faturamento/serviços > que são separados pelo " id " de cada empresa, ainda em 2011 serão 3 > empresas. > > A intenção e unir tudo em um unico banco para simplificar a administração.
Perfeito. > Gostaria de opiniões sobre a melhor forma de estruturar esse banco com > PostgreSQL > com Schemas separados ou Registros separados por Id ? Depende. Fazer com que todos os clientes utilizem os mesmos objetos implica em: * Todos utilizam exatamente a mesma estrutura, sem adaptações exclusivas para determinados clientes. * Você terá de alterar boa parte da estrutura das tabelas para acomodar o novo campo e isso significa alterar também a aplicação. Se você já está migrando de um SGDB para outro, talvez você já esteja prevendo algumas alterações, esta não é tão complexa. * Se as bases crescerem muito, você pode querer particionar algumas tabelas. Se vários clientes utilizam a mesma tabela, isso pode ocorrer com maior frequência. * As alterações na estrutura vão ocorrer de uma vez só para todos os clientes. Isso pode ser bom, pois dá menos trabalho. Também pode ser ruim, se um dos clientes estiver resistente a adotar uma nova versão. * Você vai ter de tomar alguns cuidados especiais para que os dados de um cliente não sejam vistos por outro cliente. Implementar acesso por meio de funções ou visões onde o nome do cliente é um dos parâmetros pode ser uma forma segura de fazer isso; * A parte de GRANTs deve ser estudada com mais cuidado. O cliente não deve em hipótese nenhuma ter acesso direto às tabelas. A outra opção é óbvia: manter um esquema para cada cliente. Uma 3ª opção é fazer um mix disso. Um esquema comum para vários clientes com objetos comuns à todos e esquemas específicos com objetos de cada cliente. Só conhecendo bem a sua aplicação para dizer qual é a melhor opção. Todas são viáveis e podem ser executadas com êxito e segurança. Cada uma tem vantagens e desvantagens. Espero ter ajudado mais do que confundido. -- Atenciosamente, Fábio Telles Rodriguez blog: http://www.midstorm.org/~telles/ e-mail / gtalk / MSN: [email protected] Skype: fabio_telles _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
