SQL Connect की सेवाओं और डेटाबेस को मैनेज करना

आपके SQL Connect प्रोजेक्ट में, इन्फ़्रास्ट्रक्चर के दो मुख्य एलिमेंट होते हैं:

  • एक या उससे ज़्यादा SQL Connect सेवा के इंस्टेंस
  • PostgreSQL के लिए Cloud SQL के एक या उससे ज़्यादा इंस्टेंस

इस गाइड में, SQL Connect सेवा के इंस्टेंस सेट अप और मैनेज करने का तरीका बताया गया है. साथ ही, इससे जुड़े Cloud SQL इंस्टेंस मैनेज करने का तरीका भी बताया गया है.

Firebase SQL Connect के लिए इलाके कॉन्फ़िगर करना

SQL Connect का इस्तेमाल करने वाले प्रोजेक्ट के लिए, जगह की सेटिंग ज़रूरी होती है.

जब आप SQL Connect सेवा का नया इंस्टेंस बनाते समय, आपसे सेवा की जगह चुनने के लिए कहा जाता है.

ऐप्लिकेशन इन जगहों पर उपलब्ध है

SQL Connect सेवाओं को इन इलाकों में बनाया जा सकता है .

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1 (Spark प्लान के ट्रायल के लिए उपलब्ध नहीं है)
  • asia-southeast2 (Spark प्लान के ट्रायल के लिए उपलब्ध नहीं है)
  • australia-southeast1
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-southwest1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-east1
  • us-east4
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4

सेवा के इंस्टेंस मैनेज करनाSQL Connect

सेवाएं बनाना

नई सेवा बनाने के लिए, Firebase console का इस्तेमाल करें या Firebase CLI का इस्तेमाल करके, स्थानीय प्रोजेक्ट को शुरू करें. इन वर्कफ़्लो से, नई SQL Connect सेवा बनती है.

इन फ़्लो में, आपको इनके बारे में भी जानकारी मिलती है:

  • नए Cloud SQL इंस्टेंस का प्रावधान करना (बिना किसी शुल्क वाला टियर)
  • SQL Connect (Blaze प्लान) से, किसी मौजूदा Cloud SQL इंस्टेंस को लिंक करना

उपयोगकर्ताओं को मैनेज करना

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

प्रोजेक्ट के सदस्यों को ऐसे उपयोगकर्ताओं के तौर पर जोड़ने के लिए जो आपके प्रोजेक्ट में SQL Connect इंस्टेंस में बदलाव कर सकते हैं, Firebase console का इस्तेमाल करके, पहले से तय की गई उपयोगकर्ता की सही भूमिकाएं चुनें.

इन भूमिकाओं से, पहचान और ऐक्सेस मैनेजमेंट (आईएएम) का इस्तेमाल करके अनुमतियां दी जाती हैं. भूमिका, अनुमतियों का कलेक्शन होती है. किसी प्रोजेक्ट के सदस्य को कोई भूमिका असाइन करने पर, उस सदस्य को भूमिका में शामिल सभी अनुमतियां मिल जाती हैं. ज़्यादा जानकारी के लिए, ये लेख देखें:

खास वर्कफ़्लो चालू करने के लिए भूमिकाएं चुनना

आईएएम भूमिकाओं की मदद से, Firebase CLI के वर्कफ़्लो का इस्तेमाल करके, आपके SQL Connect प्रोजेक्ट मैनेज किए जा सकते हैं.

सीएलआई कमांड, अन्य वर्कफ़्लो ज़रूरी भूमिकाएं
firebase init dataconnect
  • कोई अनुमति नहीं (Cloud SQL इंस्टेंस को लिंक न करने पर)
  • roles/cloudsql.admin (Cloud SQL का इंस्टेंस बनाने पर)
firebase deploy -–only dataconnect
  • firebasedataconnect.connectors.*
  • firebasedataconnect.services.*
  • firebasedataconnect.schemas.*
  • roles/cloudsql.admin
firebase dataconnect:sql:diff
  • firebasedataconnect.services.*
  • firebasedataconnect.schemas.*
