Ok, por lo que la historia es así:detectar cuando los datos han cambiado
- Estoy teniendo un montón de archivos (bastante grande, alrededor de 25 GB) que se encuentran en un formato particular y necesita ser importada en un almacén de datos
- estos archivos se actualizan continuamente con los datos nuevos, a veces, a veces los mismos datos
- estoy tratando de averiguar un algoritmo sobre cómo podría detectar si algo ha cambiado para una línea particular en una archivo, para minimizar el tiempo dedicado a actualizar la base de datos
- la forma en que funciona actualmente es que elimino todos los datos en la base de datos cada vez y luego los vuelvo a importar, pero esto ya no funcionará, ya que necesitaré una marca de tiempo para cuando haya cambiado un elemento.
- contiene los archivos de cadenas y números (títulos, pedidos, precios, etc.)
Las únicas soluciones que podía pensar son:
- calcular un hash para cada fila de la base de datos, que se compara con el hash de la fila del archivo y si son diferentes, actualice la base de datos
- mantenga 2 copias de los archivos, los anteriores y los actuales y haga diffs en él (que probablemente son más rápidos que la actualización de la base de datos) y en base a esos actualizar el db.
Dado que la cantidad de datos es muy grande a enorme, estoy un poco fuera de opciones por ahora. A largo plazo, me desharé de los archivos y los datos se enviarán directamente a la base de datos, pero el problema persiste.
Cualquier consejo, será apreciado.
Si está diciendo que calcule el hash de todo el archivo en comparación con el hash de toda la base de datos, eso no me ayudará. Pero si está diciendo que almacene el hash por fila en la base de datos, sí, esa es una de las soluciones en las que pensé. Me pregunto si eso es más rápido que solo averiguar si los datos han cambiado simplemente comparando elemento con elemento. – hyperboreean
+1 por sugerir que se guarde la última fecha y hora de modificación –
No tengo ninguna marca de tiempo en ese archivo. – hyperboreean