مدیریت پایگاه‌های داده

این صفحه نحوه ایجاد، به‌روزرسانی، و حذف 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
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 آرگومان اختیاری برای فعال کردن محافظت دربرابر حذف است. تا زمانی‌که این تنظیم را غیرفعال نکنید، نمی‌توانید پایگاه داده‌ای را که محافظت دربرابر حذف برای آن فعال است حذف کنید. این تنظیم بطور خودکار غیرفعال است.

شناسه پایگاه داده

شناسه پایگاه داده معتبر باید با این قوانین مطابقت داشته باشد:

  • فقط از حروف، اعداد، و نویسه خط تیره (-) استفاده کنید.
  • حروف باید کوچک باشند.
  • نویسه اول باید حرف باشد.
  • نویسه آخر باید حرف یا عدد باشد.
  • حداقل ۴ نویسه داشته باشد.
  • حداکثر ۶۳ نویسه داشته باشد.
  • نباید UUID باشد یا شبیه UUID باشد. برای مثال، از شناسه‌ای مانند f47ac10b-58cc-0372-8567-0e02b2c3d479 استفاده نکنید.

یک استثنا برای این قوانین وجود دارد: اگر خودتان شناسه‌ای وارد نکنید، نسخه Standard پایگاه داده‌ای با نام (default) ایجاد خواهد کرد.

توجه داشته باشید که پس‌از حذف پایگاه داده، نمی‌توانید از شناسه آن برای حدود ۵ دقیقه دوباره استفاده کنید.

حذف محافظت

برای جلوگیری از حذف تصادفی پایگاه داده، از محافظت دربرابر حذف استفاده کنید. تا زمانی‌که محافظت دربرابر حذف را غیرفعال نکنید، نمی‌توانید پایگاه داده‌ای را که محافظت دربرابر حذف برای آن فعال است حذف کنید. محافظت دربرابر حذف به‌طور پیش‌فرض غیرفعال است. می‌توانید پیکربندی پایگاه داده را به‌روز کنید تا محافظت دربرابر حذف را فعال یا غیرفعال کنید.

راه‌اندازی Cloud Firestore Security Rules برای پایگاه‌های داده شما

از Firebase CLI برای استقرار Cloud Firestore Security Rules در هریک از پایگاه‌های داده‌تان استفاده کنید. به راهنمای مدیریت و استقرار Cloud Firestore Security Rules مراجعه کنید.

دسترسی به پایگاه داده نام‌گذاری‌شده با کتابخانه کارخواه

پایگاه داده نام‌گذاری‌شده شامل هر پایگاه داده‌ای می‌شود که نام آن (default) نباشد. به‌طور پیش‌فرض، کیت‌های توسعه نرم‌افزار Firebase و «کتابخانه‌های کارخواه Google API» به پایگاه داده (default) Cloud Firestore در پروژه متصل می‌شوند. برای ایجاد کردن کارخواه متصل به پایگاه داده بانام، شناسه پایگاه داده را هنگام نمونه‌سازی کارخواه تنظیم کنید.

فهرست کردن پایگاه‌های داده

از یکی از روش‌های زیر برای فهرست کردن پایگاه‌های داده‌تان استفاده کنید:

کنسول

در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

رفتن به پایگاه‌های داده

gcloud

از فرمان gcloud firestore databases list برای فهرست کردن همه پایگاه‌های داده در پروژه‌تان استفاده کنید.

gcloud firestore databases list
واسط خط فرمان Firebase

از فرمان firebase firestore:databases:list برای فهرست کردن همه پایگاه‌های داده در پروژه‌تان استفاده کنید.

firebase firestore:databases:list

مشاهده جزئیات پایگاه داده

برای مشاهده جزئیات مربوط به یک پایگاه داده، از یکی از روش‌های زیر استفاده کنید:

gcloud

از فرمان gcloud firestore databases describe استفاده کنید:

gcloud firestore databases describe --database=DATABASE_ID
واسط خط فرمان Firebase

از فرمان 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 یا موجودیت‌های blob است، ابتدا باید آن داده‌ها را حذف کنید.

