डेटा एक्सपोर्ट और इंपोर्ट करना

Cloud Firestore मैनेज की गई एक्सपोर्ट और इंपोर्ट सेवा का इस्तेमाल करके, गलती से मिटाए गए डेटा को वापस लाया जा सकता है. साथ ही, ऑफ़लाइन प्रोसेसिंग के लिए डेटा एक्सपोर्ट किया जा सकता है. आपके पास सभी दस्तावेज़ों या सिर्फ़ कुछ कलेक्शन ग्रुप को एक्सपोर्ट करने का विकल्प होता है. इसी तरह, एक्सपोर्ट किए गए डेटा को पूरी तरह से या सिर्फ़ कुछ कलेक्शन ग्रुप को इंपोर्ट किया जा सकता है. एक Cloud Firestore डेटाबेस से एक्सपोर्ट किए गए डेटा को दूसरे Cloud Firestore डेटाबेस में इंपोर्ट किया जा सकता है. BigQuery में Cloud Firestoreएक्सपोर्ट किए गए डेटा को लोड भी किया जा सकता है.

इस पेज पर, मैनेज की गई एक्सपोर्ट और इंपोर्ट सेवा और Cloud Storage का इस्तेमाल करके, Cloud Firestore दस्तावेज़ों को एक्सपोर्ट और इंपोर्ट करने का तरीका बताया गया है. Cloud Firestore मैनेज किए गए एक्सपोर्ट और इंपोर्ट की सेवा, gcloud कमांड-लाइन टूल और Cloud Firestore एपीआई (REST, RPC) के ज़रिए उपलब्ध है.

शुरू करने से पहले

मैनेज की गई एक्सपोर्ट और इंपोर्ट सेवा का इस्तेमाल करने से पहले, आपको ये टास्क पूरे करने होंगे:

  1. अपने Google Cloud प्रोजेक्ट के लिए बिलिंग चालू करें. एक्सपोर्ट और इंपोर्ट करने की सुविधा का इस्तेमाल सिर्फ़ उन Google Cloud प्रोजेक्ट के लिए किया जा सकता है जिनमें बिलिंग की सुविधा चालू है.
  2. अपने Cloud Firestore डेटाबेस की जगह के आस-पास की किसी जगह पर, अपने प्रोजेक्ट के लिए Cloud Storage बकेट बनाएं. एक्सपोर्ट और इंपोर्ट करने के लिए, अनुरोधकर्ता के पेमेंट वाले बकेट या रैपिड बकेट का इस्तेमाल नहीं किया जा सकता.
  3. पक्का करें कि आपके खाते के पास Cloud Firestore और Cloud Storage के लिए ज़रूरी अनुमतियां हों. अगर आप प्रोजेक्ट के मालिक हैं, तो आपके खाते के पास ज़रूरी अनुमतियां हैं. इसके अलावा, यहां दी गई भूमिकाओं से एक्सपोर्ट और इंपोर्ट करने के लिए ज़रूरी अनुमतियां मिलती हैं. साथ ही, Cloud Storage को ऐक्सेस करने की अनुमति भी मिलती है:

सर्विस एजेंट के लिए अनुमतियां

एक्सपोर्ट और इंपोर्ट करने की कार्रवाइयों में, Cloud Firestore सेवा एजेंट का इस्तेमाल किया जाता है. इससे Cloud Storage कार्रवाइयों को अनुमति दी जाती है. Cloud Firestore सेवा एजेंट नाम रखने के इस फ़ॉर्मैट का इस्तेमाल करता है:

Cloud Firestore सर्विस एजेंट
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

सेवा एजेंट के बारे में ज़्यादा जानने के लिए, सेवा एजेंट लेख पढ़ें.

Cloud Firestore सेवा एजेंट को उस Cloud Storage बकेट का ऐक्सेस चाहिए जिसका इस्तेमाल एक्सपोर्ट या इंपोर्ट करने के लिए किया जाता है. अगर आपका Cloud Storage बकेट, Cloud Firestore डेटाबेस वाले प्रोजेक्ट में ही है, तो Cloud Firestore सर्विस एजेंट के पास बकेट को ऐक्सेस करने की अनुमति डिफ़ॉल्ट रूप से होती है.

अगर Cloud Storage बकेट किसी दूसरे प्रोजेक्ट में है, तो आपको Cloud Firestore सेवा एजेंट को Cloud Storage बकेट का ऐक्सेस देना होगा.

सर्विस एजेंट को भूमिकाएं असाइन करना

नीचे दी गई भूमिकाओं में से कोई एक भूमिका असाइन करने के लिए, gsutil कमांड-लाइन टूल का इस्तेमाल किया जा सकता है. उदाहरण के लिए, Cloud Firestore सर्विस एजेंट को स्टोरेज एडमिन की भूमिका असाइन करने के लिए, यह कमांड चलाएं:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

PROJECT_NUMBER की जगह अपना प्रोजेक्ट नंबर डालें. इसका इस्तेमाल, आपके Cloud Firestore सेवा एजेंट का नाम रखने के लिए किया जाता है. सर्विस एजेंट का नाम देखने के लिए, सर्विस एजेंट का नाम देखना लेख पढ़ें.

इसके अलावा, Google Cloud Console का इस्तेमाल करके, यह भूमिका असाइन की जा सकती है.

सर्विस एजेंट का नाम देखना

