Open Business Intelligence

La red del Business Intelligence

Proceso millones de registros una vez al mes, tengo que verificar si ya existen y los tengo que actualizar o si solo los inserto. 

En el primer caso, muchas veces ya existen pero con los datos anteriores sin cambios, por la logica que tengo diseñada deberia actualizarlos, pero hay alguna forma de comprar si hay algun cambio entre ambos registros y en ese caso actualizar? Es que me esta siendo muy costoso en terminos de perfomance. Cualquier otra solucion que se les ocurre sera bienvenida

Gracias

Visitas: 22

Respuestas a esta discusión

Daniel,

comprobar si hay diferencia o no implica buscar el registro si  o si, por ende de eso no te salvarás.

Podrías implementar algún control basado en hash para detectar cambios, de cualquier forma te recomiendo indexar las columnas de búsqueda, de esa forma encontrarás más rápido el registo.

Saludos

Mariano

Alguna sugerencia para mejorar entonces el step Update? Tengo las columnas de busqueda indexadas ya

gracias

Si el volumen de registros a actualizar está muy identificado , por ejemplo por rango de fechas: fec1 < reg >= fec2.

Una opción es obtener todos los registros q cumplan fec1 < reg >= fec2 pasarlos a un flujo de datos de pentaho, después cruzarlos con el flujo donde tengas los registros a actualizar y realizar la actualización en el flujo. Luego para llevarlo a base de datos se haría un delete de los registros de BBDD que cumplan fec1 < reg >= fec2 y después un insert a BBDD, el insert puede ser de tipo bulkload. Se trata de sustituir updates por delete+inserts y comparar el rendimiento de uno y otro, en ocasiones puede merecer la pena la segunda opción. Si lo pruebas, comnetanos que tal te funciona.

Usar técnicas de hashing, no queda mucho más, una forma es, matener una tabla intermedia que tenga el id (indexado) de la tabla final y el hash de la fila, buscas el id de la tabla final, comparas los hash y solo actualizas si hay diferencia. por supuesto que debes actualizar el hash intermedio también. En caso extremo puedes usar hash + particionamiento 

Y como dice Juan V, debes intentar solo obtener los datos mínimos indispensables desde el origen.

Saludos

Mariano 

Daniel Diaz Canel dijo:

Alguna sugerencia para mejorar entonces el step Update? Tengo las columnas de busqueda indexadas ya

gracias

RSS

Distintivo

Cargando…

© 2017   Creado por Emilio.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio