Vistas divididas

26/07/2004 - 09:33 por Xavi | Informe spam
Hola a todos



Estoy montando un sistema para almacenar una serie de datos. En principio,
estos datos crecerán de manera espectacular ( 1.000.000 registros
mensuales ) así que estoy haciendo resumen de cuantas posibilidades se me
ofrecen.



Por lo que he ido leyendo y siguiendo en foros y tutoriales, la mejor
solución sería crear una vista dividida ( partitioned view ). De manera
simple, crearía una tabla por mes ( supongamos Tabla072004 ).
Obligatoriamente, la fecha debería formar parte de la PK. Eso me obliga a
dos cosas: o bien la PK es múltiple ( cosa que no me gustaría por pureza del
diseño ) o bien la fecha forma parte de la PK.



Tomando la segunda opción, la PK sería un bigint de 13 dígitos: los 4
primeros la fecha ( 0704 ) y los 9 siguientes un secuencial.



Me gustaría escuchar cualquier comentario respecto a este planteamiento,
alguna experiencia con vistas divididas o alguna alternativa al modelo de
datos.



Muchas gracias.
 

Leer las respuestas

#1 Javier Loria
26/07/2004 - 13:38 | Informe spam
Hola:
No comparto el que una PK multiple afecte de forma negativo el diseno.
Las PK's multiples son deseables en los disenos de bases de datos
normalizadas.
Por pureza del diseno buscaria cual es la llave principal natural y
trataria de construir basado en esta la particion. Una ventaja si puedes
hacerlo con este mecanismo es que no se va a producir todos los inserts en
la misma tabla, como si ocurre cuando la base de la particion es la fecha.
Si la fecha no participa en nada en la llave natural y siempre quieres
particionar por fecha, podrias agregar una columna tipo smallint con el
numero de periodo (en este caso mes) y hacer esta columna parte de la llave
primaria.
Unicamente si no es posible encontrar una llave primaria, te
recomendaria crear una columna Entera (no es necesario un BigInt a menos que
tengas mas de 2000 meses), y en algun trabajo o procedimiento mensual,
agregaria la nueva tabla mensual con un CHECK del numero actual en adelante
y cambiaria el CHECK de la Tabla Anterior para limitarlo.
Evita la tentacion de escribir codigo contra las tablas mensuales, TODO
el codigo debe ir escrito contra la vista particionada, para asi evitar que
el diseno fisico tan especial, afecte al diseno logico.
Si nos compartes un poco del esquema de la tabla, podriamos opinar con
mas criterio.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Xavi escribio:
Hola a todos



Estoy montando un sistema para almacenar una serie de datos. En
principio, estos datos crecerán de manera espectacular ( 1.000.000
registros
mensuales ) así que estoy haciendo resumen de cuantas posibilidades
se me ofrecen.



Por lo que he ido leyendo y siguiendo en foros y tutoriales, la mejor
solución sería crear una vista dividida ( partitioned view ). De
manera simple, crearía una tabla por mes ( supongamos Tabla072004 ).
Obligatoriamente, la fecha debería formar parte de la PK. Eso me
obliga a dos cosas: o bien la PK es múltiple ( cosa que no me
gustaría por pureza del diseño ) o bien la fecha forma parte de la PK.



Tomando la segunda opción, la PK sería un bigint de 13 dígitos: los 4
primeros la fecha ( 0704 ) y los 9 siguientes un secuencial.



Me gustaría escuchar cualquier comentario respecto a este
planteamiento, alguna experiencia con vistas divididas o alguna
alternativa al modelo de datos.



Muchas gracias.

Preguntas similares