Täna on laupäev 05.07.2025.
Teated ja oluline info

Aine uus kodulehekülg koos aktuaalse informatsiooniga asub http://maurus.ttu.ee/354
Lisaeksamile saab hakata registreeruma alles peale hinde sissekandmist põhieksami lehele või üliõpilase mitteilmunuks märkimist (mis juhtub hiljemalt 22-24 jaanuar 2016).
Pean ka tõdema seda, et 19. jaanuar ja 20. jaanuar on mul kogu päeva eksamid ja nende päevade jooksul on minu võimalused projekte üle vaadata väga piiratud, et mitte öelda olematud. Seega - vaatan saadetud projektid üle esitamise järjekorras, niipalju kui jõuan. Kelle tööd ei jõua üle vaadata, see peab eksamit tegema 27. jaanuaril (eeldusel, et projekt ületab lävendi). Mida varem oma töö esitate, seda suurem on tõenäosus, et jõuan selle siiski järgmise nädala eksamiks üle vaadata.
Kui tunnete, et ei jõua järgmisel nädalal eksamile, siis võtke palun ÕISist enda registreerumine maha.
INSERT INTO Isik AS I (isikukood, perenimi) VALUES ('39909090123','Mets')
ON CONFLICT (isikukood) DO UPDATE
SET perenimi = EXCLUDED.perenimi
WHERE I.isikukood = '39909090123';
Lisa isik. Kui on sellise isikukoodiga isik, siis muuda perenime.
Soovin kõigile kauneid pühi!
Tuletan meelde, et projekti esitamise võimalus pole sellega lõppenud.
- 20. detsember 2015 – 26. detsember 2015 esitatud töö saab hilinemise eest 5 miinuspunkti
- 27. detsember 2015 – semestri lõpp esitatud töö saab hilinemise eest 10 miinuspunkti
Palun pange ennast ÕISis sobivale eksamiajale kirja. Projektide ülevaatamisel vaatan esimeses järjekorras nende projekte, kes tulevad varasematele eksamitele.
Projekti vaatan ise üle ja saate minult täidetud hindamismudeli faili.
Kõige viimase versiooni kordamisküsimustest panen välja hiljemalt 22. detsembril.
Soovin kõigile ilusat pühadeootust!
Tsitaat: "In this post, we’ll see that Mongo’s consistency model is broken by design: not only can “strictly consistent” reads see stale versions of documents, but they can also return garbage data from writes that never should have occurred. The former is (as far as I know) a new result which runs contrary to all of Mongo’s consistency documentation. The latter has been a documented issue in Mongo for some time. We’ll also touch on a result from the previous Jepsen post: almost all write concern levels allow data loss."
Mis on sellise või teiste samalaadsete süsteemide kasutamise tulemus? NoSQL Meets Bitcoin and Brings Down Two Exchanges: The Story of Flexcoin and Poloniex.
Lõpetuseks veel mõtteavaldusi MongoDB kohta. Pange tähele, et paljudel arvajatel leidub häid sõnu PostgreSQLi kohta.
Kokkuvõte: Artikkel kirjutab, miks on hajusal andmebaasil põhinevad infosüsteemid kasulikud globaalse haardega meedia või meelelahutusettevõtetele (televisiooni või filmikompaniid, mängude tootjad jne). Saateid salvestakse, filmivõtteid tehakse või mänge kirjutatakse üle maailma ja ka osalised paiknevad ümber maailma. Samamoodi paiknevad ümber maailma nende ettevõtete toodangu kasutajad. Artiklis intervjueeritakse meediaettevõtetele ja meelelahutustööstusele teenuseid pakkuva firma TransLattice asutajat. Intervjueeritav on seisukohal, et selliste globaalse haardega ettevõtete korral on hajus andmebaas õige lähenemine ning pakub ettevõttele konkurentsieelist. Andmed saab paigutada lõppkasutajatele lähemale. Seetõttu paraneb süsteemi reaktisooniaeg ning on lihtsam salvestada kõiki lõppkasutaja tegevusi. Vajadusel saab andmetest teha erinevatesse asukohtadesse koopiaid või siis otsustada, et mingeid andmed ei sobi tundlikuse tõttu hoida mingis ühes geograafilises asukohas ja tuleks paigutada kuhugi mujale. Või siis vastupidi, mingid andmed on nii tundlikud, et neid saab hoida vaid tekkimise kohas. Koopiad andmetest parandavad käideldavust, võimalus hoida andmeid ainult ühes kohas võimaldab tegeleda privaatsuse küsimustega, andmete paigutamine lõppkasutajatele lähedale võimaldab parandada süsteemi jõudlust. Ettevõte saab paljude eraldiseisvate andmebaaside "kohale" globaalse vaate üle kõigi nende andmebaaside. TransLattice näeb hajusa andmebaasi kasutamise suure eelisena seda, et väga detailsete transaktsiooniliste andmete salvestamisel saab need paigutada tekkimiskohale lähedal asuvasse andmebaasi. Süsteemi reaktsiooniaeg on parem ning kuna andmed on laiali erinevates kohtades, siis ei teki ka ühte kohta töötlemiseks ja hoidmiseks liiga suurt andmehulka. Kui soovitakse neid transaktsioonilisi andmeid analüüsida, siis saab koormuse jagada erinevate serverite vahel.
Kuigi NoSQL süsteemide kohta ei tule eksamil küsimusi, siis kui tahate kiiret ülevaadet, on see päris hea materjal. Sama mees on üks selle raamatu autoritest ja viidatud artikkel on põhimõtteliselt selle raamatu lühikokkuvõte.
Kui andmebaasis on funktsiooni parameeter tekstitüüpi ning sellel on maksimaalne väljapikkus määratud (nt kauba kood – 7 märki), siis tuleb VBA koodis parameetri deklareerimisel määrata ka see väljapikkus. Näide:
Juhul kui Serveris oleva funktsiooni parameeter on tüüpi CHAR(7)
.Parameters.Append .CreateParameter("kauba_kood", adChar, adParamInput, 7)
Serveris oleva funktsiooni parameeter on tüüpi VARCHAR(7)
.Parameters.Append .CreateParameter("kauba_kood", adVarChar, adParamInput, 7)
Järgnev päring leiab PostgreSQL andmebaasist kõik veerud, kus NOT NULL kitsendus on kahekordselt - domeeni kaudu ja otse veerule. Kui see mõne veeru välja toob, siis tuleks otse veerule lisatud NOT NULL kustutada.
Kommentaar 2015-12-18: päringus oli viga, mis nüüd on parandatud
WITH columns_not_null AS (SELECT pg_namespace.nspname AS table_schema, pg_class.relname AS table_name, pg_attribute.attname AS column_name FROM pg_catalog.pg_class, pg_catalog.pg_attribute, pg_catalog.pg_namespace WHERE pg_class.oid = pg_attribute.attrelid AND pg_namespace.oid = pg_class.relnamespace AND pg_attribute.attnotnull = TRUE), domains_not_null AS (SELECT pg_namespace.nspname AS domain_schema, pg_type.typname AS domain_name FROM pg_catalog.pg_type, pg_catalog.pg_namespace WHERE pg_namespace.oid = pg_type.typnamespace AND pg_type.typnotnull = TRUE) SELECT table_schema, table_name, column_name FROM INFORMATION_SCHEMA.columns WHERE (table_schema, table_name) IN (SELECT table_schema, table_name FROM INFORMATION_SCHEMA.tables WHERE table_type='BASE TABLE') AND table_schema NOT IN (SELECT schema_name FROM INFORMATION_SCHEMA.schemata WHERE schema_name<>'public' AND schema_owner='postgres' AND schema_name IS NOT NULL) AND (domain_schema, domain_name) IN (SELECT domain_schema, domain_name FROM domains_not_null) AND (table_schema, table_name, column_name) IN (SELECT table_schema, table_name, column_name FROM columns_not_null) ORDER BY table_schema, table_name, ordinal_position;
Päring, millega saate vaadata, kas Teie baasis on veerul korduvaid CHECK kitsendusi. Kui on, siis kordused tuleb eemaldada. Korduste probleemid on põhimõtteliselt samad, kui andmete liiasuse probleemid, mida aitas vähendada normaliseerimine - koodi haldamise ja muutmise korral tuleb muudatusi teha mitmes kohas.
WITH checks AS (SELECT ccu.table_schema, ccu.table_name, ccu.column_name, cc.check_clause AS check_clause FROM INFORMATION_SCHEMA.constraint_column_usage AS ccu INNER JOIN INFORMATION_SCHEMA.check_constraints AS cc USING (constraint_schema, constraint_name) WHERE cc.check_clause NOT LIKE '%IS NOT NULL' AND ccu.table_schema NOT IN (SELECT schema_name FROM INFORMATION_SCHEMA.schemata WHERE schema_name<>'public' AND schema_owner='postgres' AND schema_name IS NOT NULL) UNION ALL SELECT cdu.table_schema, cdu.table_name, cdu.column_name, regexp_replace(cc.check_clause, 'VALUE', cdu.column_name) AS check_clause FROM ((INFORMATION_SCHEMA.column_domain_usage AS cdu INNER JOIN INFORMATION_SCHEMA.tables AS t USING (table_schema, table_name)) INNER JOIN INFORMATION_SCHEMA.domain_constraints AS dc USING (domain_schema, domain_name)) INNER JOIN INFORMATION_SCHEMA.check_constraints AS cc USING (constraint_catalog, constraint_schema, constraint_name) WHERE t.table_type='BASE TABLE' AND cc.check_clause NOT LIKE '%IS NOT NULL' AND cdu.table_schema NOT IN (SELECT schema_name FROM INFORMATION_SCHEMA.schemata WHERE schema_name<>'public' AND schema_owner='postgres' AND catalog_name IS NOT NULL AND schema_name IS NOT NULL) ORDER BY table_schema, table_name, column_name) SELECT DISTINCT table_schema, table_name, column_name, check_clause FROM (SELECT table_schema, table_name, column_name, check_clause, Count(*) OVER (PARTITION BY table_schema, table_name, column_name, check_clause) AS cnt FROM checks) AS foo WHERE cnt>1;
Selleks palun Teid vastata anonüümsele küsimustikule ja teha seda hiljemalt 18. detsembriks 2015
Need laused on panus projekti, mis üritab illustreerida erinevaid programmeerimiskeeli ühe ülesande lahenduse abil. Ülesandeks on genereerida ühe õllelaulu sõnad.
Kašnikova, D., 2015. Vaadete mõju päringute täitmisplaanide koostamisele kahe andmebaasisüsteemi näitel. Magistritöö. TTÜ Informaatikainstituut. [WWW] http://digi.lib.ttu.ee/i/?3676 (08.12.2015)
Tsiteerin: Uuringu tulemused näitasid, et kuigi Oracle andmebaasisüsteemis põhjustab vaate põhjal päringu tegemine sageli teistsuguse täitmisplaani valimise kui otse baastabelite põhjal päringuid tehes, siis sellest tulenevad töökiiruse erinevused ei ole kuigi märgatavad. PostgreSQLis koostab andmebaasisüsteem (ilma turvabarjäärita) vaate põhjal tehtud päringule ning otse baastabelil tehtud päringule suurema tõenäosusega ühesuguse täitmisplaani. Kuid probleem on selles, et võrreldes Oraclega on see täitmisplaan mõnikord lihtsalt halb, olgu päring tehtud vaate põhjal või mitte. PostgreSQLis tuleks andmete turvalisuse tõstmiseks kasutada vaadetes turvabarjääre, kuid see võib tingida vaate põhjal tehtud päringule mitteoptimaalse (ja seega aeglaselt täidetava) täitmisplaani valimise.
Massachusettsi Tehnoloogiainstituut on maailma ülikoole reastavas edetabeli QS World University Rankings 2015. aasta andmetel maailma number üks ülikool. Professor Edward Crawley aga sealne aeronautika ja astronautika ning engineering systems professor. Ta on töötanud NASA-s ning on ka NASA avaliku teenistuse medali omanik.
Loeng toimub inglise keeles.
Oodatud on kõik huvilised!
Everyone thinks that System Thinking is important – companies crave it, policy makers think they use it, engineers view it as a cornerstone of their profession, and Defense acquisition studies decry the loss of it. Yet what is it? Is it something that you only learn through the school of hard knocks?
In fact, System Thinking is the subject of centuries of scholarship, writing and documented practice. This lecture identifies arguably the central feature of System Thinking – the emergence that occurs when elements come together to form a system. In engineering systems, this emergence is closely linked with the creation of value.
How do you become a system thinker? The lecture presents a rational task-based approach to thinking of a set of entities as a system, and ultimately extrapolating to emergence. Brief examples of System Thinking applied to human systems (teams), product systems, process systems and even political systems will be presented.
Lisainfo
Andres Kütt
andres.kutt@ria.ee
NB! Ärge registreerige ennast palun kaugõppe eksamiaegadele (õhtul kell 15:30) - nendel aegadel päevase õppe üliõpilased eksamit teha ei saa!!!
Teatavasti ei luba ülesande püstitus (ja ka kaine mõistus) hoida andmebaasis paroole avatekstina, vaid tuleb hoida paroolide soolatud räsi. Selle dokumendi jaotises 2.3 kirjutatakse erinevate räsifunktsioonide turvalisusest. 2013. aasta detsembri lõpu seisuga kirjutab dokument muuhulgas räsifunktsioonide kohta:
5 aasta jooksul turvalised primitiivid: Blowfish, AES (kõik standardsed võtmepikkused), RSA-2048 (ja diskreetse logaritmi põhised süsteemid mooduli pikkusega 2048 bitti), SHA-2, SHA-3, RIPEMD-160
Nende hulgast tulekski leida oma projektis kasutatav räsifunktsioon.
Tsitaat artiklist "Andmekaitse Inspektsioon töötas välja uue juhise «Kantavad seadmed ja privaatsus», milles selgitatakse kantavate seadmete (wearable computing) olemust ja nende kasutamise mõju inimese eraelule. Samuti jagatakse juhises soovitusi kasutajate privaatsuse paremaks tagamiseks."
Although it has served Estonia well, the system was not perfect. To the extent that, in fact, in the early days several people received the same identification code and it was too deep in the registries before the mistake was discovered. Thus, technically, the id-code in Estonia can not be assumed to be unique.
Hea näide, miks on parem asju kohe hästi teha, mitte loota sellele, et hiljem midagi parandada õnnestub.
(5) Andmesubjektil on õigus igal ajal keelata teda käsitlevate andmete töötlemine tarbijaharjumuste uurimiseks või otseturustuseks ja andmete üleandmine kolmandatele isikutele, kes soovivad neid kasutada tarbijaharjumuste uurimiseks või otseturustuseks.
Eelnevast tulenevalt võiksid kõik üliõpilased, kelle projektis on olemitüüp/tabel Klient ning kes koguvad klientide kontaktandmeid plaaniga näiteks tulevikus reklaami saata, lisada sellesse tõeväärtustüüpi atribuudi/veeru: on_nous_otseturustusega Alternatiiv on kirjutada ärireeglitesse järgmine lause: Kogutud kliendiandmeid ei kasutata kunagi tarbijaharjumuste uurimiseks või otseturustuseks ja ei anta üle kolmandatele isikutele, kes soovivad neid kasutada tarbijaharjumuste uurimiseks või otseturustuseks.
Minge aadressile. Logige sisse kasutades apexi kasutajanime ja parooli. Valige kontrollitav andmebaas. Ilmselt on see samasuguse nimega nagu ühe projekti tegija kasutajanimi ja sisaldab tema matriklinumbrit. Valige "Käivita saadaolevaid teste". Valige test "Databases II (fall 2015)". Vaadake päringu tulemusi, milles on üks või rohkem rida. Lugege kirjeldust, vaadake tulemusi. Usaldusväärsus on hinnang sellele, kuidas päring oma eesmärke täidab.
- Alajaotuses "General" on päringud, mis otsivad andmebaasist spetsiifilist infot, kuid otsuse selle kohta, kas midagi on õigesti või valesti peab tegema inimkasutaja, kes tulemust vaatab.
- Alajaotuses "Flaw detection" on päringud, mille tulemuses olev iga riga osundab mingile võimalikule disaini veale. Sõltuvalt päringu usaldusväärsuse hinangust peaks inimkasutaja selle üle kontrollima.
- Alajaotuses "Software measure" on päringud, mis arvutavad andmebaasi skeemi põhjal mingi arvulise väärtuse.
DECLARE
result BOOLEAN;
BEGIN
result:=REGEXP_LIKE('EST', '^[A-Z]{3}$');
IF (result=true) THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;
/
Oracle APEXis ja SQL*Plusis annab see test tulemuseks TRUE, Oracle SQL Developeris (versioon 4.1.1) annab see tulemuseks FALSE.
Kui tabelis on selline CHECK kitsendus (nt veerul riigi_kood), siis Oracle APEXis ja SQL Plusis õnnestub sellise CHECK kitsendusega tabelisse kenasti andmeid lisada. Samas SQL Developeris öeldakse andmete lisamisel (nt riik koodiga EST), et CHECK kitsenduse viga - nii INSERT lauseid käivitades, kui otse tabelisse andmeid lisades.
Üha rohkem hakkab tunduma, et see on mingi SQL Developeri mulle tundmatu eripära.
Soovi korral võite kasutada regulaaravaldise mustrit '^[[:upper:]]{3}$', mis toimib tõrgeteta kõigis minu kasutatud Oracle andmebaasisüsteemiga suhtlemiseks mõeldud keskkondades.
Pange tähele, et mustrid '^[[:upper:]]{3}$' ja '^[A-Z]{3}$' pole samaväärsed, sest esimene lubab ka täpitähti (ÕÄÖÜ), kuid teine mitte. Kuna riikide koodides pole selliseid täpitähti, siis oleks mustrina eelistatud '^[A-Z]{3}$'.
PostgreSQLis toimib regulaaravaldis '^[A-Z]{3}$' nii nagu peab.
Kohese korraldusliku muudatusena teen ettepaneku, et alates 26. oktoobri harjutustundidest toimuks harjutustundides projektide ülevaatamine nii, et kui vaatan üle ühe üliõpilaste grupi projekti, siis tulevad seda vaatama ka teiste projektide liikmed. Vead on sageli korduvad ning võõrale projektile antud tagasiside aitab ka enda projekti paremaks teha.
Kui kasutate oma arvutis EA11, siis kui vähegi võimalik, genereerige kood arvutiklassi arvutis kasutades EA12, et eelnimetatud probleemi vältida! EA12 vahendis saate koodi genereerimisel valida Separate Constraints from Tables = False
Tuleb välja, et EA 12 jätab genereeritud CREATE TABLE lausetesse lisamata mudelis defineeritud CHECK kitsenduste loogikaavaldised. Kui kasutate EA 12, siis tuleb CHECK kitsendused mudelis ikkagi kirjeldada, kuid genereeritud koodi tuleb käsitsi täiendada.
ON EKSLIK. Genereerimise probleem esines minu arvutis, kuid mitte teistes arvutites. Vabandan segaduse ja valeinfo eest!
UPDATE kinnitamata_tellimuste_vaade SET tellimuse_seisundi_kood=3 WHERE tellimuse_kood='XX';
Selle tulemusena kaob tellimus XX kinnitamata tellimuste nimekirjast ära.
Miks ma leian, et see vaade vajab WITH CHECK OPTION kitsendust, mis keelab sellise muudatuse tegemise?
Süsteemi õpitavuse, kasutamise efektiivsuse, meeldejäävuse, ja arusaadavuse seisukohalt on oluline, et süsteemi osade käitumine on ootuspärane, järjekindel ja võimalikult väheste eranditega - kokkuvõtlikult järgiks ortogonaalse disaini printsiipi. Olen ortogonaalse disaini printsiibist kirjutanud "Andmebaasid I" materjalides. Tarkvarakeelkeel, mis on kavandatud ortogonaalse disaini printsiipi arvestades:
- pakub suhteliselt väikese hulga keelekonstruktsioone
- koos terviklike ja järjekindlate reeglitega nende konstruktsioonide kombineerimise kohta
- ning iga konstruktsioonide kombinatsioon on legaalne ja sisulist tähendust omav.
SQL on näide keelest, mis paraku paljudes kohtades RIKUB ortogonaalse disaini printsiibi põhimõtteid ning nagu on näha käesolevast näitest, siis võimaldab ka luua süsteeme, mis omakorda seda printsiipi rikuvad.
Baastabel, virtuaalne tabel e vaade, kitsendus, UPDATE ja INSERT operatsioon kuuluvad SQLi põhiliste konstruktsioonide hulka. Ortogonaalse disaini printsiibi mõtte kohaselt:
- INSERT ja UPDATE operatsioonid toimivad ühtemoodi nii baastabelitel kui virtuaalsetel tabelitel (seega, näiteks, kuna UPDATE lause baastabelist ridu ei kustuta, siis ei tee see seda ka virtuaalsete tabelite korral).
- Kitsendusi jõustatakse ühtemoodi nii baastabelitel kui virtuaalsetel tabelitel, st ei lubata nendes teha muudatusi, mis lähevad vastuollu neile defineeritud kitsendustega. Virtuaalse tabeli alampäringus olev piirang (predikaat) on selle tabeli kitsendus, mis ütleb, millistele tingimustele vastavad read selles tabelis sisalduvad.
Tulles tagasi jutu alguses olnud näite juurde, siis siin tuleks lisaks vaatele teha funktsioon, mille sisuks on etteantud koodiga tellimuse kinnitamine.
Ühel üliõpilaste rühmal probleem (vähemalt ajutiselt) kadus, kui mudelis eemaldati skeemi (schema) nimest ##. Seega, palun ärge igaks juhuks kasutage skeemi nimedes # märke. Näiteks skeemi nime C##TUD2 asemel kasutage nime TUD2.
Kui kasutate RR, siis tehke palun iga kord enne mudeliga tööle hakkamist failist koopia ja tehke tööd koopias. Originaal nimetage ümber ja säilitage. Kui töö käigus selgub, et fail on riknenud, siis originaal on alles ja kaotsi ei lähe kogu töö, vaid ainult viimasel korral tehtu.
Kui riknemise võimalus kõrvale jätta, siis pole RR (võrreldes Enterprise Architectiga [EAga]) üldse paha ja mõni asi on seal ka parem/mugavam kui EAs. Seega nii RR kui EA sobivad antud aines kasutamiseks.
Soovi korral võite muuta tegijate grupi liikmeskonda, tehnoloogiaid, realiseeritavat töökohta - kui seda teete, siis palun registreerige muudatus Mauruses.
2.Kui tahate teada rohkem paindmetoodikatest, siis soovitan vaadata seda Bertrand Meyeri ettekannet (osa 1 ja osa 2), mis põhineb tema uuel raamatul.
3.Video Enterprise Architect 12 täiendustest seoses andmebaaside arendamisega.
Korraldajad lubavad aidata väljastpoolt Soomet tulijatel reisikulusid kanda - huvi korral tuleb nendega otse suhelda.
Lugege ka:
- OnlineContentforPartners.pdf [143 KB]
Iseseisva töö registreerimiseks valige õppekeskkonna vasakpoolsest menüüst
"Tudeng->Ülesanded" ning avanenud leheküljelt ülesanne "Iseseiseva töö registreerimine".
Ühte tööd võib teha koos kuni kolm inimest. Kui teete tööd mitmekesi, siis peab teema ja tegijate andmed registreerima ainult üks tegijatest. Kutsun üles kõiki, kes teevad projekti üksinda, koonduma ja tegema projekti kahekesi või kolmekesi. 15. septembri loengus on üksinda tegijatel võimalus püsti tõusta ja enda huvist mõne projektiga liituda märku anda.
Nimetan järgnevalt ka mõningaid tüüpilisi probleeme vastustes ja loodan, et Te väldite neid.
- Teisi andmebaasisüsteeme peale PostgreSQL ja Oracle iseseisva töö tegemiseks kasutada ei saa.
- Oraclet ja MS Accessi on raske koos kasutada ja seega ei sobi MS Access Oracle andmebaasi rakenduse tegemiseks.
- Oracle Application Express vahendi abil ei saa teha PostgreSQL andmebaasi kasutamiseks mõeldud veebirakendust.
- Enterprise Architect ja Rational Rose ei ole rakenduse tegemise vahendid, vaid on modelleerimisvahendid.
- Oracle SQL Developer ei ole rakenduse tegemise vahend, vaid on andmebaasi haldamise/programmeerimise vahend.
Üliõpilaste töökeskkond:
- Oracle Application Express (Oracle APEX): http://apex.ttu.ee:8000/apex/apex_login
- PostgreSQL phpPgAdmin: http://apex.ttu.ee/andmebaas/
Application Express abil tehtud rakenduste näiteid:
- Töötajate andmebaas (rakenduse tegemiseks kulus umbes 30 minutit)
(kasutajanimi: testkasutaja
parool: 1234) - Koristajate andmebaas
(kasutajanimi: testkasutaja
parool: 1234) - Seisundimuudatuste realiseerimise näide
- APEXiga kaasa tulev näiterakendus
(kasutajanimi: testkasutaja
parool: 1234)
PHP rakenduse näide:
- Teadetetahvel - sisselogimiseks on vaja kasutada apex.ttu.ee PostgreSQL kasutajanime ja parooli.
NB! apex.ttu.ee serveris tuleb PHP rakendus paigutada kataloogi /usr/local/apache2/htdocs alamkataloogi.
Kui loote seal näiteks oma rakenduse jaoks kataloogi rakendus, siis rakenduse veebiaadress on: http://apex.ttu.ee/rakendus/
Abivahendid:
- StarUML CASE vahendil põhinev lahendus, mis võimaldab StarUML abil koostada SQL-andmebaasi disaini mudeleid ja genereerida nendest PostgreSQLi jaoks mõeldud SQL koodi (kaasa arvatud mõningate keerukamate kitsenduste jõustamiseks vajalik kood). Idee on, et mudelis saab deklareerida kitsenduse vajaduse ning generaator oskab selle deklaratsiooni alusel koodi genereerida.
- apex.ttu.ee serveris olevate PostgreSQL andmebaaside kvaliteedi kontroll - sisselogimiseks on vaja kasutada apex.ttu.ee PostgreSQL kasutajanime ja parooli.
- Erinevad tarkvaravahendid PostgreSQL andmebaaside projekteerimiseks, programmeerimiseks ja haldamiseks. Nimekirjas on nii vaba tarkvara kui ka kommertstarkvara.
- Iseseisvas töös nõutud tehnilise arhitektuuri joonise võib esitada kui UML evitusskeemi (deployment diagram). Kataloogis Rational Rose õppevideod on video kuidas seda Rational Rose abil luua. Selle joonise võib aga ka koostada kasutades vaba tarkvara Archi, mis on mõeldud ettevõtete arhitektuuri modelleerimiseks.
Dokumentatsioon:
- Tigu lahkamas, ehk ekskursioon UNIXi maailma
- PostgreSQL (9.4) dokumentatsioon
- Oracle 12c Release 1 dokumentatsioon
- Ask Tom on koht kust leiab vastuseid paljudele küsimustele Oracle kohta. Ühtlasi on see keskkond näide Oracle Application Express kasutamise kohta.
- Oracle Application Express
- Oracle Application Express foorum
- Pistikprogrammid e pluginad, mida saab kasutada Oracle APEXI abil tehtud rakenduste funktsionaalsuse suurendamiseks.
- Mõned videod, mis demonstreerivad APEX 4.1 kasutamist.
Lisainfo:
Internetis on väljas 2012. aasta juunis Rob Conery poolt Norwegian Developers Conference konverentsil peetud ettekande salvestus. Ettekande esimesed 15 minutit demonstreerivad väga ilmekalt MySQLi puuduseid. SIIN ja SIIN on videos välja toodud puuduste jätkuarutelu.
Soovitan vaadata kogu ettekannet, sest seal tutvustatakse mõningaid huvitavaid PostgreSQLi pakutavaid võimalusi.
- Alates 14:30 Multiversioon konkurentsjuhtimine (selle kohta on ka üks eksami küsimus).
- Alates 20:30 Tabelite loomine pärimise kaudu ja selle kasutamine suure tabeli sektsioonideks jagamiseks.
- Alates 26:30 Foreign Data Wrapper (võimalus teha päringuid paljudest välistest andmeallikatest).
- Alates 29:30 Andmetüübid (näitena käsitleti timestamp with timezone tüüpi, massiivitüüpe, liittüüpide loomise võimalust).
- Alates 44:30 on kokkuvõtte PostgreSQLi eelistest - hind (PostgreSQL on tasuta; vaadake võrdluseks Oracle hinnapakkumist), jõudlus, salvestusruumi kokkuhoid, väljalasete sagedus, sobivus ettevõtte infosüsteemides kasutamiseks.
Siin on veel üks värskem (aastast 2015) arutelu selle üle, miks tasub PostgreSQLi eelistada MySQL või MariaDB kasutamisele.
Kokkuvõttes tuleb tõdeda, et PostgreSQLi näol on tegemist andmebaasisüsteemiga, mis pakub Oracle ja Microsofti andmebaasisüsteemidele väärikat konkurentsi ning mida saab väga edukalt kasutada ka suurtes ettevõtte infosüsteemides ning riigi infosüsteemides.
PostgreSQLi kasutab näiteks Skype. Veel üheks PostgreSQLi heaks omaduseks on laiendatavus - SIIT leiate ülevaate laiendustest, mida Skype kasutab/arendab.
PostgreSQL andmebaasiga töötamiseks võib kasutada tasuta pakutavat programmi pgAdmin. Kuna serveris on PostgreSQL (9.4), siis tuleks kasutada pgAdmin versiooni 1.20.
Oracle andmebaasiga töötamiseks soovitan kasutada Oracle poolt pakutavat programmi Oracle SQL Developer (ülikooli serveriga ühenduse loomisel SID= orcl). Tarkvara on tasuta, kuid selle allalaadimiseks tuleb ennast registreerida.
Juhul, kui teete iseseisvat tööd Oracle andmebaasisüsteemi põhjal, võib andmebaasi projekteerimiseks kasutada Oracle SQL Developer Data Modeler tarkvara. See vahend on palju võimalusterohkem kui Rational Rose. Tarkvara on tasuta, kuid selle allalaadimiseks tuleb ennast registreerida.
apex.ttu.ee serveriga SSH ühenduse loomiseks võib kasutada programmi PuTTY. Samuti võib mitte-kommerts otstarbel kasutada SSH Secure Shell klienti versiooni 3.2.
apex.ttu.ee serverisse failide ülekandmiseks ja sealt failide allalaadimiseks võib kasutada programmi WinSCP.
Programmikoodiga töötamiseks sobib hästi tekstiredaktor SciTe või Notepad++.
PHP rakenduste genereerimiseks võib kasutada SQL Maestro koodigeneraatorit PostgreSQL jaoks ja SQL Maestro koodigeneraatorit Oracle jaoks.
- ODBC_IDU0230.pdf [94 KB]
- Kui kasutate http://maurus.ttu.ee lehekülge esmakordselt, siis valige õppeaine leheküljel menüüst Üldist=> Ainele registreerumine. Täitke vorm ja vajutage nupule "Registreeri".
- Kui juba olete õpikeskkonnas mingile ainele registreerunud, siis siis valige Mauruse esilehel menüüst Üldist=>Minu konto ja lisage enda aktiivsete lehekülgede hulka õppeaine: "Andmebaasid II (IDU0230) ja Andmebaaside programmeerimine (IDU0120) (sügis 2015)" Ärge unustage vajutada "registreeri ainele".
Registreerumise järel peate ootama kuni õppejõud teie juurdepääsu õiguse kinnitab.