Estou configurando um sistema SaaS, no qual planejamos fornecer a cada cliente seu próprio banco de dados. O sistema já está configurado para que possamos escalar facilmente para servidores adicionais se a carga se tornar muito alta; esperamos ter milhares ou mesmo dezenas de milhares de clientes.
Questões
- Existe alguma limitação prática no número de micro-bancos de dados que você pode / deve ter em um SQL Server?
- Isso pode afetar o desempenho do servidor?
- É melhor ter 10.000 bancos de dados de 100 MB cada, ou um banco de dados de 1 TB?
Informação adicional
Quando digo "micro-bancos de dados", não quero dizer "micro"; Quero apenas dizer que estamos visando milhares de clientes, para que cada banco de dados individual represente apenas um milésimo ou menos do armazenamento total de dados. Na realidade, cada banco de dados ficaria em torno da marca de 100 MB, dependendo de quanto uso ele receber.
O principal motivo para usar 10.000 bancos de dados é a escalabilidade. O fato é que a V1 do sistema possui um banco de dados e tivemos alguns momentos desconfortáveis em que o banco de dados estava sobrecarregado.
Estava sobrecarregando CPU, memória, E / S - todas as opções acima. Embora tenhamos resolvido esses problemas, eles nos fizeram perceber que, em algum momento, mesmo com a melhor indexação do mundo, se tivermos o sucesso que esperamos ter, simplesmente não podemos colocar todos os nossos dados em um grande espaço. ' base de dados. Portanto, para a V2, estamos compartilhando, para que possamos dividir a carga entre vários servidores de banco de dados.
Passei o último ano desenvolvendo essa solução fragmentada. É uma licença por servidor, mas de qualquer maneira isso é resolvido, pois estamos usando VMs no Azure. A razão pela qual a questão surge agora é porque anteriormente estávamos oferecendo apenas a grandes instituições e montando cada uma delas. Nossa próxima ordem de negócios é um modelo de autoatendimento em que qualquer pessoa com um navegador pode se inscrever e criar seu próprio banco de dados. Seus bancos de dados serão muito menores e muito mais numerosos que as grandes instituições.
Tentamos Pools elásticos do banco de dados SQL do Azure . O desempenho foi muito decepcionante, por isso voltamos às VMs regulares.