500*50.000 zou inderdaad kunnen, maar is het niet slimmer om per medewerkers (500+/-) per afdelingen (60 +/-) per melding (stuk of 10 +/-) (=maximaal 300.000 entries per dag) een teller bij te houden?quote:Op vrijdag 31 juli 2009 22:10 schreef GlowMouse het volgende:
500*50.000/dag is niks, kun je mooi een tabel mee vullen. Beetje letten op je datatypes (medewerkerID unsigned smallint/2 bytes, afdelingID unsigned tinyint/1 byte, meldingID unsigned mediumint 2 bytes, dag date 3 bytes), zit je op 200 MB aan data per dag. Plus indices die erbij komen. Kan je prima een maand bijhouden.
Dat + datum erbij dus, lijkt me het minst zwaarst voor de databasequote:Op vrijdag 31 juli 2009 22:10 schreef GlowMouse het volgende:
Of als je de tijdstippen niet interesseer, tabel aanmaken met medewerker|afdeling|melding|views, UNIQUE op de eerste drie kolommen en dan views ophogen via INSERT ... IF EXISTS UPDATE ofzo.
300.000 per dag, maar nog acceptabel inderdaad. Opzich wel jammer dat het tijdstip dan niet opgeslagen wordt.. maar ik vrees dat dat een beetje teveel vreet.quote:Op vrijdag 31 juli 2009 22:25 schreef GlowMouse het volgende:
Oh, die 500 is per afdeling. Dan medewerker|afdeling|melding|datum|views inderdaad. Views zal wel niet meer passen in 2 bytes, 50.000 zit al dicht bij de limiet. Kom je op 11 bytes/rij.
30.000 rijen per dag, 330 kB/dag, goed te doen om jaren bij te houden. Maar 50.000 updates voor elke 30.000 gebruikers is wel een ouch, dat zou me een grotere zorg zijn
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
1 |
1 2 3 4 5 | FROM log WHERE medewerker_id = '1' GROUP BY `datum`,`melding_id` ORDER BY melding_id,datum |
Als je PHP's eigen sessiesysteem gebruikt wel ja.quote:Op zaterdag 1 augustus 2009 01:32 schreef gieling het volgende:
had ik naar gekeken maar is het niet zo dat de sessieid bij elk bezoek verandert?
1 |
Als je die waarden alleen gebruikt voor marketing informatie: Niet. Gewoon je statistieken programma voor gebruiken.quote:Op vrijdag 31 juli 2009 22:02 schreef BaggerUser het volgende:
Database vraagje..
Ik heb een database met simpel gezegd
medewerkers (500+/-)
afdelingen (60 +/-)
melding (stuk of 10 +/-)
een meldingen kan voor 1 of meerdere afdeling gelden en dus ook bekeken worden via verschillende afdelingen.
een buitenstaander kan via elke afdeling een melding zien via een medewerker (een melding is verder niet gekoppeld aan een gebruiker, alleen op het moment van bekijken wordt er een getal opgehoogd bij de medewerker.)
Nu wil ik per dag gaan bijhouden hoe vaak een melding is bekeken door een buitenstaander gekoppeld aan de gebruiker en via welke afdeling (dus dat ik van de afgelopen 7 dagen, en als het haalbaar is van de afgelopen maand hoevaak dat is)
nu komt de grap, zo'n melding kan soms wel 50.000 keer op een dag bekeken worden per gebruiker. Hoe krijg ik dat een beetje normaal in de database?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function compare($string, $filename){ $stringArray = explode(" ",$string); // Array with loose words of the string $fileArray = file($filename); printArray($stringArray); printArray($fileArray); for($index=0;$index<sizeof($stringArray);$index++){ for($counter=0;$counter<sizeof($fileArray);$counter++){ echo "index: $index en counter: $counter <br>"; echo "$stringArray[$index] => $fileArray[$counter] <br>"; $compare = strcasecmp($stringArray[$index],$fileArray[$counter]); echo "$compare <br>"; if(strcasecmp($stringArray[$index],$fileArray[$counter])==0){ echo "match!!! <br>"; } } } } compare('hallo dit is een test', 'F:\\XXX\\UsbWebserver\\Root\\YYY\\ZZZ\\woorden.txt'); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 1 => dit 2 => is 3 => een 4 => test 0 => hallo 1 => test index: 0 en counter: 0 hallo => hallo -2 index: 0 en counter: 1 hallo => test -12 index: 1 en counter: 0 dit => hallo -4 index: 1 en counter: 1 dit => test -16 index: 2 en counter: 0 is => hallo 1 index: 2 en counter: 1 is => test -11 index: 3 en counter: 0 een => hallo -3 index: 3 en counter: 1 een => test -15 index: 4 en counter: 0 test => hallo 12 index: 4 en counter: 1 test => test 0 match!!! |
Bedankt, dat werkt idd.quote:Op zaterdag 1 augustus 2009 23:15 schreef Roönaän het volgende:
Dit komt omdat file() de newlines bewaard. Je zou een array_map met trim kunnen proberen.
1 2 3 4 5 6 7 8 | function sortArray(&$array){ ksort($array); foreach(array_keys($array) as $i){ sortArray($array[$i]); } } ?> |
Helaas, m'n glazen bol is stuk.quote:Op zaterdag 1 augustus 2009 23:42 schreef uppie83 het volgende:
En uiteindelijk doet dit de truc wel. Ik krijg er echter een shitload aan foutmeldingen bij.
1 2 3 4 5 6 7 8 9 10 11 | function sortArray(&$array){ if(!is_array($array)) { return; } ksort($array); foreach(array_keys($array) as $i){ sortArray($array[$i]); } } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |