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
In Amazon QLDB löscht eine DELETE
Anweisung ein Dokument nur logisch, indem eine neue Version erstellt wird, die es als gelöscht markiert. QLDB unterstützt auch einen Datenschwärzungsvorgang, mit dem Sie inaktive Dokumentrevisionen 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 Amazon QLDB-Konsole einsehen.
Bei der Schwärzung werden nur die Benutzerdaten in der angegebenen Version gelöscht und die Journalsequenz und die Metadaten des Dokuments bleiben unverändert. Dadurch wird die allgemeine Datenintegrität Ihres Hauptbuches gewahrt.
Bevor Sie mit der Datenredaktion in QLDB beginnen, sollten Sie sich mit der Amazon QLDB PartiQL-Referenz vertraut machen. Überlegungen und Einschränkungen bei der redaktionellen Bearbeitung
Themen
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 Dokument-ID und Hash, 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. Zum Beispiel:
`{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ärzanforderung einreichen, indem Sie die gespeicherte Prozedur ausführen, verarbeitet QLDB die Schwärzung von 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:
-
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 der Revisionsbearbeitung 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 über die bestehenden Verifizierungs-API-Operationen kryptografisch überprüfbar. Weitere Informationen zur Verifizierung finden Sie unter. Datenüberprüfung in 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 eingeschlossen. 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, QLDB jedoch Ergebnisse im Amazon Ion-Format zurückgibt. Einzelheiten zur Syntax und Semantik von PartiQL in QLDB finden Sie unter. 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, verarbeitet QLDB Ihre Schwärzungsanforderung asynchron. Nach Abschluss der Schwärzung wird die data
Struktur dauerhaft entfernt und durch ein neues Feld ersetzt.
Der Wert dieses Feldes ist der Ionen-Hash der entfernten dataHash
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 DELETE-Anweisung. Mit der folgenden Anweisung wird beispielsweise das VehicleRegistration
Dokument mit der Fahrgestellnummer von logisch gelöscht. 1HVBBAANXWH544237
DELETE FROM VehicleRegistration AS r WHERE r.VIN = '1HVBBAANXWH544237'
Redigieren Sie dann die vorherige Version vor dem Löschen, wie zuvor beschrieben. Bei Bedarf können Sie auch alle früheren Versionen einzeln redigieren.
Wenn Ihr Anwendungsfall erfordert, dass das Dokument aktiv bleibt, verwenden Sie zunächst eine UPDATE - oder FROM-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
QLDB unterstützt die Schwärzung 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 der Fahrgestellnummer von aus dem VehicleRegistration
Dokument entfernt. 1HVBBAANXWH544237
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. Optimieren der Abfrageleistung