Hi There,
Ik ben bezig met het toegankelijk maken van bepaalde gegevens in een logfile. Dit is een soort webserver logfile in een xml achtig formaat. Hierin staan zo'n 400.000 entries per dag. Elke entry bevat gegevens zoals date, src_ip, dst_ip, user, location, method, path, etc.
Nu heb ik een (php) script geschreven dat deze logfile regel voor regel kan "parsen" zodat het in bijvoorbeeld een MySQL database gezet kan worden. Dit gaat in principe goed, alleen wordt de tabel zo'n 400 mb groot, zodat er niet in te zoeken valt (en dat is nou juist de bedoeling).
Mijn idee is om er, in plaats van één tabel, een aantal tabellen (zoals src_ip, dst_ip, user, location, ect.) van te maken met alleen de unieke waardes plus een id. Er moet dan dus 1 tabel komen met alle relaties die dan bijvoorbeeld de volgende velden heeft (rel_id, date, src_ip_id, dst_ip_id, user_id, location_id, etc...).
De losse tabellen zijn makkelijk te maken, gewoon een simpele group by en een id erbij maken, maar ik kom er niet helemaal uit hoe ik dan de uiteindelijke relatie tabel moet maken.
Ik heb een soortgelijke query als de volgende geprobeerd (alleen dan met 19 verschillende velden) maar die is inmiddels al 24 uur aan het stampen en nog niet klaar (owkee, de machine is niet super snel, maar toch...):
CREATE TABLE relations AS SELECT
logfile.logfile_id,
logfile.date,
user.user_id,
location.location_id
...
FROM logfile
LEFT JOIN user ON logfile.user = user.user
LEFT JOIN location ON logfile.location = location.location
...
Dit zou dan alleen om de initiele vulling van de relations tabel gaan, maar als ik later meerdere logfiles moet toevoegen, moet ik dan per veld gaan kijken of die waarde al in een tabel staat, dat id nemen en dat in de relations tabel zetten? (Dan gaat het namelijk nog veel langer duren denk ik zo
)
Hoe zou ik dit aan kunnen pakken, ook met het oog om meerdere logfiles later toe te kunnen voegen?
Alvast bedankt
Ik ben bezig met het toegankelijk maken van bepaalde gegevens in een logfile. Dit is een soort webserver logfile in een xml achtig formaat. Hierin staan zo'n 400.000 entries per dag. Elke entry bevat gegevens zoals date, src_ip, dst_ip, user, location, method, path, etc.
Nu heb ik een (php) script geschreven dat deze logfile regel voor regel kan "parsen" zodat het in bijvoorbeeld een MySQL database gezet kan worden. Dit gaat in principe goed, alleen wordt de tabel zo'n 400 mb groot, zodat er niet in te zoeken valt (en dat is nou juist de bedoeling).
Mijn idee is om er, in plaats van één tabel, een aantal tabellen (zoals src_ip, dst_ip, user, location, ect.) van te maken met alleen de unieke waardes plus een id. Er moet dan dus 1 tabel komen met alle relaties die dan bijvoorbeeld de volgende velden heeft (rel_id, date, src_ip_id, dst_ip_id, user_id, location_id, etc...).
De losse tabellen zijn makkelijk te maken, gewoon een simpele group by en een id erbij maken, maar ik kom er niet helemaal uit hoe ik dan de uiteindelijke relatie tabel moet maken.
Ik heb een soortgelijke query als de volgende geprobeerd (alleen dan met 19 verschillende velden) maar die is inmiddels al 24 uur aan het stampen en nog niet klaar (owkee, de machine is niet super snel, maar toch...):
CREATE TABLE relations AS SELECT
logfile.logfile_id,
logfile.date,
user.user_id,
location.location_id
...
FROM logfile
LEFT JOIN user ON logfile.user = user.user
LEFT JOIN location ON logfile.location = location.location
...
Dit zou dan alleen om de initiele vulling van de relations tabel gaan, maar als ik later meerdere logfiles moet toevoegen, moet ik dan per veld gaan kijken of die waarde al in een tabel staat, dat id nemen en dat in de relations tabel zetten? (Dan gaat het namelijk nog veel langer duren denk ik zo
Hoe zou ik dit aan kunnen pakken, ook met het oog om meerdere logfiles later toe te kunnen voegen?
Alvast bedankt