Neu in Zen V15: Einfaches Verfolgen von Datenänderungen
Actian Germany GmbH
22. September 2021

Die Datenpflege ist eine ständige Anforderung in jeder Datenbankumgebung. Die Archivierung historischer Daten, die Synchronisierung von Daten nach einem Offline-Zugriff oder die Prüfung geänderter Daten sind alles Themen, die in der Regel eine individuelle Programmierung erfordern. Die meisten dieser Lösungen erfordern oft Änderungen am Datenbankdesign oder zeitaufwändige Prozesse, um diese Aufgaben zu erledigen. Mit der Veröffentlichung von Zen v15 gibt es nun eine einfache Möglichkeit, dies für jede bestehende Zen-Datendatei zu tun , ohne bestehende Anwendungen und Datenlayouts zu beeinträchtigen - sie heißt "System Data v2".
Systemdaten gibt es schon seit langem; sie bieten eine versteckte eindeutige Kennung für jede Aufzeichnung in einer Datendatei. Sie werden in Verbindung mit der Transaktionsprotokollierung verwendet, um die Datenintegrität und die Wiederherstellung im Falle eines Systemausfalls zu gewährleisten. Sie wird auch von DataExchange (für die Datenreplikation zwischen verschiedenen Instanzen von Zen-Windows-Servern in verteilten Datenumgebungen) verwendet, um Datensätze in Dateien, die zwischen Systemen repliziert werden, eindeutig zu identifizieren. Die versteckten Werte können über standardmäßige Btrieve-Get-Operationen durch Auslesen der Schlüsselnummer 125 abgerufen werden; abgesehen von ihrer Eindeutigkeit liefern die Systemdaten jedoch keine weiteren Informationen.
Mit Zen v15 wird System Data v2 eingeführt, das zwei versteckte, eindeutige Werte für jede Aufzeichnung liefert. Bei diesen Werten handelt es sich um tatsächliche Zeitstempel, die angeben, wann die Aufzeichnung in die Datei eingefügt und wann sie zuletzt aktualisiert wurde. Diese Zeitstempel werden von der Engine automatisch für jede empfangene Einfügung und Aktualisierung verarbeitet, unabhängig von der verwendeten Schnittstelle. Anwendungen, die mit Btrieve, Btrieve 2, ODBC, ADO.NET, PDAC, Java usw. geschrieben wurden, führen also alle dazu, dass die Zeitstempel der Systemdaten v2 beibehalten werden, wenn die Datendatei diese Option aktiviert hat. Das Dateiformat 13.0 ist für Systemdaten v2 erforderlich, und das Rebuild-Dienstprogramm kann verwendet werden, um diese Option für die von Ihnen ausgewählten Dateien zu aktivieren.
Wie die ursprünglichen Systemdaten können auch die neuen versteckten Werte über die Standard-Btrieve-Methoden abgerufen werden, indem die Schlüsselnummern 125 (Einfügezeitpunkt) und 124 (Aktualisierungszeitpunkt) mitgelesen werden. Darüber hinaus kann auf die Werte der Systemdaten v2 über jede SQL-Schnittstelle unter Verwendung der virtuellen Spaltennamen sys$create und sys$update zugegriffen werden. Die Daten in diesen Spalten werden als Timestamp(7) gespeichert, d.h. als Standard-Zeitstempel mit einer Granularität von einer Septasekunde.
Sehen wir uns ein Beispiel an, das im Zen-Kontrollzentrum (der Zen-Datenbankmanagement-Konsole) ausgeführt wird:
Um eine Tabelle mit Systemdaten v2 zu erstellen, fügen Sie das Schlüsselwort "SYSDATA_KEY_2" zur CREATE TABLE-Anweisung hinzu:
create Tabelle sensorData SYSDATA_KEY_2
(location varchar(20), temp real);
Dieses Schlüsselwort kann auch in einer ALTER TABLE-Anweisung verwendet werden, um eine bestehende Datei mit den neuen syskey-Werten neu zu erstellen. In beiden Fällen wird eine Datei der Version 13.0 erstellt.
Fügen wir nun ein paar Zeilen ein und sehen wir uns an, wie die virtuellen Spalten aussehen:
insert into sensorData values('Maschine1', 77.3);
insert into sensorData values('Maschine2', 79.8);
insert into sensorData values('Maschine3', 65.4);
insert into sensorData values('Maschine4', 90.0);
select "sys$create", "sys$update", sensorData.* from sensorData;
sys$create sys$update Standort temp
=========================== =========================== ======== =====
2021-09-13 12:49:45.0000000 2021-09-13 12:49:45.0000000 Maschine1 77.3
2021-09-13 12:49:45.0000001 2021-09-13 12:49:45.0000001 Rechner2 79.8
2021-09-13 12:49:45.0000002 2021-09-13 12:39:45.0000002 Maschine3 65.4
2021-09-13 12:49:45.0000003 2021-09-13 12:49:45.0000003 Maschine4 90.0
Anfänglich werden die Erstellungszeit und die Aktualisierungszeit als derselbe Wert aufgezeichnet. Sie werden feststellen, dass die Syskey-Datenwerte die Sekundenbruchteile als sieben Ziffern anzeigen. Dieser Teil des Zeitstempels wird verwendet, um die Einzigartigkeit des Wertes zu gewährleisten, und nicht, um die tatsächlichen Sekunden der Einfügung darzustellen.
Nachdem Sie eine Zeile aktualisiert haben, sehen Sie, dass sich nur der Wert sys$update geändert hat:
-eine Zeile aktualisieren:
update sensorData set temp = 90.1 where location = 'Maschine1';
-Zeilen zu finden, die aktualisiert wurden:
select "sys$create", "sys$update", sensorData.* from sensorData
wo sys$update > sys$create;
sys$create sys$update Standort temp
=========================== =========================== ======== =====
2021-09-13 12:49:45.0000000 2021-09-14 11:57:46.0000000 Maschine1 90.1
Weitere Beispiele für Abfragen:
-Zeilen finden, die in den letzten 20 Minuten eingefügt oder aktualisiert wurden:
select "sys$create", "sys$update", sensorData.* from sensorData
wo "sys$update" > Timestampadd(SQL_TSI_MINUTE, -20, now());
-Rückgabe aller geänderten Zeilen, einschließlich der Anzahl der Minuten seit der letzten Aktualisierung
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;
Die Systemdaten v2-Indizes sind von der SQL-Engine vollständig optimierbar. So wird eine Anfrage mit Einschränkungen oder Sortierung auf den virtuellen Spalten den Index verwenden, wenn dies angemessen ist.
Die Verfolgung des Erstellungszeitpunkts und des Zeitpunkts der letzten Aktualisierung ist mit Zen v15 und der Funktion Systemdaten v2 jetzt ganz einfach möglich. Laden Sie die Testversion hier herunter und probieren Sie sie aus!
Abonnieren Sie den Actian Blog
Abonnieren Sie den Blog von Actian, um direkt Dateneinblicke zu erhalten.
- Bleiben Sie auf dem Laufenden - Holen Sie sich die neuesten Informationen zu Data Analytics direkt in Ihren Posteingang.
- Verpassen Sie keinen Beitrag: Sie erhalten automatische E-Mail-Updates, die Sie informieren, wenn neue Beiträge veröffentlicht werden.
- Ganz wie sie wollen: Ändern Sie Ihre Lieferpräferenzen nach Ihren Bedürfnissen.