इस पेज का अनुवाद 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

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

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

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

वेब v8

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 database2 = firebase.database(app2);
है

वेब 9

import { initializeApp } from "firebase/app";
import { getDatabase } from "firebase/database";

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

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

// Get the default database instance for an app1
const database1 = getDatabase(app1);

// Get a database instance for app2
const database2 = getDatabase(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 से एक द्वितीयक डेटाबेस उदाहरण प्राप्त करें 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();

कोटलिन + केटीएक्स

// 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"

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

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

और सलाह लें

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