Tartu Ülikool Andmetöötluskeel "Tutorial D" realisatsiooni "Rel" põhjal Referaat aines Tarkvaratehnika Romet Piho Informaatika 2 Juhendaja Indrek Sander Tartu 2005
Sissejuhatus Tänapäeval on niinimetatud relatsioonilised andmebaasid saanud domineeriva rolli andmete salvestamisel ja lugemisel. Andmebaasi tooted nagu Microsoft SQL Server, Oracle, DB2, MySQL ja PostgreSQL baseeruvad programmeerimiskeelel SQL. Kuigi algselt SQL püüdles olla standardkeeleks relatsioonilistele andmebaasidele, on ta tegelikult vastuolus sellega. Selle tulemusena peaks relatsioonilise andmebaasi silti, mis enamikule SQL toodetele on lisatud, pidama erinevaks või isegi sobimatuks sõna relatsiooniline kasutuseks. Võib arvata, et tüüpiline täieliku relatsioonilisuse puudumine ning veel mõned puudused on põhjustanud levinud arvamuse, et relatsioonilised andmebaasid on vigased või puudulikud, kui tegelikult on SQL ise vigane ning täielikult relatsioonilisi andmebaase praktilisele polegi On olnud mitmeid katseid luua tõelist rakendust relatsioonilisele andmebaasimudelile, aga ükski ei ole saanud edukaks. Rel on üks hiljutisi katseid seda teha. 1
Taust SQL saab küll lugematutes rakendustes oma tööga hakkama, aga selle puudused omavad negatiivset effekti produktiivsusele. On väiksed ebamugavused, nagu näiteks peab mõningaid päringuid kirjutama SELECT * FROM mingitabel kui mingitabel peaks olema piisav kogu tabeli ridade ja veergude kättesaamiseks. Suuremad puudused: Ebajärjekindel või imelik süntaks. Ekslik ja mitterelatsiooniline sõltuvus veergude järjestusest. Ebaloomulik või ootamatu käitumine NULL-ide või topeltridade tõttu. Enamikes rakendustes relation (tabeli) või tuple (rea) muutujate puudulikkus. Teatud võimsate operaatorite puudulikkus. Nende puuduste tõttu põhjustab SQL-i kasutamine aja ja raha kaotust. Tavaline vastulause alternatiivide kasutamise vastu on, et SQL on standard. Samas praktikas kasutab peaaegu iga SQL edasimüüja oma lisasid ja variatsioone. Selle tulemusena on tekkinud mittestandartsete SQL-keelte üleküllus, mis teeb SQL standardi väite kaheldavaks. Isegi kui kõik kasutaks standartset SQL-i, oleks sellel ülaltoodud puudused. Alternatiivi SQL-le on pakkunud C. J. Date ja Hugh Darwen ning selle nimi on "Tutorial D". Rel on praegu pooleliolev andmebaasi rakendus, mis kasutab Tutorial D süntaksi. Koos moodustavad Rel ja Tutorial D täielikult relatsioonilise alternatiivi SQL-le. Praeguses pooleliolevas olekus on Rel sobiv täieliku relatsioonilisuse mõiste uurimiseks ning on peaaegu valmis praktiliseks õpetamisvahendiks. 2
Arhitektuuri ülevaade Rel server koosneb mitmest tähtsast osast: Java Virtual Machine, mis toetab funktsioonide deklareerimist ja käivitamist, lihtsate tehete arvutamist, voo (flow) kontrolli, tüüpe, staatiliste tüüpide kontrollimist ja muutujaid. SleepyCat Software Java versioon Berkeley DB-st kasutatuna salvestusmasinana. Rel kernel, mis rakendab relatsioonilist algebrat ja liideseid suhtluseks salvestusmasinaga ning kompileerib ning käivitab Tutorial D konstruktsioone. Keele interpretaator, mis tunnistab Tutorial D süntaksit ning suhtleb Rel kerneliga, et käsitleda Tutorial D koodi ning saavutada soovitud tulemusi. Seansi ja ühenduste haldaja, mis korraldab suhtlust klientide ja keele interpretaatori vahel. Iga uue klendi jaoks tehakse uus seanss ning seansid on üksteisest sõltumatud ja jagavad vaid relval-e teiste käimasolevate seannsidega. Rel mootori poolt genereeritud vastused väljastatakse Tutorial D süntaksi kasutades. Näiteks RELATION {TUPLE {x 1, y "fish"}, TUPLE {x 2, y "zap"}} annab vastuseks RELATION {x INTEGER, y CHAR} { TUPLE {x 1, y "fish"}, TUPLE {x 2, y "zap"}} Rel tunneb ära Tutorial D konstruktsioone, mis on spetsifitseeritud The Third Manifestos ning lisaks veel alternatiivset süntaksi, mis on spetsifitseeritud Date i "An Introduction to Database Systems". Tarkvara koosneb kahest Java rakendusest: Rel andmebaasiserver ja interaktiivne klient nimega DBrowser. 3
Kitsendused ja tulevik Kuna on tegemist veel poolelioleva tööga, on osad funksioonid kasutusele võtmata ning paljude kasutuses võib tekkida tulevikus muudatusi. Tutorial D spetsifikatsioon ei kirjelda paljusid praktilisi omadusi nagu turvalisus, salvestamise ja varukoopiate majandamine, andmebaasi haldamine, vigade haldamine jne. Tulevased versioonid sisaldavad neid, seega muutes Rel-i praktiliseks alternatiiviks SQL-le. Lisaks peaks tulevased versioonid ka lubama ligipääsu SQL andmebaasidele. 4
Kokkuvõte Rel on käimasolev projekt teha tõeline relatsiooniline andmebaasiserver, mis põhineb relatsioonilisel keelel Tutorial D. Valmisolevana oleks ta heaks alternatiiviks SQL-le, mille paljud puudused põhjustavad aja aja raha kaotust. Alternatiivide kasutuselevõtt tõstaks arendajate tootlikkust ja tarkvara usaldatavust ning seega säästaks aega ja raha. 5
Kasutatud kirjandus http://dbappbuilder.sourceforge.net/rel.html http://thethirdmanifesto.com/ http://en.wikipedia.org/wiki/relational_model http://en.wikipedia.org/wiki/sql 6