Millones de Registros

16/05/2006 - 15:48 por Alf | Informe spam
Si alguien ha tenido experiencia o tiene, en una base de datos que soporten
tablas de millones de registros, me gustaría preguntaros lo siguiente:

Tengo que desarrollar un aplicativo sobre Sql Server 2000, donde en
principio una serie de tablas van a tener millones de registros, en torno a
10 millones anuales. Cada registro puede tener 175bytes en datos. En 10 años
y sólo por la tabla de marras me sale: 175x10.000.000x10/1024/1024/1024 =
16'3 Gigas.

El hardware no será problema, admito tambien sugerencias para el servidor,
procesador, memoria, sistema de redundacia de discos duros, etc.

Las preguntas son relativas al diseño de la base de datos. ¿Parto la tabla
por años, es decir, 10 tablas en 10 años?, no hace falta porque lo va a
soportar?

Opción de trasapaso a históricos desde el programa y traspaso lo que el
usuario desea a otra base de datos, sólo para consultas? En caso de esto,
aqui se me plantean tambien las mismas interrogantes que antes.

Bueno, creo que ya veis por donde voy.

Lo que no quisiera es desarrollar algo en base a un diseño malo, y después
cuando ya tengan un montonal de registros y empiecen los problemas,
solucionarlos en caliente con prisas, sin poder para el aplicativo, etc.

Gracias por vuestro tiempo y en espera de vuestras sugerencias...

Un saludo

Preguntas similare

Leer las respuestas

#1 mitubi
16/05/2006 - 16:09 | Informe spam
Buenas tardes,
la verdad es que no tengo tablas con millones de registros (solo una de
22.000.000 de registros otra de 4.000.000 y varias del millón). El
problema que tuvimos era que la mayor de todas se estaba venga a
consultar (en una aplicación que la consultaba tropecientas veces por
segundo). Imagina. Como el uso es diarío, es decir, solo es necesario
usar las del día actual y el resto de histórico, lo que hizo la empresa
desarrolladora fue particionar la tabla en dos, una para consultas en
tiempo real y otra para históricos. Con esto se acababan nuestros
problemas, en cuanto a rendimiento se refería. Eso lo hizo con varias
tablas que tenían mucho meneo, y con un trato similar (de uso diarío y
el resto histórico).
No sé si particionar por varios años te ayudaría, pues creo que
dificultaría el acceso a los datos si se quiere hacer por año, y quizás
sobredimensionaría la BD bastante, pero depende de mucho de como se
trate la información.
Yo creo que la derecha es particionar la tabla, por un lado los datos
actuales y por otro los de histórico. Ahora bien, la duda queda si
hacerlo por años o no. Eso se debería mirar como se va a acceder a la
información, etc.
Un saludo

Alf escribió:
Si alguien ha tenido experiencia o tiene, en una base de datos que soporten
tablas de millones de registros, me gustaría preguntaros lo siguiente:

Tengo que desarrollar un aplicativo sobre Sql Server 2000, donde en
principio una serie de tablas van a tener millones de registros, en torno a
10 millones anuales. Cada registro puede tener 175bytes en datos. En 10 años
y sólo por la tabla de marras me sale: 175x10.000.000x10/1024/1024/1024 =
16'3 Gigas.

El hardware no será problema, admito tambien sugerencias para el servidor,
procesador, memoria, sistema de redundacia de discos duros, etc.

Las preguntas son relativas al diseño de la base de datos. ¿Parto la tabla
por años, es decir, 10 tablas en 10 años?, no hace falta porque lo va a
soportar?

Opción de trasapaso a históricos desde el programa y traspaso lo que el
usuario desea a otra base de datos, sólo para consultas? En caso de esto,
aqui se me plantean tambien las mismas interrogantes que antes.

Bueno, creo que ya veis por donde voy.

Lo que no quisiera es desarrollar algo en base a un diseño malo, y después
cuando ya tengan un montonal de registros y empiecen los problemas,
solucionarlos en caliente con prisas, sin poder para el aplicativo, etc.

Gracias por vuestro tiempo y en espera de vuestras sugerencias...

Un saludo
Respuesta Responder a este mensaje
#2 Miguel Egea
16/05/2006 - 16:32 | Informe spam
Ese número de registros no será ni de lejos tan determinante como el diseño
de tu aplicación, yo si estoy manejando ese tamaño sin mayores problemas, no
obstante, recuerda que en SQL Server 2005 si tienes tablas particionadas que
podrían ayudar a mucho tipo de consultas.

Diseña la política de acceso a esa tabla siempre a través de procedimientos
almacenados, repasa que si haces joins, orders by o wheres en esa tabla que
esté correctamente indexado y deja a SQL el resto del trabajo.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar para
obtener soluciones y educación avanzada para la plataforma completa de
sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Alf" escribió en el mensaje
news:%
Si alguien ha tenido experiencia o tiene, en una base de datos que
soporten tablas de millones de registros, me gustaría preguntaros lo
siguiente:

Tengo que desarrollar un aplicativo sobre Sql Server 2000, donde en
principio una serie de tablas van a tener millones de registros, en torno
a 10 millones anuales. Cada registro puede tener 175bytes en datos. En 10
años y sólo por la tabla de marras me sale:
175x10.000.000x10/1024/1024/1024 = 16'3 Gigas.

El hardware no será problema, admito tambien sugerencias para el servidor,
procesador, memoria, sistema de redundacia de discos duros, etc.

Las preguntas son relativas al diseño de la base de datos. ¿Parto la tabla
por años, es decir, 10 tablas en 10 años?, no hace falta porque lo va a
soportar?

Opción de trasapaso a históricos desde el programa y traspaso lo que el
usuario desea a otra base de datos, sólo para consultas? En caso de esto,
aqui se me plantean tambien las mismas interrogantes que antes.

Bueno, creo que ya veis por donde voy.

Lo que no quisiera es desarrollar algo en base a un diseño malo, y después
cuando ya tengan un montonal de registros y empiecen los problemas,
solucionarlos en caliente con prisas, sin poder para el aplicativo, etc.

Gracias por vuestro tiempo y en espera de vuestras sugerencias...

Un saludo


Respuesta Responder a este mensaje
#3 Alf
16/05/2006 - 16:53 | Informe spam
Gracias a ambos por la temprana respuesta.

Según te entiendo Miguel, en principio, no me hace falta partir las tablas,
sino aplicarme en que los accesos estén bien realizados.

No tengo nada de experiencia con Sql Server 2005, ¿es mucho cambio?, lo
comento porque entre hablar con el cliente de la aplicación a desarrollar,
preparar el diseño de la base de datos e iniciarlo, no voy a tener mucho
tiempo de aprendizaje, si queremos cumplir plazos.

Po ello pregunto, ¿es mucho cambio? o ¿se puede afrontar porque las mejoras
no cambian la forma de trabajar?

un saludo.


"Miguel Egea" escribió en el mensaje
news:%
Ese número de registros no será ni de lejos tan determinante como el
diseño de tu aplicación, yo si estoy manejando ese tamaño sin mayores
problemas, no obstante, recuerda que en SQL Server 2005 si tienes tablas
particionadas que podrían ayudar a mucho tipo de consultas.

Diseña la política de acceso a esa tabla siempre a través de
procedimientos almacenados, repasa que si haces joins, orders by o wheres
en esa tabla que esté correctamente indexado y deja a SQL el resto del
trabajo.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Alf" escribió en el mensaje
news:%
Si alguien ha tenido experiencia o tiene, en una base de datos que
soporten tablas de millones de registros, me gustaría preguntaros lo
siguiente:

Tengo que desarrollar un aplicativo sobre Sql Server 2000, donde en
principio una serie de tablas van a tener millones de registros, en torno
a 10 millones anuales. Cada registro puede tener 175bytes en datos. En 10
años y sólo por la tabla de marras me sale:
175x10.000.000x10/1024/1024/1024 = 16'3 Gigas.

