יצירה וניהול של מסדי נתונים
בדף הזה מוסבר איך ליצור, לעדכן ולמחוק מסדי נתונים של Firestore. אפשר ליצור כמה מסדי נתונים של Firestore לכל פרויקט. אתם יכולים להשתמש בכמה מסדי נתונים כדי להגדיר סביבות ייצור ובדיקה, לבודד נתוני לקוחות ולבצע לוקליזציה של נתונים.
תפקידים והרשאות נדרשים
כדי ליצור ולנהל מסדי נתונים, אתם צריכים את התפקיד הבא בניהול זהויות והרשאות גישה (IAM):
- Cloud Datastore Owner
(
roles/datastore.owner)
התפקיד הזה מעניק את ההרשאות הבאות שדרושות ליצירה ולניהול של מסדי נתונים:
- יצירת מסד נתונים:
datastore.databases.create - קריאת הגדרת מסד הנתונים:
datastore.databases.getMetadata - הגדרת מסד נתונים:
datastore.databases.update - כדי למחוק מסד נתונים:
datastore.databases.delete - שכפול של מסד נתונים:
datastore.databases.clone
יצירת מסד נתונים
כדי ליצור מסד נתונים, משתמשים באחת מהשיטות הבאות:
המסוף
-
נכנסים לדף Databases במסוף Google Cloud .
- לוחצים על יצירת מסד נתונים של Firestore.
- מזינים מזהה מסד נתונים.
- בוחרים מהדורה של Firestore. מידע נוסף על כל מהדורה מפורט בסקירה הכללית של המהדורות.
- בוחרים מצב גישה לנתונים. מצב הגישה לנתונים מגדיר לאיזה API ולאילו ספריות לקוח יש לכם גישה למסד הנתונים.
- אם בוחרים באפשרות Firestore במצב Native:
- מגדירים את כללי האבטחה הראשוניים. בוחרים באפשרות Restrictive (מגבילים) אם לא מתכננים להשתמש בערכות ה-SDK של Firebase לאפליקציות לנייד ולאינטרנט.
- אם בחרתם במהדורת Enterprise, אתם יכולים להפעיל או להשבית עדכונים בזמן אמת למסד הנתונים.
- בוחרים מיקום.
- (אופציונלי) אם אתם צריכים מפתחות הצפנה בניהול הלקוח (CMEK), מרחיבים את אפשרויות ההצפנה ומגדירים אותן.
- לוחצים על יצירת מסד נתונים.
gcloud
משתמשים בפקודה gcloud firestore databases create.
-
כדי ליצור מסד נתונים במהדורת Firestore Enterprise במצב Native:
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=enterprise \ --enable-firestore-data-access \ --no-enable-mongodb-compatible-data-access \ --enable-realtime-updates
מחליפים את מה שכתוב בשדות הבאים:
- DATABASE_ID: מזהה מסד נתונים תקין.
- LOCATION: השם של אזור או מיקום במספר אזורים ב-Firestore.
-
כדי ליצור מסד נתונים במהדורת Firestore Standard:
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=standard --type=DATABASE_TYPE
מחליפים את מה שכתוב בשדות הבאים:
- DATABASE_ID: מזהה מסד נתונים תקין.
- LOCATION: השם של אזור או מיקום במספר אזורים ב-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 \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: השם של אזור או מיקום במספר אזורים ב-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: השם של אזור או מיקום 'במספר אזורים' ב-Firestore.
- DATABASE_TYPE:
FIRESTORE_NATIVEלמצב Native או DATASTORE_MODEלמצב Datastore. - DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLEDאוDELETE_PROTECTION_DISABLED.
delete_protection_state הוא ארגומנט אופציונלי להפעלת הגנה מפני מחיקה. אי אפשר למחוק מסד נתונים שהופעלה בו הגנה מפני מחיקה
עד שמשביתים את ההגדרה הזו. ההגדרה הזו מושבתת כברירת מחדל.
מזהה מסד הנתונים
מזהה מסד נתונים תקין צריך לעמוד בכללים הבאים:
- אפשר לכלול רק אותיות, מספרים ומקפים (
-). - האותיות צריכות להיות קטנות.
- התו הראשון חייב להיות אות.
- התו האחרון חייב להיות אות או מספר.
- לפחות 4 תווים.
- 63 תווים לכל היותר.
- הערך לא יכול להיות מזהה ייחודי אוניברסלי (UUID) או להיות דומה למזהה ייחודי אוניברסלי. לדוגמה, אל תשתמשו במזהה כמו
f47ac10b-58cc-0372-8567-0e02b2c3d479.
יש יוצא מן הכלל אחד לכללים האלה: מהדורת Standard תיצור מסד נתונים בשם (default) אם לא תזינו מזהה בעצמכם.
שימו לב: אחרי שמוחקים מסד נתונים, אי אפשר להשתמש שוב במזהה שלו במשך כ-5 דקות.
מחיקת ההגנה
כדי למנוע מחיקה של מסד נתונים בטעות, אפשר להשתמש בהגנה מפני מחיקה. אי אפשר למחוק מסד נתונים שההגנה מפני מחיקה מופעלת בו עד שמשביתים את ההגנה מפני מחיקה. ההגנה מפני מחיקה מושבתת כברירת מחדל. אפשר לעדכן את הגדרות מסד הנתונים כדי להפעיל או להשבית את ההגנה מפני מחיקה.
הגדרת כללי אבטחה של Firestore למסדי הנתונים
משתמשים ב-Firebase CLI כדי לפרוס כללי אבטחה של Firestore לכל אחד ממסדי הנתונים. אפשר לעיין במדריך לניהול ולפריסה של כללי אבטחה ב-Firestore.
גישה למסד נתונים עם שם באמצעות ספריית לקוח
מסד נתונים עם שם כולל כל מסד נתונים שלא נקרא (default). כברירת מחדל, Firebase SDKs וספריות לקוח של Google API מתחברים למסד הנתונים של (default)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
הפלט של מסד נתונים Enterprise כולל את השדות הבאים:
Edition:ENTERPRISEFirestore Data Access:DATA_ACCESS_MODE_ENABLEDאוDATA_ACCESS_MODE_DISABLEDMongoDB Compatible Data Access:DATA_ACCESS_MODE_ENABLEDאוDATA_ACCESS_MODE_DISABLEDRealtime Updates:REALTIME_UPDATES_ENABLEDאוREALTIME_UPDATES_DISABLED
מחליפים את DATABASE_ID במזהה של מסד הנתונים.
עדכון ההגדרה של מסד הנתונים
כדי לעדכן את הגדרות התצורה של מסד נתונים, משתמשים בפקודה gcloud firestore
databases
update.
משתמשים בפקודה הזו כדי לשנות את סוג מסד הנתונים או כדי להפעיל או להשבית את ההגנה מפני מחיקה.
שינוי סוג מסד הנתונים
כדי לעדכן את סוג מסד הנתונים, משתמשים בפקודה gcloud firestore databases update עם הדגל --type=. אפשר לשנות את הסוג רק אם מסד הנתונים ריק.
gcloud
gcloud firestore databases update --database=DATABASE_ID \ --type=DATABASE_TYPE
מחליפים את מה שכתוב בשדות הבאים:
- DATABASE_ID: מזהה מסד נתונים.
- DATABASE_TYPE:
firestore-nativeלמצב Native אוdatastore-modeלמצב Datastore.
עדכון הגדרת ההגנה מפני מחיקה
כדי להפעיל הגנה מפני מחיקה במסד נתונים, משתמשים בפקודה 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 שקשורים למסד הנתונים הזה. הטריגר מפסיק להעביר אירועים, אבל הוא ממשיך להתקיים עד שמוחקים את הטריגר.
מחיקת מסד נתונים לא כרוכה בחיוב על פעולות מחיקה.
המסוף
-
נכנסים לדף Databases במסוף Google Cloud .
- לוחצים על הצגת פרטים נוספים בשורה בטבלה של מסד הנתונים שרוצים למחוק. לוחצים על מחיקה. מופיעה תיבת דו-שיח.
בתיבת הדו-שיח למחוק את מסד הנתונים?, מאשרים את המחיקה על ידי הקלדת מזהה מסד הנתונים בשדה הטקסט. לוחצים על מחיקה. המסוף מודיע לכם אם הפעולה הצליחה או נכשלה.
אם הפעולה נכשלת, צריך לעיין בפרטי מסד הנתונים ולוודא שההגנה מפני מחיקה מושבתת. כדי להשבית את ההגנה מפני מחיקה, אפשר לעיין במאמר בנושא עדכון ההגדרה של ההגנה מפני מחיקה.
gcloud
משתמשים בפקודה `gcloud firestore databases delete`.
gcloud firestore databases delete --database=DATABASE_ID
מחליפים את DATABASE_ID במזהה של מסד הנתונים שרוצים למחוק. כדי למחוק את מסד הנתונים שמוגדר כברירת מחדל, צריך להשתמש במזהה '(default)'
שכפול מסד נתונים
אפשר לשכפל מסד נתונים קיים בנקודת זמן נבחרת למסד נתונים חדש:
מסד הנתונים המשוכפל הוא מסד נתונים חדש שייווצר באותו מיקום כמו מסד הנתונים המקורי.
כדי ליצור שיבוט, Firestore משתמש בנתונים של שחזור לנקודת זמן (PITR) של מסד הנתונים המקורי. מסד הנתונים המשוכפל כולל את כל הנתונים והאינדקסים.
כברירת מחדל, מסד הנתונים המשוכפל יוצפן באותו אופן שבו מוצפן מסד הנתונים המקורי, באמצעות ההצפנה שמוגדרת כברירת מחדל ב-Google או באמצעות הצפנת CMEK. אפשר לציין סוג הצפנה אחר או להשתמש במפתח אחר להצפנת CMEK.
חותמת הזמן היא ברמת גרנולריות של דקה אחת ומציינת נקודת זמן בעבר, בתקופה שמוגדרת על ידי חלון PITR:
- אם PITR מופעל במסד הנתונים, אפשר לבחור כל דקה ב-7 הימים האחרונים (או פחות, אם PITR הופעל לפני פחות מ-7 ימים).
- אם PITR לא מופעל, אפשר לבחור כל דקה בשעה האחרונה.
- אפשר לבדוק את חותמת הזמן המוקדמת ביותר שאפשר לבחור בתיאור של מסד הנתונים.
המסוף
- נכנסים לדף Databases במסוף Google Cloud .
לוחצים על View more בשורה של מסד הנתונים שרוצים לשכפל. לוחצים על Clone (שיבוט). מופיעה תיבת הדו-שיח יצירת שיבוט.
בתיבת הדו-שיח יצירת שיבוט, מציינים פרמטרים לשיבוט של מסד הנתונים:
בשדה Give the clone an ID (הקצאת מזהה לשיבוט), מזינים מזהה מסד נתונים למסד נתונים משובט חדש. מזהה מסד הנתונים הזה לא יכול להיות משויך למסד נתונים קיים.
בשדה Clone from, בוחרים נקודת זמן לשימוש בשביל שיבוט. הזמן שנבחר תואם לחותמת זמן של 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, שהוא רשימה אופציונלית של זוגות תגים 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'
הגדרת הרשאות גישה לכל מסד נתונים
אתם יכולים להשתמש בתנאים של ניהול הזהויות והרשאות הגישה (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
מדדי 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 CloudSELECT * FROM __BlobInfo__. - אי אפשר לעשות שימוש חוזר במזהה של מסד נתונים עד 5 דקות אחרי המחיקה.
- Cloud Function v1 לא תומך במסדי נתונים בעלי שם ב-Firestore. משתמשים בטריגרים של Cloud Firestore (דור שני) כדי להגדיר אירועים למסדי נתונים עם שמות.
- יכול להיות שטריגרים של פונקציות ב-Firestore v1 וטריגרים של אירועים ב-Firestore יפסיקו לפעול אחרי מחיקת מסד הנתונים, גם אם ייצור מסד נתונים חדש באותו שם.