Estoy configurando un sistema SaaS, donde planeamos dar a cada cliente su propia base de datos. El sistema ya está configurado para que podamos escalar fácilmente a servidores adicionales si la carga se vuelve demasiado grande; esperamos tener miles, o incluso decenas de miles de clientes.
Preguntas
- ¿Existe alguna limitación práctica en la cantidad de micro bases de datos que puede / debe tener en un SQL Server?
- ¿Puede afectar el rendimiento del servidor?
- ¿Es mejor tener 10,000 bases de datos de 100 MB cada una, o una base de datos de 1 TB?
Información Adicional
Cuando digo "micro bases de datos", en realidad no quiero decir "micro"; Solo quiero decir que apuntamos a miles de clientes, por lo que cada base de datos individual solo representaría una milésima parte o menos del almacenamiento total de datos. En realidad, cada base de datos estaría alrededor de los 100 MB, dependiendo de la cantidad de uso que obtenga.
La razón principal para usar 10,000 bases de datos es la escalabilidad. El hecho es que V1 del sistema tiene una base de datos, y hemos tenido algunos momentos incómodos cuando el DB se estaba esforzando bajo la carga.
Estaba agotando la CPU, la memoria, las E / S, todo lo anterior. A pesar de que solucionamos esos problemas, nos hicieron darnos cuenta de que en algún momento, incluso con la mejor indexación del mundo, si tenemos el éxito que esperamos, simplemente no podemos poner todos nuestros datos en una gran honkin 'base de datos. Entonces, para V2 estamos fragmentando, por lo que podemos dividir la carga entre múltiples servidores de bases de datos.
Pasé el último año desarrollando esta solución fragmentada. Es una licencia por servidor, pero de todos modos eso se soluciona ya que estamos usando máquinas virtuales en Azure. La razón por la que surge la pregunta ahora es porque anteriormente solo ofrecíamos a grandes instituciones y creábamos cada una de nosotros. Nuestro siguiente orden del día es un modelo de autoservicio en el que cualquier persona con un navegador puede registrarse y crear su propia base de datos. Sus bases de datos serán mucho más pequeñas y mucho más numerosas que las grandes instituciones.
Probamos los conjuntos elásticos de Azure SQL Database . El rendimiento fue muy decepcionante, por lo que cambiamos a máquinas virtuales normales.