Hola a todos..
Bueno Conrado, "cada quien tiene su forma de matar las pulgas"
dicen por ahí....
Yo lo que haría sería manejar un particionamiento de tablas
( http://www.postgresql.org/docs/9.3/static/ddl-partitioning.html )
basado en el estado que comentas, para que así cada estado
tenga su propia tabla, y la base de datos lo haga de forma
automática.
Recuerda que es importante tener indexados los campos, y en
la medida de lo posible, que esos índices se encuentren en
discos aparte, ojalá discos scsi, y si pudieras hacer lo mismo
con las tablas, sería lo mejor.
Un abrazo a todos desde Colombia.
Omar
El 31/01/14 08:43, Conrado Blasetti escribió:
Gente, buenos días. Quisiera consultar lo siguiente.
Necesito almacenar y gestionar ciertos datos.
Se trata de información que va a trabajarse según el estado de un
campo y cada registro posee aproximadamente 10 atributos mas, de
distinto tipo (date, varchar, numeric...)
La tabla tiene su pk con un campo serial.
Ej:
Table: test
Id serial
Estado smallint(1) not null --CAMPO A TRATAR
Campo1
Campo2
CampoN
El campo "estado" es 1,2,3,4 o 0 (cero). Posiblemente en algún futuro
se agreguen otros estados "5", "6", etc.
Este campo nace en 1 y luego pasa al resto de estado. Cuando llega al
estado 4, el próximo estado es 0 (cero) que sería la identificación
del registro para interpretar la "historia" o que ya fue tratado y se
lo explotará en conjunto con otros campos. Ej. "estado" = 0 and
"cliente" = 'PEPE' (solo listados, no interactivo)
Las búsquedas "interactivas" y de gestión simultanea (varias
terminales) en esta tabla serán solamente por el campo "estado", 1,2,3
o 4.
La tabla va a crecer en 20 mil registros por mes aproximadamente.
El registro nace en estado "1", a los 10 minutos (dependiendo la
gestión) pasa a estado "2" (update)
El registro en estado "2" a los 10 minutos (dependiendo la gestión)
pasa a estado "3" (update)
El registro en estado "3" a los 10 minutos (dependiendo la gestión)
pasa a estado "4" (update)
El registro en estado "4" a los 10 minutos (dependiendo la gestión)
pasa a estado "0" (update)
Si no se generan registros en 1h, posiblemente todos los registros de
la tabla tendrán el estado "0" hasta que se genere un nuevo registro.
Cada 30 segundos debo ejecutar 4 consultas. Una consulta para cada
estado (1,2,3, y 4)
Cabe aclarar que el resto de atributos de esta tabla, también se
actualizaran en cada paso de estado....
La consulta final es, como me convendría gestionar los datos?
1-Creo la tabla directamente con todos los datos y ejecuto las
consultas de forma tradicional? Select * from table where estado = 1?
2-Creo una tabla con id y estado donde se hagan los insert y update
esenciales y luego una segunda tabla donde tenga el resto de atributos
para joinearla con el id de la tabla "cabecera"?
3-Me conviene hacer "delete" de los campos es estado 0 (o sea, luego
del estado 4) e insertarlos en una tabla consolidada?
4-Aclaro que el mantenimiento de la bd no será diario por la gestión
(24x7), autovaccum activado
Bueno, cualquier sugerencia, a disposición.
Saludos,
Conrado
PD:
PostgreSQL: 9.3
Version string: PostgreSQL 9.3.1, compiled by Visual C++ build 1600,
32-bit
SO: Windows.
Desarrollar : C# .NET (Npgsql y Mono)