בוחרים מסד נתונים: 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 [ 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.