Hvad har du til rådighed? Multidimensionelle strukturer? eller kun en relationel database?
Du skal også lige tænke over at som en tommelfingerregel så er databaser der er hurtige at indætte i langsomme at læse fra og omvendt. (tror engang jeg skrev en artikel omkring datawarehousing her på sitet :-) )
På SQL Server 2005 har du Analysis Services som er bygget til at lave store, komplekse udtræk fra i det den pre-aggregerer kombinationerne (min artikel) Problemet her er at sådan en skiderik skal "processeres" hvilket kan tage nogle minutter alt efter hvor meget data du har, det data du vil se er altid "gammelt" (fra sidste gang du processerede) - men det kommer du ikke udenom.
Et andet problem du vil løbe ind i er at du skal tage stilling til om din statistik skal ske real-time eller "kun" nær real time. Problemet er typisk at du vil stille en række forespørgsler som giver dig data og så stille en forespørgsel der summerer dine data (dette er typisk 2 forskellige forespørgsler). Hvis du kører sand real-rime har du risiko for at der er indsat eller slettet i din database mellem du selecter rækker og selecter sum, det betyder at din sum ikke matcher dine rækker - dine data er nu korrupte!
For at løse dette problem laver man typisk to databaser en stage og en analysedatabase (min artikel) og så engang imellem når man ved at sin kildedatabase er i en konsistent tilstand, så overfører man alle data til sin stage (eller sin analysedatabase alt efter hvor avanceret man er)hvor man så kan lave konsistens kontrol (referentiel integritet). Så har man som udgangspunkt et konsistent datagrundlag at analysere på.
P.S. 3. normalform vil være tilstrækkelig, og give tilstrækkelig hastighed ved udlæsning (den tager lidt længere tid at indsætte i)
Indlæg senest redigeret d. 23.11.2009 22:04 af Bruger #2730