Estou montando um sistema SaaS, onde planejamos dar a cada cliente seu próprio banco de dados. O sistema já está configurado para que possamos expandir facilmente para servidores adicionais se a carga se tornar muito grande; esperamos ter milhares, ou mesmo dezenas de milhares de clientes.
Perguntas
- 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 "microbancos de dados", não quero dizer "micro"; Quero dizer apenas que estamos visando milhares de clientes, de modo que cada banco de dados individual seria apenas um milésimo ou menos do armazenamento total de dados. Na realidade, cada banco de dados teria cerca de 100 MB, dependendo de quanto uso ele recebe.
A principal razão para usar 10.000 bancos de dados é a escalabilidade. O fato é que a V1 do sistema tem um banco de dados e tivemos alguns momentos desconfortáveis quando o banco de dados estava sobrecarregado.
Estava sobrecarregando CPU, memória, E/S - todos os itens acima. Apesar de termos corrigido esses problemas, eles nos fizeram perceber que em algum momento, mesmo com a melhor indexação do mundo, se formos tão bem-sucedidos quanto esperamos, simplesmente não podemos colocar todos os nossos dados em um grande honkin ' base de dados. Portanto, para a V2, estamos fragmentando, 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 forma isso é resolvido, pois estamos usando VMs no Azure. A razão pela qual a questão surge agora é porque anteriormente estávamos oferecendo apenas para grandes instituições e montando cada uma por nós mesmos. 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 do que as grandes instituições.
Tentamos os Pools Elásticos do Banco de Dados SQL do Azure . O desempenho foi muito decepcionante, então voltamos para as VMs normais.