कोई डेटाबेस चुनें: Cloud Firestore या रीयल टाइम डेटाबेस

Firebase, क्लाउड पर आधारित दो ऐसे दस्तावेज़ डेटाबेस उपलब्ध कराता है जिन्हें क्लाइंट ऐक्सेस कर सकते हैं. हम नए ग्राहकों को Cloud Firestore से शुरुआत करने का सुझाव देते हैं:

  • Cloud Firestore, एंटरप्राइज़-ग्रेड का सुझाया गया JSON-कंपैटिबल दस्तावेज़ डेटाबेस है. इस पर 2,50,000 से ज़्यादा डेवलपर भरोसा करते हैं. यह उन ऐप्लिकेशन के लिए सही है जिनमें क्वेरी करने, बड़े पैमाने पर इस्तेमाल करने, और ज़्यादा उपलब्धता की ज़रूरत होती है. साथ ही, जिनमें रिच डेटा मॉडल होते हैं. यह कम समय में क्लाइंट को सिंक्रनाइज़ करने और ऑफ़लाइन डेटा ऐक्सेस करने की सुविधा भी देता है.

  • Realtime Database, Firebase का क्लासिक JSON डेटाबेस है. यह उन ऐप्लिकेशन के लिए सही है जिनमें डेटा मॉडल आसान होते हैं. साथ ही, जिनमें आसान लुकअप और कम इंतज़ार के समय में सिंक्रनाइज़ेशन की ज़रूरत होती है. इसके अलावा, यह उन ऐप्लिकेशन के लिए भी सही है जिनमें स्केलेबिलिटी सीमित होती है.

इनके अलावा, किन दूसरी ज़रूरी बातों का ध्यान रखना चाहिए?

ऊपर बताई गई अहम बातों पर विचार करने के बाद, अब आपको डेटाबेस चुनना होगा. अगर आपको अब भी फ़ायदों और नुकसानों के बारे में सोचना है, तो इस सेक्शन में Cloud Firestore और Realtime Database के बीच के अन्य अंतरों के बारे में बताया गया है.

डेटा मॉडल

Realtime Database और Cloud Firestore, दोनों NoSQL डेटाबेस हैं.

Cloud Firestore [ PREFERRED ] Realtime Database
यह दस्तावेज़ों के कलेक्शन के तौर पर डेटा सेव करता है.
  • सामान्य डेटा को दस्तावेज़ों में आसानी से सेव किया जा सकता है. ये JSON से मिलते-जुलते होते हैं.
  • दस्तावेज़ों में सब-कलेक्शन का इस्तेमाल करके, जटिल और क्रमबद्ध डेटा को बड़े पैमाने पर व्यवस्थित करना आसान होता है.
  • इसमें डेटा को कम डीनॉर्मलाइज़ और फ़्लैट करने की ज़रूरत होती है.

Cloud Firestore डेटा मॉडल के बारे में ज़्यादा जानें.

डेटा को एक बड़े JSON ट्री के तौर पर सेव करता है.
  • सामान्य डेटा को सेव करना बहुत आसान होता है.
  • बड़े पैमाने पर जटिल और क्रम के हिसाब से लगे डेटा को व्यवस्थित करना मुश्किल होता है.

Realtime Database डेटा मॉडल के बारे में ज़्यादा जानें.

रीयलटाइम और ऑफ़लाइन सहायता

दोनों में मोबाइल-फ़र्स्ट और रीयलटाइम SDK टूल हैं. साथ ही, दोनों ऑफ़लाइन काम करने वाले ऐप्लिकेशन के लिए, लोकल डेटा स्टोरेज की सुविधा देते हैं.

Cloud Firestore [ PREFERRED ] Realtime Database
Apple, Android, और वेब क्लाइंट के लिए ऑफ़लाइन सहायता. Apple और Android क्लाइंट के लिए ऑफ़लाइन सहायता.

