arquitectura de base de datos multiusuario [cerrado]

Estoy creando una aplicación SAAS y estamos discutiendo sobre una base de datos por cliente frente a las bases de datos compartidas. He leído mucho, incluido algunos temas aquí en SO, pero todavía tengo muchas dudas.

Nuestra plataforma debe ser altamente personalizable por cada cliente. (deben poder tener tablas personalizadas y agregar campos personalizados a las tablas existentes). El enfoque de base de datos múltiple parece grande en este caso.

El problema es. ¿Mi tabla de "usuarios" debe estar en la base de datos maestra o en cada base de datos de clientes? Un usuario puede tener una o más organizaciones, por lo que estaría presente en varias bases de datos. Además, ¿qué pasa con las tablas genéricas como la tabla de países, etc.?

Tiene sentido estar en la base de datos maestra. Pero tengo muchas tablas con un campo created_by que tienen una clave externa para el usuario. También tiene algunas tablas relacionadas con el permiso por cliente.

Perdería el poder de las claves externas si varias bases de datos, lo que significa más consultas a la base de datos. Sé que puedo usar la combinación cruzada entre bases de datos si están en el mismo servidor, pero luego pierdo la escalabilidad. (Puede que tenga que tener varios servidores de bases de datos en el futuro). He enseñado acerca de las tablas federadas. No estoy seguro sobre el rendimiento.

Las tecnologías que estoy usando son php y symfony 2 framework y mysql para la base de datos.

Además, me da miedo el mantenimiento de este sistema. Podríamos crear algunos scripts para automatizar los cambios de esquema en todas las bases de datos, pero si tenemos 10k clientes eso significaría 10k bases de datos.

¿Cuál es tu opinión sobre esto? La característica principal de mi aplicación debe ser la flexibilidad, por lo que si un cliente necesita algo más específico que la plataforma base no tiene, debería ser posible para él.

Respuestas a la pregunta(1)

Su respuesta a la pregunta