این صفحه نحوه ایجاد، بهروزرسانی، و حذف Cloud Firestore پایگاههای داده را شرح میدهد. میتوانید چند پایگاه داده Cloud Firestore برای هر پروژه ایجاد کنید. میتوانید از چندین پایگاه داده برای راهاندازی محیطهای تولید و آزمایش، برای جداسازی دادههای مشتری، و برای منطقهبندی دادهها استفاده کنید.
نقشها و اجازههای لازم
برای ایجاد و مدیریت پایگاههای داده، به نقش «مدیریت هویت و دسترسیها» زیر نیاز دارید:
- مالک Cloud Datastore
(
roles/datastore.owner)
این نقش اجازههای زیر را که برای ایجاد و مدیریت پایگاههای داده نیاز دارید اعطا میکند:
- ایجاد پایگاه داده:
datastore.databases.create - خواندن پیکربندی پایگاه داده:
datastore.databases.getMetadata - پیکربندی پایگاه داده:
datastore.databases.update - حذف پایگاه داده:
datastore.databases.delete - همسانهسازی پایگاه داده:
datastore.databases.clone
ایجاد پایگاه داده
برای ایجاد پایگاه داده، از یکی از روشهای زیر استفاده کنید:
کنسول
کنسول Firebase
-
در کنسول Firebase، به پایگاههای داده و فضای ذخیرهسازی > Firestore بروید.
- روی افزودن پایگاه داده کلیک کنید.
- نسخه استاندارد را انتخاب کنید. روی بعدی کلیک کنید.
- «شناسه پایگاه داده» را وارد کنید.
- مکانی برای پایگاه دادهتان انتخاب کنید. روی بعدی کلیک کنید.
-
حالت شروع را برای Cloud Firestore Security Rules انتخاب کنید:
- حالت آزمایشی
- برای شروع کار با کتابخانههای مشتری وب و تلفن همراه خوب است، اما به هرکسی اجازه میدهد دادههایتان را بخواند و بازنویسی کند. پساز آزمایش، حتماً بخش ایمن کردن دادهها را مرور کنید.
- حالت تولید
- همه خواندنها و نوشتنها را از کلاینتهای وب و تلفن همراه رد میکند. سرورهای برنامه اصالتسنجیشده شما (Node.js، Python، Java) همچنان میتوانند به پایگاه داده شما دسترسی داشته باشند
- روی ایجاد کردن کلیک کنید.
gcloud
از فرمان
gcloud firestore databases create
استفاده کنید.
-
برای ایجاد پایگاه داده نسخه Cloud Firestore Standard:
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=standard --type=DATABASE_TYPE
موارد زیر را جایگزین کنید:
- DATABASE_ID: شناسه پایگاه داده معتبر.
- LOCATION: نام Cloud Firestore چندمنطقه یا منطقه.
- DATABASE_TYPE:
firestore-nativeبرای حالت «بومی» یاdatastore-modeبرای حالت Datastore.
--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]
موارد زیر را جایگزین کنید:
- DATABASE_ID: شناسه پایگاه داده معتبر.
- LOCATION: نام Cloud Firestoreچندمنطقه یا منطقه.
- EDITION: برای ویژگیهای Enterprise، روی
enterpriseتنظیم کنید. - FIRESTORE_ACCESS: (فقط Enterprise)
ENABLEDیاDISABLED. - REALTIME_UPDATES: (فقط Enterprise)
ENABLEDیاDISABLED. - DELETE_PROTECTION_ENABLEMENT:
ENABLEDیاDISABLED.
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 }
موارد زیر را جایگزین کنید:
- DATABASE_ID: شناسه پایگاه داده معتبر.
- LOCATION: نام Cloud Firestore چندمنطقه یا منطقه.
- DATABASE_TYPE:
FIRESTORE_NATIVEبرای حالت «بومی» یاDATASTORE_MODEبرای حالت Datastore. - DELETE_PROTECTION_ENABLEMENT: یا
DELETE_PROTECTION_ENABLEDیاDELETE_PROTECTION_DISABLED.
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 راهاندازهای آن پایگاه داده را حذف نمیکند. راهانداز ارسال رویدادها را متوقف میکند اما تا زمانی که راهانداز را حذف نکنید، همچنان وجود خواهد داشت.
حذف پایگاه داده هزینهای برای عملیات حذف ندارد.
کنسول
-
در کنسول Firebase، به پایگاههای داده و فضای ذخیرهسازی > Firestore بروید.
- در برگه دادهها، بالای نمای جدول دادهها برای پایگاه داده، روی کلیک کنید، سپس حذف پایگاه داده را انتخاب کنید.
- دستورالعملها را برای حذف پایگاه داده دنبال کنید.
gcloud
از فرمان `gcloud firestore databases delete` استفاده کنید.
gcloud firestore databases delete --database=DATABASE_ID
DATABASE_ID را با شناسه پایگاه دادهای که میخواهید حذف شود جایگزین کنید. برای حذف پایگاه داده پیشفرض، از شناسه '(default)' استفاده کنید
همسانهسازی پایگاه داده
میتوانید پایگاه داده موجود را در مُهر زمان انتخابی در پایگاه داده جدیدی شبیهسازی کنید:
پایگاه داده کلونشده پایگاه داده جدیدی است که در همان مکان پایگاه داده منبع ایجاد خواهد شد.
برای ایجاد کلون، Cloud Firestore از دادههای بازیابی نقطهزمانی (PITR) پایگاه داده منبع استفاده میکند. پایگاه داده کلونشده شامل همه دادهها و نمایهها است.
بهطور پیشفرض، پایگاه داده کلونشده به همان روش پایگاه داده منبع، بااستفاده از رمزگذاری پیشفرض Google یا رمزگذاری CMEK رمزگذاری خواهد شد. میتوانید نوع رمزگذاری دیگری را مشخص کنید یا از کلید دیگری برای رمزگذاری CMEK استفاده کنید.
مُهر زمان دارای دانهبندی یک دقیقهای است و نقطهای از زمان را در گذشته، در دورهای که توسط پنجره PITR تعریف شده است، مشخص میکند:
- اگر PITR برای پایگاه داده شما فعال باشد، میتوانید هر دقیقهای را در ۷ روز گذشته انتخاب کنید (یا کمتر، اگر PITR کمتر از ۷ روز پیش فعال شده باشد).
- اگر «بازیابی نقطهزمانی» فعال نباشد، میتوانید هر دقیقهای را در ساعت گذشته انتخاب کنید.
- میتوانید زودترین مُهر زمان قابلانتخاب را در شرح پایگاه دادهتان بررسی کنید.
کنسول
صفحه پایگاههای داده و فضای ذخیرهسازی > Firestore را در کنسول Firebase باز کنید.
در کنار نام پایگاه داده، روی کلیک کنید، سپس روی کلون کردن پایگاه داده کلیک کنید. قاب همسانسازی پایگاه داده نشان داده میشود.
در قاب همسانسازی پایگاه داده، پارامترهای همسانسازی پایگاه داده را ارائه دهید:
در فیلد شناسه پایگاه داده، شناسه پایگاه داده را برای پایگاه داده کلونشده جدید وارد کنید. شناسه پایگاه داده نباید قبلاً توسط پایگاه داده موجودی استفاده شده باشد.
در فیلد کلون کردن از، نقطهای را در زمان برای استفاده برای کلون کردن انتخاب کنید. زمان انتخابشده با مُهر زمان PITR، در دانهبندی دقیقه، مطابقت دارد.
روی کلون کردن کلیک کنید.
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 ممکن است پساز حذف پایگاه داده از کار بیفتند، حتی اگر پایگاه داده جدیدی با همان نام ایجاد شود.