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

רלוונטי רק למהדורת Cloud Firestore Enterprise.

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

שימוש בתוכנית ללא תשלום

Cloud Firestore מציעה רמת שימוש בחינם שמאפשרת לכם להתחיל לעבוד ללא עלות.

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

לפני שמתחילים

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

  1. אם עדיין לא עשיתם זאת, אתם צריכים ליצור פרויקט ב-Firebase: בFirebaseמסוף, לוחצים על הוספת פרויקט ופועלים לפי ההוראות שמופיעות במסך כדי ליצור פרויקט ב-Firebase או כדי להוסיף שירותי Firebase לפרויקט Google Cloud קיים.

  2. מקצים תפקידים מתאימים בניהול הזהויות והרשאות הגישה (IAM) כמו שמתואר בקטע הבא.

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

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

ההרשאות הנדרשות

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

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

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

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

מסוף Firebase
  1. במסוף Firebase, עוברים לדף Firestore Database.

    מעבר אל Firestore Database

  2. לוחצים על יצירת מסד נתונים.
  3. בוחרים באפשרות Enterprise edition (מהדורת Enterprise). לוחצים על Next.
  4. מזינים מזהה מסד נתונים.
  5. בוחרים מיקום למסד הנתונים.
  6. מגדירים את מסד הנתונים ובוחרים מצב.
  7. לוחצים על יצירה.
Firebase CLI
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
CLI של gcloud

משתמשים בפקודה gcloud firestore databases create ומגדירים את --edition=enterprise.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise

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

כדי להפעיל הגנה מפני מחיקה, מוסיפים את הדגל --delete-protection. אי אפשר למחוק מסד נתונים שההגנה מפני מחיקה מופעלת בו עד שמשביתים את ההגדרה הזו. הגדרה זו מושבתת כברירת מחדל.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--delete-protection

כדי להוסיף תגים למסד הנתונים, משתמשים בדגל --tags. לדוגמה:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Terraform

משתמשים במשאב google_firestore_database ומגדירים את database_edition לערך ENTERPRISE

resource "google_firestore_database" "database" {
  name             = "DATABASE_ID"
  location_id      = "LOCATION"
  type             = "FIRESTORE_NATIVE"
  database_edition = "ENTERPRISE"

  // Optional
  delete_protection_state = "DELETE_PROTECTION_STATE"
}

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

כדי להפעיל את ההגנה מפני מחיקה, מגדירים את delete_protection_state לערך DELETE_PROTECTION_ENABLED. אי אפשר למחוק מסד נתונים שהופעלה בו הגנה מפני מחיקה עד שמשביתים את ההגדרה הזו. הגדרה זו מושבתת כברירת מחדל.

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

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

  • כולל רק אותיות, מספרים ומקפים (-).
  • האותיות צריכות להיות קטנות.
  • התו הראשון חייב להיות אות.
  • התו האחרון חייב להיות אות או מספר.
  • לפחות 4 תווים.
  • 63 תווים לכל היותר.
  • הערך לא יכול להיות UUID או להיראות כמו UUID. לדוגמה, אל תשתמשו במזהה כמו f47ac10b-58cc-0372-8567-0e02b2c3d479.

אם מוחקים מסד נתונים, אי אפשר להשתמש שוב במזהה של מסד הנתונים באופן מיידי, אלא רק אחרי 5 דקות.

מחיקת ההגנה

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

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

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

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

מסוף Firebase
  1. במסוף Firebase, עוברים לדף Firestore Database.

    מעבר אל Firestore Database

  2. לוחצים על Cloud Firestore כדי לראות את כל מסדי הנתונים של הפרויקט.
CLI של gcloud

משתמשים בפקודה gcloud firestore databases list כדי להציג את כל מסדי הנתונים בפרויקט.

gcloud firestore databases list

צפייה בפרטי מסד הנתונים

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

מסוף Firebase
  1. במסוף Firebase, עוברים לדף Firestore Database.

    מעבר אל Firestore Database

  2. בוחרים מסד נתונים מתוך רשימת מסדי הנתונים.
CLI של gcloud

משתמשים בפקודה gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID

מחליפים את DATABASE_ID במזהה מסד הנתונים.

עדכון ההגדרה של מסד הנתונים

כדי לעדכן את הגדרות התצורה של מסד נתונים, משתמשים בפקודה gcloud firestore databases update.

אפשר להשתמש בפקודה הזו כדי לשנות את ההגנה מפני מחיקה, להפעיל אותה או להשבית אותה.

עדכון הגדרת ההגנה מפני מחיקה

כדי להפעיל הגנה מפני מחיקה במסד נתונים, משתמשים בפקודה gcloud firestore databases update עם הדגל --delete-protection. לדוגמה:

CLI של gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection

מחליפים את DATABASE_ID במזהה מסד הנתונים.

כדי להשבית את ההגנה מפני מחיקה במסד נתונים, משתמשים בפקודה gcloud firestore databases update עם הדגל --no-delete-protection. לדוגמה:

CLI של gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

מחליפים את DATABASE_ID במזהה מסד הנתונים.

מחיקה של מסד נתונים

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

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

מסוף Firebase
  1. במסוף Firebase, עוברים לדף Firestore Database.

    מעבר אל Firestore Database

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

המסוף

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

    כניסה לדף Databases

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

  3. בתיבת הדו-שיח Create a clone (יצירת שיבוט), מציינים פרמטרים לשיבוט של מסד הנתונים:

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

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

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

gcloud

משתמשים בפקודה 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='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: כתובת אימייל שמייצגת חשבון ספציפי. לדוגמה, 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.

מגבלות

אפשר להגדיר עד 100 מסדי נתונים לכל פרויקט. אפשר לפנות לתמיכה כדי לבקש להגדיל את המגבלה הזו.

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