sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo crear una base de datos multiusuario con estructuras de tablas compartidas?

Sin embargo, hay algunas empresas, por supuesto, que temen que sus datos puedan verse comprometidos, por lo que estamos evaluando otras soluciones.

Esto es desafortunado, ya que los clientes a veces tienen la idea errónea de que solo el aislamiento físico puede ofrecer suficiente seguridad.

Hay un artículo interesante de MSDN, titulado Arquitectura de datos multiusuario , que es posible que desee comprobar. Así es como los autores abordaron el concepto erróneo hacia el enfoque compartido:

Un concepto erróneo común sostiene que solo el aislamiento físico puede proporcionar un nivel adecuado de seguridad. De hecho, los datos almacenados mediante un enfoque compartido también pueden brindar una sólida seguridad de datos, pero requieren el uso de patrones de diseño más sofisticados.

En cuanto a las consideraciones técnicas y comerciales, el artículo hace un breve análisis sobre dónde un determinado enfoque podría ser más apropiado que otro:

El número, la naturaleza y las necesidades de los inquilinos a los que espera servir afectan su decisión de arquitectura de datos de diferentes maneras. Algunas de las siguientes preguntas pueden inclinarlo hacia un enfoque más aislado, mientras que otras pueden inclinarlo hacia un enfoque más compartido.

  • ¿A cuántos posibles inquilinos espera apuntar? Es posible que no esté cerca de poder estimar el uso potencial con autoridad, pero piense en términos de órdenes de magnitud:¿está creando una aplicación para cientos de inquilinos? ¿Miles? ¿Decenas de miles? ¿Más? Cuanto más grande espere que sea su base de inquilinos, más probable será que desee considerar un enfoque más compartido.

  • ¿Cuánto espacio de almacenamiento espera que ocupen los datos del inquilino promedio? Si espera que algunos o todos los inquilinos almacenen grandes cantidades de datos, este enfoque de base de datos separada es probablemente el mejor. (De hecho, los requisitos de almacenamiento de datos pueden obligarlo a adoptar un modelo de base de datos separada de todos modos. Si es así, será mucho más fácil diseñar la aplicación de esa manera desde el principio que pasar a un enfoque de base de datos separada más adelante).

  • ¿Cuántos usuarios finales simultáneos espera que admita el inquilino promedio? Cuanto mayor sea el número, más apropiado será un enfoque más aislado para cumplir con los requisitos del usuario final.

  • ¿Espera ofrecer algún servicio de valor agregado por inquilino, como la capacidad de copia de seguridad y restauración por inquilino? Dichos servicios son más fáciles de ofrecer a través de un enfoque más aislado.

ACTUALIZACIÓN: Además de la actualización sobre el número esperado de inquilinos.

Ese número esperado de inquilinos (10k) debería excluir el enfoque de múltiples bases de datos, para la mayoría, si no todos los escenarios. No creo que le guste la idea de mantener 10 000 instancias de bases de datos y tener que crear cientos de nuevas cada día.

Solo a partir de ese parámetro, parece que el enfoque de esquema único de base de datos compartida es el más adecuado. El hecho de que almacenará solo alrededor de 50 Mb por arrendatario y que no habrá complementos por arrendatario hace que este enfoque sea aún más apropiado.

El artículo de MSDN citado anteriormente menciona tres patrones de seguridad que abordan las consideraciones de seguridad para el enfoque de base de datos compartida:

Cuando esté seguro de las medidas de seguridad de datos de su aplicación, podrá ofrecer a sus clientes un Acuerdo de nivel de servicio que proporciona sólidas garantías de seguridad de datos. En su SLA, además de las garantías, también podría describir las medidas que tomaría para garantizar que los datos no se vean comprometidos.

ACTUALIZACIÓN 2: Aparentemente, los chicos de Microsoft movieron/hicieron un nuevo artículo sobre este tema, el enlace original desapareció y este es el nuevo:Patrones de tenencia de base de datos SaaS de varios inquilinos (Felicitaciones a Shai Kerer)