إنشاء قواعد البيانات وإدارتها

ينطبق ذلك على إصدار Cloud Firestore Enterprise فقط.

توضّح هذه الصفحة كيفية إنشاء قواعد بيانات Cloud Firestore متوافقة مع MongoDB وتعديلها وحذفها. يمكنك إنشاء قواعد بيانات Cloud Firestore متعددة لكل مشروع. يمكنك استخدام قواعد بيانات متعددة لإعداد بيئات الإنتاج والاختبار، وعزل بيانات العملاء، وتحديد المناطق الجغرافية للبيانات.

استخدام الفئة المجانية

تقدّم Cloud Firestore طبقة مجانية تتيح لك البدء بدون أي تكلفة.

تنطبق الطبقة المجانية على قاعدة بيانات Cloud Firestore واحدة فقط لكل مشروع. ستحصل قاعدة البيانات الأولى التي يتم إنشاؤها في مشروع بدون قاعدة بيانات ضمن الطبقة المجانية على الطبقة المجانية. إذا تم حذف قاعدة البيانات التي تم تطبيق الفئة المجانية عليها، ستتلقّى قاعدة البيانات التالية التي يتم إنشاؤها الفئة المجانية.

قبل البدء

يجب إكمال الخطوات التالية قبل إنشاء قاعدة بيانات:

  1. إذا لم يسبق لك إنشاء مشروع على Firebase، أنشئ مشروعًا باتّباع الخطوات التالية: في Firebaseوحدة التحكّم، انقر على إضافة مشروع، ثم اتّبِع التعليمات الظاهرة على الشاشة لإنشاء مشروع على Firebase أو لإضافة خدمات Firebase إلى مشروع Google Cloud حالي.

  2. منح أدوار مناسبة في خدمة "إدارة الهوية وإمكانية الوصول"، كما هو موضَّح في القسم التالي

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

لإنشاء قواعد البيانات وإدارتها، يجب أن يكون لديك دور Owner أو Datastore Owner في خدمة "إدارة الهوية وإمكانية الوصول". تمنح هذه الأدوار الأذونات المطلوبة.

الأذونات المطلوبة

لإدارة قواعد البيانات، يجب أن تتوفّر لك الأذونات التالية:

  • إنشاء قاعدة بيانات: datastore.databases.create
  • قراءة إعدادات قاعدة البيانات: datastore.databases.getMetadata
  • ضبط قاعدة بيانات: datastore.databases.update
  • حذف قاعدة بيانات: datastore.databases.delete
  • استنساخ قاعدة بيانات: datastore.databases.clone

إنشاء قاعدة بيانات

لإنشاء قاعدة بيانات متوافقة مع MongoDB في Cloud Firestore، استخدِم إحدى الطرق التالية:

Firebase وحدة التحكّم
  1. في وحدة تحكّم Firebase، انتقِل إلى صفحة قاعدة بيانات Firestore.

    الانتقال إلى "قاعدة بيانات Firestore"

  2. انقر على إنشاء قاعدة بيانات.
  3. اختَر إصدار Enterprise. انقر على التالي.
  4. أدخل معرف قاعدة البيانات.
  5. اختَر موقعًا جغرافيًا لقاعدة البيانات.
  6. قم بتكوين قاعدة البيانات الخاصة بك حيث يمكنك تحديد الوضع.
  7. انقر على إنشاء.
Firebase CLI
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
gcloud CLI

استخدِم الأمر gcloud firestore databases create واضبط --edition=enterprise.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise

استبدِل ما يلي:

لتفعيل ميزة "الحماية من الحذف"، أضِف العلامة --delete-protection. لا يمكنك حذف قاعدة بيانات تم تفعيل ميزة الحماية من الحذف فيها إلا بعد إيقاف هذا الإعداد. هذا الإعداد معطل بشكل افتراضي.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--delete-protection

لإضافة علامات إلى قاعدة البيانات، استخدِم العلامة --tags. على سبيل المثال:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Terraform

استخدِم المرجع google_firestore_database واضبط database_edition على ENTERPRISE.

resource "google_firestore_database" "database" {
  name             = "DATABASE_ID"
  location_id      = "LOCATION"
  type             = "FIRESTORE_NATIVE"
  database_edition = "ENTERPRISE"

  // Optional
  delete_protection_state = "DELETE_PROTECTION_STATE"
}

استبدِل ما يلي:

لتفعيل ميزة "الحماية من الحذف"، اضبط delete_protection_state على DELETE_PROTECTION_ENABLED. لا يمكنك حذف قاعدة بيانات تم تفعيل ميزة الحماية من الحذف فيها إلا بعد إيقاف هذا الإعداد. هذا الإعداد معطل بشكل افتراضي.

