इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

एकाधिक डेटाबेस के साथ स्केल

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

कब अपना डेटा शार्प करें

यदि आप रीयलटाइम डेटाबेस का उपयोग कर रहे हैं और निम्नलिखित में से किसी भी परिदृश्य में फिट हैं, तो आप कई डेटाबेस में अपने डेटा को बढ़ाना चाहते हैं:

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

अपना डेटा कैसे शार्प करें

अपना डेटा शार्प करने के लिए, इन चरणों का पालन करें (नीचे अधिक विवरण में वर्णित है):

  1. अपने एप्लिकेशन की विशिष्ट आवश्यकताओं के अनुसार अपने डेटा को कई डेटाबेस में मैप करें।
  2. कई डेटाबेस इंस्टेंस बनाएँ।
  3. अपने एप्लिकेशन को कॉन्फ़िगर करें ताकि यह प्रत्येक डेटा सेट के लिए आवश्यक रीयलटाइम डेटाबेस उदाहरण से कनेक्ट हो।

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

जब आप अपने डेटा को कई डेटाबेस में मैप कर रहे हों, तो निम्न स्थितियों को संतुष्ट करने का प्रयास करें:

  • प्रत्येक क्वेरी केवल एकल डेटाबेस उदाहरण के विरुद्ध चलती है। रीयलटाइम डेटाबेस डेटाबेस उदाहरणों में प्रश्नों का समर्थन नहीं करता है।
  • डेटाबेस इंस्टेंसेस (या न्यूनतम साझाकरण या दोहराव) पर डेटा का कोई साझाकरण या दोहराव नहीं।
  • प्रत्येक एप्लिकेशन इंस्टेंस किसी भी समय केवल एक डेटाबेस से जुड़ता है।

जैसा कि आप अपना डेटा मैप कर रहे हैं, निम्नलिखित रणनीतियों को लागू करने पर विचार करें:

एक "मास्टर शार्क" बनाएँ

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

श्रेणियों या ग्राहक द्वारा बाल्टी डेटा

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

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

फिर आप पहले से कई डेटाबेस इंस्टेंसेस बना सकते हैं और एक टीम को उसके डेटाबेस इंस्टेंस पर मैप करने के लिए संगठन की आईडी का उपयोग कर सकते हैं। उदाहरण के लिए, संगठन A, रीयलटाइम डेटाबेस ए के नक्शे।

जिस तरह से आप अपने ऐप के लिए डेटा मैप करते हैं, वह आपके विशेष उपयोग के मामले पर निर्भर करता है, लेकिन ऊपर उल्लिखित स्थितियां और रणनीतियाँ आपको यह निर्धारित करने में मदद कर सकती हैं कि आपके डेटा के लिए क्या काम करता है।

कई रियलटाइम डेटाबेस उदाहरण बनाएँ

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

डेटाबेस अनुभाग में संदर्भ मेनू के साथ फायरबेस कंसोल में एक डेटाबेस बनाएं

  1. फायरबेस कंसोल में, डेवलपमेंट> डेटाबेस सेक्शन में डेटा टैब पर जाएं।
  2. रीयलटाइम डेटाबेस अनुभाग में मेनू से नया डेटाबेस बनाएँ चुनें।
  3. अपने डाटाबेस संदर्भ और अनुकूलित सुरक्षा नियमों , तो यह मिल गया पर क्लिक करें।

जितनी जरूरत हो उतने डेटाबेस इंस्टेंस बनाने के लिए प्रक्रिया को दोहराएं। प्रत्येक डेटाबेस उदाहरण में Firebase Realtime Database Rules का अपना सेट होता है, जिससे आप अपने डेटा तक पहुंच को ठीक कर सकते हैं।

