¿Debo crear una nueva base de datos para cada empresa?
Sí - Don Dickinson estaba en el dinero. Sin embargo, vea un refinamiento a continuación.
¿O debería utilizar una base de datos con tablas que tengan un prefijo del nombre de la empresa ?
Lord no! ¡Cambiar las consultas de la base de datos por diferentes para el cliente te volvería loco! Además, es casi seguro que ejecute SQL dinámico (donde el nombre de la tabla se cambia en código antes de ejecutar la consulta), lo que dañaría el rendimiento ya que la mayoría de los servidores prefieren almacenar en caché los planes de consulta y los resultados provisionales. seguir cambiando.
O debería utilizar una base de datos con una de cada mesa y sólo tiene que añadir un campo de identificación de la compañía a las tablas?
Es posible que desee hacer esto si desea tener algún tipo de modelo escalable para sus clientes. Si bien aprovisionar una nueva base de datos para cada cliente le brinda mucha flexibilidad, también implica costos y complejidad. Debe crear una nueva programación de copia de seguridad, tener un modelo de ciclo de vida para tratar con clientes caducados, etc.
Entonces, podría decir que los clientes de "prueba gratuita" y "bronce" están agrupados en una única base de datos, utilizando la compañía id para separarlos; los usuarios "plateados" obtienen su propia base de datos (pero aún conserva el campo customer_id en el esquema, para que no tenga que cambiar las consultas entre dos niveles de clientes), y los clientes "gold" obtienen su propio servidor de base de datos.
Hice algo similar hace algunos años en una empresa de SaaS, y los clientes suelen estar contentos de tener una ruta de actualización en la infraestructura (léase: rendimiento y resistencia), así como las características.
SAS? ¿Software como servicio? –
Lo que has dicho es demasiado vago. ¿Qué representa 'Compañía' en su aplicación? –
sí Software como servicio –