Det kanns som om det skulle bli megalangsamt att rakna antalet svar for varje inlagg varje gang sidan laddas
Helt klart *kan* det bli tungt. Speciellt om du tänker dig att *många* tittar på din sida samtidigt, eller att varje tråd har *många* inlägg.
Update anomalies, bristande normalisering, redundans... *buäh*!
Javisst - men ibland måste man ta smällen att det blir grötigare att koda och svårare att hantera vid ändringar... t.ex. om man bygger system med höga prestandakrav. Ibland är det bättre att lägga all hantering av informationen i databasen vid *ändringstillfället* än vid *läsningstillfället*.
Att räkna poster i realtid, brukar jag ibland likna med följande:
Man skall skriva flera exemplar av samma sida på en skrivare, men man startar inte skrivaren förrän någon begär att få läsa sidan. Det är enkelt och strukturellt rent att koda algoritmen, och det fungerar bra vid "liten last", dvs få samtidiga intressenter. Risken är bara att man lastar ner systemet när många samtidigare besökare vill åt informationen samtidigt (tänk dig att 200 pers samtidigt vill åt sidan och det ramaskri den långa kön till skrivaren detta skulle ge ;) )
Att förlagra mellanresultat i egna celler är i "skrivarmetaforen" ovan att likna med att man skriver ut en massa sidor i förväg, så att de 200 personerna samtidigt kan ta varsin lapp direkt, utan att vänta på att skrivaren skall hinna spotta ur sig just deras exemplar. Nackdelen är då t.ex. att det kan bli lite mycket papper över när informationen på sidan ändras, dvs det är knöligare att koda beteendet, och det är kanske inte lika "strukturellt vackert" att tänka sig in i problematiken ;)
Med dessa liknelser i bakhuvudet går det att inse att man ibland måste skapa sidan och dess innehåll "på begäran" (när t.ex. innehållet ändras mycket oftare än folk tittar på det eller när det är personligt anpassat till varje individ) även om det medför att folk i värsta fall kan få vänta lite, och att man ibland måste förlagra (eller cachea ;) ) redundanta mellanresultat för att servern skall hinna med.
I system med "små" datamängder, är skillnaderna antagligen så små att det inte spelar någon roll vilken variant man väljer (om man har kapacitet över på sin server vill säga!) - och man kanske kan tillåta sig att räkna "direkt", men i system med stora datamängder, eller när systemet måste ligga på en nerlastad server, uppskattar man nog förr eller senare ett val mot prestandaoptimerade algoritmer och så mycket mellanlagringar man bara orkar peta in, även om det innebär att man inför redundans, långsammare uppdatering av ändringar eller mindre "snygga" strukturer...