Chcę zaimplementować licznik widoku skierowany do użytkownika (podobny do tego, jaki SO ma dla widoków pytań), który śledzi liczbę unikalnych widoków na stronie. Jest kilka pytań na temat similar, ale wydaje się, że nie odpowiadają one całkowicie na moje pytanie.Zaimplementuj unikalny licznik wyświetleń strony?
Jaka byłaby najlepsza konfiguracja (pod względem tabel bazy danych itp.)? Czy byłoby dobrze dodać kolumnę "widoki" do tabeli "pytania" i po prostu zwiększyć ją przy każdym wyświetleniu strony? A jeśli chcę, aby widoki były unikatowe, myślę, że mógłbym mieć kolejną tabelę z pytaniami i adresami IP i tylko zwiększać kolumnę "widok", jeśli nie ma już wpisu z bieżącym adresem IP. Jednak ta tabela "widok-ip" bardzo szybko stałaby się ogromna ... Głównie martwię się koniecznością przechowywania każdego widoku strony i każdego adresu IP w tabeli.
W jaki sposób można to zoptymalizować, aby nie stało się wąskim gardłem wydajności? Czy istnieje lepsze podejście niż to, co opisałem? Zwróć uwagę, że bardzo ważne jest dla mnie, że policzone są tylko unikalne widoki.
Aktualizacja: oprócz sugerując sposoby realizacji, Chciałbym również, aby lepiej zrozumieć, gdzie problemy z wydajnością wchodzić w grę przy założeniu, że naiwne podejście po prostu sprawdzenie, czy istnieje IP i aktualizacji „view” kolumny na każdy widok strony. Czy głównym problemem jest ogromna liczba wstawień (zakładając duży ruch) lub czy jest to większy rozmiar tabeli mapowania obiektów do IP (która może być ogromna, ponieważ dla każdego nowego unikalnego gościa zostanie wstawiony nowy wiersz dla każdego pytania). Czy warunki wyścigu powinny być brane pod uwagę (po prostu założyłem, że instrukcja update/increment sql była atomowa)? Przepraszam za wszystkie pytania, ale jestem po prostu zagubiony, jak powinienem podejść do tego.
Sprawdź moją odpowiedź tutaj, być może: http://stackoverflow.com/questions/1269968/incremented-db-field/1269973#1269973 –