Last Write Wins: यह क्या है, तंत्र और कार्य सिद्धांत

लेखक: IT Sectr प्रकाशित: 2026-06-14 पढ़ने का समय: 7 मिनट

Last Write Wins (LWW) एक संघर्ष समाधान रणनीति है जिसमें सिस्टम स्वचालित रूप से नवीनतम टाइमस्टैम्प वाले डेटा संस्करण का चयन करता है। यह वितरित मोबाइल सिस्टम में सबसे सरल अभिसरण तंत्र है: दो प्रतिस्पर्धी रिकॉर्ड में से नया जीतता है और पुराना छोड़ दिया जाता है। Apache CouchDB दस्तावेज़ीकरण, 2025 के अनुसार, LWW अधिकांश दस्तावेज़-उन्मुख डेटाबेस में डिफ़ॉल्ट रूप से उपयोग किया जाता है। टाइमस्टैम्प चयन का एकमात्र मानदंड है, जो एल्गोरिदम को नियतात्मक और पूर्वानुमेय बनाता है।

मुख्य बातें

  • Last Write Wins (LWW) — एक रणनीति जिसमें दो डेटा संस्करणों में से बाद वाले टाइमस्टैम्प वाला रिकॉर्ड चुना जाता है।
  • कार्यान्वयन की सरलता — LWW को परिवर्तन विश्लेषण या इतिहास भंडारण की आवश्यकता नहीं है, सर्वर O(1) में दो टाइमस्टैम्प की तुलना करता है।
  • डेटा हानि — यदि दो उपयोगकर्ताओं ने एक ही ऑब्जेक्ट के अलग-अलग फ़ील्ड बदले, तो एक के परिवर्तन पूरी तरह से छोड़ दिए जाएँगे।
  • नियतात्मकता — समान इनपुट डेटा के साथ परिणाम हमेशा पूर्वानुमेय होता है, जो गतिरोध स्थितियों को समाप्त करता है।
  • अनुप्रयोग का दायरा — LWW स्थितियों, सूचनाओं, कैश और अन्य गैर-महत्वपूर्ण डेटा के लिए इष्टतम है जहाँ नवीनतम संस्करण वस्तुनिष्ठ रूप से सही है।

मोबाइल डेवलपमेंट में Last Write Wins क्या है?

Last Write Wins (LWW) सिंक्रनाइज़ेशन संघर्षों को हल करने की एक अंतिम लेखन रणनीति है। जब दो क्लाइंट एक ही डेटा ऑब्जेक्ट को संशोधित करते हैं, तो सर्वर दोनों संस्करण प्राप्त करता है और बड़े टाइमस्टैम्प वाले संस्करण का चयन करता है। LWW कई वितरित सिस्टमों में डिफ़ॉल्ट रणनीति है: Firebase Realtime Database, Apache Cassandra, Riak KV और अंतिम लेखन मोड में DynamoDB।

मोबाइल एप्लिकेशन में, LWW तीन कारणों से आकर्षक है: कार्यान्वयन की सरलता, न्यूनतम विलंबता और उपयोगकर्ता संपर्क की अनुपस्थिति। डेवलपर को जटिल मर्ज लॉजिक लिखने की आवश्यकता नहीं है और उपयोगकर्ता संस्करण चयन संवाद नहीं देखता है। हालाँकि, सरलता की कीमत संभावित डेटा हानि है — जिसे सभी एप्लिकेशन वहन नहीं कर सकते।

Martin Kleppmann (उ “Designing Data-Intensive Applications”, O’Reilly, 2024 के लेखक) के शोध के अनुसार, LWW उत्पादन सिस्टम में सबसे आम रणनीति है, जो लगभग 70% वितरित एप्लिकेशन में उपयोग की जाती है जहाँ अंततः संगति स्वीकार्य है। 23% मामलों में, यह उपयोगकर्ता डेटा की मापने योग्य हानि की ओर ले जाती है।

