Applikationer med Firebase Auth och Realtime Database · Lektion

Strategier för denormalisering och dataduplicering

Modellera data i Realtime Database för snabba läsningar genom att medvetet duplicera data, välja denormaliserade strukturer framför joins och hålla kopior konsekventa när data skrivs.

Lektion 4 av 413 steg

Strategier för denormalisering och dataduplicering är en gratis lektion i Applikationer med Firebase Auth och Realtime Database på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Applikationer med Firebase Auth och Realtime Database, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Applikationer med Firebase Auth och Realtime Database innehåller totalt 4 lektioner.

NoSQL-tänkande

Realtime Database har inga joins. I stället för att normalisera data som i ett relationsschema utformar ni data utifrån hur ni läser den. Det innebär ofta att samma värde lagras på mer än en plats.

Denna avsiktliga redundans kallas denormalisering.

Kostnaden för joins

I en normaliserad modell kräver det att visa ett inlägg med författarens namn att ni först läser inlägget och sedan läser användarnoden separat för varje inlägg. Det innebär många rundresor och långsamma listor.

Duplicera för läsning

Kopiera i stället de små delar som ni visar tillsammans med inlägget. Då räcker en läsning för att visa hela listobjektet.

{
  "posts": {
    "p1": {
      "text": "Hello",
      "authorId": "u9",
      "authorName": "Alice",
      "authorAvatar": "a9.png"
    }
  }
}

Vad ska dupliceras

Duplicera endast de fält som ni faktiskt visar i listor, inte hela poster.

  • Namn, avatarer och titlar: bra kandidater
  • Stora eller känsliga fält: behåll dem på en plats
  • Data som ändras sällan: säkrast att kopiera

Kompromissen med konsekvens

Kostnaden för duplicering är att hålla kopiorna synkroniserade. Om Alice byter namn måste varje kopia av authorName uppdateras. Ni byter alltså skrivkomplexitet mot läshastighet.

Flerplansuppdateringar håller kopiorna synkroniserade

Uppdatera alla kopior atomiskt med en enda flerplansskrivning, så att ingen kopia blir inaktuell.

import { getDatabase, ref, update } from 'firebase/database';

const updates = {};
updates['/users/u9/name'] = 'Alice B.';
updates['/posts/p1/authorName'] = 'Alice B.';
await update(ref(getDatabase()), updates);

Indextabeller

Ännu ett denormaliseringsmönster är indexnoden: en uppslagstabell som låter er hitta relaterade objekt utan att genomsöka allt. Här kopplar vi en användare till hens inläggs-ID:n.

{
  "userPosts": {
    "u9": { "p1": true, "p7": true }
  }
}

Undvika djup nästling

När ni läser en nod hämtas allt under den. Håll trädet grunt så att en läsning inte hämtar orelaterade underordnade objekt. Dela upp stora nästlade strukturer i syskonnoder på toppnivå.

När ni INTE ska denormalisera

Denormalisering är inte alltid rätt. Undvik den när:

  • Det duplicerade fältet ändras mycket ofta
  • Det finns många kopior som måste hållas konsekventa
  • Data är omfattande eller sällan läses tillsammans

I sådana fall lagrar ni data en gång och läser den separat.

Validera duplicerade data

Använd Security Rules .validate för att hålla duplicerade fält tillförlitliga, till exempel genom att säkerställa att en kopia av authorName alltid är en icke-tom sträng.

{
  "posts": {
    "$id": {
      "authorName": { ".validate": "newData.isString() && newData.val().length > 0" }
    }
  }
}

Utforma för era frågor

Grundregeln är: strukturera data utifrån era vanligaste läsningar. Skriv först de frågor appen behöver och utforma sedan (och duplicera) data så att varje fråga blir en enda grund läsning.

Snabbtest

Testa er förståelse av denormalisering.

Sammanfattning

Nu kan ni modellera NoSQL-data för hög hastighet.

  • Denormalisera genom att duplicera fält som visas
  • Håll kopiorna synkroniserade med flerplansuppdateringar
  • Använd indexnoder för relationer
  • Håll trädet grunt för att undvika överhämtning
  • Strukturera data utifrån era vanligaste frågor
Gratis att börja

Lär dig Applikationer med Firebase Auth och Realtime Database med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
11
Lektioner
44

Vanliga frågor

Är lektionen ”Strategier för denormalisering och dataduplicering” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Applikationer med Firebase Auth och Realtime Database, inklusive ”Strategier för denormalisering och dataduplicering”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Applikationer med Firebase Auth och Realtime Database innehåller totalt 4 lektioner.

Vad lär jag mig i ”Strategier för denormalisering och dataduplicering”?

Modellera data i Realtime Database för snabba läsningar genom att medvetet duplicera data, välja denormaliserade strukturer framför joins och hålla kopior konsekventa när data skrivs. Ni övar på Applikationer med Firebase Auth och Realtime Database med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Applikationer med Firebase Auth och Realtime Database?

Du behöver inga förkunskaper. Utbildningen i Applikationer med Firebase Auth och Realtime Database på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Strategier för denormalisering och dataduplicering”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Applikationer med Firebase Auth och Realtime Database-lektionen?

Ja. Varje Applikationer med Firebase Auth och Realtime Database-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Fan-out-uppdateringar av data
  2. Transaktionella dataoperationer
  3. Atomiska räknare och köer
  4. Strategier för denormalisering och dataduplicering
← Tillbaka till Applikationer med Firebase Auth och Realtime Database