Osaketietokannan tekeminen SQL:llä
Olen siis tekemässä järjestelmää joka tallentaa sql-tietokantaan noin 20000 yhtiön osakekurssit 70-luvulta alkaen. Jokaisella yhtiöllä on tietty ominaisuutensa, mutta mietin tässä mikä olisi helpoin keino toteuttaa loput? Yhtiöt tietoineen yhteen tauluun, ja jokaiselle yhtiölle omat taulut joissa on sitten riveissä päivittäiset osaketiedot?
Kommentit (6)
[quote author="Vierailija" time="31.05.2015 klo 21:39"]
Olen siis tekemässä järjestelmää joka tallentaa sql-tietokantaan noin 20000 yhtiön osakekurssit 70-luvulta alkaen. Jokaisella yhtiöllä on tietty ominaisuutensa, mutta mietin tässä mikä olisi helpoin keino toteuttaa loput? Yhtiöt tietoineen yhteen tauluun, ja jokaiselle yhtiölle omat taulut joissa on sitten riveissä päivittäiset osaketiedot?
[/quote]
Taitaa sulla toi normalisointi olla vielä sen verran hakusessa että suosittelen palaamaan sinne kirjallisuuden pariin.
[quote author="Vierailija" time="31.05.2015 klo 22:11"]Helpoin varmasti olisi vain kaksi taulua: yritykset ja päivittäiset pörssikurssit.
Pörssikurssit - tauluun tulisi tietysti pivämäärä, pörssikurssi ja ennenkaikkea yrityksen id - sarake, joka viittaa yksittäiseen yritykset - taulun riviiin.
Jälkimmäiseen tauluun tulee 45 vuotta * n. 250 pörssipäivää / vuosi * 20 000 yritystä eli noin 225 000 000 riviä; tämä voi tulla ongelmaksi, en ole kokeillut noin monella rivillä. Yhdellä miljoonalla rivillä olen kokeillut, teho ja nopeus riittää vielä silloin. Pääsetkö satunnaista dataa muodostomalla (ellei tuo pörssikurssidata mene helposti testausta varten tuohon yhteen tauluu) kokeilemaan? Jos suuruus on ongelma, niin sitten varmaan kannattaa nuo 20 000 eri taulua nimetä sillä tavalla loogisesti, että taulun nimi on helposti pääteltävissä jostain firman tiedosta. Vielä yksi vaihtoehto on, että on yritykset - taulu, ja sitten pörssikurssit vaikka kullekin vuosikymmenelle erikseen, niin rivimäärä putoaa jonkin verrran. Ohjelmointi tosin voi mennä tällä tavalla kaikkein hankalimmaksi.
[/quote]
Tarkoitan että tekee jokaiselle yhtiölle oma taulu pörssikursseja varten. Tauluja olisi tuolloin 20000+1.
Kakkonen kirjoittaa asiaa, ja oikeilla tietotyypeillä faktataulusta tulee niin "kapea", ettei tuo 225M riviä tunnu missään (riippuen tietysti siitä, mitä tarkoitat sql-tietokannalla ja millä raudalla se pyörii.
Aluksi kannattaa muistaa, että yhtiö ei ole sama kuin osake. On yhtiöitä, joilla on useampi osakesarja. Mutta toki siis yhtiöt erikseen, osakkeet erikseen ja kurssitiedot erikseen. Käyttötarkoituksen mukaan voi sitten miettiä ovatko osakekohtaiset taulut tarpeen vai riittääkö esim. jonkinlainen aikajako esim. vuositaulut.
Osaketiedot omaan ja päivämäärät omaan. Avaimilla yhdistetään. Ei ole järkeä tallentaa samaa päivämäärää 20000 kertaa.
Helpoin varmasti olisi vain kaksi taulua: yritykset ja päivittäiset pörssikurssit.
Pörssikurssit - tauluun tulisi tietysti pivämäärä, pörssikurssi ja ennenkaikkea yrityksen id - sarake, joka viittaa yksittäiseen yritykset - taulun riviiin.
Jälkimmäiseen tauluun tulee 45 vuotta * n. 250 pörssipäivää / vuosi * 20 000 yritystä eli noin 225 000 000 riviä; tämä voi tulla ongelmaksi, en ole kokeillut noin monella rivillä. Yhdellä miljoonalla rivillä olen kokeillut, teho ja nopeus riittää vielä silloin. Pääsetkö satunnaista dataa muodostomalla (ellei tuo pörssikurssidata mene helposti testausta varten tuohon yhteen tauluu) kokeilemaan? Jos suuruus on ongelma, niin sitten varmaan kannattaa nuo 20 000 eri taulua nimetä sillä tavalla loogisesti, että taulun nimi on helposti pääteltävissä jostain firman tiedosta. Vielä yksi vaihtoehto on, että on yritykset - taulu, ja sitten pörssikurssit vaikka kullekin vuosikymmenelle erikseen, niin rivimäärä putoaa jonkin verrran. Ohjelmointi tosin voi mennä tällä tavalla kaikkein hankalimmaksi.