Google Cloud Console में इंपोर्ट/एक्सपोर्ट करें पेज पर जाकर, उस खाते को देखा जा सकता है जिसका इस्तेमाल इंपोर्ट और एक्सपोर्ट करने के लिए किया जाता है. यह भी देखा जा सकता है कि आपके डेटाबेस में Cloud Firestore सर्विस एजेंट या लेगसी App Engine सेवा खाते का इस्तेमाल किया जा रहा है या नहीं.

  1. इंपोर्ट/एक्सपोर्ट के तौर पर चलाए गए जॉब लेबल के बगल में, अनुमति वाले खाते को देखें.

एक्सपोर्ट या इंपोर्ट करने के लिए इस्तेमाल किए जाने वाले Cloud Storage बकेट के लिए, सर्विस एजेंट के पास Storage Admin की भूमिका होनी चाहिए.

अपने प्रोजेक्ट के लिए gcloud सेट अप करना

Google Cloud Console या gcloud कमांड-लाइन टूल की मदद से, इंपोर्ट और एक्सपोर्ट की कार्रवाइयां शुरू की जा सकती हैं. gcloud का इस्तेमाल करने के लिए, कमांड-लाइन टूल सेट अप करें. इसके बाद, यहां दिए गए किसी एक तरीके से अपने प्रोजेक्ट से कनेक्ट करें:

डेटा एक्सपोर्ट करें

एक्सपोर्ट करने की प्रोसेस में, आपके डेटाबेस में मौजूद दस्तावेज़ों को Cloud Storage बकेट में मौजूद फ़ाइलों के सेट में कॉपी किया जाता है. ध्यान दें कि एक्सपोर्ट किया गया डेटा, डेटाबेस का स्नैपशॉट नहीं होता. यह स्नैपशॉट, एक्सपोर्ट शुरू होने के समय लिया जाता है. एक्सपोर्ट में, ऑपरेशन के दौरान किए गए बदलाव शामिल हो सकते हैं.

सभी दस्तावेज़ एक्सपोर्ट करें

Google Cloud Console

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.

  4. एक्सपोर्ट करें पर क्लिक करें.

  5. पूरा डेटाबेस एक्सपोर्ट करें विकल्प पर क्लिक करें.

  6. डेस्टिनेशन चुनें के नीचे, Cloud Storage बकेट का नाम डालें या बकेट चुनने के लिए, ब्राउज़ करें बटन का इस्तेमाल करें.

  7. एक्सपोर्ट करें पर क्लिक करें.

कंसोल, इंपोर्ट/एक्सपोर्ट करें पेज पर वापस आ जाता है. अगर ऑपरेशन सफलतापूर्वक शुरू हो जाता है, तो पेज, हाल ही में इंपोर्ट और एक्सपोर्ट किए गए डेटा वाले पेज पर एक एंट्री जोड़ता है. अगर ऐसा नहीं होता है, तो पेज पर गड़बड़ी का मैसेज दिखता है.

gcloud

अपने डेटाबेस के सभी दस्तावेज़ों को एक्सपोर्ट करने के लिए, firestore export कमांड का इस्तेमाल करें. साथ ही, [BUCKET_NAME] की जगह अपने Cloud Storage बकेट का नाम डालें. gcloud टूल को कार्रवाई पूरी होने का इंतज़ार करने से रोकने के लिए, --async फ़्लैग जोड़ें.

  gcloud firestore export gs://[BUCKET_NAME] \
  --database=[DATABASE]

इनकी जगह ये डालें:

  • BUCKET_NAME: बकेट के नाम के बाद फ़ाइल का प्रीफ़िक्स जोड़कर, एक्सपोर्ट किए गए डेटा को व्यवस्थित करें. उदाहरण के लिए, BUCKET_NAME/my-exports-folder/export-name. अगर फ़ाइल का प्रीफ़िक्स नहीं दिया जाता है, तो मैनेज की गई एक्सपोर्ट सेवा, मौजूदा टाइमस्टैंप के आधार पर प्रीफ़िक्स बनाती है.

  • DATABASE: उस डेटाबेस का नाम जिससे आपको दस्तावेज़ एक्सपोर्ट करने हैं. डिफ़ॉल्ट डेटाबेस के लिए, --database='(default)' का इस्तेमाल करें.

एक्सपोर्ट करने की प्रोसेस शुरू होने के बाद, टर्मिनल को बंद करने से प्रोसेस रद्द नहीं होती. किसी प्रोसेस को रद्द करना लेख पढ़ें.

चुनिंदा कलेक्शन ग्रुप एक्सपोर्ट करना

Google Cloud Console

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.

  4. एक्सपोर्ट करें पर क्लिक करें.

  5. एक या उससे ज़्यादा कलेक्शन ग्रुप एक्सपोर्ट करें विकल्प पर क्लिक करें. एक या उससे ज़्यादा कलेक्शन ग्रुप चुनने के लिए, मेन्यू का इस्तेमाल करें.

  6. डेस्टिनेशन चुनें के नीचे, Cloud Storage बकेट का नाम डालें या बकेट चुनने के लिए, ब्राउज़ करें बटन का इस्तेमाल करें.

  7. एक्सपोर्ट करें पर क्लिक करें.

कंसोल, इंपोर्ट/एक्सपोर्ट करें पेज पर वापस आ जाता है. अगर ऑपरेशन सफलतापूर्वक शुरू हो जाता है, तो पेज, हाल ही में इंपोर्ट और एक्सपोर्ट किए गए डेटा वाले पेज पर एक एंट्री जोड़ता है. अगर ऐसा नहीं होता है, तो पेज पर गड़बड़ी का मैसेज दिखता है.

