Estamos construindo uma plataforma web que incorpora vários serviços, cada um com seus próprios dados subjacentes. Esses serviços estão sendo construídos de forma independente, seguindo os princípios da Arquitetura Orientada a Serviços , mas são negociados com dados potencialmente relacionados. Estamos considerando se esses serviços devem compartilhar um grande banco de dados ou se cada um possui seu próprio banco de dados. (Planejamos usar o SQL Server 2008 Enterprise em um cluster do Windows 2008).
Algumas das vantagens de cada abordagem que já consideramos incluem:
Banco de dados único
- Relacionar dados de diferentes serviços pode ser vinculado por restrições de chave estrangeira
- Extratos analíticos são mais simples de escrever e mais rápidos de executar
- No caso de um desastre, é mais fácil restaurar a plataforma para um estado consistente
- Para dados referenciados por vários serviços, é provável que os dados armazenados em cache por um serviço sejam usados logo depois por outro serviço
- A administração e o monitoramento são mais simples e baratos antecipadamente
Vários bancos de dados
- Trabalhos de manutenção, problemas de hardware, violações de segurança e outros fatores não afetam necessariamente toda a plataforma
- Supondo que cada banco de dados esteja em hardware separado, a expansão de várias máquinas gera mais benefícios de desempenho do que a expansão de uma grande
De uma perspectiva operacional, é mais vantajoso que cada serviço nesta plataforma obtenha seu próprio banco de dados ou que todos eles entrem no mesmo banco de dados? Quais fatores-chave informam uma resposta a esta pergunta?