Firestore के स्टैंडर्ड वर्शन वाले डेटाबेस से, Firestore के Enterprise वर्शन वाले डेटाबेस में डेटा माइग्रेट करने के लिए, हमारा सुझाव है कि इनमें से कोई एक विकल्प इस्तेमाल करें:
डेटा इंपोर्ट और एक्सपोर्ट करने की सुविधाएं. डेटा इंपोर्ट करने की प्रोसेस के दौरान जनरेट हुई डेटा फ़ाइलें, Enterprise और स्टैंडर्ड, दोनों वर्शन के साथ काम करती हैं.
The
firestore-to-firestoreDataflow टेंप्लेट. Dataflow सेवा की मदद से, डेटा पाइपलाइन बनाई जा सकती हैं. वहीं,firestore-to-firestoreटेंप्लेट, Cloud Firestore डेटाबेस के बीच बैच पाइपलाइन बनाता है.
डेटा इंपोर्ट और एक्सपोर्ट करने का विकल्प, कम कॉन्फ़िगरेशन विकल्पों के साथ काम करने का आसान तरीका है.
Dataflow टेंप्लेट को ज़्यादा कस्टमाइज़ किया जा सकता है. आंशिक माइग्रेशन करने या डेटा को ट्रांसफ़ॉर्म करने के लिए, टेंप्लेट कोड को बढ़ाया जा सकता है. इसके अलावा, वर्कर की संख्या और साइज़ को भी कंट्रोल किया जा सकता है.
दोनों विकल्पों की मदद से, अलग-अलग प्रोजेक्ट और इलाकों में डेटा माइग्रेट किया जा सकता है.
डेटा एक्सपोर्ट और इंपोर्ट करके डेटा माइग्रेट करना
डेटा एक्सपोर्ट और इंपोर्ट करके डेटा माइग्रेट करने के लिए, डेटा एक्सपोर्ट और इंपोर्ट करना लेख पढ़ें. डेटा को किसी दूसरे प्रोजेक्ट के डेटाबेस में ले जाने के लिए, प्रोजेक्ट के बीच डेटा ले जाना लेख पढ़ें.
Dataflow टेंप्लेट की मदद से डेटा माइग्रेट करना
firestore-to-firestore Dataflow टेंप्लेट की मदद से डेटा माइग्रेट करने के लिए, यहां दिया गया तरीका अपनाएं.
शुरू करने से पहले
डेटा माइग्रेट करने से पहले, पक्का करें कि किसी खास समय पर डेटा वापस पाने की सुविधा (पीआईटीआर) सोर्स डेटाबेस पर चालू हो. Dataflow जॉब, पीआईटीआर टाइमस्टैंप पर डेटा पढ़ने के लिए, पीआईटीआर का इस्तेमाल करती है. अगर पीआईटीआर की सुविधा बंद है, तो एक घंटे से ज़्यादा समय तक चलने पर जॉब फ़ेल हो जाती है.
अगले सेक्शन में बताई गई ज़रूरी भूमिकाएं असाइन करें.
ज़रूरी भूमिकाएं
डेटा को एक डेटाबेस से दूसरे डेटाबेस में माइग्रेट करने के लिए, ये भूमिकाएं असाइन करें. आपको कस्टम भूमिका या पहले से तय अन्य भूमिकाओं के ज़रिए भी ज़रूरी अनुमतियां मिल सकती हैं:
- नया डेटाबेस बनाने और
Cloud Firestore डेटा को ऐक्सेस करने के लिए ज़रूरी अनुमतियां पाने के लिए, अपने एडमिन से कहें कि वह आपको अपने प्रोजेक्ट पर,
Cloud Datastore के मालिक
(
roles/datastore.owner) की Identity and Access Management (IAM) भूमिका असाइन करे. -
Dataflow जॉब को अपने Cloud Firestore डेटाबेस में डेटा पढ़ने और लिखने का ऐक्सेस देने के लिए, अपने प्रोजेक्ट पर Dataflow वर्कर सेवा खाते (उदाहरण के लिए,
PROJECT_NUMBER-compute@) को Cloud Datastore के उपयोगकर्ता (roles/datastore.user) की IAM भूमिका असाइन करें.Dataflow की सुरक्षा के बारे में ज़्यादा जानने के लिए, Dataflow की सुरक्षा और अनुमतियां लेख पढ़ें.
IAM भूमिकाएं देने के बारे में ज़्यादा जानने के लिए, प्रोजेक्ट, फ़ोल्डर, और संगठनों का ऐक्सेस मैनेज करना लेख पढ़ें.
1. Firestore के Enterprise वर्शन का नया डेटाबेस बनाना
डेटा को स्टैंडर्ड वर्शन वाले डेटाबेस से Enterprise वर्शन वाले डेटाबेस में माइग्रेट करने के लिए, आपको सबसे पहले Enterprise वर्शन का डेस्टिनेशन डेटाबेस बनाना होगा. डेटाबेस बनाना लेख पढ़ें.
2. Dataflow firestore-to-firestore टेंप्लेट को चलाना
अपने Dataflow जॉब को firestore-to-firestore टेंप्लेट के साथ कॉन्फ़िगर करें और चलाएं.
टेंप्लेट की मदद से, पूरे डेटाबेस या सिर्फ़ चुने गए कलेक्शन ग्रुप को माइग्रेट किया जा सकता है.
सीमाएं
firestore-to-firestore
Dataflow टेंप्लेट के लिए, ये सीमाएं लागू होती हैं:
- सोर्स डेटाबेस, स्टैंडर्ड वर्शन वाला डेटाबेस होना चाहिए.
- माइग्रेशन के दौरान, डेटा को किसी खास समय पर पढ़ा जाता है. हमारा सुझाव है कि सोर्स डेटाबेस में, किसी खास समय पर डेटा वापस पाने की सुविधा (पीआईटीआर) चालू करें. अगर पीआईटीआर की सुविधा चालू नहीं है, तो डेटा एक घंटे बाद मिट जाता है. ऐसे में, डेटा माइग्रेट करने की प्रोसेस पूरी होने में ज़्यादा समय लग सकता है. पीआईटीआर की मदद से, डेटा को सात दिनों तक सेव करके रखा जा सकता है.
- इंडेक्स माइग्रेट नहीं किए जाते.
Dataflow जॉब, डेटाबेस के कॉन्फ़िगरेशन को माइग्रेट नहीं करती. जैसे, टीटीएल नीतियां, बैकअप, पीआईटीआर, और ग्राहक मैनेज किए गए एन्क्रिप्टेड की (सीएमईके).
आपको नए डेटाबेस पर ये सेटिंग कॉन्फ़िगर करनी होंगी. डेटा माइग्रेट करने की स्पीड बढ़ाने के लिए, डेस्टिनेशन डेटाबेस पर टीटीएल, बैकअप, और पीआईटीआर को माइग्रेट करने के बाद कॉन्फ़िगर करें.
यहां दिए गए उदाहरणों में, Google Cloud CLI का इस्तेमाल करके टेंप्लेट चलाने का तरीका बताया गया है.
पूरा डेटा माइग्रेट करना
पूरा डेटा माइग्रेट करने के लिए, यह निर्देश इस्तेमाल करें:
gcloud dataflow flex-template run "JOB_NAME" \ --project "PROJECT" \ --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \ --region REGION_NAME \ --parameters "sourceProjectId=SOURCE_PROJECT_ID" \ --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \ --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \ --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \ --parameters "readTime=READ_TIME"
इनकी जगह ये डालें:
JOB_NAME: जॉब का नाम.PROJECT: आपके Google Cloud प्रोजेक्ट का आईडी.REGION_NAME: वह जगह जहां आपको Dataflow जॉब चलानी है.Google Cloud ऐसी जगह का इस्तेमाल करें जो आपके डेटाबेस के पास हो.VERSION: टेंप्लेट का वह वर्शन जिसका आपको इस्तेमाल करना है. इन वैल्यू का इस्तेमाल किया जा सकता है:- टेम्प्लेट के सबसे नए वर्शन का इस्तेमाल करने के लिए,
latest. यह वर्शन, बकेट में मौजूद बिना तारीख वाले पैरंट फ़ोल्डर में उपलब्ध है— gs://dataflow-templates-REGION_NAME/latest/ - टेंप्लेट के किसी खास वर्शन का इस्तेमाल करने के लिए, वर्शन का नाम. जैसे,
2023-09-12-00_RC00. यह वर्शन, बकेट में मौजूद तारीख वाले पैरंट फ़ोल्डर में नेस्ट किया गया है— gs://dataflow-templates-REGION_NAME/
- टेम्प्लेट के सबसे नए वर्शन का इस्तेमाल करने के लिए,
SOURCE_PROJECT_ID: सोर्स Google Cloud प्रोजेक्ट का आईडी. इसमें Firestore के स्टैंडर्ड वर्शन वाला डेटाबेस मौजूद है.SOURCE_DATABASE_ID: सोर्स Cloud Firestore डेटाबेस का आईडी.DESTINATION_PROJECT_ID: नए Cloud Firestore डेटाबेस के लिए, डेस्टिनेशन Google Cloud प्रोजेक्ट का आईडी.DESTINATION_DATABASE_ID: डेस्टिनेशन Cloud Firestore डेटाबेस का आईडी.READ_TIME: सोर्स डेटाबेस से डेटा पढ़ने का टाइमस्टैंप. इसे आरएफ़सी 3339 फ़ॉर्मैट में, मिनट के हिसाब से सटीक टाइमस्टैंप पर सेट करें. जैसे,2026-05-15T16:31:00.00Z.सबसे पुराना मान्य टाइमस्टैंप, किसी खास समय पर डेटा वापस पाने की सुविधा (पीआईटीआर) की सेटिंग पर निर्भर करता है. सबसे पुराने वर्शन का टाइम पाना लेख पढ़ें.
चुने गए कलेक्शन ग्रुप माइग्रेट करना
सिर्फ़ कुछ कलेक्शन ग्रुप माइग्रेट करने के लिए, यह निर्देश इस्तेमाल करें:
gcloud dataflow jobs run "JOB_NAME" \ --project "PROJECT" \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \ --region REGION_NAME \ --parameters "sourceProjectId=SOURCE_PROJECT_ID" \ --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \ --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \ --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \ --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \ --parameters "readTime=READ_TIME"
इनकी जगह ये डालें:
JOB_NAME: जॉब का नाम.PROJECT: आपके Google Cloud प्रोजेक्ट का आईडी.REGION_NAME: वह जगह जहां आपको Dataflow जॉब चलानी है.Google Cloud ऐसी जगह का इस्तेमाल करें जो आपके डेटाबेस के पास हो.VERSION: टेंप्लेट का वह वर्शन जिसका आपको इस्तेमाल करना है. इन वैल्यू का इस्तेमाल किया जा सकता है:- टेम्प्लेट के सबसे नए वर्शन का इस्तेमाल करने के लिए,
latest. यह वर्शन, बकेट में मौजूद बिना तारीख वाले पैरंट फ़ोल्डर में उपलब्ध है— gs://dataflow-templates-REGION_NAME/latest/ - टेंप्लेट के किसी खास वर्शन का इस्तेमाल करने के लिए, वर्शन का नाम. जैसे,
2023-09-12-00_RC00. यह वर्शन, बकेट में मौजूद तारीख वाले पैरंट फ़ोल्डर में नेस्ट किया गया है—gs://dataflow-templates-REGION_NAME/
- टेम्प्लेट के सबसे नए वर्शन का इस्तेमाल करने के लिए,
SOURCE_PROJECT_ID: सोर्स Google Cloud प्रोजेक्ट का आईडी. इसमें Firestore के स्टैंडर्ड वर्शन वाला डेटाबेस मौजूद है.SOURCE_DATABASE_ID: सोर्स Cloud Firestore डेटाबेस का आईडी.COLLECTION_GROUP_IDS: माइग्रेट किए जाने वाले कलेक्शन ग्रुप आईडी की कॉमा से अलग की गई सूची.सब-कलेक्शन, बार-बार शामिल नहीं किए जाते. उदाहरण के लिए, अगर आपने
usersकलेक्शन ग्रुप तय किया है, तो माइग्रेशन में/users/userid/messagesपर मौजूदmessagesसब-कलेक्शन शामिल नहीं होगा. हालांकि, अगर आपनेmessagesकलेक्शन ग्रुप भी तय किया है, तो यह शामिल होगा.DESTINATION_PROJECT_ID: नए Cloud Firestore डेटाबेस के लिए, डेस्टिनेशन Google Cloud प्रोजेक्ट का आईडी.DESTINATION_DATABASE_ID: डेस्टिनेशन Cloud Firestore डेटाबेस का आईडी.READ_TIME: सोर्स डेटाबेस से डेटा पढ़ने का टाइमस्टैंप. इसे आरएफ़सी 3339 फ़ॉर्मैट में, मिनट के हिसाब से सटीक टाइमस्टैंप पर सेट करें. जैसे,2026-05-15T16:31:00.00Z.सबसे पुराना मान्य टाइमस्टैंप, किसी खास समय पर डेटा वापस पाने की सुविधा (पीआईटीआर) की सेटिंग पर निर्भर करता है. सबसे पुराने वर्शन का टाइम पाना लेख पढ़ें.
3. डेटाबेस कॉन्फ़िगर करना
firestore-to-firestore जॉब, सिर्फ़ डेटा माइग्रेट करती है.
इंडेक्स और डेटाबेस की अन्य सेटिंग माइग्रेट नहीं की जातीं. डेटा माइग्रेट करने के अलावा, नए डेटाबेस पर ये सेटिंग कॉन्फ़िगर करें:
इंडेक्स: Firestore के Enterprise वर्शन वाले डेटाबेस में, क्वेरी चलाने के लिए इंडेक्स की ज़रूरत नहीं होती. साथ ही, डिफ़ॉल्ट रूप से इंडेक्स अपने-आप नहीं बनते. क्वेरी के लिए इंडेक्स बनाने का तरीका जानने के लिए, ये लेख पढ़ें:
- Firestore के Enterprise वर्शन के इंडेक्स की खास जानकारी.
- इंडेक्स की मदद से, क्वेरी की परफ़ॉर्मेंस ऑप्टिमाइज़ करना.
- आप Firebase CLI का इस्तेमाल करके इंडेक्स एक्सपोर्ट कर सकते हैं और उन्हें नए डेटाबेस पर डिप्लॉय कर सकते हैं.
- Query Insights का इस्तेमाल करके, उन क्वेरी की पहचान करें जिन्हें इंडेक्स की मदद से ऑप्टिमाइज़ किया जा सकता है.
टीटीएल: टीटीएल नीतियां बनाएं.
बैकअप: बैकअप सेट अप करें.
पीआईटीआर: पीआईटीआर की सुविधा चालू करें.
डेटाबेस कॉन्फ़िगर करने के बाद, नए डेटाबेस के साथ अपने ऐप्लिकेशन की जांच जारी रखी जा सकती है. पूरा डेटा माइग्रेट करने के लिए, अपने ऐप्लिकेशन अपडेट करें, ताकि वे नए डेटाबेस का इस्तेमाल कर सकें.
समस्या का हल
बड़े डेटाबेस के लिए, अगर जॉब एक साथ बहुत ज़्यादा डेटा पढ़ती है, तो वह फ़ेल हो सकती है. इसे ठीक करने के लिए:
maxNumWorkersवैल्यू बढ़ाएं.
आगे क्या करना है
- पाइपलाइन ऑपरेशंस की मदद से, डेटा क्वेरी करने के बारे में जानें.
- Firestore के Enterprise वर्शन में क्वेरी ऑप्टिमाइज़ करने का तरीका जानें
- समझें कि an Enterprise वर्शन वाला डेटाबेस कैसे स्केल होता है.