gcloud

किसी खास कलेक्शन ग्रुप को एक्सपोर्ट करने के लिए, --collection-ids फ़्लैग का इस्तेमाल करें. यह ऑपरेशन, सिर्फ़ दिए गए आईडी वाले कलेक्शन ग्रुप एक्सपोर्ट करता है. कलेक्शन ग्रुप में वे सभी कलेक्शन और सब-कलेक्शन शामिल होते हैं जिनका फ़ाइनल कलेक्शन आईडी, कलेक्शन ग्रुप आईडी होता है.

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] \
--database=[DATABASE]

उदाहरण के लिए, foo डेटाबेस में restaurants कलेक्शन डिज़ाइन किया जा सकता है, ताकि उसमें ratings, reviews या outlets जैसे कई सब-कलेक्शन शामिल किए जा सकें. reviews कलेक्शन ग्रुप को एक्सपोर्ट करने के लिए, उसे साफ़ तौर पर लिस्ट किया जाना चाहिए:

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=reviews \
--database='cymbal'

अगर इसके बजाय restaurants को चुना जाता है, तो reviews सब-कलेक्शन में मौजूद दस्तावेज़ एक्सपोर्ट नहीं किए जाएंगे.

किसी पीआईटीआर टाइमस्टैंप से एक्सपोर्ट करना

अपने डेटाबेस को Cloud Storage में एक्सपोर्ट किया जा सकता है. इसके लिए, पीआईटीआर डेटा का इस्तेमाल करें. आपके पास PITR डेटा को एक्सपोर्ट करने का विकल्प होता है. इसके लिए, टाइमस्टैंप पिछले सात दिनों के अंदर का होना चाहिए. हालांकि, यह earliestVersionTime से पहले का नहीं होना चाहिए. अगर तय किए गए टाइमस्टैंप पर डेटा मौजूद नहीं है, तो एक्सपोर्ट करने की प्रोसेस पूरी नहीं होगी.

पीआईटीआर एक्सपोर्ट ऑपरेशन में सभी फ़िल्टर काम करते हैं. इनमें सभी दस्तावेज़ों को एक्सपोर्ट करना और खास कलेक्शन ग्रुप को एक्सपोर्ट करना शामिल है.

पीआईटीआर डेटा एक्सपोर्ट करने से पहले, इन बातों का ध्यान रखें:

  • टाइमस्टैंप को RFC 3339 फ़ॉर्मैट में डालें. उदाहरण के लिए, 2023-05-26T10:20:00.00Z.
  • पक्का करें कि आपने जो टाइमस्टैंप दिया है वह पिछले सात दिनों का हो और पूरा मिनट हो. हालांकि, यह earliestVersionTime से पहले का नहीं होना चाहिए. अगर तय किए गए टाइमस्टैंप पर डेटा मौजूद नहीं है, तो गड़बड़ी का मैसेज दिखता है.
  • पीआईटीआर एक्सपोर्ट पूरा न होने पर, आपसे कोई शुल्क नहीं लिया जाता.

कंसोल

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं
  2. डेटाबेस की सूची में से कोई डेटाबेस चुनें.
  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.
  4. एक्सपोर्ट करें पर क्लिक करें.
  5. एक्सपोर्ट सोर्स को कॉन्फ़िगर करें, ताकि पूरे डेटाबेस या सिर्फ़ कुछ कलेक्शन ग्रुप को एक्सपोर्ट किया जा सके.
  6. एक्सपोर्ट करने के लिए अपने डेटाबेस की स्थिति चुनें सेक्शन में जाकर, किसी पिछली तारीख का डेटा एक्सपोर्ट करें को चुनें.

    एक्सपोर्ट करने के लिए, स्नैपशॉट का समय चुनें

  7. डेस्टिनेशन सेक्शन में, किसी Cloud Storage बकेट का नाम डालें या बकेट चुनने के लिए, ब्राउज़ करें बटन का इस्तेमाल करें.
  8. एक्सपोर्ट करें पर क्लिक करें.

    कंसोल, इंपोर्ट/एक्सपोर्ट करें पेज पर वापस आ जाता है. अगर ऑपरेशन शुरू हो जाता है, तो पेज, हाल ही में इंपोर्ट और एक्सपोर्ट किए गए डेटा की सूची में एक एंट्री जोड़ता है. ऐसा न होने पर, पेज पर गड़बड़ी का मैसेज दिखता है.

gcloud

gcloud firestore export कमांड का इस्तेमाल करके, अपने डेटाबेस को Cloud Storage में एक्सपोर्ट किया जा सकता है. इसके लिए, पीआईटीआर डेटा का इस्तेमाल करें.

डेटाबेस एक्सपोर्ट करें. इसके लिए, snapshot-time पैरामीटर को रिकवरी टाइमस्टैंप पर सेट करें. डेटाबेस को अपने बकेट में एक्सपोर्ट करने के लिए, यह कमांड चलाएं.

gcloud firestore export gs://[BUCKET_NAME_PATH] \
    --snapshot-time=[PITR_TIMESTAMP]

यहां PITR_TIMESTAMP, मिनट के हिसाब से PITR टाइमस्टैंप है. उदाहरण के लिए, 2023-05-26T10:20:00.00Z.

चुनिंदा कलेक्शन ग्रुप एक्सपोर्ट करने के लिए, --collection-ids फ़्लैग जोड़ें.

डेटा इंपोर्ट करना

