Kiirvalik
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kiirvalik / Avaleht
Täna on laupäev 23.11.2024. Käes on 2024/2025 õppeaasta sügissemestri 12. õppenädal! Erki Eessaar: Lehekülg on suletud24.08.2016 SEE LEHEKÜLG ON SULETUD! KOGU SELLEL LEHEKÜLJEL OLEV INFORMATSIOON ON MITTEAKTUAALNE! Aine uus kodulehekülg koos aktuaalse informatsiooniga asub
http://maurus.ttu.ee/354 |
Erki Eessaar: Lisaeksam 27. jaanuar 201619.01.2016 Üliõpilased, kes soovivad tulla 27.01.2016 lisaeksamile, peaksid (juhul kui pole seda veel teinud) oma projekti esitama hiljemalt 23.01.2016 kell 23:59.
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). |
Erki Eessaar: Parandatud tööde esitamine16.01.2016 Palun neil, kes pidid oma tööd parandama, laadida see Maurusesse, mitte saatma seda mulle meilile. |
Erki Eessaar: Projektidest14.01.2016 Kurvastusega pean tõdema, et paljud üliõpilased on jätmas projekti esitamist väga viimasele minutile või peavad esitama parandatud projekte.
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. |
Erki Eessaar: Vastuvõtuaja muudatus11.01.2016 Seoses ettenägematute asjaoludega (koosolek õppeserverite üle) lükkub teisipäeval 12. jaanuaril 2015 vastuvõtuaeg varasemaks ja toimub 12:30-13:30 ICT-627. Kell 14:00-15:00 vastuvõtuaeg jääb ära. |
Erki Eessaar: Soovitus10.01.2016 Soovitan kõigil üliõpilased, kes pole veel projekti esitanud (ja seega kaotavad projekti esitamisel hilinemise tõttu 10 punkti), vaadata hindamismudelis olevaid lisapunktide saamise võimalusi ning teha oma töö nii, et neid saada. |
Erki Eessaar: PostgreSQL 9.507.01.2016 PostgreSQL 9.5 on ametlikult väljas.
Lisandunud on näiteks UPSERT operatsioon (kombineerib INSERT ja UPDATE operatsiooni), reatasemel turvalisuse tagamise võimalus (ilma, et selleks peaks kasutama vaateid või funktsioone), uus indeksi tüüp ning võimalus teha päringutes CUBE, ROLLUP ja GROUPING SETS operatsioone.
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. |
Erki Eessaar: Andmebaasitehnoloogiate kaart31.12.2015 Suur pilt (1. juuni 2015 seisuga) erinevatest andmebaasitehnoloogiatest ning neid realiseerivatest tarkvarasüsteemidest. |
Erki Eessaar: Oracle andmebaasi disaini kontrollimine30.12.2015 PostgreSQLi jaoks kasutasime kontrollipäringuid. Nüüd olen Oracles tehtud projektide kiirema ülevaatamise jaoks samuti portsu kontrollpäringuid valmis teinud. 990999 tuleb asendada oma matrikli numbriga. |
Erki Eessaar: Facebook27.12.2015 Harjutustundides tegid paljud üliõpilased lisaks apex.ttu.ee serverile praktilisi katseid ja vaatluseid ka Facebookis :-) Kelle huvi pakub, siis sellele teatele lisatud faili jaotises 2.1 antakse ülevaade Facebooki andmebaasi arhitektuurist. Artikkel ise seostub teemadega 6 ja 12. |
Erki Eessaar: Readings in Database Systems, 5th Edition25.12.2015 Üle kümne aasta uus väljaanne. Selles esitavad andmebaasidega seotud teadus- ja arendustöö suurkujud viiteid mõnedele andmebaaside valdkonda palju ja püsivalt mõjutanud teadusartiklitele. Mis peamine, iga peatüki ees on toimetajate kommentaar, milles tutvustatakse artikleid ning kommenteeritakse andmebaasisüsteemide minevikku, olevikku ja tulevikku. Kellel on andmebaaside ja maailma selle valdkonna trendide vastu sügavam huvi, soovitan lugeda.
|
Erki Eessaar: Kordamisküsimused22.12.2015 Väljas on viimane versioon kordamisküsimustest, koos infoga, kui palju tuleb mingi teema kohta küsimusi. Samuti on väljas kõik loengute materjalid.
Soovin kõigile kauneid pühi! |
Erki Eessaar: Projektidest ja eksamist20.12.2015 Tänan kõiki, kes tähtajaks projekti esitasid.
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! |
Erki Eessaar: MongoDB20.12.2015 Kindlasti olete lugenud, kuidas NoSQL, sh MongoDB on uus cool tehnoloogia. Siin on Teile veidi mõtteainet edasiseks eluks. 20.12.2015 on MongoDB andmebaasisüsteemide populaarsuse indeksis neljandal kohal! Kui mitte muul põhjusel, siis laske pilk hetkeks sellest artiklist üle, nägemaks, kuidas andmete hajutatud paiknemine komplitseerib süsteemide käitumist. See artikkel on osa projektist Jepsen, mis testib erinevaid hajussüsteemide loomiseks mõeldud vahendeid.
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.
|
Erki Eessaar: Hajusatest andmebaasidest20.12.2015 Hea ülevaade hajusate andmebaaside eelistest rahvusvaheliste meedia- ja meelelahutusettevõtete näite varal.
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. |
Erki Eessaar: Maailma esimene süsteem, mis brändis ennast nime all NoSQL19.12.2015 Pole päris see, mida ootate/arvate.
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. |
Erki Eessaar: Väike sissevaade PostgreSQLi populaarsusesse19.12.2015 Selles aines õppisite tundma lahedat tarkvara, mille najal näiteks oma idufirma püsti panna :-) |
Erki Eessaar: Accessi VBA18.12.2015 Kui keegi üritab Accessi VBA abil kutsuda välja serveris olevat funktsiooni, millel on tekstitüüpi parameeter, siis järgnevast võib Teile kasu olla.
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) |
Erki Eessaar: Täiendavate testandmete lisamine (Oracle)18.12.2015 Lisasin ülesande 11 teise osasse mõtteid selle kohta, kuidas esitada täiendavate testandmete lisamise alajaotuses soola ja selle abil leitud parooli räsiväärtuseid. |
Erki Eessaar: Hindamismudeli muudatus16.12.2015 Raske südamega lisasin nii vähe enne projekti esitamise tähtaega hindamismudelisse kaks punkti. Need puudutavad ainult PostgreSQLi (domeenid) ning kõik kes on tööd harjutustunni ülesande 5 alusel teinud, peaksid sellisest veast vabad olema. Muudatusi saab näha hindamismudeli juures olevast tekstifailist.
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; |
Erki Eessaar: Teeme koos maailma paremaks07.12.2015 Palun Teid aidata kaasa ühe bakalaureuseõppe üliõpilase lõputöö valmimisele. Ühtlasi aitab Teie vastuste analüüs tulevikus TTÜ süsteemianalüüsiga seotud õppeaineid paremaks muuta ning üksteisega paremini siduda.
Selleks palun Teid vastata anonüümsele küsimustikule ja teha seda hiljemalt 18. detsembriks 2015 |
Erki Eessaar: Ülesanne 1114.12.2015 Lisasin ülesandesse 11 osa 4, mis võiks olla abiks kõigile, kes teevad projekti PostgreSQL+MS Access platvormil. |
Erki Eessaar: 16s õppenädal11.12.2015 Kui tahate kindlasti midagi küsida/ette näidata, kuid kardate, et ei pääse suure hulga huviliste pärast löögile, siis tulge esmaspäeval kell 14:00 ICT-404 toimuvasse harjutustundi. Seal on viimasel ajal vähe rahvast käinud. |
Erki Eessaar: SQL SELECT lausetest10.12.2015 Selles aines õppisime üsna vähe SQL SELECT lausete lisavõimalusi, mida PostgreSQL ja Oracle võrreldes MS Accessiga pakuvad. Veendumaks, et selliseid lisavõimalusi on olemas, vaadake siia, kerige veidi allapoole, et leida PostgreSQLile pühendatud osa ning proovige seal olevaid SELECT lauseid nt phpPgAdmin abil käivitada.
Need laused on panus projekti, mis üritab illustreerida erinevaid programmeerimiskeeli ühe ülesande lahenduse abil. Ülesandeks on genereerida ühe õllelaulu sõnad.
|
Erki Eessaar: Lisalugemist huvilistele08.12.2015 Vaadete kasutamine mõjutab täitmisplaanide valikut ja võib mõnikord viia ebaotstarbekate plaanide valimiseni.
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.
|
Erki Eessaar: System Thinking and Creating Value03.12.2015 Juba HOMME, sellel reedel, 4. detsembril kell 16.00 on kõigil erakordne võimalus tulla TTÜ aulatagusesse auditooriumisse (U01-202) kuulama Massachusettsi Tehnoloogiainstituudi (MIT) professori Edward Crawley tasuta loengut teemal „System Thinking and Creating Value“ .
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 |
Erki Eessaar: Erakorraline harjutustunni aja muutus01.12.2015 Neljapäeval 3. detsembril 2015 kell 14:00 rühmale IAPB52 toimuv harjutustund algab erakorraliselt kell 13:40 ja lõpeb kell 15:00. |
Erki Eessaar: Rakenduse Javas tegemine |
Erki Eessaar: Eksam01.12.2015 Kataloogis Aine korraldus on dokumendis Eksam_IDU0230_2015.pdf väljas informatsioon eksami kohta.
NB! Ärge registreerige ennast palun kaugõppe eksamiaegadele (õhtul kell 15:30) - nendel aegadel päevase õppe üliõpilased eksamit teha ei saa!!! |
Erki Eessaar: Iseseisva töö esitamine01.12.2015 Iseseisva töö esitamise tähtaeg on 19. detsember 2015 (kaasa arvatud). Esitamine toimub Mauruse kaudu. Enne failide saatmist lugege palun ülesandest, mis kujul tuleb vastused saata. |
Erki Eessaar: Räsiväärtuste arvutamise algoritmidest30.11.2015 Cybernetica AS, 2013. Krüptograafiliste algoritmide kasutusvaldkondade
ja elutsükli uuring. Aruanne Versioon 3.1 31. detsember 2013. a. [WWW]
https://www.ria.ee/public/PKI/kruptograafiliste_algoritmide_elutsukli_uuring_II.pdf
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.
|
Erki Eessaar: Inimesed lekitavad teadmatusest enda delikaatseid isikuandmeid30.11.2015 Isikuandmete kaitse seaduse kohaselt kuuluvad andmed tervisliku seisundi kohta delikaatsete isikuandmete hulka, mille töötlemisele on ranged nõuded. Tänapäeva nutiseadmete ja enese-eksponeerimise ajastul lekitavad paljud inimesed teadmatusest või hoolimatusest enda sellekohaseid andmeid osapooltele, kelle puhul pole võimalik kontrollida, kes ja mida nende andmetega teeb. Nendeks andmeteks on kantavate seadmete poolt kogutud tervisenäitajad, mis edastatakse teenusepakkujale, kes omakorda võimaldab vaadata nende andmete kohta aruandeid või pakub soovitusi.
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." |
Erki Eessaar: Oracle bind variables19.11.2015 Hea selgitus, mikspärast on Oracles vaja eelistada rutiinides bind variables kasutamist. |
Erki Eessaar: Eesti isikukoodist17.11.2015 Huvitav ülevaade Eesti isikukoodi loomise taustast ja kaalutlustest. Muuhulgas väärib tähelepanu tsitaat:
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. |
Erki Eessaar: Miks peab ka veebi/rakenduste programmeerija andmebaase hästi tundma? |
Erki Eessaar: Projekti täiendus15.11.2015 Isikuandmete kaitse seadus § 12, lõige 1.
(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. |
Erki Eessaar: PostgreSQL andmebaasi disaini kontrollimine15.11.2015 Kõik Teie, kes Te teete oma iseseisva töö projekti PostgreSQLis. Teie töö hindamiseks kasutatakse automatiseeritud disaini kontrollimise vahendit. Teil on võimalus jooksvalt ise oma andmebaasi selle abil analüüsida. Eeldus on, et andmebaas on apex.ttu.ee serveris (see on muide projekti reeglitega nõutud).
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.
|
Erki Eessaar: Oluliselt muudetud teade Oracle regulaaravaldiste kohta.12.11.2015 Kirjutasin sellele lehele paari päeva eest Oracle regulaaravaldise probleemist. Selgub, et probleem võib hoopis olla SQL Developeris. Meil on tegemist regulaaravaldisega riikide ISO klassifikaatori koodide kontrollimiseks, mille kohaselt peab kood koosnema täpselt kolmest suurtähest.
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. |
Erki Eessaar: Iseseisev ülesanne04.11.2015 Panin kataloogis Harjutustunnid/Slaidid slaidikomplekti andmebaasi kapseldamise kohta. Palun see hiljemalt 16. novembriks iseseisvalt üle vaadata. |
Erki Eessaar: Milliseid andmeid koguda ja milliseid mitte |
Erki Eessaar: Kasulik allikas31.10.2015 Teadmusbaas Database Lifecycle Management, kus on palju andmebaasi testimisest, evitamisest, versioonihaldusest. Tehnilisemad näited on seal MS SQL Serveri baasil, kuid üldiselt on see jutt oluline ja vajalik mistahes andmebaasisüsteemi korral. |
Erki Eessaar: Tagasiside küsitlus24.10.2015 Kataloogis Aine korraldus on 20. oktoobril 2015 toimunud tagasiside küsitluse tulemused.
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. |
Erki Eessaar: Tabelite loomise lausete genereerimine Enterprise Architect vahendiga22.10.2015 Enterprise Architect (EA) 11 CASE vahendis tabelite loomise lausete genereerimine annab tulemuseks koodi, kus eraldi on tabelite loomise laused (CREATE TABLE) ja kitsenduste lisamise laused (ALTER TABLE). Selline kood on õppejõu hinnangul väga halvasti loetav.
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 |
Erki Eessaar: Enterprise Architect ja CHECK kitsendused15.10.2015 Selgub, et minu poolt ülesande 3 juurde pandud teade
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! |
Erki Eessaar: Seitsmenda õppenädala ülesanne09.10.2015 Seitsmenda õppenädala ülesandeks on harjutustunnis lõpetada ülesanded 2 ja 3. |
Erki Eessaar: WITH CHECK OPTION kitsendus06.10.2015 Loengus kerkis küsimus, kas uuendatavate vaadete puhul on ikka vaja WITH CHECK OPTION kitsendust kasutada. Näiteks, kui juhataja rollis kasutaja näeb vaate kaudu kinnitamata tellimusi, siis saaks ta käivitada lause:
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.
|
Erki Eessaar: Lisapunktid02.10.2015 Kataloogis Tulemused on lisapunktide aruanne. Täiendan seda iga nädala lõpus. Kui seal on infot puudu, midagi on valesti - siis palun andke teada. |
Erki Eessaar: Rational Rose kasutamisest - teadmiseks28.09.2015 Kui kasutate Rational Rose (RR) CASE vahendit, siis võib esineda mudelite faili riknemist. Selle väljenduseks on, et mudeli (kas kõiki või osasid) elemente ei saa enam muuta ning ei saa genereerida tabelite kirjeldusest SQL lauseid.
Ü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. |
Erki Eessaar: Ettevalmistus viienda õppenädala harjutustunniks22.09.2015 Kuna alates sellest nädalast algab harjutustunnis oma iseseisva töö projekti tegemine (mille eest saab ka punkte), siis harjutustunnis peab olema kaasas oma iseseisva töö projekti kõige viimane versioon (dokumendifail, mudelite fail/failid). |
Erki Eessaar: Teema registreerimine19.09.2015 Olen mõnede vastuste juurde kirjutanud kommentaare. Need on seotud hindamismudeli punktiga Rakenduse tegemiseks kasutatakse sisuliselt ebasobivat vahendit (kahekihiline klient/server süsteem olukorras kus tingimata on vajalik veebipõhine (n-kihiline; n>2) süsteem.
Soovi korral võite muuta tegijate grupi liikmeskonda, tehnoloogiaid, realiseeritavat töökohta - kui seda teete, siis palun registreerige muudatus Mauruses. |
Erki Eessaar: Lisaks loengule 315.09.2015 1. Mainisin kolmandas loengus, et mõnedel inimestel on ainult eesnimi (võib koosneda ühest või mitmest sõnast) ning puudub perenimi. See on küllaltki levinud Indoneesias. Kuidas selliseid andmeid registreerida, kui andmebaasis on väljad eesnimi ja perenimi? Kui muuta need väljad mittekohustuslikuks, siis võib teistpidi jääda registreerimata ees- ja perenimed inimestel, kellel need on olemas. USAs lahendatakse probleem lühendi FNU kasutamisega Sõltuvalt kontekstist võib see tähendada (First Name Used) või (First Name Unknown). Eraldi väljad eesnimi ja perenimi võimaldavad registreerida, et inimesel on eesnimi olemas ja perenimi puudub. Ainult välja "nimi" korral pole selge, kas selles väljas on ainult eesnimi, ainult perenimi, nende kombinatsioon ning milline osa esitab eesnime ja milline perenime. Kohe hästi teha (andmebaasis eesnime ja perenime eristada) on lihtsam, kui hakata tagantjärgi selgeks tegema, milline sõna nime väljas tähistab millist nime osa.
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. |
Erki Eessaar: EA mudeliteisenduse täiendus on arvutiklassides installeeritud12.09.2015 Esimeses harjutustunnis tutvustatud EA täiendatud kontseptuaalse andmemudeli teisendus on nüüdseks installeeritud ka arvutiklassidesse. Kuna laienduse autor ei teadnud installeerimise programmi loomisel kõiki tsentraalse installeerimise eripärasid, siis on selle laienduse korrektseks töölehakkamiseks vaja arvutiklassi arvutis üks kord käivitada reg.reg fail, mis on kataloogis Tarkvara - kuidas saada?/CASE: Enterprise Architect (ver 11 baasil) õppevideod/EA mudeliteisenduse täiendus. Seda saavad üliõpilased oma konto alt ise teha. Pärast seda, peale EA taaskäivitamist, hakkab laiendus tööle. Kui arvutis on see fail korra käivitatud, siis rohkem pole seda vaja enam teha. Isiklikule arvutile installeerides seda pole vaja teha - peaks koheselt töötama, kui olete juhendis olevat installeerimise protseduuri järginud. |
Erki Eessaar: Hackatroni üritus Soomes10.09.2015 Ehk on mõned teist huvitatud osalemisest Soome Aalto Ülikooli organiseeritud hackatronil. See sündmus on omataoliste hulgas suurim Euroopas. Osalejatel avaneb võimalus arendada nädalavahetuse jooksul oma tarkvara ning õppida selle käigus mitmetelt juhtivatelt tarkvarafirmadelt.
Korraldajad lubavad aidata väljastpoolt Soomet tulijatel reisikulusid kanda - huvi korral tuleb nendega otse suhelda.
Lugege ka: |
Erki Eessaar: Iseseisva töö teema registreerimine10.09.2015 Tähtajaga 18. september 2015 tuleb registreerida iseseisva töö teema, rakenduses realiseeritav töökoht, esialgne kasutatavate vahendite valik ja üliõpilased, kes seda tööd üheskoos teevad.
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.
|
Erki Eessaar: Juurdepääs serverile31.08.2015 Saamaks juurdepääsu serverile apex.ttu.ee, tuleb täita esimene punkt ülesandest "Ülesanne 1", mis on kataloogis Harjutustunnid. |
Erki Eessaar: Üliõpilase töökeskkond |
Erki Eessaar: PostgreSQL vs. MySQL31.08.2015 Iseseisva töö projekti tegemiseks võib kasutada PostgreSQL andmebaasisüsteemi, kuid ei või kasutada MySQL andmebaasisüsteemi. Mõlemad on väga populaarsed andmebaasisüsteemid. Kindlasti tekib Teil küsimus, millised on PostgreSQL eelised võrreldes MySQLiga.
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. |
Erki Eessaar: Tarkvara31.08.2015 PostgreSQL andmebaasisüsteemi kasutava kahekihilise klient-server süsteemi loomiseks läheb vaja PostgreSQL ODBC draivereid.
Valige kõige hilisem versioon. Milline draiver valida ja kuidas andmeühendust seadistada lugege palun teatele lisatud failist.
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. |
Erki Eessaar: Registreerimine31.08.2015 Leheküljele ligipääsemiseks tuleb ennast registreerida.
- 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. |
|