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

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

قاعدة بيانات (default)

إذا لم تحدد قاعدة بيانات، فستتصل مكتبات عميل Cloud Firestore وGoogle Cloud CLI بقاعدة بيانات (default) بشكل افتراضي.

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

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

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

لإدارة قواعد البيانات، ستحتاج إلى الأذونات التالية:

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

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

لإنشاء قاعدة بيانات، استخدم إحدى الطرق التالية:

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

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

  2. إذا كانت هذه هي قاعدة البيانات المسماة الأولى لديك، فانقر فوق إضافة قاعدة بيانات.
  3. بخلاف ذلك، انقر على (تلقائي)، ثم على إضافة قاعدة بيانات.
  4. اضبط إعدادات قاعدة البيانات. أدخل معرف قاعدة البيانات. حدد موقعًا. انقر على إنشاء قاعدة بيانات.
gcloud

استخدم الأمر gcloud firestore databases create.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

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

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

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

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

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

--delete-protection هي وسيطة اختيارية لتمكين حماية الحذف. لا يمكنك حذف قاعدة بيانات مع تمكين حماية الحذف حتى تقوم بتعطيل هذا الإعداد. تم تعطيل هذا الإعداد بشكل افتراضي.

Terraform
resource "google_firestore_database" "database" {
  project     = "project-id"
  name        = DATABASE_ID
  location_id = LOCATION
  type        = DATABASE_TYPE

  // Optional
  delete_protection_state = DELETE_PROTECTION_STATE
}

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

delete_protection_state هي وسيطة اختيارية لتفعيل الحماية من الحذف. لا يمكنك حذف قاعدة بيانات تم تفعيل ميزة الحماية من الحذف فيها إلا بعد إيقاف هذا الإعداد. هذا الإعداد معطل بشكل افتراضي.

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

تتضمّن معرّفات قاعدة البيانات الصالحة (default) والمعرّفات التي تتوافق مع ما يلي:

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

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

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

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

إعداد Cloud Firestore Security Rules لقواعد البيانات الخاصة بك

استخدم واجهة سطر الأوامر Firebase لنشر Cloud Firestore Security Rules على كل قاعدة بيانات لديك. راجع الدليل لإدارة ونشر Cloud Firestore Security Rules.

الوصول إلى قاعدة بيانات مسماة باستخدام مكتبة العميل

تتضمن قاعدة البيانات المسماة أي قاعدة بيانات غير مسماة بـ (default). بشكل افتراضي، تتصل مجموعات SDK الخاصة بـ Firebase ومكتبات عميل واجهة برمجة تطبيقات Google بقاعدة بيانات (default) Cloud Firestore في مشروع. لإنشاء عميل مرتبط بقاعدة بيانات تحمل اسمًا، اضبط معرّف قاعدة البيانات عند إنشاء مثيل للعميل.

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

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

وحدة التحكم

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

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

gcloud

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

gcloud firestore databases list
Firebase CLI

استخدم الأمر firebase firestore:databases:list لإدراج جميع قواعد البيانات في مشروعك.

firebase firestore:databases:list

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

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

gcloud

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

gcloud firestore databases describe --database=DATABASE_ID
Firebase CLI

استخدِم الأمر firebase firestore:databases:get:

firebase firestore:databases:get DATABASE_ID

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

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

لتحديث إعدادات تكوين قاعدة البيانات، استخدم الأمر gcloud firestore databases update. استخدم هذا الأمر لتغيير تمكين أو تعطيل حماية الحذف.

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

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

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

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

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

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

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

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

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

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

إذا كانت قاعدة البيانات تحتوي علىApp Engine بيانات البحث أوكيانات الكتلة ، يجب عليك حذف تلك البيانات أولاً.

لا يؤدي حذف قاعدة البيانات إلى حذف أي Eventarc مشغلات لقاعدة البيانات هذه تلقائيًا. يتوقف المشغل عن تسليم الأحداث ولكنه يستمر في الوجود حتى تقوم بحذف المشغل.

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

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

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

  2. في علامة التبويب "البيانات" (Data)، فوق عرض جدول البيانات لقاعدة البيانات، انقر على ، ثم اختَر حذف قاعدة البيانات.
  3. اتبع التعليمات لحذف قاعدة البيانات.
gcloud

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

gcloud firestore databases delete --database=DATABASE_ID

استبدِل DATABASE_ID بمعرّف قاعدة البيانات التي تريد حذفها. لحذف قاعدة البيانات التلقائية، استخدِم المعرّف '(default)'

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

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

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

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

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

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

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

وحدة التحكم

لا تتيح وحدة تحكّم Firebase استنساخ قواعد البيانات. يمكنك استخدام التعليمات الخاصة بـ Google Cloud CLI لاستنساخ قواعد البيانات.

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/(default)' \
--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'

بشكلٍ تلقائي، سيكون لقاعدة البيانات المستنسَخة إعدادات التشفير نفسها التي تتوفّر في قاعدة البيانات المصدر. لتغيير إعدادات التشفير، استخدِم وسيطة --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/(default)' \
--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: هو عنوان بريد إلكتروني يمثّل حسابًا معيّنًا على Google. على سبيل المثال، 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: هو عنوان بريد إلكتروني يمثّل حسابًا معيّنًا على Google. على سبيل المثال، 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: هو عنوان بريد إلكتروني يمثّل حسابًا معيّنًا على Google. على سبيل المثال، alice@example.com.

Cloud Monitoring

يتم تسجيل مقاييس Cloud Firestore ضمن موردَين مراقَبَين.

يمكنك فحص المقاييس المجمّعة على مستوى قاعدة البيانات من خلال الاطّلاع على firestore.googleapis.com/Database. يتم تجميع المقاييس المُبلغ عنها ضمن firestore_instance على مستوى المشروع.

القيود

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