El hardware no será problema, admito tambien sugerencias para el
servidor, procesador, memoria, sistema de redundacia de discos duros,
etc.

Las preguntas son relativas al diseño de la base de datos. ¿Parto la
tabla por años, es decir, 10 tablas en 10 años?, no hace falta porque lo
va a soportar?

Opción de trasapaso a históricos desde el programa y traspaso lo que el
usuario desea a otra base de datos, sólo para consultas? En caso de esto,
aqui se me plantean tambien las mismas interrogantes que antes.

Bueno, creo que ya veis por donde voy.

Lo que no quisiera es desarrollar algo en base a un diseño malo, y
después cuando ya tengan un montonal de registros y empiecen los
problemas, solucionarlos en caliente con prisas, sin poder para el
aplicativo, etc.

Gracias por vuestro tiempo y en espera de vuestras sugerencias...

Un saludo






Respuesta Responder a este mensaje
#4 Carlos Sacristán
17/05/2006 - 08:44 | Informe spam
Alf, yo tampoco tengo mucha experiencia con SQL Server 2005, pero
partimos con la ventaja de tener experiencia en diseño de bases de datos
(más concretamente en SQL Server 2000), que es justamente lo más importante
a la hora de que la aplicación sea eficiente.

Yo me preocuparía de diseñar el modelo lo mejor que sepa, que del resto
ya se encargará SQL Server 2005.

Con esto no quiero decir que no se pueda hacer aún más eficiente
conociendo todas las interioridades del nuevo motor, pero al igual que
Miguel, creo que esto es "secundario"


Un saludo

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

"Alf" escribió en el mensaje
news:
Gracias a ambos por la temprana respuesta.

Según te entiendo Miguel, en principio, no me hace falta partir las


tablas,
sino aplicarme en que los accesos estén bien realizados.

No tengo nada de experiencia con Sql Server 2005, ¿es mucho cambio?, lo
comento porque entre hablar con el cliente de la aplicación a desarrollar,
preparar el diseño de la base de datos e iniciarlo, no voy a tener mucho
tiempo de aprendizaje, si queremos cumplir plazos.

Po ello pregunto, ¿es mucho cambio? o ¿se puede afrontar porque las


mejoras
no cambian la forma de trabajar?

un saludo.


"Miguel Egea" escribió en el mensaje
news:%
> Ese número de registros no será ni de lejos tan determinante como el
> diseño de tu aplicación, yo si estoy manejando ese tamaño sin mayores
> problemas, no obstante, recuerda que en SQL Server 2005 si tienes tablas
> particionadas que podrían ayudar a mucho tipo de consultas.
>
> Diseña la política de acceso a esa tabla siempre a través de
> procedimientos almacenados, repasa que si haces joins, orders by o


wheres
> en esa tabla que esté correctamente indexado y deja a SQL el resto del
> trabajo.
>
>
> Miguel Egea Gómez
>
> SQLServer MVP
>
> Director de Servicios Corporativos
>
> Solid Quality Learning Iberoamericana
>
>
>
> "Solid Quality Learning es el proveedor global en el que puede confiar
> para obtener soluciones y educación avanzada para la plataforma completa
> de sistemas de bases de datos de Microsoft."
>
> www.SolidQualityLearning.com
>
> "Alf" escribió en el mensaje
> news:%
>> Si alguien ha tenido experiencia o tiene, en una base de datos que
>> soporten tablas de millones de registros, me gustaría preguntaros lo
>> siguiente:
>>
>> Tengo que desarrollar un aplicativo sobre Sql Server 2000, donde en
>> principio una serie de tablas van a tener millones de registros, en


torno
>> a 10 millones anuales. Cada registro puede tener 175bytes en datos. En


10
>> años y sólo por la tabla de marras me sale:
>> 175x10.000.000x10/1024/1024/1024 = 16'3 Gigas.
>>
>> El hardware no será problema, admito tambien sugerencias para el
>> servidor, procesador, memoria, sistema de redundacia de discos duros,
>> etc.
>>
>> Las preguntas son relativas al diseño de la base de datos. ¿Parto la
>> tabla por años, es decir, 10 tablas en 10 años?, no hace falta porque