मौजूदगी

इससे यह पता चलता है कि क्लाइंट ऑनलाइन है या ऑफ़लाइन. Firebase Realtime Database क्लाइंट के कनेक्शन की स्थिति को रिकॉर्ड कर सकता है. साथ ही, क्लाइंट के कनेक्शन की स्थिति में बदलाव होने पर, अपडेट दे सकता है.

Cloud Firestore [ PREFERRED ] Realtime Database
यह सुविधा डिफ़ॉल्ट रूप से उपलब्ध नहीं है. Realtime Database में मौजूदगी की सुविधा को बेहतर बनाया जा सकता है. इसके लिए, Cloud Firestore और Realtime Database को Cloud Functions का इस्तेमाल करके सिंक करें. Cloud Firestore में मौजूदगी की सुविधा को बेहतर बनाना लेख पढ़ें. उपयोगकर्ता की मौजूदगी की जानकारी शेयर करने की सुविधा उपलब्ध है.

क्वेरी करना

क्वेरी के ज़रिए, किसी भी डेटाबेस से डेटा वापस पाना, उसे क्रम से लगाना, और फ़िल्टर करना.

Cloud Firestore [ PREFERRED ] Realtime Database
कंपाउंड सॉर्टिंग और फ़िल्टरिंग के साथ इंडेक्स की गई क्वेरी.
  • एक ही क्वेरी में, फ़िल्टर को एक साथ इस्तेमाल किया जा सकता है. साथ ही, किसी प्रॉपर्टी पर फ़िल्टर करने और क्रम से लगाने की सुविधा को एक साथ इस्तेमाल किया जा सकता है.
  • क्वेरी में कम जानकारी होती है: ये सिर्फ़ किसी कलेक्शन या कलेक्शन ग्रुप में मौजूद दस्तावेज़ों को दिखाती हैं. साथ ही, ये सब-कलेक्शन का डेटा नहीं दिखाती हैं.
  • क्वेरी के जवाब में हमेशा पूरे दस्तावेज़ मिलने चाहिए.
  • क्वेरी डिफ़ॉल्ट रूप से इंडेक्स की जाती हैं: क्वेरी की परफ़ॉर्मेंस, आपके डेटासेट के साइज़ के बजाय, आपके नतीजों के सेट के साइज़ के हिसाब से तय होती है.
ज़्यादा जानकारी वाली क्वेरी, जिनमें सॉर्ट करने और फ़िल्टर करने की सुविधाएं सीमित होती हैं.
  • क्वेरी, किसी प्रॉपर्टी पर डेटा को क्रम से लगा सकती हैं या फ़िल्टर कर सकती हैं. हालांकि, दोनों काम एक साथ नहीं किए जा सकते.
  • क्वेरी डिफ़ॉल्ट रूप से डीप होती हैं: ये हमेशा पूरे सबट्री को दिखाती हैं.
  • क्वेरी, डेटा को किसी भी लेवल पर ऐक्सेस कर सकती हैं. यहां तक कि JSON ट्री में मौजूद अलग-अलग लीफ़-नोड वैल्यू को भी ऐक्सेस किया जा सकता है.
  • क्वेरी के लिए इंडेक्स की ज़रूरत नहीं होती. हालांकि, आपका डेटासेट बढ़ने पर कुछ क्वेरी की परफ़ॉर्मेंस खराब हो जाती है.

लिखने और लेन-देन करने की अनुमतियां

Cloud Firestore [ PREFERRED ] Realtime Database
डेटा में बदलाव करने और लेन-देन से जुड़ी बेहतर सुविधाएं.
  • डेटा लिखने की कार्रवाइयां सेट और अपडेट करने की कार्रवाइयों के साथ-साथ, ऐडवांस ट्रांसफ़ॉर्मेशन के ज़रिए भी की जा सकती हैं. जैसे, ऐरे और संख्या वाले ऑपरेटर.
  • ट्रांज़ैक्शन, डेटाबेस के किसी भी हिस्से से डेटा को एक साथ पढ़ और लिख सकते हैं.
