Tangkapan data perubahan DynamoDB Streams - Amazon DynamoDB

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

Tangkapan data perubahan DynamoDB Streams

DynamoDB Streams menangkap urutan waktu modifikasi tingkat item di tabel DynamoDB mana pun dan menyimpan informasi ini dalam log hingga 24 jam. Aplikasi dapat mengakses log ini dan melihat item data seperti yang muncul sebelum dan setelah diubah, hampir secara waktu nyata.

Enkripsi saat istirahat mengenkripsi data dalam DynamoDB streams. Untuk informasi selengkapnya, lihat Enkripsi DynamoDB saat diam.

Streami DynamoDB adalah aliran berurutan informasi tentang perubahan item dalam tabel DynamoDB. Saat Anda mengaktifkan aliran pada tabel, DynamoDB menangkap informasi tentang setiap modifikasi pada item data dalam tabel.

Setiap kali aplikasi membuat, memperbarui, atau menghapus item dalam tabel, DynamoDB Streams menulis rekaman aliran dengan atribut kunci primer dari item yang diubah. Catatan stream berisi informasi tentang modifikasi data pada satu item dalam tabel DynamoDB. Anda dapat mengonfigurasi aliran sehingga rekaman aliran menangkap informasi tambahan, seperti gambar "sebelum" dan "sesudah" dari item yang diubah.

DynamoDB Streams membantu memastikan hal berikut:

  • Setiap catatan stream muncul tepat sekali dalam stream.

  • Untuk setiap item yang diubah dalam tabel DynamoDB, catatan stream muncul dalam urutan yang sama seperti modifikasi aktual untuk item.

DynamoDB Streams menulis catatan aliran hampir secara real-time sehingga Anda dapat membangun aplikasi yang menggunakan aliran ini dan mengambil tindakan berdasarkan kontennya.

Titik akhir untuk DynamoDB Streams

AWS mempertahankan endpoint terpisah untuk DynamoDB dan DynamoDB Streams. Untuk bekerja dengan tabel dan indeks basis data, aplikasi Anda harus mengakses titik akhir DynamoDB. Untuk membaca dan memproses catatan DynamoDB Streams, aplikasi Anda harus mengakses titik akhir DynamoDB Streams di Wilayah yang sama.

Konvensi penamaan untuk titik akhir DynamoDB Streams adalah streams.dynamodb.<region>.amazonaws.com. Misalnya, jika Anda menggunakan titik akhir dynamodb.us-west-2.amazonaws.com untuk mengakses DynamoDB, Anda akan menggunakan titik akhir streams.dynamodb.us-west-2.amazonaws.com untuk mengakses DynamoDB Streams.

catatan

Untuk daftar lengkap Wilayah dan titik akhir DynamoDB dan DynamoDB Streams, lihat Wilayah dan titik akhir di Referensi Umum AWS.

AWS SDK menyediakan klien terpisah untuk DynamoDB dan DynamoDB Streams. Bergantung pada kebutuhan Anda, aplikasi Anda dapat mengakses titik akhir DynamoDB, titik akhir DynamoDB Streams, atau keduanya secara bersamaan. Untuk terhubung ke kedua titik akhir, aplikasi Anda harus membuat instance dua klien—satu untuk DynamoDB dan satu lagi untuk DynamoDB Streams.

Mengaktifkan aliran

Anda dapat mengaktifkan aliran pada tabel baru saat Anda membuatnya menggunakan AWS CLI atau salah satu AWS SDK. Anda juga dapat mengaktifkan atau menonaktifkan aliran pada tabel yang sudah ada, atau mengubah pengaturan aliran. DynamoDB Streams beroperasi secara asinkron, sehingga tidak ada dampak kinerja pada tabel jika Anda mengaktifkan aliran.

