Eu recomendo que você leia Arquitetura de dados com vários inquilinos , um white paper que discute as opções que você tem, e os prós e contras. Para resumir, ele fornece três opções:
- DBs separados
- esquemas separados
- esquema compartilhado
Agora você está no estágio de bancos de dados separados, que oferece a melhor separação (isolamento entre inquilinos), mas é o mais difícil de gerenciar. À medida que você cresce em centenas de inquilinos, percebe que a logística de administração de centenas de bancos de dados está longe de ser trivial. Pense em backup-restauração (localização de arquivos de backup, trabalhos, agendas etc.). Pense em como você irá monitorar e gerenciar a alocação de arquivos, o espaço em disco usado e o crescimento do banco de dados em centenas de bancos de dados. Pense qual será o seu cenário de alta disponibilidade / recuperação de desastres em um futuro próximo com 1000 inquilinos? 1000 DBs espelhados, 1000 sessões de envio de logs? Pense e se em 6 meses sua equipe de desenvolvimento chegar até você e disser "Eu sei como fornecer esse recurso incrível ao nosso produto, usaremos a Replicação Transacional!", O que você dirá? "claro, deixe-me configurar 500 editores,"! Não é impossível gerenciar centenas de bancos de dados, mas se você planeja, é melhor aprimorar suas habilidades no PowerShell e parar de usar as ferramentas de gerenciamento da interface do usuário agora .
Além disso, é necessário considerar que vários (centenas) DBs têm um impacto mensurável no desempenho e no custo:
- o espaço físico em disco é usado com menos eficiência (todo banco de dados deve ter algum espaço livre, você terá esse espaço multiplicado pelo número de bancos de dados)
- Não há como criar um disco de log dedicado para tarefas intensivas de gravação; você precisará mover todos esses LDFs para um (ou mais) armazenamento SSD
- as gravações de log serão menos eficientes nas confirmações frequentes, pois se espalharão por muitos registros individuais de blocos de log versus agregados em um (você obterá blocos de log subutilizados). Consulte O que é um LSN: Log Sequence Number para entender do que estou falando.
Os bancos de dados separados têm algumas vantagens devido ao isolamento, sendo a principal vantagem o backup / restauração independente.
Cenário como o seu, no entanto, é um candidato perfeito para os bancos de dados do SQL Azure . Sem administração de espaço em disco, sem necessidade de fornecer HA / DR, aumentar para centenas / milhares de bancos de dados, etc.