Pembuatan versi sumber data DynamoDB di AWS AppSync - AWS AppSync

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

Pembuatan versi sumber data DynamoDB di AWS AppSync

AWS AppSync saat ini mendukung pembuatan versi pada sumber data DynamoDB. Operasi Deteksi Konflik, Resolusi Konflik, dan Sinkronisasi memerlukan sumber Versioned data. Ketika Anda mengaktifkan versi pada sumber data, secara otomatis AWS AppSync akan:

  • Tingkatkan item dengan metadata versi objek.

  • Rekam perubahan yang dibuat pada item dengan AWS AppSync mutasi ke tabel Delta.

  • Pertahankan item yang dihapus di tabel Dasar dengan “batu nisan” untuk jangka waktu yang dapat dikonfigurasi.

Konfigurasi sumber data berversi

Saat Anda mengaktifkan pembuatan versi pada sumber data DynamoDB, Anda menentukan bidang berikut:

BaseTableTTL

Jumlah menit untuk mempertahankan item yang dihapus di tabel Dasar dengan “batu nisan” - bidang metadata yang menunjukkan bahwa item telah dihapus. Anda dapat mengatur nilai ini ke 0 jika Anda ingin item segera dihapus ketika mereka dihapus. Bidang ini wajib diisi.

DeltaSyncTableName

Nama tabel tempat perubahan yang dilakukan pada item dengan AWS AppSync mutasi disimpan. Bidang ini wajib diisi.

DeltaSyncTableTTL

Jumlah menit untuk menyimpan item di tabel Delta. Bidang ini wajib diisi.

Pencatatan tabel sinkronisasi Delta

AWS AppSync saat ini mendukung Delta Sync Logging untuk mutasi menggunakanPutItem,UpdateItem, dan operasi DynamoDBDeleteItem.

Ketika AWS AppSync mutasi mengubah item dalam sumber data berversi, catatan perubahan itu akan disimpan dalam tabel Delta yang dioptimalkan untuk pembaruan tambahan. Anda dapat memilih untuk menggunakan tabel Delta yang berbeda (misalnya satu per jenis, satu per area domain) untuk sumber data berversi lainnya atau tabel Delta tunggal untuk Anda. API AWS AppSync merekomendasikan untuk tidak menggunakan tabel Delta tunggal untuk beberapa APIs untuk menghindari tabrakan kunci utama.

Skema yang diperlukan untuk tabel ini adalah sebagai berikut:

ds_pk

Nilai string yang digunakan sebagai kunci partisi. Ini dibangun dengan menggabungkan nama sumber data Base dan format ISO 8601 dari tanggal perubahan terjadi (misalnya). Comments:2019-01-01

Ketika customPartitionKey bendera dari template VTL pemetaan ditetapkan sebagai nama kolom kunci partisi (lihat Referensi Template Pemetaan Resolver untuk DynamoDB dalam Panduan AWS AppSync Pengembang), format ds_pk perubahan, dan string dibangun dengan menambahkan nilai kunci partisi dalam catatan baru di tabel Base. Misalnya, jika catatan dalam tabel Base memiliki nilai kunci partisi 1a dan nilai kunci sortir2b, nilai baru string akan menjadi:Comments:2019-01-01:1a.

ds_sk

Nilai string yang digunakan sebagai kunci pengurutan. Ini dibangun dengan menggabungkan format ISO 8601 dari waktu perubahan terjadi, kunci utama item, dan versi item. Kombinasi bidang ini menjamin keunikan untuk setiap entri dalam tabel Delta (misalnya untuk waktu 09:30:00 dan ID 1a dan versi2, ini akan menjadi). 09:30:00:1a:2

Ketika customPartitionKey bendera dari template VTL pemetaan diatur ke nama kolom kunci partisi (lihat Referensi Template Pemetaan Resolver untuk DynamoDB dalam Panduan AWS AppSync Pengembang), format ds_sk perubahan, dan string dibangun dengan mengganti nilai kunci kombinasi dengan nilai kunci pengurutan di tabel Base. Menggunakan contoh sebelumnya di atas, jika catatan dalam tabel Base memiliki nilai kunci partisi 1a dan nilai kunci jenis2b, nilai baru string akan:09:30:00:2b:3.

