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

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

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

इसके अलावा, GCP कंसोल का इस्तेमाल करके यह भूमिका असाइन की जा सकती है.

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

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

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

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

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

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

डेटा एक्सपोर्ट किया

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

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

Google Cloud Console

  1. Google Cloud Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  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 Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  2. डेटाबेस की सूची से ज़रूरी डेटाबेस चुनें.

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

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

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

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

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

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

Gcloud

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

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
--database=[DATABASE]

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

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

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

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

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

  1. मनमुताबिक वापस पाने के टाइमस्टैंप में snapshot-time पैरामीटर तय करके, डेटाबेस को एक्सपोर्ट करें.

    Gcloud

    डेटाबेस को अपने बकेट में एक्सपोर्ट करने के लिए, नीचे दिया गया कमांड चलाएं.

    gcloud firestore export gs://[BUCKET_NAME_PATH] \
        --snapshot-time=[PITR_TIMESTAMP] \
        --collection-ids=[COLLECTION_IDS] \
        --namespace-ids=[NAMESPACE_IDS]
    

    कहां,

    • PITR_TIMESTAMP - जानकारी के स्तर पर मौजूद पीआईपीटी टाइमस्टैंप, जैसे कि 2023-05-26T10:20:00.00Z.

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

    • आरएफ़सी 3339 फ़ॉर्मैट में टाइमस्टैंप डालें. उदाहरण के लिए, 2020-09-01T23:59:30.234233Z.
    • पक्का करें कि आपने जो टाइमस्टैंप डाला है वह पिछले सात दिनों के पूरे मिनट का टाइमस्टैंप हो, लेकिन earliestVersionTime से पहले का नहीं. अगर तय किए गए टाइमस्टैंप पर डेटा मौजूद नहीं है, तो गड़बड़ी जनरेट होती है.
    • PITR एक्सपोर्ट की प्रोसेस पूरी न हो पाने के लिए, आपसे शुल्क नहीं लिया जाएगा.

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

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

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

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

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

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

  • .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 Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  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 Platform कंसोल के 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_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
  --database=[DATABASE]

PITR एक्सपोर्ट इंपोर्ट करना

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

एक्सपोर्ट और इंपोर्ट ऑपरेशन को मैनेज करना

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

ऑपरेशन के नामों से पहले projects/[PROJECT_ID]/databases/(default)/operations/ लगा होता है, उदाहरण के लिए:

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

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

सभी एक्सपोर्ट और इंपोर्ट ऑपरेशन की सूची बनाएं

Google Cloud Console

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

  1. Google Cloud Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  2. डेटाबेस की सूची से ज़रूरी डेटाबेस चुनें.

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

Gcloud

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

gcloud firestore operations list

कार्रवाई की स्थिति देखें

Google Cloud Console

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

  1. Google Cloud Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  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 Platform Console के इंपोर्ट/एक्सपोर्ट पेज पर जाकर, चल रहे एक्सपोर्ट या इंपोर्ट कार्रवाई को रद्द किया जा सकता है.

  1. Google Cloud Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  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 Platform Console में इंपोर्ट/एक्सपोर्ट पेज पर जाकर, यह देखा जा सकता है कि इंपोर्ट और एक्सपोर्ट की कार्रवाइयों की अनुमति देने के लिए, आपने किस खाते का इस्तेमाल किया है. आप यह भी देख सकते हैं कि आपका डेटाबेस पहले से Cloud Firestore के सर्विस एजेंट का इस्तेमाल कर रहा है या नहीं.

  1. Google Cloud Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  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 Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  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 Platform कंसोल में, डेटाबेस पेज पर जाएं.

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

  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 बकेट की अनुमतियों की जांच करने और उन्हें अपडेट करने के बाद, कंस्ट्रेंट को फिर से चालू किया जा सकता है.