Redazione delle revisioni dei documenti - Database Amazon Quantum Ledger (Amazon) QLDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Redazione delle revisioni dei documenti

Importante

Avviso di fine del supporto: i clienti esistenti potranno utilizzare Amazon QLDB fino alla fine del supporto il 31/07/2025. Per ulteriori dettagli, consulta Migrare un Amazon QLDB Ledger ad Amazon Aurora Postgre. SQL

In AmazonQLDB, una DELETE dichiarazione elimina logicamente un documento solo creando una nuova revisione che lo contrassegna come eliminato. QLDBsupporta anche un'operazione di redazione dei dati che consente di eliminare definitivamente le revisioni inattive dei documenti nella cronologia di una tabella.

Nota

I registri creati prima del 22 luglio 2021 non sono attualmente idonei alla redazione. Puoi visualizzare l'ora di creazione del tuo libro mastro sulla QLDB console Amazon.

L'operazione di redazione elimina solo i dati utente nella revisione specificata e lascia invariati la sequenza del diario e i metadati del documento. Ciò mantiene l'integrità complessiva dei dati del registro.

Prima di iniziare con la redazione dei datiQLDB, assicurati di leggerlo Considerazioni e limitazioni sulla redazione nel riferimento Amazon QLDB PartiQL.

Procedura di redazione memorizzata

È possibile utilizzare la REDACT_REVISION stored procedure per eliminare definitivamente una singola revisione inattiva in un registro. Questa stored procedure elimina tutti i dati utente nella revisione specificata sia nella memorizzazione indicizzata che nella memorizzazione del diario. Tuttavia, lascia invariati la sequenza del diario e i metadati del documento, inclusi l'ID e l'hash del documento. Questa operazione è irreversibile.

La revisione del documento specificata deve essere una revisione inattiva nella cronologia. L'ultima revisione attiva di un documento non è idonea per la redazione.

Per redigere più revisioni, è necessario eseguire la stored procedure una volta per ogni revisione. È possibile redigere una revisione per transazione.

Sintassi

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

La posizione nel blocco del journal della revisione del documento da redigere. Un indirizzo è una struttura Amazon Ion con due campi: strandId esequenceNo.

Si tratta di un valore letterale Ion indicato da backtick. Per esempio:

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

L'ID univoco della tabella di cui si desidera redigere la revisione del documento, indicato da virgolette singole.

'document-id'

L'ID univoco del documento della revisione da oscurare, indicato da virgolette singole.

Verifica se una redazione è completa

Quando si invia una richiesta di redazione eseguendo la stored procedure, QLDB elabora la redazione dei dati in modo asincrono. Al termine, i dati utente presenti nella revisione (rappresentati dalla struttura) vengono rimossi definitivamente. data Per verificare se una richiesta di redazione è stata completata, puoi utilizzare uno dei seguenti:

Una volta completata la redazione di una revisione, la struttura della revisione viene sostituita da un nuovo campo. data dataHash Il valore di questo campo è l'hash ionico della data struttura rimossa, come illustrato nell'esempio seguente. Di conseguenza, il registro mantiene l'integrità complessiva dei dati e rimane verificabile crittograficamente attraverso le operazioni di verifica esistenti. API Per ulteriori informazioni sulla verifica, consulta. Verifica dei dati in Amazon QLDB

Esempio di redazione

Considera il documento di immatricolazione del veicolo che hai precedentemente esaminato. Interrogare la cronologia delle revisioni Supponiamo di voler redigere la seconda revisione (). version:1 Il seguente esempio di query mostra questa revisione prima della redazione. Nei risultati della query, la data struttura che verrà oscurata è evidenziata in 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" } }

blockAddressAnnotatelo nei risultati della query perché è necessario passare questo valore alla REDACT_REVISION stored procedure. Quindi, trova l'ID univoco della VehicleRegistration tabella interrogando il catalogo di sistema, come segue.

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

Utilizza questo ID di tabella insieme all'ID del documento e all'indirizzo di blocco per eseguireREDACT_REVISION. L'ID della tabella e l'ID del documento sono stringhe letterali che devono essere racchiuse tra virgolette singole e l'indirizzo di blocco è un valore letterale Ion racchiuso tra virgolette. Assicurati di sostituire questi argomenti con i tuoi valori, se necessario.

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

Quando utilizzate la QLDB console o la QLDB shell per richiedere un ID di tabella o un ID di documento (o qualsiasi valore letterale di stringa), il valore restituito viene racchiuso tra virgolette doppie. Tuttavia, quando si specificano gli argomenti ID della tabella e dell'ID del documento della REDACT_REVISION stored procedure, è necessario racchiudere i valori tra virgolette singole.

Questo perché scrivi istruzioni in formato PartiQL, ma QLDB restituisci risultati in formato Amazon Ion. Per i dettagli sulla sintassi e la semantica di PartiQL in, vedere. QLDB Interrogare Ion con PartiQL

Una richiesta di redazione valida restituisce una struttura Ion che rappresenta la revisione del documento da oscurare, come segue.

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

Quando si esegue questa procedura memorizzata, QLDB elabora la richiesta di redazione in modo asincrono. Al termine della redazione, la data struttura viene rimossa definitivamente e sostituita da una nuova dataHash . Il valore di questo campo è l'hash ionico della data struttura rimossa, come segue.

Nota

Questo dataHash esempio viene fornito solo a scopo informativo e non è un valore hash calcolato reale.

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

Eliminazione e redazione di una revisione attiva

Le revisioni attive dei documenti (ovvero le ultime revisioni non eliminate di ogni documento) non sono idonee per la redazione dei dati. Prima di poter oscurare una revisione attiva, è necessario aggiornarla o eliminarla. In questo modo la revisione precedentemente attiva viene spostata nella cronologia e la rende idonea per la redazione.

Se il tuo caso d'uso richiede che l'intero documento sia contrassegnato come eliminato, devi prima utilizzare un'DELETEistruzione. Ad esempio, l'istruzione seguente elimina logicamente il VehicleRegistration documento con un VIN of. 1HVBBAANXWH544237

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

Quindi, redigete la revisione precedente prima di questa eliminazione, come descritto in precedenza. Se necessario, puoi anche oscurare singolarmente eventuali revisioni precedenti.

Se il tuo caso d'uso richiede che il documento rimanga attivo, devi prima utilizzare un'FROMistruzione UPDATEo per oscurare o rimuovere i campi che desideri oscurare. Questo processo è descritto nella sezione seguente.

Oscurare un particolare campo all'interno di una revisione

QLDBnon supporta la redazione di un particolare campo all'interno di una revisione del documento. A tale scopo, è possibile innanzitutto utilizzare un'REMOVEistruzione UPDATE- REMOVE o FROM- per rimuovere un campo esistente da una revisione. Ad esempio, l'istruzione seguente rimuove il LicensePlateNumber campo dal VehicleRegistration documento con un VIN di1HVBBAANXWH544237.

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

Quindi, redigete la revisione precedente prima di questa rimozione, come descritto in precedenza. Se necessario, puoi anche oscurare singolarmente tutte le revisioni precedenti che includono questo campo ora rimosso.

Per informazioni su come ottimizzare le query, procedi con. Ottimizzazione delle prestazioni delle query