Tekninen määrittely. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Koko: px
Aloita esitys sivulta:

Download "Tekninen määrittely. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy"

Transkriptio

1 Tekninen määrittely ETL-työkalu ExtraTerrestriaLs / Aureolis Oy Versio Päivämäärä Tekijä Muutos Timo Sallinen Ensimmäinen versio Jani Honkanen ETL-moottori Teemu Nousiainen Kuvauskieli Mikko Ruokojoki Rakenteellisia muokkauksia dokumenttiin Jani Honkanen Arkkitehtuuri Jani Malmi Toimenpiteiden yleiskuvausta Jani Honkanen Katselmoinnissa sovittuja korjauksia Teemu Nousiainen Kuvauskielen esimerkki liitteisiin Timo Sallinen Lisätty dokumentaatiogeneraattori, korjauksia Mikko Ruokojoki Pieniä korjauksia tehty Timo Sallinen Ajantasaistettu, lisätty uusia toimenpiteitä Timo Sallinen Korjauksia Risto Kunnas Korjauksia, lisätty ImportSql Sivu 1 / 21

2 Sisällysluettelo Tekninen määrittely Johdanto Dokumentin tarkoitus Sovelluksen yleiskuvaus Sanasto Arkkitehtuuri Johdanto Suunnitteluperiaatteet Toimenpiteet Toimenpiteiden parametrointi Toimenpiteiden käyttämä tietokantaluokka Java-pakettien nimeäminen Moduulit Kuvauskieli Rakenne Prosessikuvaus Konfiguraatio Projektimäärittely ETL-moottori Yleiskuvaus ETL-toimenpiteistä koostuvan prosessin esitysmuoto olioina Toimenpiteiden ajaminen ja ajojärjestyksen suunnittelu Rajapinta moottorin ja Javalla ohjelmoitujen toimenpidekomponenttien välillä ETL-prosessin aikana tapahtuvien virheiden hallinta Tietovaraston hallinta, lookup-toiminnot, Slowly Changing Dimensions Tietokantojen ja väliaikaisvarastojen hallinta Rajapinta prosessikuvauksen lataamiseen Rajapinta prosessin suorittamiseen ja konfiguroimiseen Dokumentaatiogeneraattorin tarvitsemien tietojen kerääminen ETL-prosessista Toimenpiteet Yleiskuvaus Uusien toimenpiteiden ohjelmoiminen Copy Insert Pivot Delete Export Join Filter ImportCSV Muita toimenpidekomponentteja Dokumentaatiogeneraattori Yleiskuvaus Lähtöaineiston kerääminen...18 Sivu 2 / 21

3 3.4.3 Aineiston käsittely Dokumentin tuottaminen Viitteet Liitteet Esimerkki kuvauskielestä Johdanto 1.1 Dokumentin tarkoitus Dokumentti määrittelee teknisen toteutuksen ETL-työkalulle, riittävällä tarkkuudella implementoinnin mahdollistamiseksi. Sovelluskomponenttien väliset rajapinnat kuvataan UMLluokkakaavioilla. Kohderyhmänä ovat projektiryhmä, asiakas ja tulevat sovelluskehittäjät. Järjestelmää suunnitellaan jonkin verran pidemmälle kuin on tarkoitus tämän projektin aikana toteuttaa. Tarkempi kuvaus tämän projektin aikana toteutettavista toiminnoista löytyy vaatimusmäärittelystä ja projektisuunnitelmasta. Lukijalla oletetaan olevan hyvät yleistiedot ETL-prosesseista ja tietovarastoinnista. 1.2 Sovelluksen yleiskuvaus Sovelluksen tarkka yleiskuvaus löytyy vaatimusmäärittelystä [1]. 1.3 Sanasto Sanasto löytyy vaatimusmäärittelystä [1]. 2 Arkkitehtuuri 2.1 Johdanto ETL-työkalu koostuu seuraavista komponenteista: Kuvauskieli, jolla suunnitellaan ETL-prosessi ETL-moottori, joka koordinoi prosessin suoritusta ETL-toimenpiteet, joita käytetään työkaluina ETL-prosessissa Dokumentaatiogeneraattori, jolla tuotetaan rakennekuvaus suunnitellusta ETL-prosessista Lisäksi lähdedatan lukeminen ja tietovaraston hallinta kuuluvat järjestelmään, mutta ETLtyökaluissa ne mielletään yleensä mieluummin osaksi samaa kokonaisuutta kuin erillisiksi komponenteiksi, riippuvuuksien takia. Tuotantokäytössä ETL-työkalu pyörii loppuasiakkaan koneella Java-prosessina, joka suorittaa ETLprosessin määrätyllä tavalla ja määrättyinä aikoina. Työkalu lukee asiakkaan tietojärjestelmiä, pääasiassa operatiivisia tietokantoja ja tiedostoja, sekä tuottaa prosessin tuloksen tietovarastoon. Kaikki prosessointi tapahtuu tavallisesti loppuasiakkaan tietokoneilla, käyttäen useampia tietokantoja ja mahdollisesti joitakin ulkoisia järjestelmiä (lähdedatan lukemiseen). Kunkin komponentin arkkitehtuuri on kuvattu tässä dokumentissa omassa luvussaan. Sivu 3 / 21

4 Kuva 1: Deployment-kaavio tuotannossa olevasta ETL-työkalusta Sivu 4 / 21

5 2.2 Suunnitteluperiaatteet Seuraavia yleisiä ohjenuoria pyritään noudattamaan koko suunnittelun ajan: Moduulijako pitää olla erittäin selkeä (tarkasti määritellyt rajapinnat), koska suunnittelussa on mukana monta ihmistä ja lisäksi kommunikointimahdollisuudet ovat heikot. Pitää keskittyä erityisen tarkasti järjestelmän runko-osiin, koska jatkokehitystä on tarkoitus tehdä paljon, myös räätälöidysti eri asiakkaille. Varotaan tekemästä työkalusta liian yleiskäyttöistä, koska markkinoilla on jo isojen firmojen suurella budjetilla tekemiä yleiskäyttöisiä ETL-työkaluja. Tehdään kevyt ( light-weight ) suunnittelutyökalu ja suunnataan se ainoastaan ohjelmointitaitoisten ihmisten käyttöön. 2.3 Toimenpiteet ETL-työkalu käyttää toimenpiteitä suorittamaan kannan transaktioita. Toimenpiteet muodostavat prosessin, jota ETL-moottori ohjaa. ETL-moottorin ja toimenpiteiden välillä käytetään rajapintaa, jossa välitetään tietoa mm. kannoista ja lähde ja kohdetauluista. Toimenpiteiden tarkemmat kuvaukset löytyvät tämän dokumentin kohdasta moduulit, kappale Toimenpiteiden parametrointi Toimenpiteiden parametrointi on kuvattu moduulien kappaleessa Toimenpiteiden käyttämä tietokantaluokka Toimenpiteet käyttävät tietokantaluokkaa, jonka kautta hoidetaan tietokantaan liittyvät toiminnot kuten tietokannan avaaminen ja sql-lauseiden ajaminen. 2.4 Java-pakettien nimeäminen Kaikki luokat ja paketit laitetaan com.aureolis.etltool-nimiavaruuden alle. Tämän alle luodaan funktionaalisesti jaettuja alipaketteja, joihin toiminnalliset luokat ja rajapinnat sijoitetaan. com.aureolis.etltool.database -tietokantojen käsittely com.aureolis.etltool.engine -etl-moottori com.aureolis.etltool.operation -toimenpiteet (operaatiot) com.aureolis.etltool.transfer -datan siirtäminen toimenpiteiden välillä com.aureolis.etltool.processlanguage -etl-prosessin kuvauskieli com.aureolis.etltool.docgen -dokumentaatiogeneraattorin pääpaketti 3 Moduulit 3.1 Kuvauskieli Kuvauskieli kuvaa ETL-prosessin, lähdeaineistot, kohdekannat ja toimenpiteet. Kuvauskielen toteutustavaksi valittiin projektin puitteista luotava XML-kieli. Syitä valintaan olivat: Helppo muokattavuus sekä käsin, että koneellisesti Voidaan käyttää olemassa olevia parseritoteutuksia (helppo validointi ja jäsennys) Sivu 5 / 21

