बड़े पैमाने पर पढ़ने और लिखने को समझें

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

क्लाउड फायरस्टोर फायरबेस और गूगल क्लाउड से मोबाइल डिवाइस, वेब और सर्वर विकास के लिए एक लचीला, स्केलेबल डेटाबेस है। क्लाउड फायरस्टोर के साथ शुरुआत करना और समृद्ध और शक्तिशाली एप्लिकेशन लिखना बहुत आसान है।

यह सुनिश्चित करने के लिए कि आपके डेटाबेस आकार और ट्रैफ़िक में वृद्धि के साथ आपके एप्लिकेशन अच्छा प्रदर्शन करते रहें, यह क्लाउड फायरस्टोर बैकएंड में पढ़ने और लिखने की प्रक्रिया को समझने में मदद करता है। आपको भंडारण परत के साथ अपने पढ़ने और लिखने की परस्पर क्रिया और अंतर्निहित बाधाओं को भी समझना चाहिए जो प्रदर्शन को प्रभावित कर सकते हैं।

अपने एप्लिकेशन को आर्किटेक्चर करने से पहले सर्वोत्तम प्रथाओं के लिए निम्नलिखित अनुभाग देखें।

उच्च स्तरीय घटकों को समझें

निम्नलिखित आरेख क्लाउड फायरस्टोर एपीआई अनुरोध में शामिल उच्च स्तरीय घटकों को दिखाता है।

उच्च स्तरीय घटक

क्लाउड फायरस्टोर एसडीके और क्लाइंट लाइब्रेरी

क्लाउड फायरस्टोर विभिन्न प्लेटफार्मों के लिए एसडीके और क्लाइंट लाइब्रेरी का समर्थन करता है। जबकि एक ऐप क्लाउड फायरस्टोर एपीआई पर सीधे HTTP और RPC कॉल कर सकता है, क्लाइंट लाइब्रेरी एपीआई उपयोग को सरल बनाने और सर्वोत्तम प्रथाओं को लागू करने के लिए अमूर्तता की एक परत प्रदान करती है। वे ऑफ़लाइन पहुंच, कैश इत्यादि जैसी अतिरिक्त सुविधाएं भी प्रदान कर सकते हैं।

गूगल फ्रंट एंड (जीएफई)

यह सभी Google क्लाउड सेवाओं के लिए सामान्य बुनियादी ढांचा सेवा है। जीएफई आने वाले अनुरोधों को स्वीकार करता है और उन्हें संबंधित Google सेवा (इस संदर्भ में फायरस्टोर सेवा) को अग्रेषित करता है। यह अन्य महत्वपूर्ण कार्यक्षमताएँ भी प्रदान करता है, जिसमें सेवा से इनकार के हमलों से सुरक्षा भी शामिल है।

क्लाउड फायरस्टोर सेवा

क्लाउड फायरस्टोर सेवा एपीआई अनुरोध पर जांच करती है, जिसमें प्रमाणीकरण, प्राधिकरण, कोटा जांच और सुरक्षा नियम शामिल हैं, और लेनदेन का प्रबंधन भी करती है। इस क्लाउड फायरस्टोर सेवा में एक स्टोरेज क्लाइंट शामिल है जो डेटा को पढ़ने और लिखने के लिए स्टोरेज लेयर के साथ इंटरैक्ट करता है।

क्लाउड फायरस्टोर भंडारण परत

क्लाउड फायरस्टोर स्टोरेज परत डेटा और मेटाडेटा, और क्लाउड फायरस्टोर द्वारा प्रदान की गई संबंधित डेटाबेस सुविधाओं दोनों को संग्रहीत करने के लिए जिम्मेदार है। निम्नलिखित अनुभाग बताते हैं कि क्लाउड फायरस्टोर स्टोरेज लेयर में डेटा कैसे व्यवस्थित किया जाता है और सिस्टम कैसे स्केल करता है। डेटा कैसे व्यवस्थित किया जाता है, इसके बारे में सीखने से आपको एक स्केलेबल डेटा मॉडल डिज़ाइन करने और क्लाउड फायरस्टोर में सर्वोत्तम प्रथाओं को बेहतर ढंग से समझने में मदद मिल सकती है।

