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

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

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

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

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

    מעבר אל Firestore Database

  2. אם זו הפעם הראשונה שאתם יוצרים מסד נתונים עם שם, לוחצים על הוספת מסד נתונים.
  3. אחרת, לוחצים על (ברירת מחדל) ואז על הוספת מסד נתונים.
  4. מגדירים את מסד הנתונים. מזינים מזהה מסד נתונים. בחר במיקום. לוחצים על יצירת מסד נתונים.
gcloud

משתמשים בפקודה gcloud firestore databases create.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

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

--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]

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

--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
}

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

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.

כניסה לדף 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

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

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

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

    מעבר אל Firestore Database

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

משתמשים בפקודה `gcloud firestore databases delete`.

gcloud firestore databases delete --database=DATABASE_ID

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

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

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

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