Abfragen des Revisionsverlaufs - Amazon Quantum Ledger Database (Amazon QLDB)

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abfragen des Revisionsverlaufs

Amazon QLDB speichert den vollständigen Verlauf jedes Dokuments in einer Tabelle. Sie können mithilfe einer Abfrage der integrierten Verlaufsfunktion alle drei Revisionen des Kfz-Zulassungsdokuments anzeigen, die Sie zuvor in Dokumente aktualisieren und löschen eingefügt, aktualisiert oder gelöscht haben.

Verlaufsfunktion

Die History-Funktion in QLDB ist eine PartiQL-Erweiterung, die Revisionen aus der systemdefinierten Ansicht Ihrer Tabelle zurückgibt. Sie enthält Ihre Daten und die zugehörigen Metadaten in demselben Schema wie die bestätigte Ansicht.

Syntax

SELECT * FROM history( table_name | 'table_id' [, `start-time` [, `end-time` ] ] ) AS h [ WHERE h.metadata.id = 'id' ]
Argumente
Tabellenname | 'Tabellen-ID'

Entweder der Tabellenname oder die Tabellen-ID. Ein Tabellenname ist eine PartiQL-Kennung, die Sie mit doppelten Anführungszeichen oder keinen Anführungszeichen bezeichnen können. Eine Tabellen-ID ist ein Zeichenfolgenliteralwert, der in einfache Anführungszeichen eingeschlossen werden muss. Weitere Informationen zur Verwendung von Tabellen-IDs finden Sie unterDen Verlauf inaktiver Tabellen abfragen.

`Startzeit`, `Endzeit`

(Optional) Gibt den Zeitraum an, in dem alle Revisionen aktiv waren. Diese Parameter geben nicht den Zeitraum an, in dem Revisionen im Rahmen einer Transaktion in das Journal übernommen wurden.

Die Start- und Endzeiten sind Ion-Timestamp-Literale, die mit backticks (`...`) gekennzeichnet werden können. Weitere Informationen hierzu finden Sie unter Ion mit PartiQL in Amazon QLDB abfragen.

Diese Zeitparameter haben das folgende Verhalten:

  • Die Start - und Endzeit sind beide inklusive. Sie müssen im ISO 8601-Datums- und Zeitformat und in koordinierter Weltzeit (Coordinated Universal Time, UTC) angegeben werden.

  • Die start-time (Anfangszeit) muss früher oder gleich der end-time (Endzeit) sein und kann jede beliebige Datum in der Vergangenheit sein.

  • Die end-time (Endzeit) muss früher oder gleich dem aktuellen UTC-Datum und der Uhrzeit sein.

  • Wenn Sie eine Startzeit, aber nicht eine Endzeit angeben, verwendet Ihre Abfrage das aktuelle Datum und die aktuelle Uhrzeit als Endzeit. Wenn Sie keine dieser Zeiten angeben, gibt die Abfrage den gesamten Verlauf zurück.

'ID'

(Optional) Die Dokument-ID, für die Sie den Revisionsverlauf abfragen möchten, gekennzeichnet durch einfache Anführungszeichen.

Tipp

Es hat sich bewährt, eine Verlaufsabfrage sowohl mit einem Datumsbereich (Start- und Endzeit) als auch mit einer Dokument-ID (metadata.id) zu qualifizieren. In QLDB wird jedeSELECT Anfrage in einer Transaktion verarbeitet und unterliegt einem Transaktions-Timeout-Limit.

Verlaufsabfragen verwenden nicht die Indizes, die Sie für eine Tabelle erstellen. Der QLDB-Verlauf wird nur nach der Dokument-ID indexiert, und Sie können derzeit keine zusätzlichen Verlaufsindizes erstellen. Verlaufsabfragen, die eine Start- und Endzeit enthalten, profitieren von der Qualifizierung des Datumsbereichs.

Beispiel für die Verlaufsabfrage

