Novedades de Zen V15: Seguimiento sencillo de los cambios de datos
Corporación Actian
22 de septiembre de 2021

El mantenimiento de datos es un requisito continuo en todos los entornos de bases de datos. Archivar datos históricos, sincronizar datos tras un acceso sin conexión o auditar los datos modificados son cuestiones que suelen requerir una programación personalizada. La mayoría de estas soluciones suelen requerir cambios en el diseño de la base de datos o procesos que llevan mucho tiempo para llevar a cabo estas tareas. Con el lanzamiento de Zen v15, ahora hay una manera fácil de hacer esto para cualquier archivo de datos Zen existente sin afectar a las aplicaciones y diseños de datos existentes - se llama "System Data v2".
Los datos del sistema existen desde hace mucho tiempo; proporcionan un identificador único oculto en cada registro de un archivo de datos. Se utiliza junto con el registro de transacciones para proporcionar integridad de datos y recuperación en caso de fallo del sistema. También lo utiliza DataExchange (empleado para la replicación de datos entre varias instancias de servidores Zen Windows en entornos de datos distribuidos) para identificar de forma exclusiva los registros de los archivos que se replican entre sistemas. Los valores ocultos pueden recuperarse mediante operaciones Get estándar de Btrieve leyendo a lo largo del número clave 125; sin embargo, más allá de ser únicos, los datos del sistema no proporcionan ninguna información adicional.
Zen v15 introduce System Data v2, que proporciona dos valores únicos ocultos en cada registro. Estos valores son marcas de tiempo reales que representan cuándo se insertó el registro en el archivo y cuándo se actualizó por última vez. Estas marcas de tiempo son manejadas automáticamente por el motor para cada inserción y actualización recibida, independientemente de la interfaz utilizada. Por lo tanto, las aplicaciones que utilicen Btrieve, Btrieve 2, ODBC, ADO.NET, PDAC, Java, etc., mantendrán las marcas de tiempo de los datos del sistema v2 si el archivo de datos tiene activada esta opción. El formato de archivo 13.0 es necesario para los datos del sistema v2, y la utilidad de reconstrucción puede utilizarse para activar esta opción en los archivos seleccionados.
Al igual que los datos del sistema originales, los nuevos valores ocultos pueden recuperarse mediante métodos Btrieve estándar leyendo los números clave 125 (hora de inserción) y 124 (hora de actualización). Además, se puede acceder a los valores de los datos del sistema v2 a través de cualquier interfaz SQL utilizando los nombres de columnas virtuales sys$create y sys$update. Los datos de estas columnas se almacenan como Timestamp(7), que es una marca de tiempo estándar con una granularidad de septosegundos.
Veamos un ejemplo ejecutado en el Centro de Control Zen (La Consola de Gestión de Base de Datos Zen):
Para crear una tabla que incluya datos del sistema v2, añada la palabra clave "SYSDATA_KEY_2" a la sentencia CREATE TABLE:
crear tabla sensorData SYSDATA_KEY_2
(location varchar(20), temp real);
Esta palabra clave también se puede utilizar en una sentencia ALTER TABLE para reconstruir un fichero existente e incluir los nuevos valores de syskey. En ambos casos se obtendrá un archivo de la versión 13.0.
Ahora, insertemos algunas filas y veamos cómo quedan las columnas virtuales:
insert into sensorData values('Máquina1', 77.3);
insert into sensorData values('Máquina2', 79.8);
insert into sensorData values('Máquina3', 65.4);
insert into sensorData values('Máquina4', 90.0);
select "sys$create", "sys$update", sensorData.* from sensorData;
sys$create sys$update location temp
=========================== =========================== ======== =====
2021-09-13 12:49:45.0000000 2021-09-13 12:49:45.0000000 Máquina1 77.3
2021-09-13 12:49:45.0000001 2021-09-13 12:49:45.0000001 Máquina2 79.8
2021-09-13 12:49:45.0000002 2021-09-13 12:39:45.0000002 Máquina3 65.4
2021-09-13 12:49:45.0000003 2021-09-13 12:49:45.0000003 Máquina4 90.0
Inicialmente, la hora de creación y la hora de actualización se registran como el mismo valor. Observará que los valores de datos syskey muestran los segundos fraccionarios como siete dígitos. Esta parte de la marca de tiempo se utiliza para garantizar la unicidad en el valor, en lugar de representar los septasegundos reales de la inserción.
Después de actualizar una fila, verá que sólo ha cambiado el valor de sys$update:
-actualizar una fila:
update sensorData set temp = 90.1 where location = 'Máquina1';
-encontrar filas que han sido actualizadas:
select "sys$create", "sys$update", sensorData.* from sensorData
where sys$update > sys$create;
sys$create sys$update location temp
=========================== =========================== ======== =====
2021-09-13 12:49:45.0000000 2021-09-14 11:57:46.0000000 Máquina1 90.1
Otros ejemplos de consultas:
-encontrar filas insertadas o actualizadas en los últimos 20 minutos:
select "sys$create", "sys$update", sensorData.* from sensorData
where "sys$update" > Timestampadd(SQL_TSI_MINUTE, -20, now());
-devolver todas las filas CAMBIADAS, incluyendo cuántos minutos han pasado desde la última actualización
select sensorData.*, Timestampdiff(SQL_TSI_MINUTE, "sys$update",now()) NumMins
from sensorData where "sys$update" > "sys$create";
–return the number of rows, inserted in the last 24 hours:
select count(*) as Last24Count from sensorData
where Timestampdiff(SQL_TSI_hour, “sys$create”, now()) < 24;
Los índices de datos del sistema v2 son totalmente optimizables por el motor SQL. Así, una consulta con restricciones u ordenación en las columnas virtuales utilizará el índice cuando proceda.
El seguimiento de la hora de creación y la hora de la última actualización ahora se puede realizar fácilmente con Zen v15 y la función System Data v2. Descargue la versión de prueba aquí y pruébela.
Suscríbase al blog de Actian
Suscríbase al blog de Actian para recibir información sobre datos directamente en su correo electrónico.
- Manténgase informado: reciba lo último en análisis de datos directamente en su bandeja de entrada.
- No se pierda ni una publicación: recibirá actualizaciones automáticas por correo electrónico que le avisarán cuando se publiquen nuevas publicaciones.
- Todo depende de usted: cambie sus preferencias de entrega para adaptarlas a sus necesidades.