लिखने और लेन-देन से जुड़ी बुनियादी कार्रवाइयां.
  • सेट और अपडेट करने की कार्रवाइयों के ज़रिए, डेटा लिखें.
  • लेन-देन किसी खास डेटा सबट्री पर एटॉमिक होते हैं.

भरोसेमंद और बेहतर परफ़ॉर्मेंस

Cloud Firestore [ PREFERRED ] Realtime Database
Cloud Firestore एक क्षेत्रीय और एक से ज़्यादा क्षेत्रों के लिए उपलब्ध समाधान है, जो अपने-आप स्केल होता है.
  • कम समय में जवाब देने वाला समाधान. आम तौर पर, जवाब देने में 30 मि॰से॰ से ज़्यादा समय नहीं लगता.
  • यह आपके डेटा को अलग-अलग क्षेत्रों में मौजूद कई डेटा सेंटर में सेव करता है. इससे यह पक्का होता है कि दुनिया भर में इसका इस्तेमाल किया जा सकता है और यह भरोसेमंद है.
  • यह सुविधा, दुनिया भर में क्षेत्रीय या एक से ज़्यादा क्षेत्रों वाले कॉन्फ़िगरेशन में उपलब्ध है.
सेवा स्तर समझौते में, Cloud Firestore की परफ़ॉर्मेंस और भरोसेमंद होने की विशेषताओं के बारे में ज़्यादा जानें.
Realtime Database एक रीजनल समाधान है.
  • यह सुविधा, देश/इलाके के हिसाब से कॉन्फ़िगरेशन में उपलब्ध है. डेटाबेस, किसी क्षेत्र में सिर्फ़ ज़ोन के हिसाब से उपलब्ध होते हैं.
  • इसमें इंतज़ार का समय बहुत कम होता है. आम तौर पर, जवाब मिलने में 10 मि॰से॰ से ज़्यादा समय नहीं लगता. यह विकल्प, बार-बार स्टेट सिंक करने के लिए सबसे सही है.
सेवा स्तर समझौते में, Realtime Database की परफ़ॉर्मेंस और भरोसेमंद होने की विशेषताओं के बारे में ज़्यादा जानें.

चालू रहने का समय

Cloud Firestore [ PREFERRED ] Realtime Database
बहुत ज़्यादा अपटाइम परफ़ॉर्मेंस.
  • आम तौर पर, 99.999% अपटाइम की परफ़ॉर्मेंस.
  • अगर उपलब्धता सबसे ज़्यादा ज़रूरी है, तो Cloud Firestore का इस्तेमाल करें. उदाहरण के लिए, ई-कॉमर्स ऐप्लिकेशन में.
ज़्यादा अपटाइम परफ़ॉर्मेंस.
  • आम तौर पर, 99.95% अपटाइम की परफ़ॉर्मेंस.

स्केल करने की क्षमता

Cloud Firestore [ PREFERRED ] Realtime Database
स्केलिंग अपने-आप होती है.
  • यह पूरी तरह से अपने-आप स्केल होता है. स्केलिंग की सीमाएं इस तरह हैं: एक साथ 10 लाख कनेक्शन और हर सेकंड 10,000 बार लिखना. हम आने वाले समय में, इन सीमाओं को बढ़ाने के लिए काम कर रहे हैं.
  • अलग-अलग दस्तावेज़ों या इंडेक्स में डेटा लिखने की सीमाएं होती हैं.
स्केलिंग के लिए शार्डिंग ज़रूरी है.
  • एक ही डेटाबेस में, एक साथ करीब 2,00,000 कनेक्शन और हर सेकंड में 1,000 बार डेटा लिखा जा सकता है. इससे ज़्यादा डेटा को मैनेज करने के लिए, आपको अपने डेटा को कई डेटाबेस में बांटना होगा.
  • डेटा के अलग-अलग हिस्सों में डेटा लिखने की दर पर कोई स्थानीय सीमा नहीं होती.

