Uscita di esportazione del diario in QLDB - 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à.

Uscita di esportazione del diario in QLDB

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

Un processo di esportazione di Amazon QLDB Journal scrive due file manifest oltre agli oggetti dati che contengono i blocchi del journal. Questi vengono tutti salvati nel bucket Amazon S3 che hai fornito nella richiesta di esportazione. Nelle sezioni seguenti sono descritti il formato e il contenuto di ciascun oggetto di output.

Nota

Se lo specifichi JSON come formato di output per il processo di esportazione, QLDB converte i dati del journal Amazon Ion JSON in oggetti dati esportati. Per ulteriori informazioni, procedi a. Conversione verso il basso in JSON

File manifesto

Amazon QLDB crea due file manifest nel bucket S3 fornito per ogni richiesta di esportazione. Il file manifesto iniziale viene creato non appena invii la richiesta di esportazione. Il file manifesto finale viene scritto dopo il completamento dell'esportazione. Puoi utilizzare questi file per verificare lo stato dei tuoi lavori di esportazione in Amazon S3.

Il formato per il contenuto dei file manifest corrisponde al formato di output richiesto per l'esportazione.

Manifesto iniziale

Il manifesto iniziale indica che il processo di esportazione è iniziato. Contiene i parametri di input che hai passato alla richiesta. Oltre alla destinazione di Amazon S3 e ai parametri dell'ora di inizio e fine per l'esportazione, questo file contiene anche un. exportId exportIdÈ un ID univoco che viene QLDB assegnato a ciascun processo di esportazione.

La convenzione di denominazione dei file è la seguente.

s3://amzn-s3-demo-bucket/prefix/exportId.started.manifest

Di seguito è riportato un esempio di file manifest iniziale e del relativo contenuto in formato di testo Ion.

s3://amzn-s3-demo-bucket/journalExport/8UyXulxccYLAsbN1aon7e4.started.manifest
{ ledgerName:"my-example-ledger", exportId:"8UyXulxccYLAsbN1aon7e4", inclusiveStartTime:2019-04-15T00:00:00.000Z, exclusiveEndTime:2019-04-15T22:00:00.000Z, bucket:"amzn-s3-demo-bucket", prefix:"journalExport", objectEncryptionType:"NO_ENCRYPTION", outputFormat:"ION_TEXT" }

Il manifesto iniziale include outputFormat solo se è stato specificato nella richiesta di esportazione. Se non si specifica il formato di output, per impostazione predefinita viene utilizzato il formato dei dati esportati. ION_TEXT

L'APIoperazione DescribeJournalS3Export e il tipo di contenuto degli oggetti Amazon S3 esportati indicano anche il formato di output.

Manifesto finale

Il manifesto finale indica che il processo di esportazione per una particolare sezione del diario è stato completato. Il processo di esportazione scrive un file manifesto finale separato per ogni filone.

Nota

In AmazonQLDB, un filone è una partizione del diario del tuo libro mastro. QLDBattualmente supporta solo riviste con un solo filone.

Il manifesto finale include un elenco ordinato di chiavi degli oggetti dati che sono state scritte durante l'esportazione. La convenzione di denominazione dei file è la seguente.

s3://amzn-s3-demo-bucket/prefix/exportId.strandId.completed.manifest

strandIdÈ un ID univoco che viene QLDB assegnato al filamento. Di seguito è riportato un esempio di file manifest finale e del relativo contenuto in formato di testo Ion.

s3://amzn-s3-demo-bucket/journalExport/8UyXulxccYLAsbN1aon7e4.JdxjkR9bSYB5jMHWcI464T.completed.manifest
{ keys:[ "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-4.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.5-10.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.11-12.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.13-20.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.21-21.ion" ] }

Oggetti dati

Amazon QLDB scrive oggetti di dati del journal nel bucket Amazon S3 fornito nella rappresentazione testuale o binaria del formato Amazon Ion o nel formato di testo JSONLines.

Nel formato JSON Lines, ogni blocco in un oggetto di dati esportato è un JSON oggetto valido delimitato da una nuova riga. Puoi utilizzare questo formato per integrare direttamente JSON le esportazioni con strumenti di analisi come Amazon Athena e AWS Glue perché questi servizi possono analizzare automaticamente le nuove JSON righe delimitate. Per ulteriori informazioni sul formato, consulta Lines. JSON

Nomi degli oggetti dati

Un processo di esportazione di un diario scrive questi oggetti dati con la seguente convenzione di denominazione.

s3://amzn-s3-demo-bucket/prefix/yyyy/mm/dd/hh/strandId.startSn-endSn.ion|.json
  • I dati di output di ogni processo di esportazione sono suddivisi in blocchi.

  • yyyy/mm/dd/hh— La data e l'ora in cui hai inviato la richiesta di esportazione. Gli oggetti che vengono esportati entro la stessa ora vengono raggruppati con lo stesso prefisso Amazon S3.

  • strandId— L'ID univoco del particolare filamento che contiene il blocco journal che viene esportato.

  • startSn-endSn— L'intervallo di numeri di sequenza incluso nell'oggetto. Un numero di sequenza specifica la posizione di un blocco all'interno di un filamento.

Ad esempio, supponete di specificare il percorso seguente.

s3://amzn-s3-demo-bucket/journalExport/

Il processo di esportazione crea un oggetto dati Amazon S3 simile al seguente. Questo esempio mostra il nome di un oggetto in formato Ion.

s3://amzn-s3-demo-bucket/journalExport/2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-5.ion

Contenuto dell'oggetto dati

Ogni oggetto dati contiene oggetti Journal Block con il seguente formato.

{ blockAddress: { strandId: String, sequenceNo: Int }, transactionId: String, blockTimestamp: Datetime, blockHash: SHA256, entriesHash: SHA256, previousBlockHash: SHA256, entriesHashList: [ SHA256 ], transactionInfo: { statements: [ { //PartiQL statement object } ], documents: { //document-table-statement mapping object } }, revisions: [ { //document revision object } ] }

Un blocco è un oggetto che viene salvato nel journal durante una transazione. Un blocco contiene i metadati delle transazioni insieme alle voci che rappresentano le revisioni dei documenti che sono state eseguite nella transazione e le istruzioni PartiQL che le hanno salvate.

Di seguito è riportato un esempio di blocco con dati di esempio in formato testo Ion. Per informazioni sui campi in un oggetto blocco, vedereContenuti del diario in Amazon QLDB.

Nota

Questo esempio di blocco viene fornito solo a scopo informativo. Gli hash mostrati non sono valori hash calcolati reali.

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:1234 }, transactionId:"D35qctdJRU1L1N2VhxbwSn", blockTimestamp:2019-10-25T17:20:21.009Z, blockHash:{{WYLOfZClk0lYWT3lUsSr0ONXh+Pw8MxxB+9zvTgSvlQ=}}, entriesHash:{{xN9X96atkMvhvF3nEy6jMSVQzKjHJfz1H3bsNeg8GMA=}}, previousBlockHash:{{IAfZ0h22ZjvcuHPSBCDy/6XNQTsqEmeY3GW0gBae8mg=}}, entriesHashList:[ {{F7rQIKCNn0vXVWPexilGfJn5+MCrtsSQqqVdlQxXpS4=}}, {{C+L8gRhkzVcxt3qRJpw8w6hVEqA5A6ImGne+E7iHizo=}} ], transactionInfo:{ statements:[ { statement:"CREATE TABLE VehicleRegistration", startTime:2019-10-25T17:20:20.496Z, statementDigest:{{3jeSdejOgp6spJ8huZxDRUtp2fRXRqpOMtG43V0nXg8=}} }, { statement:"CREATE INDEX ON VehicleRegistration (VIN)", startTime:2019-10-25T17:20:20.549Z, statementDigest:{{099D+5ZWDgA7r+aWeNUrWhc8ebBTXjgscq+mZ2dVibI=}} }, { statement:"CREATE INDEX ON VehicleRegistration (LicensePlateNumber)", startTime:2019-10-25T17:20:20.560Z, statementDigest:{{B73tVJzVyVXicnH4n96NzU2L2JFY8e9Tjg895suWMew=}} }, { statement:"INSERT INTO VehicleRegistration ?", startTime:2019-10-25T17:20:20.595Z, statementDigest:{{ggpon5qCXLo95K578YVhAD8ix0A0M5CcBx/W40Ey/Tk=}} } ], documents:{ '8F0TPCmdNQ6JTRpiLj2TmW':{ tableName:"VehicleRegistration", tableId:"BPxNiDQXCIB5l5F68KZoOz", statements:[3] } } }, revisions:[ { hash:{{FR1IWcWew0yw1TnRklo2YMF/qtwb7ohsu5FD8A4DSVg=}} }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:1234 }, hash:{{t8Hj6/VC4SBitxnvBqJbOmrGytF2XAA/1c0AoSq2NQY=}}, data:{ VIN:"1N4AL11D75C109151", LicensePlateNumber:"LEWISR261LL", State:"WA", City:"Seattle", PendingPenaltyTicketAmount:90.25, ValidFromDate:2017-08-21, ValidToDate:2020-05-11, Owners:{ PrimaryOwner:{ PersonId:"GddsXfIYfDlKCEprOLOwYt" }, SecondaryOwners:[] } }, metadata:{ id:"8F0TPCmdNQ6JTRpiLj2TmW", version:0, txTime:2019-10-25T17:20:20.618Z, txId:"D35qctdJRU1L1N2VhxbwSn" } } ] }

Nel revisions campo, alcuni oggetti di revisione potrebbero contenere solo un hash valore e nessun altro attributo. Si tratta di revisioni di sistema solo interne che non contengono dati utente. Un processo di esportazione include queste revisioni nei rispettivi blocchi perché gli hash di queste revisioni fanno parte dell'intera catena hash della rivista. La catena hash completa è necessaria per la verifica crittografica.

Conversione verso il basso in JSON

Se lo specifichi JSON come formato di output per il processo di esportazione, QLDB converte i dati del journal Amazon Ion JSON in oggetti dati esportati. Tuttavia, la conversione di Ion in JSON presenta perdite in alcuni casi in cui i dati utilizzano tipi di ioni ricchi che non esistono in. JSON

Per informazioni dettagliate sulle regole di JSON conversione da Ion a, consulta Down-converting to in JSON the Amazon Ion Cookbook.

Libreria di processori di esportazione (Java)

QLDBfornisce un framework estensibile per Java che semplifica l'elaborazione delle esportazioni in Amazon S3. Questa libreria di framework gestisce il lavoro di lettura dell'output di un'esportazione e l'iterazione tra i blocchi esportati in ordine sequenziale. Per utilizzare questo processore di esportazione, consulta il GitHub repository awslabs/ -java. amazon-qldb-export-processor