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

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 Storage कार्रवाइयों को अनुमति देने के लिए, Cloud Firestore सर्विस एजेंट का इस्तेमाल करती हैं. 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 बकेट के नाम से बदलें. --async फ़्लैग जोड़ें, ताकि gcloud टूल को कार्रवाई पूरी होने का इंतज़ार न करना पड़े.

  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 में एक्सपोर्ट किया जा सकता है. पीआईटीआर डेटा को एक्सपोर्ट किया जा सकता है. इसके लिए, पिछले सात दिनों के दौरान का कोई भी टाइमस्टैंप चुना जा सकता है. हालांकि, यह टाइमस्टैंप earliestVersionTime से पहले का नहीं होना चाहिए. अगर तय किए गए टाइमस्टैंप पर डेटा मौजूद नहीं है, तो एक्सपोर्ट की प्रोसेस पूरी नहीं हो पाती.

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

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

  • अपने डेटाबेस पर पीआईटीआर चालू करें. अगर पीआईटीआर की सुविधा बंद है, तो स्नैपशॉट के टाइमस्टैंप पर एक्सपोर्ट नहीं किया जा सकता. भले ही, टाइमस्टैंप earliestVersionTime के बाद पिछले घंटे के अंदर का हो. एक्सपोर्ट करने की प्रोसेस में Point-in-Time Recovery must be enabled in order to execute exports at a snapshot timestamp गड़बड़ी दिखती है.
  • टाइमस्टैंप को आरएफ़सी 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, मिनट के हिसाब से पीआईटीआर टाइमस्टैंप है. उदाहरण के लिए, 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

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. नेविगेशन मेन्यू में, इंपोर्ट/एक्सपोर्ट करें पर क्लिक करें. हाल ही में इंपोर्ट और एक्सपोर्ट की गई फ़ाइलें टेबल में, फ़िलहाल चल रहे ऑपरेशन के लिए, पूरा हो गया कॉलम में रद्द करें बटन शामिल होता है. कार्रवाई रोकने के लिए, रद्द करें बटन पर क्लिक करें. कार्रवाई पूरी तरह से रुकने पर, बटन का मैसेज बदलकर रद्द किया जा रहा है और फिर रद्द किया गया हो जाता है.

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

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 सेवा एजेंट, डिफ़ॉल्ट रूप से उसी प्रोजेक्ट में मौजूद बकेट को ऐक्सेस कर सकता है.

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

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

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

किसी प्रोजेक्ट को Firestore सर्विस एजेंट पर माइग्रेट करना

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

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

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

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

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

    Check Bucket Status पर क्लिक करें.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Require Firestore Service Agent for import/export (firestore.requireP4SAforImportExport).

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

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

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