Cara termudah untuk mengelola DynamoDB Streams adalah dengan menggunakan AWS Management Console.

  1. Masuk ke AWS Management Console dan buka konsol DynamoDB di https://console.aws.amazon.com/dynamodb/.

  2. Pada dasbor konsol DynamoDB, pilih Tabel dan pilih tabel yang ada.

  3. Pilih tab Ekspor dan aliran.

  4. Di bagian detail aliran DynamoDB, pilih Aktifkan.

  5. Pada halaman Aliran DynamoDB, pilih informasi yang akan ditulis ke aliran setiap kali data dalam tabel diubah:

    • Atribut kunci saja — Hanya atribut kunci dari item yang dimodifikasi.

    • Gambar baru — Seluruh item, saat muncul setelah diubah.

    • Gambar lama — Seluruh item, saat muncul sebelum diubah.

    • Gambar baru dan lama — Baik gambar baru dan lama dari item.

    Ketika pengaturan seperti yang Anda inginkan, pilih Aktifkan aliran.

  6. (Opsional) Untuk menonaktifkan aliran yang ada, pilih Matikan di bawah detail aliran DynamoDB.

Anda juga dapat menggunakan operasi CreateTable atau UpdateTable API untuk mengaktifkan atau memodifikasi aliran. Parameter StreamSpecification menentukan bagaimana aliran dikonfigurasi:

  • StreamEnabled — Menentukan apakah stream diaktifkan (true) atau dinonaktifkan (false) untuk tabel.

  • StreamViewType — Menentukan informasi yang akan ditulis ke stream setiap kali data dalam tabel dimodifikasi:

    • KEYS_ONLY — Hanya atribut kunci dari item yang dimodifikasi.

    • NEW_IMAGE — Keseluruhan item, seperti yang muncul setelah diubah.

    • OLD_IMAGE — Keseluruhan item, seperti yang terlihat sebelum diubah.

    • NEW_AND_OLD_IMAGES — Baik gambar baru dan lama dari item.

Anda dapat mengaktifkan atau menonaktifkan stream kapan saja. Namun, Anda menerima ResourceInUseException jika Anda mencoba untuk mengaktifkan stream pada tabel yang sudah memiliki stream. Anda menerima ValidationException jika Anda mencoba menonaktifkan stream pada tabel yang tidak memiliki stream.

Ketika Anda mengatur StreamEnabled ke true, DynamoDB menciptakan stream baru dengan deskriptor stream unik yang ditugaskan untuk itu. Jika Anda menonaktifkan dan kemudian mengaktifkan kembali stream pada tabel, stream baru dibuat dengan deskriptor stream yang berbeda.

Setiap stream diidentifikasi secara unik oleh Amazon Resource Name (ARN). Berikut ini adalah contoh ARN untuk stream pada tabel DynamoDB bernama TestTable.

arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291

Untuk menentukan deskriptor stream terbaru untuk tabel, terbitkan permintaan DescribeTable DynamoDB dan cari elemen LatestStreamArn dalam respons.

catatan

Hal ini tidak mungkin untuk mengedit StreamViewType setelah stream telah diatur. Jika Anda perlu melakukan perubahan pada stream setelah pengaturan, Anda harus menonaktifkan stream saat ini dan membuat yang baru.

Membaca dan memproses aliran

Untuk membaca dan memproses aliran, aplikasi Anda harus terhubung ke titik akhir DynamoDB Streams dan menerbitkan permintaan API.

Stream terdiri dari catatan aliran. Setiap catatan stream mewakili modifikasi data tunggal dalam tabel DynamoDB di mana aliran berada. Setiap catatan stream ditugaskan nomor urut, mencerminkan urutan catatan diterbitkan ke aliran.

Rekaman streaming disusun ke dalam grup, atau serpihan. Setiap serpihan bertindak sebagai kontainer untuk beberapa catatan aliran, dan berisi informasi yang diperlukan untuk mengakses dan iterasi melalui catatan-catatan ini. Catatan stream dalam serpihan dihapus secara otomatis setelah 24 jam.

