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

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

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

لإنشاء قواعد البيانات وإدارتها، ستحتاج إلى دور "إدارة الهوية وإمكانية الوصول" التالي:

يمنح هذا الدور الأذونات التالية التي تحتاجها لإنشاء قواعد البيانات وإدارتها:

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

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

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

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

    الانتقال إلى Firestore

  2. انقر على إضافة قاعدة بيانات.
  3. اختَر الإصدار العادي. انقر على التالي.
  4. أدخِل معرّف قاعدة بيانات.
  5. اختَر موقعًا جغرافيًا لقاعدة بياناتك. انقر على التالي.
  6. اختَر وضع بدء لجهاز Cloud Firestore Security Rules:

    الوضع التجريبي
    هذه القاعدة مناسبة لبدء استخدام مكتبات برامج الويب والأجهزة الجوّالة، ولكنّها تسمح لأي مستخدم بقراءة بياناتك واستبدالها. بعد الاختبار، احرص على مراجعة قسم تأمين بياناتك.
    وضع الإنتاج
    يتم رفض جميع عمليات القراءة والكتابة من عملاء الأجهزة الجوّالة والويب. سيظل بإمكان خوادم التطبيقات التي تمت مصادقتها (Node.js وPython وJava) الوصول إلى قاعدة بياناتك
  7. انقر على إنشاء.
gcloud

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

  • لإنشاء قاعدة بيانات Cloud Firestore Standard، اتّبِع الخطوات التالية:

    gcloud firestore databases create \
    --database=DATABASE_ID \
    --location=LOCATION \
    --edition=standard
    --type=DATABASE_TYPE

    غيِّر القيم في السلسلة على الشكل التالي:

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

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

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Firebase CLI
firebase firestore:databases:create DATABASE_ID \n--location=LOCATION \n[--edition EDITION] \n[--firestore-data-access FIRESTORE_ACCESS] \n[--realtime-updates REALTIME_UPDATES] \n[--delete-protection DELETE_PROTECTION_ENABLEMENT]

غيِّر القيم في السلسلة على الشكل التالي:

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 هي وسيطة اختيارية لتفعيل ميزة "الحماية من الحذف". لا يمكنك حذف قاعدة بيانات تم تفعيل ميزة "الحماية من الحذف" فيها إلا بعد إيقاف هذا الإعداد. هذا الإعداد معطل بشكل افتراضي.

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

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

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

هناك استثناء واحد لهذه القواعد: سيتم إنشاء قاعدة بيانات باسم (default) في الإصدار العادي إذا لم تُدخل معرّفًا بنفسك.

يُرجى العِلم أنّه بعد حذف قاعدة بيانات، لا يمكنك إعادة استخدام معرّفها لمدة 5 دقائق تقريبًا.

حذف الحماية

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

إعداد Cloud Firestore Security Rules لقواعد البيانات

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

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

تتضمّن قاعدة البيانات المُعنوَنة أي قاعدة بيانات لا تحمل الاسم (default). بشكل تلقائي، تتصل حِزم تطوير البرامج (SDK) لمنصة Firebase ومكتبات عملاء Google API بقاعدة بيانات (default) Cloud Firestore في المشروع. لإنشاء عميل مرتبط بقاعدة بيانات تحمل اسمًا، يجب ضبط معرّف قاعدة البيانات عند إنشاء مثيل للعميل.

عرض قواعد البيانات

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

وحدة التحكم

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

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

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

يتضمّن الناتج لقاعدة بيانات Enterprise الحقول التالية:

  • Edition: ENTERPRISE
  • Firestore Data Access: DATA_ACCESS_MODE_ENABLED أو DATA_ACCESS_MODE_DISABLED
  • MongoDB Compatible Data Access: DATA_ACCESS_MODE_ENABLED أو DATA_ACCESS_MODE_DISABLED
  • Realtime Updates: REALTIME_UPDATES_ENABLED أو REALTIME_UPDATES_DISABLED

استبدِل 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. في علامة التبويب البيانات، فوق عرض جدول البيانات لقاعدة البيانات، انقر على ، ثم اختَر حذف قاعدة البيانات.
  3. اتّبِع التعليمات لحذف قاعدة البيانات.
gcloud

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

gcloud firestore databases delete --database=DATABASE_ID

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

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

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

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

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

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

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

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

وحدة التحكم

  1. افتح صفحة قواعد البيانات ومساحة التخزين > Firestore في وحدة تحكُّم Firebase.

  2. بجانب اسم قاعدة البيانات، انقر على ، ثم انقر على استنساخ قاعدة البيانات. ستظهر لوحة Clone database (استنساخ قاعدة البيانات).

  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'

غيِّر القيم في السلسلة على الشكل التالي:

مثال:

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: استخدام تشفير CMEK حدِّد رقم تعريف مفتاح في الوسيطة --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: طابع زمني لعملية الاستعادة في نقطة زمنية معيّنة بتنسيق 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: استخدام تشفير CMEK حدِّد رقم تعريف مفتاح في الوسيطة --kms-key-name.

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

يمكنك استخدام شروط إدارة الهوية وإمكانية الوصول لضبط أذونات الوصول على مستوى كل قاعدة بيانات. تستخدم الأمثلة التالية Google Cloud CLI لمنح إذن وصول مشروط لقاعدة بيانات واحدة أو أكثر. يمكنك أيضًا تحديد شروط "إدارة الهوية وإمكانية الوصول" في وحدة تحكّم 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 على مستوى المشروع.

القيود

  • يمكنك إنشاء 100 قاعدة بيانات كحدّ أقصى لكل مشروع. يمكنك التواصل مع فريق الدعم لطلب زيادة هذا الحدّ.
  • لا يمكنك حذف قاعدة بيانات "(default)" إذا كانت تحتوي على أي بيانات بحث في GAE. استخدِم واجهة برمجة التطبيقات لحذف الفهرس لحذف بيانات البحث في GAE. إذا حذفت مؤخرًا بيانات GAE Search، قد تكون هناك فترة انتظار قبل أن تتمكّن من حذف قاعدة البيانات.
  • لا يمكنك حذف قاعدة بيانات "(default)" إذا كانت تحتوي على أي كيانات blob. استخدِم واجهة برمجة التطبيقات لحذف Blobstore لحذف بيانات Blobstore. يمكنك التحقّق مما إذا كانت قاعدة بيانات "(default)" تحتوي على بيانات Blobstore من خلال تشغيل طلب البحث التالي في GQL في وحدة تحكّم Google Cloud: SELECT * FROM __BlobInfo__.
  • لا يمكنك إعادة استخدام معرّف قاعدة بيانات إلا بعد مرور 5 دقائق على عملية الحذف.
  • لا يتوافق الإصدار الأول من Cloud Function مع قواعد بيانات Firestore المُسمّاة. استخدِم مشغّلات Cloud Firestore (الجيل الثاني) لضبط الأحداث لقواعد البيانات المُسمّاة.
  • قد تتوقف مشغّلات وظائف Firestore v1 ومشغّلات أحداث Firestore عن العمل بعد حذف قاعدة البيانات، حتى إذا تم إنشاء قاعدة بيانات جديدة بالاسم نفسه.

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