בוחרים מסד נתונים: Cloud Firestore או Realtime Database

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

  • Cloud Firestore הוא מסד נתונים של מסמכים ברמה ארגונית שתואם ל-JSON ומומלץ לשימוש. יותר מ-600,000 מפתחים סומכים עליו. הוא מתאים לאפליקציות עם מודלים עשירים של נתונים שדורשים יכולת שאילתה, מדרגיות וזמינות גבוהה. הוא גם מציע סנכרון לקוח עם זמן אחזור נמוך וגישה לנתונים במצב אופליין.

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

מהם עוד דברים חשובים שכדאי לקחת בחשבון?

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

מודל נתונים

Realtime Database ו-Cloud Firestore הם מסדי נתונים ב-NoSQL.

Cloud Firestore [ מועדף ] Realtime Database
מאחסן נתונים כאוספים של מסמכים.
  • קל לאחסן נתונים פשוטים במסמכים, שדומים מאוד ל-JSON.
  • קל יותר לארגן נתונים מורכבים והיררכיים בקנה מידה גדול באמצעות אוספי משנה במסמכים.
  • נדרשת פחות דה-נורמליזציה ושיטוח נתונים.

Cloud Firestore מידע נוסף על מודל הנתונים

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

Realtime Database מידע נוסף על מודל הנתונים

תמיכה בזמן אמת ובמצב אופליין

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

Cloud Firestore [ מועדף ] Realtime Database
תמיכה אופליין בלקוחות של Apple,‏ Android ואינטרנט. תמיכה אופליין בלקוחות של אפל ו-Android.

נוכחות

יכול להיות שימושי לדעת מתי לקוח מחובר או לא מחובר לאינטרנט. ‫Firebase Realtime Database יכול לתעד את סטטוס החיבור של הלקוח ולספק עדכונים בכל פעם שסטטוס החיבור של הלקוח משתנה.

Cloud Firestore [ מועדף ] Realtime Database
אין תמיכה מובנית. אפשר להסתמך על התמיכה של Realtime Database בנוכחות על ידי סנכרון של Cloud Firestore ו-Realtime Database באמצעות Cloud Functions. מידע נוסף זמין במאמר יצירת נוכחות ב-Cloud Firestore. יש תמיכה בסטטוס הנוכחות.

שליחת שאילתות

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

Cloud Firestore [ מועדף ] Realtime Database
שאילתות עם אינדקס עם מיון וסינון מורכבים.
  • אפשר לשרשר מסננים ולשלב סינון ומיון של נכס בשאילתה אחת.
  • השאילתות הן שטחיות: הן מחזירות רק מסמכים בקולקציה מסוימת או בקבוצת קולקציות, ולא מחזירות נתונים של קולקציות משנה.
  • השאילתות תמיד צריכות להחזיר מסמכים שלמים.
  • השאילתות עוברות אינדוקס כברירת מחדל: ביצועי השאילתה פרופורציונליים לגודל של קבוצת התוצאות, ולא למערך הנתונים.
שאילתות עומק עם תכונות מוגבלות של מיון וסינון.
  • אפשר למיין שאילתות או לסנן אותן לפי מאפיין, אבל לא לעשות את שניהם.
  • כברירת מחדל, השאילתות הן עמוקות: הן תמיד מחזירות את עץ המשנה כולו.
  • שאילתות יכולות לגשת לנתונים בכל רמת פירוט, עד לערכים של צומתי עלים בודדים בעץ ה-JSON.
  • לא צריך אינדקס כדי להריץ שאילתות, אבל הביצועים של שאילתות מסוימות יורדים ככל שמערך הנתונים גדל.

כתיבה ועסקאות

Cloud Firestore [ מועדף ] Realtime Database
פעולות מתקדמות של כתיבה ועסקאות.
  • פעולות כתיבת נתונים באמצעות פעולות הגדרה ועדכון, וגם טרנספורמציות מתקדמות כמו מערך ואופרטורים מספריים.
  • Transactions יכולות לקרוא ולכתוב נתונים באופן אטומי מכל חלק במסד הנתונים.
פעולות בסיסיות של כתיבה ועסקאות.

אמינות וביצועים

Cloud Firestore [ מועדף ] Realtime Database
Cloud Firestore הוא פתרון אזורי ורב-אזורי שניתן להרחבה אוטומטית.
  • פתרון עם זמן אחזור נמוך, עם זמני תגובה אופייניים שלא עולים על 30 אלפיות השנייה.
  • הנתונים מאוחסנים בכמה מרכזי נתונים באזורים שונים, כדי להבטיח יכולת הרחבה גלובלית ואמינות גבוהה.
  • זמין בתצורות אזוריות או רב-אזוריות ברחבי העולם.
