Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

371
Views
¿Puedo cambiar la captura de datos con el control automático de versiones de datos de MariaDb?

Estamos usando MariaDb en producción y hemos agregado un esclavo de MariaDb para que nuestro equipo de datos pueda realizar algunas tareas de ETL desde este esclavo a nuestro almacén de datos. Sin embargo, carecen de una función adecuada de Captura de datos modificados (es decir, quieren saber qué filas de la tabla de producción cambiaron desde ayer para consultar las filas que realmente cambiaron).

Vi que MariaDb 10.3 tenía una función interesante que permitía realizar una SELECCIÓN en una versión anterior de una tabla. Sin embargo, no he encontrado recursos que respalden la idea de que podría usarse para CDC, ¿algún comentario sobre esta función?

Si no es así, probablemente recurriremos a transmitir los binlogs del esclavo a nuestro almacén de datos, pero eso parece un desafío.

¡Gracias por tu ayuda!

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

(Como complemento a la respuesta de Stefans)

Sí, el control de versiones del sistema se puede usar para CDC porque el período de validez en ROW_START (el objeto comienza a ser válido) y ROW_END (el objeto ahora no es válido) se puede interpretar cuando se produce una consulta de INSERCIÓN, ACTUALIZACIÓN o ELIMINACIÓN. Pero es más engorroso que con las variantes CDC alternativas.

INSERTAR:

  • Objeto fue encontrado por primera vez
  • ROW_START es el tiempo de inserción

ACTUALIZAR:

  • El objeto no se encontró por primera vez
  • ROW_START es el tiempo de actualización

ELIMINAR:

  • ROW_END se encuentra en el pasado
  • no hay nueva entrada para este objeto en las próximas líneas

Voy a añadir una imagen para aclarar esto.

Tabla de ejemplo para el control de versiones del sistema

Puede ver que este control de versiones ahorra espacio porque puede combinar la información sobre INSERTAR y ELIMINAR de un objeto en una línea, pero verificar las ELIMINACIONES es costoso.

En el ejemplo anterior, utilicé una tabla con una clave principal clara. Entonces, verificar el mismo objeto es fácil: solo mire la identificación. Si desea capturar cambios en talbes con una combinación de teclas, esto también puede hacer que todo el proceso sea más molesto.

Editar: otro punto es que los datos del protocolo se mantienen en la misma tabla que los datos "reales". Tal vez esto sea más rápido para un INSERT que una solución alternativa conocida como el seguimiento por TRIGGER ( como aquí ), pero si los cambios se realizan con bastante frecuencia en la tabla y desea procesar/analizar los datos de CDC, esto puede causar problemas de rendimiento.

over 4 years ago · Santiago Trujillo Report

0

MariaDB admite tablas con versiones del sistema desde la versión 10.3.4 . Las tablas de versiones del sistema se especifican en el estándar SQL:2011. Se pueden utilizar para capturar automáticamente versiones anteriores de filas. A continuación, se pueden consultar esas versiones para recuperar sus valores, ya que se han establecido en un momento específico.

El siguiente ejemplo de texto y código es de la documentación oficial de MariaDB

Con tablas versionadas por el sistema, MariaDB Server realiza un seguimiento de los puntos en el tiempo cuando cambian las filas. Cuando actualiza una fila en estas tablas, crea una nueva fila para mostrar como actual sin eliminar los datos anteriores. Este seguimiento permanece transparente para la aplicación. Al consultar una tabla versionada por el sistema, puede recuperar los valores más actuales de cada fila o los valores históricos disponibles en un momento determinado.

Esta función puede resultarle útil para realizar un seguimiento eficiente del tiempo de los cambios en los valores supervisados continuamente que no cambian con frecuencia, como los cambios de temperatura en el transcurso de un año. El control de versiones del sistema suele ser útil para la auditoría.

Al agregar SYSTEM VERSIONING a una tabla recién creada o ya existente (usando ALTER ), la tabla se expandirá con las columnas de marca de tiempo row_start y row_end que permiten recuperar el registro válido dentro del tiempo entre las marcas de tiempo de inicio y fin.

 CREATE TABLE accounts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), amount INT ) WITH SYSTEM VERSIONING;

Entonces es posible recuperar datos tal como estaban en un momento específico (con SELECT * FROM accounts FOR SYSTEM_TIME AS OF '2019-06-18 11:00'; ), todas las versiones dentro de un rango de tiempo específico

 SELECT * FROM accounts FOR SYSTEM_TIME BETWEEN (NOW() - INTERVAL 1 YEAR) AND NOW();

o todas las versiones a la vez:

 SELECT * FROM accounts FOR SYSTEM_TIME ALL;
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!