lo
>> va a soportar?
>>
>> Opción de trasapaso a históricos desde el programa y traspaso lo que el
>> usuario desea a otra base de datos, sólo para consultas? En caso de


esto,
>> aqui se me plantean tambien las mismas interrogantes que antes.
>>
>> Bueno, creo que ya veis por donde voy.
>>
>> Lo que no quisiera es desarrollar algo en base a un diseño malo, y
>> después cuando ya tengan un montonal de registros y empiecen los
>> problemas, solucionarlos en caliente con prisas, sin poder para el
>> aplicativo, etc.
>>
>> Gracias por vuestro tiempo y en espera de vuestras sugerencias...
>>
>> Un saludo
>>
>>
>
>


Respuesta Responder a este mensaje
#5 Miguel Egea
17/05/2006 - 22:24 | Informe spam
Es un cambio impresionante, pero todo lo que funcionaba en 2000 funciona en
2005, yo te recomendaría empezar directamente en 2005, si puedes elegir, y
en ese caso sí usaría tablas particionadas donde sea necesario. Cuentanos
más tu caso y vemos si podemos ayudarte en el diseño.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar para
obtener soluciones y educación avanzada para la plataforma completa de
sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Alf" escribió en el mensaje
news:
Gracias a ambos por la temprana respuesta.

Según te entiendo Miguel, en principio, no me hace falta partir las
tablas, sino aplicarme en que los accesos estén bien realizados.

No tengo nada de experiencia con Sql Server 2005, ¿es mucho cambio?, lo
comento porque entre hablar con el cliente de la aplicación a desarrollar,
preparar el diseño de la base de datos e iniciarlo, no voy a tener mucho
tiempo de aprendizaje, si queremos cumplir plazos.

Po ello pregunto, ¿es mucho cambio? o ¿se puede afrontar porque las
mejoras no cambian la forma de trabajar?

un saludo.


"Miguel Egea" escribió en el mensaje
news:%
Ese número de registros no será ni de lejos tan determinante como el
diseño de tu aplicación, yo si estoy manejando ese tamaño sin mayores
problemas, no obstante, recuerda que en SQL Server 2005 si tienes tablas
particionadas que podrían ayudar a mucho tipo de consultas.

Diseña la política de acceso a esa tabla siempre a través de
procedimientos almacenados, repasa que si haces joins, orders by o wheres
en esa tabla que esté correctamente indexado y deja a SQL el resto del
trabajo.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Alf" escribió en el mensaje
news:%
Si alguien ha tenido experiencia o tiene, en una base de datos que
soporten tablas de millones de registros, me gustaría preguntaros lo
siguiente:

Tengo que desarrollar un aplicativo sobre Sql Server 2000, donde en
principio una serie de tablas van a tener millones de registros, en
torno a 10 millones anuales. Cada registro puede tener 175bytes en
datos. En 10 años y sólo por la tabla de marras me sale:
175x10.000.000x10/1024/1024/1024 = 16'3 Gigas.

El hardware no será problema, admito tambien sugerencias para el
servidor, procesador, memoria, sistema de redundacia de discos duros,
etc.

Las preguntas son relativas al diseño de la base de datos. ¿Parto la
tabla por años, es decir, 10 tablas en 10 años?, no hace falta porque lo
va a soportar?

Opción de trasapaso a históricos desde el programa y traspaso lo que el
usuario desea a otra base de datos, sólo para consultas? En caso de
esto, aqui se me plantean tambien las mismas interrogantes que antes.

Bueno, creo que ya veis por donde voy.

Lo que no quisiera es desarrollar algo en base a un diseño malo, y
después cuando ya tengan un montonal de registros y empiecen los
problemas, solucionarlos en caliente con prisas, sin poder para el
aplicativo, etc.

Gracias por vuestro tiempo y en espera de vuestras sugerencias...

Un saludo










Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida