En término de bases de datos, multitenancy es relevante para tener herramientas a la hora de evaluar el mejor modelo de diseño de tu proyecto o servicio. Repasemos qué puede aportarte multitenancy para que puedas tomar las mejores decisiones a la hora de diseñar tu nuevo proyecto.

Lectura recomendada antes de continuar con la lectura:

¿Qué es multi-tenancy en una base de datos?

El término multitenancy “multitenencia” hace referencia a una arquitectura de aplicación en la que todas las transacciones de base de datos se realizan en un servidor y sirve a múltiples usuarios o proyectos. Tal como comentamos en el post pasado, con un escalado vertical, incrementado el hardware del servidor para escalar.  

Existen 3 formas de diseñar un sistema multitenancy:

1 - Múltiples bases de datos

Aunque esto se consideraría un enfoque válido, la implementación de múltiples bases de datos conlleva muchos problemas relacionados con la escalabilidad y el mantenimiento. La ventaja es que puedes mantener una única lógica en tu aplicación y enrutar a cada usuario a su propia base de datos privada y aislada.

Un único servidor que se conecta a múltiples bases de datos.

Los beneficios de este enfoque incluyen que puedes mantener los datos de cada usuario  aislados del resto y, por lo tanto, más seguros. La principal desventaja es que deberás generar una nueva base de datos para cada nuevo usuario y asegurarte que tu proyecto conecta a la nueva base de datos correcta, antes de realizar consultas para garantizar la seguridad y privacidad del resto de usuarios.

2 - Esquema de base de datos compartida

En este enfoque, solo dispones de un único esquema de datos en el servidor de base de datos. En ella habrá una tabla por ejemplo de usuarios “Customer” y todas las tablas estarán vinculadas directa o indirectamente a esta tabla para garantizar la relación de los datos de cada usuario.

Un servidor que se conecta a una base de datos con un único esquema de datos

La principal ventaja de este modelo es la facilidad al realizar queries de datos y hacer consultas en todo el sistema. La desventaja es que deberás tener mucho cuidado al consultar datos antes de mostrarlos al usuario. Para garantizar que no se filtra información, la consulta necesitará los filtros correspondientes de “Customer” para garantizar que solo se muestren los resultados de usuario al deseado, de lo contrario, podrías exponer información confidencial.

3 - Base de datos única, múltiples esquemas

Este enfoque pretende que cada esquema de datos está aislado de los demás. A diferencia del enfoque “1 - Múltiples bases de datos”, en este deberás tener una tabla donde especificar qué esquema consultar para cada usuario. Así que por cada registro en la tabla de usuarios “Customer” deberás crear un nuevo esquema.

Una base de datos con múltiples esquemas, uno por usuario

Este enfoque tiene los beneficios de tener una única base de datos compartida (lo que hace que sea más fácil de mantener y escalar) y al mismo tiempo mantener aislados los datos de cada usuario. El desarrollo también se vuelve más sencillo ya que no necesitarás aplicar filtros adicionales en cada consulta. La desventaja o ventaja es que como los esquemas no están vinculados entre sí, pueden evolucionar de manera independiente.

Conclusión

El término multitenancy es relevante para tomar las mejores decisiones a la hora de diseñar tu nuevo proyecto. La elección del mejor enfoque dependerá de las necesidades de tu proyecto. Desde ITDO recomendamos el enfoque con un único esquema de base de datos compartida, ya que creemos que cualquier nueva mejora aplicada a un usuario puede ser de utilidad al resto, realizando un único desarrollo más robusto y escalable.

¿Evalúas tu modelo de datos a la hora de desarrollar tu proyecto? ¿Qué enfoque utilizas en tus desarrollos?

Photo by Helloquence on Unsplash

Referencias: