Tabela kursów walut

0

Postanowiłem w ramach nauki Springa napisać prostą apkę - kalkulator kursów walut. Z tym, że chciałem by dodatkowo miał on opcję sprawdzenia historii kursu danej waluty. Znalazłem API które zwraca mi kurs Euro vs reszta walut świata, porobiłem mapowania JSON -> Entity, itp i napisałem metodę która zapisze mi na bazie kurs euro z ostatnich 365 dni. W takiej oto strukturze

currency_code | value | date

powstało mi 62000 rekordów.

No i zacząłem się zastanawiać czy moje podejście w ogóle jest dobre... planowałem wszystkie kursy wyliczać na podstawie euro, czyli przykładowo gdy ktoś chcę policzyc USD na PLN, to z prostego równania można to wyliczyć
1 EUR = 1.15 USD
1 EUR = 4.3 PLN

I jeżeli potrzebowałbym tylko obecne dane to spoko, 170 rekordów to nie tak wiele. Tyle, że tak jak wspomniałem, chciałem porobić jakieś wykresy z historią zmian danej waluty, do tego potrzeba mi dane x dni/miesięcy/lat? wstecz i wtedy tych rekordów będzie naprawdę sporo, dodatkowo codziennie będą dochodzić nowe. Czy trzymanie wszystkiego wtedy w 1 tabeli nie będzie problemem? Czy może warto do tego problemu podejść zupełnie inaczej?

0

Nie bardzo wiem jaka miała by być inna opcja. Dobrze podszedles do tego i faktycznie produkcyjnie kursy walut trzyma sie w jednej tabeli. Natomiast obok możesz zastosować tabelkę słownikową z kodem waluty i nazwa. A w tabelce kursów tylko trzymać id do tabelki slownikowej. Clou aplikacji to odpowiednia optymalizacja. Partycje, działające indeksy i ewentualne materialize view. Osobiście nie robila bym tego w mysql chociaz skoro w tym tygodniu wydali 8 wersję to może się cos zmieniło. Raczej proponowala bym postgresa przy calej kulawości środowiska admina.

0

Trochę nie rozumiem obaw przed ilością rekordów. Przecież 62k rekordów na rok to nie tak dużo. Taką ilość danych przy poprawnie skonstruowanych zapytaniach oraz indeksach domowy laptop wciągnie bez zadyszki bez problemów. Z tego co piszesz powinieneś mieć proste zapytania i gdy będziesz dane wybierał po ID waluty jak koleżanka wyżej pisze to powinno być ok.

1 użytkowników online, w tym zalogowanych: 0, gości: 1