मुख्य श्रेणियाँ और विभाजन

क्लाउड फायरस्टोर एक NoSQL, दस्तावेज़-उन्मुख डेटाबेस है। आप दस्तावेज़ों में डेटा संग्रहीत करते हैं, जो संग्रह के पदानुक्रम में व्यवस्थित होते हैं। संग्रह पदानुक्रम और दस्तावेज़ आईडी को प्रत्येक दस्तावेज़ के लिए एक ही कुंजी में अनुवादित किया जाता है। इस एकल कुंजी द्वारा दस्तावेज़ों को तार्किक रूप से संग्रहीत और शब्दकोषीय रूप से क्रमबद्ध किया जाता है। हम शब्दकोषीय रूप से कुंजी की सन्निहित श्रेणी को संदर्भित करने के लिए कुंजी श्रेणी शब्द का उपयोग करते हैं।

एक विशिष्ट क्लाउड फायरस्टोर डेटाबेस एक भौतिक मशीन पर फिट होने के लिए बहुत बड़ा है। ऐसे परिदृश्य भी हैं जहां डेटा पर काम का बोझ एक मशीन के लिए बहुत अधिक है। बड़े कार्यभार को संभालने के लिए, क्लाउड फायरस्टोर डेटा को अलग-अलग टुकड़ों में विभाजित करता है जिन्हें कई मशीनों या स्टोरेज सर्वर पर संग्रहीत और परोसा जा सकता है। ये विभाजन डेटाबेस तालिकाओं पर प्रमुख श्रेणियों के ब्लॉक में बनाए जाते हैं जिन्हें स्प्लिट्स कहा जाता है।

तुल्यकालिक प्रतिकृति

यह ध्यान रखना महत्वपूर्ण है कि डेटाबेस को हमेशा स्वचालित रूप से और समकालिक रूप से दोहराया जा रहा है। डेटा के विभाजनों की प्रतिकृतियां अलग-अलग क्षेत्रों में होती हैं ताकि कोई क्षेत्र दुर्गम हो जाने पर भी उन्हें उपलब्ध रखा जा सके। विभाजन की विभिन्न प्रतियों की सुसंगत प्रतिकृति को आम सहमति के लिए पैक्सोस एल्गोरिदम द्वारा प्रबंधित किया जाता है। प्रत्येक विभाजन की एक प्रतिकृति को पैक्सोस नेता के रूप में कार्य करने के लिए चुना जाता है, जो उस विभाजन को लिखने से निपटने के लिए जिम्मेदार है। सिंक्रोनस प्रतिकृति आपको क्लाउड फायरस्टोर से डेटा के नवीनतम संस्करण को हमेशा पढ़ने में सक्षम होने की क्षमता देती है।

इसका समग्र परिणाम एक स्केलेबल और अत्यधिक उपलब्ध प्रणाली है जो भारी कार्यभार के बावजूद और बहुत बड़े पैमाने पर पढ़ने और लिखने दोनों के लिए कम विलंबता प्रदान करती है।

डेटा लेआउट

क्लाउड फायरस्टोर एक स्कीमलेस दस्तावेज़ डेटाबेस है। हालाँकि, आंतरिक रूप से यह डेटा को मुख्य रूप से इसकी स्टोरेज परत में दो रिलेशनल डेटाबेस-शैली तालिकाओं में निम्नानुसार रखता है:

  • दस्तावेज़ तालिका: इस तालिका में दस्तावेज़ संग्रहीत किये जाते हैं।
  • अनुक्रमणिका तालिका: सूचकांक प्रविष्टियाँ जो परिणाम को कुशलतापूर्वक प्राप्त करना संभव बनाती हैं और सूचकांक मान के आधार पर क्रमबद्ध की जाती हैं, इस तालिका में संग्रहीत की जाती हैं।

निम्नलिखित आरेख दिखाता है कि क्लाउड फायरस्टोर डेटाबेस के लिए तालिकाएँ विभाजन के साथ कैसी दिख सकती हैं। विभाजन को तीन अलग-अलग क्षेत्रों में दोहराया जाता है और प्रत्येक विभाजन में एक निर्दिष्ट पैक्सोस नेता होता है।

डेटा लेआउट

एकल क्षेत्र बनाम बहु-क्षेत्र

जब आप डेटाबेस बनाते हैं, तो आपको एक क्षेत्र या बहु-क्षेत्र का चयन करना होगा।

एक एकल क्षेत्रीय स्थान एक विशिष्ट भौगोलिक स्थान है, जैसे यूएस-वेस्ट1 । जैसा कि पहले बताया गया है, क्लाउड फायरस्टोर डेटाबेस के डेटा के विभाजन की प्रतिकृतियां चयनित क्षेत्र के विभिन्न क्षेत्रों में होती हैं।

एक बहु-क्षेत्रीय स्थान में क्षेत्रों का एक परिभाषित सेट होता है जहां डेटाबेस की प्रतिकृतियां संग्रहीत की जाती हैं। क्लाउड फायरस्टोर की बहु-क्षेत्रीय तैनाती में, दो क्षेत्रों में डेटाबेस में संपूर्ण डेटा की पूर्ण प्रतिकृतियां होती हैं। तीसरे क्षेत्र में एक गवाह प्रतिकृति है जो डेटा का पूरा सेट नहीं रखती है, लेकिन प्रतिकृति में भाग लेती है। कई क्षेत्रों के बीच डेटा की प्रतिकृति बनाने से, संपूर्ण क्षेत्र के नष्ट होने पर भी डेटा लिखने और पढ़ने के लिए उपलब्ध होता है।

किसी क्षेत्र के स्थानों के बारे में अधिक जानकारी के लिए, क्लाउड फायरस्टोर स्थान देखें।

एकल क्षेत्र बनाम बहु-क्षेत्र

क्लाउड फायरस्टोर में एक लेख के जीवन को समझें

क्लाउड फायरस्टोर क्लाइंट किसी एकल दस्तावेज़ को बनाकर, अपडेट करके या हटाकर डेटा लिख ​​सकता है। किसी एकल दस्तावेज़ को लिखने के लिए भंडारण परत में दस्तावेज़ और उससे संबंधित सूचकांक प्रविष्टियों दोनों को परमाणु रूप से अद्यतन करने की आवश्यकता होती है। क्लाउड फायरस्टोर परमाणु संचालन का भी समर्थन करता है जिसमें एक या अधिक दस्तावेज़ों को एकाधिक पढ़ना और/या लिखना शामिल है।

सभी प्रकार के लेखन के लिए, क्लाउड फायरस्टोर संबंधपरक डेटाबेस के ACID गुण (परमाणुता, स्थिरता, अलगाव और स्थायित्व) प्रदान करता है। क्लाउड फायरस्टोर क्रमबद्धता भी प्रदान करता है, जिसका अर्थ है कि सभी लेनदेन ऐसे दिखाई देते हैं जैसे कि उन्हें क्रमबद्ध क्रम में निष्पादित किया गया हो।

लिखित लेन-देन में उच्च स्तरीय कदम

जब क्लाउड फायरस्टोर क्लाइंट पहले बताए गए किसी भी तरीके का उपयोग करके एक राइट जारी करता है या लेनदेन करता है, तो आंतरिक रूप से इसे स्टोरेज लेयर में डेटाबेस रीड-राइट लेनदेन के रूप में निष्पादित किया जाता है। लेन-देन क्लाउड फायरस्टोर को पहले उल्लिखित ACID गुण प्रदान करने में सक्षम बनाता है।

लेन-देन के पहले चरण के रूप में, क्लाउड फायरस्टोर मौजूदा दस्तावेज़ को पढ़ता है, और दस्तावेज़ तालिका में डेटा में किए जाने वाले उत्परिवर्तन को निर्धारित करता है।

इसमें निम्नानुसार अनुक्रमणिका तालिका में आवश्यक अद्यतन करना भी शामिल है:

  • दस्तावेज़ों में जोड़े जा रहे फ़ील्ड को इंडेक्स तालिका में संबंधित प्रविष्टियों की आवश्यकता होती है।
  • जिन फ़ील्ड्स को दस्तावेज़ों से हटाया जा रहा है, उन्हें इंडेक्स तालिका में संबंधित डिलीट की आवश्यकता है।
  • जिन फ़ील्ड्स को दस्तावेज़ों में संशोधित किया जा रहा है, उन्हें इंडेक्स तालिका में हटाने (पुराने मानों के लिए) और सम्मिलन (नए मानों के लिए) दोनों की आवश्यकता होती है।

पहले बताए गए म्यूटेशन की गणना करने के लिए, क्लाउड फायरस्टोर प्रोजेक्ट के लिए इंडेक्सिंग कॉन्फ़िगरेशन को पढ़ता है। इंडेक्सिंग कॉन्फ़िगरेशन किसी प्रोजेक्ट के लिए इंडेक्स के बारे में जानकारी संग्रहीत करता है। क्लाउड फायरस्टोर दो प्रकार के इंडेक्स का उपयोग करता है: सिंगल-फील्ड और कंपोजिट। क्लाउड फायरस्टोर में बनाए गए इंडेक्स की विस्तृत समझ के लिए, क्लाउड फायरस्टोर में इंडेक्स प्रकार देखें।

एक बार जब उत्परिवर्तन की गणना हो जाती है, तो क्लाउड फायरस्टोर उन्हें एक लेनदेन के अंदर एकत्र करता है और फिर इसे प्रतिबद्ध करता है।

स्टोरेज लेयर में राइट ट्रांजेक्शन को समझें

जैसा कि पहले चर्चा की गई है, क्लाउड फायरस्टोर में लिखने में स्टोरेज लेयर में रीड-राइट लेनदेन शामिल होता है। डेटा के लेआउट के आधार पर, एक लेखन में एक या अधिक विभाजन शामिल हो सकते हैं जैसा कि डेटा लेआउट में देखा गया है।

निम्नलिखित आरेख में, क्लाउड फायरस्टोर डेटाबेस में एक ही ज़ोन में तीन अलग-अलग स्टोरेज सर्वर पर आठ स्प्लिट (1-8 चिह्नित) होस्ट किए गए हैं, और प्रत्येक स्प्लिट को 3 (या अधिक) अलग-अलग ज़ोन में दोहराया गया है। प्रत्येक विभाजन में एक पैक्सोस नेता होता है, जो अलग-अलग विभाजन के लिए एक अलग क्षेत्र में हो सकता है।

क्लाउड फायरस्टोर डेटाबेस विभाजन

क्लाउड फायरस्टोर डेटाबेस पर विचार करें जिसमें Restaurants संग्रह इस प्रकार है:

रेस्तरां संग्रह

क्लाउड फायरस्टोर क्लाइंट priceCategory फ़ील्ड के मान को अपडेट करके Restaurant संग्रह में दस्तावेज़ में निम्नलिखित परिवर्तन का अनुरोध करता है।

संग्रह में किसी दस्तावेज़ में बदलें

निम्नलिखित उच्च-स्तरीय चरण वर्णन करते हैं कि लेखन के भाग के रूप में क्या होता है:

  1. पढ़ने-लिखने का लेन-देन बनाएं.
  2. स्टोरेज लेयर से दस्तावेज़ तालिका से Restaurants संग्रह में restaurant1 1 दस्तावेज़ पढ़ें।
  3. इंडेक्स तालिका से दस्तावेज़ के इंडेक्स पढ़ें।
  4. डेटा में किए जाने वाले उत्परिवर्तन की गणना करें। इस मामले में, पाँच उत्परिवर्तन हैं:
    • एम1: priceCategory फ़ील्ड के मूल्य में परिवर्तन को प्रतिबिंबित करने के लिए दस्तावेज़ तालिका में restaurant1 के लिए पंक्ति को अपडेट करें।
    • एम2 और एम3: अवरोही और आरोही सूचकांकों के लिए सूचकांक तालिका में priceCategory के पुराने मान की पंक्तियों को हटा दें।
    • एम4 और एम5: अवरोही और आरोही सूचकांकों के लिए सूचकांक तालिका में priceCategory के नए मूल्य के लिए पंक्तियाँ डालें।
  5. ये उत्परिवर्तन करें.

