Zase si dělám, co chci, a ne co je důležité. Chtěl jsem mít přehled, kolik lidí navštíví třeba hlavní stránku Apps a kolik Lyrics, ale přístupy pro každý den jsem si ukládal pouze pro stránky, které mají řádek v databázi. Funguje to následovně. Všechny názvy tabulek, co tu vypíšu, jsou smyšlené, ale skutečně existující. Základem je tedy 5 tabulek:
- VsechnyStranky – obsahuje všechny stránky – od každé její ID a celkový počet shlédnutí
- StrankyDbEntity – obsahuje sloupec ID tabulky, id entity a počet shlédnutí pro každý den
- Stranky – obsahuje index ze stránky NazvyStranek a QsArgumenty a počet shlédnutí pro každý den
- QsArgumenty – protože databáze má být atomická a šetřím místo, jsou argumenty i názvy stránek v jedné tabulce
- NazvyStranek – -||-
Když se načte libovolná stránka, která ještě ten den nebyla načtena, uloží se do tabulky VsechnyStranky a pak podle jejího typu buď do StrankyDbEntity nebo Stranky. Zjistí se z tabulky VsechnyStranky nejvyšší dosažený počet shlédnutí pro stránku a ten se uloží do nového řádku VsechnyStranky – buď o 1 vyšší v případě, že není přihlášen admin, nebo beze změny. Týden a víc staré řádky z prvních 3 tabulek se mažou – po týdnu jsou zbytečné. Takhle mohu rychle zjistit celkový počet shlédnutí za všechny dny, počet shlédnutí dnes a počet shlédnutí za posledních 7 dní(který se ukládá přímo do řádku entity a je náročnější na výpočet – proto ho dávám jen k tabulkám, kde opravdu bude mít smysl.). Má to zatím 2 nedodělky:
- Nemaže to stránky z tabulky Stranky(tedy ty které „nejsou“ dynamické)
- Nefunguje zobrazení v grafu za posledních 7 dní – na tom budu pracovat dál.
PS: Zatím to je plně implementováno jen na alba webu Photos – vše ostatní bude brzo následovat.