6 Helppo dokumentoinnin generointi Kuvauskieli on määritelty XML-Scheman avulla, joka toimii lopullisena tarkkana kieliopillisena spesifikaationa. Tämän kappaleen tarkoitus on kielen esitteleminen yleisellä tasolla. Esimerkki kuvauskielestä löytyy liitteistä Rakenne Kuvauskieli jakautuu kolmeen osaan, moottorin konfiguraatioon, projektimäärittelyyn ja itse prosessin kuvaamiseen. Yhdessä tiedostossa ei tarvitse määritellä kaikkia näitä, vaan ne voidaan jakaa ylläpidollisesti loogisiksi kokonaisuuksiksi eri tiedostoihin Prosessikuvaus Prosessikuvaus rakentuu joukosta toimenpiteitä, jotka käyttävät toistensa tuloksia syötteinään. On myös määritelty erikseen toimenpiteet, jotka hakevat dataolioita (tauluja) työskentelytilaan ja niitä, jotka vievät prosessin tuotteet tietovarastoon. Jokaisella prosessilla on oma id:nsä (yksilöivä nimi). Yksi prosessi käyttää aina yhtä työskentelytietokantaa. Toimenpiteiden lisäksi prosessista voidaan kutsua aliprosesseja määritetyillä parametreilla. Aliprosessille voidaan määrittää oma työskentelytietokanta. Usein käytetyistä aliprosesseista voidaan täten laatia yleiskäyttöisiä kirjastoja Konfiguraatio Konfiguraatiossa määritellään käytettävät tietokannat ja prosessien ajastus. Jokaiselle käytettävälle tietokannalle määritellään yhteysasetusten (sis. URL, käyttäjätunnus, tyyppi ja salasana) lisäksi id, johon prosessikuvauksen toimenpiteet viittaavat. Ajastus toteutetaan UNIXin crontab:in tyyppisesti, eli prosessin käynnistämisajankohta määritellään viikonpäivien, kuukausien, päivien jne. perusteella. Jokainen ajastuselementti viittaa käynnistettävän prosessin nimeen Projektimäärittely Projektimäärittelyä käytetään koko ETL-moottorin konfiguroimiseen. Se sisältää viittaukset konfiguraatiotiedostoon ja prosessikuvaustiedostoihin. 3.2 ETL-moottori Yleiskuvaus ETL-moottorin päätehtävänä on suorittaa annettu ETL-prosessi ja tuottaa prosessin lopputulos tietovarastoon. Oleellisia osia moottorissa ovat: ETL-toimenpiteistä koostuvan prosessin esitysmuoto olioina Toimenpiteiden ajaminen ja ajojärjestyksen suunnittelu Rajapinta moottorin ja Javalla ohjelmoitujen toimenpidekomponenttien välillä ETL-prosessin aikana tapahtuvien virheiden hallinta Tietovaraston hallinta, lookup-toiminnot, Slowly Changing Dimensions Tietokantojen ja väliaikaisvarastojen hallinta Rajapinta prosessikuvauksen lataamiseen Rajapinta prosessin suorittamiseen ja konfiguroimiseen Dokumentaatiogeneraattorin tarvitsemien tietojen kerääminen ETL-prosessista Sivu 6 / 21

7 3.2.2 ETL-toimenpiteistä koostuvan prosessin esitysmuoto olioina Prosessi kuvataan moottorin sisällä verkkona, jossa solmut vastaavat toimenpiteitä ja solmut on kytketty toisiinsa sen mukaan, minkä toimenpiteiden tuloksia kukin toimenpide käyttää syötteenään. Prosessin ajon aikana OperationNode-luokka vastaa yhtä tällaista solmua ja sisältää viittauksen EtlOperation-olioon, jossa on varsinainen toimenpiteen toteutus. OperationNode-oliossa on lista edeltävistä ja seuraavista solmuista, sekä InputArguments-rakenne, johon kerätään syötetaulut sitä mukaa kun edeltäviä toimenpiteitä saadaan suoritettua. Solmulla on myös nimi, mutta sitä ei käytetä solmun tunnistamiseen vaan ainoastaan debug-viesteissä ja väliaikaistauluja luotaessa. Lisäksi nimi voi olla null. Prosessin voi suorittaa vain kerran, minkä jälkeen se on ladattava kuvaustiedostosta uudestaan (mm. OperationNode ja EtlOperation -oliot ovat kertakäyttöisiä). Mutta jos nähdään tulevaisuudessa tarvetta suorittaa prosessi useampaan kertaan ilman latausta, voidaan toteuttaa toinen vastaavanlainen toimenpidegraafi, jossa jokainen solmu sisältää EtlOperationFactory-olion. Kuva 2: Prosessin rakenteen kuvaamiseen liittyvät luokat (moottorin sisäinen esitystapa) Sivu 7 / 21

8 3.2.3 Toimenpiteiden ajaminen ja ajojärjestyksen suunnittelu ProcessRun-olio vastaa yhtä prosessin suorituskertaa ja sisältää ajojärjestyksen koordinointiin liittyvän koodin. ProcessRun aloittaa prosessin käynnistämällä joukon sellaisia toimenpiteitä, jotka eivät käytä syötteenä mitään toista toimenpidettä (yleensä nämä ovat asiakkaan lähdedataa lukevia toimenpiteitä). Toimenpiteen suoritusta varten luodaan OperationExecutor-olio, joka käynnistää toimenpiteen erillisessä säikeessä ja ilmoittaa lopulta tuloksen ProcessRun:lle. Kukin toimenpide voidaan suorittaa aikaisintaan silloin, kun kaikki sen syötteenä käyttämät toimenpiteet on saatu suoritettua. Ajojärjestyksen suunnittelu ja aikataulutus voidaan eriyttää myöhemmin toiseen luokkaan, jos tarvetta ilmenee. ProcessRun ei tee erityistä aikataulutusta tai toimenpiteiden priorisointia, mutta on suunniteltu siten, että näitä ominaisuuksia voidaan myöhemmin lisätä Rajapinta moottorin ja Javalla ohjelmoitujen toimenpidekomponenttien välillä Kun moottori päättää suorittaa toimenpiteen, se kutsuu ko. toimenpiteen run()-metodia. Argumentteina annetaan syötetaulut ja paluuarvona saadaan tulostaulut sekä tietoja tapahtuneista virheistä. EngineServices-luokka sisältää moottorin tarjoamia palveluita, joilla toimenpidekomponentti pääsee käsiksi työtietokantoihin sekä muihin tarpeellisiin moduuleihin. Moduulit ovat nimettyjä olioita, jotka luodaan konfiguraatiotiedoston perusteella ja jotka auttavat toimenpidekomponentteja prosessin suorittamisessa. Moduuleihin voi kuulua esim. tietojen lukemista tietovarastossa olevista lookup-tauluista tai jostain ulkoisesta järjestelmästä. Sivu 8 / 21

9 Kuva 3: Rajapinta moottorin ja toimenpidekomponenttien välillä InputArguments ja OperationResult sisältävät yhden tai useamman viittauksen tietokantatauluihin, jotka toimivat toimenpiteen syötteenä/tuloksena. Näiden rakenteesta kerrotaan tarkemmin kohdassa Tämä rajapinta on tarkoitus pitää sellaisena, että toimenpidekomponenteissa mahdollisesti olevat ohjelmointivirheet haittaisivat mahdollisimman vähän järjestelmän toimintaa. Tämä siksi, että toimenpidekomponentteja voi lopullisessa työkalussa olla paljon (kymmeniä) ja uusia toimenpiteitä on lisäksi tarkoitus ohjelmoida räätälöidysti asiakasprojekteissa ETL-prosessin aikana tapahtuvien virheiden hallinta Yleisesti ETL-prosessin pitää pystyä jatkumaan lähdedatassa olevista virheistä huolimatta. Lähdedatassa olevia virheitä pyritään suodattamaan erityisillä puhdistustoimenpiteillä (projektikohtaisesti). Lisäksi toimenpidekomponentit saattavat tuottaa virheitä, jos toimenpidettä ei pystytä ajamaan johtuen lähdetauluissa tai niiden riveissä olevista virheistä. Toimenpidekomponenteille tarjotaan mahdollisuus kirjata tällaisia virheitä virhelokiin, joka on käytännössä tietovarastossa sijaitseva taulu. Lisäksi toimenpide voi tuottaa virhetaulun aivan Sivu 9 / 21

10 samaan tapaan kuin tavallisen tulostaulun, ja tätä virhetaulua voidaan edelleen käsitellä ETLprosessissa. Toimenpidekomponentti palauttaa tuloksen mukana tietoja tapahtuneista virheistä ja niiden vakavuudesta, minkä perusteella moottori päättää, voidaanko prosessia jatkaa. On myös mahdollista, että tietokantayhteys katkeaa tai sattuu joku muu tilapäinen häiriö. Tähän varaudutaan tallentamalla prosessin välituloksia sopivin väliajoin (määritelty käsin prosessikuvauksessa) ja mahdollistamalla prosessin käynnistys jostain välituloksesta alkaen. Välituloksella tarkoitetaan sellaista taulujoukkoa, joka sisältää kaikki seuraavaksi ajettavien toimenpiteiden tarvitsemat syötetaulut. Moottori varautuu lisäksi joihinkin toimenpidekomponenteissa oleviin ohjelmointivirheisiin: Toimenpiteen edistymistä tarkkaillaan getprogress-metodilla. Näin huomataan, onko toimenpide jäänyt jumiin. Väliaikaisten tietokantataulujen poistaminen hoidetaan keskitetysti, jotta ne eivät jää kantaan roikkumaan prosessiajon jälkeen Tietovaraston hallinta, lookup-toiminnot, Slowly Changing Dimensions Tietovaraston käsittelyä ei ole tarkasti suunniteltu, mutta varastoon kirjoittaminen tulee tapahtumaan etupäässä siihen tarkoitetuilla toimenpidekomponenteilla (rivien / taulujen lisääminen ja päivittäminen varastoon). Tietovarastossa olevan (vanhan) tiedon lukeminen prosessin aikana toteutetaan luultavasti myös toimenpidekomponenteilla ja/tai Javalla tehdyllä moduuleilla, joita voidaan kutsua mistä tahansa kohdasta ETL-prosessia Tietokantojen ja väliaikaisvarastojen hallinta ETL-prosessin aikana käytetään välitulosten tallentamiseen väliaikaisia tietokantatauluja, jotka luodaan tarvittaessa ja tuhotaan prosessin päättymisen jälkeen. Moottori tarjoaa toimenpidekomponenteille seuraavia väliaikaistauluihin liittyviä palveluita: Halutunmuotoisten taulujen luonti Taulujen nimien valitseminen (törmäysten estämiseksi) Toimenpiteen tulostaulujen automaattinen droppaaminen sitten, kun niitä ei enää käytetä Toimenpiteen sisäisten väliaikaistaulujen droppaaminen heti toimenpiteen päätyttyä Valmiita toimintoja taulujen kopiointiin, tuomiseen toisesta tietokannasta jne. Taulujen lukuoikeuksien hallinta ja taulujen monistaminen (jos samaa taulua käyttää syötteenä useampi toimenpide, joista osa haluaa tehdä muutoksia suoraan ko. tauluun) Moottorin väliaikaistaulujen hallinnointiin tarkoitetut WorkingDatabaseManager, WorkingDatabase ja WorkingTable käyttävät hyväkseen yleisempiä DatabaseManager ja Database -luokkia. SqlTableolio taas on pelkkä viittaus jossakin kannassa olevaan tauluun, eikä Database-luokka pidä erikseen kirjaa ko. tietokannassa olevista tauluista. Yhtä fyysistä taulua kohti voi siis olla olemassa useampia SqlTable-olioita. Toimenpidekomponentin ei ole tarkoitus käsitellä Working-luokkia suoraan missään tilanteessa, vaan niitä käytetään moottorissa sisäisesti. Toimenpidekomponentti käyttää EngineServicesluokassa olevia palvelumetodeja. Sivu 10 / 21

11 Kuva 4: Työtietokantojen hallintaan liittyvät luokat Tietokannassa olevaan tauluun viitataan SqlTable-luokalla, joka sisältää taulun nimen ja tietokannan lisäksi kuvauksen taulun muodosta (SqlTableFormat) sekä loogisen taulunimen, jota käytetään debug-viesteissä ja muissa vastaavissa tarkoituksissa (ei kuitenkaan taulun tunnistavana nimenä). SqlTableFormat sisältää luettelon taulun sarakkeiden nimistä ja tyypeistä, listan primary key -sarakkeista ja joukon indeksejä Rajapinta prosessikuvauksen lataamiseen Tarkoituksena on eriyttää moottori kuvauskielitiedoston lataajasta, jotta kuvauskieli ja sen esitysmuodon yksityiskohdat voivat vaihdella ilman että moottoria tarvitsee muuttaa. Kuvauskielen lataajakomponentti syöttää prosessin moottorille ProcessBuilder-olion kautta, joka sisältää metodit mm. toimenpidekomponenttien lisäämiseen ja niiden linkittämiseen. Lisäksi lataajakomponentin tehtävä on luoda EtlOperationFactory-oliot ja antaa niille konfiguraatioparametrit. Kuvauskielessä määritellyn prosessin ei tarvitse vastata rakenteeltaan kovin tarkasti moottorin sisäisesti käyttämää muotoa, vaan kuvauskielen lataajakomponentti voi esimerkiksi lisätä joitakin toimenpiteitä ilman, että prosessin suunnittelija on niitä erikseen kuvauksessa maininnut. Tällaisia toimenpiteitä voivat olla esimerkiksi taulujen automaattinen kopiointi työkantojen välillä tai indeksien poistaminen tilapäisesti raskaan lisäysoperaation ajaksi. Sivu 11 / 21

