Avatar billede pnr Nybegynder
27. maj 2010 - 15:24 Der er 4 kommentarer og
1 løsning

Lave statistik over viste vare

I forbindelse med en webshop har jeg brug for at registrer hvor mange gange hvert produkt er vist. Indtil nu har jeg registreret hver visning som en række i en tabel, men efter ca 6 månder fylder den tabel nu 250 MB. Derfor vil jeg gerne lave en løsning som ikke bruger så meget database plads.

Jeg har overvejet at have en kollone for hver produkt med antal besøg, men jeg er lidt i tvivl om hvordan jeg koder det mest effektivt og uden at miste nogle visninger.

Er det noget med noget singleton? bør man skrive hvert request med det samme, eller kun skrive engang imellem?

På forhånd mange tak for hjælpen!
Avatar billede arne_v Ekspert
27. maj 2010 - 15:39 #1
Der er vel flere muligheder.

Du kan fortsaette som hidtil. 250 MB er jo reelt ikke ret meget.

Du kan lave en lille bitte tabel med:
vareid,PK,FK
counter
og opdatere den hver gang. Ved hoej aktivitet og hoej transaction isolation level vil den kunne blive flaskehals i din app. Du kan do hjaelpe lidt ved at putte det i en seperat uafhaengig transaktion.

Du kan lave samme tabel og have en in memory counter (e.eks. i singleton) som skrives tilbage til databasen hver N transaktion eller hver M sekund eller en kombination af dette. Hvis server crasher saa mister du lidt visninger.

Du kan udvide den sidste loesning med at replikere den in memory counter mellem cluster noderne, saaledes at du ikke taber data, hvis en enkelt node gaar ned. Det kraever lidt at faa sat op saa det er effektivt. Og forudsaetter mere end 1 server.

Men ingen mirakel loesning.
Avatar billede pnr Nybegynder
04. juni 2010 - 14:51 #2
Hej Arne, og mange tak for din kommentar!
Er der noget performance eller andre overvejelser i at du forslår at lave det i en sepperat tabel, istedet for at lave det direkte i vare tabellen?
Avatar billede arne_v Ekspert
04. juni 2010 - 22:44 #3
Flere grunde:
- hvis man gaar meget op i at modellere virkeligheden, saa mener jeg faktisk ikke at antal visninger er en egenskab ved produktet
- hvis man retter i en eksisternde tabel struktur er der altid risiko for at det kraever aendringer i noget kode der bruger tabellen
- jeg gaetter paa (men uden at have noget at begrunde det med) at det vil vaere hurtigere at laese en stor record og opdatere en lille record fremfor at laese og opdatere en store record - dette vil naturligvis vaere database og versions specifik
Avatar billede pnr Nybegynder
07. juni 2010 - 15:20 #4
Jeg takker mange gange for input!
smid et svar, så kaster jeg nogle point i din retning :-)
Avatar billede arne_v Ekspert
07. juni 2010 - 15:39 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester