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

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

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

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

מהם עוד דברים חשובים שצריך להביא בחשבון?

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

נוכחות

כדאי לדעת מתי לקוח נמצא אונליין ומתי הוא אופליין. FirebaseRealtime 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 אלפיות השנייה.
  • הנתונים שלכם מאוחסנים במספר מרכזי נתונים באזורים שונים, כדי להבטיח יכולת התאמה לעומס (scalability) גלובלית ואמינות גבוהה.
  • זמין בתצורות אזוריות או במספר אזורים ברחבי העולם.
מידע נוסף על מאפייני הביצועים והאמינות של Cloud Firestore זמין בהסכם רמת השירות.
Realtime Database הוא פתרון אזורי.
  • התכונה זמינה בהגדרות האזוריות. מסדי הנתונים מוגבלים לזמינות של תחום (zone) בתוך אזור.
  • זמן אחזור נמוך במיוחד, עם זמני תגובה רגילים של עד 10 אלפיות השנייה. זוהי אפשרות אידיאלית לסנכרון תדיר של המצב.
מידע נוסף על מאפייני הביצועים והאמינות של Realtime Database זמין בהסכם רמת השירות.

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

Cloud Firestore [ מועדף ] Realtime Database
זמינות גבוהה במיוחד
  • זמן פעולה תקינה (uptime) אופייני של 99.999%.
  • אם הזמינות חשובה במיוחד, למשל באפליקציות מסחר אלקטרוני, כדאי להשתמש ב-Cloud Firestore.
ביצועים עם זמן פעולה תקינה גבוה
  • זמן פעולה תקינה (uptime) אופייני של 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.