Cloud Storage में फ़ाइलें एक्सपोर्ट करने के बाद, उन फ़ाइलों में मौजूद दस्तावेज़ों को अपने प्रोजेक्ट या किसी दूसरे प्रोजेक्ट में वापस इंपोर्ट किया जा सकता है. इंपोर्ट करने की कार्रवाइयों के बारे में इन बातों का ध्यान रखें:

  • डेटा इंपोर्ट करने पर, ज़रूरी इंडेक्स को आपके डेटाबेस की मौजूदा इंडेक्स परिभाषाओं का इस्तेमाल करके अपडेट किया जाता है. एक्सपोर्ट में इंडेक्स की परिभाषाएं शामिल नहीं होती हैं.

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

  • अगर आपके डेटाबेस में मौजूद किसी दस्तावेज़ पर इंपोर्ट का असर नहीं पड़ता है, तो इंपोर्ट के बाद भी वह आपके डेटाबेस में बना रहेगा.

  • इंपोर्ट करने की कार्रवाइयों से Cloud Functions ट्रिगर नहीं होते. स्नैपशॉट लिसनर को इंपोर्ट ऑपरेशन से जुड़े अपडेट मिलते हैं.

  • आपको एक्सपोर्ट की ओरिजनल आउटपुट फ़ाइलों में मौजूद Cloud Firestore दस्तावेज़ों के अलावा, कोई नया दस्तावेज़ नहीं जोड़ना चाहिए. साथ ही, इंपोर्ट करने से पहले GCS फ़ाइलों से कोई मौजूदा दस्तावेज़ नहीं हटाना चाहिए. ऐसा करने पर, इंपोर्ट नहीं किया जा सकेगा.

  • .overall_export_metadata फ़ाइल का नाम, उसके पैरंट फ़ोल्डर के नाम से मेल खाना चाहिए:

    gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/PARENT_FOLDER_NAME/PARENT_FOLDER_NAME.overall_export_metadata

    अगर आपको एक्सपोर्ट की गई आउटपुट फ़ाइलों को किसी दूसरी जगह ले जाना है या उनकी कॉपी बनानी है, तो PARENT_FOLDER_NAME और .overall_export_metadata फ़ाइल के नाम को एक जैसा रखें.

एक्सपोर्ट किए गए सभी दस्तावेज़ इंपोर्ट करना

Google Cloud Console

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.

  4. इंपोर्ट करें पर क्लिक करें.

  5. फ़ाइल का नाम फ़ील्ड में, एक्सपोर्ट की गई .overall_export_metadata फ़ाइल का नाम डालें. फ़ाइल चुनने के लिए, ब्राउज़ करें बटन का इस्तेमाल किया जा सकता है.

  6. इंपोर्ट करें पर क्लिक करें.

कंसोल, इंपोर्ट/एक्सपोर्ट करें पेज पर वापस आ जाता है. अगर ऑपरेशन सफलतापूर्वक शुरू हो जाता है, तो पेज, हाल ही में इंपोर्ट और एक्सपोर्ट किए गए डेटा वाले पेज पर एक एंट्री जोड़ता है. अगर ऐसा नहीं होता है, तो पेज पर गड़बड़ी का मैसेज दिखता है.

gcloud

पिछली एक्सपोर्ट कार्रवाई से दस्तावेज़ इंपोर्ट करने के लिए, firestore import कमांड का इस्तेमाल करें.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]

इनकी जगह ये डालें:

  • BUCKET_NAME/EXPORT_PREFIX: एक्सपोर्ट की गई फ़ाइलों की जगह.

  • DATABASE: डेटाबेस का नाम. डिफ़ॉल्ट डेटाबेस के लिए, --database='(default)' का इस्तेमाल करें.

उदाहरण के लिए:

gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'

Google Cloud Console में Cloud Storage ब्राउज़र में जाकर, एक्सपोर्ट की गई फ़ाइलों की जगह की पुष्टि की जा सकती है:

Cloud Storage ब्राउज़र खोलें

डेटा इंपोर्ट करने की प्रोसेस शुरू होने के बाद, टर्मिनल को बंद करने से प्रोसेस रद्द नहीं होती. किसी प्रोसेस को रद्द करना लेख पढ़ें.

कलेक्शन ग्रुप इंपोर्ट करना

Google Cloud Console

कंसोल में, कुछ कलेक्शन ग्रुप नहीं चुने जा सकते. इसके बजाय, gcloud का इस्तेमाल करें.

gcloud

एक्सपोर्ट की गई फ़ाइलों के सेट से, कुछ कलेक्शन ग्रुप इंपोर्ट करने के लिए, --collection-ids फ़्लैग का इस्तेमाल करें. इस ऑपरेशन से, सिर्फ़ दिए गए आईडी वाले कलेक्शन ग्रुप इंपोर्ट किए जाते हैं. कलेक्शन ग्रुप में वे सभी कलेक्शन और सब-कलेक्शन शामिल होते हैं जिनका फ़ाइनल कलेक्शन आईडी, कलेक्शन ग्रुप आईडी होता है. --database फ़्लैग का इस्तेमाल करके, डेटाबेस का नाम डालें. डिफ़ॉल्ट डेटाबेस के लिए, --database='(default)' का इस्तेमाल करें.

सिर्फ़ कुछ खास कलेक्शन ग्रुप एक्सपोर्ट करने पर, उन्हें इंपोर्ट किया जा सकता है. सभी दस्तावेज़ों को एक्सपोर्ट करने पर, किसी खास कलेक्शन ग्रुप को इंपोर्ट नहीं किया जा सकता.

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] \
  --database=[DATABASE]

