Ventajas e inconvenientes de un modelo de datos

21/09/2004 - 08:47 por Xavi | Informe spam
Hola a todos.

Mi empresa está subdividida por departamentos. Cada departamento crea sus
propios albaranes. Entre ellos no existe ninguna relación; es decir, los
albaranes de un departamento sólo los ve ese departamento. Se crea un modelo
de datos relacional y se propone el siguiente modelo:

a) Todos los departamentos compartirán un mismo servidor.
b) Cada departamento tendrá una base de datos independiente con una "copia"
del modelo de datos propuesto.
c) Los datos que sean comunes a todos los departamentos estarán en otra base
de datos y serán replicados en cada una de las bases de datos.

La empresa consta de unos 50 departamentos. Se supone que el número de
albaranes crece bastante rápido y de esta forma, se supone que se optimiza
el acceso a ellos. Igualmente cada base de datos trabajará con vistas
particionadas ya que el número de albaranes es demasiado grande.

Mi propuesta es la de hacer que todos los departamentos estén en una misma
base de datos. Con esto creo que el modelo será más puro, más escalable y
óptimo. Es cierto que las tablas particionadas de albaranes serán 50 veces
más grandes pero no creo que sea ese problema para SQL Server.

Se supone que habrá unos 180 usuarios accediendo al servidor. En mi contra,
se achaca que el rendimiento de SQL Server bajará si todos los usuarios
acceden a una misma base de datos, e incluso, a una misma vista. Yo creo que
no es así, que el rendimiento del servidor no depende de "donde" accedas.
Cabe decir que no se hacen bloqueos de tablas ni de registros ( no es
necesario ) así que, no puede darse el caso de quedar todo "colgado".

¿Cuál os parece más acertado y por qué?

Gracias a todos


Xavi

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
21/09/2004 - 09:39 | Informe spam
Apoyo tu propuesta, Xavi. Creo que la complicación que supone tener que
replicar los datos comunes a distintas bases de datos únicamente por el
tamaño que podría tener una sola no compensa la ventaja de tener los datos
repartidos por bases de datos independientes por departamento.

El rendimiento no tiene porqué bajar por el simple hecho de que todos
los usuarios accedan a las mismas páginas de datos, siempre y cuando no
existan bloqueos exclusivos (y como has comentado que van a ser tablas de
consultas esto no va a suceder nunca)

Si las tablas están bien indexadas tampoco tiene que suponer un problema
el que sean grandes, así que por eso no te tienes que preocupar.

El número de usuarios no es indicativo de la carga que puede tener un
servidor. Puede darse el caso de que se conecten a la misma base de datos
miles de usuarios y sin embargo éstos le supongan un número de transacciones
por segundo muy bajo. En realidad, es esto lo que hay que tener en cuenta a
la hora de dimensionar un servidor: los picos de tps que pueda llegar a
tener (hay un capítulo muy interesante al respecto en el libro "A fondo SQL
Server 2000")


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Xavi" escribió en el mensaje
news:
Hola a todos.

Mi empresa está subdividida por departamentos. Cada departamento crea sus
propios albaranes. Entre ellos no existe ninguna relación; es decir, los
albaranes de un departamento sólo los ve ese departamento. Se crea un


modelo
de datos relacional y se propone el siguiente modelo:

a) Todos los departamentos compartirán un mismo servidor.
b) Cada departamento tendrá una base de datos independiente con una


"copia"
del modelo de datos propuesto.
c) Los datos que sean comunes a todos los departamentos estarán en otra


base
de datos y serán replicados en cada una de las bases de datos.

La empresa consta de unos 50 departamentos. Se supone que el número de
albaranes crece bastante rápido y de esta forma, se supone que se optimiza
el acceso a ellos. Igualmente cada base de datos trabajará con vistas
particionadas ya que el número de albaranes es demasiado grande.

Mi propuesta es la de hacer que todos los departamentos estén en una misma
base de datos. Con esto creo que el modelo será más puro, más escalable y
óptimo. Es cierto que las tablas particionadas de albaranes serán 50 veces
más grandes pero no creo que sea ese problema para SQL Server.

Se supone que habrá unos 180 usuarios accediendo al servidor. En mi


