Format output ekspor tabel DynamoDB - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Format output ekspor tabel DynamoDB

Sebuah ekspor tabel DynamoDB mencakup file manifes selain file yang berisi data tabel Anda. File ini semua disimpan di bucket Amazon S3 yang Anda tentukan di permintaan ekspor. Bagian berikut menjelaskan format dan isi dari setiap objek output.

Topik

    File manifes

    DynamoDB membuat dua file manifes, bersama dengan file checksum, dalam bucket S3 yang ditentukan untuk setiap permintaan ekspor.

    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

    Anda memilih export-prefix saat meminta ekspor tabel. Ini membantu Anda menjaga kerapian file di bucket S3 tujuan. ExportId adalah token unik yang dihasilkan oleh layanan untuk memastikan bahwa beberapa ekspor ke bucket S3 dan export-prefix ekspor yang sama tidak saling menimpa.

    Ekspor akan membuat setidaknya 1 file per partisi. Untuk partisi yang kosong, permintaan ekspor Anda akan membuat file kosong. Semua item di setiap file berasal dari keyspace hash partisi tertentu.

    catatan

    DynamoDB juga membuat sebuah file kosong bernama _started dalam direktori yang sama sebagai file manifes. File ini memverifikasi bahwa bucket tujuan dapat ditulis dan bahwa ekspor telah dimulai. File ini bisa dihapus dengan aman.

    Manifes ringkasan

    File manifest-summary.json berisi informasi ringkasan tentang tugas ekspor. Ini memungkinkan Anda mengetahui file data mana di folder data bersama yang terkait dengan ekspor ini. Formatnya adalah sebagai berikut:

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

    Manifes file

    File manifest-files.json berisi informasi tentang file yang berisi data tabel Anda yang diekspor. File ada dalam format baris JSON, jadi baris baru digunakan sebagai pembatas item. Pada contoh berikut, perincian satu file data dari manifes file diformat pada beberapa baris untuk keterbacaan.

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

    File data

    DynamoDB dapat mengekspor data tabel Anda dalam dua format: DynamoDB JSON dan Amazon Ion. Terlepas dari format yang Anda pilih, data Anda akan ditulis ke beberapa file terkompresi yang dinamai berdasarkan kunci. File-file ini juga tercantum dalam manifest-files.json file.

    Struktur direktori bucket S3 Anda setelah ekspor penuh akan berisi semua file manifes dan file data Anda di bawah folder 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

    Sebuah ekspor tabel dalam format DynamoDB JSON terdiri dari beberapa objek Item. Setiap objek individual berada dalam format JSON marshalled standar DynamoDB.

    Saat membuat parser kustom untuk data ekspor DynamoDB JSON, formatnya adalah garis JSON. Ini berarti bahwa baris baru digunakan sebagai pembatas item. Banyak AWS layanan, seperti Athena dan AWS Glue, akan mengurai format ini secara otomatis.

    Dalam contoh berikut, satu item dari ekspor JSON DynamoDB telah diformat pada beberapa baris demi keterbacaan.

    { "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 adalah format serialisasi data hierarkis yang kaya jenis, dapat dijelaskan sendiri, yang dibuat untuk mengatasi tantangan perkembangan pesat, pemisahan, dan efisiensi yang dihadapi setiap hari saat merekayasa arsitektur berorientasi layanan berskala besar. DynamoDB mendukung ekspor data tabel dalam format teks Ion, yang merupakan superset dari JSON.

    Saat Anda mengekspor tabel ke format Ion, jenis data DynamoDB yang digunakan dalam tabel dipetakan ke jenis data Ion. Set DynamoDB menggunakan anotasi jenis Ion untuk memperjelas jenis data yang digunakan dalam tabel sumber.

    Konversi jenis data DynamoDB ke ion
    Jenis data DynamoDB Perwakilan Ion
    String (S) string
    Boolean (BOOL) bool
    Angka (N) desimal
    Biner (B) blob
    Set (SS, NS, BS) daftar (dengan anotasi jenis $dynamodb_SS, $dynamodb_NS, or $dynamodb_BS)
    Daftar daftar
    Peta struct

    Item dalam ekspor Ion dibatasi oleh baris baru. Setiap baris dimulai dengan penanda versi Ion, diikuti dengan item dalam format Ion. Dalam contoh berikut, item dari ekspor Ion telah diformat dalam beberapa baris demi keterbacaan.

    $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 manifes

    DynamoDB membuat dua file manifes, bersama dengan file checksum, dalam bucket S3 yang ditentukan untuk setiap permintaan ekspor.

    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

    Anda memilih export-prefix saat meminta ekspor tabel. Ini membantu Anda menjaga kerapian file di bucket S3 tujuan. ExportId adalah token unik yang dihasilkan oleh layanan untuk memastikan bahwa beberapa ekspor ke bucket S3 dan export-prefix ekspor yang sama tidak saling menimpa.

    Ekspor akan membuat setidaknya 1 file per partisi. Untuk partisi yang kosong, permintaan ekspor Anda akan membuat file kosong. Semua item di setiap file berasal dari keyspace hash partisi tertentu.

    catatan

    DynamoDB juga membuat sebuah file kosong bernama _started dalam direktori yang sama sebagai file manifes. File ini memverifikasi bahwa bucket tujuan dapat ditulis dan bahwa ekspor telah dimulai. File ini bisa dihapus dengan aman.

    Manifes ringkasan

    File manifest-summary.json berisi informasi ringkasan tentang tugas ekspor. Ini memungkinkan Anda mengetahui file data mana di folder data bersama yang terkait dengan ekspor ini. Formatnya adalah sebagai berikut:

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

    Manifes file

    File manifest-files.json berisi informasi tentang file yang berisi data tabel Anda yang diekspor. File ada dalam format baris JSON, jadi baris baru digunakan sebagai pembatas item. Pada contoh berikut, perincian satu file data dari manifes file diformat pada beberapa baris untuk keterbacaan.

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

    File data

    DynamoDB dapat mengekspor data tabel Anda dalam dua format: DynamoDB JSON dan Amazon Ion. Terlepas dari format yang Anda pilih, data Anda akan ditulis ke beberapa file terkompresi yang dinamai berdasarkan kunci. File-file ini juga tercantum dalam manifest-files.json file.

    File data untuk ekspor inkremental semuanya ada di folder data umum di bucket S3 Anda. File manifes Anda berada di bawah folder ID ekspor Anda.

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

    Saat Anda mengekspor file, output setiap item menyertakan stempel waktu yang menunjukkan kapan item tersebut diperbarui di tabel Anda dan struktur data yang menunjukkan apakah itu adalah operasi insert, update, atau delete. Stempel waktu didasarkan pada jam sistem internal dan dapat bervariasi dari jam aplikasi Anda. Untuk ekspor tambahan, Anda dapat memilih antara dua jenis tampilan ekspor untuk struktur keluaran Anda: gambar baru dan lama atau hanya gambar baru.

    • Gambar baru memberikan status terkini item

    • Gambar lama menunjukkan status item tepat sebelum tanggal dan waktu mulai yang ditentukan

    Jenis tampilan dapat membantu jika Anda ingin melihat bagaimana item diubah dalam periode ekspor. Ini juga dapat berguna untuk memperbarui sistem hilir Anda secara efisien, terutama jika sistem hilir tersebut memiliki kunci partisi yang tidak sama dengan kunci partisi DynamoDB Anda.

    Anda dapat menyimpulkan apakah item dalam output ekspor tambahan Anda adalah insert, update, atau delete dengan melihat struktur output. Struktur ekspor inkremental dan operasi yang sesuai dirangkum dalam tabel di bawah ini untuk kedua jenis tampilan ekspor.

    Operasi Hanya gambar baru Gambar baru dan lama

    Sisipkan

    Tombol + gambar baru

    Tombol + gambar baru

    Perbarui

    Tombol + gambar baru Tombol+gambar baru+gambar lama
    Hapus Kunci Tombol + gambar lama
    Sisipkan + hapus Tidak ada output Tidak ada output

    DynamoDB Json

    Ekspor tabel dalam format JSON DynamoDB terdiri dari stempel waktu metadata yang menunjukkan waktu penulisan item, diikuti dengan kunci item dan nilainya. Berikut ini menunjukkan contoh output JSON DynamoDB menggunakan jenis tampilan ekspor sebagai gambar Baru dan Lama.

    // 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 adalah format serialisasi data hierarkis yang kaya jenis, dapat dijelaskan sendiri, yang dibuat untuk mengatasi tantangan perkembangan pesat, pemisahan, dan efisiensi yang dihadapi setiap hari saat merekayasa arsitektur berorientasi layanan berskala besar. DynamoDB mendukung ekspor data tabel dalam format teks Ion, yang merupakan superset dari JSON.

    Saat Anda mengekspor tabel ke format Ion, jenis data DynamoDB yang digunakan dalam tabel dipetakan ke jenis data Ion. Set DynamoDB menggunakan anotasi jenis Ion untuk memperjelas jenis data yang digunakan dalam tabel sumber.

    Konversi jenis data DynamoDB ke ion
    Jenis data DynamoDB Perwakilan Ion
    String (S) string
    Boolean (BOOL) bool
    Angka (N) desimal
    Biner (B) blob
    Set (SS, NS, BS) daftar (dengan anotasi jenis $dynamodb_SS, $dynamodb_NS, or $dynamodb_BS)
    Daftar daftar
    Peta struct

    Item dalam ekspor Ion dibatasi oleh baris baru. Setiap baris dimulai dengan penanda versi Ion, diikuti dengan item dalam format Ion. Dalam contoh berikut, item dari ekspor Ion telah diformat dalam beberapa baris demi keterbacaan.

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