מידע נוסף על מאפייני הביצועים והמהימנות של Cloud Firestore זמין בהסכם רמת השירות.
Realtime Database הוא פתרון אזורי.
  • זמין בהגדרות לפי אזור. הזמינות של מסדי נתונים מוגבלת לאזוריות בתוך אזור.
  • חביון נמוך במיוחד, עם זמני תגובה אופייניים שלא עולים על 10 אלפיות השנייה. אפשרות אידיאלית לסנכרון תכוף של מצבים.
מידע נוסף על מאפייני הביצועים והמהימנות של Realtime Database זמין בהסכם רמת השירות.

זמן פעולה תקינה

Cloud Firestore [ מועדף ] Realtime Database
ביצועים גבוהים מאוד של זמן פעולה.
  • ביצועים אופייניים של זמן פעולה תקינה בשיעור של 99.999%.
  • אם הזמינות חשובה לכם מאוד, למשל באפליקציות של מסחר אלקטרוני, כדאי להשתמש ב-Cloud Firestore.
ביצועים גבוהים של זמן פעולה.
  • ביצועים אופייניים של זמן פעולה תקינה בשיעור של 99.95%.

מדרגיות

Cloud Firestore [ מועדף ] Realtime Database
ההתאמה לגודל מתבצעת באופן אוטומטי.
  • התאמה אוטומטית לחלוטין. מגבלות ההרחבה הן בסביבות מיליון חיבורים בו-זמניים ו-10,000 פעולות כתיבה בשנייה. אנחנו מתכננים להגדיל את המגבלות האלה בעתיד.
  • יש מגבלות על שיעורי כתיבה למסמכים או לאינדקסים ספציפיים.
כדי להרחיב את הקיבולת צריך לבצע חלוקה למקטעים (sharding).
  • התאמה לעומס (scaling) של עד 200,000 חיבורים בו-זמניים ו-1,000 פעולות כתיבה לשנייה במסד נתונים יחיד. כדי להרחיב את המערכת מעבר לכך, צריך לפצל את הנתונים למספר מסדי נתונים.
  • אין הגבלות מקומיות על קצב הכתיבה של פריטי נתונים ספציפיים.

אבטחה

Cloud Firestore [ מועדף ] Realtime Database
כללים לא מדורגים שמשלבים הרשאה ואימות.
  • קריאה וכתיבה מתוך ערכות SDK לנייד שמאובטחות על ידי Cloud Firestore Security Rules.
  • קריאה וכתיבה מ-SDK של שרתים שמאובטחים על ידי ניהול זהויות והרשאות גישה (IAM).
  • כללים לא מועברים באופן אוטומטי אלא אם משתמשים בתו כללי.
  • הכללים יכולים להגביל את השאילתות: אם התוצאות של שאילתה מסוימת עשויות להכיל נתונים שלמשתמש אין גישה אליהם, השאילתה כולה תיכשל.
שפה של כללים מדורגים שמפרידה בין הרשאה לאימות.

תמחור

שני הפתרונות זמינים בתוכניות התמחור Spark ו-Blaze.

Cloud Firestore [ מועדף ] Realtime Database
החיובים מתבססים בעיקר על פעולות שבוצעו במסד הנתונים (קריאה, כתיבה, מחיקה), ובשיעור נמוך יותר על רוחב פס ואחסון.

Cloud Firestore תומך בתקרות הוצאה יומיות לפרויקטים של App Engine, כדי לוודא שלא תחרגו מהעלויות שמתאימות לכם.

מידע נוסף על תוכניות התמחור של Cloud Firestore

החיוב הוא רק על רוחב פס ואחסון, אבל לפי תעריף גבוה יותר.

מידע נוסף על תוכניות התמחור של Realtime Database

שימוש ב-Cloud Firestore וב-Realtime Database

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

מידע נוסף על התכונות שזמינות ב-Realtime Database וב-Cloud Firestore

מוכנים לבחור מסד נתונים?

אנחנו מקווים שההשוואה הזו עזרה לך לבחור פתרון מסד נתונים של Firebase. עכשיו אפשר ללמוד איך מוסיפים מסד נתונים לפרויקטים ב-Firebase.