firebase dataconnect:sql:migrate
  • टारगेट Cloud SQL इंस्टेंस पर roles/cloudsql.admin
firebase dataconnect:sql:grant
  • टारगेट Cloud SQL इंस्टेंस पर roles/cloudsql.admin

SQL Connect सेवा की परफ़ॉर्मेंस की निगरानी करना

सेवा की परफ़ॉर्मेंस समझना

SQL Connect की सेवा और Cloud SQL के लिए PostgreSQL की सेवा, दोनों की परफ़ॉर्मेंस से आपके अनुभव पर असर पड़ सकता है.

  • PostgreSQL के लिए Cloud SQL सेवा के बारे में सामान्य जानकारी पाने के लिए, कोटा और सीमाएं से जुड़ा दस्तावेज़ देखें.
  • SQL Connect सेवा के लिए, GraphQL के अनुरोधों का कोटा होता है, इससे, क्वेरी को कॉल और एक्ज़ीक्यूट करने की दर पर असर पड़ता है:

    • हर प्रोजेक्ट और हर इलाके के लिए, हर मिनट में 24,000 GraphQL अनुरोधों का कोटा

    अगर आपको कोटे की इन सीमाओं से जुड़ी कोई समस्या आती है, तो कृपया Firebase की सहायता टीम से संपर्क करके, ज़रूरी कोटे में बदलाव करने का अनुरोध करें.

सेवा की परफ़ॉर्मेंस, इस्तेमाल, और बिलिंग की निगरानी करना

Firebase console में, अनुरोधों, गड़बड़ियों, और ऑपरेशन की दरों की निगरानी की जा सकती है. यह निगरानी, ग्लोबल लेवल पर और हर ऑपरेशन के लिए की जा सकती है.Firebase

Cloud SQL इंस्टेंस मैनेज करना

मुफ़्त में आज़माने की सुविधा की सीमाएं

PostgreSQL के लिए ये Cloud SQL सुविधाएं, Spark या Blaze के मुफ़्त ट्रायल में उपलब्ध नहीं हैं:

  • db-f1-micro के अलावा, मशीन का कोई अन्य टियर
  • अपने इंस्टेंस के संसाधनों में बदलाव करना. जैसे, इलाका, स्टोरेज, मेमोरी, सीपीयू
  • PostgreSQL के 15.x के अलावा अन्य वर्शन
  • रीड रेप्लिका
  • निजी इंस्टेंस का आईपी पता
  • ज़्यादा उपलब्धता (मल्टी-ज़ोन); सिर्फ़ सिंगल-ज़ोन इंस्टेंस काम करते हैं
  • Enterprise Plus का वर्शन
  • अपने-आप बैकअप की सुविधा
  • स्टोरेज अपने-आप बढ़ने की सुविधा.

ऑनबोर्डिंग के लिए बनाए गए अस्थायी डेटाबेस की सीमाएं

अपने Firebase प्रोजेक्ट में SQL Connect जोड़ने पर, डेटा मॉडल का प्रोटोटाइप बनाना और तुरंत डेटा लोड करना शुरू किया जा सकता है. ऐसा इसलिए, क्योंकि डेटा को अस्थायी डेटाबेस में सेव किया जाएगा. ध्यान दें कि PostgreSQL के लिए Cloud SQL का स्थायी इंस्टेंस प्रोविज़न होने में 5 से 20 मिनट लगेंगे. प्रोविज़न होने के बाद, लोड किया गया शुरुआती डेटा, PostgreSQL के स्थायी डेटाबेस में अपने-आप माइग्रेट हो जाएगा.

यह अस्थायी डेटाबेस, स्कीमा और सीआरयूडी ऑपरेशन एक्सप्लोर करने के लिए बहुत अच्छा है.

अगर आपको अस्थायी डेटाबेस का इस्तेमाल नहीं करना है, तो अपने Cloud SQL इंस्टेंस के प्रोविज़न होने का इंतज़ार करें.

अस्थायी डेटाबेस, PostgreSQL डेटाबेस नहीं है. साथ ही, इसमें PostgreSQL की सभी सुविधाएं उपलब्ध नहीं हैं.