12 3.2.9 Rajapinta prosessin suorittamiseen ja konfiguroimiseen Prosessin ajamiseen liittyvät toiminnot löytyvät pääasiassa ProcessRun-luokasta ja konfiguroimiseen liittyvät toiminnot tämän lisäksi ProcessBuilder-luokasta. Prosessien ajastettuun ajoon ja konfiguraatioon liittyvät suunnitelmat löytyvät kuvauskielen schema:sta Dokumentaatiogeneraattorin tarvitsemien tietojen kerääminen ETLprosessista Moottoriin tullaan toteuttamaan mm. seuraavien tietojen kerääminen prosessista: Toimenpideverkon rakenne Toimenpiteiden nimet, tyypit ja kuvaukset Kunkin toimenpiteen syöte/tulostaulujen rakenne (kaikissa tapauksissa rakennetta ei voi ennustaa tarkasti ennen prosessin ajoa, koska se riippuu lähdedatasta) Käytetyt väliaikaistietokannat Ei ole tässä vaiheessa määritelty, jääkö näiden tietojen kerääminen moottorin vai kuvauskieliparserin tehtäväksi. Moottoria tähän voidaan tarvita esimerkiksi silloin, jos halutaan kuvaukset tulostaulujen rakenteesta ja sisällöstä jollakin annetulla esimerkkilähdedatalla. 3.3 Toimenpiteet Yleiskuvaus Toimenpiteet ovat yhtenäisen rajapinnan toteuttavia Java-komponentteja, jotka suorittavat datan käsittelyyn liittyviä tehtäviä ( transformations ). Toteutettavia perustoimenpiteitä ovat: Copy Insert / append Update Aggregate (sum, count, min, max, average ja näitä käyttävät lausekkeet) Rajaus (where) Lookup (tietovarastotauluista lukeminen. Useita toimenpiteitä? SCD?) Sarakkeiden tyyppien ja sarakeleveyksien muunnos, taulun ja sarakkeiden muodon tarkistus Join (left / right / full) Pivot / unpivot (samankaltaisten sarakkeiden yhdistäminen) Distinct (duplikaattien poisto) Merge (samankaltaisten rivien yhdistäminen, liittyy datan puhdistukseen) Union, intersection, difference (joukko-opillisen operaatiot) Indeksien luominen / poistaminen Delete, taulun tai rivien poisto Sivu 12 / 21

13 Jokainen Javalla tehty toimenpidekomponentti toteuttaa EtlOperationFactory-luokan, jolle välitetään prosessin latausvaiheessa sellaiset parametrit, jotka pysyvät vakiona prosessin suorituskertojen yli. Joka kerta kun prosessi ajetaan, moottori luo factory-luokkien create()-metodia kutsumalla jokaisesta toimenpidekomponentista EtlOperation-rajapintaa toteuttavan olion, jonka tehtävä on suorittaa toimenpide juuri kyseisen prosessiajon aikana. Kun toimenpide on määrä suorittaa, moottori antaa sille joukon viittauksia edeltävien toimenpiteiden tuottamiin tauluihin (usein vain yhden taulun) InputArguments-luokassa. Toimenpidekomponentti voi kutsua moottorin palveluja luodakseen omaan käyttöön väliaikaisia tauluja sekä joukon tulostauluja, joihin se kirjoittaa lopullisen tuloksensa. Toimenpidekomponentin ei yleensä tarvitse murehtia taulujen nimien valinnoista (törmäysten välttämisestä) tai väliaikaisten taulujen poistamisesta. Toimenpidekomponentti palauttaa tuloksensa OperationResult-oliossa, joka sisältää tulostaulujen kuvauksen lisäksi tietoa toimenpiteen aikana tapahtuneista virheistä. Lähdedatassa olevat virheet tulee toimenpiteiden yleensä tunnistaa ja tuottaa niistä virheilmoitukset moottorin virheidenhallintajärjestelmää varten. Tietokantayhteyksien katketessa tai konfiguraatiovirheen sattuessa taas toimenpidekomponentti heittää poikkeuksen, minkä jälkeen moottori saattaa yrittää (osa)prosessin suoritusta uudelleen. Alla on kuvaukset suunnitelluista toimenpidekomponenteista ja niiden ominaisuuksista Uusien toimenpiteiden ohjelmoiminen Toimenpidekomponentteja luodaan sekä tämän projektin aikana että räätälöidysti eri asiakkaita varten. Toimenpidekomponentin luominen tehdään seuraavasti: Suunnittele komponentti (parametrit, syötteet, tulokset, toiminta, virhetilanteet jne.) ja kirjoita siitä samanlainen kuvaus kuin allaolevissa toimenpidekomponenttien kuvauksissa. Suunnittele samalla, miten toimenpidekomponentti kuvataan kuvauskielessä. Räätälöityjä komponentteja varten ei yleensä kannata tehdä muutoksia kuvauskieleen. Tee komponentille Java-pakkaus. Jos kyseessä on työkaluun liitettävä yleiskäyttöinen komponentti, pakkaus tulee luoda com.aureolis.etltool.operation-pakkauksen alle. Jos kyseessä on asiakasprojektiin tehty räätälöity komponentti, voidaan käyttää jotain projektikohtaista pakkausnimeä (tai laittaa samaan pakkaukseen muiden toimenpiteiden kanssa). Tee EtlOperationFactory:n toteuttava luokka. Tähän luokkaan ei yleensä pidä laittaa mitään muuttuvia attribuutteja, vaan ainoastaan konfiguraatiotietoa, joka pysyy vakiona olion olemassaolon ajan. Samaa EtlOperationFactory-oliota voidaan käyttää useiden prosessiajojen ajan. Tee EtlOperation:n toteuttava luokka, jonka instanssin EtlOperationFactory.create()-metodi luo. Tätä EtlOperation:n toteuttamaa oliota käytetään vain yhden prosessiajon ajan ja sen jälkeen se hylätään, eikä moottori käytä samaa oliota enää seuraavassa prosessiajossa (vaan luo uuden create()-metodilla). Luokan toteutuksessa kannattaa ottaa mallia olemassaolevista toimenpidekomponenteista ja hyödyntää moottorin palveluita mahdollisimman tehokkaasti. Jos kyseessä on ETL-työkaluun kuuluva yleiskäyttöinen toimenpidekomponentti, tee tarvittavat muutokset kuvauskieleen ja lataajakomponenttiin. Sivu 13 / 21

14 3.3.3 Copy Kuvaus Parametrit Syötteet Tulos Mitä tietokantatyyppejä tuetaan? Voidaanko ajaa suoraan tietokannan sisällä? Muokkaako suoraan syötetauluja? Osaako käsitellä useita tietokantoja ilman raskasta kopiointia? Tulostaulujen avaimet ja indeksit Virhetilanteet - Tekee kopion lähdetaulusta/tauluista. String targetdatabase: tietokanta, johon taulut kopioidaan. Oletuksena tehdään kopiot kustakin taulusta siihen kantaan, jossa taulu tällä hetkellä on. Vain yksi argumentti (nimellä ei väliä), joka sisältää kopioitavan taulun (SqlTable) tai taulujoukon (SqlTableGroup). Uusi taulu (SqlTable) tai uudet taulut (SqlTableGroup), jotka ovat samanmuotoisia ja -sisältöisiä kuin lähdetaulut. Kaikki. Kyllä. Ei. - Eivät muutu Insert Kuvaus Parametrit Syötteet Tulos Mitä tietokantatyyppejä tuetaan? Voidaanko ajaa suoraan tietokannan sisällä? Muokkaako suoraan syötetauluja? Lisää kaikki lähdetaulussa olevat rivit kohdetauluun. Kohdetaulun ei tarvitse olla tyhjä, mutta rakenteeltaan sen on oltava yhteensopiva lähdetaulun kanssa. Ei ole. from: taulu, josta rivit luetaan (oltava SqlTable). into: taulu, johon rivit lisätään (oltava SqlTable). Taulu ei saa sisältää rivejä, joiden primary key on sama kuin jonkin lisättävän rivin. Sama taulu, joka annettiin argumenttina into. Tauluun lisätään kaikki from-taulun rivit. Kaikki. Vain sisäkkäisiä kyselyjä tukevilla tietokannoilla. Kyllä. Sivu 14 / 21

