Salida de exportación de asientos en QLDB - Amazon Quantum Ledger Database (Amazon QLDB)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Salida de exportación de asientos en QLDB

Un trabajo de exportación de asientos de Amazon QLDB escribe dos archivos de manifiesto además de los objetos de datos que contienen los bloques de diario. Todos ellos se guardan en el bucket de Amazon Simple Storage Service (Amazon S3) que proporcionó en suSolicitud de exportación. En las siguientes secciones se describe el formato y el contenido de cada objeto de salida.

nota

Si especifica JSON como formato de salida de su trabajo de exportación, QLDB convierte de forma descendente los datos del diario de Amazon Ion a JSON en sus objetos de datos exportados. Para obtener más información, vaya aConversión descendente a JSON.

Archivos de manifiesto

Amazon QLDB crea dos archivos de manifiesto en el bucket de S3 proporcionado para cada solicitud de exportación. LaManifiesto inicialse crea en cuanto envía la solicitud de exportación. Lamanifiesto finalse escribirá después de que se complete la exportación. Puede usar estos archivos para comprobar el estado de sus trabajos de exportación en Amazon S3.

El formato del contenido de los archivos de manifiesto corresponde al formato de salida solicitado para la exportación.

Manifiesto inicial

El manifiesto inicial indica que se ha iniciado el trabajo de exportación. Contiene los parámetros de entrada que pasaste a la solicitud. Además del destino de Amazon S3 y los parámetros de hora de inicio y finalización de la exportación, este archivo también contiene unexportId. LaexportIdes un identificador único que QLDB asigna a cada trabajo de exportación.

La convención de denominación de archivos es la siguiente.

s3://DOC-EXAMPLE-BUCKET/prefix/exportId.started.manifest

A continuación se incluye un ejemplo de un archivo de manifiesto inicial y su contenido en formato de texto Ion.

s3://DOC-EXAMPLE-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:"DOC-EXAMPLE-BUCKET", prefix:"journalExport", objectEncryptionType:"NO_ENCRYPTION", outputFormat:"ION_TEXT" }

El manifiesto inicial incluye eloutputFormatsolo si se especificó en la solicitud de exportación. Si no especifica el formato de salida, los datos exportados se muestran de forma predeterminada enION_TEXTformato.

LaDescribeJournalExportación S3El funcionamiento de la API y el tipo de contenido de los objetos de Amazon S3 exportados también indican el formato de salida.

Manifiesto final

El manifiesto final indica que su trabajo de exportación para una revista en particularStrandse ha terminado. El trabajo de exportación escribe un archivo de manifiesto final independiente para cada capítulo.

nota

En Amazon QLDB, un capítulo es una partición del diario del libro mayor. Actualmente, QLDB admite revistas con un solo capítulo.

El manifiesto final incluye una lista ordenada de claves de objetos de datos que se escribieron durante la exportación. La convención de nomenclatura de archivos es la siguiente.

s3://DOC-EXAMPLE-BUCKET/prefix/exportId.strandId.completed.manifest

LastrandIdes un identificador único que QLDB asigna a la hebra. A continuación se incluye un ejemplo de un archivo de manifiesto final y su contenido en formato de texto Ion.

s3://DOC-EXAMPLE-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" ] }

Objetos de datos

Amazon QLDB escribe objetos de datos de diario en el depósito de Amazon S3 proporcionado en la representación de texto o binaria del formato de Amazon Ion, o enLíneas de JSONformato de texto.

En formato de líneas JSON, cada bloque del objeto de datos exportado es un objeto JSON válido que está delimitado por una nueva línea. Puede utilizar este formato para integrar fácilmente las exportaciones de JSON con herramientas de análisis comoAWS Gluey Amazon Athena porque estos servicios pueden analizar JSON delimitado por saltos de línea automáticamente. Para obtener más información sobre el formato, consulteLíneas de JSON.

Nombres de objetos de datos

Un trabajo de exportación de diario escribe estos objetos de datos con la siguiente convención de nomenclatura.

s3://DOC-EXAMPLE-BUCKET/prefix/yyyy/mm/dd/hh/strandId.startSn-endSn.ion|.json
  • Los datos de salida de cada trabajo de exportación se dividen en bloques.

  • yyyy/mm/dd/hh: fecha y hora en las que presentó la solicitud de exportación. Los objetos que se exportan en la misma hora se agrupan bajo el mismo prefijo de Amazon S3.

  • strandId: el identificador único de la cadena en particular que contiene el bloque de diario que se va a exportar.

  • startSn-endSn: el intervalo de números de secuencia que se incluye en el objeto. Un número de secuencia especifica la ubicación de un bloque dentro de una cadena.

Por ejemplo, suponga que especifica la siguiente ruta.

s3://DOC-EXAMPLE-BUCKET/journalExport/

El trabajo de exportación crea un objeto de datos de Amazon S3 que tiene un aspecto similar al siguiente. En este ejemplo se muestra un nombre de objeto en formato Ion.

s3://DOC-EXAMPLE-BUCKET/journalExport/2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-5.ion

Contenido de objetos de datos

Cada objeto de datos contiene objetos de bloque de diario con el siguiente 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 } ] }

UNAbloquees un objeto que se confirma en el diario durante una transacción. Un bloque contiene metadatos de transacción junto con entradas que representan las revisiones de documentos que se confirmaron en la transacción y elPartiQLdeclaraciones que los comprometieron.

A continuación, se muestra un ejemplo de un bloque con datos de ejemplo en formato de texto Ion. Para obtener información sobre los campos de un objeto de bloque, consulteContenidos de revistas en Amazon QLDB.

nota

Este ejemplo de bloque se ofrece solo con fines informativos. Los valores hash que se muestran no son valores de hash calculados reales.

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

En el navegadorrevisions, es posible que algunos objetos de revisión solo contengan unhashvalor y ningún otro atributo. Se trata de revisiones del sistema solo internas que no contienen datos de usuario. Un trabajo de exportación incluye estas revisiones en sus bloques respectivos porque los hash de estas revisiones forman parte de la cadena de hash completa de la revista. Se requiere la cadena de hash completa para la verificación criptográfica.

Conversión descendente a JSON

Si especifica JSON como formato de salida de su trabajo de exportación, QLDB convierte de forma descendente los datos del diario de Amazon Ion a JSON en sus objetos de datos exportados. Sin embargo, la conversión de Ion a JSON tiene pérdidas en ciertos casos en los que sus datos aprovechan los tipos de Ion enriquecidos que no existen en JSON.

Para obtener información sobre las reglas de conversión de Ion a JSON,Conversión descendente a JSONen laLibro de Amazon Ion.

Biblioteca de procesadores de exportación (Java)

QLDB proporciona un marco extensible para Java que agiliza el procesamiento de las exportaciones en Amazon S3. Esta biblioteca marco maneja el trabajo de leer la salida de una exportación e iterar los bloques exportados en orden secuencial. Para usar este procesador de exportación, consulte la GitHub repositoryjava, lamas/amazon-qldb-export-processorjava: Jjava.