Estou prestes a projetar uma solução corporativa para um aplicativo de grande escala no qual um serviço do Windows, MVC e muitos outros projetos usarão um banco de dados, então estou pensando em balanceamento de carga e melhores práticas para organizar meu banco de dados.
Eu tenho duas opções:
- use esquemas diferentes (eu sei que o esquema é muito parecido com uma pasta)
- usar bancos de dados diferentes
Do ponto de vista do design do banco de dados, qual é o melhor e qual é a melhor prática?
Se os bancos de dados residirem no mesmo servidor, então, de uma perspectiva direta de desempenho, usar um único banco de dados dividido por esquema versus vários bancos de dados separados não será diferente. Não há "custo" para chamar o banco de dados A versus o banco de dados B (a menos que ambos estejam configurados para fechamento automático, um "recurso" que você deve evitar como uma praga).
Eu normalmente defendo bancos de dados separados, por vários motivos:
Em uma vida anterior gerenciei um sistema com muitos bancos de dados; eles eram um por cliente com (em grande parte) tabelas/visualizações/procedimentos idênticos. Respondi a várias perguntas aqui com base em minha experiência e conhecimento por meio dessa arquitetura (incluindo algumas desvantagens a serem observadas na primeira resposta):
Ainda não ouvi ninguém argumentar com sucesso sobre o armazenamento de dados diferentes (aplicativos diferentes, clientes diferentes, etc.) no mesmo banco de dados. Acho que qualquer pessoa que optar por fazer isso está confiante de que seus dados nunca ultrapassarão esse servidor ou está se concentrando no objetivo de curto prazo de simplicidade e esforço mínimo (que pode ser bastante míope e mordê-lo a longo prazo) .