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.jsonexport-prefix
/AWSDynamoDB/ExportId
/manifest-summary.checksumexport-prefix
/AWSDynamoDB/ExportId
/manifest-files.jsonexport-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
{ "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
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
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
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.jsonexport-prefix
/AWSDynamoDB/ExportId
/manifest-summary.checksumexport-prefix
/AWSDynamoDB/ExportId
/manifest-files.jsonexport-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
{ "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
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
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" } } }