Sincronizar carpeta contenedora de XML's con tabla de BD
Saludos H. Foro de JavaMéxico...
Tengo la siguiente situación...
Quisiera almacenar en una BD información en archivos XML que se contienen en una carpeta, dicha carpeta se actualiza indefinidamente, para lo cual se me ocurre crear una aplicación que me permita sincronizar el contenido de la carpeta con la tabla en la cual se almacenará esa información, pero no se como hacer esta sincronización sin tener que duplicar la información sincronizada o contenida en la tabla anteriormente...
no se me ocurre nada...
Agradecería me sugirieran alguna alternativa
.
- Inicie sesión o regístrese para enviar comentarios
Nombre del archivo
Algo que asegura el sistema operativo es que no hay dos archivos con el mismo nombre dentro de una carpeta, entonces puedes utilizar ese criterio para realizar la sincronización. Algo interesante seria la sincronización de archivos modificados. ¿Como detectas que un archivo fué modificado? hoy en dia se utilizan algoritmos de hash/resumen/picadillo/digestion/etc que te permiten verificar rapidamente una modificación mínima, los archivos que sincronices tienes que aplicarles ese(esos) algoritmo(s) que comunmente son MD5 o SHA1.
Aplicando SHA1 sobre un archivo tendrias algo similar a:
Para el caso del MD5:
Estos datos los puedes almacenar en la DB junto con tu archivo y cuando estes realizando la sincronización, realizas el hash sobre cada archivo de la carpeta y si existe en DB y el Hash es diferente, sabes que se trata de una modificación al archivo.
Yo optaria por usar una
Yo optaria por usar una carpeta intermedia.
\01-XMLS origen
\02-XmlsFinales
Asi, solo voy leyendo los XMLs de la carpeta origen, leo el contenido del XML y lo meto a la database, luego MUEVO el XMl a la carpeta final.
Si son XMls de factura electronicas por ejemplo, separo las facturas por año, para que no se haga una locura luego respaldar y recuperar.