इसकी कुछ अहम सीमाएं यहां दी गई हैं:

  • डेटाबेस का साइज़ 1 एमबी से कम होना चाहिए
  • हर टेबल में पंक्तियों की संख्या 1,000 से कम होनी चाहिए
  • हर सेकंड में एक से कम क्वेरी
  • फ़ुल-टेक्स्ट सर्च की सुविधा उपलब्ध नहीं है
  • वेक्टर एम्बेडिंग जनरेट करने की सुविधा उपलब्ध नहीं है
  • SQL की इन सुविधाओं के लिए कोई सहायता उपलब्ध नहीं है: @view, @col(dataType), या नेटिव SQL.

Cloud SQL इंस्टेंस मैनेज करना

आम तौर पर, Cloud SQL इंस्टेंस मैनेज करने के लिए, Google Cloud console का इस्तेमाल किया जा सकता है. इसके लिए, इन वर्कफ़्लो का इस्तेमाल किया जा सकता है.

इन और अन्य वर्कफ़्लो के बारे में जानने के लिए, PostgreSQL के लिए Cloud SQL दस्तावेज़ देखें.

PostgreSQL के उपयोगकर्ता की भूमिकाएं देना

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

कुछ मामलों में, आपको SQL Connect-मैनेज किए जाने वाले Cloud SQL डेटाबेस से सीधे कनेक्ट करना पड़ सकता है. इसके लिए, अपनी पसंद का SQL क्लाइंट इस्तेमाल करें. जैसे, उदाहरण के लिए, Cloud Run, Cloud Functions या GKE.

ऐसे कनेक्शन चालू करने के लिए, आपको SQL की अनुमतियां देनी होंगी. इसके लिए:

  • उस उपयोगकर्ता या सेवा खाते को roles/cloudsql.client आईएएम भूमिका असाइन करें जिसे इंस्टेंस से कनेक्ट करना है, या तो Google Cloud कंसोल से या gcloud CLI का इस्तेमाल करके
  • ज़रूरी PostgreSQL भूमिका देने के लिए Firebase CLI का इस्तेमाल करना

आईएएम भूमिका असाइन करनाCloud SQL

आईएएम भूमिका roles/cloudsql.client असाइन करने के लिए, PostgreSQL के लिए Cloud SQL के साथ काम करने के बारे में जानकारी पाने के लिए, भूमिकाएं और अनुमतियां देखें.

PostgreSQL की भूमिकाएं देना

Firebase CLI का इस्तेमाल करके, अपने प्रोजेक्ट से जुड़े उपयोगकर्ताओं या सेवा खातों को PostgreSQL की पहले से तय की गई भूमिकाएं दी जा सकती हैं firebase dataconnect:sql:grant कमांड की मदद से.

उदाहरण के लिए, राइटर की भूमिका देने के लिए, Firebase CLI का इस्तेमाल करके यह कमांड चलाएं:

firebase dataconnect:sql:grant --role writer

ज़्यादा जानकारी के लिए, Firebase CLI की रेफ़रंस गाइड देखें.

PostgreSQL के लिए मौजूदा Cloud SQL डेटाबेस इंटिग्रेट करना

डेटाबेस को डिफ़ॉल्ट रूप से प्रोविज़न और मैनेज करने के फ़्लो में यह माना जाता है कि आपका प्रोजेक्ट नए (ग्रीनफ़ील्ड) डेटाबेस का इस्तेमाल करता है. साथ ही, firebase deploy, SQL Connect को शुरू करने पर, डेटाबेस स्कीमा में किए जाने वाले बदलावों को दिखाता है. इसके अलावा, आपकी मंज़ूरी मिलने के बाद, माइग्रेशन की प्रोसेस पूरी करता है.

