| Borsti |
Geschrieben am: Mo 9.01.2006, 17:06
|
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 136 Mitglied seit: 2.12.2005 |
Hallo,
ich schreibe gerade an einem Bannertausch script, hierbei stellt sich mir das Problem der Datenbank optimierung! Das heißt ich möchte ja jeden view und klick speichern damit die angemeldeten user eine statistik bekommen können. Und das ja am besten noch für jede Stunde! Doch wenn man die daten so abspecihern würde bekämme man ja schnell millionen von datensätzen zusammen, bei einem solchen Netztwerk! Jetzt meine frage gibt es schon tutorial oder artikel die sich mit diesem problem befassen oder habt ihr ideen wie die ungefähre strucktur in einem solchen netzwerk ausehen muss damit man nicht unmengen an daten hat und das laden ewig dauert! Ich sag mal eine stunden auswertung der views und klicks ist nicht unbedingt erforderlich! MFG -------------------- http://www.ppcps.de *Pocket PC, PDA und Smartphones
|
![]() |
| Roberto Zehnder |
#2 Geschrieben am: Mo 9.01.2006, 17:25 (+00:18)
|
![]() AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 438 Mitglied seit: 8.10.2005 |
Also möglichkeit wäre, eine tabelle mit id des Banners und halt 24 zusätzliche Spalten für die 24 Stunden, oder willst du für jeden Tag immer rückblickend auch noch die einzelnen Stunde auswerten können?
-------------------- Wir von Zeweb bieten Ihnen einen rundum Service für die Homepage an.
Gerne übernehmen wir aber auch ihren PHP Programmier Auftrag. ========================================================= Captcha Tutorials => stoppt-den-spam.info |
![]() |
| Joel Enzian Media GmbH |
#3 Geschrieben am: Mo 9.01.2006, 18:09 (+00:44)
|
||
![]() AyomRank 7 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 1433 Mitglied seit: 17.06.2004 |
-> Nein mach das nicht. Ich würde eine Tabelle machen, bei dem jeder User geloggt wird: id (integer) | id_banner (integer) | host (varchar) | views (integer) | time (datetime) id -> unique / schlüssel id_banner + host -> unique id_banner -> index time -> index Dann würde ich bei jedem load überprüfen ob es datensätze gibt, welche älter als eine Stunde sind. Falls ja, diese mit einem Insert in eine generellere Tabelle übertragen. Da genau diese einzelnen Klicks so viele Daten verursachen. Beispiel: id_banner | hour (varchar -> yy:mm:dd hh) | klicks | views So hast du eine Klicksperre (z.B. eine stunde, damit ein user nicht mehrmals auf den gleichen banner klicken kann...) und zudem das Volumen der Daten verringert. -------------------- EagleFind.com - Die visuelle Suchmaschine
Enzian Media bietet Entwicklung von Websites, Videos und Webcam-Streaming. Suxedoo |
||
![]() |
| Borsti |
#4 Geschrieben am: Mo 9.01.2006, 21:48 (+03:38)
|
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 136 Mitglied seit: 2.12.2005 |
danke für eure Antworten!
@madox so in etwa habe ich mir das auch gedacht aber auch da kommen ja gigantische daten mengen heraus! weil ich ja folgende unterscheidungen brauche: - views klicks und pi pro stunde, tag, woche, monat, jahr - Publisher website id wo der klick herkam - Advertiser anzeige id und das kann ja denn schnell große datenmengen ausmachen besonders da man ja jeden klick usw. pro stunde zurück verfolgen können soll. Wie viele datensätze kann den eine mysql Tabelle im schnitt so beherbergen damit man normale querys noch in einer akzeptablen zeit erhält? (mal abgesehen von der hardware) MFG -------------------- http://www.ppcps.de *Pocket PC, PDA und Smartphones
|
![]() |
| Sascha Ahlers |
#5 Geschrieben am: Di 10.01.2006, 00:32 (+02:44)
|
||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1699 Mitglied seit: 27.12.2004 |
Also, ich habe es in etwa über eine Kombination von beiden Methoden gemacht... @Borsti: Nun, wenn Du es so machen möchtest, wie Joel Janser es Dir vorschlägt, solltest Du (nach Möglichkeit) besser mit Merge-Tabellen arbeiten (dies musst jedoch Du entscheiden). Sprich für den ersten Monat lässt Du die Log-Daten in Tabelle "log_2006_01" schreiben, und im nächsten Monat in "log_2006_02". Damit werden die Tabellen nicht zu all zu groß, und es ist unwahrscheinlicher, dass die Preformence später zu sehr in Keller geht. Um Platz zu sparen kannst Du dann auch die Tabellen aus dem abgeschlossenden Monat komprimieren. [1] Um diese Tabellen zusammen fassen zu können, kann dann eine Merge-Tabelle angelegt werden. Voraussetzungen für diese Methode sind:
Beispiel (SQL-Syntax):
Die Option INSERT METHOD kann drei Werte haben NO, FIRST und LAST.
Einige Beschränkungen weisen die Merge-Tabellen jedoch auf:
MfG Sascha Ahlers [1] Nach der Komprimierung sind keine schreibenden Zugriffe mehr möglich, dafür müsste die Tabelle erst wieder dekomprimiert werden. Auch müssen die zu komprimierenden Tabellen vorher aus der Merge-Tabelle herausgenommen werden, nach abgeschlossenden Komprimierung können diese dann wieder hinzugefügt werden. -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||
![]() |
| Borsti |
#6 Geschrieben am: Di 10.01.2006, 00:48 (+00:15)
|
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 136 Mitglied seit: 2.12.2005 |
Vielen dank!
Das ist ja echt eine geniale idee Das kann man ja wunderbar dynamisch machen. Und man hat dann ja wirklich alle daten schon in einzelne Segmente (Monat) aufgeteilt. Das ganze könnte man ja auch ohne Merge Tabelle machen oder? Trotzdem, kennst du vieleicht ein tutorial oder artikel der merge Tabellen ausführlich erklärt! Also vielen, vielen dank der tip war das was ich gesucht habe. Da ist die nacht ja heute gerettet und kann zum programmieren genutzt werden. MFG -------------------- http://www.ppcps.de *Pocket PC, PDA und Smartphones
|
![]() |
| Sascha Ahlers |
#7 Geschrieben am: Di 10.01.2006, 02:18 (+01:30)
|
||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1699 Mitglied seit: 27.12.2004 |
Nein, ich kenne leider keine Tutorials oder Artikel zu dem Thema, da ich mich selber dort eher auf meine Beiden MySQL-Bücher verlasse oder der MySQL-Dokumentation. Alles andere habe ich über die Jahre zuvor in erlernt, hauptsächlich dadurch, weil ich mich für Funktionsabläufe von Anwendungen interessiert habe. Theoretisch kann man es auch ohne eine Merge-Tabelle machen, aber wenn man eine Übersicht über ein Jahr erstellen möchte, ist eine Merge-Tabelle außerordentlich hilfreich dabei. MfG Sascha Ahlers -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||
![]() |
| Borsti |
#8 Geschrieben am: Di 10.01.2006, 05:04 (+02:46)
|
||||
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 136 Mitglied seit: 2.12.2005 |
Schade auch, dann wird man wohl selber googlen dürfen.
Mann kann doch dann die abfrage per "JOIN" machen oder habe ich da jetzt einen denk fehler? So bin dann erstmal in den federn! Bis morgen! -------------------- http://www.ppcps.de *Pocket PC, PDA und Smartphones
|
||||
![]() |
| Sascha Ahlers |
#9 Geschrieben am: Di 10.01.2006, 13:02 (+07:58)
|
||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1699 Mitglied seit: 27.12.2004 |
Ich mein nicht. JOIN ist doch eher dafür gedacht um Tabellen untereinander zu verknüfen, um darauß einen kompletten Datensatz zu bilden. Ich denke aber nicht, dass es dafür geeignet ist mehrere Tabellen nach einzelnen Datensätzen abzufragen. Dazu müssten einzelne Abfragen erstellt werden, und über die Anwendung entsprechend zusammengefügt werden (, wenn keine Merge-Tabelle benutzt wird). MfG Sascha Ahlers -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||
![]() |
| Borsti |
#10 Geschrieben am: Di 10.01.2006, 22:18 (+09:16)
|
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 136 Mitglied seit: 2.12.2005 |
Hi,
nach gründlicher recherche im inet muss ich die recht geben. Werde dann wohl merge tabellen nutzen. Nach bisherigem lesen scheinen diese ja auch recht bequem zu erstellen und verwalten sein. Also wenn es probleme gibt dann melde ich mich wieder ansonsten, danke euch allen für euere hilfe! Bin mir ein ganzes stück klarer über die strucktur geworden. MFG -------------------- http://www.ppcps.de *Pocket PC, PDA und Smartphones
|
![]() |
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/10020
![]() |
![]() ![]() ![]() |
| Themen Titel | Autor | Views | Antworten | Letzte Aktion |
| MySQL Abfrage von zwei Tabellen | webdoktor | 154 | 6 | Do 31.07.2008, 15:26 |
| MySQL Ausgabe zwei Tabellen | Brian Folte | 233 | 5 | Do 17.04.2008, 12:16 |
| PHP Tabellen <tr> einfügen | Brian Folte | 253 | 5 | Di 15.04.2008, 15:17 |
| Speisekarte interessant gestalten | Jan-Remmer Harms | 2140 | 16 | Fr 19.10.2007, 11:55 |
| Tabellen anlegen | matador | 161 | 3 | Mi 27.06.2007, 19:38 |
| Tabellen mit css | Webi | 282 | 2 | Mi 24.01.2007, 08:34 |
| Tabellen-Problem? | vendy | 409 | 6 | Di 29.08.2006, 06:56 |
| Kann man in MySQL Tabellen kopieren? | stud3 | 3699 | 18 | Sa 13.05.2006, 10:49 |
| Gutscheine optimal im Internet verteilen, wie? | Yel Nats | 404 | 1 | Di 11.04.2006, 10:35 |
| mysql temporäre Tabellen | Tuemmel | 1371 | 0 | Fr 24.02.2006, 16:31 |
Anzeige - [Interessiert an einer Anzeige?]





