رقم تعريف قاعدة البيانات

تشمل معرّفات قاعدة البيانات الصالحة المعرّفات التي تتوافق مع ما يلي:

  • يتضمّن أحرفًا وأرقامًا وواصلة (-) فقط.
  • يجب أن تكون الأحرف صغيرة.
  • يجب أن يكون الحرف الأول حرفًا.
  • يجب أن يكون الحرف الأخير حرفًا أو رقمًا.
  • يجب أن تتضمّن 4 أحرف على الأقل.
  • الحدّ الأقصى 63 حرفًا.
  • يجب ألا يكون معرّفًا فريدًا عالميًا (UUID) أو يشبهه. على سبيل المثال، لا تستخدِم معرّفًا مثل f47ac10b-58cc-0372-8567-0e02b2c3d479.

إذا حذفت قاعدة بيانات، لا يمكنك إعادة استخدام معرّف قاعدة البيانات على الفور إلا بعد 5 دقائق.

الحماية من الحذف

استخدِم ميزة "الحماية من الحذف" لمنع حذف قاعدة بيانات عن طريق الخطأ. تعمل ميزة "الحماية من الحذف" بالطريقة التالية:

  • لا يمكنك حذف قاعدة بيانات تم تفعيل ميزة "الحماية من الحذف" فيها إلا بعد إيقافها.
  • تكون ميزة "الحماية من الحذف" غير مفعّلة تلقائيًا.
  • يمكنك تفعيل ميزة الحماية من الحذف عند إنشاء قاعدة البيانات، أو يمكنك تعديل إعدادات قاعدة البيانات لتفعيلها.

قواعد البيانات المدرَجة

استخدِم إحدى الطرق التالية لإدراج قواعد البيانات:

Firebase وحدة التحكّم
  1. في وحدة تحكّم Firebase، انتقِل إلى صفحة قاعدة بيانات Firestore.

    الانتقال إلى "قاعدة بيانات Firestore"

  2. انقر على Cloud Firestore لعرض جميع قواعد البيانات الخاصة بالمشروع.
gcloud CLI

استخدِم الأمر gcloud firestore databases list لعرض جميع قواعد البيانات في مشروعك.

gcloud firestore databases list

عرض تفاصيل قاعدة البيانات

لعرض تفاصيل حول قاعدة بيانات واحدة، استخدِم إحدى الطرق التالية:

Firebase وحدة التحكّم
  1. في وحدة تحكّم Firebase، انتقِل إلى صفحة قاعدة بيانات Firestore.

    الانتقال إلى "قاعدة بيانات Firestore"

  2. اختَر قاعدة بيانات من قائمة قواعد البيانات.
gcloud CLI

استخدِم الأمر gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID

استبدِل DATABASE_ID بمعرّف قاعدة بيانات.

تعديل إعدادات قاعدة البيانات

لتعديل إعدادات قاعدة البيانات، استخدِم الأمر gcloud firestore databases update.

استخدِم هذا الأمر لتغيير ميزة الحماية من الحذف أو تفعيلها أو إيقافها.

تعديل إعدادات الحماية من الحذف

لتفعيل ميزة "الحماية من الحذف" في قاعدة بيانات، استخدِم الأمر gcloud firestore databases update مع العلامة --delete-protection. على سبيل المثال:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --delete-protection

استبدِل DATABASE_ID بمعرّف قاعدة بيانات.

لإيقاف ميزة "الحماية من الحذف" في قاعدة بيانات، استخدِم الأمر gcloud firestore databases update مع العلامة --no-delete-protection. على سبيل المثال:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

استبدِل DATABASE_ID بمعرّف قاعدة بيانات.

حذف قاعدة بيانات

لحذف قاعدة بيانات، استخدِم وحدة التحكّم أو أداة سطر الأوامر. لا يؤدي حذف قاعدة بيانات إلى تكبّد رسوم مقابل عمليات الحذف.

إذا كان إعداد الحماية من الحذف مفعَّلاً في قاعدة البيانات، عليك أولاً إيقاف الحماية من الحذف.

Firebase وحدة التحكّم
  1. في وحدة تحكّم Firebase، انتقِل إلى صفحة قاعدة بيانات Firestore.

    الانتقال إلى "قاعدة بيانات Firestore"

  2. اختَر قاعدة البيانات التي تريد حذفها.
  3. انقر على عرض المزيد.
  4. انقر على حذف لحذف قاعدة البيانات.
