בוחרים מסד נתונים: 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 [ PREFERRED ] Realtime Database
מאחסן נתונים כאוספים של מסמכים.
  • קל לאחסן נתונים פשוטים במסמכים, שדומים מאוד ל-JSON.
  • קל יותר לארגן נתונים מורכבים והיררכיים בקנה מידה גדול באמצעות אוספי משנה במסמכים.
  • נדרשת פחות דה-נורמליזציה ופחות שיטוח של הנתונים.

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

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

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

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

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

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

נוכחות

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

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

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

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

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

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

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

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

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

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

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

מדרגיות

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

אבטחה

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

תמחור

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

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

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

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

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

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

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

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

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

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

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