मैं एक डेस्कटॉप एप्लिकेशन बना रहा हूं जो क्लाउड में डेटा को बनाए रखता है। मेरे पास एक चिंता यह है कि आवेदन में किसी आइटम को संपादित करने और इसे थोड़ी देर के लिए छोड़ देने की शुरुआत है, जिससे डेटा बासी हो जाए। यह स्पष्ट रूप से भी हो सकता है यदि 2 लोग एक ही समय में एक ही आइटम को संपादित करने का प्रयास करते हैं। जब वे अपना संपादन समाप्त कर लेते हैं और डेटा को सहेजना चाहते हैं, तो मुझे या तो डेटाबेस में जो वर्तमान में मौजूद है, उसे अधिलेखित करना होगा या जाँचना होगा कि उन्होंने अंतिम परिवर्तन के बाद संपादन शुरू किया था या तो उन्हें अपने परिवर्तनों को त्यागने के लिए मजबूर किया या शायद उन्हें जोखिम का विकल्प दें किसी और के बदलाव को ओवरराइट करना।
मैंने एक फ़ील्ड is_locked
और lock_timestamp
DB तालिका में जोड़ने के बारे में सोचा । जब कोई उपयोगकर्ता आइटम को संपादित करना शुरू करता है तो पंक्ति is_locked
सही में बदल जाती है और वर्तमान समय में लॉक टाइमस्टैम्प को सेट कर देती है। फिर मेरे पास कुछ समय होगा, जिसके लिए लॉक रखा गया है (उदाहरण 5 मिनट)। यदि कोई अन्य व्यक्ति आइटम को संपादित करने की कोशिश करता है, तो उन्हें एक संदेश प्राप्त होता है जिसमें कहा जाता है कि आइटम लॉक है और जब लॉक स्वचालित रूप से समाप्त हो जाता है। यदि उपयोगकर्ता संपादन करते समय दूर चला जाता है, तो ताला अपेक्षाकृत समय की अवधि के बाद स्वचालित रूप से समाप्त हो जाएगा और एक बार ऐसा होने पर उपयोगकर्ता को चेतावनी दी जाएगी कि ताला समाप्त हो गया है और डेटा ताज़ा होने के बाद संपादन को फिर से शुरू करने के लिए मजबूर किया जाएगा।
क्या यह ओवर राइटिंग डेटा को रोकने के लिए एक अच्छा तरीका होगा? क्या यह ओवरकिल है (मुझे उम्मीद नहीं है कि इस एप्लिकेशन का उपयोग एक ही खाते में कुछ से अधिक लोगों द्वारा समवर्ती रूप से किया जाएगा)।
(मेरे पास एक और चिंता 2 लोगों को एक ही आइटम के लिए लॉक मिलने की है, हालांकि मेरा मानना है कि एक दौड़ की स्थिति है, जिसके साथ मैं सहज हूं।)