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

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

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

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

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

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

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

मुफ़्त में आज़माने से जुड़ी सीमाएं

Cloud SQL for PostgreSQL की ये सुविधाएं, Spark या Blaze के मुफ़्त में आज़माने वाले वर्शन में काम नहीं करतीं:

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

कुछ समय के लिए उपलब्ध डेटाबेस में शामिल होने की सीमाएं

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

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

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

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

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

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

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

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

  • Cloud SQL इंस्टेंस को रोकना और फिर से शुरू करना
  • Cloud SQL डेटाबेस (इंस्टेंस में) बनाना और मिटाना
  • फ़्लैग के साथ PostgreSQL डेटाबेस इंस्टेंस शुरू करें और कई तरह के एक्सटेंशन इस्तेमाल करें
  • Google Cloud कंसोल में, Cloud SQL की परफ़ॉर्मेंस मॉनिटर करने की सुविधाओं का इस्तेमाल करके परफ़ॉर्मेंस मॉनिटर करना
  • IAM, Secret Manager, डेटा एन्क्रिप्शन, और Auth प्रॉक्सी जैसी सुविधाओं की मदद से, Cloud SQL के ऐक्सेस और सुरक्षा को मैनेज करें
  • Cloud SQL उपयोगकर्ताओं को जोड़ना, मिटाना, और मैनेज करना.

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

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

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

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

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

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

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

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

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

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

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

firebase dataconnect:sql:grant --role writer

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

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

डेटाबेस को डिफ़ॉल्ट रूप से उपलब्ध कराने और मैनेज करने की प्रोसेस में यह माना जाता है कि आपका प्रोजेक्ट, नए (ग्रीनफ़ील्ड) डेटाबेस का इस्तेमाल करता है. साथ ही, 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 की भूमिकाओं के बारे में ज़्यादा जानकारी, सीएलआई रेफ़रंस गाइड में दी गई है.

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