Firestore Data Bundles

א נייַע ימפּלאַמענטיישאַן פֿאַר קאַשט פירעסטאָרע דאָקומענטן

פירעסטאָרע נאָר גאַט בעסער

די Firebase Firestore לעצטנס גאַט ענכאַנסט און איצט ימפּלאַמאַנץ אַ נייַע שטריך גערופן "Firestore Data Bundles". דער הויפּט באַגריף פון עס איז אַז פירעסטאָרע קוויריז קענען איצט זיין פּאַקידזשד אין ביינערי פֿאָרמאַט און געדינט דורך דיין CDN אָדער אנדערע האָסטינג לייזונג. יפעקטיוולי, דאָס מיינט אַז אַ געוויסע גרופּע פון דיין דאַטן קען זיין פּאַסיק צו נישט באַקומען פעטשט גלייַך פֿון די פירעסטאָרע באַקענד, אָבער אַ CDN און אַזוי איר קענען שפּאָרן עטלעכע קאָס.

אָבער וואָס? און מער וויכטיק, ווי ?!

"Firestore Data Bundles" זענען טאַקע פּשוט:

  • איר ערשטער מאַכן אַ "דאַטן פּעקל" רעפערענץ אין אַ סערווירער סוויווע דורך די אַדמין סדק
  • דערנאָך דעם פּעקל לאָודיד מיט נאָרמאַל פירעסטאָרע קוויריז
  • וואָס איר האָט איז אַ באַפער פון די דאַטן וואָס קענען זיין סטאָרד ווי אַ טעקע, למשל אָדער אין דיין CDN
  • באַשטימען צו דיין קליענט זייַט, אַלע וואָס איז איצט לינקס ניצן די נייַ פירעסטאָרע אַפּי צו טאַקע לאָדן דעם פּעקל פון דיין 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 Data Bundles" צו מאַסע די וואַלועס ווי אַ קאַשט דאָקומענט פון דיין CDN, אַוווידיד קיין קאָס וואָס זענען פארבונדן מיט אַ Firestore-אָנפֿרעג.

דער נייַע שטריך איז דער בעסטער פּאַסיק פֿאַר דאָקומענטן וואָס קאַנפאָרם צו די פאלגענדע באדערפענישן: די דאַטן טאָן ניט טוישן אָפט, די נומער פון דאָקומענטן איז נישט זייער גרויס און אָפט פעטשאַז פֿאַר די דאַטן שטעלן וועט אָפט פּאַסירן.

אן אנדער פאַקטיש וועלט ביישפּיל

ווי אַן אידעאל נוצן פאַל, איר קענט אויך נעמען דעם פּראָגרעסיוו וועב אַפּ ווי אַ ביישפּיל. כל איבערגעזעצט טעקסץ זענען סטאָרד אין אַ פירעסטאָרע בייַשפּיל, ווי געזונט ווי URL-באַווייַזן צו אַלע אַודיאָ טעקעס. ווייַל די דאַטן קען נישט טוישן פיל, אויב עס איז זייער פּאַסיק צו זיין קאַשט אין Firebase סטאָרידזש אָדער מיין CDN. דאָס קען פּאָטענטיאַללי רעדוצירן מיין Firestore קאָס באטייטיק.

"Firestore Data Bundles" זענען אַ זייער פייַן דערצו צו Firebase. זיי קען נישט דעקן דיין נוצן קאַסעס פֿאַר איצט, אָבער קען זיין זייער נוציק ווען דיין דינסט סטאַרץ צו וואַקסן.