במאמר הזה נסביר איך ליצור, לעדכן ולמחוק מסדי נתונים של Cloud Firestore. אפשר ליצור כמה מסדי נתונים Cloud Firestore לכל פרויקט. אתם יכולים להשתמש בכמה מסדי נתונים כדי להגדיר סביבות ייצור ובדיקה, לבודד נתוני לקוחות ולבצע לוקליזציה של נתונים.
מסד הנתונים (default)
אם לא מציינים מסד נתונים, ספריות הלקוח Cloud Firestore ו-Google Cloud CLI מתחברים למסד הנתונים (default)
כברירת מחדל.
התפקידים הנדרשים
כדי ליצור ולנהל מסדי נתונים, צריך תפקיד בניהול זהויות והרשאות גישה (IAM) עם ההרשאות Owner
או Datastore Owner
. התפקידים האלה מעניקים את ההרשאות הנדרשות.
ההרשאות הנדרשות
כדי לנהל מסדי נתונים, נדרשות ההרשאות הבאות:
- יצירת מסד נתונים:
datastore.databases.create
- קריאת הגדרת מסד הנתונים:
datastore.databases.getMetadata
- הגדרת מסד נתונים:
datastore.databases.update
- כדי למחוק מסד נתונים:
datastore.databases.delete
- שכפול מסד נתונים:
datastore.databases.clone
יצירת מסד נתונים
כדי ליצור מסד נתונים, משתמשים באחת מהשיטות הבאות:
המסוף
-
במסוף Firebase, עוברים לדף Firestore Database.
- אם זו הפעם הראשונה שאתם יוצרים מסד נתונים עם שם, לוחצים על הוספת מסד נתונים.
- אחרת, לוחצים על (ברירת מחדל) ואז על הוספת מסד נתונים.
- מגדירים את מסד הנתונים. מזינים מזהה מסד נתונים. בחר במיקום. לוחצים על יצירת מסד נתונים.
gcloud
משתמשים בפקודה gcloud firestore databases create
.
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
מחליפים את מה שכתוב בשדות הבאים:
- DATABASE_ID: מזהה מסד נתונים תקין.
- LOCATION: השם של Cloud Firestore אזור או מיקום במספר אזורים.
- DATABASE_TYPE:
firestore-native
למצב Native או datastore-mode
למצב Datastore.
--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]
מחליפים את מה שכתוב בשדות הבאים:
- DATABASE_ID: מזהה מסד נתונים תקין.
- LOCATION: השם של Cloud Firestore מיקום במספר אזורים או באזור.
- DELETE_PROTECTION_ENABLEMENT:
ENABLED
אוDISABLED
.
מסד הנתונים שנוצר תמיד נמצא במצב Firestore Native.
--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 }
מחליפים את מה שכתוב בשדות הבאים:
- DATABASE_ID: מזהה מסד נתונים תקין.
- LOCATION: השם של Cloud Firestore מיקום במספר אזורים או באזור.
- DATABASE_TYPE:
FIRESTORE_NATIVE
למצב Native או DATASTORE_MODE
למצב Datastore. - DELETE_PROTECTION_ENABLEMENT: אחת מהאפשרויות הבאות:
DELETE_PROTECTION_ENABLED
אוDELETE_PROTECTION_DISABLED
.
delete_protection_state
הוא ארגומנט אופציונלי להפעלת הגנה מפני מחיקה. אי אפשר למחוק מסד נתונים שהופעלה בו הגנה מפני מחיקה
עד שמשביתים את ההגדרה הזו. הגדרה זו מושבתת כברירת מחדל.
מזהה מסד הנתונים
מזהי מסד נתונים תקינים כוללים את (default)
ומזהים שעומדים בדרישות הבאות:
- כולל רק אותיות, מספרים ומקפים (
-
). - האותיות צריכות להיות קטנות.
- התו הראשון חייב להיות אות.
- התו האחרון חייב להיות אות או מספר.
- לפחות 4 תווים.
- 63 תווים לכל היותר.
- הערך לא יכול להיות UUID או להיראות כמו UUID. לדוגמה, אל תשתמשו במזהה כמו
f47ac10b-58cc-0372-8567-0e02b2c3d479
.
אם מוחקים מסד נתונים, אי אפשר להשתמש שוב במזהה של מסד הנתונים באופן מיידי, אלא רק אחרי 5 דקות.
מחיקת ההגנה
כדי למנוע מחיקה של מסד נתונים בטעות, אפשר להשתמש בהגנה מפני מחיקה. אי אפשר למחוק מסד נתונים שההגנה מפני מחיקה מופעלת בו עד שמבטלים את ההגנה מפני מחיקה. ההגנה מפני מחיקה מושבתת כברירת מחדל. אפשר להפעיל הגנה מפני מחיקה כשיוצרים את מסד הנתונים, או לעדכן את ההגדרה של מסד נתונים כדי להפעיל את ההגנה מפני מחיקה.
הגדרת Cloud Firestore Security Rules למסדי הנתונים
משתמשים ב-Firebase CLI כדי לפרוס את Cloud Firestore Security Rules לכל אחד ממסדי הנתונים. אפשר לעיין במדריך לניהול ולפריסה של Cloud Firestore Security Rules.
גישה למסד נתונים עם שם באמצעות ספריית לקוח
מסד נתונים עם שם כולל כל מסד נתונים שלא נקרא (default)
. כברירת מחדל, ערכות ה-SDK של Firebase וספריות הלקוח של Google API מתחברות למסד הנתונים (default)
Cloud Firestore בפרויקט. כדי ליצור לקוח שמחובר למסד נתונים עם שם, צריך להגדיר את מזהה מסד הנתונים כשיוצרים מופע של לקוח.
הצגת רשימה של מסדי נתונים
כדי להציג את רשימת מסדי הנתונים, משתמשים באחת מהשיטות הבאות:
המסוף
נכנסים לדף Databases במסוף 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
מחליפים את 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 Database.
- בכרטיסייה 'נתונים', מעל תצוגת טבלת הנתונים של מסד הנתונים, לוחצים על ואז בוחרים באפשרות מחיקת מסד הנתונים.
- פועלים לפי ההוראות כדי למחוק את מסד הנתונים.
gcloud
משתמשים בפקודה `gcloud firestore databases delete`.
gcloud firestore databases delete --database=DATABASE_ID
מחליפים את DATABASE_ID במזהה של מסד הנתונים שרוצים למחוק.
שכפול מסד נתונים
אפשר לשכפל מסד נתונים קיים בנקודת זמן נבחרת למסד נתונים חדש:
מסד הנתונים המשוכפל הוא מסד נתונים חדש שייווצר באותו מיקום של מסד הנתונים המקורי.
כדי ליצור שיבוט, Cloud Firestore משתמש בנתוני שחזור לנקודת זמן מסוימת (PITR) של מסד הנתונים של המקור. מסד הנתונים המשוכפל כולל את כל הנתונים והאינדקסים.
כברירת מחדל, מסד הנתונים המשוכפל יוצפן באותו אופן שבו מוצפן מסד הנתונים המקורי, באמצעות ההצפנה שמוגדרת כברירת מחדל ב-Google או באמצעות הצפנת CMEK. אפשר לציין סוג הצפנה אחר או להשתמש במפתח אחר להצפנת CMEK.
חותמת הזמן היא ברמת גרנולריות של דקה אחת ומציינת נקודת זמן בעבר, בתקופה שמוגדרת על ידי חלון ה-PITR:
- אם PITR מופעל במסד הנתונים, אפשר לבחור כל דקה ב-7 הימים האחרונים (או פחות, אם PITR הופעל לפני פחות מ-7 ימים).
- אם PITR לא מופעל, אפשר לבחור כל דקה בשעה האחרונה.
- אפשר לבדוק את חותמת הזמן המוקדמת ביותר שאפשר לבחור בתיאור של מסד הנתונים.
המסוף
במסוף Firebase אין תמיכה בשיבוט מסדי נתונים. אפשר להשתמש בהוראות ל-Google Cloud CLI כדי לשכפל מסדי נתונים.
gcloud
משתמשים בפקודה gcloud alpha firestore databases clone
כדי לשכפל מסד נתונים:
gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE_ID' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'
מחליפים את מה שכתוב בשדות הבאים:
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='projects/example-project/databases/example-dest-db'
שינוי הגדרות ההצפנה של מסד הנתונים המשוכפל
כברירת מחדל, למסד הנתונים המשוכפל תהיה אותה הגדרת הצפנה כמו למסד הנתונים המקורי. כדי לשנות את הגדרות ההצפנה, משתמשים בארגומנט --encryption-type
:
- (ברירת מחדל)
use-source-encryption
: שימוש באותה הגדרת הצפנה כמו במסד הנתונים של המקור. -
google-default-encryption
: שימוש בהצפנה שמוגדרת כברירת מחדל ב-Google. -
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='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'
הגדרת הרשאות גישה לכל מסד נתונים
אתם יכולים להשתמש בתנאים לניהול זהויות והרשאות גישה (IAM) כדי להגדיר הרשאות גישה ברמת מסד הנתונים. בדוגמאות הבאות נעשה שימוש ב-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
הם מדדים מצטברים ברמת הפרויקט.
מגבלות
- אפשר להגדיר עד 100 מסדי נתונים לכל פרויקט. אפשר לפנות לתמיכה כדי לבקש להגדיל את המגבלה הזו.
- אי אפשר למחוק את מסד הנתונים
(default)
אם הוא מכיל נתוני חיפוש של GAE. כדי למחוק נתוני חיפוש ב-GAE, צריך להשתמש ב-index delete api. אם מחקתם לאחרונה נתונים מ-GAE Search, יכול להיות שתצטרכו להמתין לפני שתוכלו למחוק את מסד הנתונים. - אי אפשר למחוק את מסד הנתונים
(default)
אם הוא מכיל ישויות מסוג blob. כדי למחוק נתונים מ-Blobstore, משתמשים ב-Blobstore delete api. כדי לבדוק אם במסד הנתונים(default)
יש נתונים של Blobstore, מריצים את שאילתת GQL הבאה במסוף Google Cloud:SELECT * FROM __BlobInfo__
. - אי אפשר לעשות שימוש חוזר במזהה של מסד נתונים עד 5 דקות אחרי המחיקה.
- Cloud Function v1 לא תומך במסדי נתונים בעלי שם ב-Firestore. משתמשים בטריגרים של Cloud Firestore (דור שני) כדי להגדיר אירועים למסדי נתונים עם שמות.
- יכול להיות שטריגרים של פונקציות ב-Firestore גרסה 1 וטריגרים של אירועים ב-Firestore יפסיקו לפעול אחרי מחיקת מסד הנתונים, גם אם ייצור מסד נתונים חדש באותו שם.