Estamos apenas começando a entrar em inteligência de negócios em nossa empresa. Temos alguns arquitetos que estão projetando nosso data warehouse e também nossos data marts. Eles estão usando o esquema em estrela para ambos os designs.
Os arquitetos afirmaram que o projeto que estão usando para os mercados é o mesmo, que só precisamos de "outra cópia" dele para qualquer cliente que deseje consultar seu mercado e que os dados podem diferir por mercado.
Nós só tínhamos um mercado para começar. Este foi um AIX LPAR, uma instância de banco de dados DB2 e um banco de dados, com um esquema.
Agora temos pedidos para mais três data marts. Qual é a melhor prática? Devem ser esquemas diferentes dentro do mesmo banco de dados? Cada mart deve ser um banco de dados separado dentro da mesma instância? Devemos ter bancos de dados separados, instâncias separadas?
Qual é a melhor prática aqui de uma perspectiva de implantação e manutenção física? Ou quais diretrizes são usadas para definir quando deve ser qual opção?
Parece que você está olhando para algo semelhante, se não idêntico, a uma arquitetura multilocatário.
Em uma arquitetura multilocatário, todos os inquilinos (clientes, clientes) compartilham algo. Eles podem compartilhar apenas o servidor e o dbms, com cada locatário obtendo um banco de dados privado. Ou eles podem compartilhar o banco de dados, com cada inquilino obtendo um esquema privado. Ou eles podem compartilhar tabelas, onde cada linha em cada tabela contém um identificador de inquilino.
Portanto, há um amplo espectro de opções. Cada um deles provavelmente pode ser considerado uma prática recomendada para alguns aplicativos e uma prática ruim para outros.
Seus arquitetos parecem estar pensando em "um banco de dados por cliente", também conhecido como "nada compartilhado". (Na verdade, isso significa compartilhar apenas o dbms e, geralmente, o servidor.)
Não há realmente uma única melhor prática, devido ao espectro de possibilidades. Você deseja facilitar ao máximo a implantação e a manutenção, mas também deve considerar o que os locatários estão compartilhando.
Bancos de dados privados e separados facilitam alguns tipos de manutenção e dificultam outros tipos de manutenção. Por exemplo, quando os inquilinos não compartilham nada além do servidor e dbms,
Quando os inquilinos compartilham tabelas
Existem outras questões. A recuperação de desastres é muito mais fácil com "nada compartilhado" do que com tabelas compartilhadas (também chamadas de "tudo compartilhado"). Com "nada compartilhado", você pode apenas restaurar um banco de dados. Com "shared everything", você precisa restaurar apenas algumas linhas em cada tabela. O custo do hardware pode ser um problema quando você aumenta. O isolamento de dados e a segurança são mais fáceis com "nada compartilhado", mais difíceis com "tudo compartilhado".