Saltar al contenido principal

Tablas de cambios

Puede utilizar las herramientas de su conexión de destino para obtener información utilizando los metadatos en las tablas de cambios. Estos datos vienen definidos por las columnas de encabezado agregadas al esquema de la tabla de cambios. Estos encabezados se describen en la tabla siguiente.

Para cada tabla de destino en la tarea de replicación, se mantiene una tabla de cambios con el nombre correspondiente en la base de datos con las tablas de destino. Para más información, vea Trabajar con tablas de cambios. Una tabla de cambios contiene las columnas de la tabla original y las columnas de encabezado. Las columnas de encabezado contienen un prefijo para que el nombre no entre en conflicto con los nombres de las columnas de la tabla de origen. El prefijo predeterminado es header__. Para obtener información sobre cómo cambiar este prefijo, consulte la lista Tablas de cambios en Metadatos, en Configuración de tareas. La siguiente tabla enumera las columnas de encabezado de la tabla de cambios predeterminada.

Nombre de la columna Tipo Descripción

[header__]change_seq

varchar (35)

Un secuenciador de cambios que aumenta monótonamente y que es común a todas las tablas de cambios de una tarea. La secuencia de cambios tiene el siguiente formato:

AAAAMMDDHHmmSShhxxxxxxxxxxxxxxxxxxx

Donde:

  • AAAA es el año de cuatro dígitos (por ej. 2012)
  • MM es el mes de dos dígitos (en un rango de 01 a 12)
  • DD es el día de dos dígitos (en un rango del 01 al 31)

  • HH es la hora del día (en un rango de 00 a 23)
  • mm es el minuto de la hora (en un rango de 00 a 59)
  • SS es el segundo en el minuto (en un rango de 00-59)
  • hh es la centésima de segundo (en un rango de 00-99)
  • xxxxxxxxxxxxxxxxxxx es un número de cambio de 19 dígitos con prefijo cero (global por tarea)

La parte de tiempo generalmente se refiere al tiempo de confirmación de la transacción que incluye el registro de cambios. Qlik Talend Data Integration contiene una lógica que mantiene la monotonicidad del número de secuencia, por lo que modificar o ajustar el tiempo del punto de conexión puede dar lugar a múltiples cambios para que parezca que están dentro de la misma marca de tiempo pero con un número de cambios creciente.

El xxx...xxx suele ser el número de cambio interno del registro de datos, excepto que para los registros ANTES DE LA IMAGEN es el mismo que el número de cambio del registro ACTUALIZADO correspondiente (por ejemplo, si el número de cambio de ANTES DE LA IMAGEN es 1000 y el del ACTUALIZADO es 1001, entonces ambos tienen 1001). Esto permite una unión externa izquierda (left-outer-join) simple entre la tabla y ella misma, donde a la izquierda examinamos hasta el punto en el tiempo pero filtramos operation=before-image, lo dejamos fuera, y a la derecha nos unimos en la misma change_seq con el change_oper siendo "B" .

[header__]change_oper

varchar (1)

El tipo de operación. Puede ser una de las siguientes:

  • I: INSERTAR
  • D: ELIMINAR
  • U: ACTUALIZAR
  • B: Antes de la imagen

[header__] change_mask

varbinary (128)

La máscara de cambios indica qué columnas de datos en la tabla de cambios están asociadas con columnas que cambiaron en la tabla de origen.

La posición del bit en la máscara de cambios se basa en el ordinal de columna de la tabla de cambios. Esto significa que si hay 5 columnas de encabezado, ocupan los bits 0 al 4 y la primera columna de datos es el bit 5 en la máscara de cambios.

La máscara de cambios es una columna binaria (una matriz de bytes) que representa la máscara de cambios en orden little-endian:

Byte 0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

Byte 1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

En este ejemplo, bit#N indica que la columna de la tabla de cambios del ordinal N se relaciona con una columna que cambió en la tabla de origen. Si la máscara de actualización es 11000 y el ordinal de la columna es 3, la columna no cambió.

A continuación se describe la semántica de bits:

  • Para registros INSERT, todas las columnas insertadas tienen los bits asociados establecidos.
  • Para registros DELETE, solo las columnas de clave primaria (o índice único) tienen los bits asociados establecidos. Esto permite a un aplicador construir una sentencia DELETE sin tener que encontrar los campos de clave primaria desde otra fuente.
  • Para los registros BEFORE-IMAGE, todos los bits están claros (la máscara de cambios puede estar vacía).
  • Para los registros UPDATE, cada columna cuyo valor haya cambiado entre la BEFORE-IMAGE y la actualización UPDATE tendrá el bit asociado activo.

Por motivos de espacio y eficiencia de procesamiento, el número real de bytes almacenados en la máscara de cambios puede ser nulo. Esto significa que no es necesario almacenar los ceros finales. La lógica de manipulación debe tener esto en cuenta.

[header__] stream_position

varchar (128)

La posición del flujo CDC de origen.

[header__] operation

varchar (12)

La operación asociada con el registro de cambios. Puede ser una de las siguientes:

  • INSERT
  • UPDATE
  • DELETE
  • BEFOREIMAGE

[header__] transaction_id

varchar (32)

El ID de la transacción a la que pertenece el registro de cambios.

El valor es una cadena hexadecimal del ID de transacción de 128 bits.

[header__] timestamp

timestamp

La marca de tiempo UTC del cambio original (el valor puede ser aproximado).

Nota informativa Con el código fuente de PostgreSQL, la marca de tiempo solo se conoce después de que se produce la confirmación. Por lo tanto, hasta que los cambios no se confirmen en las tablas de origen, se mostrará la fecha predeterminada (por ejemplo, 1970-01-01).

[header__] partition_name

cadena de texto

El nombre de la partición creada en el destino cuando está habilitado Cambiar partición de datos. El nombre de la partición se compone de la hora de inicio y hora de finalización de la partición.

Ejemplo:

20170313T123000_20170313T170000

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.