Download - Tehokkaat eräohjelmat
![Page 1: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/1.jpg)
Tehokkaat eräohjelmat
OsuuspankkikeskusVille Hurmalainen
![Page 2: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/2.jpg)
Eräajot, mitä kiinnostavaa?
• Vähiten arvostettu, mutta käytännössä tärkein tapa käsitellä tietoa
• Ei mitään ”hörhöilyä”, vain tärkeimmät uutuudet tuodaan myös eräajoympäristöihin
• Suuria haasteita 24/7 käyttövaatimusten takia
• Siksi juuri sopiva aihe ylemmän ammattikorkeakoulututkinnon opinnäytetyöksi
![Page 3: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/3.jpg)
Ylempi ammattikorkeatutkinto
• Ylempi ammattikorkeakoulututkinto tarkoitettu työelämässä oleville korkeakoulututkinnon suorittaneille, jotka haluavat syventää ja laajentaa erikoisosaamistaan.
• Ylempi ammattikorkeakoulututkinto tuottaa saman kelpoisuuden julkiseen virkaan kuin yliopistoissa ja muissa tiedekorkeakouluissa suoritettu ylempi korkeakoulututkinto.
• Ylempien ammattikorkeakoulututkintojen laajuus on 60 - 90 opintopistettä. Kokopäiväisesti opiskellen opinnot kestävät vuodesta puoleentoista vuoteen.
• Virallinen titteli: Tradenomi (ylempi AMK), englannin kielinen tutkintonimike Master of Business Administration eli MBA
• Itselläni meni työn ohessa suoritettuna 4 vuotta.
![Page 4: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/4.jpg)
Opinnäytetyö
• Ylemmän ammattikorkeakoulututkinnon opinnäytetyö tehdään työelämän lähtökohdista
• "Tavoitteena tehokkaat eräajot" liikkeelle Autoturvajärjestelmän suurien uudistusajojen tehovaatimuksista
• Tehoa tutkittu seuraavista näkökulmista– laitteistot– tiedonhallintaohjelmistot– sovellusohjelmointi
![Page 5: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/5.jpg)
The Hardware
![Page 6: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/6.jpg)
LaitteistotTallennus- väline
Hakuaika Kapasiteetti
Hinta Pysyvyys
Rekisteri 1 nsek < 1 KB Erittäin kallis
Ei pysyvä
Cache 2 nsek 4 MB Erittäin kallis
Ei pysyvä
Keskusmuisti 10 nsek 512 – 4096 MB
Kallis Ei pysyvä
SSD-muistilaitteet
4 msek 64 - 256 GB Melko kallis
Pysyvä
Levylaiteet 10 msek 200 - 1000 GB
Edullinen
Pysyvä
Magneetti- 100 s 400 – 800 GB
Halpa PysyvänauhatTaulukko 1. Muistilaitteiden ominaisuudet (Tannenbaum, 2008, 23 - 25).
![Page 7: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/7.jpg)
Levy ja SSD muistit
Kuvassa esitetään SSD laitteiden hajalukemisen teho verrattuna levylaitteisiin. Kuvasta käy ilmi, miten lukeminen hajajärjestyksessä (oikealla) on paljon tehokkaampaa SSD laitteilla verrattuna kovalevyihin. Vasemmalla kuvataan, miten kirjoittaminen hajajärjestyksessä on edelleen tehokkaampaa perinteisillä kovalevyillä .
Tehokkuuden saavuttamiseksi I/O operaatioiden vähentäminen on olennaista, sillä keskusmuisti on kuitenkin paljon nopeampaa. ”Electrons move faster than disk heads”(Clevinger, 2005).
![Page 8: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/8.jpg)
Muisti
• Keskusmuisti– 64 bittiä tarjoaa teoriassa 16 exatavua,
käytännössä paljon vähemmän• Sivuuttaminen
– Eräajoille paha juttu– Trashing = tukehtuminen sivuuttamiseen
![Page 9: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/9.jpg)
CPU
• Ei oikeastaan ole ollut vuosiin mikään pullonkaula taloushallinnollisessa tietojenkäsittelyssä– "Intel giveth, Microsoft taketh away"– Lähinnä kustannuskysymys– keskuskoneratkaisuissa hyvinkin selkeä kipupiste
![Page 10: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/10.jpg)
Eräajot, verkko ja ”pilvi”
• Yksittäisen tiedoston suurin siirtonopeus voi olla hyvinkin suuri, mutta…
• Pilvipalvelut sittenkin eräepäystävällisiä– Siirtoviive, eli siirtopalvelun käynnistämiseen kuluva on
suuri, 10 – 100 ms. – Käytännössä eräajot eivät pysty käyttämään palveluita
”pilven” ylitse• poikkeus: toimii, jos prosessointi hajautetaan ja siirrettävä aineisto
jaellaan isoina kokonaisuuksina (Google - Map Reduce)
![Page 11: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/11.jpg)
Tiedostojärjestelmät
• Peräkkäistiedostot ovat erittäin nopeita, mutta voivat yllättää, kun– levyjärjestelmässä vapaa tila pirstoutunut– tiedoston tilavaraus ei kunnolla tiedossa ja
lisävaraukset epäkäytännöllisen kokoisia• Google käyttää tietomassojensa käsittelyyn
yksinomaan tiedostoja - ei tietokantoja– Hajautettu MapReduce menetelmä
![Page 12: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/12.jpg)
Death by Random I/O
• Tilanne, jossa hyvin suuri tietomassa käydään lävitse yksinomaan hajalukua käyttäen
• Oliotekniikoilla toteutetuissa eräohjelmissa, yleinen– John Cambell (IBM) kuvailee näitä ohjelmia
”luupissa” pyöriviksi tosiaikatapahtumiksi. – Yleismoduulit toteutettu usein tällä mallilla
![Page 13: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/13.jpg)
Yhteenveto laitteista
• SSD muistilaitteet lupaavia– mutta edelleen kalliita– kirjoittaminen hidasta
• Levylaitteet "still going strong"– hajakäsittelynopeus jatkuvasti heikko– suurien peräkkäistietomassojen käsittely nopeaa
• Keskusmuisti– nopeuden kannalta tärkein komponentti
![Page 14: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/14.jpg)
Virittämisen muistilista1. Varmistettava, että ajoympäristö on konfiguroitu
kunnolla2. Sijoitetaan mahdollisuuksien mukaan tiedot
keskusmuistiin3. Säännölliset huoltotoimenpiteet (Tree R's)4. Vähennetään ja optimoidaan I/O operaatiot5. Jaetaan työ rinnakkaisiin prosesseihin6. Varautuminen ohjelma- ja laitteistohäiriöihin7. Ohjelmistojen tehostaminen
![Page 15: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/15.jpg)
Tietokannan huoltotoimenpiteet
• Bonnie Bakerin tärkein ohje DB2:lle on englanninkielessä tunnetut perustaidot ”reading, 'riting and 'ritmetics” (lukeminen, kirjoittaminen ja laskento), tree R's eli kolmen ärrää:– REORG (Reading) - uudelleenorganisointi– RUNSTATS (’Riting)- tilastointi– REBIND (’Ritmetics) - uudelleensidonta
![Page 16: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/16.jpg)
Tehostaminen näkökulmat
• Tehostuksessa monta näkökulmaa1. Ylläpidollinen minimointi2. Vasteajan minimointi3. CPU:n minimointi
• yhden näkökulman suunnalta tehostaminen voi aiheuttaa toisen kustannuksen nousun
• tässä lopputyössä ajattelumalli oli täsmälleen vastakkaisessa järjestyksessä
![Page 17: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/17.jpg)
Lukitukset
• Aikaisemmin meillä oli eräikkuna, yksinomaan eräajoille pyhitetty aikajakso– mahdollisti taulujen lukitsemisen yhdelle eräajolle
• tehostaa ajoja• yksinkertaistaa logiikkaa
• Nyt vaatimuksena on 24 x 7 käytettävyys– joko sivutason lukitukset– tai optimistinen aikaleimapohjainen lukitus
![Page 18: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/18.jpg)
Lukitusstrategioiden vertailu
• Sivulukot ovat suositeltavia, kun kantaa käytetään kiivaasti (paljon online-käyttöä)
• ei päivitysten peruuttamista• vähemmän prosessointia• odottavista tapahtumista
suuri osa menee läpi
• Optimistinen lukitus on suositeltavaa, kun päivittäjiä on vähän
• kanta lukukäytössä kaiken aikaa
• mahdollistaa prosessoinnin useammalla peräkkäisellä stepillä
![Page 19: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/19.jpg)
Ohjelmoinnin ajatusmallit
• Imperatiivinen paradigma• "ensin tee näin ja sitten näin"• perinteinen ohjelmointi.
• Funktionaalinen paradigma• "ratkaise yhtälö ja käytä tulosta hyväksi"• kaikki ohjelmat ovat funktioita ja koostuvat funktioista
• Looginen paradigma• "tulos löytyy käymällä säännöt ja faktat lävitse"• SQL kieli noudattaa tätä paradigmaa
• Olio-orientoitunut paradigma• "lähetä viestejä eri olioiden välillä, näin muuttaen niiden tiloja"
![Page 20: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/20.jpg)
Olio-paradigma• Miten tietokantakäsittely
sijoittautuu olio-paradigman mukaisessa mallissa (Bjerg Jensen, 2006).
• Huomionarvoista tässä kuvassa on se, että resurssikerros on kokonaan alistettu liiketoimintakerrokselle. – Tämä on esteenä
resurssien kokonaisvaltaiselle optimoinnille.
![Page 21: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/21.jpg)
The Real Thing
![Page 22: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/22.jpg)
DB2 tehovinkkejä (1)• Käytä LOAD apuohjelmaa, jos voit
– LOAD … SHRLEVEL CHANGE vastaa toiminnallisesti lähes täysin ohjelmaa, jossa olisi INSERT + COMMIT lausepareja
• käyttökelpoinen vaikka keskellä päivää• nopeampi - mittausten perusteella 1/5 itse kirjoitetusta.• vie paljon vähemmän CPU:ta (toki aito LOAD vielä tuplasti
parempi)• Indeksitön aputaulu
– taulu, jossa ei indeksejä, on käytännössä peräkkäistiedosto.
• INSERT nopeus jopa kaksinkertainen, myös CPU kustannus puolitettu
• tilapäiseen tiedon tallentamiseen, kirjoitus esim. CICS tapahtumista ja käsittely eräajossa.
![Page 23: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/23.jpg)
DB2 tehovinkkejä (2)
• Tiedon hakeminen käyttämällä RID:ä. – jos johonkin tietoon pitää palata uudestaan,
voidaan se hakea käyttämällä RID-tunnistetta.• SELECT from DELETE, UPDATE tai INSERT
– ohjelmassa voidaan samalla lauseella lukea ja poistaa tietoa
• DELETE + SELECT + INSERT ei sentään toimi– jos olisi toiminut, olisi saanut tehtyä MOVE-lauseen…
![Page 24: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/24.jpg)
DB2 tehovinkkejä (3)
• Multi row FETCH– ohjelmallisesti vähän kömpelö toteuttaa– pitkällisen analysoinnin jälkeen vakuutusjärjestelmissä
vähän kohtia, jossa kannattaisi ottaa käyttöön (työmäärä vs säästöt)
– multi row SELECT voisi olla oikeasti näppärämpi
• singleton SELECT…FIRST 1 ROW ONLY– tälle löytyy paljon käyttöä– yksinkertaistaa koodia– ei kuitenkaan tuettuna GEN-kehittimessä vielä
![Page 25: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/25.jpg)
Tietokannan rakenne
• Eräajolle sopiva kannan rakenne– Cluster-järjestys käsittelyjärjestys– mahdollisimman paljon INSERT only piirteitä
• kun ajo on käsitellyt materiaalin, niin uudet lisäykset voitaisiin yksikertaisesti lisätä LOAD/SHRLEVEL CHANGE stepillä kantaan
• jos kannassa detaljiriveistä riippuvaisia tietoja, niin tällöin voidaan joutua merkitsemään rivit keskeneräisiksi
– esimerkiksi summarivit voidaan päivittää vasta kun kaikki detaljirivit kannassa - keskeneräinen tilanne on epäeheä
![Page 26: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/26.jpg)
Eräajon rakenne
Lukitseminen: aikaleimapohjainen optimistinen lukitus
Lukeminen: yksinomaan kannan cluster järjestyksessä
Käsitteleminen: yksittäinen tapaus ladataan muistiin tiedostosta ja INSERT sekä UPDATE tiedot kirjoitetaan tiedostoon
Päivitys: pääosin LOADilla javiimeistely ohjelmallisilla UPDATE lauseilla. Ne vakuutussopimukset, joihin on koskettu ohjelman alkuaikaleiman jälkeen, jätetään ennalleen.
![Page 27: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/27.jpg)
Ositettu eräajo• Jako useampaan steppiin järkevää
– testaaminen helpottuu– kannan palautusta ei tarvita missään muualla kuin
viimeisissä päivityksiä ja lisäyksiä tekevissä stepeissä
– testitiedostojen monistaminen helppoa• vaikein osuus, itse uudistaminen, pyörii
käytännössä lähes ilman tietokantaa– ajoja voidaan testata vaikka rinnakkain
![Page 28: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/28.jpg)
Autoturvan eräajot (1)
![Page 29: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/29.jpg)
Autoturvan eräajot (2)
• Onnistunut kokonaisuus– vaikka online-osaajille haastava ajattelutavan
muutos– vaatii ja vaatisi enemmän kouluttamista
• Ei kuitenkaan vallankumousta– Laskutus- ja reskontra palvelut, joita on pakko
käyttää päivittävässä stepissä, on kallis
![Page 30: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/30.jpg)
Pohdiskelua
![Page 31: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/31.jpg)
Miksi vain vähän hyviä eräajoja (1)
• Olio-ohjelmoinnin periaatteet• Äärimmilleen vedetyt projektit /
rakentamiskustannuksien minimointi• Valmisohjelmissa ei varauduta suuriin
massoihin• Modulaarisissa ratkaisuissa painopiste online-
toiminnoissa– eräohjelmat saavat luvan käyttää valmiita
moduuleita, jotka sopivat huonosti eräkäyttöön
![Page 32: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/32.jpg)
Miksi vain vähän hyviä eräajoja (2)• Taloudellinen lyhytnäköisyys
– elinkaaren aikaisia kustannuksia ei haluta ymmärtää– luullaan, että lisäämällä rautaa ongelmat poistuvat:
"Mooren laki" ratkaisee kaiken– ulkoiset toimittajat ja tarjouskilpailut: "halvimmat
tietojärjestelmät, maksoi mitä maksoi".• Maksaja eli liiketoiminta haluaa päättää ITSE
– mutta ei oikeasti osaa IT-teknologiaa– haluttomuus nähdä faktoja, jotka osoittavat
päätöksenteossa tulleita virheitä– rohkeutta korjata huonoja päätöksiä puuttuu (ja paljon)
![Page 33: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/33.jpg)
Käyttökulut vs rakentamiskustannukset
Ohjelma IS30Koostuu 53 moduulistaKunkin moduulin keskimääräinen koko on 60 riviäOhjelman yhteenlaskettu rivimäärä 31801000 rivin keskimääräinen hinta 5000 €Koodauskustannus n. 16.000 €Muu projektityö n. 32.000 €
Rakennuskustannukset n. 48.000 €Käyttökustannukset kuukaudessa 1.550 €.Sovelluksen arvioitu käyttöikä on 20 vuotta.
Käyttökustannukset n. 372.000 €Järjestelmän ylläpito 3.000 € vuodessa.
Ylläpito n. 60.000 €YHTEENSÄ 432.000 €
![Page 34: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/34.jpg)
Kokonaiskustannukset (1)
• Verrataan online moduuleista rakennettua eräohjelmaa ja valmiiksi erätehokkaaksi rakennettua ohjelmaa:Eräajotehokas ohjelmisto 11.300 riviä
Uudelleen käytettävät erä-I/O moduulit 4.800 riviäPäivitys ja lukitus logiikka 800 riviäVarsinainen logiikka 5.700 riviä
Tosiaika-moduuleista koottuna 11.860 riviäTosiaika I/O moduulit 6.160 riviäVarsinainen logiikka 5.700 riviä
![Page 35: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/35.jpg)
Kokonaiskustannukset (2)
• Verrataan online moduuleista rakennettua eräohjelmaa ja valmiiksi erätehokkaaksi rakennettua ohjelmaa:
Tehokkaan eräajon kustannukset verrattuna tosiaika-moduuleista koottuun.Hankintahinta +10 % -4.800 €Käyttökustannukset -80 % +297.600 €Kokonaiskustannukset -69 % +292.800 €
![Page 36: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/36.jpg)
Muita juttuja
![Page 37: Tehokkaat eräohjelmat](https://reader035.vdocuments.site/reader035/viewer/2022062310/568148ad550346895db5c04d/html5/thumbnails/37.jpg)
Googlen MapReduce?• Osa NoSQL hypeä
– NoSQL tarkoittaa yleisesti ei-relaationaalisia tietovarastoja• Patentoitu (!) framework
– Map -steppi tuottaa lajitellun tiedoston– Reduce -steppi lomittaa tiedostot ja kirjoittaa tulosjoukon
tiedostoon, mahdollista jatkokäsittelyä varten• Työ voidaan jakaa valtavaan määrään rinnakkaisia ja
peräkkäisiä prosesseja, framework sisältää logiikan, jolla hallitaan työn sisäisiä riipuvuuksia
• Hadoop on Javalla toteutettu open source projekti, joka hyödyntää samaa periaatetta.