בחירה בין מצב Native לבין מצב Datastore

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

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

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

לא נתמך
שמירת נתונים ממקורות אופליין ספריות הלקוח לנייד ולאינטרנט תומכות בשימור נתונים במצב אופליין. לא נתמך
ספריות לקוח ספריות לקוח של Firestore:
  • Java
  • Python
  • PHP
  • המשך
  • Ruby
  • C#‎
  • Node.js
  • Android
  • ‫iOS+‎
  • אינטרנט
  • C++‎
  • Unity
ספריות לקוח של Datastore:
  • Java
  • Python
  • PHP
  • המשך
  • Ruby
  • C#‎
  • Node.js
  • C++‎
אבטחה
  • ניהול זהויות והרשאות גישה (IAM) לניהול הגישה למסד הנתונים
  • כללי האבטחה של Firestore תומכים באימות ובהרשאה ללא שרת (serverless) בספריות הלקוח לנייד ולאינטרנט
ניהול הגישה למסד הנתונים באמצעות 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: מזהה מסד הנתונים