Advertentie | |
|
![]() |
||
Citaat:
Table user Fields: ip resolution color-depth browser .. .. etc Stel je krijgt een miljoen bezoekers, dan heb je wel een redelijk aantal records ![]() Stel je gebruikt meerdere tables, denkt na over de verwachte waarden en verhoogt die: table: users_resolution fields: 800x600 1024x768 16..x1200 etc En daarvan verhoog je steeds de waarde met 1. Elk tabel heeft 1 record en blijft er maar 1 houden, omdat elk veld geupdate wordt. Andere mogelijkheden? Denk er zelf maar over na ;] |
![]() |
||
Citaat:
|
![]() |
||
Verwijderd
|
Citaat:
|
![]() |
||||
Verwijderd
|
Citaat:
![]() Citaat:
Citaat:
Verder zou ik op de tabellen enkele indexen zetten om het genereren van de statistieken te versnellen. Houdt er rekening mee dat het bijwerken van een index ook tijd kost. Tijd die je, wanneer je alles in één tabel zou zetten, niet hebt; het bijwerken neemt dan teveel tijd in beslag. Ook een optie is om het bijwerken van de tabel(len) in een apart proces/aparte thread te doen; zo hoeft de gebruiker niet te wachten totdat de database klaar is met updaten en kan de pagina gewoon doorgaan met laden. |
![]() |
||
Citaat:
|
![]() |
||
Verwijderd
|
Citaat:
Schrijf alle attributen op die je wilt bewaren voor de statistieken (browser, resolutie, ip, etc). Zorg ervoor dat je dit zoveel mogelijk uitkleed; 'browser' is niet specifiek genoeg. Denk o.a. aan: - Naam : 'Opera' - Versie (Major) : 7 - Versie (Minor) : 54 Zo is 'resolutie' ook niet specifiek genoeg; een resolutie bestaat namelijk uit twee gegevens: x-resolutie en y-resolutie (800 x 600, 1280 x 1024, 1600 x 1200). Op deze manier hoef je de resoluties niet voor te definieren (en kun je nog mooiere stats maken). Je bent nu nog in de ontwerp fase: Je gaat bedenken wat en hoe je iets gaat maken. Nadat je het helemaal mooi hebt uitgewerkt, kun je gaan bepalen waarin/waarmee je iets gaat maken. Denk hierbij aan database keuze (Oracle, MS SQL Server, MySQL, plain text) zo ook aan de scripttaal (ASP .NET, Perl, PHP, ColdFusion). Nadat je dit hebt gedaan, ga je beginnen met bouwen en mnoet je je concentreren op de specifieke problemen van de door jou gekozen database + taal. |
![]() |
||
Verwijderd
|
Citaat:
Voornamelijk de 'clustered indexes' zijn niet zo fijn voor de database. Bij zo'n index staan de records fysiek op de volgorde aangegeven in de clustered index. Voorbeeldje: Tabel resolutie id - int x - int y - int Er staat een clustered index op x. De records staan dan (fysiek) in de volgende volgorde Code:
id x y 08 640 300 03 640 200 15 640 480 01 800 600 06 800 400 02 1024 786 07 1024 900 09 1024 1000 Wanneer je nu een nieuwe resolutie gaat toevoegen, zeg 640 x 150, komt het er zo uit te zien Code:
id x y 08 640 300 03 640 200 15 640 480 16 640 150 01 800 600 06 800 400 02 1024 786 07 1024 900 09 1024 1000 |
![]() |
|||
Verwijderd
|
Citaat:
Een clustered index is alleen goed te zetten na uitgebreide tests om te kijken welke queries het vaakst voorkomen en/of de meeste tijd in beslag nemen om deze daarna proberen te optimaliseren. Wanner je bijvoorbeeld alle resoluties met x = 640 wilt hebben, hoeft in het geval van een clustered index de leeskop van de harde schijf een stuk minder te bewegen om de data te lezen, omdat de data achter elkaar staat. Dit scheelt (uiteindelijk) weer tijd. Maar hoogst waarschijnlijk helpt dit alleen goed bij alleen lezen applicaties. Bij applicaties die veel bewerkingen veroorzaken op de database kan een clustered index dus voor veel vertraging zorgen (omdat de records steeds fysiek moeten worden verplaatst). Citaat:
[edit] Verder worden gewone indexen ook vanzelf bijgewerkt; anders heb je er niks aan he? (staat er een record in de tabel die niet is opgenomen in de index --> vind je hem nooit ![]() Laatst gewijzigd op 16-11-2004 om 19:30. |
![]() |
|||
Citaat:
![]() Citaat:
![]() |
![]() |
||
Verwijderd
|
Citaat:
![]() (excuse my French) |
![]() |
||
Citaat:
Maareuh, ik bedoelde eigenlijk hoe je zoiets kan uitvoeren in een tweede bestand, zodat het laden van de pagina's niet wordt vertraagd door het updaten van al die data. Is dat in elke ServerSide programmeertaal mogelijk, of moet je daar een wat grotere programmeertaal bijhalen ? Wat die database betreft, ik dacht aan het volgende: tbl1: ID | IP | aantal visits tbl2: ID | tbl1 ID | browsernaam | versie tbl3: ID | tbl1 ID | resolutieX | resolutieY tbl4: ID | tbl1 ID | hostname | land van herkomst tbl5: ID | dag | maand | jaar | dag vd week | week (enige tabel samen met tbl1 die bij elk bezoek moet worden geupdate) Is dit teveel opgesplitst of in teveel tabellen verdeeld ? Of zit dit toch in de goede richting ?
__________________
When you are arguing with an idiot, make sure the other person isn't doing the same thing.
|
![]() |
||
Citaat:
![]() Ach ja, ze wordt graag gebruikt ![]() |
![]() |
||
Citaat:
__________________
Slechts beschikbaar via naamzoek/privebericht.
|
![]() |
||
Citaat:
__________________
When you are arguing with an idiot, make sure the other person isn't doing the same thing.
|
![]() |
||
Verwijderd
|
Citaat:
![]() Python ![]() PHP is zeker niet per definitie slecht, Python kan alleen meer. Maar iest wat ook met PHP kan zal in PHP makkelijker te maken zijn en sneller geparsed worden. |
![]() |
||||
Verwijderd
|
Citaat:
Citaat:
Bestand browser.txt bevat: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera/7.54 (Windows NT 5.1; U) [en] Etcetc Dan lees je het bestand gewoon uit en stop je even alles mooi in een array en gaat alles even netjes tellen. En dit doe je ook met dingen als IP's ed. Citaat:
![]() Neem dan gewoon serieus een Windows server met ASP(.NET). |
![]() |
|||
Verwijderd
|
Citaat:
Citaat:
Over het algemeen zijn attributen die berekend kunnen worden niet nodig in de database (tenzij het extreem veel performance kost). Zoals tabel 5. het enige wat je misschien nodig hebt, is de datum. Van daar uit kun je de dag, maand, jaar, weekdag en week bepalen. De optie die ********** doet is ook een goede. Maar het hangt er vanaf hoe actueel je de statistieken wilt hebben. ![]() |
![]() |
||
Citaat:
__________________
Slechts beschikbaar via naamzoek/privebericht.
|
Advertentie |
|
![]() |
|
|