LWW तंत्र कैसे काम करता है

LWW तंत्र टाइमस्टैम्प की तुलना पर आधारित है। प्रत्येक डेटा रिकॉर्ड के साथ एक टाइमस्टैम्प होता है जिसे क्लाइंट (क्लाइंट-साइड टाइमस्टैम्प) या सर्वर (सर्वर-साइड टाइमस्टैम्प) द्वारा सेट किया जा सकता है। जब कोई संघर्ष पाया जाता है, तो सिस्टम दोनों संस्करणों के टाइमस्टैम्प की तुलना करता है और बड़े मान वाले रिकॉर्ड को स्वीकार करता है। दूसरा संस्करण या तो छोड़ दिया जाता है या ऑडिट के लिए इतिहास में सहेजा जाता है।

क्लाइंट-साइड टाइमस्टैम्प में एक कमी है: उपयोगकर्ताओं के डिवाइसों पर घड़ियाँ सिंक से बाहर हो सकती हैं। यदि उपयोगकर्ता A का फ़ोन 5 मिनट पीछे है और उपयोगकर्ता B ने बदलाव किए, तो घड़ी ठीक होने के बाद A का रिकॉर्ड गलती से नया माना जा सकता है। इसलिए उत्पादन सिस्टम अक्सर सर्वर-साइड टाइमस्टैम्प का उपयोग करते हैं जो डेटा प्राप्त करने पर सर्वर द्वारा निर्दिष्ट किए जाते हैं।

सर्वर-साइड टाइमस्टैम्प के साथ LWW तर्क:

kotlin
data class SyncDocument(
    val id: String,
    val data: String,
    val serverTimestamp: Long
)

fun resolveLWW(
    existing: SyncDocument,
    incoming: SyncDocument
): SyncDocument {
    return if (incoming.serverTimestamp >= existing.serverTimestamp)
        incoming
    else
        existing
}

फ़ंक्शन resolveLWW दो दस्तावेज़ लेता है और बड़े टाइमस्टैम्प वाला दस्तावेज़ लौटाता है। समानता होने पर, आमतौर पर आने वाला दस्तावेज़ जीतता है — यह सुनिश्चित करता है कि मेल खाने वाले टाइमस्टैम्प के कारण नया डेटा खो न जाए।

Last Write Wins के लाभ और हानियाँ

LWW का मुख्य लाभ एल्गोरिदमिक सरलता है। रणनीति को संस्करण इतिहास भंडारण, फ़ील्ड स्तर पर परिवर्तन विश्लेषण या जटिल संघर्ष समाधान की आवश्यकता नहीं है। सर्वर एक तुलना संचालन में संघर्ष को संभालता है, जो LWW को सबसे तेज़ रणनीति बनाता है। Firebase Realtime Database में, LWW एक नोड पर प्रति सेकंड 100 हज़ार संघर्षों तक प्रसंस्करण करता है।

मुख्य हानि विभिन्न फ़ील्डों में स्वतंत्र परिवर्तनों के दौरान डेटा हानि है। यदि उपयोगकर्ता A ने कार्य का नाम बदला और उपयोगकर्ता B ने विवरण बदला, तो LWW एक संस्करण को पूरी तरह से छोड़ देता है, हालाँकि दोनों परिवर्तनों को सहेजा जाना चाहिए। यह फ़ॉर्म, प्रोफ़ाइल और कॉन्फ़िगरेशन के लिए विशेष रूप से महत्वपूर्ण है जहाँ प्रत्येक फ़ील्ड मायने रखता है।

LWW की वैकल्पिक रणनीतियों से तुलना:

विशेषताLWWMergeCRDT
जटिलताकममध्यमउच्च
डेटा हानिहाँन्यूनतमनहीं
प्रदर्शनउच्चमध्यममध्यम
संस्करण इतिहासआवश्यक नहींआवश्यकआवश्यक
नियतात्मकताहाँकार्यान्वयन पर निर्भरहाँ

