Tujuan kunci versi adalah penguncian optimis.
Saat diaktifkan, nilai versi secara atomik bertambah setiap kali dokumen diperbarui.
Hal ini memungkinkan kode aplikasi Anda untuk menguji apakah perubahan telah dibuat antara pengambilan (membawa kunci versi 42 misalnya) dan pembaruan berikutnya (memastikan nilai versi tetap 42). Jika kunci versi memiliki nilai yang berbeda (mis. 43 karena pembaruan telah dibuat pada dokumen), kode aplikasi Anda dapat menangani modifikasi bersamaan.
Konsep yang sama sering digunakan dalam basis data relasional alih-alih penguncian pesimistis yang dapat membawa kinerja yang mengerikan. Semua ORM yang layak menyediakan fitur seperti itu. Misalnya dijelaskan dengan baik dalam dokumentasi ObjectDB . Ini adalah database objek yang diimplementasikan di Java tetapi konsep yang sama berlaku.
entri blog ditautkan dalam komentar Behlül menunjukkan kegunaan penguncian optimis dengan contoh konkret, tetapi hanya untuk perubahan array, lihat di bawah.
Sebaliknya, ini adalah kasus sederhana yang tidak berguna:profil pengguna yang dapat diedit oleh pemiliknya sendiri. Di sini Anda dapat menghilangkan penguncian optimis dan menganggap bahwa pengeditan terakhir selalu menang.
Jadi, hanya Anda yang tahu apakah aplikasi Anda membutuhkan penguncian optimis atau tidak. Gunakan kasus per kasus penggunaan.
Situasi luwak agak istimewa.
Penguncian optimis hanya diaktifkan untuk larik karena format penyimpanan internal menggunakan indeks posisi. Ini adalah masalah yang dijelaskan oleh entri blog
ditautkan dalam komentar pertanyaan. Saya menemukan penjelasan
diberikan dalam mongoose-orm
milis cukup jelas:jika Anda membutuhkan penguncian optimis untuk bidang lain, Anda harus menanganinya sendiri.
Berikut adalah inti
menunjukkan cara menerapkan strategi coba lagi untuk add
operasi. Sekali lagi, cara Anda ingin menanganinya bergantung pada kasus penggunaan Anda, tetapi itu sudah cukup untuk membantu Anda memulai.
Saya harap ini menyelesaikan semuanya.
Semangat