सुरक्षा

Cloud Firestore [ PREFERRED ] Realtime Database
ऐसे नियम जो एक के बाद एक लागू नहीं होते और जिनमें पुष्टि करने और अनुमति देने की सुविधा शामिल होती है.
  • यह कुकी, Cloud Firestore Security Rules से सुरक्षित किए गए मोबाइल एसडीके से डेटा को पढ़ती और लिखती है.
  • यह पहचान और ऐक्सेस मैनेजमेंट (आईएएम) से सुरक्षित किए गए सर्वर SDK टूल से डेटा पढ़ता और लिखता है.
  • वाइल्डकार्ड का इस्तेमाल किए बिना, नियमों को एक-दूसरे से नहीं जोड़ा जा सकता.
  • नियमों से क्वेरी को सीमित किया जा सकता है: अगर किसी क्वेरी के नतीजों में ऐसा डेटा शामिल हो सकता है जिसका ऐक्सेस उपयोगकर्ता के पास नहीं है, तो पूरी क्वेरी काम नहीं करेगी.
कैस्केडिंग नियमों की ऐसी भाषा जो अनुमति देने और पुष्टि करने की प्रोसेस को अलग करती है.
  • यह कुकी, Realtime Database Security Rules से सुरक्षित किए गए मोबाइल एसडीके से डेटा को पढ़ती और लिखती है.
  • रीड और राइट नियमों का कैस्केड.
  • validate नियम का इस्तेमाल करके, आपको डेटा की पुष्टि अलग से करनी होगी.

कीमत

ये दोनों समाधान, स्पार्क और ब्लेज़ के स्टोरेज प्लान में उपलब्ध हैं.

Cloud Firestore [ PREFERRED ] Realtime Database
मुख्य तौर पर, आपके डेटाबेस में किए गए ऑपरेशन (पढ़ना, लिखना, मिटाना) के लिए शुल्क लिया जाता है. साथ ही, बैंडविथ और स्टोरेज के लिए कम शुल्क लिया जाता है.

Cloud Firestore, App Engine प्रोजेक्ट के लिए, रोज़ाना के खर्च की सीमा तय करने की सुविधा देता है. इससे यह पक्का किया जा सकता है कि आपका खर्च, आपकी तय की गई सीमा से ज़्यादा न हो.

Cloud Firestore शुल्क के प्लान के बारे में ज़्यादा जानें.

यह सिर्फ़ बैंडविड्थ और स्टोरेज के लिए शुल्क लेता है, लेकिन ज़्यादा दर पर.

Realtime Database शुल्क वाले प्लान के बारे में ज़्यादा जानें.

Cloud Firestore और Realtime Database का इस्तेमाल करना

एक ही Firebase ऐप्लिकेशन या प्रोजेक्ट में, दोनों डेटाबेस का इस्तेमाल किया जा सकता है. दोनों NoSQL डेटाबेस में एक ही तरह का डेटा सेव किया जा सकता है. साथ ही, क्लाइंट लाइब्रेरी भी एक ही तरह से काम करती हैं. अगर आपको अपने ऐप्लिकेशन में दोनों डेटाबेस का इस्तेमाल करना है, तो पहले बताए गए अंतरों को ध्यान में रखें.

Realtime Database और Cloud Firestore, दोनों में उपलब्ध सुविधाओं के बारे में ज़्यादा जानें.

क्या आपको डेटाबेस चुनना है?

हमें उम्मीद है कि इस तुलना से, आपको Firebase डेटाबेस के किसी समाधान को चुनने में मदद मिली होगी. अब अपने Firebase प्रोजेक्ट में डेटाबेस जोड़ने का तरीका जानें.