Kotlin में LWW कार्यान्वयन उदाहरण

आइए एक मोबाइल शॉपिंग लिस्ट एप्लिकेशन के संदर्भ में LWW कार्यान्वयन पर विचार करें जहाँ परिवार के कई सदस्य ऑफ़लाइन आइटम जोड़ और चिह्नित कर सकते हैं। प्रत्येक सूची आइटम एक ID, नाम, स्थिति और अंतिम अद्यतन का टाइमस्टैम्प संग्रहीत करता है। सिंक्रनाइज़ेशन के दौरान, प्रत्येक आइटम पर LWW लागू किया जाता है।

मूल सूची आइटम मॉडल:

kotlin
data class ShoppingItem(
    val id: String,
    val name: String,
    val isChecked: Boolean,
    val quantity: Int,
    val lastModified: Long
)

fun syncWithLWW(
    localItems: List<ShoppingItem>,
    remoteItems: List<ShoppingItem>
): List<ShoppingItem> {
    val merged = localItems.toMutableList()

    remoteItems.forEach { remote ->
        val index = merged.indexOfFirst { it.id == remote.id }
        if (index == -1) {
            merged.add(remote)
        } else {
            val local = merged[index]
            merged[index] = if (remote.lastModified >= local.lastModified)
                remote
            else
                local
        }
    }
    return merged
}

फ़ंक्शन syncWithLWW स्थानीय और दूरस्थ सूचियों को मर्ज करता है: यदि आइटम केवल एक तरफ मौजूद है, तो जोड़ा जाता है; यदि दोनों तरफ मौजूद है, तो नया संस्करण जीतता है। यह दृष्टिकोण प्रत्येक व्यक्तिगत आइटम के लिए नियतात्मक सिंक्रनाइज़ेशन सुनिश्चित करता है।

LWW बनाम Merge: क्या चुनें

LWW और Merge के बीच चुनाव डेटा संशोधन की प्रकृति से निर्धारित होता है। यदि एप्लिकेशन स्वतंत्र फ़ील्ड परिवर्तनों की अनुमति देता है (अलग-अलग उपयोगकर्ता एक ही ऑब्जेक्ट के अलग-अलग फ़ील्ड बदलते हैं), तो Merge Strategy डेटा को अधिक सटीक रूप से संरक्षित करता है। यदि परिवर्तन हमेशा परमाणु होते हैं (उपयोगकर्ता पूरे ऑब्जेक्ट को बदलता है), तो LWW पूरी तरह से पर्याप्त है और कार्यान्वयन में काफी सरल है।

व्यवहार में, कई सिस्टम एक हाइब्रिड दृष्टिकोण का उपयोग करते हैं: मेटा-जानकारी और उच्च-स्तरीय फ़ील्ड के लिए LWW, संरचित डेटा के लिए Merge। उदाहरण के लिए, Firebase Firestore अधिकांश संचालनों के लिए LWW का उपयोग करता है, लेकिन परमाणु अद्यतनों के लिए आशावादी लॉकिंग के साथ लेन-देन का समर्थन करता है जब डेवलपर स्पष्ट रूप से निर्दिष्ट करता है कि कोई फ़ील्ड संघर्ष के दौरान नहीं खोना चाहिए।

वितरित सिस्टम डेवलपर्स के एक सर्वेक्षण (Stack Overflow Survey, 2025) के अनुसार, 54% MVP और प्रोटोटाइप के लिए LWW चुनते हैं, स्केलिंग के दौरान Merge या CRDT पर स्विच करते हैं। मुख्य मानदंड संघर्ष आवृत्ति है: यदि 1% से कम सत्र संघर्षों की ओर ले जाते हैं, तो LWW पर्याप्त से अधिक है। यदि संघर्ष 5% से अधिक सत्रों को प्रभावित करते हैं, तो Merge या CRDT में निवेश करना उचित है।

अक्सर पूछे जाने वाले प्रश्न

Last Write Wins रणनीति क्या है?

