יצירה וניהול של מסדי נתונים

בדף הזה מוסבר איך ליצור, לעדכן ולמחוק מסדי נתונים של Firestore. אפשר ליצור כמה מסדי נתונים של Firestore לכל פרויקט. אתם יכולים להשתמש בכמה מסדי נתונים כדי להגדיר סביבות ייצור ובדיקה, לבודד נתוני לקוחות ולבצע לוקליזציה של נתונים.

תפקידים והרשאות נדרשים

כדי ליצור ולנהל מסדי נתונים, אתם צריכים את התפקיד הבא בניהול זהויות והרשאות גישה (IAM):

התפקיד הזה מעניק את ההרשאות הבאות שדרושות ליצירה ולניהול של מסדי נתונים:

  • יצירת מסד נתונים: datastore.databases.create
  • קריאת הגדרת מסד הנתונים: datastore.databases.getMetadata
  • הגדרת מסד נתונים: datastore.databases.update
  • כדי למחוק מסד נתונים: datastore.databases.delete
  • שכפול של מסד נתונים: datastore.databases.clone

יצירת מסד נתונים

כדי ליצור מסד נתונים, משתמשים באחת מהשיטות הבאות:

המסוף
  1. נכנסים לדף Databases במסוף Google Cloud .

    מעבר אל Databases

  2. לוחצים על יצירת מסד נתונים של Firestore.
  3. מזינים מזהה מסד נתונים.
  4. בוחרים מהדורה של Firestore. מידע נוסף על כל מהדורה מפורט בסקירה הכללית של המהדורות.
  5. בוחרים מצב גישה לנתונים. מצב הגישה לנתונים מגדיר לאיזה API ולאילו ספריות לקוח יש לכם גישה למסד הנתונים.
  6. אם בוחרים באפשרות Firestore במצב Native:
    • מגדירים את כללי האבטחה הראשוניים. בוחרים באפשרות Restrictive (מגבילים) אם לא מתכננים להשתמש בערכות ה-SDK של Firebase לאפליקציות לנייד ולאינטרנט.
    • אם בחרתם במהדורת Enterprise, אתם יכולים להפעיל או להשבית עדכונים בזמן אמת למסד הנתונים.
  7. בוחרים מיקום.
  8. (אופציונלי) אם אתם צריכים מפתחות הצפנה בניהול הלקוח (CMEK), מרחיבים את אפשרויות ההצפנה ומגדירים אותן.
  9. לוחצים על יצירת מסד נתונים.
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

    מחליפים את מה שכתוב בשדות הבאים:

  • כדי ליצור מסד נתונים במהדורת 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 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]

מחליפים את מה שכתוב בשדות הבאים:

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 הוא ארגומנט אופציונלי להפעלת הגנה מפני מחיקה. אי אפשר למחוק מסד נתונים שהופעלה בו הגנה מפני מחיקה עד שמשביתים את ההגדרה הזו. ההגדרה הזו מושבתת כברירת מחדל.

מזהה מסד הנתונים

מזהה מסד נתונים תקין צריך לעמוד בכללים הבאים:

  • אפשר לכלול רק אותיות, מספרים ומקפים (-).
  • האותיות צריכות להיות קטנות.
  • התו הראשון חייב להיות אות.
  • התו האחרון חייב להיות אות או מספר.
  • לפחות 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 .

מעבר אל Databases

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: 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 עם הדגל --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 שקשורים למסד הנתונים הזה. הטריגר מפסיק להעביר אירועים, אבל הוא ממשיך להתקיים עד שמוחקים את הטריגר.

מחיקת מסד נתונים לא כרוכה בחיוב על פעולות מחיקה.

המסוף
  1. נכנסים לדף Databases במסוף Google Cloud .

    מעבר אל Databases

  2. לוחצים על הצגת פרטים נוספים בשורה בטבלה של מסד הנתונים שרוצים למחוק. לוחצים על מחיקה. מופיעה תיבת דו-שיח.
  3. בתיבת הדו-שיח למחוק את מסד הנתונים?, מאשרים את המחיקה על ידי הקלדת מזהה מסד הנתונים בשדה הטקסט. לוחצים על מחיקה. המסוף מודיע לכם אם הפעולה הצליחה או נכשלה.

    אם הפעולה נכשלת, צריך לעיין בפרטי מסד הנתונים ולוודא שההגנה מפני מחיקה מושבתת. כדי להשבית את ההגנה מפני מחיקה, אפשר לעיין במאמר בנושא עדכון ההגדרה של ההגנה מפני מחיקה.

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 לא מופעל, אפשר לבחור כל דקה בשעה האחרונה.
    • אפשר לבדוק את חותמת הזמן המוקדמת ביותר שאפשר לבחור בתיאור של מסד הנתונים.

המסוף

  1. נכנסים לדף Databases במסוף Google Cloud .

מעבר אל Databases

  1. לוחצים על View more בשורה של מסד הנתונים שרוצים לשכפל. לוחצים על Clone (שיבוט). מופיעה תיבת הדו-שיח יצירת שיבוט.

  2. בתיבת הדו-שיח יצירת שיבוט, מציינים פרמטרים לשיבוט של מסד הנתונים:

    1. בשדה Give the clone an ID (הקצאת מזהה לשיבוט), מזינים מזהה מסד נתונים למסד נתונים משובט חדש. מזהה מסד הנתונים הזה לא יכול להיות משויך למסד נתונים קיים.

    2. בשדה Clone from, בוחרים נקודת זמן לשימוש בשביל שיבוט. הזמן שנבחר תואם לחותמת זמן של PITR, ברמת פירוט של דקה.

  3. לוחצים על יצירת שיבוט.

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 Cloud SELECT * FROM __BlobInfo__.
  • אי אפשר לעשות שימוש חוזר במזהה של מסד נתונים עד 5 דקות אחרי המחיקה.
  • ‫Cloud Function v1 לא תומך במסדי נתונים בעלי שם ב-Firestore. משתמשים בטריגרים של Cloud Firestore (דור שני) כדי להגדיר אירועים למסדי נתונים עם שמות.
  • יכול להיות שטריגרים של פונקציות ב-Firestore‏ v1 וטריגרים של אירועים ב-Firestore יפסיקו לפעול אחרי מחיקת מסד הנתונים, גם אם ייצור מסד נתונים חדש באותו שם.

המאמרים הבאים