Esecuzione di query sulla cronologia delle revisioni - 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à.

Esecuzione di query sulla cronologia delle revisioni

Amazon QLDB archivia la cronologia completa di ogni documento in una tabella. Puoi vedere tutte e tre le revisioni del documento di immatricolazione del veicolo che hai precedentemente inserito, aggiornato ed eliminatoAggiornamento ed eliminazione di documenti interrogando la funzione di cronologia integrata.

Funzione di cronologia

La funzione di cronologia in QLDB è un'estensione PartiQL che restituisce le revisioni dalla vista definita dal sistema della tabella. Quindi, include sia i tuoi dati che i metadati associati nello stesso schema della vista confermata.

Sintassi

SELECT * FROM history( table_name | 'table_id' [, `start-time` [, `end-time` ] ] ) AS h [ WHERE h.metadata.id = 'id' ]
Argomenti
nome_tabella | 'tabella_id'

Il nome o l'ID della tabella. Un nome di tabella è un identificatore PartiQL che è possibile indicare con virgolette doppie o senza virgolette. L'ID di tabella è una stringa letterale che deve essere racchiusa tra virgolette singole. Per ulteriori informazioni sull'utilizzo degli ID di tabella, consultaInterrogazione della cronologia delle tabelle inattive.

`ora di inizio`, `ora di fine`

(Facoltativo) Specifica l'intervallo di tempo durante il quale le revisioni erano attive. Questi parametri non specificano l'intervallo di tempo durante il quale le revisioni sono state salvate nel giornale in una transazione.

L'ora di inizio e di fine sono valori letterali del timestamp Ion che possono essere indicati con contrassegni (`...`). Per ulteriori informazioni, consulta Interrogazione di Ion con PartiQL in Amazon QLDB.

Questi parametri temporali hanno il seguente comportamento:

  • L'ora di inizio e l'ora di fine sono entrambe incluse. deve essere in formato data e ora e in formato UTC.

  • L'ora di inizio deve essere inferiore o uguale all'ora di fine e può essere qualsiasi data passata arbitraria.

  • L'ora di fine deve essere minore o uguale alla data e l'ora UTC.

  • Se si specifica un'ora di inizio ma non un'ora di fine, l'interrogazione imposta come ora di fine la data e l'ora correnti. Se non si specifica nessuno dei due, l'interrogazione restituisce l'intera cronologia.

'id'

(Facoltativo) L'ID del documento per il quale si desidera interrogare la cronologia delle revisioni, indicato da virgolette singole.

Suggerimento

Come procedura consigliata, qualifica un'interrogazione cronologica con un intervallo di date (ora di inizio e ora di fine) e un ID del documento (metadata.id). In QLDB, ogniSELECT query viene elaborata in una transazione ed è soggetta a un limite di timeout della transazione.

Le interrogazioni relative alla cronologia non utilizzano gli indici creati su una tabella. La cronologia QLDB è indicizzata solo in base all'ID del documento e al momento non è possibile creare indici di cronologia aggiuntivi. Le interrogazioni cronologiche che includono un'ora di inizio e un'ora di fine ottengono il vantaggio della qualificazione dell'intervallo di date.

Esempio di query sulla cronologia

Per consultare la cronologia del documento di immatricolazione del veicolo, utilizzaid quello precedentemente salvatoAggiornamento ed eliminazione di documenti. Ad esempio, la seguente query di cronologia restituisce tutte le revisioni dell'ID del documentoADR2Ll1fGsU4Jr4EqTdnQF che sono state attive tra2019-06-05T00:00:00Z e2019-06-05T23:59:59Z.

Nota

Ricorda che i parametri dell'ora di inizio e di fine non specificano l'intervallo di tempo in cui le revisioni sono state salvate nel giornale in una transazione. Ad esempio, se una revisione è stata salvata prima2019-06-05T00:00:00Z ed è rimasta attiva dopo l'ora di inizio, questa query di esempio restituirà quella revisione nei risultati.

Assicurati di sostituire l'idora di inizio e l'ora di fine con i tuoi valori, a seconda dei casi.

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

I risultati della query dovrebbero apparire simili ai seguenti.

{ 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" } }

L'output include attributi di metadati che forniscono dettagli su quando ogni elemento è stato modificato e con quale transazione. Da questi dati, puoi visualizzare quanto segue:

  • Il documento è identificato in modo univoco dal sistema assegnatoid:ADR2Ll1fGsU4Jr4EqTdnQF. Si tratta di un UUID rappresentato in una stringa codificata in Base62.

  • Un'INSERTistruzione crea la revisione iniziale di un documento (versione0).

  • Ogni aggiornamento successivo crea una nuova revisione con lo stesso documentoid e un numero di versione incrementato.

  • IltxId campo indica la transazione in cui è stata salvata ogni revisione etxTime indica quando ciascuna di esse è stata confermata.

  • Un'DELETEistruzione crea una nuova ma definitiva revisione di un documento. Questa revisione finale contiene solo metadati.

Per sapere come eliminare definitivamente una revisione, procedi aRedazione delle revisioni dei documenti.