15 Osaako käsitellä useita tietokantoja ilman raskasta kopiointia? Tulostaulujen avaimet ja indeksit Virhetilanteet Ei. Jos from-taulu ei ole samassa kannassa kuin into-taulu, se kopioidaan sinne ennen toimenpiteen suoritusta. Into-taulun indekseihin ei tehdä muutoksia. Jos taulujen rakenteet eivät ole yhteensopivia tai tulee primary key -törmäys, koko operaatio epäonnistuu Pivot Kuvaus Parametrit Syötteet Tulos Mitä tietokantatyyppejä tuetaan? Generoi jokaisesta lähdetaulun rivistä tietyn määrän rivejä. Jos lähdetaulussa on esimerkiksi erikseen sarakkeet jokaisen kuukauden myyntituloja varten, voidaan niiden sijaan tehdä kohdetauluun sarake, joka kertoo kuukauden nimen ja toinen sarake, joka kertoo ko. kuukauden myynnin (jokaisesta lähdetaulun rivistä muodostuu silloin 12 kohdetaulun riviä). - String locatorcolumnname: kohdetauluun tulevan uuden sarakkeen nimi, jonka sisältö kertoo, mitä lähdetaulun saraketta käyttäen rivi tuotettiin (esim. kuukausi). - String locatorcolumntype: em. sarakkeen tyyppi. - String valuecolumnname: kohdetauluun tulevan uuden sarakkeen nimi, joka sisältää lähdetaulusta poistetussa sarakkeessa olleen arvon (esim. kuukauden myynti). - String valuecolumntype: em. sarakkeen tyyppi. - String[] sourcecolumns: lähdetaulussa olevien sarakkeiden nimet, jotka muutetaan riveiksi. - Object[] locatorcolumnvalues: jokaista lähdetaulun (muutettavaa) saraketta vastaava arvo, joka kirjoitetaan locatorcolumnnamesarakkeeseen kohdetaulussa. Näiden arvojen pitää olla JDBC:n hyväksymää tyyppiä (ks. esim. PreparedStatement.setObject). Yksi taulu Yksi taulu Kaikki Sivu 15 / 21

16 Voidaanko ajaa suoraan tietokannan sisällä? Muokkaako suoraan syötetauluja? Osaako käsitellä useita tietokantoja ilman raskasta kopiointia? Tulostaulujen avaimet ja indeksit Virhetilanteet Vain sisäkkäisiä kyselyjä tukevilla tietokannoilla. Ei Ei Primary keyt ja uniikit indeksit poistetaan. Tavalliset (ei-uniikit) indeksit, jotka koskevat vain muuttumattomia sarakkeita, pysyvät ennallaan. Muuttuneita sarakkeita koskevat indeksit poistetaan Delete Kuvaus Syötteet Parametrit Osaako käsitellä useita tietokantoja ilman raskasta kopiointia? Muokkaako suoraan syötetauluja? Virhetilanteet Poistaa syötetaulusta joko yksittäisiä rivejä tai koko taulun. String: filter, jos annettu poistetaan rivit ehdon mukaan, muuten poistetaan koko taulu. Ei päde Kyllä Export Kuvaus Parametrit Syötteet Muokkaako suoraan syötetauluja Tulostaulujen avaimet ja indeksit Virhetilanteet Vie syötetalun tietovarastoon. Validoi haluttaessa syötteen taulurakenteen suhteessa kuvauskielessä määriteltyyn. String : outputname kohdetaulun nimi boolean : droptable, jos tosi dropataan olemassaolevataulu, muuten appendoidaan Yksi SQL-taulu ei Kopioidaan sellaisenaan Sivu 16 / 21

17 3.3.8 Join Kuvaus Parametrit Syötteet Muokkaako suoraan syötetauluja Tulostaulujen avaimet ja indeksit Virhetilanteet Yhdistää kaksi tai usemman taulun. String : outputname kohdetaulun nimi JoinCondition. Liitos-tapa 2..n kpl sql-tauluja ei Ei toteutettu Jos löytyy rivejä, joita ei voida liittää, laitetaan nämä virhetauluun Filter Kuvaus Parametrit Syötteet Muokkaako suoraan syötetauluja Tulostaulujen avaimet ja indeksit Virhetilanteet Suodattaa taulusta rivejä annetun ehdon perusteella String : outputname kohdetaulun nimi String : condition: ehto sql-syntaksin mukaisena esitettynä Yksi SQL-taulu ei Kopioidaan sellaisenaan syötetaulusta ImportCSV Kuvaus Parametrit Syötteet Muokkaako suoraan syötetauluja Tulostaulujen avaimet ja indeksit Importoi prosessiin CSV-muotoisen tekstitiedoston, josta luodaan tilapäinen SQLtaulu String : outputname -kohdetaulun nimi Database : targetdatabase kohdekanta URL sourceuri : CSV:tiedoston lähdeuri SqlTableFormat: tulostaulun formaatti, sisältää indeksit ja avaimet (kuvauskielessä destinationtableformat ja destinationtableindices) Char : separaattori CVS-tiedosto, voidaan lukea myös verkon yli ei Määritellään kuvauskielessä Sivu 17 / 21

18 Kuvaus Virhetilanteet Importoi prosessiin CSV-muotoisen tekstitiedoston, josta luodaan tilapäinen SQLtaulu Tiedostoa ei saada luettua keskeyttää suorituksen Formaatti on väärä keskeyttää suorituksen ImportSQL Kuvaus Parametrit Syötteet Muokkaako suoraan syötetauluja Tulostaulujen avaimet ja indeksit Virhetilanteet Importoi prosessiin SQL-taulun, josta luodaan prosessin käyttämä tilapäinen SQL-taulu String : outputname -kohdetaulun nimi Database : targetdatabase kohdekanta (työskentelykanta) String: sourcename: -lähdetaulun nimi Database: sourcedatabase - lähdekanta ei Haetaaan lähdetaulusta Taulua ei löydy Yhteyttä kantaan ei saada Muita toimenpidekomponentteja Lähes kaikki perustoimenpiteet on suunniteltu alustavasti, mutta käyttäen vanhempaa versiota moottorirajapinnasta kuin yllä kuvatut toimenpiteet. Nämä suunnitelmat löytyvät toimenpiteiden alustavasta suunnitelmasta [2]. 3.4 Dokumentaatiogeneraattori Yleiskuvaus Dokumentaatiogeneraattori luo automaattisesti dokumentaation prosessikuvauksen perusteella. Prosessista luodaan visuaalinen relaatiomallin mukainen kuvaus. Dokumentaation pohjana käytetään prosessikuvaustiedostoa ja tilanteesta riippuen ETL-moottorilta saatavia lisätietoja, kuten väliaikaisten taulujen ominaisuudet. ETL-prosessidokumentaatioon liitetään seuraavat tiedot: Toimenpiteiden tyyppi Toimenpiteiden muodostama verkko (riippuvuudet) Toimenpiteiden syöte- ja tulostaulut (väliaikaiset prosessin aikaiset taulut) Dokumentaatiogeneraattori on periaatteessa itsenäinen komponentti, mutta toiminnallisesti apuna käytetään muita komponentteja, näistä tärkeimpänä kuvauskieliparseria. Sivu 18 / 21

