4-Tietokantaohjelmointi Teuhola Tietokantasovellusten ohjelmointi Taustaa 4.1. Relaatioskeemaa täydentäviä piirteitä 4.2. Sulautettu SQL, Java + SQL = SQLJ 4.3. Ohjelmointirajapinnat 4.4. Web-tietokantasovellusten ohjelmointi
4-Tietokantaohjelmointi Teuhola Taustaa Peruskäyttäjät eivät käytä SQL:ää, vaan räätälöityjä sovelluksia ja käyttöliittymiä. Nämä pitää toteuttaa (ohjelmoida) erikseen. Yhdellä SQL-lauseella voi harvoin kuvata koko sovellusta. Sovellus koostuu yhdestä tai useammasta transaktiosta, joista kukin sisältää yhden tai useampia keskenään riippuvia lauseita ja lisäksi kontrollirakenteet. Transaktio on atominen käsittely-yksikkö, eli se pitää joko suorittaa kokonaan loppuun tai peruuttaa keskeneräinen suoritus.
4-Tietokantaohjelmointi Teuhola Esim. tilisiirto pankin järjestelmässä Tilit Tilisiirto: 100 € tililtä 111 tilille vaiheinen transaktio: UPDATE Tilit SET Saldo = Saldo – 100 WHERE TiliNo = 111; UPDATE Tilit SET Saldo = Saldo WHERE TiliNo = 333; TiliNoNimiSaldo 111Aalto Laine Virta3000
4-Tietokantaohjelmointi Teuhola Riskit ilman transaktioiden käyttöä Rinnakkaiset tapahtumat voivat muuttaa samaa tietoa ja sotkea tietokannan sisällön. Toipuminen virhetilanteista voi jäädä puolitiehen. Tilisiirtoesimerkki: –Jos toinen vaihe epäonnistuu, myös ensimmäinen pitäisi peruuttaa. Sisällyttämällä lauseet samaan transaktioon ensimmäinen vaihe peruutetaan automaattisesti.
4-Tietokantaohjelmointi Teuhola Sovellusohjelmointivaihtoehdot (1)Erikoistunut tietokantaohjelmointikieli, kuten Oraclen PL/SQL tai PostgreSQL:n PL/pgSQL. (2)Olemassaolevan ohjelmointikielen laajennus ‘sulauttamalla’ (embedding) siihen SQL. (3) Aliohjelma-/luokkakirjastojen käyttö kutsumalla niitä normaalista ohjelmointikielestä käsin. Kirjastot noudattavat standardeja rajapintoja. Jatkossa tarkastellaan kutakin vaihtoehtoa, mutta kurssin kannalta (3) on keskeisin.
4-Tietokantaohjelmointi Teuhola Kielten yhteensopimattomuudesta Engl. ‘impedance mismatch’ Tietokantajärjestelmän ja ohjelmointikielen käyttämät tietotyypit saattavat poiketa (ed. vaihtoehdot (2) ja (3)). SQL on joukoilla (taulut, rivit) operoiva kieli, kun taas ohjelmointikielet käsittelevät tietoa yleensä alkeistasolla. Tarvitaan jokin mekanismi (iteraattori tai vastaava), joka käy taulukkorakenteen läpi. Oliotietokannat ja oliokielet ovat lähempänä toisiaan. ORM (Object-Relational Mapping) -työkaluilla voidaan helpottaa yhteensopimattomutta (-> ‘persistent objects’)
4-Tietokantaohjelmointi Teuhola Viittaukset yhteiseen dataan Sulautetussa ratkaisussa SQL-lauseilla ja ohjelmointikielen lauseilla voi olla yhteisiä muuttujia. Tyyppiyhteensopivuus on tärkeää. Aliohjelma-/luokkakirjastoja käytettäessä data välittyy syöttö-/tulosparametrien kautta. Asiakassovelluksen on valittava oikeanlaiset parametrityypit ja metodit niiden käsittelyyn.
4-Tietokantaohjelmointi Teuhola Ohjelmistoarkkitehtuurit 2-kerrosarkkitehtuuri: 3-kerrosarkkitehtuuri: AsiakasTietokanta- palvelin SQL Tulos- relaatiot AsiakasTietokanta- palvelin SQL Tulos- relaatiot Sovellus- palvelin Käsittely- pyyntö Vastaus
4-Tietokantaohjelmointi Teuhola Tietokantasovelluksen suoritusvaiheet 2-kerrosarkkitehtuurissa Asiakassovellus (client) muodostaa yhteyden tietokantapalvelimeen (server). Asiakassovellus lähettää jonon kyselyitä ja/tai päivityspyyntöjä palvelimelle, joka vastaa kuhunkin erikseen. Asiakas käsittelee vastaukset. Kunkin käsittelykokonaisuuden (transaktion) jälkeen sovellus lähettää palvelimelle joko vahvistus- (commit) tai peruutuspyynnön (rollback). Lopuksi asiakassovellus sulkee yhteyden palvelimeen.
4-Tietokantaohjelmointi Teuhola Työnjako 3-kerrosarkkitehtuurissa Asiakasohjelmisto kommunikoi käyttäjän kanssa (= käyttöliittymä) ja lähettää pyyntöjä sovellus- palvelimelle. Sovelluspalvelin suorittaa varsinaisen laskennan käyttäen tietokannan palveluita. Tietokantapalvelin on vastaava kuin 2-kerros- arkkitehtuurissa.