Revisionen von Dokumenten redigieren - Amazon Quantum Ledger-Datenbank (AmazonQLDB)

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.

Revisionen von Dokumenten redigieren

Wichtig

Hinweis zum Ende des Supports: Bestandskunden können Amazon QLDB bis zum Ende des Supports am 31.07.2025 nutzen. Weitere Informationen finden Sie unter Migrieren eines Amazon QLDB Ledgers zu Amazon Aurora SQL Postgre.

In Amazon löscht eine DELETE Anweisung ein Dokument nur logischQLDB, indem eine neue Version erstellt wird, die es als gelöscht markiert. QLDBunterstützt auch einen Vorgang zum Schwärzen von Daten, mit dem Sie inaktive Dokumentversionen in der Historie einer Tabelle dauerhaft löschen können.

Anmerkung

Alle Hauptbücher, die vor dem 22. Juli 2021 erstellt wurden, können derzeit nicht geschwärzt werden. Sie können die Erstellungszeit Ihres Ledgers auf der QLDB Amazon-Konsole einsehen.

Bei der Schwärzung werden nur die Benutzerdaten in der angegebenen Version gelöscht. Die Journalreihenfolge und die Metadaten des Dokuments bleiben unverändert. Dadurch wird die allgemeine Datenintegrität Ihres Hauptbuches gewahrt.

Bevor Sie mit der Datenredaktion beginnen, stellen Sie sicherQLDB, dass Sie Überlegungen und Einschränkungen bei der Bearbeitung in der Amazon QLDB PartiQL-Referenz nachlesen.

Gespeicherte Prozedur für die Schwärzung

Sie können die REDACT_REVISION gespeicherte Prozedur verwenden, um eine einzelne, inaktive Version in einem Ledger dauerhaft zu löschen. Diese gespeicherte Prozedur löscht alle Benutzerdaten in der angegebenen Revision sowohl im Indexspeicher als auch im Journalspeicher. Die Journalsequenz und die Metadaten des Dokuments, einschließlich der Dokument-ID und des Hashs, bleiben jedoch unverändert. Dieser Vorgang ist irreversibel.

Bei der angegebenen Dokumentrevision muss es sich um eine inaktive Revision in der Historie handeln. Die letzte aktive Version eines Dokuments kann nicht geschwärzt werden.

Um mehrere Versionen zu redigieren, müssen Sie die gespeicherte Prozedur für jede Revision einmal ausführen. Sie können eine Revision pro Transaktion redigieren.

Syntax

EXEC REDACT_REVISION `block-address`, 'table-id', 'document-id'
Argumente
`block-address`

Der Journalblock-Speicherort der Dokumentrevision, die geschwärzt werden soll. Eine Adresse ist eine Amazon Ion-Struktur mit zwei Feldern: strandId undsequenceNo.

Dies ist ein Ion-Literalwert, der durch Backticks gekennzeichnet wird. Beispielsweise:

`{strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17}`
'table-id'

Die eindeutige ID der Tabelle, deren Dokumentversion Sie redigieren möchten, gekennzeichnet durch einfache Anführungszeichen.

'document-id'

Die eindeutige Dokument-ID der Version, die redigiert werden soll, gekennzeichnet durch einfache Anführungszeichen.

Es wird geprüft, ob eine Schwärzung abgeschlossen ist

Wenn Sie eine Schwärzungsanforderung einreichen, indem Sie die gespeicherte Prozedur ausführen, QLDB verarbeitet die Schwärzung der Daten asynchron. Nach Abschluss des Vorgangs werden die Benutzerdaten in der Revision (dargestellt durch die data Struktur) dauerhaft entfernt. Um zu überprüfen, ob eine Redaktionsanfrage abgeschlossen wurde, können Sie eine der folgenden Methoden verwenden:

  • Journalexport

  • Journal-Stream

  • GetBlock APIBetrieb

  • GetRevision APIBetrieb

  • Funktion „Verlauf“Hinweis: Nachdem eine Schwärzung im Journal abgeschlossen ist, kann es einige Zeit dauern, bis Verlaufsabfragen das Ergebnis der Schwärzung anzeigen. Möglicherweise werden einige Änderungen vor anderen geschwärzt, wenn die asynchrone Schwärzung abgeschlossen ist, aber bei Verlaufsabfragen werden letztendlich die fertigen Ergebnisse angezeigt.

Nach Abschluss einer Revisionsredaktion wird die data Struktur der Revision durch ein neues Feld ersetzt. dataHash Der Wert dieses Feldes ist der Ionen-Hash der entfernten data Struktur, wie im folgenden Beispiel gezeigt. Dadurch behält das Ledger seine allgemeine Datenintegrität bei und bleibt im Rahmen der bestehenden Verifizierungsvorgänge kryptografisch überprüfbar. API Weitere Informationen zur Verifizierung finden Sie unter. Datenüberprüfung bei Amazon QLDB

Beispiel für redaktionelle Bearbeitung

Betrachten Sie den Fahrzeugschein, den Sie zuvor überprüft haben. Abfragen des Revisionsverlaufs Angenommen, Sie möchten die zweite Version redigieren (version:1). Das folgende Abfragebeispiel zeigt diese Revision vor der Schwärzung. In den Abfrageergebnissen ist die data Struktur, die geschwärzt werden soll, hervorgehoben red italics.