प्रत्येक उदाहरण के लिए रीयलटाइम डेटाबेस नियम संपादित करें और तैनात करें

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

  • फायरबेस कंसोल से नियमों को संपादित और तैनात करने के लिए, इन चरणों का पालन करें:

    1. डेवलपमेंट> डेटाबेस सेक्शन में रूल्स टैब पर जाएं।
    2. उस डेटाबेस का चयन करें जिसे आप संपादित करना चाहते हैं, फिर नियमों को संशोधित करें।
  • फायरबेस सीएलआई से नियमों को संपादित और तैनात करने के लिए, इन चरणों का पालन करें:

    1. अपने डेटाबेस इंस्टेंस के लिए नियमों की फाइलों में नियमों को संशोधित करें (उदाहरण के लिए, foo.rules.json )।
    2. समान डेटाबेस फ़ाइल का उपयोग करने वाले सहयोगी डेटाबेस के लिए लक्ष्य बनाएं और लागू करें। उदाहरण के लिए:
      firebase target:apply database main my-db-1 my-db-2
      firebase target:apply database other my-other-db-3
    3. अपने firebase.json अपडेट करें। तैनाती लक्ष्य के साथ विन्यास फाइल:

      {
        "database": [
          {"target": "main", "rules": "foo.rules.json"},
          {"target": "other", "rules": "bar.rules.json"}
        ]
      }
      
    4. तैनाती आदेश चलाएँ:

      firebase deploy

सुनिश्चित करें कि आप एक ही स्थान से नियमों को लगातार संपादित और तैनात करते हैं। Firebase CLI से नियम नियत करना आपके द्वारा Firebase कंसोल में किए गए किसी भी संपादन को ओवरराइड करता है, और Firebase कंसोल में सीधे नियमों को संपादित करना आपके द्वारा Firebase CLI के माध्यम से तैनात किए गए किसी भी हाल के परिवर्तनों को ओवरराइड करता है।

अपने ऐप को कई डेटाबेस इंस्टेंस से कनेक्ट करें

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

वेब
// init
const app1 = firebase.initializeApp({
  databaseURL: "https://testapp-1234-1.firebaseio.com"
});

const app2 = firebase.initializeApp({
  databaseURL: "https://testapp-1234-2.firebaseio.com"
}, 'app2');

// Get the default database instance for an app1
var database1 = firebase.database();

// Get a database instance for app2
var database1 = firebase.database(app2);
तीव्र
// Get the default database instance for an app
var ref: DatabaseReference!

ref = Database.database().reference()
// URL वर रेफरी द्वारा एक द्वितीयक डेटाबेस उदाहरण प्राप्त करें: DatabaseReference! Ref = Database.database ("https://testapp-1234.firebaseio.com") .reference ()।
उद्देश्य सी
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

self.ref = [[FIRDatabase database] reference];
// URL @property (मजबूत, गैर-परमाणु) FIRDatabaseReference * रेफ द्वारा एक द्वितीयक डेटाबेस उदाहरण प्राप्त करें; self.ref = [[FIRDatabase databaseWithURL: @ "https://testapp-1234.firebaseio.com"] संदर्भ];

जावा

// Get the default database instance for an app
DatabaseReference primary = FirebaseDatabase.getInstance()
        .getReference();

// Get a secondary database instance by URL
DatabaseReference secondary = FirebaseDatabase.getInstance("https://testapp-1234.firebaseio.com")
        .getReference();

Kotlin + KTX

// Get the default database instance for an app
val primary = Firebase.database.reference

// Get a secondary database instance by URL
val secondary = Firebase.database("https://testapp-1234.firebaseio.com").reference

फायरबेस सीएलआई का उपयोग करते समय एक उदाहरण निर्दिष्ट करें

निर्दिष्ट करने के लिए - Firebase रीयलटाइम डेटाबेस जिसे आप Firebase CLI कमांड लागू करना चाहते हैं, को निर्दिष्ट करने के लिए --instance विकल्प का उपयोग करें। उदाहरण के लिए, my-example-shard.firebaseio.com नामक डेटाबेस उदाहरण के लिए प्रोफाइलर को चलाने के लिए निम्न कमांड का उपयोग करें:

firebase database:profile --instance "my-example-shard"

प्रत्येक डेटाबेस पर कनेक्शन का अनुकूलन करें

यदि प्रत्येक क्लाइंट को एक सत्र के दौरान कई डेटाबेस से कनेक्ट करने की आवश्यकता होती है, तो आप प्रत्येक डेटाबेस के उदाहरण के लिए प्रत्येक डेटाबेस इंस्टेंस से केवल उसी समय तक कनेक्ट कर सकते हैं जब तक आवश्यक हो।

और सलाह लें

यदि आपको कई डेटाबेस इंस्टेंसेस पर अपने डेटा को तेज करने में सहायता की आवश्यकता है, तो हमारे स्लैक चैनल पर या स्टैक ओवरफ्लो पर फायरबेस विशेषज्ञों तक पहुंचें।