Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Firebase रीयलटाइम डेटाबेस के साथ Cloud Firestore का इस्तेमाल करें

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

डेटाबेस के बीच अंतर के बारे में और जानें।

क्लाउड फायरस्टोर में डेटा ले जाना

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

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

  2. ऐतिहासिक डेटा ले जाएँ। जैसे ही आप Cloud Firestore में अपनी नई डेटा संरचना सेट कर रहे हैं, आप रीयलटाइम डेटाबेस से मौजूदा डेटा को मैप कर सकते हैं और अपने नए Cloud Firestore इंस्टेंस में स्थानांतरित कर सकते हैं। हालांकि, यदि आप अपने ऐप में दोनों डेटाबेस का उपयोग कर रहे हैं, तो आपको ऐतिहासिक डेटा को रीयलटाइम डेटाबेस से बाहर ले जाने की आवश्यकता नहीं है।

  3. रीयलटाइम में नए डेटा को फायरस्टोर में मिरर करें। अपने नए क्लाउड फायरस्टोर डेटाबेस में नया डेटा लिखने के लिए क्लाउड फ़ंक्शंस का उपयोग करें क्योंकि यह रीयलटाइम डेटाबेस में जुड़ जाता है।

  4. माइग्रेट किए गए डेटा के लिए Cloud Firestore को अपना प्राथमिक डेटाबेस बनाएं। एक बार जब आप अपना कुछ डेटा माइग्रेट कर लेते हैं, तो अपने प्राथमिक डेटाबेस के रूप में क्लाउड फायरस्टोर का उपयोग करें और माइग्रेट किए गए डेटा के लिए अपने रीयलटाइम डेटाबेस का उपयोग कम करें। अपने ऐप के उन संस्करणों पर विचार करें जो अभी भी उस डेटा के लिए रीयलटाइम डेटाबेस से जुड़े हुए हैं और आप उनका समर्थन कैसे जारी रखने की योजना बना रहे हैं।

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

अपना डेटा मैप करें

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

विचार करने के लिए प्रमुख अंतर

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

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

कार्रवाई में सर्वोत्तम अभ्यास

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

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

// /cities/$CITY_KEY
{
  name: "New York",
  population: 8000000,
  capital: False
}

// /city-landmark/$CITY_KEY/$LANDMARK_KEY
{
  name: "Empire State Building",
  category: "Architecture"
}

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

// /cities/$CITY_ID
{
  name: "New York",
  population: 8000000,
  capital: False,
  landmarks: [... subcollection ...]
}

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

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

{
   cities: {
    // ...
   },

   capital-cities: {
     // ...
   }
}

क्लाउड फायरस्टोर में, आप एक ही प्रश्न के रूप में जनसंख्या के क्रम में राजधानी शहरों की सूची व्यक्त कर सकते हैं:

db.collection('cities')
    .where('capital', '==', true)
    .orderBy('population')

क्लाउड फायरस्टोर डेटा मॉडल के बारे में और पढ़ें और अपने क्लाउड फायरस्टोर डेटाबेस को कैसे संरचित करें, इस पर अधिक विचारों के लिए हमारे समाधानों पर एक नज़र डालें।

अपना डेटा सुरक्षित करें

चाहे आप Android, Apple, या वेब क्लाइंट के लिए Cloud Firestore सुरक्षा नियमों का या सर्वर के लिए आइडेंटिटी एक्सेस मैनेजमेंट (IAM) का उपयोग कर रहे हों, सुनिश्चित करें कि आप Cloud Firestore के साथ-साथ रीयलटाइम डेटाबेस में अपना डेटा सुरक्षित कर रहे हैं। उपयोगकर्ता प्रमाणीकरण दोनों डेटाबेस के लिए प्रमाणीकरण द्वारा नियंत्रित किया जाता है, इसलिए जब आप क्लाउड फायरस्टोर का उपयोग शुरू करते हैं तो आपको प्रमाणीकरण के अपने कार्यान्वयन को बदलने की आवश्यकता नहीं होती है।

विचार करने के लिए प्रमुख अंतर

  • मोबाइल और वेब एसडीके क्लाउड फायरस्टोर सुरक्षा नियमों का उपयोग करते हैं, जबकि सर्वर एसडीके डेटा सुरक्षित करने के लिए आइडेंटिटी एक्सेस मैनेजमेंट (आईएएम) का उपयोग करते हैं।
  • क्लाउड फायरस्टोर सुरक्षा नियम तब तक कैस्केड नहीं होते जब तक आप वाइल्डकार्ड का उपयोग नहीं करते। दस्तावेज़ और संग्रह अन्यथा नियमों को प्राप्त नहीं करते हैं।
  • अब आपको डेटा को अलग से सत्यापित करने की आवश्यकता नहीं है (जैसा कि आपने रीयलटाइम डेटाबेस में किया था)।
  • Cloud Firestore किसी क्वेरी को निष्पादित करने से पहले नियमों की जांच करता है ताकि यह सुनिश्चित किया जा सके कि उपयोगकर्ता के पास क्वेरी द्वारा लौटाए गए सभी डेटा के लिए उपयुक्त एक्सेस है।

ऐतिहासिक डेटा को Cloud Firestore में ले जाएं

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

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

ऐतिहासिक डेटा को Cloud Firestore में माइग्रेट करने के लिए, इन चरणों का पालन करें:

  1. रीयलटाइम डेटाबेस से अपना डेटा निर्यात करें या हाल ही के बैकअप का उपयोग करें
    1. Firebase कंसोल में रीयलटाइम डेटाबेस सेक्शन में जाएं।
    2. डेटा टैब से, अपने डेटाबेस के रूट-लेवल नोड का चयन करें और मेनू से JSON निर्यात करें चुनें।
  2. Cloud Firestore में अपना नया डेटाबेस बनाएं और अपना डेटा जोड़ें

    जब आप अपना कुछ डेटा Cloud Firestore में ले जाते हैं, तो निम्न रणनीतियों पर विचार करें:

    • एक कस्टम स्क्रिप्ट लिखें जो आपके डेटा को आपके लिए पोर्ट करती है। हालांकि हम इस स्क्रिप्ट के लिए एक टेम्पलेट की पेशकश नहीं कर सकते हैं, क्योंकि प्रत्येक डेटाबेस की अनूठी जरूरतें होंगी, हमारे स्लैक चैनल या स्टैक ओवरफ्लो पर क्लाउड फायरस्टोर विशेषज्ञ आपकी स्क्रिप्ट की समीक्षा कर सकते हैं या आपकी विशिष्ट स्थिति के लिए सलाह दे सकते हैं।
    • Cloud Firestore को सीधे डेटा लिखने के लिए सर्वर SDK (Node.js, Java, Python, या Go) का उपयोग करें। सर्वर SDK को सेट करने के निर्देशों के लिए, प्रारंभ करें देखें।
    • बड़े डेटा माइग्रेशन में तेजी लाने के लिए, बैचेड राइट्स का उपयोग करें और एकल नेटवर्क अनुरोध में 500 ऑपरेशन तक भेजें।
    • Cloud Firestore दर सीमा के अंतर्गत रहने के लिए, प्रत्येक संग्रह के लिए संचालन को 500 राइट/सेकंड तक सीमित करें।

Cloud Firestore में नया डेटा जोड़ें

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

हर बार जब कोई क्लाइंट रीयलटाइम डेटाबेस में डेटा लिखता है, तो क्लाउड फायरस्टोर में नया या बदलते डेटा लिखने के लिए एक फ़ंक्शन बनाएं। क्लाउड फ़ंक्शंस के लिए रीयलटाइम डेटाबेस ट्रिगर्स के बारे में और जानें।

माइग्रेट किए गए डेटा के लिए Cloud Firestore को अपना प्राथमिक डेटाबेस बनाएं

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

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

  2. सत्यापित करें कि आपका डेटा ठीक से सुरक्षित है। अपने Cloud Firestore सुरक्षा नियम या IAM सेटअप की पुष्टि करें।