لنقل البيانات من قاعدة بيانات Firestore Standard edition إلى قاعدة بيانات Firestore Enterprise edition، ننصحك باستخدام أحد الخيارَين التاليَين:
ميزتا الاستيراد والتصدير تكون ملفات البيانات الناتجة عن عملية استيراد متوافقة مع كل من إصدار Enterprise وإصدار Standard.
نموذج Dataflow
firestore-to-firestoreتتيح لك خدمة Dataflow إنشاء مسارات بيانات، بينما ينشئ نموذجfirestore-to-firestoreمسارًا مجمّعًا بين قواعد بيانات Cloud Firestore.
يُعدّ الاستيراد والتصدير الخيار الأسهل الذي يتضمّن خيارات إعداد أقل.
يمكن تخصيص نموذج Dataflow بشكل أكبر. يمكنك توسيع رمز النموذج لتنفيذ عمليات نقل جزئية أو تحويل البيانات. يمكنك أيضًا التحكّم في عدد العمال وحجمهم.
يتيح كلا الخيارَين عمليات نقل البيانات بين المشاريع والمناطق.
نقل البيانات باستخدام التصدير والاستيراد
لنقل البيانات باستخدام عمليات التصدير والاستيراد، يُرجى الاطّلاع على تصدير البيانات واستيرادها. لنقل البيانات إلى قاعدة بيانات في مشروع آخر، يُرجى الاطّلاع على نقل البيانات بين المشاريع.
نقل البيانات باستخدام نموذج Dataflow
اتّبِع التعليمات التالية لنقل البيانات باستخدام نموذج
firestore-to-firestore Dataflow.
قبل البدء
قبل بدء عملية نقل البيانات، تأكَّد من تفعيل ميزة الاسترداد في نقطة زمنية محددة (PITR) في قاعدة البيانات المصدر. تستخدم مهمة Dataflow ميزة "الاسترداد في نقطة زمنية" لقراءة البيانات في طابع زمني لنقطة استرداد في الوقت المناسب. إذا تم إيقاف ميزة "استعادة البيانات إلى نقطة زمنية"، ستفشل المهمة إذا استغرقت أكثر من ساعة واحدة.
منح الأدوار المطلوبة الموضّحة في القسم التالي
الأدوار المطلوبة
لنقل البيانات من قاعدة بيانات إلى أخرى، عليك منح الأدوار التالية. قد تتمكّن أيضًا من الحصول على الأذونات المطلوبة من خلال أدوار مخصّصة أو أدوار أخرى محدّدة مسبقًا:
- للحصول على الأذونات التي تحتاج إليها لإنشاء قاعدة بيانات جديدة والوصول إلى بيانات Cloud Firestore، اطلب من المشرف منحك دور مالك Cloud Datastore (
roles/datastore.owner) في إدارة الهوية وإمكانية الوصول (IAM) في مشروعك. -
لمنح مهمة Dataflow إذن الوصول للقراءة والكتابة إلى قواعد بيانات Cloud Firestore، عليك منح حساب خدمة عامل Dataflow (على سبيل المثال،
PROJECT_NUMBER-compute@) دور مستخدم Cloud Datastore (roles/datastore.user) في "إدارة الهوية وإمكانية الوصول" (IAM) في مشروعك.لمزيد من المعلومات حول أمان Dataflow، راجِع مقالة أمان Dataflow والأذونات.
لمزيد من المعلومات حول منح أدوار "إدارة الهوية وإمكانية الوصول"، يُرجى الاطّلاع على إدارة الوصول إلى المشاريع والمجلدات والمؤسسات.
1. إنشاء قاعدة بيانات جديدة لإصدار Firestore Enterprise
لنقل البيانات من قاعدة بيانات الإصدار Standard إلى قاعدة بيانات الإصدار Enterprise، عليك أولاً إنشاء قاعدة بيانات الوجهة للإصدار Enterprise. راجِع مقالة إنشاء قاعدة بيانات.
2. تشغيل نموذج Dataflow firestore-to-firestore
اضبط مهمة Dataflow وشغِّلها باستخدام نموذج firestore-to-firestore.
تتيح النماذج نقل قاعدة البيانات بأكملها أو مجموعات محدّدة فقط.
القيود
ضَع في اعتبارك القيود التالية لقالب firestore-to-firestore
Dataflow:
- يجب أن تكون قاعدة البيانات المصدر قاعدة بيانات Standard Edition.
- تقرأ عملية نقل البيانات البيانات في وقت قراءة محدّد. ننصحك بتفعيل استرداد البيانات في نقطة زمنية محددة (PITR) في قاعدة البيانات المصدر. إذا لم يتم تفعيل ميزة "استعادة البيانات إلى نقطة زمنية"، تنتهي صلاحية البيانات بعد ساعة واحدة، وقد لا يكون ذلك الوقت كافيًا لإكمال عملية نقل البيانات. تتيح ميزة "استعادة البيانات إلى نقطة زمنية" الاحتفاظ بالبيانات لمدة سبعة أيام.
- لا يتم نقل الفهارس.
لا تنقل المهمة Dataflow إعدادات قاعدة البيانات، مثل سياسات مدة البقاء (TTL) وعمليات النسخ الاحتياطي والاسترداد في نقطة زمنية (PITR) ومفاتيح التشفير المُدارة من قِبل العميل (CMEK).
يجب ضبط هذه الإعدادات في قاعدة البيانات الجديدة. لتحسين سرعة نقل البيانات، انتظِر إلى ما بعد عملية النقل لضبط مدة البقاء (TTL) وعمليات النسخ الاحتياطي والاسترداد في نقطة زمنية على قاعدة البيانات الوجهة.
توضّح الأمثلة التالية كيفية تشغيل النموذج باستخدام 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: موقع Google Cloud الذي تريد تشغيل مهمة Dataflow فيه استخدِم موقعًا جغرافيًا قريبًا من قواعد البيانات.
VERSION: هو إصدار النموذج الذي تريد استخدامه. يمكنك استخدام القيم التالية:latestلاستخدام أحدث إصدار من النموذج المتاح في المجلد الرئيسي غير المؤرّخ في الحزمة: gs://dataflow-templates-REGION_NAME/latest/- اسم الإصدار، مثل
2023-09-12-00_RC00، لاستخدام إصدار معيّن من النموذج، ويمكن العثور عليه مدمجًا في المجلد الرئيسي ذي التاريخ المعنيّ في الحزمة: gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: رقم تعريف مشروع Google Cloud المصدر الذي يحتوي على قاعدة بيانات إصدار Firestore Standard.SOURCE_DATABASE_ID: رقم تعريف قاعدة بيانات المصدر Cloud FirestoreDESTINATION_PROJECT_ID: معرّف مشروع Google Cloud الوجهة لقاعدة بيانات Cloud Firestore الجديدة.DESTINATION_DATABASE_ID: رقم تعريف قاعدة بيانات الوجهة Cloud FirestoreREAD_TIME: الطابع الزمني لقراءة البيانات من قاعدة البيانات المصدر يجب ضبطه على طابع زمني بالتنسيق RFC 3339، بدقة تصل إلى دقيقة واحدة، مثل2026-05-15T16:31:00.00Z.يعتمد الطابع الزمني الصالح الأقدم على إعدادات الاسترداد في نقطة زمنية (PITR). اطّلِع على الحصول على وقت أقرب نسخة.
نقل مجموعات قوائم التسوق المحدّدة
لنقل مجموعات معيّنة فقط، استخدِم الأمر التالي:
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: موقع Google Cloud الذي تريد تشغيل مهمة Dataflow فيه استخدِم موقعًا جغرافيًا قريبًا من قواعد البيانات.
VERSION: هو إصدار النموذج الذي تريد استخدامه. يمكنك استخدام القيم التالية:latestلاستخدام أحدث إصدار من النموذج، وهو متاح في المجلد الرئيسي غير المؤرّخ في الحزمة: gs://dataflow-templates-REGION_NAME/latest/- اسم الإصدار، مثل
2023-09-12-00_RC00، لاستخدام إصدار معيّن من النموذج، ويمكن العثور عليه مضمّنًا في المجلد الرئيسي الذي يحمل التاريخ في الحزمة: gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: معرّف مشروع Google Cloud المصدر الذي يحتوي على قاعدة بيانات إصدار Firestore Standard.SOURCE_DATABASE_ID: رقم تعريف قاعدة بيانات المصدر Cloud FirestoreCOLLECTION_GROUP_IDS: قائمة بمعرّفات مجموعات الحسابات المراد نقلها، مفصولة بفواصللا يتم تضمين المجموعات الفرعية بشكل متكرّر. على سبيل المثال، إذا حدّدت مجموعة
users، لن تتضمّن عملية النقل مجموعة فرعيةmessagesفي/users/userid/messagesإلا إذا حدّدت مجموعةmessagesأيضًا.DESTINATION_PROJECT_ID: معرّف مشروع Google Cloud الوجهة لقاعدة بيانات Cloud Firestore الجديدة.DESTINATION_DATABASE_ID: رقم تعريف قاعدة بيانات الوجهة Cloud Firestore
READ_TIME: الطابع الزمني لقراءة البيانات من قاعدة البيانات المصدر يجب ضبطها على طابع زمني بالتنسيق RFC 3339، بدقة تصل إلى دقيقة واحدة، مثل2026-05-15T16:31:00.00Z.يعتمد الطابع الزمني الصالح الأقدم على إعدادات الاسترداد في نقطة زمنية (PITR). اطّلِع على الحصول على وقت أقرب نسخة.
3- ضبط إعدادات قاعدة البيانات
تنقل مهمة firestore-to-firestore البيانات فقط.
لا يتم نقل الفهارس وإعدادات قاعدة البيانات الأخرى. بالإضافة إلى نقل البيانات، ننصحك بضبط الإعدادات التالية في قاعدة البيانات الجديدة:
الفهارس: لا تتطلّب قواعد بيانات Firestore Enterprise Edition فهارس بشكل صارم لتنفيذ طلبات البحث، ولا يتم إنشاء فهارس تلقائية بشكلٍ تلقائي. راجِع ما يلي لإنشاء فهارس للاستعلامات:
- نظرة عامة على فهارس إصدار Firestore Enterprise
- تحسين أداء طلبات البحث باستخدام الفهارس
- يمكنك استخدام واجهة سطر الأوامر Firebase من أجل تصدير الفهارس ونشرها في قاعدة البيانات الجديدة.
- استخدِم إحصاءات طلبات البحث لتحديد طلبات البحث التي يمكنك تحسينها باستخدام فهرس.
مدة البقاء (TTL): إنشاء سياسات مدة البقاء
النُسخ الاحتياطية: إعداد النُسخ الاحتياطية
استعادة البيانات في نقطة زمنية: فعِّل ميزة "استعادة البيانات في نقطة زمنية".
بعد إعداد قاعدة البيانات، يمكنك مواصلة اختبار تطبيقك باستخدام قاعدة البيانات الجديدة. لإجراء عملية نقل كاملة، عليك تعديل تطبيقاتك لاستخدام قاعدة البيانات الجديدة.
تحديد المشاكل وحلّها
بالنسبة إلى قواعد البيانات الكبيرة، قد تفشل المهمة إذا قرأت الكثير من البيانات في وقت واحد. لحلّ هذه المشكلة، اتّبِع الخطوات التالية:
زيادة قيمة
maxNumWorkers
الخطوات التالية
- مزيد من المعلومات عن تنفيذ طلبات بحث في البيانات باستخدام عمليات Pipeline
- كيفية تحسين طلبات البحث في إصدار Firestore Enterprise
- التعرّف على كيفية توسيع نطاق قاعدة بيانات إصدار Enterprise