क्लाउड फायरस्टोर सेवा में स्टोरेज क्लाइंट उन विभाजनों को देखता है जिनके पास बदली जाने वाली पंक्तियों की कुंजियाँ होती हैं। आइए एक ऐसे मामले पर विचार करें जहां स्प्लिट 3 एम1 को परोसता है, और स्प्लिट 6 एम2-एम5 को परोसता है। एक वितरित लेनदेन है, जिसमें प्रतिभागियों के रूप में ये सभी विभाजन शामिल हैं। प्रतिभागी विभाजन में कोई अन्य विभाजन भी शामिल हो सकता है जिसमें से डेटा को पढ़ने-लिखने के लेनदेन के हिस्से के रूप में पहले पढ़ा गया था।

निम्नलिखित चरण बताते हैं कि प्रतिबद्धता के भाग के रूप में क्या होता है:

  1. स्टोरेज क्लाइंट एक कमिट जारी करता है। कमिट में उत्परिवर्तन M1-M5 शामिल हैं।
  2. विभाजन 3 और 6 इस लेनदेन में भागीदार हैं। प्रतिभागियों में से एक को समन्वयक के रूप में चुना जाता है, जैसे कि स्प्लिट 3. समन्वयक का काम यह सुनिश्चित करना है कि लेनदेन सभी प्रतिभागियों के बीच परमाणु रूप से प्रतिबद्ध या निरस्त हो।
    • इन विभाजनों के नेता प्रतिकृतियां प्रतिभागियों और समन्वयकों द्वारा किए गए कार्यों के लिए जिम्मेदार हैं।
  3. प्रत्येक प्रतिभागी और समन्वयक अपनी संबंधित प्रतिकृतियों के साथ एक पैक्सोस एल्गोरिदम चलाते हैं।
    • लीडर प्रतिकृतियों के साथ पैक्सोस एल्गोरिदम चलाता है। यदि अधिकांश प्रतिकृतियां नेता को प्रतिक्रिया ok to commit के साथ उत्तर देती हैं तो कोरम पूरा हो जाता है।
    • प्रत्येक प्रतिभागी तब समन्वयक को सूचित करता है जब वे तैयार होते हैं (दो चरण की प्रतिबद्धता का पहला चरण)। यदि कोई भी भागीदार लेन-देन नहीं कर पाता है, तो संपूर्ण लेन-देन aborts
  4. एक बार जब समन्वयक को पता चल जाता है कि सभी प्रतिभागी, जिसमें स्वयं भी शामिल है, तैयार हैं, तो वह सभी प्रतिभागियों को accept लेनदेन परिणाम के बारे में सूचित करता है (दो चरण की प्रतिबद्धता का दूसरा चरण)। इस चरण में, प्रत्येक भागीदार स्थिर भंडारण के लिए प्रतिबद्ध निर्णय को रिकॉर्ड करता है और लेनदेन प्रतिबद्ध होता है।
  5. समन्वयक क्लाउड फायरस्टोर में स्टोरेज क्लाइंट को जवाब देता है कि लेनदेन प्रतिबद्ध हो चुका है। समानांतर में, समन्वयक और सभी प्रतिभागी डेटा में उत्परिवर्तन लागू करते हैं।

जीवनचक्र प्रतिबद्ध करें

जब क्लाउड फायरस्टोर डेटाबेस छोटा होता है, तो ऐसा हो सकता है कि एक एकल विभाजन उत्परिवर्तन M1-M5 में सभी कुंजियों का स्वामी हो। ऐसे मामले में, लेन-देन में केवल एक भागीदार होता है और पहले उल्लिखित दो-चरण की प्रतिबद्धता की आवश्यकता नहीं होती है, इस प्रकार लेखन तेज हो जाता है।

बहु-क्षेत्र में लिखते हैं

बहु-क्षेत्रीय परिनियोजन में, विभिन्न क्षेत्रों में प्रतिकृतियों के प्रसार से उपलब्धता बढ़ जाती है, लेकिन प्रदर्शन लागत के साथ आता है। विभिन्न क्षेत्रों में प्रतिकृतियों के बीच संचार में अधिक समय लगता है। इसलिए, क्लाउड फायरस्टोर संचालन के लिए बेसलाइन विलंबता एकल क्षेत्र परिनियोजन की तुलना में थोड़ी अधिक है।

हम प्रतिकृतियों को इस तरह से कॉन्फ़िगर करते हैं कि विभाजन के लिए नेतृत्व हमेशा प्राथमिक क्षेत्र में बना रहे। प्राथमिक क्षेत्र वह है जहां से क्लाउड फायरस्टोर सर्वर पर ट्रैफ़िक आ रहा है। नेतृत्व का यह निर्णय क्लाउड फायरस्टोर में स्टोरेज क्लाइंट और रेप्लिका लीडर (या मल्टी-स्प्लिट लेनदेन के लिए समन्वयक) के बीच संचार में राउंड-ट्रिप देरी को कम करता है।

क्लाउड फायरस्टोर में प्रत्येक लेखन में क्लाउड फायरस्टोर में वास्तविक समय इंजन के साथ कुछ इंटरैक्शन भी शामिल होता है। वास्तविक समय के प्रश्नों के बारे में अधिक जानकारी के लिए, वास्तविक समय के प्रश्नों को बड़े पैमाने पर समझें देखें।

क्लाउड फायरस्टोर में पढ़ने वाले के जीवन को समझें

यह अनुभाग क्लाउड फायरस्टोर में स्टैंडअलोन, गैर-वास्तविक समय में पढ़ने पर प्रकाश डालता है। आंतरिक रूप से, क्लाउड फायरस्टोर सर्वर इनमें से अधिकांश प्रश्नों को दो प्रमुख चरणों में संभालता है:

  1. इंडेक्स टेबल पर एक सिंगल रेंज स्कैन
  2. पिछले स्कैन के परिणाम के आधार पर दस्तावेज़ तालिका में बिंदु लुकअप
क्लाउड फायरस्टोर में कुछ ऐसी क्वेरीज़ हो सकती हैं जिनके लिए कम प्रोसेसिंग या अधिक प्रोसेसिंग की आवश्यकता होती है (उदाहरण के लिए, IN क्वेरीज़)।

लगातार पढ़ने को सुनिश्चित करने के लिए स्टोरेज परत से डेटा को आंतरिक रूप से डेटाबेस लेनदेन का उपयोग करके पढ़ा जाता है। हालाँकि, लिखने के लिए उपयोग किए जाने वाले लेन-देन के विपरीत, ये लेन-देन लॉक नहीं लेते हैं। इसके बजाय, वे एक टाइमस्टैम्प चुनकर काम करते हैं, फिर उस टाइमस्टैम्प पर सभी रीड्स निष्पादित करते हैं। चूंकि वे ताले हासिल नहीं करते हैं, वे समवर्ती पढ़ने-लिखने के लेनदेन को अवरुद्ध नहीं करते हैं। इस लेनदेन को निष्पादित करने के लिए, क्लाउड फायरस्टोर में स्टोरेज क्लाइंट एक टाइमस्टैम्प बाउंड निर्दिष्ट करता है, जो स्टोरेज लेयर को बताता है कि रीड टाइमस्टैम्प कैसे चुनें। क्लाउड फायरस्टोर में स्टोरेज क्लाइंट द्वारा चुने गए टाइमस्टैम्प का प्रकार रीड रिक्वेस्ट के रीड विकल्पों द्वारा निर्धारित किया जाता है।

स्टोरेज लेयर में पढ़े गए लेनदेन को समझें

यह अनुभाग रीड्स के प्रकार और उन्हें क्लाउड फायरस्टोर में स्टोरेज लेयर में कैसे संसाधित किया जाता है, इसका वर्णन करता है।

मजबूत पढ़ता है

डिफ़ॉल्ट रूप से, क्लाउड फायरस्टोर की रीडिंग दृढ़ता से सुसंगत होती है। इस मजबूत स्थिरता का मतलब है कि क्लाउड फायरस्टोर रीड डेटा का नवीनतम संस्करण लौटाता है जो रीड की शुरुआत तक किए गए सभी लेखन को दर्शाता है।