gcloud CLI

استخدِم الأمر `gcloud firestore databases delete`.

gcloud firestore databases delete --database=DATABASE_ID

استبدِل DATABASE_ID بمعرّف قاعدة البيانات التي تريد حذفها.

استنساخ قاعدة بيانات

يمكنك استنساخ قاعدة بيانات حالية في طابع زمني محدّد إلى قاعدة بيانات جديدة باتّباع الخطوات التالية:

  • قاعدة البيانات المستنسَخة هي قاعدة بيانات جديدة سيتم إنشاؤها في الموقع الجغرافي نفسه لقاعدة البيانات المصدر.

    لإنشاء نسخة طبق الأصل، تستخدم Cloud Firestore بيانات الاسترداد في نقطة زمنية محددة (PITR) لقاعدة البيانات المصدر. تتضمّن قاعدة البيانات المستنسَخة جميع البيانات والفهارس.

  • بشكلٍ تلقائي، سيتم تشفير قاعدة البيانات المستنسَخة بالطريقة نفسها التي تم بها تشفير قاعدة البيانات المصدر، وذلك باستخدام التشفير التلقائي من Google أو تشفير CMEK. يمكنك تحديد نوع تشفير مختلف أو استخدام مفتاح مختلف لتشفير CMEK.

  • يتم تحديد الطابع الزمني بدقة تصل إلى دقيقة واحدة، ويشير إلى نقطة زمنية في الماضي، ضمن الفترة المحدّدة من خلال فترة الاسترداد في نقطة زمنية:

    • إذا كانت ميزة "الاسترداد إلى نقطة زمنية" مفعّلة لقاعدة البيانات، يمكنك اختيار أي دقيقة في آخر 7 أيام (أو أقل إذا تم تفعيل الميزة قبل أقل من 7 أيام).
    • إذا لم تكن ميزة "استعادة البيانات إلى نقطة زمنية" مفعّلة، يمكنك اختيار أي دقيقة في الساعة الماضية.
    • يمكنك الاطّلاع على الطابع الزمني الأقدم الذي يمكنك اختياره في وصف قاعدة البيانات.

وحدة التحكم

  1. في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى "قواعد البيانات"

  2. انقر على عرض المزيد في صف الجدول الخاص بقاعدة البيانات التي تريد استنساخها. انقر على استنساخ. يظهر مربّع الحوار إنشاء نسخة طبق الأصل.

  3. في مربّع الحوار إنشاء نسخة طبق الأصل، أدخِل مَعلمات لإنشاء نسخة طبق الأصل من قاعدة البيانات:

    1. في الحقل تحديد معرّف للنسخة المستنسخة، أدخِل معرّف قاعدة بيانات لقاعدة بيانات جديدة مستنسخة. يجب ألا يكون معرّف قاعدة البيانات هذا مرتبطًا بقاعدة بيانات حالية.

    2. في حقل النسخ من، اختَر نقطة زمنية لاستخدامها في عملية النسخ. يتوافق الوقت المحدّد مع طابع زمني لنقطة استعادة في الوقت المناسب، بدقة تصل إلى الدقيقة.

  4. انقر على إنشاء نسخة طبق الأصل.

gcloud

استخدِم الأمر gcloud firestore databases clone لاستنساخ قاعدة بيانات:

gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

استبدِل ما يلي:

  • SOURCE_DATABASE: اسم قاعدة البيانات الحالية التي تريد استنساخها يستخدم الاسم التنسيق projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • PITR_TIMESTAMP: a طابع زمني لاستعادة البيانات في نقطة زمنية محددة بالتنسيق RFC 3339، بدقة تصل إلى دقيقة. على سبيل المثال: 2025-06-01T10:20:00.00Z أو 2025-06-01T10:30:00.00-07:00.

  • DESTINATION_DATABASE_ID: a معرّف قاعدة بيانات لقاعدة بيانات مستنسَخة جديدة. يجب ألا يكون معرّف قاعدة البيانات هذا مرتبطًا بقاعدة بيانات حالية.

مثال:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'

إذا كنت تريد الربط ببعض العلامات أثناء استنساخ قاعدة بيانات، استخدِم الأمر السابق مع العلامة --tags، وهي قائمة اختيارية من أزواج العلامات KEY=VALUE للربط.

مثال:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--tags=key1=value1,key2=value2

