8 votos

Procesamiento eficiente de la diferencia entre datos de entrada y base de datos

Tengo un conjunto de datos de entrada cuyos registros se anexará a una base de datos existente. Antes de ser anexado, los datos que va a ir a través de los pesados, el tiempo de procesamiento intensivo. Quiero filtrar los registros del conjunto de datos de entrada que ya existen en la base de datos para reducir el tiempo de procesamiento.

La diferencia entre la entrada y la base de datos se ilustra aquí: Input and Database Difference

Esta una visión general del tipo de proceso que estoy mirando. Los datos de entrada serán eventualmente en la base de datos. Input Processing Workflow

Mi solución actual implica el uso de un Comparador de transformador en la base de datos combinada de entrada y, a continuación, el filtrado de la NotMatched el resultado de FeatureTypeFilter para conservar únicamente los registros de entrada.

Es allí una manera más eficiente para obtener la diferencia de características?

4voto

M. B. Altaie Puntos 11

Yo no uso de la OMF, pero tuve una similar de la tarea de procesamiento que requiere el uso de la salida de las 5 horas de trabajo de procesamiento para identificar tres posibles procesamiento de los casos para una base de datos en paralelo a través de un bajo ancho de banda de la red link:

  • Nuevas características para ser añadido
  • Las características existentes para actualizarse
  • Exisitng características para ser eliminado

Desde que me hizo tener una garantía de que todas las características retener los valores de ID entre pasadas, fui capaz de:

  1. Ejecutar un script de procesamiento que genera una tabla de {uID,suma de comprobación} pares a través de la importante columnas de la tabla actualizada
  2. Utiliza el {uID,suma de comprobación} pares generados en la iteración anterior para transmitir las actualizaciones de la tabla de destino, con las filas de la tabla actualizada donde el uID fue EN una subconsulta donde las sumas de comprobación no coinciden con las
  3. Transmitir las inserciones de la actualización de la tabla de la cual una combinación externa subconsulta indicó que había inigualable de uidos, y
  4. Transmite una lista de uIDs para eliminar características en la tabla externa que una combinación externa subconsulta indicado ya no había coincidencia de uidos en la tabla actual
  5. Guardar el actual {uID,suma de comprobación} pares para el día siguiente de la operación

En la base de datos externa, yo sólo tenía que insertar las nuevas características de la actualización de los deltas, rellenar una tabla temporal de eliminar líquidos y eliminar las características DE la eliminación de la tabla.

Yo era capaz de automatizar este proceso para propagar cientos de cambios diarios para un total de 10 millones de filas de la tabla con un mínimo de impacto para la producción de tabla, con menos de 20 minutos diarios de tiempo de ejecución. Se corrió con un mínimo de costo administrativo por varios años sin perder la sincronización.

Mientras que es ciertamente posible hacer N comparaciones a través de M filas, el uso de un compendio/de la suma de comprobación es una opción muy atractiva para lograr un "existe" prueba con un costo mucho más bajo.

4voto

Seb Nilsson Puntos 8619

Utilice featureMerger, uniéndose y agrupe por los campos comunes de DATABASE E INPUT DATA. Introduzca aquí la descripción de la imagen

4voto

jennz0r Puntos 48

Si usted tiene la base de datos de las características indicadas en el diagrama. Pequeña entrada, pequeña superposición, objeto de gran tamaño. A continuación, la siguiente ordenación de los puestos de trabajo pueden trabajar de forma eficiente, a pesar de estar haciendo varias consultas contra la base de datos.

enter image description here

Así, para cada función de lectura de la consulta de entrada para la función de adaptación en la base de datos. Asegúrese de que no es adecuado índices en el lugar. Prueba de la _matched_records atributo de 0, el procesamiento y, a continuación, insertar en la base de datos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X