حذف پایگاه داده به‌طور خودکار هیچ‌یک از 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 تعریف شده است، مشخص می‌کند:

    • اگر PITR برای پایگاه داده شما فعال باشد، می‌توانید هر دقیقه‌ای را در ۷ روز گذشته انتخاب کنید (یا کمتر، اگر PITR کمتر از ۷ روز پیش فعال شده باشد).
    • اگر «بازیابی نقطه‌زمانی» فعال نباشد، می‌توانید هر دقیقه‌ای را در ساعت گذشته انتخاب کنید.
    • می‌توانید زودترین مُهر زمان قابل‌انتخاب را در شرح پایگاه داده‌تان بررسی کنید.

کنسول

  1. صفحه پایگاه‌های داده و فضای ذخیره‌سازی > Firestore را در کنسول Firebase باز کنید.

  2. در کنار نام پایگاه داده، روی کلیک کنید، سپس روی کلون کردن پایگاه داده کلیک کنید. قاب همسان‌سازی پایگاه داده نشان داده می‌شود.

  3. در قاب همسان‌سازی پایگاه داده، پارامترهای همسان‌سازی پایگاه داده را ارائه دهید:

    1. در فیلد شناسه پایگاه داده، شناسه پایگاه داده را برای پایگاه داده کلون‌شده جدید وارد کنید. شناسه پایگاه داده نباید قبلاً توسط پایگاه داده موجودی استفاده شده باشد.

    2. در فیلد کلون کردن از، نقطه‌ای را در زمان برای استفاده برای کلون کردن انتخاب کنید. زمان انتخاب‌شده با مُهر زمان PITR، در دانه‌بندی دقیقه، مطابقت دارد.

  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: مُهر زمان PITR در قالب RFC 3339، با دقت دقیقه. برای مثال: 2025-06-01T10:20:00.00Z یا 2025-06-01T10:30:00.00-07:00.

  • 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 استفاده کنید که فهرست اختیاری جفت‌های «کلید=مقدار» برچسب‌ها برای اتصال است.

مثال:

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

برای شبیه‌سازی پایگاه داده، از فرمان 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: مُهر زمان PITR در قالب 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 برای اختصاص دسترسی مشروط برای یک یا چند پایگاه داده استفاده می‌کنند. همچنین می‌توانید شرایط IAM را در کنسول Google Cloud تعریف کنید.

مشاهده خط‌مشی‌های IAM موجود

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 در سطح پروژه تجمیع می‌شوند.

محدودیت‌ها

  • می‌توانید حداکثر ۱۰۰ پایگاه داده در هر پروژه داشته باشید. می‌توانید با پشتیبانی تماس بگیرید تا درخواست افزایش این محدودیت را بدهید.
  • اگر پایگاه داده (default) شما حاوی داده‌های جستجوی GAE باشد، نمی‌توانید آن را حذف کنید. از index delete api برای حذف داده‌های جستجوی GAE استفاده کنید. اگر اخیراً داده‌های «جستجوی GAE» را حذف کرده‌اید، ممکن است قبل‌از اینکه بتوانید پایگاه داده را حذف کنید، دوره انتظاری وجود داشته باشد.
  • اگر پایگاه داده (default) شما حاوی نهادهای blob باشد، نمی‌توانید آن را حذف کنید. برای حذف داده‌های Blobstore، از Blobstore delete api استفاده کنید. می‌توانید با اجرای پُرسمان GQL زیر در کنسول Google Cloud بررسی کنید که آیا پایگاه داده (default) شما داده Blobstore دارد یا نه: SELECT * FROM __BlobInfo__.
  • تا ۵ دقیقه پس‌از حذف شناسه پایگاه داده نمی‌توانید دوباره از آن استفاده کنید.
  • Cloud Function v1 از پایگاه‌های داده Firestore Named پشتیبانی نمی‌کند. از راه‌اندازهای Cloud Firestore (نسل دوم) برای پیکربندی رویدادها برای پایگاه‌های داده نام‌گذاری‌شده استفاده کنید.
  • راه‌اندازهای تابع Firestore نسخه ۱ و راه‌اندازهای رویداد Firestore ممکن است پس‌از حذف پایگاه داده از کار بیفتند، حتی اگر پایگاه داده جدیدی با همان نام ایجاد شود.

حالا چه می‌شود