19 3.4.2 Lähtöaineiston kerääminen Dokumentaation muodostaminen aloitetaan prosessikuvauksesta, tästä generoidaan parserilla vastaavanlainen oliorakenne (verkko), kuten ETL-moottorissa. Toiminnallisesti varaudutaan siihen, että dokumentaatio voidaan generoida käyttämällä lähteenä pelkästään prosessikuvausta. Jos dokumentaation halutaan tieto käytetyistä väliaikaista tauluista ja prosessin ajon aikana muodostuvista parametreista (esim taulujen nimistä), täytyy tieto kysyä ETL-moottorilta prosessin ajon jälkeen. ETL-moottorin täytyy tallentaa tarvittavat prosessin aikaiset tiedot solmuihin (OperationNode), tai tarjota ne jonkin rajapinnan kautta siten, että tieto voidaan liittää oikeaan toimenpiteeseen. Prosessin ajon jälkeen toimenpiteiden muodostama verkko käydään läpi ja siitä poimitaan tiedot käytetyistä tauluista. OperationNode-verkko, joka sisältää nyt kaiken informaation lähetetään varsinaiselle generaattorille, joka muokkaa sen haluttuun loppumuotoon. Tämän rajapinnan tulee olla sellainen, että tuotettavan dokumentaation loppuformaatti on parametroitavissa, käytännössä komponenttia vaihtamalla.. Toimenpideverkko käydään läpi jollakin algoritmilla lähtöaineistosta tietovarastoon päin. Toimenpiteiden tosiasiallisella suoritusjärjestyksellä (joka määräytyy prosessin ajon aikana) ei ole merkitystä, kunhan toimenpiteiden keskinäinen järjestys pysyy oikeana. Relaatiomallliin kuvataan toimenpiteet syöte- ja tulostauluihin. Toimenpiteiden tulostauluista osoitetaan viittaus siihen toimenpiteeseen, jonka syöte tämä on Aineiston käsittely Dokumentaatiogeneraattorin rajapinta on suunniteltu siten, että varsinaisen kohdemuodon toteuttava implementaatio voidaan vaihtaa, tarvittaessa vaikka dynaamisesti. Kaikki implementaatiot toteuttavat yhtenäisen rajapinnan, joka määrittelee metodit alustukselle ja graafin solmujen lisäämiseksi. Toteutetaan tässä vaiheessaa JFrame-pohjainen graafinen esitys, sekä tekstipohjainen XML-muoto Dokumentin tuottaminen Dokumentaation loppumuotoja voivat olla mm.: PDF HTML SVG Generaattorin pitää osata ottaa huomioon mahdollisen formaatin / median tuottamat rajoitteet (esimerkiksi A4-paperikoko) relaatiomallin visuaalista esitystä muodostettaessa. Relaatiomallin esitys tuotettaneen tässä vaiheessa SVG-formaatissa. XML-pohjaisena tämä mahdollistaa joustavan ohjelmallisen generaation. Lisäksi vektorimalli soveltuu tarkoitukseen erinomaisesti. 4 Viitteet [1] T Vaatimusmäärittely ExtraTerrestriaLs / Aureolis Oy [2] Toimenpiteiden_alustava_suunnitelma.sxw Sivu 19 / 21

