Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dane tymczasowe/statystyki sposób przechowywania
Forum PHP.pl > Forum > Bazy danych > MySQL
ChrisB
mam tabelkę z danymi tymczasowymi typu ile postów na forum razem, ile dzisiaj, ilu graczy sie zalogowało itp itd
zakładając że jest tych danych skończona ilość - obecnie około 20 - co jakiś czas dodaje coś nowego - myślę że 100 nie przekroczy wcale
jaki jest najlepszy sposób ich przechowywania w bazie? (przy każdym odświeżeniu strony wszystkie te dane są plus minus potrzebne - pobieram je na początku kodu i później niektóre z nich wykorzystuje - ale nie wiem które będą potrzebne więc pobieram wszystkie)

aktualnie mam je w formie wierszy - jako index,value (nazwa zmiennej, wartosc)
i pytanie czy nie lepiej zrobić to jako kolumną ?
Pilsener
Jeśli staty są generowane co jakiś czas to dobrą opcją jest słać to od razu do pliku (nawet zapytaniem sql da się to zrobic), metodę generującą staty odpalamy jak chcemy (zmiana bazy, przeterminowanie pliku, w tle co x czasu, gdy admin ma urodziny).

Zakładam, że jest to używane na stronie w takiej postaci, w jakiej jest generowane i nie służy do innych celów.
ChrisB
nie chce w pliku
co do danych - jakas część tej tabelki aktualizowana jest srednio raz na sekunde (tzn w szczycie 1 update na sekunde idzie do niej i jakies 3x select - takze w sumie jest to najczesciej operowana tabelka i dlatego cche by byla optymalnie ustawiona)
dlatego update set value='warotsc' where 'index'='nazwa zmiennej'

zamienil bym na update 'nazwakolumny - nazwa zmiennej' ='nowa wartosc' where id=1

i zamiast pobierac 20-100 rekordów pobierał bym 1 ze setka kolumn..

ma to sens?
Pilsener
Jeśli to mają być faktycznie dane tymczasowe i chcesz mieć to w bazie, to polecam tabele typu memory

A teoretycznie czy to ma sens... być może, ale masz się dostosować do charakterystyki serwisu i jego obciążenia, więc cel uświęca środki, dziś może to być update 1/sekunda a za pół roku 100. Najlepiej to kontrolować, wszelkie statystyki bym generował w tle, nawet jeden dodatkowy proces co sekundę jest lepszy, niż x dodatkowych zapytań do bazy na sekundę.
ChrisB
to nie są dane tymczasowe tylko dane typu:
- ilość osób w rankingu - zamiast pobierać z tablicy ranking ile jest rekordów - pobieram tą wartość i przy przeliczaniu rankingu ją uaktulaniam
- ilość postów na forum - zwiększana o 1 przy dodawaniu / zmniejszana przy kasacji
itp itd
także - nie sa to dane tymczasowe - ze je pobieram/modyfikuje i zapisuje inne dla kazdego - bardziej to jest taki cache pewnych wartości

ale nadal problem polega na tym:
czy jedna wartosc=1 wiersz w tablicy
czy może wszystkie naraz w jednym wierszu jako kolumny

i przetestowałbym ale nie bardzo mam jak więc dlatego pytam
Pilsener
Oddzielne pole dla każdej wartości, zgodne ze sztuką i bardziej intuicyjne. Zrób z tego tabelę memory by przyśpieszyć odczyt i aktualizację. I sam przyznałeś, że to ma być rodzaj cache, dlatego najlepiej by było zrobić tablicę tych wartości, zserializować ją i zapisać w pliku.
Crozin
Trzymasz po prostu jako zwykłą tabelę z kluczem i wartością. Ta tabela jest tak mała (te raptem 20 - 100 rekordów), że jestem niemalże pewien, że nie ma ona jakiegokolwiek realnego wpływu na wydajność Twojej aplikacji. Od biedy możesz ją sobie cache-ować i odświeżać co przykładowo 30 sekund.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.