contra,
se achaca que el rendimiento de SQL Server bajará si todos los usuarios
acceden a una misma base de datos, e incluso, a una misma vista. Yo creo


que
no es así, que el rendimiento del servidor no depende de "donde" accedas.
Cabe decir que no se hacen bloqueos de tablas ni de registros ( no es
necesario ) así que, no puede darse el caso de quedar todo "colgado".

¿Cuál os parece más acertado y por qué?

Gracias a todos


Xavi


Respuesta Responder a este mensaje
#2 Xavi
21/09/2004 - 13:55 | Informe spam
Muchas gracias por contestar, Carlos. Una voz experta en mi favor

Incomprensiblemente se va a optar por un sistema, a mi modesto punto de
vista, increíble, de ciencia ficción. Se dividirán los datos en bases de
datos diferentes por departamento y mes-año!!! Os imagináis?? Si hay 50
departamentos en un año tendremos 600 bases de datos!!! Eso se evitaría si
se hace purgado de bases de datos pero ... aún así ... es increible!

Podéis imaginar de qué manera complica la programación de la aplicación, la
elaboración de las consultas, el rendimiento, etc ... El número de
conexiones será alucinante, las joins buff! no quiero ni pensar!

El argumento es muy pobre: Si pasa algo con una base de datos (¿qué puede
pasar???) pues no afecta a los demás departamentos, entonces se hace un
restore de la base de datos del mes actual y ya está.

Yo he propuesto hacer DTS programados para ir haciendo purgados, volcando a
otras bases de datos y haciendo backups de ellas. He asegurado que raramente
pasará algo con los datos ( que no se corrompen! ). Pero no he tenido
suficientes argumentos ...

Con este diseño lamentable, empiezan las tablas a hacerse planas, desaparece
la integridad referencial ... pero eso da lo mismo. En caso de problemas se
quiere tener un plan rápido y eficaz y, a su juicio, el modelo que propongo
no lo da.

Qué más argumentos puedo dar?? Por favor, vosotros que sois super expertos,
cómo puedo llegar a convencer que este modelo es una auténtica basura? Cómo
puedo tener un plan de contingencia rápido en caso de "desaguisado"? Son
realmente infrecuentes estos desaguisados?

Gracias a todos!

Xavi
Respuesta Responder a este mensaje
#3 Adrian D. Garcia
21/09/2004 - 19:43 | Informe spam
Si el diseño fisico de la base de datos contempla de entrada una
distribucion de los objetos en diferentes discos fisicos (por ejemplo, los
indices en un disco y los datos en otro, o determinada tabla distribuida en
3 discos y los indices en otro y las demas tablas en oro mas, y desde ya el
log de transacciones separado siempre de la los archivos/ficheros de la base
de datos) seguramente tendras no solo un mejor rendimiento (normalmente si
separan en 50 bases de datos las ponen a todas en un mismo disco) sino un
costo de administracion y de mantenimiento en varios ordenes de magnitud.
Diles que inviertan en varios discos pequeños y en una buena controladora de
disco que permita multiples canales y veran como el fantasma de lalentitud
desaparece instantaneamente.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Xavi" wrote in message
news:
Hola a todos.

Mi empresa está subdividida por departamentos. Cada departamento crea sus
propios albaranes. Entre ellos no existe ninguna relación; es decir, los
albaranes de un departamento sólo los ve ese departamento. Se crea un


modelo
de datos relacional y se propone el siguiente modelo:

a) Todos los departamentos compartirán un mismo servidor.
b) Cada departamento tendrá una base de datos independiente con una


"copia"
del modelo de datos propuesto.
c) Los datos que sean comunes a todos los departamentos estarán en otra


base
de datos y serán replicados en cada una de las bases de datos.

La empresa consta de unos 50 departamentos. Se supone que el número de
albaranes crece bastante rápido y de esta forma, se supone que se optimiza
el acceso a ellos. Igualmente cada base de datos trabajará con vistas
particionadas ya que el número de albaranes es demasiado grande.

Mi propuesta es la de hacer que todos los departamentos estén en una misma
base de datos. Con esto creo que el modelo será más puro, más escalable y
óptimo. Es cierto que las tablas particionadas de albaranes serán 50 veces
más grandes pero no creo que sea ese problema para SQL Server.