सिंगल स्प्लिट पढ़ें

क्लाउड फायरस्टोर में स्टोरेज क्लाइंट उन विभाजनों को देखता है जिनके पास पढ़ी जाने वाली पंक्तियों की कुंजियाँ होती हैं। आइए मान लें कि इसे पिछले अनुभाग से स्प्लिट 3 को पढ़ने की आवश्यकता है। राउंड ट्रिप विलंबता को कम करने के लिए क्लाइंट निकटतम प्रतिकृति को रीड रिक्वेस्ट भेजता है।

इस बिंदु पर, चुनी गई प्रतिकृति के आधार पर निम्नलिखित मामले हो सकते हैं:

  • पढ़ने का अनुरोध एक लीडर प्रतिकृति (ज़ोन ए) को जाता है।
    • चूंकि लीडर हमेशा अप-टू-डेट रहता है, इसलिए पढ़ना सीधे आगे बढ़ सकता है।
  • पढ़ने का अनुरोध एक गैर-नेता प्रतिकृति (जैसे, जोन बी) पर जाता है
    • स्प्लिट 3 अपनी आंतरिक स्थिति से जान सकता है कि उसके पास पढ़ने के लिए पर्याप्त जानकारी है और स्प्लिट ऐसा करता है।
    • स्प्लिट 3 अनिश्चित है कि उसने नवीनतम डेटा देखा है या नहीं। यह लीडर को अंतिम लेन-देन का टाइमस्टैम्प मांगने के लिए एक संदेश भेजता है जिसे रीड की सेवा के लिए लागू करने की आवश्यकता होती है। एक बार जब वह लेन-देन लागू हो जाता है, तो पढ़ना आगे बढ़ सकता है।

इसके बाद क्लाउड फायरस्टोर अपने क्लाइंट को प्रतिक्रिया देता है।

मल्टी-स्प्लिट पढ़ें

ऐसी स्थिति में जहां रीडिंग को कई स्प्लिट्स से किया जाना है, वही तंत्र सभी स्प्लिट्स में होता है। एक बार जब डेटा सभी विभाजनों से वापस आ जाता है, तो क्लाउड फायरस्टोर में स्टोरेज क्लाइंट परिणामों को जोड़ता है। इसके बाद क्लाउड फायरस्टोर इस डेटा के साथ अपने क्लाइंट को जवाब देता है।

बासी पढ़ता है

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

ऐसे मामले में, ग्राहक read_time read विकल्पों का उपयोग करके बासी रीड प्राप्त करने का विकल्प चुन सकता है। इस मामले में, रीड उसी प्रकार किया जाता है जैसे डेटा read_time पर था, और निकटतम प्रतिकृति ने पहले ही सत्यापित कर लिया होगा कि उसके पास निर्दिष्ट read_time पर डेटा है। उल्लेखनीय रूप से बेहतर प्रदर्शन के लिए, 15 सेकंड एक उचित स्थिरता मान है। यहां तक ​​कि पुराने पाठों के लिए भी, प्राप्त पंक्तियां एक-दूसरे के अनुरूप होती हैं।

हॉटस्पॉट से बचें

जरूरत पड़ने पर या जब कुंजी स्थान का विस्तार होता है, तो अधिक स्टोरेज सर्वर पर ट्रैफ़िक की सेवा के कार्य को वितरित करने के लिए क्लाउड फायरस्टोर में विभाजन स्वचालित रूप से छोटे टुकड़ों में टूट जाते हैं। अतिरिक्त ट्रैफ़िक को संभालने के लिए बनाए गए स्प्लिट्स ट्रैफ़िक चले जाने पर भी लगभग ~24 घंटे तक बने रहते हैं। इसलिए यदि ट्रैफ़िक में बार-बार बढ़ोतरी होती है, तो विभाजन बनाए रखा जाता है और जब भी आवश्यकता होती है, तब और अधिक विभाजन पेश किए जाते हैं। ये तंत्र बढ़ते ट्रैफ़िक लोड या डेटाबेस आकार के तहत क्लाउड फायरस्टोर डेटाबेस को ऑटोस्केल में मदद करते हैं। हालाँकि, नीचे बताए अनुसार जागरूक होने की कुछ सीमाएँ हैं।

