Buluttaki verilere devam eden bir masaüstü uygulaması oluşturuyorum. Bir endişem var uygulamada bir öğeyi düzenlemek ve bir süre veri bayat neden bırakarak bir başlangıçtır. Bu, 2 kişinin aynı öğeyi aynı anda düzenlemeye çalışması durumunda da görülebilir. Düzenlemelerini tamamladıklarında ve verileri kaydetmek istediklerinde, veritabanında şu anda mevcut olanların üzerine yazmam veya son değişiklikten sonra düzenlemeye başladıklarını kontrol etmeliyim ve ya değişikliklerini atmaya zorlayabilirler ya da belki de risk alma seçeneği sunabilirler. başkasının değişikliklerinin üzerine yazmak.
Bir alan ekleme is_locked
ve lock_timestamp
DB tablo düşündüm . Kullanıcı öğeyi düzenlemeye başladığında satır is_locked
true olarak değişir ve kilit zaman damgasını geçerli saate ayarlar. Daha sonra kilidin tutulduğu bir miktar zamanım olurdu (ör. 5 dakika). Başka bir kişi öğeyi düzenlemeye çalışırsa, öğenin kilitli olduğunu ve kilidin otomatik olarak sona erdiğini belirten bir mesaj alır. Kullanıcı düzenleme sırasında uzaklaşırsa, kilit göreceli olarak kısa bir süre sonra otomatik olarak sona erer ve bunu yaptıktan sonra kullanıcı, kilidin süresinin dolduğu konusunda uyarılır ve veriler yenilendikten sonra düzenlemeyi yeniden başlatmak zorunda kalır.
Bu, eski verilerin üzerine yazılmasını önlemek için iyi bir yöntem olabilir mi? Aşırı mı (uygulamanın birden fazla kişi tarafından aynı anda tek bir hesapta kullanılmasını beklemiyorum).
(Sahip olduğum bir diğer endişe, aynı kişi için bir kilit elde eden 2 kişi, ancak bunun rahat olduğum bir yarış durumu olduğuna inanıyorum.)