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