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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Google Cloud Console

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

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

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

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

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

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

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

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

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

gcloud

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

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

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

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

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

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

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

Google Cloud Console

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

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

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

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

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

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

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

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

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

gcloud

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

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

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

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

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

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

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

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

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

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

कंसोल

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

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

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

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

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

gcloud

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Google Cloud Console

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

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

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

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

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

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

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

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

gcloud

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

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

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

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

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

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

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

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

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

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

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

Google Cloud Console

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

gcloud

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

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

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

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

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

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

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

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

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

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

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

Google Cloud Console

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

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

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

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

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

gcloud

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

gcloud firestore operations list

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

Google Cloud Console

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

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

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

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

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

gcloud

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

gcloud firestore operations describe [OPERATION_NAME]

पूरा होने का अनुमानित समय

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

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

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

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

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

Google Cloud Console

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

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

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

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

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

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

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

gcloud

चल रही किसी कार्रवाई को रोकने के लिए, operations cancel कमांड का इस्तेमाल करें:

gcloud firestore operations cancel [OPERATION_NAME]

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

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

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

gcloud firestore operations delete [OPERATION_NAME]

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

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

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

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

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

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

एक्सपोर्ट और इंपोर्ट करने की कार्रवाइयों से, बिल की गई कार्रवाइयों पर goog-firestoremanaged:exportimport लेबल लागू होता है. 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, इंपोर्ट और एक्सपोर्ट के ऑपरेशनों को अनुमति देने के लिए, Cloud Firestore सेवा खाते का इस्तेमाल करने के बजाय, Cloud Firestore सर्विस एजेंट का इस्तेमाल करता है.App Engine सर्विस एजेंट और सेवा खाते के लिए, नाम रखने के इन नियमों का पालन किया जाता है:

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

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

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

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

के साथ काम नहीं करता.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 Service Agent पर माइग्रेट करें पर क्लिक करें. अगर आपके पास अब भी ऐसे बकेट हैं जिनके लिए अनुमति की जांच नहीं हो पाई है, तो आपको माइग्रेट करें पर क्लिक करके, माइग्रेशन की पुष्टि करनी होगी.

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

माइग्रेशन की स्थिति देखना

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

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

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

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

  4. Import/Export jobs run as लेबल के बगल में मौजूद प्रिंसिपल को ढूंढें.

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

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

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

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

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

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

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

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