Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Una base de datos por Usuario.

Estas en el tema de Una base de datos por Usuario. en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 15/12/2014, 10:49
 
Fecha de Ingreso: diciembre-2014
Mensajes: 1
Antigüedad: 9 años, 4 meses
Puntos: 0
Una base de datos por Usuario.

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.
  #2 (permalink)  
Antiguo 15/12/2014, 12:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Una base de datos por Usuario.

Casi en cualquier DBMS lo mejor es tener la segunda opcion, porque tendrias las mismas tablas para cada base de datos, usuarios con permisos diferentes para cada base de datos, archivos de log, ademas de los mantenimientos que al ser por base de datos te podrian causar dolores de cabeza, ahora hablas del rendimiento en una VLDB, para eso existen herramientas en sql server como son los filegroups y las funciones de particion, asi como el uso de filegroups en read-only para no respaldar toda la base de datos sino simplemenete lo nuevo. soluciones existen el chiste es buscar e informarse mas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: diseño, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:06.