Sinnvoller Datenbank Aufbau - Besucherherkunft mitloggen

  • Hallo,

    ich benötige mal Hilfe / Anregung / Idee bzgl. dem sinnvollen Aufbau einer MySQL Datenbank.

    Auf einer Webseite von mir möchte ich mittels Kampagnen mitloggen über welche Webseite / Kampagne die Nutzer den Weg zu meiner Seite gefunden haben. Ich möchte die Daten nach täglich / monatlich / jährlich auswerten können, welche Kampagne wirklich neue Besucher bringt, die sich auch registrieren etc.

    Bisher habe ich eine Datenbank Tabelle mit folgendem Aufbau:

    id | campaign_id | referer | user_ip | user_host |datum

    Neue Besucher habe ich zeilenweise hinzugefügt.

    Die Datenbank Tabelle ist mittlerweile über 170MB groß und ich denke darüber nach ob eine Umstrukturierung sinnvoll ist, nicht für jeden Besucher eine neue Zeile anzulegen.

    Meine ersten Ansätze sehen aber meiner Meinung nach nicht wirklich sinnvoll aus. Wenn ich die Daten aufsummiere und in der DB ablege, müsste ich auf Detaildaten wie etwa auf den Referer (die genau URL wo der User her kommt) verzichten. Hinzu kommt, dass nicht jede Kampagne jeden Tag Besucher hat.

    Für Anregungen wäre ich dankbar. ;o)

  • Danke Arne, für die schnelle Antwort.
    Beim Datum verwende ich den Datentyp Datetime. Vielleicht ist die Tabelle einfach nur groß und ich sollte es dabei belassen. ;o) Alle anderen Überlegungen je Kampagne / je Jahr etc. eine neue Tabelle anzulegen stellen sich bei weiteren Überlegungen also zu kompliziert / sinnlos heraus.

    • Offizieller Beitrag

    Also rein zum loggen/auswerten ist das, was Du da hast imho vollkommen ausreichend.
    Die Frage ist, wo die 170 MB herkommen. Wie viele Datensätze hast Du denn bereits?
    Vielleicht sollte man ein regelmässiges Backup machen und Datensätze älter wie X Tage/Wochen/Monate entfernen.

  • In der Datenbank sind seit 01/2014 knapp 700.000 Datensätze.

    Löschen möchte ich eigentlich keine Daten, da es ja auch rückwirkend sehr interessant ist, wie sich Kampagnen entwickelt haben.

  • In einem anderen Forum bekam ich einen sehr genialen Ansatz, so wie Wordpress dies auch nutzt ... Auslagerung von bestimmten Daten in eine andere Tabelle.

    Die Kampagnen ID's (z.B.: 95GPDIlPCS) wiederholen sich ja ständig. In der Tabelle fortlaufende ID's mit 1,2,3 ... und in einer anderen Tabelle die eindeutige Zuweisung speichern. Statt varchar(10) hat man dann nur noch int(3).

    Die Referer wiederholen sich ja auch. Dort werde ich mal checken ob sich die Auslagerung auch lohnt. Die Referer haben immerhin eine Zeichenlänge bis zu 100 Zeichen.

  • Bzgl. Wordpress muss ich dir zustimmen. ;o))

    Aber im Moment der Freude fiel mir nichts anderes ein. Es ist so offensichtlich und dadurch, dass man rund um die Uhr dran sitzt, kommt man nicht drauf.