लेन-देन का क्रम संख्या और आइसोलेशन

इस पेज में लेन-देन से जुड़े डेटा के विवाद, क्रम के हिसाब से होने की सुविधा, और आइसोलेशन. ट्रांज़ैक्शन कोड के सैंपल देखने के लिए देखें लेन-देन और बैच में लिखे गए लिखित संदेश शामिल हैं.

लेन-देन और डेटा से जुड़ा विवाद

लेन-देन पूरा होने के लिए, रीड ऑपरेशन की मदद से मिले दस्तावेज़ लेन-देन के बाहर की कार्रवाइयों में कोई बदलाव नहीं होना चाहिए. अगर कोई अन्य यह कार्रवाई, उनमें से किसी एक दस्तावेज़ को बदलने की कोशिश करती है. लेन-देन के डेटा से जुड़ी विवाद की स्थिति.

डेटा से जुड़ा विवाद
जब दो या दो से ज़्यादा कार्रवाइयां, एक ही दस्तावेज़ को कंट्रोल करने के लिए मुकाबला करती हैं. उदाहरण के लिए, एक ट्रांज़ैक्शन के लिए, एक ही समय पर अलग-अलग ट्रांज़ैक्शन के लिए दस्तावेज़ की ज़रूरत पड़ सकती है ऑपरेशन उस दस्तावेज़ के फ़ील्ड मानों को अपडेट करने का प्रयास करता है.

Cloud Firestore, इनमें से किसी एक को रोककर या फ़ेल करके, डेटा से जुड़े विवाद को हल करता है कार्रवाइयां. Cloud Firestore की क्लाइंट लाइब्रेरी डेटा विवाद की वजह से पूरे न हो पाने वाले ट्रांज़ैक्शन की अपने-आप फिर से कोशिश करें. एक फिर से कोशिश करने की सीमित संख्या होने पर, लेन-देन पूरा नहीं होता और इसकी वजह से गड़बड़ी का मैसेज मिलता है संदेश:

ABORTED: Too much contention on these documents. Please try again.

यह तय करते समय कि कौन-सा संचालन विफल होना है या जिसे विलंब करना है, व्यवहार उस प्रक्रिया पर निर्भर करता है क्लाइंट लाइब्रेरी पर जाएं.

  • मोबाइल/वेब SDK टूल में, उम्मीद के हिसाब से एक साथ कई काम करने के SDK टूल इस्तेमाल किए जाते हैं नियंत्रण.

  • सर्वर क्लाइंट लाइब्रेरी, एक साथ कई काम करने वाले (पाससिमिस्टिक) कंट्रोल का इस्तेमाल करती हैं.

मोबाइल/वेब SDK टूल में डेटा से जुड़ा विवाद

मोबाइल/वेब SDK टूल (Apple प्लैटफ़ॉर्म, Android, वेब, C++), बेहतर और सटीक एक साथ काम करने की सेटिंग का इस्तेमाल इन कामों के लिए करते हैं डेटा से जुड़ी समस्या का समाधान करें.

ऑप्टिमिस्टिक कॉनकरंसी कंट्रोल
इस अनुमान पर आधारित है कि डेटा के लिए विवाद नहीं है या ऐसा नहीं है और डेटाबेस लॉक बनाए रखने में काफ़ी आसान है. ऑप्टिमिस्टिक ट्रांज़ैक्शन में डेटाबेस का इस्तेमाल नहीं होता अन्य कार्रवाइयों को डेटा बदलने से रोकने के लिए लॉक करता है.

मोबाइल/वेब SDK टूल, ऐसे कंट्रोल का इस्तेमाल करते हैं जो एक साथ कई काम कर सकते हैं. ऐसा इसलिए, क्योंकि जिनमें इंतज़ार का समय ज़्यादा हो और इंटरनेट कनेक्शन ठीक से काम न करता हो. लॉक किया जा रहा है अगर दस्तावेज़ों में इंतज़ार का समय ज़्यादा है, तो डेटा को लेकर कई तरह के विवाद हो सकते हैं कोई गड़बड़ी हुई.

मोबाइल/वेब SDK टूल में, लेन-देन उन सभी दस्तावेज़ों पर नज़र रखता है जिन्हें आपने पढ़ा है लेन-देन के अंदर जोड़ा जा सकता है. लेन-देन सिर्फ़ लिखने के लिए ऑपरेशन का इस्तेमाल करता है अगर लेन-देन के दौरान इनमें से किसी भी दस्तावेज़ में बदलाव नहीं हुआ हो. अगर कोई है दस्तावेज़ में कोई बदलाव हुआ है, तो लेन-देन हैंडलर ने फिर से लेन-देन करने की कोशिश की है. अगर आपने फिर से कोशिश करने के बाद भी लेन-देन सही नतीजे न मिले, तो डेटा विवाद के कारण विफल हो जाता है.

सर्वर क्लाइंट लाइब्रेरी में डेटा से जुड़ा विवाद

