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 कंसोल का इस्तेमाल करें या Firebase CLI का इस्तेमाल करके, लोकल प्रोजेक्ट को शुरू करें. इन वर्कफ़्लो से एक नई SQL Connect सेवा बनती है.

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

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

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

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

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

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

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

आईएएम की भूमिकाओं की मदद से, 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 सेवा और PostgreSQL के लिए Cloud SQL सेवा की परफ़ॉर्मेंस से, आपके अनुभव पर असर पड़ सकता है.

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

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

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

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

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 के आपके परमानेंट डेटाबेस में अपने-आप माइग्रेट हो जाएगा. ऐसा तब होगा, जब डेटाबेस उपलब्ध हो जाएगा.

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

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

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

इसकी मुख्य सीमाएं ये हैं:

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

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

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

  • Cloud SQL इंस्टेंस को बंद और फिर से चालू करना

  • इंस्टेंस में Cloud SQL डेटाबेस बनाना और मिटाना

  • फ़्लैग के साथ PostgreSQL डेटाबेस इंस्टेंस शुरू करना और कई तरह के एक्सटेंशन इस्तेमाल करना

  • Google Cloud कंसोल में, Cloud SQL परफ़ॉर्मेंस मॉनिटर करने की सुविधाओं की मदद से परफ़ॉर्मेंस पर नज़र रखना

  • आईएएम, सीक्रेट मैनेजर, डेटा एन्क्रिप्शन, और ऑथ प्रॉक्सी जैसी सुविधाओं की मदद से, Cloud SQL के ऐक्सेस और सुरक्षा को मैनेज करें

  • Cloud SQL उपयोगकर्ताओं को जोड़ना, मिटाना, और मैनेज करना.

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

PostgreSQL उपयोगकर्ता को भूमिकाएं असाइन करना

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

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

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

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

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

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

PostgreSQL की भूमिकाएं असाइन करना

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

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

firebase dataconnect:sql:grant --role writer

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

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

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

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

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

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

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

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

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

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

  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-first approach का इस्तेमाल करें. ऐसा इसलिए, क्योंकि कुछ मामलों में स्कीमा में किए गए बदलाव काम नहीं करते. इसके अलावा, अगर आपने ऐसे बदलाव लागू किए हैं जिनकी वजह से आपका PostgreSQL स्कीमा, डिप्लॉय किए गए कनेक्टर क्वेरी या म्यूटेशन के साथ काम नहीं करता है, तो हो सकता है कि वे कनेक्टर काम करना बंद कर दें या ठीक से काम न करें.