_ttl

Nilai numerik yang menyimpan stempel waktu, dalam detik epoch, ketika item harus dihapus dari tabel Delta. Nilai ini ditentukan dengan menambahkan DeltaSyncTableTTL nilai yang dikonfigurasi pada sumber data ke saat perubahan terjadi. Bidang ini harus dikonfigurasi sebagai Atribut DynamoDBTTL.

IAMPeran yang dikonfigurasi untuk digunakan dengan tabel Base juga harus berisi izin untuk beroperasi pada tabel Delta. Dalam contoh ini, kebijakan izin untuk tabel Base yang dipanggil Comments dan tabel Delta dipanggil ChangeLog ditampilkan:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:000000000000:table/Comments", "arn:aws:dynamodb:us-east-1:000000000000:table/Comments/*", "arn:aws:dynamodb:us-east-1:000000000000:table/ChangeLog", "arn:aws:dynamodb:us-east-1:000000000000:table/ChangeLog/*" ] } ] }

Metadata sumber data berversi

AWS AppSync mengelola bidang metadata pada sumber Versioned data atas nama Anda. Memodifikasi bidang ini sendiri dapat menyebabkan kesalahan dalam aplikasi atau kehilangan data Anda. Bidang ini meliputi:

_version

Penghitung yang meningkat secara monoton yang diperbarui setiap saat perubahan terjadi pada suatu item.

_lastChangedAt

Nilai numerik yang menyimpan stempel waktu, dalam milidetik epoch, saat item terakhir diubah.

_deleted

Nilai “batu nisan” Boolean yang menunjukkan bahwa item telah dihapus. Ini dapat digunakan oleh aplikasi untuk mengusir item yang dihapus dari penyimpanan data lokal.

_ttl

Nilai numerik yang menyimpan stempel waktu, dalam detik epoch, ketika item harus dihapus dari sumber data yang mendasarinya.

ds_pk

Nilai string yang digunakan sebagai kunci partisi untuk tabel Delta.

ds_sk

Nilai string yang digunakan sebagai kunci pengurutan untuk tabel Delta.

gsi_ds_pk

Sebuah atribut nilai string yang dihasilkan untuk mendukung indeks sekunder global sebagai kunci partisi. Ini akan disertakan hanya jika kedua customPartitionKey dan populateIndexFields flag diaktifkan dalam template pemetaan (lihat Referensi Template VTL Pemetaan Resolver untuk DynamoDB di Panduan Pengembang).AWS AppSync Jika diaktifkan, nilai akan dibangun dengan menggabungkan nama sumber data Base dan format ISO 8601 dari tanggal di mana perubahan terjadi (misalnya jika tabel Base bernama Komentar, catatan ini akan ditetapkan sebagai). Comments:2019-01-01

gsi_ds_sk

Sebuah atribut nilai string yang dihasilkan untuk mendukung indeks sekunder global sebagai kunci pengurutan. Ini akan disertakan hanya jika kedua customPartitionKey dan populateIndexFields flag diaktifkan dalam template pemetaan (lihat Referensi Template VTL Pemetaan Resolver untuk DynamoDB di Panduan Pengembang).AWS AppSync Jika diaktifkan, nilainya akan dibangun dengan menggabungkan format ISO 8601 dari waktu di mana perubahan terjadi, kunci partisi item di tabel Dasar, kunci pengurutan item di tabel Dasar, dan versi item (misalnya untuk sementara waktu, nilai kunci partisi09:30:00, nilai kunci pengurutan1a, dan versi2b, ini akan menjadi). 3 09:30:00:1a#2b:3

Bidang metadata ini akan memengaruhi ukuran keseluruhan item di sumber data yang mendasarinya. AWS AppSync merekomendasikan untuk memesan 500 byte+Ukuran Kunci Utama Maks dari penyimpanan untuk metadata sumber data berversi saat mendesain aplikasi Anda. Untuk menggunakan metadata ini dalam aplikasi klien, sertakan _version_lastChangedAt, dan _deleted bidang pada tipe GraphQL Anda dan dalam set pilihan untuk mutasi.