Estamos construyendo una plataforma web que incorpora múltiples servicios, cada uno con sus propios datos subyacentes. Estos servicios se construyen de forma independiente siguiendo los principios de la Arquitectura Orientada a Servicios , pero realizan transacciones contra datos potencialmente relacionados. Estamos considerando si estos servicios deberían compartir una gran base de datos o si cada uno tiene su propia base de datos. (Estamos planeando usar SQL Server 2008 Enterprise en un clúster de Windows 2008).
Algunas de las ventajas de cada enfoque que ya hemos considerado incluyen:
Base de datos única
- Los datos relacionados de diferentes servicios pueden estar unidos por restricciones de clave externa
- Los extractos analíticos son más simples de escribir y más rápidos de ejecutar.
- En caso de desastre, es más fácil restaurar la plataforma a un estado consistente
- Para los datos a los que hacen referencia varios servicios, es probable que otro servicio utilice los datos almacenados en caché poco después.
- La administración y el monitoreo son más simples y económicos por adelantado
Múltiples bases de datos
- El trabajo de mantenimiento, los problemas de hardware, las infracciones de seguridad, etc., no afectan necesariamente a toda la plataforma.
- Suponiendo que cada base de datos esté en un hardware separado, la ampliación de varias máquinas produce más beneficios de rendimiento que la ampliación de una gran
Desde una perspectiva operativa, ¿es más ventajoso que cada servicio en esta plataforma obtenga su propia base de datos o que todos vayan en la misma base de datos? ¿Qué factores clave informan una respuesta a esta pregunta?