20 5 Liitteet 5.1 Esimerkki kuvauskielestä <?xml version="1.0" encoding="utf-8"?> <etl xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="skema strom.xsd"> <!-- Tämä esimerkki pohjautuu seuraavanlaiseen tietokantaan (alleviivatut ovat avaimia): Tuote(_tkoodi_, kuvaus, hinta) Myymala(_mtunnus_, osoite) Myynti(tkoodi, mtunnus, ajankohta) ; Jokaista myytyä tuotetta kohden yksi rivi. ETL-prosessi muodostaa päivittäisen snapshotin myydyistä tuotteista, ja muodostaa tietovarastoon taulun, joka kertoo menneen vuorokauden myynnin tuotteittain ja myymälöittäin. --> <etlprocess name="myynnit1" workingdatabaseid="tyokanta"> <operations> <!-- Haetaan aluksi kopiot tauluista "snapshotmaisesti" operationaalisesta kannasta --> <importsql name="tuotteet" sourcetable="tuote" sourcedatabaseid="kirjanpito"/> <importsql name="myymalat" sourcetable="myymala" sourcedatabaseid="kirjanpito"/> <importsql name="myynnit" sourcetable="myynti" sourcedatabaseid="kirjanpito"/> DAY)"/> <!-- Suodatetaan viimeisimmän vuorokauden aikana myydyt tuotteet --> <filter name="viimeisimmat" source="myynnit" where="ajankohta >= (now() - INTERVAL 1 <call name="myynnit" file="esimerkki3_sub.xml"> <!-- source taas viittaa tässä tiedostossa olevaan toimenpiteen nimeen, argumentin nimeä taas käytetään aliprosessitiedostossa --> <argument name="tuot" source="tuotteet"/> <argument name="myym" source="myymalat"/> <argument name="myyn" source="myynnit"/> </call> <!-- source:ssa mainitaan nyt aliprosessin nimi ja pisteen jälkeen ko. aliprosessin sisällä olevan operaation nimi --> <export source="myynnit.myyntituotteittain" destinationdatabaseid="tietovarasto" destinationtable="paivanmyyntituotteittain"/> <export source="myynnit.myyntimyymaloittain" destinationdatabaseid="tietovarasto" destinationtable="paivanmyyntimyymaloittain"/> </operations> </etlprocess> <!-- Määritellään ETL-prosessissa käytettävät tietokannat --> <configuration> <database id="kirjanpito"> <url>jdbc:mysql://database.firma.com/kirjanpito</url> <type>mysql</type> <username>teemu</username> <password>d3f0lrpbmq</password> </database> <database id="tyokanta"> <url>jdbc:mysql://dw.firma.com/workdb</url> <type>mysql</type> <username>teemu</username> <password>d3f0lrpbmq</password> </database> <database id="tietovarasto"> <url>jdbc:mysql://dw.firma.com/dw</url> <type>mysql</type> <username>teemu</username> <password>d3f0lrpbmq</password> </database> <!-- Määritellään prosessien ajastus - tämä voisi olla käytännössä eri tiedostossa --> <timing> <timedprocess processname="myynnit1"> <parameters/> <!-- Lauantaina --> Sivu 20 / 21

Tekninen määrittely. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Tekninen määrittely. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy Tekninen määrittely ETL-työkalu ExtraTerrestriaLs / Aureolis Oy Versio Päivämäärä Tekijä Muutos 0.1 13.11.2004 Timo Sallinen Ensimmäinen versio 0.2 25.11.2004 Jani Honkanen ETL-moottori 0.3 26.11.2004

Lisätiedot

ETL-DEMO. Esimerkki ETL-kuvauskielen käyttöstä

ETL-DEMO. Esimerkki ETL-kuvauskielen käyttöstä ETL-DEMO Esimerkki ETL-kuvauskielen käyttöstä Lähtötilanne Organisaation operatiivisessa kannassa dataa, jota halutaan varastoida ja jalostaa Päätetään mihin muotoon jalostettu data halutaan tietovarastossa

Lisätiedot

Tekninen määrittely. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Tekninen määrittely. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy Tekninen määrittely ETL-työkalu ExtraTerrestriaLs / Aureolis Oy Versio Päivämäärä Tekijä Muutos 0.1 13.11.2004 Timo Sallinen Ensimmäinen versio 0.2 25.11.2004 Jani Honkanen ETL-moottori 0.3 26.11.2004

Lisätiedot

T-76.115 Testiraportti TR-2. ETL-työkalu

T-76.115 Testiraportti TR-2. ETL-työkalu T-76.115 Testiraportti TR-2 ETL-työkalu ExtraTerrestriaLs Versio Päivämäärä Tekijä Kuvaus 1.0 07.02.05 Risto Kunnas Ensimmäinen versio 1.1 08.02.05 Risto Kunnas Lisätty liitteet Sivu 1 / 11 Sisällysluettelo

Lisätiedot

T-76.115 Testiraportti TR-3. ETL-työkalu

T-76.115 Testiraportti TR-3. ETL-työkalu T-76.115 Testiraportti TR-3 ETL-työkalu ExtraTerrestriaLs Versio Päivämäärä Tekijä Kuvaus 1.0 14.03.05 Risto Kunnas Ensimmäinen versio 1.1 15.03.05 Risto Kunnas Korjauksia Sivu 1 / 14 Sisällysluettelo

Lisätiedot

T-76.115 Vaatimusmäärittelydokumentti. ETL-työkalu

T-76.115 Vaatimusmäärittelydokumentti. ETL-työkalu T-76.115 Vaatimusmäärittelydokumentti ETL-työkalu (Aureolis Oy) Sivu 1 (20) T-76.115 Vaatimusmäärittelydokumentti ETL-työkalu ExtraTerrestriaLs Versio Pvm Tekijä 0.1 19.10.2004 Jani Malmi Alustava versio

Lisätiedot

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

Lisätiedot

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy Sivu 1 (15) Kehitysohje ETL-työkalu Versio Pvm Tekijä Kuvaus 0.1 15.1.2005 Timo Sallinen Ensimmäinen versio 0.2 26.1.2005 Timo Sallinen Täydenetty pohjaa 0.3 06.02.2005 Mika Suvanto Pieniä täydennyksiä

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36 !!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,

Lisätiedot

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Teknillinen korkeakoulu 51 Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Versio Päiväys Tekijä Kuvaus 0.1 21.11.01 Oskari Pirttikoski Ensimmäinen versio 0.2 27.11.01 Oskari Pirttikoski Lisätty termit

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

17 BUDJETOINTI. Asiakaskohtainen Budjetti. 17.1 Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust. 17.1.1 Yleistä

17 BUDJETOINTI. Asiakaskohtainen Budjetti. 17.1 Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust. 17.1.1 Yleistä 17 Asiakaskohtainen Budjetti 17.1 Ylläpito-ohjelma 17.1.1 Yleistä BudgCust Ohjelmalla avataan järjestelmään asiakaskohtaisia budjetteja, jotka annetaan kuukausitasolla (oletus). 17.1.2 Parametrit Ohjelmaa

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty: 2015-03-28

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty: 2015-03-28 Webforum Version 15.1 uudet ominaisuudet Päivitetty: 2015-03-28 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Dokumentit... 5 Uudet versiot dokumenttien katseluohjelmista ipadille... 5 Dokumenttien

Lisätiedot

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

Visual Case 2. Miika Kasnio (C9767) 23.4.2008

Visual Case 2. Miika Kasnio (C9767) 23.4.2008 Visual Case 2 Miika Kasnio (C9767) 23.4.2008 Työn tarkasti: Jouni Huotari 24.4.2008 1 SISÄLTÖ 1. TYÖN LÄHTÖKOHDAT... 2 2. PERUSTIEDOT... 2 3. ASENTAMINEN... 2 4. OMINAISUUDET... 3 4.1. UML-kaaviot... 4

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita. Arkkitehtuurikuvaus Käytössä olevat java-luokat: Kansio: /WEB_INF/classes/ - käännetyt luokat Kansio: /WEB_INF/src/ - lähdekoodi custom_pojos: Kurssi.java Java-luokka, jonka sisältö vastaa tietokannassa

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Asiointipalvelun ohje

Asiointipalvelun ohje Asiointipalvelun ohje Yleistä 1. Kirjautuminen 2. Yhteystiedot 3. Vastaustavan valinta 1. Yleistä 2. Palkkatietojen lataaminen tiedostosta 4. Lomake 1. Yleistä 2. Linkit ja vastaajan tiedot 3. Lomakekäsittely

Lisätiedot

1. Uuden Ilmon käytön eroavaisuudet vanhasta Ilmosta lyhyesti

1. Uuden Ilmon käytön eroavaisuudet vanhasta Ilmosta lyhyesti Sisällysluettelo 1. Uuden Ilmon käytön eroavaisuudet vanhasta Ilmosta lyhyesti... 2 Huomattavaa kurssin tietojen täyttämisessä!... 2 2. Kurssikuvauksen ja muiden opiskelijoille näkyvien kurssitietojen

Lisätiedot

Testidatan generointi

Testidatan generointi Testidatan generointi Anu Ahonen Kevät 2008 Tämä työ on tehty Creative Commons -lisenssin alla Työn tarkasti 9.4.2008 Jouni Huotari (JAMK/IT) 1 SISÄLTÖ 1 TYÖN LÄHTÖKOHDAT JA TOTEUTUS...2 2 TESTIDATAN GENEROINTI

Lisätiedot

Testitapaukset - Siirtoprotokolla

Testitapaukset - Siirtoprotokolla Testitapaukset - Siirtoprotokolla Versio Päiväys Tekijä Kuvaus 0.2 22.03.02 Ville Vaittinen Ajankohtaistettu versio Sisällysluettelo 2. Siirtotiedoston testitapaukset... 3 2.1 Siirtotiedoston luonti...

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

OPI-Maksut - Käyttötapaukset

OPI-Maksut - Käyttötapaukset OPIMaksut Käyttötapaukset Toiminnallisuudet ja käyttötapaukset: maksupalvelutoiminnot Toimeksiannon lisääminen Palveluväylä toiminto: Toimeksiannon lisääminen Yleiskuvaus Palveluväylään sallitut asiointisovellukset

Lisätiedot

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Esimerkkinä Excel-taulukkona ladattavat Helsingin pysäköintilippuautomaatit Viimeksi muokattu 27. huhtikuuta

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN 18 MUIHIN JÄRJESTELMIIN Prospekti DAFOon rakennettu liittymiä muiden ohjelmiston toimittajien järjestelmiin. Tässä yhteydessä ei tarkoiteta siirtotiedoston muodostamista, kuten reskontraan siirto tai lappujen

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset

Lisätiedot

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien Monen taulun kyselyt FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: SELECT FROM Tuloksena on taululistassa lueteltujen taulujen rivien karteesinen

Lisätiedot

Fakta versio 5.3.0.1069 Forecast versio 1.3.0.53

Fakta versio 5.3.0.1069 Forecast versio 1.3.0.53 1 (7) Fakta versio 5.3.0.1069 versio 1.3.0.53 Ohessa on luettelo uusista ja muuttuneista toiminnoista ja ominaisuuksista version x.2.1 jälkeen. Porautuminen saldoista tapahtuariveille.. Jako on mahdollista

Lisätiedot

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu JÄRJESTELMÄN KÄYTTÖOHJE LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 1.1 Tila: hyväksytty Päivämäärä: 13.2.2001

Lisätiedot

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely. XML prosessointi Miten XML dokumentteja luetaan ja kirjoitetaan XML prosessori lukee ja välittää XML dokumentin sovellukselle. Se sisältää entieettikäsittelijän (mahdollisesti) XML jäsentimen Sovellus

Lisätiedot

SOLIDPDM 6 Plus uudet ominaisuudet osa 2

SOLIDPDM 6 Plus uudet ominaisuudet osa 2 SolidPDM 6 Plus 1 (8) SOLIDPDM 6 Plus uudet ominaisuudet osa 2 SolidPDM 6 Plus -versioon on lisätty uusia ominaisuuksia. Tämä dokumentti on jatkoa aiemmin ilmestyneelle SolidPDM uudet ominaisuudet julkaisulle,

Lisätiedot

NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS PALVELIMELLE

NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS PALVELIMELLE NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS PALVELIMELLE Ennen palvelinohjelman asennusta perustetaan tarvittavat kansiot. Oikeustasoista share- tai security-tason oikeudet riittävät; molempien oikeustasojen

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

FUNKTIOITA. Sisällysluettelo

FUNKTIOITA. Sisällysluettelo Excel 2013 Funktioita Sisällysluettelo FUNKTIOITA FUNKTIOITA... 1 Keskiarvo-funktio... 1 Minimi ja maksimi... 1 Lukumäärä... 1 IF-funktio (JOS)... 2 IF-funktion tekeminen funktioluettelon avulla... 2 IF-funktio,

Lisätiedot

Sähköposti ja uutisryhmät 4.5.2005

Sähköposti ja uutisryhmät 4.5.2005 Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer

Lisätiedot

Harjoitustyö 3 - Millosemeni

Harjoitustyö 3 - Millosemeni Harjoitustyö 3 - Millosemeni Tampereen kaupunki tarjoaa avoin data -sivuillaan Tampereen joukkoliikenteen aikataulut, reitit sekä rajapinnan joukkoliikenteen reaaliaikaiseen seurantaan. Näinpä erilaisille

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

Projektisuunnitelma. Projektin tavoitteet

Projektisuunnitelma. Projektin tavoitteet Projektisuunnitelma Projektin tavoitteet Projektin tarkoituksena on tunnistaa erilaisia esineitä Kinect-kameran avulla. Kinect-kamera on kytkettynä tietokoneeseen, johon projektissa tehdään tunnistuksen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6 Webforum Version 14.4 uudet ominaisuudet Viimeisin päivitys: 2014-12-6 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Yleistä & hallinnointi... 5 Dokumentit... 5 Perättäinen tarkistus- ja hyväksymisprosessi...

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Taulukkolaskennan perusteet Taulukkolaskentaohjelmat

Taulukkolaskennan perusteet Taulukkolaskentaohjelmat Taulukkolaskennan perusteet Taulukkolaskentaohjelmat MS Excel ja LO Calc H6: Lomakkeen solujen visuaalisten ja sisältöominaisuuksien käsittely ja soluviittausten perusteet Taulukkolaskennan perusteita

Lisätiedot

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010 SQLite selvitysraportti Juha Veijonen, Ari Laukkanen, Matti Eronen Maaliskuu 2010 Opinnäytetyö Kuukausi Vuosi 1 SISÄLTÖ 1. YLEISTÄ SQLITE:STA... 2 2. HISTORIA... 2 3. SQLITEN KÄYTTÖ... 3 3.1 SQLiten asennus

Lisätiedot

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi

Lisätiedot

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi. Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 4.3.2015, H. Laine Tehtävien mukana jaetaan sql-syntaksin tiivistelmä. Kirjoita kuhunkin erilliseen vastauspaperiin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................

Lisätiedot

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 29.2.2012 (vastauksia) Liitteenä on tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastauspaperiin kurssin

Lisätiedot

VeRan laboratoriotietojen siirtoformaatti

VeRan laboratoriotietojen siirtoformaatti FCG Finnish Consulting Group Oy VERA TOIMINTAOHJEET Rev./pvm 1.03 Hyväksytty 30.4.2010 Sisältö Käyttö Vastuuhenkilö VeRan tiedonsiirtoformaatti Laboratoriot, jotka toimittavat tulokset suoraan VeRaan.

Lisätiedot

KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille

KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille KServer Etäohjaus 1 (5) KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille Palvelimen toteutuksen ollessa versio 1.0, spesifikaation versio 1.0.0. 2009, Riku Eskelinen/ KServer Software Development

Lisätiedot

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI Tarkastellaan Tietokannan fyysistä suunnittelua Menetelmän vaihetta 4 Looginen suunoitelma muutetaan toimiviksi tauluiksi Id enimi snimi muuta 1 Aki Joki xxx

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri

Lisätiedot

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sisällysluettelo VIP Laajennettu raportointi... 3 Luo raportti Laajennetun raportoinnin työkaluilla... 4 Avaa Laajennettu raportointi... 4 Valitse

Lisätiedot

SQL:N PERUSTEET MARKKU SUNI

SQL:N PERUSTEET MARKKU SUNI SQL:N PERUSTEET MARKKU SUNI Relaatiomallisen tietokannan käsittely Tietojen saanti, talletus ja päivitys tapahtuu SQL-kielellä Yhtä operaatiota sanotaan kyselyksi (query) Kyselyjä voidaan laittaa peräkkäin

Lisätiedot

Access-kyselyt. Luetteloinnin kehittämispäivä 13.12.2012 Mia Kujala

Access-kyselyt. Luetteloinnin kehittämispäivä 13.12.2012 Mia Kujala Access-kyselyt Luetteloinnin kehittämispäivä 13.12.2012 Mia Kujala Ennen kuin aloitat MS Access on asennettu Oracle ODBC-ajuri on asennettu C:\Voyager\Access Reports\Reports.mdb > Voyager-taulut on linkitetty

Lisätiedot

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)] Tällä viikolla Kertaus SQL-asioista jatketaan SQL-tekstifuntio-harjoituksia tehdään pelifirman tietokannasta ER-malli MySQL:llä, tarkastellaan mallin toimivuutta ja korjataan, jos korjattavaa löytyy, tehdään

