Le recomiendo que lea la Arquitectura de datos de múltiples inquilinos , un documento técnico que analiza las opciones que tiene, y los pros y los contras. Para resumir, ofrece tres opciones:
- DB separadas
- esquemas separados
- esquema compartido
Ahora se encuentra en una etapa de DB separada, que ofrece la mejor separación (aislamiento entre inquilinos), pero es la más difícil de administrar. A medida que crezca y se convierta en cientos de inquilinos, se dará cuenta de que la logística de administrar cientos de bases de datos está lejos de ser trivial. Piense en la copia de seguridad-restauración (ubicación de los archivos respaldados, trabajos, programaciones, etc.). Piense cómo supervisará y administrará la asignación de archivos, el espacio en disco utilizado y el crecimiento de la base de datos en cientos de bases de datos. ¿Piensa cuál será su escenario de alta disponibilidad / recuperación ante desastres en un futuro cercano con 1000 inquilinos? ¿1000 DBs reflejados, 1000 sesiones de envío de registros? Piensa qué pasaría si en 6 meses tu equipo de desarrollo se te acerca y te dice "Sé cómo darle esta increíble característica a nuestro producto, ¡usaremos la Replicación transaccional!", ¿Qué dirás? "claro, déjenme configurar 500 editores,"! No es imposible administrar cientos de bases de datos, pero si planea hacerlo, es mejor que perfeccione sus habilidades de PowerShell y deje de usar las herramientas de administración de la interfaz de usuario en este momento .
Además, debe tener en cuenta que múltiples (cientos) bases de datos tienen un impacto medible en el rendimiento y el costo:
- el espacio en disco físico se usa de manera menos eficiente (cada base de datos debe tener un espacio libre, tendrá ese espacio multiplicado por el número de DB)
- No hay forma de que pueda crear un disco de registro dedicado para tareas intensivas de escritura, tendrá que mover todos esos LDF a un (o más) almacenamiento SSD
- las escrituras de registros serán menos eficientes en las confirmaciones frecuentes, ya que se extienden a través de muchos registros de bloques de registro individuales versus agregados en uno (obtendrá bloques de registro infrautilizados). Vea Qué es un LSN: Número de secuencia de registro para comprender de qué estoy hablando.
Los DB separados tienen algunas ventajas, aunque debido al aislamiento, la principal ventaja es la copia de seguridad / restauración independiente.
Sin embargo, escenarios como el suyo son un candidato perfecto para las bases de datos SQL Azure . Sin administración de espacio en disco, sin necesidad de proporcionar HA / DR, crecer a cientos / miles de bases de datos, etc.