חבילות נתונים של Firestore

יישום חדש למסמכי Firestore במטמון

Firestore פשוט השתפרה

Firebase Firestore שופרה לאחרונה וכעת היא מיישמת תכונה חדשה בשם "Firestore Data Bundles". הרעיון המרכזי של זה הוא שניתן כעת לארוז שאילתות של Firestore בפורמט בינארי ולהגישן באמצעות CDN או פתרון אירוח אחר. למעשה, פירוש הדבר שקבוצה מסוימת של הנתונים שלך עשויה להתאים לא להגיע לאחריות ישירות מה- backest של Firestore, אלא CDN וכך לחסוך לך עלויות.

אבל למה? וחשוב יותר, איך ?!

"חבילות נתונים של Firestore" תוכננו למעשה:

  • תחילה אתה יוצר הפניית "חבילת נתונים" בסביבת שרת באמצעות מנהל ה- SDK
  • לאחר מכן, חבילה זו נטענת בשאילתות רגילות של Firestore
  • מה שיש לך אז הוא מאגר של נתונים אלה שניתן לאחסן כקובץ, למשל, או ב- CDN שלך
  • מעבר לצד הלקוח שלך, כל מה שנותר כעת באמצעות ממשק ה- API החדש של Firestore כדי לטעון את החבילה בפועל מ- CDN שלך
// On your server ....

/**
 * Generate a buffered bundle for user tempaltes.
 */
async function getUserTemplatesBundle(){
  // Create a bundle with ID 'user-templates'.
  const bundle = firestore.bundle("user-templates");
  
  // A plain Firestore-query.
  const snap = await firestore.collection('user-templates').get();

  return bundle
          .add('user-templates-query', snap)
          .build();
}

// ... then store the buffer, e.g. in your CDN ...
// On your client

import firebase from "firebase/app";
import "firebase/firestore";
import "firebase/firestore/bundle";

// ... init 'firestore' ...

async function loadFirestoreBundle() {
  // Just a simplified call to our demo CDN
  // to fetch the bundle in binary form.
  const rawBundle = await fetchBundleFromCDN();
  // Now tell Firestore to load the bundle
  await firestore.loadBundle(rawBundle);

  // Now get a reference to the bundled query, in
  // our case it's only one query that got bundled.
  const query = await db.namedQuery('user-templates-query');
  
  // Use 'cache' as source so that the data gets
  // cached locally - no Firestore queries will
  // be executed.
  const snap = await query.get({ source: 'cache' });

  // Finally, you can handle the snap like every other
  // Firestore snap in your app.
}

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

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

דוגמא נוספת לעולם האמיתי

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

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