Jenis konflik dan kebijakan resolusi saat menggunakan beberapa wilayah tulis

BERLAKU UNTUK: Nosql MongoDB Cassandra Gremlin Meja

Kebijakan konflik dan resolusi konflik berlaku jika akun Azure Cosmos DB Anda dikonfigurasi dengan beberapa wilayah tulis.

Untuk akun Azure Cosmos DB yang dikonfigurasi dengan beberapa wilayah tulis, konflik pembaruan dapat terjadi saat penulis memperbarui item yang sama secara bersamaan di beberapa wilayah. Konflik pembaruan dapat berupa tiga tipe berikut ini:

  • Konflik penyisipan: Konflik ini dapat terjadi ketika aplikasi secara bersamaan menyisipkan dua item atau lebih dengan indeks unik yang sama di dua wilayah atau lebih. Misalnya, konflik ini mungkin terjadi dengan properti ID.

  • Konflik penggantian: Konflik ini dapat terjadi ketika aplikasi memperbarui item yang sama secara bersamaan di dua wilayah atau lebih.

  • Konflik penghapusan: Konflik ini dapat terjadi saat aplikasi secara bersamaan menghapus item di satu wilayah dan memperbaruinya di wilayah lain.

Kebijakan resolusi konflik

Azure Cosmos DB menawarkan mekanisme berbasis kebijakan yang fleksibel untuk menyelesaikan konflik penulisan. Anda dapat memilih dari dua kebijakan resolusi konflik pada kontainer Azure Cosmos DB:

  • Last Write Wins (LWW) : Kebijakan resolusi ini, secara default, menggunakan properti tanda waktu yang ditentukan sistem. Ini didasarkan pada protokol jam sinkronisasi waktu. Jika Anda menggunakan API untuk NoSQL, Anda dapat menentukan properti numerik kustom lainnya (misalnya, gagasan Anda sendiri tentang tanda waktu) yang akan digunakan untuk penyelesaian konflik. Properti numerik kustom juga disebut sebagai jalur resolusi konflik.

    Jika dua item atau lebih berkonflik pada operasi sisip atau ganti, item dengan nilai tertinggi untuk jalur resolusi konflik akan menang. Sistem menentukan pemenang jika beberapa item memiliki nilai numerik yang sama untuk jalur resolusi konflik. Semua wilayah akan berujung dengan satu pemenang dan berakhir dengan versi yang sama dari item yang diterapkan. Saat konflik penghapusan terlibat, versi yang dihapus selalu menang dari konflik penyisipan atau penggantian. Hasil ini terjadi tanpa peduli nilai jalur resolusi konflik tersebut.

    Catatan

    Last Write Wins adalah kebijakan resolusi konflik default dan menggunakan tanda waktu _ts untuk API berikut: SQL, MongoDB, Cassandra, Gremlin dan Table. Properti numerik kustom hanya tersedia untuk API untuk NoSQL.

    Untuk mempelajari lebih lanjut, lihat contoh yang menggunakan kebijakan resolusi konflik LWW.

  • Kustom: Kebijakan resolusi ini dirancang untuk semantik yang ditentukan aplikasi untuk rekonsiliasi konflik. Saat Anda menetapkan kebijakan ini pada kontainer Azure Cosmos DB, Anda juga perlu mendaftarkan prosedur tersimpan gabungan. Prosedur ini secara otomatis dipanggil ketika konflik terdeteksi di bawah transaksi database di server. Sistem menyediakan hanya satu jaminan untuk pelaksanaan prosedur penggabungan sebagai bagian dari protokol komitmen.

    Jika Anda mengonfigurasi kontainer dengan opsi resolusi kustom, dan Anda gagal mendaftarkan prosedur penggabungan pada kontainer atau prosedur penggabungan melemparkan pengecualian pada runtime, konflik ditulis ke umpan konflik. Aplikasi Anda lalu perlu menyelesaikan konflik secara manual di umpan konflik. Untuk mempelajari lebih lanjut, lihat contoh cara menggunakan kebijakan resolusi kustom dan cara menggunakan umpan konflik.

    Catatan

    Kebijakan penyelesaian konflik kustom hanya tersedia untuk API untuk akun NoSQL dan hanya dapat diatur pada waktu pembuatan. Kebijakan resolusi kustom tidak dapat diatur pada kontainer yang ada.

Langkah berikutnya

Pelajari cara mengonfigurasi kebijakan penyelesaian konflik: