Apper med Firebase Auth og Realtime Database · leksjon

Strukturering av data

Oppdag beste praksis for organisering og strukturering av NoSQL-data for å optimalisere ytelse og skalerbarhet

Leksjon 3 av 412 trinn

Strukturering av data er en gratis leksjon i Apper med Firebase Auth og Realtime Database på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Apper med Firebase Auth og Realtime Database, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Apper med Firebase Auth og Realtime Database inneholder totalt 4 leksjoner.

Introduksjon til datastrukturering

Velkommen til leksjonen om strukturering av data i Firebase Realtime Database! Hvordan du organiserer dataene dine, er avgjørende for ytelse og skalerbarhet.

En godt strukturert database gjør det enklere å spørre etter, oppdatere og sikre informasjonen effektivt, særlig når applikasjonen vokser.

JSON-treet og baner

Firebase Realtime Database lagrer data som ett stort JSON-tre. Alt er en node som er tilgjengelig via en unik bane.

Tenk på det som et filsystem: /users/user123/profile/name. Denne banen peker på en bestemt del av dataene i treet.

Unngå dyp nøsting

En vanlig fallgruve er å nøste data for dypt. Når du henter data fra en overordnet node, henter Firebase ALLE underordnede noder.

Dyp nøsting kan føre til:

  • Store, unødvendige datanedlastinger
  • Tregere spørringer
  • Komplekse sikkerhetsregler

Her er et eksempel på en dypt nøstet struktur:

{ "users": {
  "user123": {
    "name": "Alice",
    "posts": {
      "postA": {
        "title": "My First Post",
        "comments": {
          "comment1": {
            "text": "Great post!"
          }
        }
      }
    }
  }
}}

Flat ut dataene

I stedet for dyp nøsting kan du «flate ut» dataene. Det betyr at du organiserer relaterte, men separate, deler av dataene i egne toppnoder.

Deretter kan du koble disse delene sammen ved hjelp av ID-er. På den måten laster du bare ned dataene du ber om.

Lister med unike nøkler

Firebase Realtime Database fungerer best med objekter fremfor arrayer for lister med elementer. Hvert element bør ha en unik nøkkel.

Firebase tilbyr push(), som automatisk genererer unike nøkler basert på tidsstempler. Dette passer perfekt for dynamiske lister, for eksempel innlegg eller meldinger.

Dårlig (array):

[ { "name": "Alice" }, { "name": "Bob" } ]

Bra (objekt med nøkler):

{
  "users": {
    "-M_aBc123": { "name": "Alice" },
    "-M_xYz456": { "name": "Bob" }
  }
}

Bedre struktur: brukere og innlegg

La oss bruke utf lating på eksempelet vårt med brukere og innlegg. I stedet for å legge innleggene under brukerne oppretter vi separate toppnivåsamlinger:

  • /users for brukerprofiler
  • /posts for alle innlegg

Koble dem sammen ved hjelp av userId i innleggobjektet.

{
  "users": {
    "user123": {
      "name": "Alice",
      "email": "alice@example.com"
    },
    "user456": {
      "name": "Bob",
      "email": "bob@example.com"
    }
  },
  "posts": {
    "postA": {
      "title": "Hello World",
      "content": "My first post.",
      "authorId": "user123",
      "timestamp": 1678886400000
    },
    "postB": {
      "title": "Firebase Tips",
      "content": "Awesome database!",
      "authorId": "user123",
      "timestamp": 1678972800000
    }
  }
}

Kodedemonstrasjon: skrive utflatede data

Dette JavaScript-utdraget viser på et overordnet nivå hvordan du kan skrive en bruker og et innlegg ved hjelp av den utflatede strukturen. Det bruker en simulert database for demonstrasjonens skyld.

function main() {
  const db = {
    ref: (path) => ({
      set: (value) => console.log(`SET ${path}:`, JSON.stringify(value, null, 2)),
      push: () => ({
        key: `mockId_${Math.random().toString(36).substring(7)}`,
        set: (value) => console.log(`PUSH ${path}/${this.key}:`, JSON.stringify(value, null, 2))
      })
    })
  };

  const userId = "user123";
  const user = {
    name: "Alice",
    email: "alice@example.com"
  };
  db.ref(`users/${userId}`).set(user);

  const newPostRef = db.ref("posts").push();
  const postId = newPostRef.key;
  const post = {
    title: "My First Post",
    content: "This is the content of my first post.",
    authorId": userId,
    timestamp: Date.now()
  };
  newPostRef.set(post);

  console.log("User and Post data created (conceptually).");
  console.log("User ID:", userId);
  console.log("Post ID:", postId);
}

main();

Brukerspesifikke og offentlige data

Vurder å skille data som er private for en bruker, fra data som er offentlige eller delte.

  • Private: Lagres under /users/{uid}/private_data (for eksempel innstillinger og utkast).
  • Offentlige/delte: Lagres i en toppnivåsamling (for eksempel /public_posts eller /chat_rooms).

Dette skillet forenkler sikkerhetsreglene og gjør datatilgangen mer effektiv.

Velge gode nøkler

Nøkler er avgjørende for å navigere i dataene dine. Gode nøkler er:

  • Unike: Viktig for å identifisere bestemte data.
  • Korte: Reduserer lagrings- og båndbreddebruken.
  • Beskrivende (hvis egendefinerte): Gjør dataene lettere å forstå, men hold dem korte.

Firebase sine automatisk genererte push()-ID-er er svært godt egnet som unike, sorterte og korte nøkler.

Eksempel: fan-out-data (kort)

For svært relasjonelle data som må oppdateres flere steder samtidig (for eksempel når en brukers navn vises både i profilen og i alle innleggene), kan du vurdere en «fan-out»-tilnærming.

Dette innebærer å skrive data til flere plasseringer i én enkelt operasjon. Vi skal se nærmere på dette i viderekomne leksjoner, men det er et viktig struktureringsmønster.

Quiz om datastrukturering

Hvilke av de følgende anbefalte fremgangsmåtene bør brukes når du strukturerer data i Firebase Realtime Database?

Oppsummering: datastrukturering

I denne leksjonen gikk vi gjennom viktige anbefalte fremgangsmåter for strukturering av data i Firebase Realtime Database:

  • Unngå dyp nøsting: Det fører til ineffektiv henting av data.
  • Flat ut dataene: Bruk separate toppnoder og koble dem sammen med ID-er.
  • Bruk unike nøkler for lister: Firebase sine push()-ID-er er ideelle.
  • Skill mellom offentlige og private data: Dette gir bedre sikkerhet og tilgangskontroll.
  • Velg gode nøkler: Korte, unike og beskrivende.

Disse prinsippene hjelper deg med å bygge skalerbare og effektive Firebase-applikasjoner!

Gratis å komme i gang

Lær deg Apper med Firebase Auth og Realtime Database med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
11
Leksjoner
44

Ofte stilte spørsmål

Er leksjonen «Strukturering av data» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Apper med Firebase Auth og Realtime Database, inkludert «Strukturering av data», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Apper med Firebase Auth og Realtime Database inneholder totalt 4 leksjoner.

Hva lærer jeg i «Strukturering av data»?

Oppdag beste praksis for organisering og strukturering av NoSQL-data for å optimalisere ytelse og skalerbarhet Du øver på Apper med Firebase Auth og Realtime Database med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Apper med Firebase Auth og Realtime Database?

Ingen tidligere erfaring er nødvendig. Apper med Firebase Auth og Realtime Database på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Strukturering av data»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Apper med Firebase Auth og Realtime Database-leksjonen?

Ja. Alle Apper med Firebase Auth og Realtime Database-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende om Realtime Database
  2. Lesing og skriving av data
  3. Strukturering av data
  4. Lytte etter endringer i sanntid
← Tilbake til Apper med Firebase Auth og Realtime Database