webForumDet fria alternativet

Hjälp med struktur för statistiktjänst.

Webbutveckling

12 svar · 270 visningar · startad av KoTTeN

Medlem sedan sep. 20011 722 inlägg
Frågan#1

Hej! Går i tankarna att föra statistik över de artiklar jag har i databasen. Det som ska föras är antal unika besökare för varje artikel. Men hur löser jag detta på ett smart sätt? Ett sätt jag kommit fram till är att skapa två nya tabell, StatistikTemp och StatistikFast

StatistikTemp innehåller:
Datum – datum då posten adderades
ArtikelID – Tal, Relaterat ID nummer från tabellen Artikel

StatistikFast innehåller:
Datum – datum då posten adderades
ArtikelID – Tal, Relaterat ID nummer från tabellen Artikel
TotaltAntBesok – Tal, Antal besökare

När en artikel visas läggs en post med aktuellt artikelID till i tabellen StatistikTemp. Vidare finns en schemalagd fil som körs 00.01 varje natt som räknar ihop alla poster i StatestikTemp som har samma ArtikelID för att sedan lägga in det totala antalet besökare i tabellen StatistikFast. Därefter tas samtliga poster bort från tabellen StatistikTemp. När statistik efterfrågas tas aktuella poster fram från databasen StatistikFast och visas snyggt i ett diagram.
Men nu till problemet som jag ser det: Säg att databasen innehåller 1000 artiklar, varje dag blir det alltså 1000 nya poster i tabellen StatistikFast (förutsatt att varje artikel visats under dagen). Detta blir så mycket som 365 000 poster på ett år! Går det att göra på något bättre sätt?

Medlem sedan dec. 200012 464 inlägg
#2

Flyttas från ASP

Medlem sedan jan. 2003247 inlägg
#3

Behöver väll inte vara så krångligt?
Kan du inte använda dig av en tabell och och öka antalet besökare i en vanlig kolumn för resp artikel.

Sedan när du skapa ditt diagram hämtar du info från tabellen genom sql frågor.

Eller tänker jag helt galet?

Medlem sedan sep. 20011 722 inlägg
#4

Mannen, det "problem" som uppstår vid varje visning av artiklar är att man först måste kolla om det redan finns en post för aktuellt datum och sedan utifrån det lägga till eller uppdatera den befintliga. Tänkte att det kunde vara bra att slippa den där extra rundan i databasen.

Medlem sedan juni 20019 024 inlägg
#5

KoTTeN skrev:

Mannen, det "problem" som uppstår vid varje visning av artiklar är att man först måste kolla om det redan finns en post för aktuellt datum och sedan utifrån det lägga till eller uppdatera den befintliga. Tänkte att det kunde vara bra att slippa den där extra rundan i databasen.

En sql-fråga som kontrollerar om en post finns kan knappast räknas som en "extra runda". När du hämtar data som är flera megabyte stora eller kör 20 extra sql-frågor kan du börja prata om "extra rundor".

Dessutom behöver du inte göra några kontroller alls.

Om användaren vill läsa artikel nummer 25 så hämtar du ju den med en select, därefter uppdaterar du 'TotaltAntBesok' med 1. Varför göra det svårare än det är?

Medlem sedan sep. 20011 722 inlägg
#6

Hmm ja det ligger det någonting i. Men då blir min idée att i stället för TotaltAntBesok ha något i stilen med AntBesokIdag för att sedan lägga över dessa i en annan tabell varje natt.

Medlem sedan juni 20019 024 inlägg
#7

Varför ska du lägga över någonting över huvud taget? Spara rätt data med en gång i stället. Jag menar alltså att du lägger 'TotaltAntBesok' i samma tabell som du har din artiklar.

Medlem sedan sep. 20011 722 inlägg
#8

Men det jag vill komma åt är att kunna vissa statistik för varje dag innom samtliga artiklar. Då räcker det inte med ett fält för totalt antal besökare. Hur ska jag då kunna veta att jag i onsdags hade 100 visningar och 250 på torsdagen då jag bara sparar totalt anal visningar?

Medlem sedan juni 20019 024 inlägg
#9

Då skapar du en tabell med statistik på följande sätt i stället:

[b]artikelid, datum[/b]
73, 2004-03-20 10:00:00
12, 2004-03-20 10:00:00
56, 2004-03-20 10:00:00
73, 2004-03-20 10:00:00
...

Det blir såklart fler poster, men du har större valmöjlighet att ställa specifika frågor i efterhand. Flytta dock inte över det till någon fast tabell, utan låt det vara om det är.

Medlem sedan sep. 20011 722 inlägg
#10

Ja ok. Men det blir ju otroligt massa data efter bara några månader, känns nästan lite slösaktigt, men du har helt klart en poäng.
En till jag tänkte på är vad som räknas som unik besökare, finns det något standardvärde? Räknas man som unik 24 timmar efter senaste besöket?

Medlem sedan juni 20019 024 inlägg
#11

Jo, det kan bli många poster - men vem bryr sig? ;) Hårddiskutrymme är inte speciellt dyrt, och det slöar ju inte ned något (inte märkbart).

Angående unika besökare:
http://www.webforum.nu/showthread.php?s=&forumid=163&threadid=61513

Medlem sedan sep. 20011 722 inlägg
#12

Underbart med länken! Fast då måste man med andra ord också spara IP nummren i förslagsvis samma tabell som besökslistan. Men varför inte använda en kaka för att spara när och var? Det kan ju finnas massar av användare bakom ett IP samt att många får nytt IP nummer när dom kopplar av och på modemet. Iof går det att stänga av en kaka också...

Medlem sedan juni 20019 024 inlägg
#13

Jovisst får du spara mer information i tabellen, jag bara drog de mest nödvändiga kolumnerna. Förslagsvis bör du spara IP-nummer och user agent. Kanske sessionens ID-nummer också.

Fördelen med att du sparar all information och bevarar den intakt är att du kan göra sökningar på många olika sätt. Om du efter ett år kommer på ett bättre sätt att räkna ut unika besökare kan du göra det - du har ju all originaldata kvar! Du kan filtrera besökare efter unik ip/dag, unik ip/session, enbart session m.m. Det mittersta alternativet skulle jag nog satsa på, eftersom sessionen sköts automatiskt och är mest korrekt.

254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)