Se supone que habrá unos 180 usuarios accediendo al servidor. En mi


contra,
se achaca que el rendimiento de SQL Server bajará si todos los usuarios
acceden a una misma base de datos, e incluso, a una misma vista. Yo creo


que
no es así, que el rendimiento del servidor no depende de "donde" accedas.
Cabe decir que no se hacen bloqueos de tablas ni de registros ( no es
necesario ) así que, no puede darse el caso de quedar todo "colgado".

¿Cuál os parece más acertado y por qué?

Gracias a todos


Xavi


Respuesta Responder a este mensaje
#4 Carlos Sacristan
22/09/2004 - 09:02 | Informe spam
Xavi, además de la opción de diferentes discos que te comenta Adrián,
existe la posibilidad de crear archivos de grupos (filegroups) en donde ir
creando tablas según creas conveniente, lo cual te permite también restaurar
individualmente cada filegroup si es necesario. Es más, puedes incluso
combinar ambas opciones: tener varios discos pequeños y crear filegroups
dentro de ellos.

El diseño que proponen me parece una barbaridad. Comprendo que quieran
solucionar el riesgo de un problema en una base de datos, pero esto no es
algo que ocurra todos los días (ni mucho menos) y sin embargo lo están
anteponiendo a los demás factores a tener en cuenta: ¿qué pasa con la
integridad referencial? ¿qué tipo de mantenimiento va a tener ese
planteamiento, tanto de administración (creación de bases de datos, backups,
usuarios, permisos) como de programación? No quiero ni imaginarme la
situación en la que haya que buscar una factura de un departamento
desconocido en un rango de fechas más o menos amplio... :-S

Xavi, diles que miren un poco a medio plazo (no digo ya a largo) lo que
supone ese diseño: es un monstruo inmanejable, tanto a nivel de
administración como de desarrollo


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Xavi" escribió en el mensaje
news:
Muchas gracias por contestar, Carlos. Una voz experta en mi favor

Incomprensiblemente se va a optar por un sistema, a mi modesto punto de
vista, increíble, de ciencia ficción. Se dividirán los datos en bases de
datos diferentes por departamento y mes-año!!! Os imagináis?? Si hay 50
departamentos en un año tendremos 600 bases de datos!!! Eso se evitaría si
se hace purgado de bases de datos pero ... aún así ... es increible!

Podéis imaginar de qué manera complica la programación de la aplicación,


la
elaboración de las consultas, el rendimiento, etc ... El número de
conexiones será alucinante, las joins buff! no quiero ni pensar!

El argumento es muy pobre: Si pasa algo con una base de datos (¿qué puede
pasar???) pues no afecta a los demás departamentos, entonces se hace un
restore de la base de datos del mes actual y ya está.

Yo he propuesto hacer DTS programados para ir haciendo purgados, volcando


a
otras bases de datos y haciendo backups de ellas. He asegurado que


raramente
pasará algo con los datos ( que no se corrompen! ). Pero no he tenido
suficientes argumentos ...

Con este diseño lamentable, empiezan las tablas a hacerse planas,


desaparece
la integridad referencial ... pero eso da lo mismo. En caso de problemas


se
quiere tener un plan rápido y eficaz y, a su juicio, el modelo que


propongo
no lo da.

Qué más argumentos puedo dar?? Por favor, vosotros que sois super


expertos,
cómo puedo llegar a convencer que este modelo es una auténtica basura?


Cómo
puedo tener un plan de contingencia rápido en caso de "desaguisado"? Son
realmente infrecuentes estos desaguisados?

Gracias a todos!

Xavi


Respuesta Responder a este mensaje
#5 Xavi
22/09/2004 - 10:15 | Informe spam
Muchas gracias por vuestros consejos. Me alegra saber que pensáis igual que
yo. Supongo que acabará siendo lo que ellos quieran que sea. Me miraré el
tema este de filegroups a ver si puedo extraer alguna cosa más. Supongo que
aquí juega un factor importante: el desconocimiento de SQL Server. Si algo
no lo conozco, no me fío. Y es injusto.

Gracias a todos

Xavi
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida