Hola soy nuevo en el foro y comienzo con una duda:
Tengo un sistema el cual soporta unas cuantas miles de empresas y cada empresa hasta 50 usuarios.
mi duda es: ¿es viable hacer una base de datos por cada empresa?
teniendo una base de datos sysDb es ta base de datos principal almacenará los registros de las empresas así como el nombre e la base de datos asociada a esa empresa, por ejemplo:
sysDb {
tb empresa = ['idEmpresa', 'dbName', 'fechaDeRegistro','Ultimo cambio'...],
tb sysAdmin = ['idAdmin','nombreAdmin', 'sha1pass']
}
Algo así, cuando se agrega una empresa se crea una nueva base de datos
y el nombre de la base de datos de guarda asociado aun registro en la tabla empresa de la base de datos sysDb...
Si el sistema comienza a tener unas 3,000 empresas registradas o hasta 6,000...
Al final la cintada de bases de datos serán miles en una solo instancia SQL server.
Ahora bien, ¿Es contraproducente tener miles de bases de datos en una instancia SQL server? ó ¿Seria mejor usar una sola base de datos con laves foráneas para identificar il ID de la empresa y asociarlo con el resto de los registro, siendo el ID de la empresa una llave primario y la llave foranea de todos los registros de las otras tables relacionadas con la empresa?
La primera opción le veo la ventaja de que si se quiere hacer un respaldo de una sola empresa se hace el respaldo de su base de datos corespondiente, ademas la base de datos serian individuales y al ser mas pequeñas, [pienso], las consultas a esa base de datos serían más rápidas... Pero al final tendría miles de bases de datos pequeñas por cada empresa.
la segunda opción ya he tenido un tanto de experiencia, así he trabajado desde hace tiempo, el problema es que la base de daos se hace tan grande y respaldar la continuamente es un problema por por que llega a pesar un par de cientos de GB incluso teras... y comienzan los interbloqueos de tablas cuando hay muchos usuarios conectados.
No he probado la segunda opción y no se si sea viable, pero suena más manteniente...
¿Qué opinas? Con la experiencia de algunos ¿Qué les ha funcionado mejor?
No soy un experto en SQL server y no se si es mejor Oracle para este tipo de sistemas. Acepto sugerencias y experiencias.