SELECT * FROM history(VehicleRegistration) AS h WHERE h.metadata.id = 'ADR2Ll1fGsU4Jr4EqTdnQF' --replace with your id AND h.metadata.version = 1
{ 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" } }

Beachten Sie dies blockAddress in den Abfrageergebnissen, da Sie diesen Wert an die REDACT_REVISION gespeicherte Prozedur übergeben müssen. Suchen Sie dann die eindeutige ID der VehicleRegistration Tabelle, indem Sie den Systemkatalog wie folgt abfragen.

SELECT tableId FROM information_schema.user_tables WHERE name = 'VehicleRegistration'

Verwenden Sie diese Tabellen-ID zusammen mit der Dokument-ID und der Blockadresse für die AusführungREDACT_REVISION. Die Tabellen-ID und die Dokument-ID sind Zeichenfolgenliterale, die in einfache Anführungszeichen eingeschlossen werden müssen, und die Blockadresse ist ein Ion-Literal, das in Backticks eingeschlossen ist. Achten Sie darauf, diese Argumente gegebenenfalls durch Ihre eigenen Werte zu ersetzen.

EXEC REDACT_REVISION `{strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17}`, '5PLf9SXwndd63lPaSIa0O6', 'ADR2Ll1fGsU4Jr4EqTdnQF'
Tipp

Wenn Sie die QLDB Konsole oder die QLDB Shell verwenden, um eine Tabellen-ID oder Dokument-ID (oder einen beliebigen Zeichenkettenliteralwert) abzufragen, wird der zurückgegebene Wert in doppelte Anführungszeichen gesetzt. Wenn Sie jedoch die Argumente Tabellen-ID und Dokument-ID der REDACT_REVISION gespeicherten Prozedur angeben, müssen Sie die Werte in einfache Anführungszeichen setzen.

Das liegt daran, dass Sie Anweisungen im PartiQL-Format schreiben, Ergebnisse jedoch QLDB im Amazon Ion-Format zurückgeben. Einzelheiten zur Syntax und Semantik von PartiQL finden Sie unterQLDB. Abfragen von Ion mit PartiQL

Eine gültige Schwärzungsanforderung gibt eine Ionen-Struktur zurück, die die Version des Dokuments darstellt, das Sie redigieren, und zwar wie folgt.

{ blockAddress: { strandId: "JdxjkR9bSYB5jMHWcI464T", sequenceNo: 17 }, tableId: "5PLf9SXwndd63lPaSIa0O6", documentId: "ADR2Ll1fGsU4Jr4EqTdnQF", version: 1 }

Wenn Sie diese gespeicherte Prozedur ausführen, QLDB verarbeitet sie Ihre Schwärzanforderung asynchron. Nach Abschluss der Schwärzung wird die data Struktur dauerhaft entfernt und durch eine neue ersetzt dataHash aus. Der Wert dieses Feldes ist der Ionen-Hash der entfernten data Struktur, wie folgt.

Anmerkung

Dieses dataHash Beispiel dient nur zu Informationszwecken und ist kein echter berechneter Hashwert.

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17 }, hash:{{LGSFZ4iEYWZeMwmAqcxxNyT4wbCtuMOmFCj8pEd6Mp0=}}, dataHash: {{s83jd7sfhsdfhksj7hskjdfjfpIPP/DP2hvionas2d4=}}, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:1, txTime:2019-06-05T21:01:442d-3Z, txId:"9cArhIQV5xf5Tf5vtsPwPq" } }

Eine aktive Revision löschen und redigieren

Aktive Dokumentrevisionen (d. h. die letzten, nicht gelöschten Versionen jedes Dokuments) kommen nicht für die Datenschwärzung in Frage. Bevor Sie eine aktive Version redigieren können, müssen Sie sie zuerst aktualisieren oder löschen. Dadurch wird die zuvor aktive Version in die Historie verschoben, sodass sie geschwärzt werden kann.

Wenn Ihr Anwendungsfall erfordert, dass das gesamte Dokument als gelöscht markiert wird, verwenden Sie zunächst eine DELETEAnweisung. Die folgende Anweisung löscht beispielsweise logisch das VehicleRegistration Dokument mit einem VIN von. 1HVBBAANXWH544237

DELETE FROM VehicleRegistration AS r WHERE r.VIN = '1HVBBAANXWH544237'

Redigieren Sie dann die vorherige Version vor diesem Löschen, wie zuvor beschrieben. Bei Bedarf können Sie frühere Versionen auch einzeln redigieren.

Wenn Ihr Anwendungsfall erfordert, dass das Dokument aktiv bleibt, verwenden Sie zunächst eine UPDATEFROMOder-Anweisung, um die Felder, die Sie schwärzen möchten, zu verdecken oder zu entfernen. Dieser Vorgang wird im folgenden Abschnitt beschrieben.

Ein bestimmtes Feld innerhalb einer Revision redigieren

QLDBunterstützt das Schwärzen eines bestimmten Felds innerhalb einer Dokumentrevision nicht. Dazu können Sie zunächst eine UPDATE- REMOVE oder FROM- REMOVE -Anweisung verwenden, um ein vorhandenes Feld aus einer Revision zu entfernen. Mit der folgenden Anweisung wird beispielsweise das LicensePlateNumber Feld mit einem VIN von aus aus dem VehicleRegistration Dokument entfernt1HVBBAANXWH544237.

UPDATE VehicleRegistration AS r REMOVE r.LicensePlateNumber WHERE r.VIN = '1HVBBAANXWH544237'

Redigieren Sie dann die vorherige Version vor dem Entfernen, wie zuvor beschrieben. Bei Bedarf können Sie auch alle früheren Versionen, die dieses jetzt entfernte Feld enthalten, einzeln schwärzen.

Um zu erfahren, wie Sie Ihre Abfragen optimieren können, fahren Sie mit fort. Optimierung der Abfrageleistung