Ich möchte einen benutzerorientierten View Counter implementieren (ähnlich dem, was SO für Frageansichten hat), der die Anzahl der eindeutigen Ansichten auf einer Seite verfolgt. Es gibt ein paar similar Fragen hier, aber keine scheint meine Frage vollständig zu beantworten.Implementieren Sie einen eindeutigen Zähler für die Seitenansicht?
Was wäre das beste Setup dafür (in Bezug auf Datenbanktabellen etc.)? Wäre es gut, der Tabelle "Fragen" eine Spalte "Ansichten" hinzuzufügen und diese bei jeder Seitenansicht einfach zu erhöhen? Und wenn ich möchte, dass die Ansichten eindeutig sind, könnte ich eine andere Tabelle mit Frage-IDs und IP-Adressen haben und die "Ansicht" -Spalte nur erhöhen, wenn es nicht schon einen Eintrag mit der aktuellen IP-Adresse gibt. Allerdings würde diese 'ip-view'-Tabelle sehr schnell enorm werden ... Hauptsächlich geht es mir um den Aufwand, jede Seite und jede IP in einer Tabelle speichern zu müssen.
Wie könnte dies optimiert werden, damit es nicht zu einem Leistungsengpass wird? Gibt es einen besseren Ansatz als das, was ich beschrieben habe? Bitte beachten Sie, dass es für mich sehr wichtig ist, dass nur einmalige Ansichten gezählt werden.
Update: Zusätzlich zu den Implementierungsmethoden möchte ich auch weiter verstehen, wo die Leistungsprobleme ins Spiel kommen, indem man den naiven Ansatz einfach prüft, ob die IP existiert und die Spalte 'view' auf jedem aktualisiert Seitenansicht. Das Hauptproblem ist eine große Anzahl von Einfügungen (unter der Annahme starken Datenverkehrs) oder eher die Größe der Objekt-zu-IP-Zuordnungstabelle (die sehr groß sein kann, da für jeden neuen eindeutigen Besucher eine neue Zeile pro Frage eingefügt wird). Sollten Race-Bedingungen in Betracht gezogen werden (ich nahm einfach an, dass eine update/increment SQL-Anweisung atomar war)? Sorry für alle Fragen, aber ich bin nur verloren, wie ich das angehen sollte.
Überprüfen Sie meine Antwort hier, möglicherweise: http://stackoverflow.com/questions/1269968/incremened-db-field/1269973#1269973 –