מטב את ביצועי מסד הנתונים

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

מעקב אחר ביצועי מסד נתונים בזמן אמת

אתה יכול לאסוף נתונים על הביצועים של מסד הנתונים בזמן אמת באמצעות כמה כלים שונים, בהתאם לרמת הפירוט הדרושה לך:

  • סקירה כללית ברמה גבוהה: השתמש בכלי הפרופילים עבור רשימה של שאילתות לא אינדקס וסקירה בזמן אמת של פעולות קריאה/כתיבה.
  • אומדן שימוש בחיוב: השתמש במדדי השימוש הזמינים במסוף Firebase כדי לראות את מדדי השימוש והביצועים ברמה גבוהה.
  • פירוט מפורט: השתמש בניטור ענן לקבלת מבט מפורט יותר על ביצועי מסד הנתונים שלך לאורך זמן.

שפר את הביצועים לפי מדד

לאחר שאספת נתונים, חקור את השיטות והאסטרטגיות המומלצות הבאות על סמך תחום הביצועים שברצונך לשפר.

אסטרטגיות לשיפור ביצועים במבט חטוף
מֶטרִי תיאור שיטות עבודה מומלצות
עומס/ניצול בצע אופטימיזציה של כמה מהקיבולת של מסד הנתונים שלך נמצאת בשימוש בקשות לעיבוד בכל זמן נתון (משתקף במדדים **Load** או **io/database_load**). בצע אופטימיזציה של מבנה הנתונים שלך
נתונים מפוצלים בין מסדי נתונים
שפר את יעילות המאזין
הגבל הורדות באמצעות כללים מבוססי שאילתות
ייעול חיבורים
קשרים פעילים איזון את מספר החיבורים הפעילים בו-זמנית למסד הנתונים שלך כדי להישאר מתחת למגבלת 200,000 החיבורים. נתונים מפוצלים בין מסדי נתונים
צמצם קשרים חדשים
רוחב פס יוצא אם ההורדות ממסד הנתונים שלך נראות גבוהות יותר ממה שאתה רוצה שהן יהיו, אתה יכול לשפר את היעילות של פעולות הקריאה שלך ולהפחית את תקורה ההצפנה. ייעול חיבורים
בצע אופטימיזציה של מבנה הנתונים שלך
הגבל הורדות באמצעות כללים מבוססי שאילתות
שימוש חוזר בהפעלות SSL
שפר את יעילות המאזין
הגבל גישה לנתונים
אִחסוּן ודא שאינך מאחסן נתונים שאינם בשימוש, או איזון הנתונים המאוחסנים שלך בין מסדי נתונים אחרים ו/או מוצרי Firebase כדי להישאר תחת המכסה. נקה נתונים שאינם בשימוש
בצע אופטימיזציה של מבנה הנתונים שלך
נתונים מפוצלים בין מסדי נתונים
השתמש ב-Cloud Storage עבור Firebase

ייעול חיבורים

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

במידת האפשר, השתמש ב-SDK המקורי עבור פלטפורמת האפליקציה שלך, במקום ב-REST API. ה-SDKs שומרים על חיבורים פתוחים, ומפחיתים את עלויות הצפנת SSL ואת עומס מסד הנתונים שיכולים להצטבר עם REST API.

אם אתה אכן משתמש בממשק API של REST, שקול להשתמש ב-HTTP Keep-alive כדי לשמור על חיבור פתוח או להשתמש באירועים שנשלחו מהשרת , מה שיכול להפחית עלויות מלחיצות ידיים של SSL.

נתונים מפוצלים על פני מסדי נתונים מרובים

פיצול הנתונים שלך על פני מספר מופעים של מסד נתונים בזמן אמת, הידוע גם בשם ריסוק מסד נתונים, מציע שלושה יתרונות:

  1. הגדל את סך כל החיבורים הפעילים בו-זמניים המותרים באפליקציה שלך על ידי פיצולם בין מופעי מסד נתונים.
  2. איזון עומס בין מופעי מסד נתונים.
  3. אם יש לך קבוצות עצמאיות של משתמשים שזקוקים רק לגישה למערכות נתונים נפרדות, השתמש במופעי מסד נתונים שונים לתפוקה גבוהה יותר והשהייה נמוכה יותר.

אם אתה בתוכנית התמחור של Blaze , אתה יכול ליצור מופעי מסד נתונים מרובים בתוך אותו פרויקט Firebase, תוך מינוף שיטת אימות משתמש נפוצה במופעי מסד נתונים.

למידע נוסף על איך ומתי לפזר נתונים .

בניית מבני נתונים יעילים

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

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

בנוסף, כל כתיבה יכולה לתפוס 0.1% מכלל השימוש במסד הנתונים שלך. מבנה את הנתונים שלך בצורה שתאפשר לך לכתוב אצווה לפעולה אחת כעדכונים מרובי נתיבים באמצעות שיטות update() ב-SDKs או בקשות RESTful PATCH .

כדי לייעל את מבנה הנתונים שלך ולשפר את הביצועים, פעל לפי השיטות המומלצות עבור מבני נתונים .

מנע גישה לא מורשית

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

למידע נוסף על שימוש בכללי מסד נתונים של Firebase בזמן אמת .

השתמש בכללים מבוססי שאילתות כדי להגביל הורדות

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

לדוגמה, הכלל הבא מגביל את גישת הקריאה רק ל-1000 התוצאות הראשונות של שאילתה, לפי סדר עדיפות:

messages: {
  ".read": "query.orderByKey &&
            query.limitToFirst <= 1000"
}

// Example query:
db.ref("messages").limitToFirst(1000)
                  .orderByKey("value")

למידע נוסף על כללי אבטחת מסד נתונים בזמן אמת .

שאילתות אינדקס

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

שימוש חוזר בהפעלות SSL

צמצם את עלויות התקורה של הצפנת SSL בחיבורים המתחדשים על ידי הנפקת כרטיסי הפעלה של TLS . זה מועיל במיוחד אם אתה דורש חיבורים תכופים ומאובטחים למסד הנתונים.

שפר את יעילות המאזין

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

הוסף שאילתות כדי להגביל את הנתונים שפעולות ההאזנה שלך מחזירות והשתמש במאזינים שמורידים רק עדכונים לנתונים - לדוגמה, on() במקום once() . שמור .once() לפעולות שבאמת אינן דורשות עדכוני נתונים. בנוסף, מיין את השאילתות שלך באמצעות orderByKey() , במידת האפשר, לקבלת הביצועים הטובים ביותר. מיון עם orderByChild() יכול להיות איטי פי 6-8, ומיון עם orderByValue() יכול להיות איטי מאוד עבור ערכות נתונים גדולות, מכיוון שהוא דורש קריאה של כל המיקום משכבת ​​הקביעות.

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

נקה נתונים שאינם בשימוש

הסר מעת לעת כל נתונים שאינם בשימוש או כפולים במסד הנתונים שלך. אתה יכול להפעיל גיבויים כדי לבדוק את הנתונים שלך באופן ידני או לגבות אותם מעת לעת ל-Google Cloud Storage. שקול גם לארח נתונים מאוחסנים באמצעות Cloud Storage for Firebase .

משלוח קוד ניתן להרחבה שתוכל לעדכן

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