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.
Topik
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.
. Misalnya, jika Anda menggunakan titik akhir <region>
.amazonaws.com.rproxy.goskope.comdynamodb.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 SDKsMenyediakan 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 tabel AWS SDKs. 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.
Masuk ke AWS Management Console dan buka konsol DynamoDB di. https://console.aws.amazon.com/dynamodb/
-
Pada dasbor konsol DynamoDB, pilih Tabel dan pilih tabel yang ada.
-
Pilih tab Ekspor dan aliran.
-
Di bagian detail aliran DynamoDB, pilih Aktifkan.
-
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.
-
-
(Opsional) Untuk menonaktifkan aliran yang ada, pilih Matikan di bawah detail aliran DynamoDB.
Anda juga dapat menggunakan UpdateTable
API operasi CreateTable
atau 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 ValidationException
jika Anda mencoba untuk mengaktifkan stream pada tabel yang sudah memiliki stream. Anda juga menerima ValidationException
jika Anda mencoba menonaktifkan aliran pada tabel yang tidak memiliki aliran.
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 aliran diidentifikasi secara unik oleh Amazon Resource Name ()ARN. Berikut ini adalah contoh ARN untuk aliran 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 mengeluarkan 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 keunikan 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 API Streams 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. Outputnya mencakup daftar pecahan yang terkait dengan aliran, termasuk pecahanIDs. -
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 permintaanGetShardIterator
.
Untuk deskripsi lengkap tentang API operasi ini, termasuk contoh permintaan dan tanggapan, lihat Referensi Amazon API 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.