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

डेटा के गलती से मिट जाने की समस्या को वापस पाने और ऑफ़लाइन प्रोसेसिंग के लिए, डेटा एक्सपोर्ट करने के लिए, 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 कंसोल में इंपोर्ट/एक्सपोर्ट पेज पर जाकर, वह खाता देखा जा सकता है जिसका इस्तेमाल आपके इंपोर्ट और एक्सपोर्ट ऑपरेशन, अनुरोधों को अनुमति देने के लिए करते हैं. यह भी देखा जा सकता है कि आपके डेटाबेस में, 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_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 कमांड का इस्तेमाल करके, पीआईटीआर डेटा से अपने डेटाबेस को Cloud Storage में एक्सपोर्ट किया जा सकता है. पीआईटीआर का वह डेटा एक्सपोर्ट किया जा सकता है जिसका टाइमस्टैंप, पिछले सात दिनों में पूरे मिनट का हो. हालांकि, यह earliestVersionTime से पहले का नहीं होना चाहिए. अगर तय किए गए टाइमस्टैंप पर डेटा मौजूद नहीं है, तो एक्सपोर्ट की प्रोसेस पूरी नहीं हो पाती.

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

  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 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_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
  --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 कंसोल के इंपोर्ट/एक्सपोर्ट पेज पर, हाल ही में किए गए एक्सपोर्ट और इंपोर्ट ऑपरेशन की सूची देखी जा सकती है.

  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 लेबल लागू करती हैं. Cloud Billing की रिपोर्ट वाले पेज पर, इस लेबल का इस्तेमाल करके इंपोर्ट और एक्सपोर्ट से जुड़ी लागत देखी जा सकती है:

फ़िल्टर मेन्यू से, 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 कंसोल में इंपोर्ट/एक्सपोर्ट पेज पर जाकर, यह देखा जा सकता है कि इंपोर्ट और एक्सपोर्ट के लिए, अनुरोधों को अनुमति देने के लिए किस खाते का इस्तेमाल किया जाता है. यह भी देखा जा सकता है कि आपका डेटाबेस, 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 सेवा एजेंट पर माइग्रेट नहीं हुआ है, तो आपको माइग्रेशन के बारे में बताने वाला बैनर और बकेट का स्टेटस देखें बटन दिखेगा. अगले चरण में, अनुमति से जुड़ी संभावित गड़बड़ियों का पता लगाने और उन्हें ठीक करने में मदद मिलती है.

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

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