Saya membuat aplikasi desktop yang menyimpan data di cloud. Satu kekhawatiran yang saya miliki adalah mulai mengedit item dalam aplikasi dan membiarkannya sementara waktu menyebabkan data menjadi basi. Ini jelas dapat juga terjadi jika 2 orang mencoba mengedit item yang sama secara bersamaan. Ketika mereka selesai mengedit dan ingin menyimpan data, saya perlu menimpa apa yang saat ini ada di database atau memeriksa apakah mereka mulai mengedit setelah perubahan terakhir dan memaksa mereka untuk membuang perubahan mereka atau mungkin memberi mereka pilihan untuk mengambil risiko menimpa perubahan orang lain.
Saya berpikir tentang menambahkan bidang is_locked
dan lock_timestamp
ke tabel DB. Ketika pengguna mulai mengedit item, baris akan berubah is_locked
menjadi true dan mengatur cap waktu kunci ke waktu saat ini. Saya kemudian akan memiliki sejumlah waktu untuk mana kunci dipegang (mis. 5 menit). Jika ada orang lain yang mencoba mengedit item, mereka akan menerima pesan yang mengatakan item terkunci dan ketika kunci secara otomatis berakhir. Jika pengguna berjalan pergi saat mengedit kunci akan secara otomatis berakhir setelah periode waktu yang relatif singkat dan begitu itu dilakukan pengguna akan diperingatkan bahwa kunci telah kedaluwarsa dan dipaksa untuk memulai kembali edit setelah data di-refresh.
Apakah ini menjadi metode yang baik untuk mencegah menimpa data basi? Apakah ini berlebihan (saya tidak berharap aplikasi akan digunakan oleh lebih dari beberapa orang secara bersamaan pada satu akun).
(Kekhawatiran lain yang saya miliki adalah 2 orang mendapatkan kunci untuk item yang sama, namun saya percaya itu adalah kondisi lomba yang saya sukai.)