Formato de salida de exportación de tabla de DynamoDB - Amazon DynamoDB

Formato de salida de exportación de tabla de DynamoDB

Una exportación de tabla de DynamoDB incluye archivos de manifiesto además de los archivos que contienen los datos de su tabla. Todos estos archivos se guardan en el bucket de Amazon S3 que especifique en su solicitud de exportación. En las siguientes secciones se describe el formato y el contenido de cada objeto de salida.

Temas

    Archivos de manifiesto

    DynamoDB crea archivos de manifiesto, junto con sus archivos de suma de comprobación, en el bucket de S3 especificado para cada solicitud de exportación.

    export-prefix/AWSDynamoDB/ExportId/manifest-summary.json export-prefix/AWSDynamoDB/ExportId/manifest-summary.checksum export-prefix/AWSDynamoDB/ExportId/manifest-files.json export-prefix/AWSDynamoDB/ExportId/manifest-files.checksum

    Usted elige un export-prefix cuando solicita una exportación de tabla. Esto le ayuda a mantener organizados los archivos del bucket de S3 de destino. ExportId es un token único generado por el servicio para garantizar que varias exportaciones al mismo bucket de S3 y export-prefix no se sobrescriban entre sí.

    La exportación crea al menos un archivo por partición. En el caso de las particiones que estén vacías, su solicitud de exportación creará un archivo vacío. Todos los elementos de cada archivo provienen del espacio de claves hash de esa partición en particular.

    nota

    DynamoDB también crea un archivo vacío denominado _started en el mismo directorio que los archivos de manifiesto. Este archivo comprueba que en el bucket de destino se puede escribir y que la exportación ha comenzado. Se puede eliminar de forma segura.

    El manifiesto resumido

    El archivo manifest-summary.json contiene información de resumen sobre el trabajo de exportación. Esto le permite saber qué archivos de datos de la carpeta de datos compartidos están asociados a esta exportación. Su formato es el siguiente:

    { "version": "2020-06-30", "exportArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4", "startTime": "2020-11-04T07:28:34.028Z", "endTime": "2020-11-04T07:33:43.897Z", "tableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog", "tableId": "12345a12-abcd-123a-ab12-1234abc12345", "exportTime": "2020-11-04T07:28:34.028Z", "s3Bucket": "ddb-productcatalog-export", "s3Prefix": "2020-Nov", "s3SseAlgorithm": "AES256", "s3SseKmsKeyId": null, "manifestFilesS3Key": "AWSDynamoDB/01693685827463-2d8752fd/manifest-files.json", "billedSizeBytes": 0, "itemCount": 8, "outputFormat": "DYNAMODB_JSON", "exportType": "FULL_EXPORT" }

    El manifiesto de archivos

    El archivo manifest-files.json contiene información sobre los archivos que contienen los datos de la tabla exportados. El archivo está en formato Líneas JSON, por lo que las líneas nuevas se utilizan como delimitadores de elementos. En el siguiente ejemplo, los detalles de un archivo de datos de un manifiesto de archivos tienen formato en varias líneas para facilitar la legibilidad.

    { "itemCount": 8, "md5Checksum": "sQMSpEILNgoQmarvDFonGQ==", "etag": "af83d6f217c19b8b0fff8023d8ca4716-1", "dataFileS3Key": "AWSDynamoDB/01693685827463-2d8752fd/data/asdl123dasas.json.gz" }

    Archivos de datos

    DynamoDB puede exportar los datos de la tabla en dos formatos: DynamoDB JSON y Amazon Ion. Independientemente del formato que elija, sus datos se escribirán en varios archivos comprimidos con los nombres de las claves. Estos archivos también aparecen en el archivo manifest-files.json.

    La estructura de directorios de su bucket de S3 después de una exportación completa contendrá todos sus archivos de manifiesto y archivos de datos bajo la carpeta Id de exportación.

    DestinationBucket/DestinationPrefix . └── AWSDynamoDB ├── 01693685827463-2d8752fd // the single full export │ ├── manifest-files.json // manifest points to files under 'data' subfolder │ ├── manifest-files.checksum │ ├── manifest-summary.json // stores metadata about request │ ├── manifest-summary.md5 │ ├── data // The data exported by full export │ │ ├── asdl123dasas.json.gz │ │ ... │ └── _started // empty file for permission check

    DynamoDB JSON

    Una exportación de tabla en formato DynamoDB JSON consta de varios objetos Item. Cada objeto individual está en el formato JSON dirigido estándar de DynamoDB.

    Al crear analizadores personalizados para los datos de exportación de DynamoDB JSON, el formato es Líneas JSON. Esto significa que las líneas nuevas se utilizan como delimitadores de elementos. Muchos servicios de AWS, como Athena y AWS Glue, analizarán este formato automáticamente.

    En el siguiente ejemplo, se ha dado formato a un único elemento de una exportación de DynamoDB JSON en varias líneas para facilitar la legibilidad.

    { "Item":{ "Authors":{ "SS":[ "Author1", "Author2" ] }, "Dimensions":{ "S":"8.5 x 11.0 x 1.5" }, "ISBN":{ "S":"333-3333333333" }, "Id":{ "N":"103" }, "InPublication":{ "BOOL":false }, "PageCount":{ "N":"600" }, "Price":{ "N":"2000" }, "ProductCategory":{ "S":"Book" }, "Title":{ "S":"Book 103 Title" } } }

    Amazon Ion

    Amazon Ion es un formato de serialización de datos jerárquico, autodescriptivo y altamente digitado, creado para abordar los desafíos rápidos de desarrollo, desacoplamiento y eficiencia que surgen todos los días mientras se diseñan arquitecturas a gran escala orientadas a servicios. DynamoDB admite la exportación de datos de tabla en formato de texto de Ion, que es un superconjunto de JSON.

    Al exportar una tabla al formato Ion, los tipos de datos de DynamoDB utilizados en la tabla se asignan a los tipos de datos Ion. Los conjuntos de DynamoDB utilizan anotaciones de tipo Ion para desambiguar el tipo de datos utilizado en la tabla de origen.

    En la siguiente tabla se muestra la asignación de los tipos de datos de DynamoDB a los tipos de datos de iones:

    Tipo de dato de DynamoDB Representación Ion
    Cadena (S) cadena
    Booleano (BOOL) bool
    Número (N) decimal
    Binario (B) blob
    Conjunto (SS, NS, BS) lista (con anotación de tipo $dynamodb_SS, $dynamodb_NS o $dynamodb_BS)
    Enumeración list
    Asignación struct

    Los elementos de una exportación de Ion están delimitados por nuevas líneas. Cada línea comienza con un marcador de versión Ion, seguido de un elemento en formato Ion. En el siguiente ejemplo, se ha dado formato a un elemento de una exportación de Ion en varias líneas para facilitar la legibilidad.

    $ion_1_0 { Item:{ Authors:$dynamodb_SS::["Author1","Author2"], Dimensions:"8.5 x 11.0 x 1.5", ISBN:"333-3333333333", Id:103., InPublication:false, PageCount:6d2, Price:2d3, ProductCategory:"Book", Title:"Book 103 Title" } }

    Archivos de manifiesto

    DynamoDB crea archivos de manifiesto, junto con sus archivos de suma de comprobación, en el bucket de S3 especificado para cada solicitud de exportación.

    export-prefix/AWSDynamoDB/ExportId/manifest-summary.json export-prefix/AWSDynamoDB/ExportId/manifest-summary.checksum export-prefix/AWSDynamoDB/ExportId/manifest-files.json export-prefix/AWSDynamoDB/ExportId/manifest-files.checksum

    Usted elige un export-prefix cuando solicita una exportación de tabla. Esto le ayuda a mantener organizados los archivos del bucket de S3 de destino. ExportId es un token único generado por el servicio para garantizar que varias exportaciones al mismo bucket de S3 y export-prefix no se sobrescriban entre sí.

    La exportación crea al menos un archivo por partición. En el caso de las particiones que estén vacías, su solicitud de exportación creará un archivo vacío. Todos los elementos de cada archivo provienen del espacio de claves hash de esa partición en particular.

    nota

    DynamoDB también crea un archivo vacío denominado _started en el mismo directorio que los archivos de manifiesto. Este archivo comprueba que en el bucket de destino se puede escribir y que la exportación ha comenzado. Se puede eliminar de forma segura.

    El manifiesto resumido

    El archivo manifest-summary.json contiene información de resumen sobre el trabajo de exportación. Esto le permite saber qué archivos de datos de la carpeta de datos compartidos están asociados a esta exportación. Su formato es el siguiente:

    { "version": "2023-08-01", "exportArn": "arn:aws:dynamodb:us-east-1:599882009758:table/export-test/export/01695097218000-d6299cbd", "startTime": "2023-09-19T04:20:18.000Z", "endTime": "2023-09-19T04:40:24.780Z", "tableArn": "arn:aws:dynamodb:us-east-1:599882009758:table/export-test", "tableId": "b116b490-6460-4d4a-9a6b-5d360abf4fb3", "exportFromTime": "2023-09-18T17:00:00.000Z", "exportToTime": "2023-09-19T04:00:00.000Z", "s3Bucket": "jason-exports", "s3Prefix": "20230919-prefix", "s3SseAlgorithm": "AES256", "s3SseKmsKeyId": null, "manifestFilesS3Key": "20230919-prefix/AWSDynamoDB/01693685934212-ac809da5/manifest-files.json", "billedSizeBytes": 20901239349, "itemCount": 169928274, "outputFormat": "DYNAMODB_JSON", "outputView": "NEW_AND_OLD_IMAGES", "exportType": "INCREMENTAL_EXPORT" }

    El manifiesto de archivos

    El archivo manifest-files.json contiene información sobre los archivos que contienen los datos de la tabla exportados. El archivo está en formato Líneas JSON, por lo que las líneas nuevas se utilizan como delimitadores de elementos. En el siguiente ejemplo, los detalles de un archivo de datos de un manifiesto de archivos tienen formato en varias líneas para facilitar la legibilidad.

    { "itemCount": 8, "md5Checksum": "sQMSpEILNgoQmarvDFonGQ==", "etag": "af83d6f217c19b8b0fff8023d8ca4716-1", "dataFileS3Key": "AWSDynamoDB/data/sgad6417s6vss4p7owp0471bcq.json.gz" }

    Archivos de datos

    DynamoDB puede exportar los datos de la tabla en dos formatos: DynamoDB JSON y Amazon Ion. Independientemente del formato que elija, sus datos se escribirán en varios archivos comprimidos con los nombres de las claves. Estos archivos también aparecen en el archivo manifest-files.json.

    Los archivos de datos para las exportaciones incrementales están todos en una carpeta de datos común en su bucket de S3. Sus archivos de manifiesto se encuentran en su carpeta de ID de exportación.

    DestinationBucket/DestinationPrefix . └── AWSDynamoDB ├── 01693685934212-ac809da5 // an incremental export ID │ ├── manifest-files.json // manifest points to files under 'data' folder │ ├── manifest-files.checksum │ ├── manifest-summary.json // stores metadata about request │ ├── manifest-summary.md5 │ └── _started // empty file for permission check ├── 01693686034521-ac809da5 │ ├── manifest-files.json │ ├── manifest-files.checksum │ ├── manifest-summary.json │ ├── manifest-summary.md5 │ └── _started ├── data // stores all the data files for incremental exports │ ├── sgad6417s6vss4p7owp0471bcq.json.gz │ ...

    En sus archivos de exportación, la salida de cada elemento incluye una marca temporal que representa cuándo se actualizó ese elemento en su tabla y una estructura de datos que indica si fue una operación insert, update o delete. La marca temporal se basa en un reloj interno del sistema y puede variar con respecto al reloj de su aplicación. En el caso de las exportaciones incrementales, puede elegir entre dos tipos de vistas de exportación para su estructura de salida: imágenes nuevas y antiguas o solo imágenes nuevas.

    • La nueva imagen proporciona el último estado del elemento

    • La imagen antigua proporciona el estado del elemento justo antes de la fecha y hora de inicio especificadas

    Los tipos de vista pueden ser útiles si desea ver cómo se modificó el elemento en el periodo de exportación. También puede ser útil para actualizar eficazmente sus sistemas descendentes, especialmente si dichos sistemas tienen una clave de partición que no es la misma que su clave de partición de DynamoDB.

    Puede deducir si un elemento de su salida de exportación incremental era una operación insert, update o delete examinando la estructura de la salida. La estructura de la exportación incremental y sus operaciones correspondientes se resumen en la tabla siguiente para ambos tipos de vistas de exportación.

    Operación Solo imágenes nuevas Imágenes nuevas y antiguas

    Inserte

    Claves + nueva imagen

    Claves + nueva imagen

    Actualización

    Claves + nueva imagen Claves + imagen nueva + imagen antigua
    Delete Claves Claves + imagen antigua
    Insertar + eliminar Sin salida Sin salida

    DynamoDB JSON

    Una exportación de tabla en formato JSON de DynamoDB consta de una marca temporal de metadatos que indica la hora de escritura del elemento, seguida de las claves del elemento y los valores. En el siguiente ejemplo se muestra una salida JSON de DynamoDB mediante la exportación del tipo de vista como imágenes nuevas y antiguas.

    // Ex 1: Insert // An insert means the item did not exist before the incremental export window // and was added during the incremental export window { "Metadata": { "WriteTimestampMicros": "1680109764000000" }, "Keys": { "PK": { "S": "CUST#100" } }, "NewImage": { "PK": { "S": "CUST#100" }, "FirstName": { "S": "John" }, "LastName": { "S": "Don" } } } // Ex 2: Update // An update means the item existed before the incremental export window // and was updated during the incremental export window. // The OldImage would not be present if choosing "New images only". { "Metadata": { "WriteTimestampMicros": "1680109764000000" }, "Keys": { "PK": { "S": "CUST#200" } }, "OldImage": { "PK": { "S": "CUST#200" }, "FirstName": { "S": "Mary" }, "LastName": { "S": "Grace" } }, "NewImage": { "PK": { "S": "CUST#200" }, "FirstName": { "S": "Mary" }, "LastName": { "S": "Smith" } } } // Ex 3: Delete // A delete means the item existed before the incremental export window // and was deleted during the incremental export window // The OldImage would not be present if choosing "New images only". { "Metadata": { "WriteTimestampMicros": "1680109764000000" }, "Keys": { "PK": { "S": "CUST#300" } }, "OldImage": { "PK": { "S": "CUST#300" }, "FirstName": { "S": "Jose" }, "LastName": { "S": "Hernandez" } } } // Ex 4: Insert + Delete // Nothing is exported if an item is inserted and deleted within the // incremental export window.

    Amazon Ion

    Amazon Ion es un formato de serialización de datos jerárquico, autodescriptivo y altamente digitado, creado para abordar los desafíos rápidos de desarrollo, desacoplamiento y eficiencia que surgen todos los días mientras se diseñan arquitecturas a gran escala orientadas a servicios. DynamoDB admite la exportación de datos de tabla en formato de texto de Ion, que es un superconjunto de JSON.

    Al exportar una tabla al formato Ion, los tipos de datos de DynamoDB utilizados en la tabla se asignan a los tipos de datos Ion. Los conjuntos de DynamoDB utilizan anotaciones de tipo Ion para desambiguar el tipo de datos utilizado en la tabla de origen.

    En la siguiente tabla se muestra la asignación de los tipos de datos de DynamoDB a los tipos de datos de iones:

    Tipo de dato de DynamoDB Representación Ion
    Cadena (S) cadena
    Booleano (BOOL) bool
    Número (N) decimal
    Binario (B) blob
    Conjunto (SS, NS, BS) lista (con anotación de tipo $dynamodb_SS, $dynamodb_NS o $dynamodb_BS)
    Enumeración list
    Asignación struct

    Los elementos de una exportación de Ion están delimitados por nuevas líneas. Cada línea comienza con un marcador de versión Ion, seguido de un elemento en formato Ion. En el siguiente ejemplo, se ha dado formato a un elemento de una exportación de Ion en varias líneas para facilitar la legibilidad.

    $ion_1_0 { Record:{ Keys:{ ISBN:"333-3333333333" }, Metadata:{ WriteTimestampMicros:1684374845117899. }, OldImage:{ Authors:$dynamodb_SS::["Author1","Author2"], ISBN:"333-3333333333", Id:103., InPublication:false, ProductCategory:"Book", Title:"Book 103 Title" }, NewImage:{ Authors:$dynamodb_SS::["Author1","Author2"], Dimensions:"8.5 x 11.0 x 1.5", ISBN:"333-3333333333", Id:103., InPublication:true, PageCount:6d2, Price:2d3, ProductCategory:"Book", Title:"Book 103 Title" } } }