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à.
Record di stream QLDB in Kinesis
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 registro Amazon QLDB su Amazon Aurora PostgreSQL
Uno stream Amazon QLDB scrive tre tipi di record di dati su una determinata risorsa Amazon Kinesis Data Streams: controllo, riepilogo dei blocchi e dettagli di revisione. Tutti e tre i tipi di record sono scritti nella rappresentazione binaria del formato Amazon Ion.
I record di controllo indicano l'inizio e il completamento dei tuoi stream QLDB. Ogni volta che viene eseguita una revisione nel diario, uno stream QLDB scrive tutti i dati dei blocchi di journal associati nei record di riepilogo dei blocchi e dei dettagli di revisione.
I tre tipi di record sono polimorfici. Sono tutti costituiti da un record comune di primo livello che contiene l'ARN del flusso QLDB, il tipo di record e il payload del record. Questo record di primo livello ha il seguente formato.
{ qldbStreamArn: string, recordType: string, payload: { //control | block summary | revision details record } }
Il recordType
campo può avere uno dei tre valori seguenti:
-
CONTROL
-
BLOCK_SUMMARY
-
REVISION_DETAILS
Le seguenti sezioni descrivono il formato e il contenuto di ogni singolo record di payload.
Nota
QLDB scrive tutti i record di flusso su Kinesis Data Streams nella rappresentazione binaria di Amazon Ion. I seguenti esempi sono forniti nella rappresentazione testuale di Ion per illustrare il contenuto del record in un formato leggibile.
Argomenti
Registri di controllo
Uno stream QLDB scrive record di controllo per indicarne gli eventi di inizio e completamento. Di seguito sono riportati alcuni esempi di record di controllo con dati di esempio per ciascuno di essi: controlRecordType
-
CREATED
— Il primo record che uno stream QLDB scrive su Kinesis per indicare che lo stream appena creato è attivo.{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"CONTROL", payload:{ controlRecordType:"CREATED" } }
-
COMPLETED
— L'ultimo record che uno stream QLDB scrive su Kinesis per indicare che lo stream ha raggiunto la data e l'ora di fine specificate. Questo record non viene scritto se annulli lo streaming.{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"CONTROL", payload:{ controlRecordType:"COMPLETED" } }
Blocca i record di ri
Un record di riepilogo dei blocchi rappresenta un blocco del diario in cui vengono salvate le revisioni dei documenti. Un blocco è un oggetto che viene salvato nel tuo journal QLDB durante una transazione.
Il payload di un record di riepilogo dei blocchi contiene l'indirizzo del blocco, il timestamp e altri metadati della transazione che ha eseguito il blocco. Include anche gli attributi di riepilogo delle revisioni nel blocco e le istruzioni PartiQL che le hanno salvate. Di seguito è riportato un esempio di record di riepilogo dei blocchi con dati di esempio.
Nota
Questo esempio di riepilogo dei blocchi viene fornito solo a scopo informativo. Gli hash mostrati non sono valori hash calcolati reali.
{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"BLOCK_SUMMARY", payload:{ blockAddress:{ strandId:"ElYL30RGoqrFCbbaQn3K6m", sequenceNo:60807 }, transactionId:"9RWohCo7My4GGkxRETAJ6M", blockTimestamp:2019-09-18T17:00:14.601000001Z, blockHash:{{6Pk9KDYJd38ci09oaHxx0D2grtgh4QBBqbDS6i9quX8=}}, entriesHash:{{r5YoH6+NXDXxgoRzPREGAWJfn73KlZE0eTfbTxZWUDU=}}, previousBlockHash:{{K3ti0Agk7DEponywKcQCPRYVHb5RuyxdmQFTfrloptA=}}, entriesHashList:[ {{pbzvz6ofJC7mD2jvgfyrY/VtR01zIZHoWy8T1VcxlGo=}}, {{k2brC23DLMercmiOWHiURaGwHu0mQtLzdNPuviE2rcs=}}, {{hvw1EV8k4oOkIO36kblO/+UUSFUQqCanKuDGr0aP9nQ=}}, {{ZrLbkyzDcpJ9KWsZMZqRuKUkG/czLIJ4US+K5E31b+Q=}} ], transactionInfo:{ statements:[ { statement:"SELECT * FROM Person WHERE GovId = ?", startTime:2019-09-18T17:00:14.587Z, statementDigest:{{p4Dn0DiuYD3Xm9UQQ75YLwmoMbSfJmopOmTfMnXs26M=}} }, { statement:"INSERT INTO Person ?", startTime:2019-09-18T17:00:14.594Z, statementDigest:{{klMLkLfa5VJqk6JUPtHkQpOsDdG4HmuUaq/VaApQflU=}} }, { statement:"INSERT INTO VehicleRegistration ?", startTime:2019-09-18T17:00:14.598Z, statementDigest:{{B0gO9BWVNrzRYFoe7t+GVLpJ6uZcLKf5t/chkfRhspI=}} } ], documents:{ '7z2OpEBgVCvCtwvx4a2JGn':{ tableName:"Person", tableId:"LSkFkQvkIOjCmpTZpkfpn9", statements:[1] }, 'K0FpsSLpydLDr7hi6KUzqk':{ tableName:"VehicleRegistration", tableId:"Ad3A07z0ZffC7Gpso7BXyO", statements:[2] } } }, revisionSummaries:[ { hash:{{uDthuiqSy4FwjZssyCiyFd90XoPSlIwomHBdF/OrmkE=}}, documentId:"7z2OpEBgVCvCtwvx4a2JGn" }, { hash:{{qJID/amu0gN3dpG5Tg0FfIFTh/U5yFkfT+g/O6k5sPM=}}, documentId:"K0FpsSLpydLDr7hi6KUzqk" } ] } }
Sul revisionSummaries
campo, alcune revisioni potrebbero non avere un. documentId
Si tratta di revisioni di sistema solo interne che non contengono dati utente. Uno stream QLDB include queste revisioni nei rispettivi record di riepilogo dei blocchi perché gli hash di queste revisioni fanno parte dell'intera catena hash della rivista. La catena hash completa è necessaria per la verifica crittografica.
Solo le revisioni che dispongono di un ID documento vengono pubblicate in record di dettagli di revisione separati, come descritto nella sezione seguente.
Record dei dettagli delle revisioni
Un record dei dettagli di revisione rappresenta una revisione del documento salvata nel diario. Il payload contiene tutti gli attributi della visualizzazione salvata della revisione, insieme al nome e all'ID della tabella associati. Di seguito è riportato un esempio di record di revisione con dati di esempio.
{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"REVISION_DETAILS", payload:{ tableInfo:{ tableName:"VehicleRegistration", tableId:"Ad3A07z0ZffC7Gpso7BXyO" }, revision:{ blockAddress:{ strandId:"ElYL30RGoqrFCbbaQn3K6m", sequenceNo:60807 }, hash:{{qJID/amu0gN3dpG5Tg0FfIFTh/U5yFkfT+g/O6k5sPM=}}, data:{ VIN:"1N4AL11D75C109151", LicensePlateNumber:"LEWISR261LL", State:"WA", City:"Seattle", PendingPenaltyTicketAmount:90.25, ValidFromDate:2017-08-21, ValidToDate:2020-05-11, Owners:{ PrimaryOwner:{PersonId:"7z2OpEBgVCvCtwvx4a2JGn"}, SecondaryOwners:[] } }, metadata:{ id:"K0FpsSLpydLDr7hi6KUzqk", version:0, txTime:2019-09-18T17:00:14.602Z, txId:"9RWohCo7My4GGkxRETAJ6M" } } } }
Gestione di duplicati e record out-of-order
Gli stream QLDB possono pubblicare duplicati e record su out-of-order Kinesis Data Streams. Pertanto, un'applicazione consumer potrebbe dover implementare una propria logica per identificare e gestire tali scenari. I record di riepilogo dei blocchi e dei dettagli di revisione includono campi che è possibile utilizzare a questo scopo. In combinazione con le funzionalità dei servizi a valle, questi campi possono indicare sia un'identità univoca che un ordine rigoroso per i record.
Ad esempio, considera uno stream che integra QLDB con OpenSearch un indice per fornire funzionalità di ricerca di testo completo sui documenti. In questo caso d'uso, è necessario evitare di indicizzare le revisioni stale () out-of-order di un documento. Per applicare l'ordinamento e la deduplicazione, è possibile utilizzare i campi ID del documento e versione esterna in OpenSearch, insieme ai campi ID documento e versione in un record di dettagli di revisione.