इस पेज में लेन-देन से जुड़े डेटा के विवाद, क्रम के हिसाब से होने की सुविधा, और आइसोलेशन. ट्रांज़ैक्शन कोड के सैंपल देखने के लिए देखें लेन-देन और बैच में लिखे गए लिखित संदेश शामिल हैं.
लेन-देन और डेटा से जुड़ा विवाद
लेन-देन पूरा होने के लिए, रीड ऑपरेशन की मदद से मिले दस्तावेज़ लेन-देन के बाहर की कार्रवाइयों में कोई बदलाव नहीं होना चाहिए. अगर कोई अन्य यह कार्रवाई, आपके दस्तावेज़ में मौजूद किसी एक दस्तावेज़ को बदलने की कोशिश करती है. ट्रांज़ैक्शन के डेटा को लेकर विवाद की स्थिति.
- डेटा से जुड़ा विवाद
- जब दो या दो से ज़्यादा कार्रवाइयां, एक ही दस्तावेज़ को कंट्रोल करने के लिए मुकाबला करती हैं. उदाहरण के लिए, एक ट्रांज़ैक्शन के लिए, एक ही समय पर अलग-अलग ट्रांज़ैक्शन के लिए दस्तावेज़ की ज़रूरत पड़ सकती है ऑपरेशन उस दस्तावेज़ के फ़ील्ड मानों को अपडेट करने का प्रयास करता है.
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 विवाद को हल करने के लिए, आशावादी और निराशावादी एक साथ काम करने वाले कंट्रोल का इस्तेमाल करता है.
लेन-देन में अलग-अलग लोगों को शामिल करना
ट्रांज़ैक्शन आइसोलेशन, ट्रांज़ैक्शन के तहत की जाने वाली कार्रवाइयों पर भी लागू होता है. ट्रांज़ैक्शन में क्वेरी और रीड के पिछले नतीजों के नतीजे नहीं दिखते उस लेन-देन के अंदर दिखेगा. भले ही, आपने किसी लेन-देन में किसी दस्तावेज़ में बदलाव किया हो या उसे मिटाया हो, लेकिन उस लेन-देन में दस्तावेज़ को पढ़ने पर, आपको दस्तावेज़ का वह वर्शन दिखेगा जो लेन-देन के लिखने के ऑपरेशन से पहले, कमिट किए जाने के समय मौजूद था. अगर दस्तावेज़ उस समय मौजूद नहीं था, तो पढ़ने की कार्रवाई से कोई नतीजा नहीं मिलता.
डेटा के विवाद से जुड़ी समस्याएं
डेटा के विवाद और उसे हल करने के तरीके के बारे में ज़्यादा जानने के लिए, समस्या हल करने वाला पेज देखें.