Formato di output di esportazione della tabella DynamoDB - Amazon DynamoDB

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

Formato di output di esportazione della tabella DynamoDB

Un'esportazione di tabelle DynamoDB, oltre ai file contenenti i dati della tabella, include file manifesto. Tutti questi file vengono salvati nel bucket Amazon S3 specificato nella richiesta di esportazione. Nelle sezioni seguenti sono descritti il formato e il contenuto di ciascun oggetto di output.

Argomenti

    File manifesto

    Per ogni richiesta di esportazione, oltre ai file checksum, DynamoDB crea file manifesto nel bucket S3 specificato.

    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

    Quando si richiede l'esportazione di una tabella viene scelto un parametro export-prefix. Questo ti aiuta a mantenere organizzati i file nel bucket S3 di destinazione. L'ExportId è un token univoco generato dal servizio per garantire che più esportazioni nello stesso bucket S3 e export-prefix non si sovrascrivano l'un l'altro.

    L'esportazione crea anche almeno 1 file per partizione. Per le partizioni vuote, la richiesta di esportazione creerà un file vuoto. Tutti gli elementi di ogni file provengono dal keyspace con hash di quella particolare partizione.

    Nota

    DynamoDB crea anche un file vuoto denominato _started nella stessa directory dei file manifesto. Questo file verifica che il bucket di destinazione sia scrivibile e che l'esportazione sia iniziata. Può essere tranquillamente eliminato.

    Il manifesto di riepilogo

    Il file manifest-summary.json contiene le informazioni di riepilogo del processo di esportazione. Ciò consente di sapere quali file di dati nella cartella di dati condivisa sono associati a questa esportazione. Il formato è il seguente:

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

    I file manifesto

    Il file manifest-files.json contiene informazioni sui file contenenti i dati della tabella esportati. Il file ha un formato JSON lines, pertanto le nuove righe vengono utilizzate come delimitatori di elementi. Nell'esempio seguente, i dettagli di un file di dati dai file manifesto vengono formattati su più righe per motivi di leggibilità.

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

    File di dati

    DynamoDB può esportare i dati della tabella in due formati: DynamoDB JSON e Amazon Ion. Indipendentemente dal formato scelto, i dati verranno scritti in più file compressi denominati dalle chiavi. Anche questi file sono elencati nel file manifest-files.json.

    La struttura di directory del bucket S3 dopo un'esportazione completa conterrà tutti i file manifesto e i file di dati nella cartella Export ID.

    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

    Un'esportazione di tabella in formato DynamoDB JSON è costituita da più oggetti Item. Ogni singolo oggetto è nel formato JSON di marshalling standard di DynamoDB.

    Quando si creano parser personalizzati per i dati di esportazione in DynamoDB JSON, il formato generato è JSON lines. Ciò significa che le nuove righe saranno utilizzate come delimitatori di elementi. Molti AWS servizi, come Athena e AWS Glue, analizzeranno automaticamente questo formato.

    Nell'esempio seguente, un singolo elemento da un'esportazione DynamoDB JSON è stato formattato su più righe per motivi di leggibilità.

    { "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 è un formato gerarchico di serializzazione dei dati particolarmente tipizzato, autodescrittivo, creato per le esigenze di sviluppo rapido, disaccoppiamento ed efficienza quotidianamente associate alla progettazione di architetture orientate ai servizi su larga scala. DynamoDB supporta l'esportazione dei dati delle tabelle in formato di testo di Ion, che è un superset di JSON.

    Quando si esporta una tabella in formato Ion, i tipi di dati DynamoDB utilizzati nella tabella vengono mappati ai tipi di dati Ion. I set DynamoDB usano annotazioni del tipo Ionper disambiguare il tipo di dati utilizzato nella tabella di origine.

    Conversione del tipo di dati da DynamoDB a Ion
    Tipo di dati DynamoDB Rappresentazione Ion
    String (S) string
    Boolean (BOOL) bool
    Number (N) decimal
    Binary (B) blob
    Set (SS, NS, BS) list (con annotazione del tipo $dynamodb_SS, $dynamodb_NS o $dynamodb_BS)
    Elenco list
    Map struct

    Gli elementi in un'esportazione Ion sono delimitati da nuove righe. Ogni riga inizia con un evidenziatore della versione Ion, seguito da un elemento in formato Ion. Nell'esempio seguente, un singolo elemento da un'esportazione DynamoDB JSON è stato formattato su più righe per motivi di leggibilità.

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

    File manifesto

    Per ogni richiesta di esportazione, oltre ai file checksum, DynamoDB crea file manifesto nel bucket S3 specificato.

    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

    Quando si richiede l'esportazione di una tabella viene scelto un parametro export-prefix. Questo ti aiuta a mantenere organizzati i file nel bucket S3 di destinazione. L'ExportId è un token univoco generato dal servizio per garantire che più esportazioni nello stesso bucket S3 e export-prefix non si sovrascrivano l'un l'altro.

    L'esportazione crea anche almeno 1 file per partizione. Per le partizioni vuote, la richiesta di esportazione creerà un file vuoto. Tutti gli elementi di ogni file provengono dal keyspace con hash di quella particolare partizione.

    Nota

    DynamoDB crea anche un file vuoto denominato _started nella stessa directory dei file manifesto. Questo file verifica che il bucket di destinazione sia scrivibile e che l'esportazione sia iniziata. Può essere tranquillamente eliminato.

    Il manifesto di riepilogo

    Il file manifest-summary.json contiene le informazioni di riepilogo del processo di esportazione. Ciò consente di sapere quali file di dati nella cartella di dati condivisa sono associati a questa esportazione. Il formato è il seguente:

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

    I file manifesto

    Il file manifest-files.json contiene informazioni sui file contenenti i dati della tabella esportati. Il file ha un formato JSON lines, pertanto le nuove righe vengono utilizzate come delimitatori di elementi. Nell'esempio seguente, i dettagli di un file di dati dai file manifesto vengono formattati su più righe per motivi di leggibilità.

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

    File di dati

    DynamoDB può esportare i dati della tabella in due formati: DynamoDB JSON e Amazon Ion. Indipendentemente dal formato scelto, i dati verranno scritti in più file compressi denominati dalle chiavi. Anche questi file sono elencati nel file manifest-files.json.

    I file di dati per le esportazioni incrementali sono tutti contenuti in una cartella di dati comune nel bucket S3. I file manifesto si trovano nella cartella Export ID.

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

    Nei file di esportazione, l'output di ogni elemento include un timestamp che indica quando quell'elemento è stato aggiornato nella tabella e una struttura di dati che indica se si è trattato di un'operazione insert, update o delete. Il timestamp si basa su un orologio di sistema interno e può differire dall'orologio dell'applicazione. Per le esportazioni incrementali, puoi scegliere tra due tipi di visualizzazione di esportazione per la struttura di output: immagini nuove e vecchie o solo immagini nuove.

    • La nuova immagine fornisce lo stato più recente dell'elemento

    • La vecchia immagine mostra lo stato dell'elemento subito prima della data e dell'ora di inizio specificate

    I tipi di visualizzazione possono essere utili se desideri vedere come è stato modificato l'elemento durante il periodo di esportazione. Possono anche essere utili per aggiornare in modo efficiente i sistemi downstream, specialmente se tali sistemi hanno una chiave di partizione diversa dalla chiave di partizione di DynamoDB.

    È possibile dedurre se un elemento dell'output di esportazione incrementale era insert, update o delete osservando la struttura dell'output. La struttura di esportazione incrementale e le operazioni corrispondenti sono riepilogate nella tabella seguente per entrambi i tipi di visualizzazione di esportazione.

    Operazione Solo nuove immagini Immagini nuove e vecchie

    Insert

    Chiavi + nuova immagine

    Chiavi + nuova immagine

    Aggiornamento

    Chiavi + nuova immagine Tasti + nuova immagine + vecchia immagine
    Eliminazione Chiavi Chiavi + vecchia immagine
    Insert + delete Nessun output Nessun output

    DynamoDB JSON

    Un'esportazione di tabelle in formato DynamoDB JSON è costituita da un timestamp dei metadati che indica il tempo di scrittura dell'elemento, seguito dalle chiavi dell'elemento e dai valori. Di seguito viene illustrato un esempio di output JSON di DynamoDB che utilizza il tipo di visualizzazione di esportazione come Immagini nuove e vecchie.

    // 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 è un formato gerarchico di serializzazione dei dati particolarmente tipizzato, autodescrittivo, creato per le esigenze di sviluppo rapido, disaccoppiamento ed efficienza quotidianamente associate alla progettazione di architetture orientate ai servizi su larga scala. DynamoDB supporta l'esportazione dei dati delle tabelle in formato di testo di Ion, che è un superset di JSON.

    Quando si esporta una tabella in formato Ion, i tipi di dati DynamoDB utilizzati nella tabella vengono mappati ai tipi di dati Ion. I set DynamoDB usano annotazioni del tipo Ionper disambiguare il tipo di dati utilizzato nella tabella di origine.

    Conversione del tipo di dati da DynamoDB a Ion
    Tipo di dati DynamoDB Rappresentazione Ion
    String (S) string
    Boolean (BOOL) bool
    Number (N) decimal
    Binary (B) blob
    Set (SS, NS, BS) list (con annotazione del tipo $dynamodb_SS, $dynamodb_NS o $dynamodb_BS)
    Elenco list
    Map struct

    Gli elementi in un'esportazione Ion sono delimitati da nuove righe. Ogni riga inizia con un evidenziatore della versione Ion, seguito da un elemento in formato Ion. Nell'esempio seguente, un singolo elemento da un'esportazione DynamoDB JSON è stato formattato su più righe per motivi di leggibilità.

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