भंडारण और लोड को विभाजित करने में समय लगता है, और ट्रैफ़िक को बहुत तेज़ी से बढ़ाने से उच्च विलंबता या समय सीमा से अधिक त्रुटियां हो सकती हैं, जिन्हें आमतौर पर हॉटस्पॉट के रूप में जाना जाता है, जबकि सेवा समायोजित होती है। सबसे अच्छा अभ्यास 500 ऑपरेशंस प्रति सेकंड के साथ डेटाबेस में संग्रह पर ट्रैफ़िक बढ़ाते हुए, मुख्य रेंज में ऑपरेशंस को वितरित करना है। इस क्रमिक वृद्धि के बाद, हर पाँच मिनट में ट्रैफ़िक को 50% तक बढ़ाएँ। इस प्रक्रिया को 500/50/5 नियम कहा जाता है और यह आपके कार्यभार को पूरा करने के लिए डेटाबेस को इष्टतम पैमाने पर रखता है।

हालाँकि बढ़ते लोड के साथ स्प्लिट्स स्वचालित रूप से बनाए जाते हैं, क्लाउड फायरस्टोर एक कुंजी रेंज को केवल तब तक विभाजित कर सकता है जब तक कि यह प्रतिकृति स्टोरेज सर्वर के समर्पित सेट का उपयोग करके एकल दस्तावेज़ की सेवा नहीं कर रहा हो। परिणामस्वरूप, किसी एकल दस्तावेज़ पर समवर्ती संचालन की उच्च और निरंतर मात्रा उस दस्तावेज़ पर हॉटस्पॉट का कारण बन सकती है। यदि आप किसी एकल दस्तावेज़ पर निरंतर उच्च विलंबता का सामना करते हैं, तो आपको डेटा को कई दस्तावेज़ों में विभाजित करने या दोहराने के लिए अपने डेटा मॉडल को संशोधित करने पर विचार करना चाहिए।

विवाद त्रुटियाँ तब होती हैं जब कई ऑपरेशन एक ही दस्तावेज़ को एक साथ पढ़ने और/या लिखने का प्रयास करते हैं।

हॉटस्पॉटिंग का एक और विशेष मामला तब होता है जब क्लाउड फायरस्टोर में दस्तावेज़ आईडी के रूप में क्रमिक रूप से बढ़ती/घटती कुंजी का उपयोग किया जाता है, और प्रति सेकंड काफी अधिक संख्या में संचालन होता है। अधिक विभाजन बनाने से यहां मदद नहीं मिलती क्योंकि ट्रैफ़िक का उछाल बस नए बनाए गए विभाजन की ओर बढ़ता है। चूंकि क्लाउड फायरस्टोर स्वचालित रूप से दस्तावेज़ में सभी फ़ील्ड को डिफ़ॉल्ट रूप से अनुक्रमित करता है, ऐसे मूविंग हॉटस्पॉट दस्तावेज़ फ़ील्ड के लिए इंडेक्स स्पेस पर भी बनाए जा सकते हैं जिसमें टाइमस्टैम्प की तरह क्रमिक रूप से बढ़ने / घटने वाला मान होता है।

ध्यान दें कि ऊपर उल्लिखित प्रथाओं का पालन करके, फायरस्टोर आपके द्वारा किसी भी कॉन्फ़िगरेशन को समायोजित किए बिना मनमाने ढंग से बड़े कार्यभार को पूरा करने के लिए स्केल कर सकता है।

समस्या निवारण

फायरस्टोर कुंजी विज़ुअलाइज़र को एक डायग्नोस्टिक टूल के रूप में प्रदान करता है जिसे विशेष रूप से उपयोग पैटर्न का विश्लेषण करने और हॉटस्पॉटिंग समस्याओं का निवारण करने के लिए डिज़ाइन किया गया है।

आगे क्या होगा