Preguntado hace 1 año
Ramón Soriano
Hola a todos, ha llegado a mí un proceso heredado que actualmente tarda horas en el que se extraen dos treemap de entidades, uno procedente de la base de datos y otro de ficheros xml. Actualmente la clave es el identificador y el valor la entidad.
El programa trata de asimilar los datos buscando posibles repetidos, pero entendiendo cosas como que "calle Simón Bolivar" es lo mismo que "c/ simón bolívar" y cosas así por distintos campos.
El problema es que la cantidad de datos recibida ha cambiado de una manera desproporcionada, de 1 a 20. Y los tiempos se han disparado.
Se me ocurre alguna mejora haciendo varios treemap cambiando la clave por el campo que vaya a comparar, haciendo que "calle Simón Bolivar" y "c/ simón bolívar" se unifiquen como "calle simon bolivar". Esto daría lugar a 12 treemap para los datos en los que quiero integrar. El problema de este enfoque es que el consumo de memoria va a ser enorme.
¿Se os ocurre alguna alternativa?
Gracias por adelantado.
Hace 1 año
Julián Mur
Hombre, habría que conocer en detalle el intrínculis del asunto, pero por lo que que cuentas, si vas a hacer ese tipo de comparaciones me parece que el servidor de base de datos está más preparado y controla mejor los índices de lo que vas a poder hacerlo en java, en mi opinión.
Según eso, ¿qué haría yo? Guardaría los datos en el formato unificado "calle simon bolivar" en la tabla principal, o sí esta va a crecer demasiado puedes hacer una tabla anexa con el id de la principal y con los campos extra que necesites. Haría otra tabla para los datos a importar, guardando los datos en ese formato. Una vez hecho esto hacer las consultas apropiadas controlando completamente el plan de ejecución para que todas las consultas vayan por índice, creándolos cuando sea necesario y aprovechándolos en las comparaciones, por ejemplo si vas a hacer un like, no lo hagas abierto por delante, es decir usa like 'cosa%' en vez de like '%cosa%'.
Saludos.
Si sales ahora, perderás los cambios. ¿Estás seguro de querer salir?
Para participar en Babelias, debes estar convenientemente validado. Si ya eres usuario inicia sesión, si no lo eres, te puedes registrar.
Trata de ser descriptivo, usa al menos 25 caracteres
LLeva tu prestigio a tu página o blog, con el widget de Babelias
Usuario de ejemplo