بشكلٍ تلقائي، سيكون لقاعدة البيانات المستنسَخة إعدادات التشفير نفسها التي تتوفّر في قاعدة البيانات المصدر. لتغيير إعدادات التشفير، استخدِم وسيطة --encryption-type:

  • (تلقائي) use-source-encryption: استخدام إعدادات التشفير نفسها المستخدَمة في قاعدة البيانات المصدر
  • google-default-encryption: استخدام تشفير Google التلقائي
  • customer-managed-encryption: استخدام التشفير باستخدام "مفتاح التشفير الذي يديره العميل" حدِّد رقم تعريف مفتاح في الوسيطة --kms-key-name.

يوضّح المثال التالي كيفية ضبط تشفير CMEK لقاعدة البيانات المستنسخة:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

Firebase CLI

استخدِم الأمر firebase firestore:databases:clone لاستنساخ قاعدة بيانات:

firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP' \

استبدِل ما يلي:

  • SOURCE_DATABASE: اسم قاعدة البيانات الحالية التي تريد استنساخها يستخدم الاسم التنسيق projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • DESTINATION_DATABASE: اسم قاعدة بيانات لقاعدة بيانات مستنسخة جديدة. يستخدم الاسم التنسيق projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID. يجب ألا يكون اسم قاعدة البيانات هذا مرتبطًا بقاعدة بيانات حالية.

  • PITR_TIMESTAMP: a طابع زمني لاستعادة البيانات في نقطة زمنية محددة بالتنسيق RFC 3339، بدقة تصل إلى دقيقة. على سبيل المثال: 2025-06-01T10:20:00.00Z أو 2025-06-01T10:30:00.00-07:00. في حال عدم تحديدها، ستكون اللقطة المختارة هي الوقت الحالي، مع تقريبه إلى أقرب دقيقة.

بشكلٍ تلقائي، سيكون لقاعدة البيانات المستنسَخة إعدادات التشفير نفسها التي تتوفّر في قاعدة البيانات المصدر. لتغيير إعدادات التشفير، استخدِم وسيطة --encryption-type:

  • (تلقائي) USE_SOURCE_ENCRYPTION: استخدام إعدادات التشفير نفسها المستخدَمة في قاعدة البيانات المصدر
  • GOOGLE_DEFAULT_ENCRYPTION: استخدام تشفير Google التلقائي
  • CUSTOMER_MANAGED_ENCRYPTION: استخدام التشفير باستخدام "مفتاح التشفير الذي يديره العميل" حدِّد رقم تعريف مفتاح في الوسيطة --kms-key-name.

ضبط أذونات الوصول لكل قاعدة بيانات

يمكنك استخدام شروط إدارة الهوية وإمكانية الوصول لإعداد أذونات الوصول على مستوى كل قاعدة بيانات. تستخدِم الأمثلة التالية واجهة سطر الأوامر (CLI) من Google Cloud لمنح إذن الوصول الشرطي إلى قاعدة بيانات واحدة أو أكثر. يمكنك أيضًا تحديد شروط إدارة الهوية وإمكانية الوصول في وحدة تحكّم Google Cloud.

عرض سياسات إدارة الهوية وإمكانية الوصول الحالية

gcloud projects get-iam-policy PROJECT_ID

اضبط قيمة PROJECT_ID على رقم تعريف مشروعك.

منح إذن الوصول إلى قاعدة بيانات

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

اضبط ما يلي:

  • PROJECT_ID: رقم تعريف مشروعك
  • EMAIL: عنوان بريد إلكتروني يمثّل حسابًا معيّنًا على سبيل المثال، alice@example.com.
  • DATABASE_ID: رقم تعريف قاعدة البيانات
  • TITLE: عنوان اختياري للعبارة
  • DESCRIPTION: وصف اختياري للتعبير

منح إذن الوصول إلى جميع قواعد البيانات باستثناء قاعدة بيانات واحدة

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

اضبط ما يلي:

  • PROJECT_ID: رقم تعريف مشروعك
  • EMAIL: عنوان بريد إلكتروني يمثّل حسابًا معيّنًا على سبيل المثال، alice@example.com.
  • DATABASE_ID: رقم تعريف قاعدة البيانات
  • TITLE: عنوان اختياري للعبارة
  • DESCRIPTION: وصف اختياري للتعبير

إزالة السياسات لعضو ودور معيّنَين

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

اضبط ما يلي:

  • PROJECT_ID: رقم تعريف مشروعك
  • EMAIL: عنوان بريد إلكتروني يمثّل حسابًا معيّنًا على سبيل المثال، alice@example.com.

القيود

يمكنك إنشاء 100 قاعدة بيانات كحدّ أقصى لكل مشروع. يمكنك التواصل مع فريق الدعم لطلب زيادة هذا الحدّ.

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