כשיוצרים מסד נתונים של Firestore, צריך לבחור בין שני מצבים: מצב מקורי או מצב Datastore. בדף הזה מוסבר ההבדל בין שני המצבים.
בחירת מצב מסד נתונים
כשיוצרים מסד נתונים חדש ב-Firestore, צריך לבחור מצב מסד נתונים. אפשר להשתמש במסדי נתונים במצב Native ובמצב Datastore באותו פרויקט, אבל כל מסד נתונים יהיה מסוג אחד.
כשבוחרים מצב מסד נתונים, מומלץ להשתמש בהמלצות הבאות:
מומלץ להשתמש ב-Firestore במצב Native לכל האפליקציות החדשות (שרת, נייד ואינטרנט).
Firestore במצב Native משתמש במודל נתונים מבוסס-מסמכים שתואם לתקנים בתעשייה. בנוסף למסד נתונים עקבי וניתן להרחבה, Firestore במצב Native מספק סנכרון נתונים בזמן אמת ותכונות של backend כשירות.
אם האפליקציה שלכם מסתמכת על Datastore API, אתם צריכים להשתמש ב-Firestore במצב Datastore.
יש תמיכה מלאה במצב Datastore, והוא מומלץ לאפליקציות עם תלות ב-Datastore API. מצב Native ומצב Datastore חולקים שכבת אחסון בסיסית עם אותן יכולות זמינות, עקביות ושינוי גודל.
Firestore במצב Native
Firestore היא הגרסה הראשית הבאה של Datastore, והיא למעשה מיתוג מחדש של המוצר. Firestore הוא מסד נתונים מסוג NoSQL לאחסון מסמכים שמיועד להתאמה לעומס (automatic scaling), לביצועים גבוהים ולפיתוח אפליקציות בקלות. הוא משלב את היתרונות של Datastore ושל Firebase Realtime Database.
ב-Firestore נוספו התכונות הבאות:
- שכבת אחסון עם מודל עקביות חזק
- מודל נתונים של אוסף ומסמך
- עדכונים בזמן אמת
- ספריות לקוח לנייד ולאינטרנט
Firestore תואם לאחור ל-Datastore, אבל מודל הנתונים החדש, העדכונים בזמן אמת והתכונות של ספריות הלקוח לנייד ולאינטרנט לא תואמים לאחור. כדי לגשת לכל התכונות של Firestore, צריך להשתמש ב-Firestore במצב Native.
Firestore במצב Datastore
ב-Firestore במצב Datastore נעשה שימוש בהתנהגות המערכת של Datastore, אבל יש גישה לשכבת האחסון של Firestore, ולכן המגבלות הבאות של Datastore לא חלות:
- כל השאילתות ב-Datastore הן עכשיו עקביות חזקות, אלא אם מבקשים במפורש מודל עקביות הדרגתי.
- אין יותר דרישה ששאילתות בעסקאות יהיו שאילתות צאצא.
- מספר העסקאות כבר לא מוגבל ל-25 קבוצות ישויות.
- הכתיבה לקבוצת ישויות כבר לא מוגבלת ל-1 לשנייה.
במצב Datastore, מושבתות תכונות של Firestore שלא תואמות ל-Datastore:
- הפרויקט יקבל בקשות ל-Datastore API וידחה בקשות ל-Firestore API.
- הפרויקט ישתמש באינדקסים של Datastore במקום באינדקסים של Firestore.
- אפשר להשתמש בספריות לקוח של Datastore עם הפרויקט הזה, אבל לא בספריות לקוח של Firestore.
- האפשרויות של Firestore בזמן אמת לא יהיו זמינות.
- במסוף Google Cloud , מסד הנתונים ישתמש בכלי לצפייה ב-Datastore.
תמחור ומיקומים
מסדי נתונים במצב Native ומסדי נתונים במצב Datastore משתמשים באותו מבנה תמחור וזמינים באותם מיקומים. המחירים והמיקומים מתוארים בפירוט בדפים הבאים:
Firestore במצב Native
Firestore במצב Datastore
השוואה בין תכונות
בטבלה הבאה מוצגת השוואה בין התנהגות המערכת במצבי מסד הנתונים השונים:
| Firestore במצב Native |
Firestore במצב Datastore |
|
|---|---|---|
| מודל נתונים | מסד נתונים של מסמכים שמסודר במסמכים ובאוספים. | הישויות מאורגנות לפי סוגים וקבוצות ישויות. |
| שכבת האחסון | שכבת אחסון עם עקביות חזקה. | שכבת אחסון עם עקביות חזקה. |
| שאילתות ועסקאות |
|
|
| תמיכה ב-Datastore v1 API | לא, הבקשות נדחות | כן |
| תמיכה ב-Firestore v1 API | כן | לא, הבקשות נדחות |
| עדכונים בזמן אמת |
תמיכה ביכולת להאזין למסמך או לקבוצת מסמכים כדי לקבל עדכונים בזמן אמת. במהלך ההאזנה למסמך או לקבוצת מסמכים, הלקוחות מקבלים הודעה על כל שינוי בנתונים, ונשלחת אליהם קבוצת הנתונים העדכנית ביותר. |
לא נתמך |
| שמירת נתונים ממקורות אופליין | ספריות הלקוח לנייד ולאינטרנט תומכות בשימור נתונים במצב אופליין. | לא נתמך |
| ספריות לקוח |
ספריות לקוח של Firestore:
|
ספריות לקוח של Datastore:
|
| אבטחה |
|
ניהול הגישה למסד הנתונים באמצעות IAM |
| הסכם רמת שירות (SLA) | הסכם רמת שירות (SLA) של Firestore | הסכם רמת שירות (SLA) של Firestore |
| מיקומים |
שני המצבים תומכים באותם מיקומים. רשימה מפורטת של המיקומים מופיעה בדפים הבאים: |
|
| Pricing |
בשני המצבים נעשה שימוש באותו מבנה תמחור לפעולות על ישויות ומסמכים. ב-Firestore במצב Datastore לא מחויבים על פעולות קטנות. בשני המצבים, מבנה התמחור של נתונים מאוחסנים ורוחב פס ברשת זהה. פרטים נוספים על התמחור מופיעים בדפים הבאים: |
|
| Console | מסוף Firebase ו-Firestore Viewer במסוף Google Cloud | Google Cloud בעל הרשאת צפייה ב-Datastore במסוף |
| מרחבי שמות | לא נתמך | מרחבי שמות נתמכים |
| שילוב של ספריית לקוח של App Engine | לא נתמך בסביבה רגילה של App Engine בזמני ריצה של Python 2.7 ו-PHP 5.5 נתמך בסביבה הרגילה של App Engine, בכל שאר זמני הריצה נתמך בסביבה הגמישה של App Engine, בכל זמני הריצה |
נתמך בכל סביבות זמן הריצה |
יצירת מסד נתונים חדש
אפשר ליצור מסד נתונים חדש ב-Firestore במצב Native או במצב Datastore. הבחירה הזו לא תלויה במצבים של מסדי נתונים קיימים בפרויקט.
מידע נוסף אפשר למצוא במאמר בנושא יצירה וניהול של מסדי נתונים.מעבר בין מצב Native למצב Datastore
אם מסד הנתונים ריק, אפשר לעבור בין מצב Native לבין מצב Datastore.
שינוי מסד הנתונים למצב מקורי:
gcloud
כדי לשנות את מסד הנתונים למצב Native, משתמשים בפקודה gcloud firestore databases update.
gcloud firestore databases update --type=firestore-native --database='DATABASE_ID'
מחליפים את DATABASE_ID במזהה של מסד הנתונים.
מנוחה
curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"FIRESTORE_NATIVE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/DATABASE_ID?updateMask=type"
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט
- DATABASE_ID: מזהה מסד הנתונים
שינוי מסד הנתונים למצב Datastore:
gcloud
כדי לשנות את מסד הנתונים למצב Datastore, משתמשים בפקודה gcloud firestore databases update.
gcloud firestore databases update --type=datastore-mode --database='DATABASE_ID'
מחליפים את DATABASE_ID במזהה של מסד הנתונים.
מנוחה
curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"DATASTORE_MODE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/DATABASE_ID?updateMask=type"
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט
- DATABASE_ID: מזהה מסד הנתונים