

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
<a name="versioned-data-sources"></a>

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
<a name="versioned-data-source-configuration"></a>

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
<a name="delta-sync-table"></a>

AWS AppSync saat ini mendukung Delta Sync Logging untuk mutasi menggunakan`PutItem`,`UpdateItem`, dan operasi DynamoDB`DeleteItem`.

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 API Anda. 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 pemetaan VTL ditetapkan sebagai nama kolom kunci partisi (lihat [Referensi Template Pemetaan Resolver untuk DynamoDB](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-updateitem) di 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 sortir`2b`, 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 versi`2`, ini akan menjadi). `09:30:00:1a:2`  
*Ketika `customPartitionKey` bendera dari template pemetaan VTL diatur ke nama kolom kunci partisi (lihat [Referensi Template Pemetaan Resolver untuk DynamoDB](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-updateitem) dalam Panduan *AWS AppSync Pengembang*), format `ds_sk` perubahan, dan string dibangun dengan mengganti nilai kombinasi kunci 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 jenis`2b`, 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 DynamoDB TTL Atribut.

Peran IAM 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:

------
#### [ JSON ]

****  

```
{
    "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
<a name="versioned-data-source-metadata"></a>

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 VTL (lihat [Referensi Template Pemetaan Resolver untuk DynamoDB di Panduan](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-updateitem) 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 VTL (lihat [Referensi Template Pemetaan Resolver untuk DynamoDB di Panduan](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-updateitem) Pengembang).AWS AppSync * Jika diaktifkan, nilainya akan dibangun dengan menggabungkan format ISO 8601 saat perubahan terjadi, kunci partisi item di tabel *Dasar*, kunci pengurutan item di tabel *Dasar*, dan versi item (misalnya untuk sementara waktu, nilai kunci partisi`09:30:00`, nilai kunci pengurutan`1a`, dan versi`2b`, 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\$1Ukuran 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.