सर्वर क्लाइंट लाइब्रेरी (C#, Go, Java, Node.js, PHP, Python, Ruby) इन लाइब्रेरी का इस्तेमाल करती है इस सुविधा की मदद से, डेटा से जुड़ी समस्या को हल किया जा सकता है.

पेसिमिस्टिक कॉन करंसी कंट्रोल
इस अनुमान के आधार पर कि डेटा के बीच विवाद हो सकता है. निराशावादी अन्य कार्रवाइयों को डेटा में बदलाव करने से रोकने के लिए, ट्रांज़ैक्शन डेटाबेस लॉक का इस्तेमाल करते हैं.

सर्वर क्लाइंट लाइब्रेरी में, एक साथ काम न करने वाले और एक साथ काम न करने वाले कंट्रोल इस्तेमाल किए जाते हैं, क्योंकि वे इंतज़ार का समय कम होना और डेटाबेस से एक भरोसेमंद कनेक्शन की उम्मीद करना.

सर्वर क्लाइंट लाइब्रेरी में, लेन-देन उन दस्तावेज़ों पर लॉक हो जाता है जिनमें वे पढ़ें. किसी दस्तावेज़ पर लेन-देन का लॉक दिखने से, अन्य लेन-देन ब्लॉक होते हैं, और ग़ैर-लेनदेन किए गए काॅन्टेंट को शामिल नहीं करता है. ऐप्लिकेशन लेन-देन तय समय पर अपने दस्तावेज़ लॉक रिलीज़ करता है. यह भी समय खत्म होने पर या किसी वजह से लॉक न हो पाने पर, अपने लॉक को हटा देता है.

जब कोई लेन-देन किसी दस्तावेज़ को लॉक करता है, तो अन्य लेखन संक्रियाओं को लेन-देन का लॉक हटाया जा सकता है. लेन-देन की वजह से उनके लॉक की स्थिति समय के हिसाब से.

क्रम से लगाया जा सकने वाला आइसोलेशन

लेन-देन के बीच डेटा को लेकर विवाद, डेटाबेस आइसोलेशन से काफ़ी हद तक जुड़ा है लेवल. डेटाबेस के अलग-अलग आइसोलेशन लेवल से पता चलता है कि सिस्टम कितनी अच्छी तरह से काम कर रहा है समवर्ती कार्रवाइयों के बीच के विरोधों का सामना करता है. विरोध यहां से आता है ये डेटाबेस की ज़रूरी शर्तें:

  • लेन-देन के लिए, सटीक और एक जैसा डेटा चाहिए.
  • संसाधनों का बेहतर तरीके से इस्तेमाल करने के लिए, डेटाबेस एक साथ कार्रवाइयां करते हैं.

लो आइसोलेशन लेवल वाले सिस्टम में, लेन-देन में ही एक रीड ऑपरेशन किसी एक साथ होने वाले बदलाव न होने की वजह से, गलत डेटा दिख सकता है कार्रवाई.

क्रम से लगाया जा सकने वाला आइसोलेशन, सबसे ज़्यादा आइसोलेशन लेवल के बारे में बताता है. क्रम से लगाया जा सकता है आइसोलेशन का मतलब है:

  • यह माना जा सकता है कि डेटाबेस, सीरीज़ में ट्रांज़ैक्शन करता है.
  • एक साथ की जाने वाली कार्रवाइयों में कोई बदलाव न करने से, लेन-देन पर कोई असर नहीं पड़ता है.

यह गारंटी तब भी लागू होनी चाहिए, जब डेटाबेस कई लेन-देन साथ-साथ होने चाहिए. डेटाबेस को समवर्ती कंट्रोल लागू करने होंगे, ताकि ऐसे विवादों का समाधान करें जो इस गारंटी को भंग करेंगे.

Cloud Firestore, लेन-देन को क्रम से अलग-अलग करने की गारंटी देता है. Cloud Firestore में लेन-देन को सीरियल के हिसाब से और अलग-अलग रखा गया है समय.

तय समय के हिसाब से, क्रम से लगाने लायक आइसोलेशन

Cloud Firestore हर लेन-देन के लिए एक तय समय असाइन करता है, जो का समय है. जब Cloud Firestore किसी लेन-देन पर डेटाबेस में बदलाव करता है, तो आपके पास यह मान लेने का विकल्प होता है कि लेन-देन ठीक तय समय पर होता है.

लेन-देन के पूरा होने में कुछ समय लगता है. किसी नीति का पालन ट्रांज़ैक्शन तय समय से पहले शुरू होता है और कार्रवाइयां ओवरलैप हो सकती हैं. Cloud Firestore, सीरियल के हिसाब से आइसोलेशन की सुविधा देता है और गारंटी देता है कि:

  • Cloud Firestore, तय किए गए समय के हिसाब से लेन-देन करता है.
  • Cloud Firestore, एक साथ होने वाले लेन-देन को अलग करता है कार्रवाइयां, जो बाद में लागू होती हैं.

एक साथ काम करने वाली कार्रवाइयों के बीच डेटा के विवाद के मामले में, Cloud Firestore, विवाद सुलझाने के लिए उम्मीद वाले और उम्मीद से जुड़े विकल्पों का इस्तेमाल करता है.

लेन-देन में अलग-अलग लोगों को शामिल करना

ट्रांज़ैक्शन आइसोलेशन, ट्रांज़ैक्शन के तहत की जाने वाली कार्रवाइयों पर भी लागू होता है. ट्रांज़ैक्शन में क्वेरी और रीड के पिछले नतीजों के नतीजे नहीं दिखते उस लेन-देन के अंदर दिखेगा. भले ही आप किसी दस्तावेज़ में बदलाव करें या उसे हटाएं लेन-देन, उस लेन-देन में पढ़े गए सभी दस्तावेज़ लेन-देन के लेखन संक्रियाओं से पहले, कम समय में दस्तावेज़. अगर दस्तावेज़ मौजूद नहीं है, तो रीड ऑपरेशन कुछ भी नहीं लौटाता.

डेटा के विवाद से जुड़ी समस्याएं

डेटा के विवाद और उसे हल करने के तरीके के बारे में ज़्यादा जानने के लिए, समस्या हल करने वाला पेज देखें.