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

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

रीयलटाइम डेटाबेस प्रदर्शन की निगरानी करें

आप अपने रीयलटाइम डेटाबेस के प्रदर्शन के बारे में कुछ अलग-अलग टूल के माध्यम से डेटा एकत्र कर सकते हैं, जो आपके लिए आवश्यक ग्रैन्युलैरिटी के स्तर पर निर्भर करता है:

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

मीट्रिक द्वारा प्रदर्शन में सुधार करें

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

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

कनेक्शन अनुकूलित करें

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

जब भी संभव हो, अपने ऐप के प्लेटफ़ॉर्म के लिए REST API के बजाय मूल SDK का उपयोग करें। SDKs खुले कनेक्शन बनाए रखते हैं, जिससे SSL एन्क्रिप्शन लागत और डेटाबेस लोड कम हो जाता है जो REST API के साथ जुड़ सकता है।

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

एकाधिक डेटाबेस में डेटा साझा करें

अपने डेटा को कई रीयलटाइम डेटाबेस इंस्टेंसेस में विभाजित करना, जिसे अन्यथा डेटाबेस शार्डिंग के रूप में जाना जाता है, तीन लाभ प्रदान करता है:

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

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

डेटा को कैसे और कब शार्प किया जाए, इसके बारे में और जानें।

कुशल डेटा संरचनाएँ बनाएँ

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

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

इसके अतिरिक्त, प्रत्येक लेखन आपके कुल डेटाबेस उपयोग का 0.1% ले सकता है। अपने डेटा को इस तरह से संरचित करें जो आपको SDKs या RESTful PATCH अनुरोधों में update() विधियों के माध्यम से मल्टी-पाथ अपडेट के रूप में एकल ऑपरेशन में बैच लिखने की अनुमति देता है।

अपनी डेटा संरचना को अनुकूलित करने और प्रदर्शन में सुधार करने के लिए, डेटा संरचनाओं के लिए सर्वोत्तम प्रथाओं का पालन करें।

अनधिकृत पहुंच रोकें

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

फायरबेस रीयलटाइम डेटाबेस नियमों का उपयोग करने के बारे में और जानें।

डाउनलोड सीमित करने के लिए क्वेरी-आधारित नियमों का उपयोग करें

रीयलटाइम डेटाबेस सुरक्षा नियम आपके डेटाबेस में डेटा तक पहुंच को प्रतिबंधित करते हैं, लेकिन वे रीड ऑपरेशंस के माध्यम से लौटाए गए डेटा पर सीमा के रूप में भी काम कर सकते हैं। जब आप क्वेरी-आधारित नियमों का उपयोग करते हैं, जैसा कि query. query.limitToFirst जैसी अभिव्यक्तियाँ, क्वेरीज़ केवल नियम से बंधे डेटा को पुनः प्राप्त करती हैं।

उदाहरण के लिए, निम्नलिखित नियम किसी क्वेरी के केवल पहले 1000 परिणामों तक पढ़ने की पहुंच को सीमित करता है, जैसा कि प्राथमिकता के आधार पर दिया गया है:

messages: {
  ".read": "query.orderByKey &&
            query.limitToFirst <= 1000"
}

// Example query:
db.ref("messages").limitToFirst(1000)
                  .orderByKey("value")

रीयलटाइम डेटाबेस सुरक्षा नियमों के बारे में और जानें।

अनुक्रमणिका प्रश्न

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

एसएसएल सत्रों का पुन: उपयोग करें

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

श्रोता दक्षता में सुधार करें

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

आपके श्रवण संचालन द्वारा लौटाए जाने वाले डेटा को सीमित करने के लिए क्वेरीज़ जोड़ें और उन श्रोताओं का उपयोग करें जो केवल डेटा में अपडेट डाउनलोड करते हैं - उदाहरण के लिए, once() on() ()। उन कार्यों के लिए .once() आरक्षित करें जिनके लिए वास्तव में डेटा अपडेट की आवश्यकता नहीं है। इसके अतिरिक्त, सर्वोत्तम प्रदर्शन के लिए, जब भी संभव हो, orderByKey() का उपयोग करके अपने प्रश्नों को क्रमबद्ध करें। orderByChild() के साथ सॉर्टिंग 6-8 गुना धीमी हो सकती है, और orderByValue() के साथ सॉर्टिंग बड़े डेटा सेट के लिए बहुत धीमी हो सकती है, क्योंकि इसके लिए दृढ़ता परत से पूरे स्थान को पढ़ने की आवश्यकता होती है।

श्रोताओं को गतिशील रूप से जोड़ना भी सुनिश्चित करें, और जब उनकी आवश्यकता न हो तो उन्हें हटा दें।

अप्रयुक्त डेटा साफ़ करें

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

शिप स्केलेबल कोड जिसे आप अपडेट कर सकते हैं

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