Serpihan bersifat fana: Mereka dibuat dan dihapus secara otomatis, sesuai kebutuhan. Setiap serpihan juga dapat dibagi menjadi beberapa serpihan baru; ini juga terjadi secara otomatis. (Pecahan induk juga mungkin hanya memiliki satu pecahan turunan.) Sebuah pecahan mungkin terpecah sebagai respons terhadap aktivitas tulis tingkat tinggi pada tabel induknya, sehingga aplikasi dapat memproses rekaman dari beberapa pecahan secara paralel.

Jika Anda menonaktifkan aliran, semua pecahan yang terbuka akan ditutup. Data dalam aliran akan terus dapat dibaca selama 24 jam.

Karena serpihan memiliki garis keturunan (induk dan turunan), aplikasi harus selalu memproses serpihan induk sebelum memproses serpihan anak. Hal ini membantu memastikan bahwa rekaman aliran juga diproses dalam urutan yang benar. (Jika Anda menggunakan DynamoDB Streams Kinesis Adapter, hal ini akan ditangani untuk Anda. Aplikasi Anda memproses pecahan dan catatan aliran dalam urutan yang benar. Secara otomatis menangani pecahan baru atau yang sudah habis masa berlakunya, selain pecahan yang terpecah saat aplikasi berjalan. Misalnya informasi lebih lanjut, lihat Menggunakan adaptor DynamoDB Streams Kinesis untuk memproses catatan aliran.)

Diagram berikut menunjukkan hubungan antara aliran, serpihan dalam aliran, dan rekaman aliran dalam serpihan.

catatan

Jika Anda melakukan operasi PutItem atau UpdateItem yang tidak mengubah data dalam item, DynamoDB Streams tidak menulis catatan stream untuk operasi itu.

Untuk mengakses aliran dan memproses rekaman aliran di dalamnya, Anda harus melakukan hal berikut:

  • Tentukan ARN unik aliran yang ingin Anda akses.

  • Tentukan pecahan mana dalam aliran yang berisi rekaman aliran yang Anda minati.

  • Akses pecahan dan ambil rekaman aliran yang Anda inginkan.

catatan

Maksimum dua proses harus membaca dari pecahan aliran yang sama pada waktu yang sama. Memiliki lebih dari dua pembaca per shard dapat mengakibatkan throttling.

DynamoDB Streams API menyediakan tindakan berikut untuk digunakan oleh program aplikasi:

  • ListStreams — Mengembalikan daftar deskriptor stream untuk akun dan titik akhir saat ini. Anda secara opsional dapat meminta hanya deskriptor stream untuk nama tabel tertentu.

  • DescribeStream — Mengembalikan informasi mendetail tentang stream tertentu. Output termasuk daftar serpihan terkait dengan stream, termasuk ID serpihan.

  • GetShardIterator — Mengembalikan iterator serpihan, yang menggambarkan lokasi di dalam serpihan. Anda dapat meminta iterator yang menyediakan akses ke titik terlama, titik terbaru, atau titik tertentu dalam serpihan.

  • GetRecords - Mengembalikan catatan aliran dari dalam serpihan yang diberikan. Anda harus memberikan iterator serpihan yang dikembalikan dari permintaan GetShardIterator.

Untuk deskripsi lengkap operasi API ini, termasuk contoh permintaan dan tanggapan, lihat Referensi API Amazon DynamoDB Streams.

Batas retensi data untuk DynamoDB Streams

Semua data dalam DynamoDB Streams tunduk pada masa hidup 24 jam. Anda dapat mengambil dan menganalisis 24 jam terakhir aktivitas untuk setiap tabel yang ditentukan. Namun, data yang lebih lama dari 24 jam rentan terhadap pemangkasan (penghapusan) setiap saat.

Jika Anda menonaktifkan stream pada tabel, data di stream terus dapat dibaca selama 24 jam. Setelah waktu ini, data kedaluwarsa dan catatan stream secara otomatis dihapus. Tidak ada mekanisme untuk menghapus stream yang ada secara manual. Anda harus menunggu hingga batas retensi berakhir (24 jam), dan semua catatan stream akan dihapus.