![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 1.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Dostalem do robienia projekt który bedzie dosc szybko się rozrastal. Załozenia są takie ze sie nagromadzi ok 18 milionów rekordów w ciągu roku. Struktura bazy jest dosyc prosta. Jedna tabela Userzy i UserzyWpisy z ok 30 kolumnami (integer, date, decimal). Bedze to budować w oparciu o Zenda i Doctrine. Dane bedą potem uzywane do obliczania naleznej kwoty do zaplaty, na podstawie wpisow z calego roku, w trybie tygodniowym czyli dla danego tygodnia 7 wpisów dla jednego usera. Pytanie jest takie, co lepsze będzie: Czy 7 osobnych rekordów w tabeli UserzyWpisy, czy 1 dlugi rekord dla jednego usera w UserzyWpisy z kolumnami na kazdy dzien czyli ok 30x7 = 210 kolumn. wg mnie pierwsze rozwiazanie jest ok, bo mam wiekszą kontrolę nad zmianami, jak np dojdzie jedno pole nowe. Jak to sie ma do wydajnosci mysqla? Joinow w jedynm zapytaniu bedzie sztuk 1. Złaczenie User i UserWpisy, a jedynymi operacjami będą rozne kalukacje (dodaj, odejmij) na danych w bazie. Bedą indeksy, będą odpowiednio dobrane typy kolumn, cache w doktrynie. Na co jeszcze zwórcic uwage? nie chcialbym się w ciemny las zapędzic. Proszę o opinie osoby ktore robily takie projekty. alex |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
210 kolumn? A chcesz do tego żyletkę, żeby od razu się pociąć?
Na dobrym serwerze, przy dobrych indeksach będzie działać. Jeśli struktura danych na to pozwala, możesz pobawić się w partycjonowanie. Najbardziej bałbym się, że Doctrine wymyśli jakieś nieszczególnie optymalne zapytania. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 15:44 |