मौजूदा (ब्राउनफ़ील्ड) डेटाबेस के लिए, स्कीमा मैनेज करने का आपका अपना वर्कफ़्लो हो सकता है. साथ ही, माइग्रेशन के लिए SQL Connect टूल का इस्तेमाल नहीं किया जा सकता. हालांकि, आपको SQL Connect प्रोजेक्ट में अपने डेटाबेस का इस्तेमाल करना पड़ सकता है, ताकि मोबाइल और वेब के लिए एसडीके जनरेट करने, क्वेरी के आधार पर अनुमति देने, क्लाइंट कनेक्शन मैनेज करने, और अन्य सुविधाओं का फ़ायदा लिया जा सके.

इस सेक्शन में, दूसरे मामले के बारे में जानकारी दी गई है: मौजूदा डेटाबेस को SQL Connect के साथ इंटिग्रेट करना.

किसी मौजूदा डेटाबेस को SQL Connect के प्रोजेक्ट में इंटिग्रेट करना

किसी मौजूदा डेटाबेस को इंटिग्रेट करने के वर्कफ़्लो में आम तौर पर ये चरण शामिल होते हैं:

  1. Firebase console में, SQL Connect का प्रोजेक्ट सेट अप करते समय, इंस्टेंस और डेटाबेस चुनें.

  2. Firebase CLI का इस्तेमाल करके, firebase dataconnect:sql:setup कमांड चलाएं और SQL Connect को SQL माइग्रेशन मैनेज करने की अनुमति देने के विकल्प को अस्वीकार करें.

    setup कमांड, डेटाबेस स्कीमा में उन बदलावों को रोकने के लिए, रीडर और राइटर की सही भूमिकाएं असाइन करेगी जो आपके कस्टम टूलिंग की वजह से नहीं हुए हैं. हालांकि, यह owner की भूमिका असाइन नहीं करेगी. setup कमांड और PostgreSQL की भूमिकाओं के बारे में ज़्यादा जानकारी, Firebase CLI रेफ़रंस गाइड में उपलब्ध है.

  3. ऐसा SQL Connect GraphQL स्कीमा लिखें जो आपके डेटाबेस स्कीमा से मेल खाता हो.

    GraphQL स्कीमा, क्वेरी, और म्यूटेशन को सिर्फ़ तब डिप्लॉय किया जा सकता है, जब आपका GraphQL स्कीमा, PostgreSQL स्कीमा के साथ काम करता हो.

    दोनों स्कीमा को एक जैसा बनाने की प्रोसेस को आसान बनाने के लिए, हम firebase dataconnect:sql:diff कमांड उपलब्ध कराते हैं. इससे आपको अपना डेटाबेस माइग्रेट करने के लिए ज़रूरी SQL स्टेटमेंट मिलेंगे. इसका इस्तेमाल करके, अपने मौजूदा डेटाबेस स्कीमा से मेल खाने के लिए, GraphQL स्कीमा को बार-बार बेहतर बनाया जा सकता है.

  4. आगे चलकर, स्थानीय डेवलपमेंट एनवायरमेंट में, GraphQL स्कीमा, क्वेरी, और म्यूटेशन को तेज़ी से बेहतर बनाया जा सकता है. इसके बाद, संतुष्ट होने पर, firebase dataconnect:sql:diff का इस्तेमाल करके, SQL माइग्रेशन स्टेटमेंट हासिल किए जा सकते हैं. इन्हें अपने कस्टम टूलिंग और फ़्लो का इस्तेमाल करके, PostgreSQL पर लागू किया जा सकता है.

  5. इसके अलावा, हो सकता है कि आपने PostgreSQL डेटाबेस में सीधे बदलाव किए हों. इसके बाद, उन्हें वापस GraphQL स्कीमा में पोर्ट करने की कोशिश करें. हमारा सुझाव है कि GraphQL-फ़र्स्ट अप्रोच का इस्तेमाल करें, क्योंकि ऐसे मामले हो सकते हैं जहां स्कीमा में किए गए बदलाव काम न करें. इसके अलावा, अगर आपने ऐसे बदलाव डिप्लॉय किए हैं जिनकी वजह से, PostgreSQL स्कीमा, डिप्लॉय किए गए कनेक्टर क्वेरी या म्यूटेशन के साथ काम नहीं करता है, तो हो सकता है कि वे कनेक्टर काम करना बंद कर दें या गलत तरीके से काम करें.