Um die Historie des Fahrzeugscheins abzufragen, verwenden Sie denid, den Sie zuvor gespeichert habenDokumente aktualisieren und löschen. Die folgende Verlaufsabfrage gibt beispielsweise alle Revisionen für die Dokument-ID zurückADR2Ll1fGsU4Jr4EqTdnQF, die jemals zwischen2019-06-05T00:00:00Z und aktiv waren2019-06-05T23:59:59Z.

Anmerkung

Denken Sie daran, dass die Start- und Endzeitparameter nicht den Zeitraum angeben, in dem Revisionen in einer Transaktion in das Journal übernommen wurden. Wenn beispielsweise eine Revision zuvor bestätigt wurde2019-06-05T00:00:00Z und nach dieser Startzeit aktiv war, gibt diese Beispielabfrage diese Revision in den Ergebnissen zurück.

Stellen Sie sicher, die id, die Start- und Endzeit durch Ihre eigenen Werte zu ersetzen.

SELECT * FROM history(VehicleRegistration, `2019-06-05T00:00:00Z`, `2019-06-05T23:59:59Z`) AS h WHERE h.metadata.id = 'ADR2Ll1fGsU4Jr4EqTdnQF' --replace with your id

Ihre Abfrageergebnisse sollten wie folgt aussehen.

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:14 }, hash:{{B2wYwrHKOWsmIBmxUgPRrTx9lv36tMlod2xVvWNiTbo=}}, data: { VIN: "1HVBBAANXWH544237", LicensePlateNumber: "LS477D", State: "WA", City: "Tacoma", PendingPenaltyTicketAmount: 42.20, ValidFromDate: 2011-10-26T, ValidToDate: 2023-09-25T, Owners: { PrimaryOwner: { PersonId: "KmA3XPKKFqYCP2zhR3d0Ho" }, SecondaryOwners: [] } }, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:0, txTime:2019-06-05T20:53:321d-3Z, txId:"HgXAkLjAtV0HQ4lNYdzX60" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17 }, hash:{{LGSFZ4iEYWZeMwmAqcxxNyT4wbCtuMOmFCj8pEd6Mp0=}}, data: { VIN: "1HVBBAANXWH544237", LicensePlateNumber: "LS477D", State: "WA", PendingPenaltyTicketAmount: 42.20, ValidFromDate: 2011-10-26T, ValidToDate: 2023-09-25T, Owners: { PrimaryOwner: { PersonId: "KmA3XPKKFqYCP2zhR3d0Ho" }, SecondaryOwners: [] }, City: "Bellevue" }, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:1, txTime:2019-06-05T21:01:442d-3Z, txId:"9cArhIQV5xf5Tf5vtsPwPq" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:19 }, hash:{{7bm5DUwpqJFGrmZpb7h9wAxtvggYLPcXq+LAobi9fDg=}}, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:2, txTime:2019-06-05T21:03:76d-3Z, txId:"9GslbtDtpVHAgYghR5FXbZ" } }

Diese Ausgabe enthält Metadatenattribute, die Informationen dazu bieten, wann die einzelnen Elemente geändert wurden und von welcher Transaktion. Aus diesen Daten können Sie Folgendes schließen:

  • Das Dokument wird eindeutig durch seine vom System zugewiesene id identifiziert: ADR2Ll1fGsU4Jr4EqTdnQF. Dies ist eine UUID, die in einer Base62-codierten Zeichenfolge dargestellt wird.

  • Eine INSERT-Anweisung erstellt die anfängliche Revision eines Dokuments (Version 0).

  • Jedes nachfolgende Update erstellt eine neue Revision mit der gleichen Dokument-id und einer aufsteigenden Versionsnummer.

  • Das txId-Feld gibt die Transaktion an, die jede Revision festgeschrieben hat, und txTime zeigt, wann jede Revision festgeschrieben wurde.

  • Eine DELETE-Anweisung erstellt eine neue, aber finale Revision eines Dokuments. Diese finale Revision hat nur Metadaten.

Um zu erfahren, wie Sie eine Revision dauerhaft löschen, fahren Sie mit fortRedigieren von Dokumentrevisionen.