نقل البيانات من إصدار Standard إلى إصدار Enterprise

لنقل البيانات من قاعدة بيانات Firestore Standard edition إلى قاعدة بيانات Firestore Enterprise edition، ننصحك باستخدام أحد الخيارَين التاليَين:

  • ميزتا الاستيراد والتصدير: تتوافق ملفات البيانات من عملية استيراد مع كلٍّ من Enterprise edition وStandard edition.

  • نموذج firestore-to-firestore Dataflow تتيح لك خدمة Dataflow إنشاء مسارات بيانات، وينشئ نموذج firestore-to-firestore مسارًا مجمّعًا بين Cloud Firestore قواعد بيانات.

يُعدّ خيار الاستيراد والتصدير أبسط وأسهل في التشغيل ويتضمّن خيارات إعداد أقل.

يمكنك تخصيص نموذج Dataflow بشكل أكبر. ويمكنك توسيع رمز النموذج لإجراء عمليات نقل جزئية أو تحويل البيانات. يمكنك أيضًا التحكّم في أعداد العاملين وحجمهم.

يتيح كلا الخيارَين عمليات نقل البيانات بين المشاريع والمناطق.

نقل البيانات باستخدام ميزتَي التصدير والاستيراد

لنقل البيانات باستخدام عمليتَي التصدير والاستيراد، يُرجى الاطّلاع على مقالة تصدير البيانات واستيرادها. لنقل البيانات إلى قاعدة بيانات في مشروع آخر، يُرجى الاطّلاع على مقالة نقل البيانات بين المشاريع.

نقل البيانات باستخدام نموذج Dataflow

استخدِم التعليمات التالية لنقل البيانات باستخدام النموذج firestore-to-firestore Dataflow.

قبل البدء

  1. قبل بدء عملية نقل البيانات، تأكَّد من تفعيل ميزة الاسترداد في نقطة زمنية معيّنة (PITR) في قاعدة البيانات المصدر. تستخدِم وظيفة Dataflow ميزة PITR لقراءة البيانات في طابع زمني معيّن في PITR. إذا كانت ميزة PITR غير مفعّلة، ستفشل الوظيفة إذا استغرقت أكثر من ساعة.

  2. يجب تفعيل واجهة برمجة التطبيقات datastore.googleapis.com لاستخدام هذا النموذج.

  3. امنح الأدوار المطلوبة الموضّحة في القسم التالي.

الأدوار المطلوبة

لنقل البيانات من قاعدة بيانات إلى أخرى، امنح الأدوار التالية. قد تتمكّن أيضًا من الحصول على الأذونات المطلوبة من خلال أدوار مخصّصة أو أدوار أخرى محدّدة مسبقًا:

  1. للحصول على الأذونات اللازمة لإنشاء قاعدة بيانات جديدة والوصول إلى Cloud Firestore بيانات، اطلب من المشرف منحك دور مالك Cloud Datastore (roles/datastore.owner) في "إدارة الهوية وإمكانية الوصول" (IAM) في مشروعك.
  2. لمنح وظيفة Dataflow إذن القراءة والكتابة في قواعد بيانات Cloud Firestore، امنح حساب خدمة عامل Dataflow (مثلاً، PROJECT_NUMBER-compute@) دور مستخدِم Cloud Datastore (roles/datastore.user) في "إدارة الهوية وإمكانية الوصول" (IAM) في مشروعك.

    لمزيد من المعلومات عن Dataflow الأمان، يُرجى الاطّلاع على Dataflow الأمان والأذونات.

لمزيد من المعلومات عن منح أدوار "إدارة الهوية وإمكانية الوصول"، يُرجى الاطّلاع على مقالة إدارة الوصول إلى المشاريع والمجلدات والمؤسسات.

1. إنشاء قاعدة بيانات جديدة في Firestore Enterprise edition

لنقل البيانات من قاعدة بيانات Standard edition إلى قاعدة بيانات Enterprise edition، عليك أولاً إنشاء قاعدة البيانات الوجهة في Enterprise edition. يُرجى الاطّلاع على مقالة إنشاء قاعدة بيانات.

2. تشغيل نموذج Dataflow firestore-to-firestore

يمكنك إعداد وظيفة Dataflow وتشغيلها باستخدام نموذج firestore-to-firestore. يتيح النموذج نقل قاعدة البيانات بأكملها أو مجموعات مجموعات معيّنة فقط.

القيود

ضَع في اعتبارك القيود التالية لنموذج firestore-to-firestore Dataflow:

  • يجب أن تكون قاعدة البيانات المصدر قاعدة بيانات Standard edition.
  • تقرأ عملية نقل البيانات البيانات في وقت قراءة معيّن. ننصحك بتفعيل ميزة الاسترداد في نقطة زمنية معيّنة (PITR) في قاعدة البيانات المصدر. إذا لم تكن ميزة PITR مفعّلة، ستنتهي صلاحية البيانات بعد ساعة واحدة، وقد لا يكون هذا الوقت كافيًا لإكمال عملية نقل البيانات. توسّع ميزة PITR فترة الاحتفاظ بالبيانات إلى سبعة أيام.
  • لا يتم نقل الفهارس.
  • لا تنقل وظيفة Dataflow إعدادات قاعدة البيانات، مثل سياسات مدة البقاء (TTL) والنسخ الاحتياطية وميزة PITR و مفاتيح التشفير التي يديرها العميل (CMEK).

    عليك ضبط هذه الإعدادات في قاعدة البيانات الجديدة. لتحسين سرعة نقل البيانات، انتظِر إلى ما بعد عملية النقل لضبط مدة البقاء والنسخ الاحتياطية وميزة PITR في قاعدة البيانات الوجهة.

توضّح الأمثلة التالية كيفية تشغيل النموذج باستخدام الـ 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 CloudGoogle Cloud المصدر الذي يحتوي على قاعدة بيانات Firestore Standard edition.

  • SOURCE_DATABASE_ID: رقم تعريف قاعدة بيانات المصدر Cloud Firestore.

  • DESTINATION_PROJECT_ID: رقم تعريف مشروع الوجهة Google Cloud لقاعدة بيانات Cloud Firestore الجديدة.

  • DESTINATION_DATABASE_ID: رقم تعريف قاعدة بيانات الوجهة Cloud Firestore.

  • READ_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 مشروع Google Cloud المصدر الذي يحتوي على قاعدة بيانات Firestore Standard edition.

  • SOURCE_DATABASE_ID: رقم تعريف قاعدة بيانات المصدر Cloud Firestore.

  • COLLECTION_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 سوى البيانات. لا يتم نقل الفهارس وإعدادات قاعدة البيانات الأخرى. بالإضافة إلى نقل البيانات، ننصحك بإعداد ما يلي في قاعدة البيانات الجديدة:

بعد إعداد قاعدة البيانات، يمكنك مواصلة اختبار تطبيقك باستخدام قاعدة البيانات الجديدة. لإجراء عملية نقل كاملة، عدِّل تطبيقاتك لاستخدام قاعدة البيانات الجديدة.

تحديد المشاكل وحلّها

بالنسبة إلى قواعد البيانات الكبيرة، قد تفشل الوظيفة إذا قرأت الكثير من البيانات في وقت واحد. لحلّ هذه المشكلة، عليك تنفيذ ما يلي:

الخطوات التالية