पीआईटीआर एक्सपोर्ट इंपोर्ट करना

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

एक्सपोर्ट और इंपोर्ट करने की कार्रवाइयां मैनेज करना

एक्सपोर्ट या इंपोर्ट की प्रोसेस शुरू करने के बाद, Cloud Firestore इस प्रोसेस को एक यूनीक नाम असाइन करता है. कार्रवाई का नाम इस्तेमाल करके, कार्रवाई को मिटाया जा सकता है, रद्द किया जा सकता है या उसके स्टेटस की जांच की जा सकती है.

कार्रवाई के नामों से पहले projects/[PROJECT_ID]/databases/(default)/operations/ प्रीफ़िक्स लगाया जाता है. उदाहरण के लिए:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

हालांकि, describe, cancel, और delete कमांड के लिए ऑपरेशन का नाम तय करते समय, प्रीफ़िक्स को छोड़ा जा सकता है.

एक्सपोर्ट और इंपोर्ट से जुड़ी सभी कार्रवाइयों की सूची बनाना

Google Cloud Console

Google Cloud Console के इंपोर्ट/एक्सपोर्ट करें पेज पर, हाल ही में किए गए एक्सपोर्ट और इंपोर्ट के कामों की सूची देखी जा सकती है.

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.

gcloud

एक्सपोर्ट और इंपोर्ट की हाल ही में पूरी हुई और चल रही सभी कार्रवाइयों को देखने के लिए, operations list कमांड का इस्तेमाल करें:

gcloud firestore operations list

कार्रवाई का स्टेटस देखना

Google Cloud Console

Google Cloud Console के इंपोर्ट/एक्सपोर्ट पेज पर जाकर, हाल ही में किए गए एक्सपोर्ट या इंपोर्ट ऑपरेशन की स्थिति देखी जा सकती है.

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.

gcloud

एक्सपोर्ट या इंपोर्ट ऑपरेशन की स्थिति दिखाने के लिए, operations describe कमांड का इस्तेमाल करें.

gcloud firestore operations describe [OPERATION_NAME]

पूरा होने में लगने वाले समय का अनुमान लगाना

ज़्यादा समय तक चलने वाली कार्रवाई के स्टेटस के लिए किए गए अनुरोध से, workEstimated और workCompleted मेट्रिक मिलती हैं. इनमें से हर मेट्रिक को बाइट की संख्या और इकाइयों की संख्या, दोनों में दिखाया जाता है:

  • workEstimated से, अनुमानित कुल बाइट और दस्तावेज़ों की संख्या का पता चलता है. यह संख्या बताती है कि कोई कार्रवाई कितने बाइट और दस्तावेज़ों को प्रोसेस करेगी. अगर Cloud Firestore अनुमान नहीं लगा पाता है, तो हो सकता है कि वह इस मेट्रिक को शामिल न करे.

  • workCompleted से पता चलता है कि अब तक कितने बाइट और दस्तावेज़ प्रोसेस किए गए हैं. कार्रवाई पूरी होने के बाद, वैल्यू में प्रोसेस किए गए बाइट और दस्तावेज़ों की कुल संख्या दिखती है. यह संख्या, workEstimated की वैल्यू से ज़्यादा हो सकती है.

प्रोग्रेस का अनुमान लगाने के लिए, workCompleted को workEstimated से भाग दें. यह अनुमान गलत हो सकता है, क्योंकि यह आंकड़ों को इकट्ठा करने में लगने वाले समय पर निर्भर करता है.

कार्रवाई रद्द करना

Google Cloud Console

Google Cloud Console के इंपोर्ट/एक्सपोर्ट करें पेज पर जाकर, एक्सपोर्ट या इंपोर्ट की प्रोसेस को रद्द किया जा सकता है.

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें. हाल ही में इंपोर्ट और एक्सपोर्ट किए गए डेटा टेबल में, फ़िलहाल चल रहे ऑपरेशनों के लिए, पूरा हुआ कॉलम में रद्द करें बटन शामिल है. कार्रवाई रोकने के लिए, रद्द करें बटन पर क्लिक करें. कार्रवाई पूरी तरह से रुक जाने पर, बटन का नाम बदलकर रद्द किया जा रहा है हो जाता है. इसके बाद, रद्द किया गया हो जाता है.

कंसोल में, हाल ही में इंपोर्ट और एक्सपोर्ट किए गए डेटा की टेबल दिखाई गई है. इसमें, डेटा इंपोर्ट करने की प्रोसेस जारी है. साथ ही, इस प्रोसेस को रोकने के लिए, 'रद्द करें' विकल्प दिया गया है.

gcloud

operations cancel निर्देश का इस्तेमाल करके, जारी किए गए किसी ऑपरेशन को रोका जा सकता है:

gcloud firestore operations cancel [OPERATION_NAME]

चल रही कार्रवाई को रद्द करने से, कार्रवाई पहले जैसी नहीं होती. एक्सपोर्ट करने की प्रोसेस रद्द होने पर, पहले से एक्सपोर्ट किए गए दस्तावेज़ Cloud Storage में मौजूद रहेंगे. वहीं, इंपोर्ट करने की प्रोसेस रद्द होने पर, आपके डेटाबेस में पहले से किए गए अपडेट मौजूद रहेंगे. एक्सपोर्ट की प्रोसेस पूरी न होने पर, उसे इंपोर्ट नहीं किया जा सकता.

किसी कार्रवाई को मिटाना

हाल ही की कार्रवाइयों की सूची से किसी कार्रवाई को हटाने के लिए, gcloud firestore operations delete कमांड का इस्तेमाल करें. इस कमांड से, Cloud Storage से एक्सपोर्ट की गई फ़ाइलें नहीं मिटेंगी.

gcloud firestore operations delete [OPERATION_NAME]

एक्सपोर्ट और इंपोर्ट करने की कार्रवाइयों के लिए बिलिंग और कीमत

मैनेज की गई एक्सपोर्ट और इंपोर्ट सेवा का इस्तेमाल करने से पहले, आपको अपने Google Cloud प्रोजेक्ट के लिए बिलिंग चालू करनी होगी.

डेटा एक्सपोर्ट और इंपोर्ट करने पर, दस्तावेज़ों को पढ़ने और लिखने के लिए शुल्क लिया जाता है. यह शुल्क, Cloud Firestore की कीमत में दिए गए रेट के हिसाब से लिया जाता है. एक्सपोर्ट करने की कार्रवाइयों के लिए, एक्सपोर्ट किए गए हर दस्तावेज़ के हिसाब से एक बार पढ़ने की कार्रवाई की जाती है. इंपोर्ट करने की कार्रवाइयों में, इंपोर्ट किए गए हर दस्तावेज़ के लिए एक बार बदलाव करने की कार्रवाई की जाती है.

Cloud Storage में सेव की गई आउटपुट फ़ाइलों को, Cloud Storage डेटा स्टोरेज की लागत में गिना जाता है.

एक्सपोर्ट या इंपोर्ट की कार्रवाइयों के पूरा होने तक, आपको Google Cloud बजट से जुड़ी सूचनाएं नहीं मिलेंगी. एक्सपोर्ट और इंपोर्ट करने से, कंसोल के इस्तेमाल वाले सेक्शन में दिखने वाले इस्तेमाल पर कोई असर नहीं पड़ेगा.

एक्सपोर्ट और इंपोर्ट करने का शुल्क देखना

एक्सपोर्ट और इंपोर्ट करने की कार्रवाइयों के लिए, बिल की गई कार्रवाइयों पर goog-firestoremanaged:exportimport लेबल लागू होता है. क्लाउड बिलिंग रिपोर्ट पेज पर, इस लेबल का इस्तेमाल करके, इंपोर्ट और एक्सपोर्ट से जुड़ी लागत देखी जा सकती है:

फ़िल्टर मेन्यू से goog-firestoremanaged लेबल ऐक्सेस करें.

BigQuery में एक्सपोर्ट करना

Cloud Firestore से एक्सपोर्ट किए गए डेटा को BigQuery में लोड किया जा सकता है. हालांकि, ऐसा सिर्फ़ तब किया जा सकता है, जब आपने collection-ids फ़िल्टर तय किया हो. Cloud Firestore एक्सपोर्ट से डेटा लोड करना लेख पढ़ें.

BigQuery कॉलम की सीमा

BigQuery हर टेबल के लिए, 10,000 कॉलम की सीमा तय करता है. Cloud Firestore एक्सपोर्ट करने की कार्रवाइयों से, हर कलेक्शन ग्रुप के लिए BigQuery टेबल स्कीमा जनरेट होता है. इस स्कीमा में, कलेक्शन ग्रुप में मौजूद हर यूनीक फ़ील्ड का नाम, स्कीमा कॉलम बन जाता है. अगर किसी कलेक्शन ग्रुप का BigQuery स्कीमा 10,000 कॉलम से ज़्यादा है, तो Cloud Firestore एक्सपोर्ट ऑपरेशन, कॉलम की सीमा से कम रहने की कोशिश करता है. इसके लिए, मैप फ़ील्ड को बाइट के तौर पर माना जाता है. अगर इस कन्वर्ज़न से कॉलम की संख्या 10,000 से कम हो जाती है, तो डेटा को BigQuery में लोड किया जा सकता है. हालांकि, मैप फ़ील्ड में मौजूद सब-फ़ील्ड को क्वेरी नहीं किया जा सकता. अगर अब भी कॉलम की संख्या 10,000 से ज़्यादा है, तो एक्सपोर्ट करने की प्रोसेस से कलेक्शन ग्रुप के लिए BigQuery स्कीमा जनरेट नहीं होता. साथ ही, BigQuery में इसका डेटा लोड नहीं किया जा सकता.

एक्सपोर्ट फ़ॉर्मैट और मेटाडेटा फ़ाइलें

मैनेज किए गए एक्सपोर्ट का आउटपुट, LevelDB लॉग फ़ॉर्मैट का इस्तेमाल करता है.

मेटाडेटा फ़ाइलें

एक्सपोर्ट करने की प्रोसेस, आपके चुने गए हर कलेक्शन ग्रुप के लिए एक मेटाडेटा फ़ाइल बनाती है. मेटाडेटा फ़ाइलों का नाम आम तौर पर ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata होता है.

मेटाडेटा फ़ाइलें, प्रोटोकॉल बफ़र होती हैं. इन्हें protoc प्रोटोकॉल कंपाइलर की मदद से डिकोड किया जा सकता है. उदाहरण के लिए, एक्सपोर्ट की गई फ़ाइलों में मौजूद कलेक्शन ग्रुप का पता लगाने के लिए, मेटाडेटा फ़ाइल को डिकोड किया जा सकता है:

protoc --decode_raw < export0.export_metadata

सर्विस एजेंट का माइग्रेशन

Cloud Firestore, इंपोर्ट और एक्सपोर्ट के ऑपरेशनों को अनुमति देने के लिए, App Engine सेवा खाते का इस्तेमाल करने के बजाय, Cloud Firestore सर्विस एजेंट का इस्तेमाल करता है. सर्विस एजेंट और सेवा खाते के लिए, नाम रखने के इन नियमों का पालन किया जाता है:

Cloud Firestore सर्विस एजेंट
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Cloud Firestore ने Cloud Firestore सेवा एजेंट के बजाय, App Engine डिफ़ॉल्ट सेवा खाते का इस्तेमाल किया था. अगर आपका डेटाबेस अब भी डेटा इंपोर्ट या एक्सपोर्ट करने के लिए App Engine सेवा खाते का इस्तेमाल करता है, तो हमारा सुझाव है कि आप इस सेक्शन में दिए गए निर्देशों का पालन करके, Cloud Firestore सेवा एजेंट का इस्तेमाल करें.

App Engine सेवा खाता
PROJECT_ID@appspot.gserviceaccount.com

Cloud Firestore सर्विस एजेंट को प्राथमिकता दी जाती है, क्योंकि यह Cloud Firestore के लिए खास है. App Engine सेवा खाते को एक से ज़्यादा सेवाओं के साथ शेयर किया गया है.

अनुमति वाला खाता देखना

Google Cloud Console में इंपोर्ट/एक्सपोर्ट करें पेज पर जाकर, यह देखा जा सकता है कि इंपोर्ट और एक्सपोर्ट करने के लिए, किस खाते का इस्तेमाल किया जाता है. यह भी देखा जा सकता है कि आपके डेटाबेस में पहले से ही Cloud Firestore सेवा एजेंट का इस्तेमाल किया जा रहा है या नहीं.

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.
  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.

  4. इंपोर्ट/एक्सपोर्ट के तौर पर चलाए गए जॉब लेबल के बगल में, अनुमति वाले खाते को देखें.

अगर आपका प्रोजेक्ट Cloud Firestore सेवा एजेंट का इस्तेमाल नहीं करता है, तो इनमें से किसी एक तरीके का इस्तेमाल करके, Cloud Firestore सेवा एजेंट पर माइग्रेट किया जा सकता है:

इनमें से पहली तकनीक का इस्तेमाल करना बेहतर है, क्योंकि इससे Cloud Firestore प्रोजेक्ट के स्कोप को एक ही जगह पर सीमित किया जा सकता है. दूसरी तकनीक का इस्तेमाल करने का सुझाव नहीं दिया जाता, क्योंकि इससे Cloud Storage बकेट की मौजूदा अनुमतियां माइग्रेट नहीं होती हैं. हालांकि, यह संगठन के लेवल पर सुरक्षा से जुड़े नियमों का पालन करने की सुविधा देता है.

Cloud Storage बकेट की अनुमतियां देखकर और उन्हें अपडेट करके माइग्रेट करना

माइग्रेट करने की प्रोसेस में दो चरण होते हैं:

  1. Cloud Storage बकेट की अनुमतियां अपडेट करें. ज़्यादा जानकारी के लिए, यहां मौजूद सेक्शन देखें.
  2. Cloud Firestore सेवा एजेंट पर माइग्रेट करने की पुष्टि करें.

सर्विस एजेंट के लिए बकेट की अनुमतियां

अगर एक्सपोर्ट या इंपोर्ट करने की किसी कार्रवाई के लिए, Cloud Storage बकेट का इस्तेमाल किया जाता है, तो आपको Cloud Firestore सेवा एजेंट को उस बकेट के लिए अनुमतियां देनी होंगी. यह बकेट किसी दूसरे प्रोजेक्ट में होनी चाहिए. उदाहरण के लिए, डेटा को किसी दूसरे प्रोजेक्ट में ट्रांसफ़र करने वाली कार्रवाइयों को उस प्रोजेक्ट के बकेट को ऐक्सेस करने की ज़रूरत होती है. अगर ऐसा नहीं किया जाता है, तो Cloud Firestore सेवा एजेंट पर माइग्रेट करने के बाद, ये कार्रवाइयां पूरी नहीं होंगी.

अगर इंपोर्ट और एक्सपोर्ट के वर्कफ़्लो एक ही प्रोजेक्ट में किए जाते हैं, तो अनुमतियों में बदलाव करने की ज़रूरत नहीं होती. Cloud Firestore सेवा एजेंट, डिफ़ॉल्ट रूप से एक ही प्रोजेक्ट में मौजूद बकेट को ऐक्सेस कर सकता है.

Cloud Storage सर्विस एजेंट को ऐक्सेस देने के लिए, अन्य प्रोजेक्ट के service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com बकेट की अनुमतियां अपडेट करें. सर्विस एजेंट को Firestore Service Agent की भूमिका असाइन करें.

Firestore Service Agent भूमिका से, Cloud Storage बकेट में मौजूद फ़ाइलों को पढ़ने और उनमें बदलाव करने की अनुमतियां मिलती हैं. अगर आपको सिर्फ़ पढ़ने या सिर्फ़ लिखने की अनुमतियां देनी हैं, तो कस्टम भूमिका का इस्तेमाल करें.

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

किसी प्रोजेक्ट को Firestore Service Agent पर माइग्रेट करना

App Engine सेवा खाते से Cloud Firestore सेवा एजेंट पर माइग्रेट करने के लिए, यह तरीका अपनाएं. माइग्रेशन पूरा होने के बाद, इसे पहले जैसा नहीं किया जा सकता.

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.
  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.

  4. अगर आपका प्रोजेक्ट अब तक Cloud Firestore सेवा एजेंट पर माइग्रेट नहीं हुआ है, तो आपको माइग्रेशन के बारे में जानकारी देने वाला बैनर दिखेगा. साथ ही, आपको बकेट का स्टेटस देखें बटन दिखेगा. अगले चरण में, अनुमति से जुड़ी संभावित गड़बड़ियों का पता लगाने और उन्हें ठीक करने में मदद मिलती है.

    बकेट का स्टेटस देखें पर क्लिक करें.

    इसके बाद, एक मेन्यू दिखेगा. इसमें माइग्रेशन पूरा करने का विकल्प और Cloud Storage बकेट की सूची होगी. सूची को लोड होने में कुछ मिनट लग सकते हैं.

    इस सूची में वे बकेट शामिल हैं जिनका इस्तेमाल हाल ही में इंपोर्ट और एक्सपोर्ट करने के लिए किया गया था. हालांकि, फ़िलहाल Cloud Firestore सेवा एजेंट को इन बकेट से डेटा पढ़ने और उनमें बदलाव करने की अनुमतियां नहीं दी गई हैं.

  5. अपने प्रोजेक्ट के Cloud Firestore सर्विस एजेंट का प्रिंसिपल नेम नोट करें. सर्विस एजेंट का नाम, इन्हें ऐक्सेस दें लेबल के नीचे दिखता है.
  6. सूची में मौजूद जिस बकेट का इस्तेमाल आपको आने वाले समय में इंपोर्ट या एक्सपोर्ट करने के लिए करना है उसके लिए, यह तरीका अपनाएं:

    1. इस बकेट की टेबल रो में, ठीक करें पर क्लिक करें. इससे, उस बकेट के अनुमतियों वाला पेज नए टैब में खुलता है.

    2. जोड़ें पर क्लिक करें.
    3. नए प्रिंसिपल फ़ील्ड में, अपने Cloud Firestore सेवा एजेंट का नाम डालें.
    4. कोई भूमिका चुनें फ़ील्ड में जाकर, सर्विस एजेंट > Firestore सर्विस एजेंट को चुनें.
    5. सेव करें पर क्लिक करें.
    6. Cloud Firestore इंपोर्ट/एक्सपोर्ट पेज वाले टैब पर वापस जाएं.
    7. सूची में मौजूद अन्य बकेट के लिए, यह तरीका दोहराएं. पक्का करें कि आपने सूची के सभी पेज देखे हों.
  7. Firestore सेवा एजेंट पर माइग्रेट करें पर क्लिक करें. अगर अब भी ऐसे बकेट मौजूद हैं जिनके लिए अनुमति की जांच पूरी नहीं हुई है, तो आपको माइग्रेट करें पर क्लिक करके, माइग्रेशन की पुष्टि करनी होगी.

    माइग्रेशन पूरा होने पर, आपको सूचना मिलती है. माइग्रेशन शुरू होने के बाद, उसे रोका नहीं जा सकता.

माइग्रेशन का स्टेटस देखना

अपने प्रोजेक्ट के माइग्रेशन की स्थिति की पुष्टि करने के लिए:

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.
  3. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें.

  4. इंपोर्ट/एक्सपोर्ट के तौर पर चलाए गए जॉब लेबल के बगल में मौजूद प्रिंसिपल को ढूंढें.

    अगर प्रिंसिपल service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com है, तो इसका मतलब है कि आपका प्रोजेक्ट पहले ही Cloud Firestore सेवा एजेंट पर माइग्रेट हो चुका है. माइग्रेशन को पहले जैसा नहीं किया जा सकता.

    अगर प्रोजेक्ट माइग्रेट नहीं किया गया है, तो पेज के सबसे ऊपर एक बैनर दिखता है. इसमें बकेट की स्थिति देखें बटन होता है. माइग्रेशन पूरा करने के लिए, Firestore सेवा एजेंट पर माइग्रेट करना लेख पढ़ें.

पूरे संगठन के लिए नीति से जुड़ी पाबंदी जोड़ना

  • अपने संगठन की नीति में यह शर्त सेट करें:

    इंपोर्ट/एक्सपोर्ट के लिए, Firestore सर्विस एजेंट की ज़रूरत होती है (firestore.requireP4SAforImportExport).

    इस शर्त के तहत, इंपोर्ट और एक्सपोर्ट करने के लिए Cloud Firestore सेवा एजेंट का इस्तेमाल करना ज़रूरी है, ताकि अनुरोधों को अनुमति दी जा सके. इस पाबंदी को सेट करने के लिए, संगठन की नीतियां बनाना और उन्हें मैनेज करना लेख पढ़ें.

संगठन की इस नीति की पाबंदी को लागू करने से, Cloud Firestore सेवा एजेंट को Cloud Storage बकेट की ज़रूरी अनुमतियां अपने-आप नहीं मिल जाती हैं.

अगर इस पाबंदी की वजह से, इंपोर्ट या एक्सपोर्ट करने से जुड़े किसी भी वर्कफ़्लो में अनुमति से जुड़ी गड़बड़ियां होती हैं, तो इसे बंद किया जा सकता है. इससे, डिफ़ॉल्ट सेवा खाते का इस्तेमाल फिर से शुरू किया जा सकेगा. बकेट की अनुमतियोंCloud Storage की जांच करने और उन्हें अपडेट करने के बाद, इस पाबंदी को फिर से चालू किया जा सकता है.