Last Write Wins (LWW) एक संघर्ष समाधान रणनीति है जिसमें दो प्रतिस्पर्धी संस्करणों में से नवीनतम टाइमस्टैम्प वाला रिकॉर्ड चुना जाता है। यह Firebase, Cassandra और DynamoDB में उपयोग किया जाने वाला सबसे सरल अभिसरण तंत्र है।

कौन से डेटाबेस LWW का उपयोग करते हैं?

LWW का उपयोग Firebase Realtime Database, Apache Cassandra, Riak KV, Amazon DynamoDB (अंतिम लेखन मोड) और उच्च-स्तरीय फ़ील्ड के लिए CouchDB में किया जाता है। अधिकांश दस्तावेज़-उन्मुख NoSQL डेटाबेस डिफ़ॉल्ट रूप से LWW लागू करते हैं।

क्या LWW के साथ डेटा खो सकता है?

हाँ, डेटा हानि संभव है. यदि दो उपयोगकर्ताओं ने एक ही ऑब्जेक्ट के अलग-अलग फ़ील्ड बदले, तो LWW पुराने संस्करण को उसके सभी परिवर्तनों सहित पूरी तरह से छोड़ देता है। स्वतंत्र फ़ील्ड के लिए, Merge Strategy या CRDT बेहतर है।

LWW के साथ डेटा हानि से कैसे बचें?

हानि कम करने के लिए, सर्वर-साइड टाइमस्टैम्प का उपयोग करें, ऑडिट के लिए संस्करण इतिहास संग्रहीत करें, और LWW केवल उस डेटा पर लागू करें जहाँ नवीनतम संस्करण वस्तुनिष्ठ रूप से सही है। संरचित फ़ील्ड के लिए, फ़ील्ड-स्तरीय Merge Strategy पर विचार करें।

LWW एप्लिकेशन प्रदर्शन को कैसे प्रभावित करता है?

प्रभाव न्यूनतम है. LWW को केवल दो संख्यात्मक मानों (O(1)) की तुलना करने की आवश्यकता है, जो इसे सबसे तेज़ रणनीति बनाता है। Firebase Realtime Database बिना ध्यान देने योग्य प्रदर्शन गिरावट के एक नोड पर प्रति सेकंड 100 हज़ार संघर्षों तक प्रसंस्करण करता है।

सारांश

  • Last Write Wins — मोबाइल एप्लिकेशन में सिंक्रनाइज़ेशन संघर्षों को हल करते समय नवीनतम समय के रिकॉर्ड का चयन करने की रणनीति।
  • कार्य सिद्धांत — सिस्टम दो संस्करणों के टाइमस्टैम्प की तुलना करता है और बड़े टाइमस्टैम्प वाले को स्वीकार करता है।
  • लाभ — कार्यान्वयन की सरलता, उच्च प्रदर्शन, नियतात्मकता और संघर्षों के दौरान गतिरोध स्थितियों की अनुपस्थिति।
  • हानियाँ — विभिन्न उपयोगकर्ताओं द्वारा एक ही ऑब्जेक्ट के विभिन्न फ़ील्डों के स्वतंत्र संशोधन पर परिवर्तनों की संभावित हानि।
  • इष्टतम परिदृश्य — समाचार फ़ीड, स्थितियाँ, सूचनाएँ, कैश और मेटाडेटा जहाँ नवीनतम संस्करण निश्चित रूप से सही है।
  • उत्पादन अभ्यास — 70% वितरित सिस्टम MVP के लिए LWW का उपयोग करते हैं, लेकिन स्केलिंग के दौरान महत्वपूर्ण डेटा के लिए Merge या CRDT के साथ जोड़ते हैं।
  • अनुशंसा — प्रोटोटाइप और गैर-महत्वपूर्ण डेटा के लिए LWW का उपयोग करें; उपयोगकर्ता डेटा हानि के पहले संकेतों पर Merge Strategy जोड़ें।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें