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

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

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

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