[counter]dbase ontwerp

Pagina: 1
Acties:

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ik ben voor me werk een webcounter aan het maken vergelijkbaar met nedstat.
Nu heb ik het momenteel als volgt gedaan.
je logt het ip van de bezoeker samen met een timestamp in een tabel 'ip'
deze tabel heeft ook een kolom 'hits'. Komt deze bezoeker binnen een uur weer op de pagina dan wordt de kolom geupdate met +1`.. (wordt dus niet als visit gezien maar als een hit)

de overige info sla ik op in aparte tabellen. die zien er allemaal zo uit:
id
browser (of andere info)
aantal

de browser versie wordt gechecked (of de os, resolutie enz.)
en bestaat die al.. wordt het aantal +1 gedaan. .bestaat ie niet.. toegevoegd en aantal op 1 gezet.

nu leek het me echter leuk om de browser info en de andere info aan een ip te kunnen koppelen. (zodat je bijvoorbeeld kunt zeggen.. zoveel% van de mensen uit nederland gebruiken die en die os.. etc.)

is het dan beter om in plaats van al die losse tabellen die info allemaal in 1 tabel te gooien? (wat lastiger/langzamer met uitlezen maar volgens mij stuk sneller met updaten)

en verder zou ik dit dus zo willen maken dat meerdere sites het kunnen gebruiken.
is het dan handig om een tabel te maken met de info van die sites.. en dan in de tabel waar je alle ip's ed opslaat een kolom toe te voegen met site_id ? .. of moet je per site gewoon aparte tabel gebruiken.

ik hoop dat mijn verhaal beetje duidelijk is. any thoughts?..
(en ja ik weet dat er al heleboel van die dingen bestaan.. o.a nedstat.. maar die kun je niet zomaar commercieel gebruiken laat staan verkopen :) )

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

nu leek het me echter leuk om de browser info en de andere info aan een ip te kunnen koppelen. (zodat je bijvoorbeeld kunt zeggen.. zoveel% van de mensen uit nederland gebruiken die en die os.. etc.)
Je kan toch een relatie aanbrengen tussen het record wat deze info vastlegd en die van het IP :? Je zal dan vervolgens wel een record met de info per bezoeker moeten bijhouden natuurlijk :)
en verder zou ik dit dus zo willen maken dat meerdere sites het kunnen gebruiken.
is het dan handig om een tabel te maken met de info van die sites.. en dan in de tabel waar je alle ip's ed opslaat een kolom toe te voegen met site_id ? .. of moet je per site gewoon aparte tabel gebruiken.
Ik zou zeker verschillende tabellen per site handhaven al is het alleen maar om de dingen gescheiden te houden, en afhankelijk van de traffic en dus de grootte van de tabel kan dit ook in je voordeel werken qua performance.

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Kan ook een nadeel zijn. Gegevens die bijelkaar staan haal je sneller op en schrijf je ook sneller weg dan dat je in meerdere tabellen moet zijn. Niet alleen omdat je op verschillende plaatsen moet zijn, maar ook nog omdat de relatie gelegd moet worden. Meerdere tabellen heeft wel als voordeel dat het dubbele gegevens helpt voorkomen.

We adore chaos because we like to restore order - M.C. Escher


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Kan ook een nadeel zijn. Gegevens die bijelkaar staan haal je sneller op en schrijf je ook sneller weg dan dat je in meerdere tabellen moet zijn
Klopt alleen dit gaat natuurlijk niet op wanneer je praat over statistieken van verschillende sites ;)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Zo begon ik ook met mijn eerste stats. Gewoon een record met alle info per gebruiker en dan tellen enzo :)

Na een paar maanden was de tabel zo'n 50MB groot en duurde het ophalen van gegevens zo'n 15 seconden :) En dat met alle indices goed.

Probleem is dat query's gewoon te complex worden over zoveel data. Om er leuke gegevens uit te halen krijg je GROUP BY's en COUNT's enzo en daar wordt je query extreem traag van over zoveel records dus.

Handiger is om per bezoek direct de globale data te updaten, of in ieder geval een cronjob te laten lopen iedere nacht ofzo die je records omzet naar globale data.

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
Handiger is om per bezoek direct de globale data te updaten, of in ieder geval een cronjob te laten lopen iedere nacht ofzo die je records omzet naar globale data
call me a n00b .. maar wat houd dit precies in.. wat bedoel je hier mee? :)

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 17-08 13:41
Simpel ;)

Je houdt de data in principe 2x bij. 1x de volledige data (b.v. 1 row per hit) en verder nog de geaggregeerde data, dus het totaal aantal hits die dag, aantal mensen met Mozilla, aantal mensen met 1600x1200, etc. Simpele tellertjes dus zodat je geen 200.000 rows door hoeft te ploegen om er achter te komen dat je 20.000 bezoekers met Mozilla hebt gezien.

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
aha.. dus de 2 keuzes die ik opperde.. (alles in losse tabellen.. of alles in 1 tabel gooien zodat het gekoppeld is aan de bepaalde gebruiker) meot ik zeg maar combineren? :)

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
en jullie adviseren dus ook om per site de tabellen aan te maken?.. (krijg je dus wel ontzettend heel veel tabellen :) )

Verwijderd

nikao schreef op 22 June 2003 @ 11:52:
en jullie adviseren dus ook om per site de tabellen aan te maken?.. (krijg je dus wel ontzettend heel veel tabellen :) )
Nee, maak 1 tabel met alle sites, inclusief een ID. Koppel dit ID vervolgens aan de andere tabellen met hits e.d.

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ok.. ik zal hier es mee aan de slag.. thx voor de reacties..
en nog ff voor de zekerheid.. ik moet dus 1tabel maken waarin ik per visit alles opsla.. (alle gegevens over die bezoeker) en dit ook in alle losse tabellen doen?..

Verwijderd

ken je het programma fco-im?! het is misschien even moeilijk te begrijpen in het begin, maar het zorgt er wel voor dat je een hele nette database krijgt...

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
euh.,. nee?.. wat is het precies en hoe kom ik eraan? :P

Verwijderd

het is een casetool die je hebt je informatie te moddeleren

downloads: http://www.fco-im.com/FCO-IM%20Casetool.html

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
Verwijderd schreef op 22 June 2003 @ 12:51:
het is een casetool die je hebt je informatie te moddeleren

downloads: http://www.fco-im.com/FCO-IM%20Casetool.html
ok thx.. die zal ik zo es proberen.. nadat ik mijn pc een nieuwe install heb gegeven :)

iemand die nog even wat zinnigs kan zeggen op mijn vraag of ik de 2 opties dus moet combineren?.. dus een algemene tabel EN losse tabellen?
( en met meerdere sites moet ik met die losse tabellen voor iedere site dan een row maken met de browser/resolutie enz. neem ik aan?)

Verwijderd

Of, zo heb ik het gedaan, pas om de 100 hits een database aanroep doen. Tussentijds gewoon in het geheugen van je server opslaan. Bespaart je een hoop queries.

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
je slaat dan alle info op in het geheugen van je server?.. dus ook browser versie en resolutie enzo?..
hoe doe je dat dan?..

Verwijderd

nikao schreef op 22 June 2003 @ 14:53:
je slaat dan alle info op in het geheugen van je server?.. dus ook browser versie en resolutie enzo?..
hoe doe je dat dan?..
ik gok op een applicatie variabele....
Pagina: 1