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

این صفحه نحوه ایجاد، به‌روزرسانی و حذف پایگاه‌های داده Cloud Firestore را شرح می‌دهد. شما می‌توانید چندین پایگاه داده Cloud Firestore را برای هر پروژه ایجاد کنید. می‌توانید از چندین پایگاه داده برای راه‌اندازی محیط‌های تولید و آزمایش، جداسازی داده‌های مشتری و منطقه‌ای‌سازی داده‌ها استفاده کنید.

پایگاه داده (default)

اگر پایگاه داده‌ای مشخص نکنید، کتابخانه‌های کلاینت Cloud Firestore و رابط خط فرمان Google Cloud به طور پیش‌فرض به پایگاه داده (default) متصل می‌شوند.

نقش‌های مورد نیاز

برای ایجاد و مدیریت پایگاه‌های داده، به نقش Owner یا مدیریت هویت و دسترسی Datastore Owner نیاز دارید. این نقش‌ها مجوزهای لازم را اعطا می‌کنند.

مجوزهای مورد نیاز

برای مدیریت پایگاه‌های داده، به مجوزهای زیر نیاز دارید:

  • ایجاد یک پایگاه داده: datastore.databases.create
  • خواندن پیکربندی پایگاه داده: datastore.databases.getMetadata
  • پیکربندی یک پایگاه داده: datastore.databases.update
  • حذف یک پایگاه داده: datastore.databases.delete
  • کلون کردن یک پایگاه داده: datastore.databases.clone

ایجاد پایگاه داده

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

کنسول
  1. در کنسول Firebase ، به صفحه پایگاه داده فایراستور بروید.

    به پایگاه داده فایراستور بروید

  2. اگر این اولین پایگاه داده نامگذاری شده شماست، روی افزودن پایگاه داده کلیک کنید.
  3. در غیر این صورت، روی (پیش‌فرض) کلیک کنید، سپس روی افزودن پایگاه داده کلیک کنید .
  4. پایگاه داده خود را پیکربندی کنید. یک شناسه پایگاه داده وارد کنید. یک مکان انتخاب کنید. روی ایجاد پایگاه داده کلیک کنید.
جی‌کلاود

از دستور 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 firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

موارد زیر را جایگزین کنید:

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

ترافرم
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) و شناسه‌هایی هستند که با موارد زیر مطابقت دارند:

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

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

حذف محافظت

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

Cloud Firestore Security Rules برای پایگاه‌های داده خود تنظیم کنید

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

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

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

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

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

کنسول

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

به پایگاه‌های داده بروید

جی‌کلاود

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

gcloud firestore databases list
رابط خط فرمان فایربیس

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

firebase firestore:databases:list

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

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

جی‌کلاود

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

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

از دستور firebase firestore:databases:get استفاده کنید:

firebase firestore:databases:get DATABASE_ID

به جای DATABASE_ID شناسه پایگاه داده را وارد کنید.

به‌روزرسانی پیکربندی پایگاه داده

برای به‌روزرسانی تنظیمات پیکربندی یک پایگاه داده، از دستور gcloud firestore databases update استفاده کنید. از این دستور برای تغییر، فعال یا غیرفعال کردن محافظت در برابر حذف استفاده کنید.

تنظیمات محافظت در برابر حذف را به‌روزرسانی کنید

برای فعال کردن محافظت در برابر حذف در یک پایگاه داده، از دستور gcloud firestore databases update با پرچم --delete-protection استفاده کنید. به عنوان مثال:

جی‌کلاود
gcloud firestore databases update --database=DATABASE_ID --delete-protection

به جای DATABASE_ID شناسه پایگاه داده را وارد کنید.

برای غیرفعال کردن محافظت در برابر حذف در یک پایگاه داده، از دستور gcloud firestore databases update با پرچم --no-delete-protection استفاده کنید. به عنوان مثال:

جی‌کلاود
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

به جای DATABASE_ID شناسه پایگاه داده را وارد کنید.

حذف یک پایگاه داده

برای حذف یک پایگاه داده، از کنسول یا ابزار خط فرمان استفاده کنید.

اگر تنظیمات محافظت از حذف در پایگاه داده فعال است، ابتدا باید محافظت از حذف را غیرفعال کنید .

اگر پایگاه داده حاوی داده‌های جستجوی App Engine یا موجودیت‌های blob است، ابتدا باید آن داده‌ها را حذف کنید.

حذف یک پایگاه داده، به طور خودکار هیچ یک از triggerهای Eventarc مربوط به آن پایگاه داده را حذف نمی‌کند. trigger ارائه رویدادها را متوقف می‌کند، اما تا زمانی که trigger را حذف نکنید، همچنان وجود خواهد داشت.

حذف یک پایگاه داده، هزینه‌ای برای عملیات حذف ندارد.

کنسول
  1. در کنسول Firebase ، به صفحه پایگاه داده فایراستور بروید.

    به پایگاه داده فایراستور بروید

  2. در تب Data، بالای نمای جدول داده‌های پایگاه داده، روی کلیک کنید، سپس Delete database را انتخاب کنید.
  3. برای حذف پایگاه داده، دستورالعمل‌ها را دنبال کنید.
جی‌کلاود

از دستور `gcloud firestore databases delete` استفاده کنید.

gcloud firestore databases delete --database=DATABASE_ID

به جای DATABASE_ID شناسه پایگاه داده‌ای که می‌خواهید حذف کنید را قرار دهید. برای حذف پایگاه داده پیش‌فرض از شناسه '(default)' استفاده کنید.

کلون کردن یک پایگاه داده

شما می‌توانید یک پایگاه داده موجود را در یک زمان مشخص در یک پایگاه داده جدید کلون کنید:

  • پایگاه داده کلون شده، یک پایگاه داده جدید است که در همان مکان پایگاه داده منبع ایجاد خواهد شد.

    برای ایجاد یک کلون، Cloud Firestore از داده‌های بازیابی نقطه‌ای (PITR) پایگاه داده منبع استفاده می‌کند. پایگاه داده کلون شده شامل تمام داده‌ها و شاخص‌ها است.

  • به طور پیش‌فرض، پایگاه داده کلون شده به همان روش پایگاه داده منبع، با استفاده از رمزگذاری پیش‌فرض گوگل یا رمزگذاری CMEK رمزگذاری می‌شود. می‌توانید نوع رمزگذاری متفاوتی را مشخص کنید یا از کلید متفاوتی برای رمزگذاری CMEK استفاده کنید.

  • مهر زمانی دارای جزئیات یک دقیقه‌ای است و یک نقطه زمانی در گذشته، در دوره تعریف شده توسط پنجره PITR را مشخص می‌کند:

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

کنسول

کنسول Firebase از شبیه‌سازی پایگاه داده پشتیبانی نمی‌کند. می‌توانید از دستورالعمل‌های رابط خط فرمان گوگل کلود برای شبیه‌سازی پایگاه‌های داده استفاده کنید.

جی‌کلاود

برای کلون کردن یک پایگاه داده از دستور gcloud alpha firestore databases clone استفاده کنید:

gcloud alpha 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 alpha 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 alpha 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 : از رمزگذاری پیش‌فرض گوگل استفاده می‌کند.
  • customer-managed-encryption : از رمزگذاری CMEK استفاده می‌کند. یک شناسه کلید در آرگومان --kms-key-name مشخص کنید.

مثال زیر نحوه پیکربندی رمزگذاری CMEK برای پایگاه داده کلون شده را نشان می‌دهد:

gcloud alpha 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'

پیکربندی مجوزهای دسترسی به ازای هر پایگاه داده

شما می‌توانید از شرایط مدیریت هویت و دسترسی برای پیکربندی مجوزهای دسترسی در سطح هر پایگاه داده استفاده کنید. مثال‌های زیر از رابط خط فرمان گوگل کلود (Google Cloud CLI) برای تعیین دسترسی مشروط برای یک یا چند پایگاه داده استفاده می‌کنند. همچنین می‌توانید شرایط IAM را در کنسول گوگل کلود تعریف کنید .

مشاهده سیاست‌های موجود 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 : آدرس ایمیلی که نشان دهنده یک حساب گوگل خاص است. به عنوان مثال، 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 .

نظارت بر ابر

معیارهای Cloud Firestore تحت دو منبع تحت نظارت گزارش می‌شوند.

شما می‌توانید با مراجعه به firestore.googleapis.com/Database ، معیارهای تجمیع‌شده را در سطح پایگاه داده بررسی کنید. معیارهای گزارش‌شده در بخش firestore_instance در سطح پروژه تجمیع می‌شوند.

محدودیت‌ها

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

قدم بعدی چیست؟