Con motivo de la incorporación de un nuevo proveedor de datos a nuestro sistema requerimos el desarrollo de dos scripts en php5 complementarios:
El primero de ellos obtendrá datos analizando un conjunto de ficheros en formato RSS derivados de navegación por disitintas urls y que deberá guardar en una BD de Mysql con estructura de datos definida para su posterior procesado. Este script deberá, a partir de una URL base, realizar el parseo completo de la interficie web que nos proporciona los datos accediendo a los diferentes RSS que proporciona.
El segundo es un script que realizará el match de datos entre los datos recuperados por el primer script y los ya existentes en la base de datos principal de nuestro sistema, generando listas de posibles duplicados con diferentes grados de parecido que permitan su procesado posterior. Este script deberá generar una tabla de datos con las sugerencias de duplicados teniendo en cuenta que debe mantenerse histórico de las fusiones sugeridas y evitar falsos positivos posteriores para los mismos elementos.
Palabras clave: CURL, EXPAT, SimpleXML, FULLTEXT, MATCH, SOUNDEX, LEVENSHTEIN, MYSQL, PHP5
Preguntas de Asaban:
Primer script: -------------- 1. Desde donde se especificarán los URLs a navegar? 2. Explicar el término "derivados de navegación por distintas URLs" 3. Cual es la estructura definida para almacenar los datos? 4. Como se identificará dentro de las URLs que se ha encontrado un link a RSS? 5. Este script correrá desde el navegador o será disparado desde command line? 6. Que pasa si se ejecuta la importación mas de una vez? se volverán a insertar los datos? no se insertan? en este ultimo caso cual es el criterio de descarte?
Script 2: --------- 1. Cual es la estructura de la base de datos principal? 2. Como se accederá a esta base? 3. Cual es el motor de dicha base? 4. Cuales son concretamente los grados de parecido posibles entre los datos? 5. "falsos positivos"? 6. como es la estructura de la tabla de duplicados? 7. Los datos duplicados de mostrarán en una página? 8. Cuales son los datos a mantener en el histórico? 9. Se manejarán usuarios para mantener el histórico? 10. Cualquiera puede correr el prcoeso?
-------------------------------------------------------------------------------------------------------
Respuestas script 1: 1 es una URL fija que se facilitará a quien haga el script (hard-coded) 2 se nos ofrece un site con el contenido a procesar, dicho site incluye en cada página un enlace para generar el RSS… el script debe “navegar” todo el conjunto de enlaces que da acceso al total de contenidos y generar los RSS para cada página, por tanto debe ser capza de navegar por los enlaces que ofrece la web origen sin producir navegación múltiple para cada página, mantener estado si se usa un motor basado en recursividad, etc. 3 La estructura de datos consta de 3 bloques principales relacionados, básicamente se compone de 1 Master table y dos tablas 1-N contra la clave primaria de la tabla maestra. Los campos exactos se indicarán al desarrollador pero siendo en prácticamente su totalidad campos equivalentes a la estructura del XML recibido. 4. Siempre ocupa un lugar fijo y un contenido del enlace fijo 5 Crontab diaria 6 La estructura de datos incluye identificador único por lo que deberá evitarse la inserción duplicada siendo recomendable le procesado de posibles cambios, pese a que de base es muy poco probable que existan cambios en un registro ya adquirido. Respuestas script 2: 1 El match se realizará de base contra la parte principal del registro (tabla maestra) de la importación contra una tabla de estructura similar (se proveerá paquete de datos de muestra para la realización del script) con equivalencia de campos 1 a 1 2 Mysql, funciones base… en caso de ser necesario unificar con nuestra capa de acceso a datos se haría a posterior por parte de nuestro equipo de desarrollo 3 MySQL 4 Grados en base a diferentes casos: fechas + textos + valores concretos en algunos campos ->duplicado exacto, match parcial en algunos de los campos -> duplicado parcial por el tipo de campo que de positivo 5 Falso positivo: Cuando se sugiere un posible duplicado se incluirá un estado de validación de dicha sugerencia. En caso de existir un registro previo que determine la equivalencia o la no equivalencia se deberá actuar en consecuencia no insertando la nueva sugerencia. 6 del tipo pk de tabla de importaciones, pk de tabla maestra del sistema, estado_validacion, grado_parecido donde pk => primary key 7 Si, de base no se requiere la programación de la gestión de las sugerencias 8 Principalmente todos… la tabla de sugerencias de duplicados será persistente para permitir el control de los falsos positivos 9/10 La integración en nuestro sistema de gestión de datos corre por parte de nuestro equipo
|