קנה מידה עם מספר מסדי נתונים

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

מתי לרסק את הנתונים שלך

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

  • אתה לא תרצה להקטין מעבר לגבול של 200,000 חיבורים בו זמנית, 1000 פעולות כתיבה / שנייה, או כל אחד אחר גבולות עבור מופע באתר אחד.
  • יש לך מספר קבוצות נתונים נפרדות ורוצה לייעל את הביצועים (לדוגמה, אפליקציית צ'אט המשרתת קבוצות נפרדות ועצמאיות של משתמשים).
  • אתה רוצה לאזן את העומס במספר מסדי נתונים כדי לשפר את זמן הפעילות ולצמצם את הסיכון להעמיס מופע מסד נתונים יחיד.

כיצד לרסק את הנתונים שלך

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

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

מפה את הנתונים שלך

כאשר אתה ממפה את הנתונים למספר מאגרי מידע, נסה לעמוד בתנאים הבאים:

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

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

צור "רסיס מאסטר"

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

נתוני דלי לפי קטגוריות או לפי לקוח

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

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

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

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

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

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

צור מסד נתונים במסוף Firebase עם תפריט ההקשר בקטע מסדי הנתונים

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

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

אתה יכול ליצור ולנהל המופעים באתר במסוף Firebase או באמצעות API REST ניהול מסד זמן אמת .

ערוך ופרס כללי מסד נתונים בזמן אמת עבור כל מופע

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

  • כדי לערוך ולפרוס כללים ממסוף Firebase, בצע את הפעולות הבאות:

    1. עבור אל הכרטיסייה כללי בחלק פיתוח> Database.
    2. בחר את מסד הנתונים שברצונך לערוך ולאחר מכן שנה את הכללים.
  • כדי לערוך ולפרוס כללים מתוך CLI Firebase, בצע את הפעולות הבאות:

    1. שנה את כללי קבצי כללי המופעים באתר שלך (למשל, foo.rules.json ).
    2. צור ויישם מטרות פריסה לשייך מסדי נתונים המשתמשים באותו קובץ כללים. לדוגמה:
      firebase target:apply database main my-db-1 my-db-2
      firebase target:apply database other my-other-db-3
    3. עדכון שלך firebase.json קובץ תצורה עם מטרות לפרוס:

      {
        "database": [
          {"target": "main", "rules": "foo.rules.json"},
          {"target": "other", "rules": "bar.rules.json"}
        ]
      }
      
    4. הפעל את הפקודה לפרוס:

      firebase deploy

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

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

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

גרסת אינטרנט 9

import { initializeApp } from "firebase/app";
import { getDatabase } from "firebase/database";

const app1 = initializeApp({
  databaseURL: "https://testapp-1234-1.firebaseio.com"
});

const app2 = initializeApp({
  databaseURL: "https://testapp-1234-2.firebaseio.com"
}, 'app2');

// Get the default database instance for an app1
const database1 = getDatabase(app1);

// Get a database instance for app2
const database2 = getDatabase(app2);

גרסת אינטרנט 8

const app1 = firebase.initializeApp({
  databaseURL: "https://testapp-1234-1.firebaseio.com"
});

const app2 = firebase.initializeApp({
  databaseURL: "https://testapp-1234-2.firebaseio.com"
}, 'app2');

// Get the default database instance for an app1
var database1 = firebase.database();

// Get a database instance for app2
var database2 = firebase.database(app2);
מָהִיר
// Get the default database instance for an app
var ref: DatabaseReference!

ref = Database.database().reference()
// קבל מופע באתר משני על ידי שופט var URL: DatabaseReference! ref = Database.database ("https://testapp-1234.firebaseio.com") .reference ()
Objective-C
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

self.ref = [[FIRDatabase database] reference];
// קבל מופע באתר המשני ידי @property URL (חזק, nonatomic) FIRDatabaseReference * נ"צ; self.ref = [[FIRDatabase databaseWithURL:@"https://testapp-1234.firebaseio.com"] הפניה];

ג'אווה

// Get the default database instance for an app
DatabaseReference primary = FirebaseDatabase.getInstance()
        .getReference();

// Get a secondary database instance by URL
DatabaseReference secondary = FirebaseDatabase.getInstance("https://testapp-1234.firebaseio.com")
        .getReference();

קוטלין+KTX

// Get the default database instance for an app
val primary = Firebase.database.reference

// Get a secondary database instance by URL
val secondary = Firebase.database("https://testapp-1234.firebaseio.com").reference

ציין מופע בעת שימוש ב- CLI של Firebase

השתמש --instance אפשרות לציין איזה Firebase זמן אמת מסד ברצונך להחיל פקודה Firebase CLI כדי. לדוגמה, השתמש בפקודה הבאה כדי להפעיל את Profiler עבור מופע באתר בשם my-example-shard.firebaseio.com :

firebase database:profile --instance "my-example-shard"

ייעל את החיבורים בכל מסד נתונים

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

קבל עצות נוספות

אם אתה זקוק לעזרה נוספת sharding נתונים על פני המופעים באתר מרובים, להושיט יד אל המומחים Firebase על שלנו ערוץ סלאק או על Stack Overflow .