Formato de saída de exportação da tabela do DynamoDB - Amazon DynamoDB

Formato de saída de exportação da tabela do DynamoDB

Uma exportação de tabela do DynamoDB inclui arquivos de manifesto, além dos arquivos que contêm os dados da tabela. Esses arquivos são salvos no bucket do Amazon S3 especificado por você na solicitação de exportação. As seções a seguir descrevem o formato e o conteúdo de cada objeto de saída.

Tópicos

    Arquivos de manifesto

    O DynamoDB cria arquivos de manifesto, bem como os respectivos arquivos de soma de verificação, no bucket do S3 especificado para cada solicitação de exportação.

    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

    Você escolhe um export-prefix ao solicitar uma exportação de tabela. Isso ajuda a manter os arquivos no bucket do S3 de destino organizados. O ExportId é um token exclusivo gerado pelo serviço para garantir que várias exportações para o mesmo bucket do S3 e export-prefix não se sobreponham.

    Essa exportação cria pelo menos um arquivo por partição. Para partições vazias, a solicitação de exportação criará um arquivo vazio. Todos os itens em cada arquivo são do espaço de chave com hash dessa partição específica.

    nota

    O DynamoDB também cria um arquivo vazio chamado _started no mesmo diretório dos arquivos de manifesto.’ Esse arquivo verifica se o bucket de destino pode ser gravado e se a exportação foi iniciada. Ele pode ser excluído com segurança.

    O manifesto resumido

    O arquivo manifest-summary.json contém informações resumidas sobre o trabalho de exportação. Isso permite que você saiba quais arquivos de dados na pasta de dados compartilhada estão associados a essa exportação. Seu formato é o seguinte:

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

    O manifesto de arquivos

    O arquivo manifest-files.json contém informações sobre os arquivos que contêm os dados da tabela exportada. Como o arquivo está no formato linhas JSON, novas linhas são usadas como delimitadores de itens. No exemplo a seguir, os detalhes de um arquivo de dados de um manifesto de arquivos são formatados em várias linhas por razões de legibilidade.

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

    Arquivos de dados

    O DynamoDB pode exportar os dados da tabela em dois formatos: DynamoDB JSON e Amazon Ion. Independentemente do formato escolhido, os dados serão gravados em vários arquivos compactados nomeados pelas chaves. Esses arquivos também estão listados no arquivo manifest-files.json.

    A estrutura de diretórios do bucket do S3 após uma exportação completa conterá todos os arquivos de manifesto e arquivos de dados na pasta de ID de exportação.

    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

    Uma exportação de tabela no formato JSON do DynamoDB consiste em vários objetos Item. Cada objeto individual está no formato JSON organizado padrão do DynamoDB.

    Ao criar analisadores personalizados para dados de exportação JSON do DynamoDB, o formato é linhas JSON. Isso significa que as novas linhas são usadas como delimitadores de item. Muitos serviços da AWS, como Athena e AWS Glue, analisarão esse formato automaticamente.

    No exemplo a seguir, um único item de uma exportação DynamoDB JSON foi formatado em várias linhas para fins de legibilidade.

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

    O Amazon Ion é um formato de serialização de dados hierárquico, autodescritivo e altamente compatível com vários tipos de declaração e criado para lidar com os desafios de desacoplamento, desenvolvimento rápido e eficiência enfrentados todos os dias na criação de arquiteturas orientadas a serviços em grande escala. O DynamoDB oferece suporte à exportação de dados de tabelas no formato de texto do Ion, o qual é um superconjunto do JSON.

    Quando você exporta uma tabela para o formato Ion, os tipos de dados do DynamoDB usados na tabela são mapeados em tipos de dados Ion. O DynamoDB define o uso de anotações do tipo Ion para eliminar ambiguidades do tipo de dados usado na tabela de origem.

    A tabela a seguir lista o mapeamento entre os tipos de dados do DynamoDB e os tipos de dados do Ion:

    Tipo de dados do DynamoDB Representação no Ion
    string (S) string
    Boolean (BOOL) bool
    número (N) decimal
    binário (B) blob
    Conjunto (SS, NS, BS) list (com anotação de tipo $dynamodb_SS, $dynamodb_NS ou $dynamodb_BS)
    Lista list
    Mapa struct

    Os itens em uma exportação do Ion são delimitados por novas linhas. Cada linha começa com um marcador de versão do Ion, seguido por um item no formato Ion. No exemplo a seguir, um item de uma exportação ION foi formatado em várias linhas para fins de legibilidade.

    $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" } }

    Arquivos de manifesto

    O DynamoDB cria arquivos de manifesto, bem como os respectivos arquivos de soma de verificação, no bucket do S3 especificado para cada solicitação de exportação.

    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

    Você escolhe um export-prefix ao solicitar uma exportação de tabela. Isso ajuda a manter os arquivos no bucket do S3 de destino organizados. O ExportId é um token exclusivo gerado pelo serviço para garantir que várias exportações para o mesmo bucket do S3 e export-prefix não se sobreponham.

    Essa exportação cria pelo menos um arquivo por partição. Para partições vazias, a solicitação de exportação criará um arquivo vazio. Todos os itens em cada arquivo são do espaço de chave com hash dessa partição específica.

    nota

    O DynamoDB também cria um arquivo vazio chamado _started no mesmo diretório dos arquivos de manifesto.’ Esse arquivo verifica se o bucket de destino pode ser gravado e se a exportação foi iniciada. Ele pode ser excluído com segurança.

    O manifesto resumido

    O arquivo manifest-summary.json contém informações resumidas sobre o trabalho de exportação. Isso permite que você saiba quais arquivos de dados na pasta de dados compartilhada estão associados a essa exportação. Seu formato é o seguinte:

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

    O manifesto de arquivos

    O arquivo manifest-files.json contém informações sobre os arquivos que contêm os dados da tabela exportada. Como o arquivo está no formato linhas JSON, novas linhas são usadas como delimitadores de itens. No exemplo a seguir, os detalhes de um arquivo de dados de um manifesto de arquivos são formatados em várias linhas por razões de legibilidade.

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

    Arquivos de dados

    O DynamoDB pode exportar os dados da tabela em dois formatos: DynamoDB JSON e Amazon Ion. Independentemente do formato escolhido, os dados serão gravados em vários arquivos compactados nomeados pelas chaves. Esses arquivos também estão listados no arquivo manifest-files.json.

    Os arquivos de dados para exportações incrementais estão todos contidos em uma pasta de dados comum no bucket do S3. Os arquivos de manifesto estão na pasta de ID de exportação.

    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 │ ...

    Nos arquivos de exportação, a saída de cada item inclui um carimbo de data/hora que representa quando o item foi atualizado na tabela e uma estrutura de dados que indica se foi uma operação insert, update ou delete. O carimbo de data/hora baseia-se em um relógio interno do sistema e pode divergir do relógio da aplicação. Para exportações incrementais, você pode escolher entre dois tipos de visualização de exportação para a estrutura de saída: Imagens novas e antigas ou Somente novas imagens.

    • Imagem nova fornece o estado mais recente do item

    • Imagem antiga fornece o estado do item imediatamente antes da data e hora de início especificadas

    Os tipos de visualização podem ser úteis se você quiser ver como o item foi alterado no período de exportação. Também pode ser útil para atualizar com eficiência os sistemas subsequentes, especialmente se esses sistemas tiverem uma chave de partição diferente da chave de partição do DynamoDB.

    Você pode inferir se um item na saída de exportação incremental era insert, update ou delete observando a estrutura da saída. A estrutura de exportação incremental e as operações correspondentes estão resumidas na tabela abaixo para os dois tipos de visualização de exportação.

    Operation Somente novas imagens Imagens novas e antigas

    Inserir

    Chaves + imagem nova

    Chaves + imagem nova

    Atualizar

    Chaves + imagem nova Chaves + imagem nova + imagem antiga
    Delete Chaves Chaves + imagem antiga
    Inserir + excluir Sem saída Sem saída

    DynamoDB JSON

    Uma exportação de tabela no formato JSON do DynamoDB consiste em um carimbo de data/hora de metadados que indica a hora de gravação do item, seguido das chaves do item e dos valores. Veja a seguir um exemplo de saída JSON do DynamoDB usando o tipo de visualização de exportação como Imagens novas e antigas.

    // 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

    O Amazon Ion é um formato de serialização de dados hierárquico, autodescritivo e altamente compatível com vários tipos de declaração e criado para lidar com os desafios de desacoplamento, desenvolvimento rápido e eficiência enfrentados todos os dias na criação de arquiteturas orientadas a serviços em grande escala. O DynamoDB oferece suporte à exportação de dados de tabelas no formato de texto do Ion, o qual é um superconjunto do JSON.

    Quando você exporta uma tabela para o formato Ion, os tipos de dados do DynamoDB usados na tabela são mapeados em tipos de dados Ion. O DynamoDB define o uso de anotações do tipo Ion para eliminar ambiguidades do tipo de dados usado na tabela de origem.

    A tabela a seguir lista o mapeamento entre os tipos de dados do DynamoDB e os tipos de dados do Ion:

    Tipo de dados do DynamoDB Representação no Ion
    string (S) string
    Boolean (BOOL) bool
    número (N) decimal
    binário (B) blob
    Conjunto (SS, NS, BS) list (com anotação de tipo $dynamodb_SS, $dynamodb_NS ou $dynamodb_BS)
    Lista list
    Mapa struct

    Os itens em uma exportação do Ion são delimitados por novas linhas. Cada linha começa com um marcador de versão do Ion, seguido por um item no formato Ion. No exemplo a seguir, um item de uma exportação ION foi formatado em várias linhas para fins de legibilidade.

    $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" } } }