Lisätiedot

Taulukkolaskennan perusteet Taulukkolaskentaohjelmat

Taulukkolaskennan perusteet Taulukkolaskentaohjelmat Taulukkolaskennan perusteet Taulukkolaskentaohjelmat MS Excel ja LO Calc H6: Lomakkeen solujen visuaalisten ja sisältöominaisuuksien käsittely ja soluviittausten perusteet Taulukkolaskennan perusteita

Lisätiedot

Aineistosiirron testauksen aloituksen ohje Trafin sopimuskumppaneille

Aineistosiirron testauksen aloituksen ohje Trafin sopimuskumppaneille TraFin ulkoinen integraatio Aineistosiirron testauksen aloituksen ohje Trafin sopimuskumppaneille Ohje 26.2.2014 Versio 1.1, Hyväksytty Luottamuksellinen Vastuutaho Trafi MUUTOSHISTORIA Versio Päiväys

Lisätiedot

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3 Uutisjärjestelmä Vaatimusmäärittely Versio 1.3 Sisällys 1 Muutoshistoria... 4 2 Viitteet... 4 3 Sanasto... 4 3.1 Lyhenteet... 4 3.2 Määritelmät... 4 4 Johdanto...5 4.1 Järjestelmän yleiskuvaus... 5 4.2

Lisätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Vaatimusmäärittely Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Versio Päiväys Tekijä Kuvaus 0.1 12.10.01 Pekka Koskinen Ensimmäinen luonnos 0.2 17.10.01 Pekka Koskinen Lisätty vaatimuksia

Lisätiedot

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

Webforum. Version 15.3 uudet ominaisuudet. Päivitetty: 2015-09-21

Webforum. Version 15.3 uudet ominaisuudet. Päivitetty: 2015-09-21 Webforum Version 15.3 uudet ominaisuudet Päivitetty: 2015-09-21 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Alustan otsikointi... 5 Alustan otsikoinnin uusi ryhmittely käyttäjän kuvalla... 5 Aloita

Lisätiedot

Climecon MagiCADliitosohjelma

Climecon MagiCADliitosohjelma Käyttöohje Climecon MagiCADliitosohjelma Versio 2011.11.1 Sisältö Luku 1. Yleistä 3 Ohjeen sisältö...3 Ohjelman asentaminen...3 Vaaditut ohjelmistot... 3 Asennus... 3 Ohjelman käynnistäminen...5 Luku 2.

Lisätiedot

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO JOUNI HUOTARI 2005-2010 OLAP-OHJETEKSTIT KOPIOITU MICROSOFTIN OHJATUN OLAP-KUUTION TEKO-OHJEESTA ESIMERKIN KUVAUS JA OLAP-MÄÄRITELMÄ

Lisätiedot

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä OLAP-kuution teko Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta Esimerkin kuvaus ja OLAP-määritelmä Tavoitteena on luoda OLAP-kuutio Northwind-tietokannan tilaustiedoista

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi Versiohistoria: Versio: Pvm: Laatijat: Muutokset: 0.1 2006-11-25 Janne Mäkelä Alustava 1.0 2006-12-10 Janne Mäkelä Valmis 1.

Lisätiedot

Luento 4. Timo Savola. 21. huhtikuuta 2006

Luento 4. Timo Savola. 21. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 4 Timo Savola 21. huhtikuuta 2006 Osa I Shell Lausekkeet Komentoriville kirjotettu komento on lauseke echo "foo" echo $USER MUUTTUJA=1 ls -l Rivinvaihto

Lisätiedot