HELIA TIKO-05 XML ja tietokannat 1 ( 23) ICT03D Tieto ja tiedon varastointi Martti Laiho

Koko: px
Aloita esitys sivulta:

Download "HELIA TIKO-05 XML ja tietokannat 1 ( 23) ICT03D Tieto ja tiedon varastointi Martti Laiho"

Transkriptio

1 HELIA TIKO-05 XML ja tietokannat 1 ( 23) XML ja tietokannat Miksi XML-dokumentteja tietokannassa? Unicode-merkistö ja XML-tietorakenne mahdollistavat yleispätevän alustariippumattoman tiedon talletusrakenteen ja sanomarakenteen tietojen välitykseen eri sovellusten kesken. Merkkipohjainen XML-dokumentti ei kuitenkaan sellaisenaan ole mikään tietokantaratkaisu. Pelkkä dokumentti ei pysty suojaamaan tietoja asiattomalta käytöltä tai muutoksilta kuten tietokanta. Se ei pysty samanaikaisuuden ja transaktioiden hallintaan ja vähänkin laajemman XML-dokumentin käsittely on hidasta. Kertaluontoinen validointi XML Schemaa käyttäen ei suojaa dokumenttia jatkuvasti eikä edes validoitaessa turvaa yksittäisen dokumentin tietojen eheyttä muiden dokumenttien tai tietokantojen tietojen kesken. Turvallisen, tehokkaan ja muuhun tiedonhallintaan integroivan infrastruktuurin XML-dokumenteilla tarjoaa oikea tietokantajärjestelmä. Client-side XML Ennen kuin DBMS-järjestelmiin alettiin toteuttamaan varsinaista XML-tiedon talletusta yksinkertainen tapa tallettaa XML-dokumentti perinteisessä relaatiotietokannassa oli tallettaa dokumentti relaatiotaulun rivin ns. CLOB-tyyppiä olevaan sarakkeeseen, ks kuva 1. CLOB tulee sanoista Character Larger OBject ja se on SQL-standardin määrittämä isojen merkkijonojen talletusmuoto. Sellaisenaan tämä ei tarjonnut tukea XML-dokumentin jäsentävään käsittelyyn, vaan käsittely oli tehtävä sovellusohjelmissa tietokannan ulkopuolella. Toinen vaihtoehto oli jäsentää XML-dokumentin tiedot sovellusohjelmassa ja tallettaa tiedot ohjelmallisesti jakaen ne eri tauluihin (shredding, decomposition) ja vastaavasti koostaen (composition) XML-dokumentti aina sitä tarvittaessa ohjelmallisesti relaatiotauluista. XML document Application CLOB column shredding into relational tables CLOB value Kuva 1 Ohjelmallinen talletus CLOB-sarakkeeseen tai ositus relaationaalisiin tauluihin

2 HELIA TIKO-05 XML ja tietokannat 2 ( 23) Varsin pitkälle ja vähällä ohjelmoinnilla nämä relaatiotietokantatietojen ja XML-dokumenttien sovellusohjelmissa tehtävät konversiot saadaan toteutettua esimerkiksi Microsoftin.NETarkkitehtuurissa ADO.NETin XML-palveluina. Java-arkkitehtuureissa XML-dokumenttien ohjelmallinen käsittely tapahtuu SAX-algoritmilla tai DOM-puuna. SAX-algoritmissa dokumentti luetaan kertaalleen läpi käsitellen sen kiinnostavat osat, mutta tallentamatta sitä sovelluksen muistiin. DOM-mallissa XMLdokumentin tiedot ladataan ohjelman muistiin hierarkkiseksi puurakenteeksi, jossa voidaan navigoida puun polkuja pitkin ja päivittää puuta. Päivitetty DOM-puu voidaan serialisoida (eli kirjoittaa tiedostoon) XML-dokumentiksi. DOM-mallin soveltamista massiivisten XMLdokumenttien käsittelyyn rajoittaa puurakenteen vaatima tila sovelluksen rajallisessa muistiavaruudessa. Javan tietokantaliittymä JDBC 3 API on vielä täysin suuntautunut perinteisten SQL-taulujen käsittelyyn, mutta JDBC 4 tulee huomioimaan myös XML-dokumenttien käsittelyn SQLstandardin XML-laajennusten mukaisesti. Sovellusohjelmissa toteutetut muunnosratkaisut kuormittavat edelleen vastausaikoja ja DBMSjärjestelmätoimittajat ovat nyt lähteneet toteuttamaan aitoa XML-tukea itse tietokantajärjestelmissä. Server-side XML, arkkitehtuureja ja standardeja XML-dokumenttien tietokantaratkaisuiksi on kehitetty erityisiä XML-tietokantoja, mm. Software AG:n Tamino-järjestelmä. Näiden ongelmana on niiden tietojen erillisyys valtavirran SQL-pohjaisten tietokantojen tiedoista. Toistaiseksi XML-tietokantajärjestelmät eivät ole olleet kaupallisia menestyjiä. Hierarkkinen tietomalli tietokannassa ei ole uusi asia. Jo ennen relaatiotietokantoja käytössä oli hierarkkiseen malliin perustuvia järjestelmiä, joista merkittävin ja edelleen käytössä oleva on IBM:n IMS DB. Tämä tunnetaan käsittelykielensä Data Language I mukaan myös nimellä DLI. Huom. Toisen merkittävän relaatiotietokantoja edeltävän tietokanta-arkkitehtuurin muodostavat verkkomalliin perustuvan ANSI:n Codasyl-standardin mukaiset järjestelmät, joiden vaikutus näkyy nykyisissä oliotietokantajärjestelmissä. Relaatiomallin isä E.F. Codd kehittikin relaatiomallin itse asiassa yksinkertaistamaan tietokantojen käsittelyä vapauttaen ohjelmoijat tietokantanavigoinnista. Tästä voidaan nyt olla montaa mieltä. Navigointi ohjelmointimallina on tullut takaisin XPath, XQuery ja oliotietokantaohjelmointiin. Myös uusi SQL-standardi ja sitä toteuttavat Object-Relational DBMS-järjestelmät ovat ottaneet eroa puhtaaseen relaatiomalliin SQL:n olio- ja XMLlaajennuksilla. SQL:2003-standardin XML-laajennus on määritetty sen osassa 14 SQLXML [sqlp14]. Tämä määrittää XML-tietotyypin käytettäväksi SQL-taulun sarakkeen tietotyyppinä sekä joukon funktioita, joilla XML-dokumentti (tai tämän osa, XML-fragmentti) tai XML-näkymä

3 HELIA TIKO-05 XML ja tietokannat 3 ( 23) voidaan rakentaa (composition) SQL-taulujen tiedoista. Näistä XML-julkaisufunktioita (publishing functions) ovat seuraavat: XMLAGG: luo XML-elementtien kokoelmasta XML-elementtimetsän. Tällä voidaan koota XML-dokumenttia useammalta tauluriviltä löytyvistä XML-elementeistä. XMLATTRIBUTES: generoi SQL-kyselyn palauttamat tiedot XML elementin attribuuteiksi XMLCOMMENT: generoi XML-kommentin XMLCONCAT: konkatenoi kaksi tai useampia XML-fragmenttia yhdeksi merkkijonoksi XMLELEMENT: generoi XML-elementin valitun solmun lapsielementiksi muodossa <elementname>value<elementname> XMLFOREST: generoi relationaalisesta arvojoukosta XML-elementtien metsä -listan ("forest") XMLNAMESPACES: määrittää XML-elementeille käytettävät nimiavaruudet XMLPARSE: generoi merkkijonosta XML-fragmentin tehden sille XML-syntaksitarkistuksen, mutta ei validoi tätä. XMLPI: generoi XML-dokumenttiin sen käsittelykohjeen (processing instruction) XMLSERIALIZE: serialisoi XML-dokumentin merkkijonoksi Esimerkki 1: (sovitettu lähteestä [Ste04]) Seuraava SQLXML-lauseke XMLELEMENT (NAME asiakas, XMLELEMENT (NAME asno, Customers.CustomerID), XMLELEMENT (NAME nimi, Customers.CustomerName) voisi tuottaa yhdestä Customers-taulun rivin sarakkeista CustomerID ja CustomerName seuraavan asiakas-elementin: <asiakas> <asno>wilmk<asno> <nimi>wilman Kala<nimi> <asiakas> SQL:2003-standardi on XML-käsittelyn osalta vielä kovin keskeneräinen ja sen kehittämistä jatketaan. Seuraava SQLXML versio (2006?) tuntee jo XQuery-kyselykielen ja määrittää osin tätä hyödyntäviä funktioita, joita ovat alustavasti seuraavat [sqlp14]: XMLTABLE: määrittää relationaalisen näkymän XML-dokumenteista? XMLTEXT: XMLCAST: generoi XQueryn tuottamasta yhden tekstisolmun tuloksesta XML-arvon. määrittää conversion XML-tyypistä merkkijonoksi tai merkkijonon XMLtyypiksi XMLDOCUMENT: generoi XQuery-kyselyn tuloksesta XML-dokumentin XMLEXISTS: testaa onko XQuery-kyselyn tulos ei-tyhjä XMLITERATE: XQuery-tuloksen läpikäynti tauluna XMLVALIDATE: validoi XML-dokumentin XMLQUERY: suorittaa XQuery-kyselyn. SQL-standardi ei perinteisesti ota kantaa talletusrakenteisiin, joten XML-tietotyypin talletus- (esimerkiksi mahdollinen shredding) ja indeksointiratkaisut ovat DBMS-järjestelmän toimittajan päätettävissä. SQL:2003-standardi ei ota vielä kantaa myöskään XML-dokumentin osien päivitykseen eikä XML-dokumentin näyttämiseen SQL-näkymänä. XML-dokumentin tulee olla hyvin muodostettu (well-formed). XML-dokumentin rakenne voidaan määrittää XML Scheman kuvauksena ja dokumenttia, joka noudattaa osoittamaansa

4 HELIA TIKO-05 XML ja tietokannat 4 ( 23) XML Schemaa sanotaan validiksi (valid). SQL:2003:n XML-tietotyyppi takaa, että XMLsarakkeeseen talletettu dokumentti on hyvin muodostettu. SQL-tunnusten ja XML-tunnusten muodostussäännöt ja merkistöt eivät ole täysin vastaavat joten SQL:2003-standardi määrittää tunnusten kuvautumisia varten kuvautumissäännöt (mapping). XML Schema on SQL-kieltä ilmaisuvoimaisempi tietotyyppien sallittujen arvojen määrityksessä. Arvojen yhteensopivuus vastaavien SQL-tietotyyppien arvojen kanssa on rajattavissa XML Scheman facet-määrityksillä ja sqlxml-nimiavaruuden annotaatioilla. SQL:2003 määrittää myös miten SQL-taulu kuvautuu XML-dokumentiksi ja miten sen metadata kuvautuu XML Schemaksi. XML Scheman sijainti määritetään URL-määrellä, joka voi paikallinen tai Internet-osoite. SQL-standardi ei kuitenkaan vielä ota kantaa siihen miten XML Schema toteutetaan paikallisesti tietokannassa. XQuery Varsinainen XML-standardien kehitys tapahtuu avoimena W3C:n toimesta ja tämä ei ota kantaa näiden tietokantatoteutuksiin, mutta keskeiset tietokantatoimittajat ovat alkaneet seuraamaan tätä kehitystä tuotteissaan. W3C:n XML Scheman ja XML-kyselykielen XQuery kehityksessä ovat mukana IBM, Oracle ja Microsoft ja viimeksimainitut ovat tehneet XQuery:stä jo uusiin DBMS-versioihinsa omat toteutuksensa. XQuery standardi ei sinänsä edellytä tietokantatoteutusta ja sitä toteuttavia editoreja on useita. Tunnetuimpia toteutuksia on Altovan XMLSpy n XQuery. XQuery-kyselyn ns. FLWOR-rakenne (for-let-where-order by-return) muistuttaa SQL:n SELECT-lausetta, mutta sen toiminta perustuu navigointiin. Kyselyn tulos rakennetaan RETURN-määreellä, jossa voidaan kuvata XML-fragmentti. Ohitamme tässä yhteydessä XQueryn tarkemman esittelyn, mutta jonkin kuvan kielestä antaa seuraava esimerkki 2. Esimerkki 2: (sovitettu lähteestä [Ste04]) Edellä esitellyn esimerkin 1 tulos voitaisiin tuottaa seuraavalla XQuery-kyselyllä: FOR $c IN doc( Customers )rowcustomers WHERE $ccustomerid = WILMK RETURN <asiakas> <asno>($ccustomerid)<asno> <nimi>($ccustomername)<nimi> <asiakas> Tässä muuttuja $c on eräänlainen elementtikursori, joka käy läpi IN-määreen elementtijoukon ja josta käsin voidaan polkulausekkeilla osoittaa ja poimia RETURN-osaan muita elementtejä ja näiden attribuutteja.

5 HELIA TIKO-05 XML ja tietokannat 5 ( 23) Server-side XML-toteutuksia Tarkastelemme seuraavassa DB2 UDB 8.2:n, Microsoft SQL Server 2005:n ja Oracle 10gR2:n XML-toteutuksia. Verrattuna SQL-standardin näiden toteutukset poikkeavat melkoisesti toisistaan. Keskeinen suunnitteluongelma on XML-sarakkeen talletusratkaisu: CLOB vai SQL-tauluihin purettu toteutus. XML document CLOB XML column CLOB value XML column shredding into nested tables side tables kuva 2. XML-sarakkeen CLOB tai shredded toteutus CLOB-pohjaiset ratkaisut mahdollistavat XML-dokumentin lukemisen alkuperäisessä asussa (DOM fidelity), kun taas koostettaessa dokumenttia uudelleen tauluista menetetään tietosisällön kannalta merkityksettämiä whitespace -merkkejä, jotka voivat vaikuttaa dokumentin ulkoasuun. XML Scheman paikallinen talletus ja XML-sarakkeen vahva tyyppitystapa XML Schema - sidonnalla on kaikissa erilainen. Kaikki tarkastellut DBMS-järjestelmät tarjoavat mahdollisuuksia XML-dokumentin indeksointeihin ja dokumentin osien päivityksiin ainakin shredded-ratkaisuissa. SQLXML-julkaisufunktioiden toteutuksissa on eroja. SQL Server käyttää näiden asemesta omaa SELECT FOR XML ratkaisuaan.

6 HELIA TIKO-05 XML ja tietokannat 6 ( 23) DB2 XML Extender ja Information Integration (lähde [db2ext]) DB2:n XML Extender on ensimmäisiä XML-tiedon relaatiotietokantatoteutuksia. Siinä XML-dokumentti voidaan toteuttaa SQL-taulun joko XMLVARCHAR-tyyppisessä (user-defined) UDT-sarakkeessa (pituus korkeintaan tavua), XMLCLOB-tyyppisessä UDT-sarakkeessa (pituus korkeintaan 2 GB) tai XMLFILE viittauksen osoittamassa ulkoisessa XML-tiedostossa. XML-sarakkeen elementit ja attribuutit voidaan toteuttaa indeksoitavissa aputauluissa (side table), joihin mäppäys tapahtuu Document Access Definition (DAD) kuvaustiedostojen perusteella. DAD-kuvausten perusteella XML-dokumentti voidaan myös tuottaa uudelleen aputauluista. XML-dokumenttien schemat ovat aikaisemmin perustuneet DTD_REF-kuvaustauluun talletettuihin DTD-määrityksiin, mutta nykyisin DB2 XML Extender tukee myös XML Scheman käyttöä. XML Schema talletetaan paikalliseen tiedostoon tietokannan ulkopuolelle ja rekisteröidään DBMS:n käyttöön XML-muotoisella DAD-tiedostolla. XML-dokumentin osia voidaan päivttää Extenderin valmiilla talletetuilla proseduureilla. Talletetussa XML-dokumentissa voidaan navigoida XPath-viittauksilla, XML-dokumentista voidaan tuottaa uusia XML-dokumentteja XLST-muunnoksilla. DB2 XML Extender ei vielä versiossa 8.2 ainakaan dokumentoi SQL-standardin SQLXMLmäärityksiä. Lähteen [Ste04] mukaan IBM tulee toteuttamaan SQLXML:n mukaisen natiivin XML-tietotyypin ja jukaisufunktiot, kun SQLXML-standardi on valmiimpi. Osa SQLXML funktioista on toteutettu funktiolla XML2CLOB ja talletetuilla proseduureilla. DB2 Information Integrator (II) on IBM:n middleware ohjelmisto, jolla voidaan toteuttaa heterogeeninen hajautettu kyselytietokanta (fedarated database), jonka data source jäseninä voi olla esimerkiksi DB2-, Oracle- ja SQL Server instansseja. Integrator mahdollistaa myös XML Wrapperin käytön, jolla voidaan käsitellä XML-dokumenttia relationaalisesti NICKNAME-rakenteilla (vertaa SQL Serverin OPENXML-funktio).

7 HELIA TIKO-05 XML ja tietokannat 7 ( 23) SQL Server 2005 (ks. DBTech Pro XML and Databases workshop Heliassa ) Microsoft on toteuttanut SQL Server 2005:ssä XML-tietotyypin XML-nimisenä. SQLXMLfunktioita Microsoft ei kuitenkaan ole toteuttanut, vaan SQL-taulujen tiedon julkaisu XMLmuodossa ja XML-näkymien kautta toteutetaan Microsoftin omalla SELECT-lauseiden FOR XML-optioilla. SELECT dname as "Name", loc as "Location", (SELECT empno as "employeenumber", (SELECT ename as "Name", job as "Title", mgr as "Manager", CONVERT(CHAR(10),hiredate,20) as "StartDate", sal as "Salary", comm as "Commission" FROM Emp e -- <e>... <e> WHERE Employee.empno = e.empno FOR XML AUTO, TYPE, ELEMENTS) FROM Emp Employee WHERE Employee.deptno = Department.deptno FOR XML AUTO, TYPE, ROOT('EmployeeList')) FROM Dept Department FOR XML AUTO, ELEMENTS -- ~ XMLForest(...) -- ~ XMLAgg(XMLElement("Employee", XMLAttributes ("employeenumber"))) -- ~ XMLElement("EmployeeList" -- ~ XMLElement("Department") GO Kuva 3. XML-dokumentin generointi sisäkkäisillä SELECT FOR XML -lauseilla Microsoft on toteuttanut myös XML-dokumentin kuvautuvuuden SQL-näkymäksi OPENSQLfunktiolla. CREATE TABLE PublishedMedia (ISBN int PRIMARY KEY, Title varchar(50), Publisher varchar(50)) GO CREATE PROCEDURE [dbo].[xml_insert] (@doc NTEXT) AS BEGIN int -- Create the internal representation exec -- SELECT statement using OPENXML rowset provider INSERT INTO PublishedMedia SELECT * FROM OPENXML (@idoc, 'BooksBook', 1) WITH (ISBN int '@ISBN', Title varchar(50) '@Title', Publisher varchar(50) '@Publisher') -- Remove the internal representation EXEC END GO Kuva 4. OPENXML-esimerkki

8 HELIA TIKO-05 XML ja tietokannat 8 ( 23) XML-tietotyypin validointi perustuu tietokantaan SCHEMACOLLETION-rakenteisiin tallettuihin XML Schemoihin. table id strongly typed XML column: col XML(schemaCollection) XML documents in the table: <doc1 xmlns= <doc1> <doc1 xmlns= <doc1> <docn xmlns= <docn> schemacollection <schema <schema> schema versions or different schemas <scheman <scheman> Kuva 5. Vahvasti tyypitetty XML-sarake XML-dokumentin osia voidaan päivittää XML-sarakkeiden XML DML kielilaajennuksen modify-metodeilla ja dokumenttia voidaan tutkia XML-sarakkeiden query-metodilla, jossa kyselylause kirjoitetaan XQuery-kielellä. Microsoftin XQuery-toteutuksessa ei ole XQueryn LET-määrettä.

9 HELIA TIKO-05 XML ja tietokannat 9 ( 23) Oracle XML DB (ks. DBTech Pro XML and Databases workshop Heliassa Oraclen XML DB on monipuolisin ja lähinnä SQL-standardin SQLXML-osaa oleva XMLtoteutus. XML-dokumentti voidaan toteuttaa XMLtype-tyyppisessä SQL-taulun sarakkeessa. Dokumenttien validointi perustuu XML Schema-määrityksiin, jotka on talletettu XML DB:n repositoryyn. XML DB:n repository on kannassa toteutettu tiedostojärjestelmä, jota voidaan käsitellä XML DB:n HTTP-palvelujen kautta WebDAV-protokollalla tai XML DB:n FTPpalvelun kautta. Kuva 6. Oracle XML DB:n talletusratkaisut ja saantitavat lähde: [Ada05] Oracle XML DB Developer s Guide, 10g Release 2 XML-sarakkeen talletusratkaisu voi perustua CLOB-pohjaiseen toteutukseen tai Oraclen Nested Tables rakenteeksi kutsumaan aputaulu-pohjaiseen toteutukseen (native structured XML storage). Nested Tables ratkaisu voidaan generoida XML Schemaan lisättyjen annotaatioden ohjaamana.

10 HELIA TIKO-05 XML ja tietokannat 10 ( 23) Nested Tables toteutuksessa voidaan hyödyntää indeksejä ja päivittää dokumentin osia XPath-pohjaisesti. DBMS muuntaa käsittelyn SQL-pohjaiseksi ja käyttää suoritussuunnitelman laskemiseen SQL-optimoijaa. Oraclen toteutuksessa XML-dokumenttien eheyttä voidaan valvoa UNIQUE ja FOREIGN KEY rajoitteilla. Foreign Key määreet voivat viitata myös SQL-tauluihin. Seuraavat esimerkit on poimittu Oraclen XML-demosta, missä purchaseorder-taulu on XMLtype-tyyppiä eli se on luotu komennolla CREATE TABLE purchaseorder OF XMLType ; (ilman sarakemäärityksiä) ja sinne talletetaan ostotilausten XML-dokumentteja. ALTER TABLE purchaseorder ADD CONSTRAINT reference_is_unique UNIQUE (XMLDATA."Reference") Tämä määrittää dokumenttien Reference-elementit yksikäsitteisiksi siten ettei samaa arvoa voi esiintyä missään muussa taulun dokumentissa! ALTER TABLE purchaseorder ADD CONSTRAINT user_is_valid FOREIGN KEY (XMLDATA."User") REFERENCES scott.emp(ename) Tämä määrittää User-elementin arvot viiteavaimiksi, joiden arvojen täytyy löytyä jostakin Scott-käyttäjän EMP-taulun rivin ename-sarakkeesta. Oracle 10gR2 toteuttaa kaikki SQLXML-standardin julkaisufunktiot (myös lähteen [sqlp14] alustavat laajennukset) ja on toteuttanut seuraavat laajennukset: XMLSEQUENCE: palauttaa XMLtype-kokoelman, jota voidaan käsitellä SELECT-lauseessa tauluna. XMLROOT: luo parametrina saamastaan XML-elementistä XML-dokumentti-instanssin, jossa XML-elementin eteen on lisätty XML-prolog. XML-dokumentin käsittelyyn Oracle on toteuttanut seuraavat SQLXML-funktiot: existsnode: palauttaa arvon 1 (true), jos XML-documentista löytyy parametrina annettu XPath-lausekkeen osoittama solmu, ja muuten 0 (false). extract: palauttaa XPath-lausekkeen osoittaman solmun XML-dokumenttina tai usean solmun joukon XML-fragmenttina. extractvalue: poimii Xpath-lausekkeen osoittaman solmun tekstiarvon SQL:n vastaavaan tietotyyppiin muunnettuna. updatexml: päivittää uudet arvot parametrina annettujen XPath-lausekkeiden osoittamille solmuille XML-dokumentissa. Oracle on lisäksi toteuttanut XML-dokumenttien käsittelyyn myös erillisiä PLSQL paketteja, joista esimerkiksi DBMS-SQLGEN on tarkoitettu XML-dokumenttien generointiin ja DBMS_XDB käsittelee XML DB:n repositoria. Oraclen versiossa 10gR2 on myös XQuery-kielen tuki itsenäisenä XQUERY-komentona sekä SQL-lauseissa käytettävänä SQLXML-standardin (luonnoksen) mukaisena XMLQueryfunktiona. Oracle on toteuttanut myös SQLXML-standardin (luonnoksen) mukaisen

11 HELIA TIKO-05 XML ja tietokannat 11 ( 23) XMLTable-funktion, jolla XMLQueryn tulos muunnetaan virtuaaliseen SQL-tauluun ja tätä voidaan edelleen käyttää SQL-lauseissa taululausekkeena. Oracle XML DB toteuttaa XML SQL duaalisuuden (XMLSQL duality) periaatteen eli XML-dokumentteihin voidaan luoda SQL-näkymät ja SQL-tauluihin voidaan luoda XMLnäkymät. Näin XQuery-kyselyjä voidaan kohdistaa myös SQL-tauluihin. Oraclen XQuery-toteutuksissa on käytettävissä seuraavat nimiavaruudet: lähde: Oracle XML DB Developer s Guide, taulukko 17-1 Näistä ora-nimiavaruudesta löytyy käteviä Oracle funktiolaajennuksia, joista ora:view toteuttaa SQL-taululle automaattisesti XML-näkymän siten että riveistä tulee ROWelementtejä ja sarakkeista elementtejä, joiden nimet kirjoitetaan isoilla kirjaimilla. XQUERY on uusi SQLPlus-komento. Se ei toimi vanhoilla SQLPlus-versioilla (esim 9.2) eikä JDBC-yhteyksillä. Seuraava Oracle 10gR2:n isqlplus:lla ajettu XQUERY-esimerkki listaa Scott-käyttäjän EMP-taulusta kaikki osaston 10 työntekijät: SET LONG 1000 SET LINESIZE 200 XQUERY for $e in ora:view("emp") where $erowdeptno= 10 return $e Result Sequence <ROW><EMPNO>9901<EMPNO><ENAME>DRAKE<ENAME><JOB>MANAGER<JOB><MGR>7839<MGR><HIREDATE> <HIREDATE><SAL>4000<SAL><COMM>0<COMM><DEPTNO>10<DEPTNO><ROW> <ROW><EMPNO>7782<EMPNO><ENAME>CLARK<ENAME><JOB>MANAGER<JOB><MGR>7839<MGR><HIREDATE> <HIREDATE><SAL>2450<SAL><DEPTNO>10<DEPTNO><ROW> <ROW><EMPNO>7839<EMPNO><ENAME>KING<ENAME><JOB>PRESIDENT<JOB><HIREDATE> <HIREDATE><SAL>5000<SAL><DEPTNO>10<DEPTNO><ROW> <ROW><EMPNO>7934<EMPNO><ENAME>MILLER<ENAME><JOB>CLERK<JOB><MGR>7782<MGR><HIREDATE> <HIREDATE><SAL>1300<SAL><DEPTNO>10<DEPTNO><ROW>

12 HELIA TIKO-05 XML ja tietokannat 12 ( 23) ja seuraava kysely sarakkeiden empno, ename ja sal tiedot niistä, joiden palkka on yli 3000 dollaria XQUERY for $e in ora:view("emp") where $erowsal > 3000 return <emp> {$erowempno}{$erowename}{$erowsal} <emp> XMLQueryEsimerkkinä XMLQuery-funktion käytöstä tarkastelemme kyselyä, joka listaa kaikkien osastojen tiedot DEPT-taulusta SELECT XMLQuery(' for $d in ora:view("dept") order by $drowdeptno return $d' returning content) AS output FROM DUAL OUTPUT <ROW><DEPTNO>10<DEPTNO><DNAME>ACCOUNTING<DNAME><LOC>NEW YORK<LOC><ROW> <ROW><DEPTNO>20<DEPTNO><D NAME>RESEARCH<DNAME><LOC>DALLAS<LOC><ROW> <ROW><DEPTNO>30<DEPTNO><DNAME>SALES<DNAME><LOC>CHICAGO <LOC><ROW> <ROW><DEPTNO>40<DEPTNO><DNAME>OPERATIONS<DNAME><LOC>BOSTON<LOC><ROW> DUAL on Oraclen virtuaalinen yhden rivin taulu, jota hyödynnetään yleisesti pelkkiä funktioita tai systeemitietoja kuten esimerkiksi CURRENT_DATE listattaessa. Seuraava XMLQuery-liitosesimerkki listaa niiden työntekijöiden nimen ja osastonimen niiltä, joiden palkka on yli 3000 dollaria, tehden jokaiselle työntekijälle oman <emp>-elementin ja tulossarakkeista elementin attribuutit: SELECT XMLQuery(' for $e in ora:view("emp"), $d in ora:view("dept") where $erowdeptno = $drowdeptno and $erowsal>3000 order by $erowempno return <emp ename="{$erowename}" dept="{$drowdname}">' returning content) AS output FROM DUAL OUTPUT <emp ename="king" dept="accounting"><emp><emp ename="drake" dept="accounting"><emp>

13 HELIA TIKO-05 XML ja tietokannat 13 ( 23) SQL-taulujen XML-näkymän kautta tai Nested Tables tauluihin talletettuihin XMLdokumentteihin kohdistuvat XPath- ja XQuery-kyselyt kääntyvät Oracle XML DB:n sisäisessä esitysmuodossa SQL-lauseiksi joille Oraclen optimoija ratkaisee lopullisen suoritussuunnitelman. Jos edellinen esimerkki ajetaan AUTOTRACE-tilassa, saadaan tästä seuraava suoritussuunnitelmaraportti: Seuraava esimerkki näyttää miten XMLQuery voi käsitellä suoraan XML-dokumenttitiedostoja (lähde: Oracle XML DB Developer s Guiden [Ada05] XQuerya esittelevä luku 17). Luodaan ensin XML DB:n repositoryn hakemistoon public XML-dokumentit emps.xml ja depts.xml: DECLARE res BOOLEAN; empsxmlstring VARCHAR2(300):= '<?xml version="1.0"?> <emps> <emp empno="1" deptno="10" ename="john" salary="21000"> <emp empno="2" deptno="10" ename="jack" salary="310000"> <emp empno="3" deptno="20" ename="jill" salary="100001"> <emps>'; deptsxmlstring VARCHAR2(300):= '<?xml version="1.0"?> <depts> <dept deptno="10" dname="administration"> <dept deptno="20" dname="marketing"> <dept deptno="30" dname="purchasing"> <depts>'; BEGIN res := DBMS_XDB.createResource('publicemps.xml', empsxmlstring); res := DBMS_XDB.createResource('publicdepts.xml', deptsxmlstring); END;

14 HELIA TIKO-05 XML ja tietokannat 14 ( 23) Seuraavassa SELECT-lauseen XMLQuery-funktiolla tulostetaan XQuery-kyselyn tulos. Kysely hakee emps.xml-dokumentista työntekijät, joiden vuosipalkka on yli dollaria, ja tulostaa näiden nimet sekä liitoksella haetun osaston nimen depts.xml-dokumentista: SELECT XMLQuery('for $e in doc("publicemps.xml")empsemp let $d := doc("publicdepts.xml")dept[@deptno = $e@deptno]@dname where $e@salary > order by $e@empno return <emp ename="{$e@ename}" dept="{$d}">' RETURNING CONTENT) FROM DUAL; XMLQUERY('FOR$EINDOC("PUBLICEMPS.XML")EMPSEMPLET$D:=DOC("PUBLICDEPTS.XML") <emp ename="jack" dept="administration"> <emp ename="jill" dept="marketing">

15 HELIA TIKO-05 XML ja tietokannat 15 ( 23) XSL XSLT Oracle XML DB tarjoaa infrastruktuurin myös XSL XSLT-käsittelyyn. Oracle XML DB tarjoaa 3 tapaa käyttää XSL-prosessointia: SQL-funktion XMLtrasform XMLType:n metodin transform( ) PLSQL paketin DBMS_XSLPROCESSOR Nämä kaikki odottavat sekä muokattavan XML-dokumentin että muokkausta ohjaavan XSLtyylisivun olevan XMLType-objekteja jossakin XML DB:n taulussa tai XML-dokumentteina XML DB:n repositorissa. Nämä tietokantaan talletetut dokumentit voivat olla täysin samanlaisia kuin ne olisivat tavallisessa tiedostomuodossa. Muunnoksen tuloksen oletetaan myös olevan validi XHTML-dokumentti eli sekä validi XML- että validi HTML-dokumentti. Muunnoskäsittely tapahtuu tietokantapalvelimessa optimoituna. XML Schema -pohjaisten dokumenttien osalta XML DB voi luottaa näiden validisuuteen ja käsiteltävä virtuaalinen DOM-puu voidaan instantioida muistiin "lazy load"-pohjaisesti vain sitä mukaa kuin tarvitaan. Tämä säästää sekä tarvittavaa muistia että prosessointityötä. CREATE TABLE xml_tab id number, xmlcol XMLType) XMLType COLUMN xmlcol XMLSCHEMA"<url>" ELEMENT "<elementname>" DBMS_XMLSCHEMA.RegisterSchema url XML Schema doc xml_tab id xmlcol INSERT XML doc CREATE TABLE xsl_tab id number, stylesheet XMLType) xsl _tab id stylesheet 1 INSERT SELECT XMLTransform( X.xmlcol, (SELECT stylesheet FROM xsl_tab WHERE id = 1)).getStringVal( ) AS result FROM xml_tab X XSL doc result XML doc Kuva xslt. Skenaario XML Schema -pohjaisen dokumentin XSLT-käsitelystä * * *

16 HELIA TIKO-05 XML ja tietokannat 16 ( 23) Lähteet: [Ste04] Steegmans et al: XML for DB2 Information Integration, IBM Redbooks, 2004 [db2ext] DB2 XML Extender Administration and Programming, Version 8.2, IBM, 2004 [Ada05] Drew Adams: Oracle XML DB Developer s Guide, 10g Release 2, Oracle, 2005 [sqlp14] SQL-200n Part 14 XML-Related Specifications (SQLXML), draft [sqlx05] ( )

17 HELIA TIKO-05 XML ja tietokannat 17 ( 23) Harjoitukset Info9-palvelimen TUX2-instanssiin on toteutettu Oraclen XML-demon rakenteita ja ICT03- käyttäjille on järjestetty riittävät XML-harjoituksen käyttöoikeudet. XQueryn tuki on toteutettu vasta Oracle 10gR2:sta alkaen, joten sitä ei nyt kokeilla. Harjoitus 1. Käynnistä isqlplus istunto tunnuksellasi selaimella osoitteesta Kokeile ajaa seuraavat komennot. Selitä mitä tapahtuu, miksi ja miten korjaisit. Huom: Oracle 9.2 edellyttää, että XML-dokumentti muunnetaan XMLTYPE-funktiolla ensin XMLType-tyyppiseksi ennen kuin se voidaan kirjata XMLType-tyyppiseen sarakkeeseen. Oracle 10gR2:sta lähtien XMLTYPE-funktion käyttö ei ole enää tarpeen. CREATE TABLE mytab ( id INT PRIMARY KEY, xml XMLtype ) ; INSERT INTO mytab (id, xml) VALUES (1, XMLTYPE('<?xml version="1.0"?><blah>')); INSERT INTO mytab (id, xml) VALUES (2, XMLTYPE('<?xml version="1.0"?><blah><blah>')); INSERT INTO mytab (id, xml) VALUES (3, XMLTYPE('<?xml version="1.0"?><blah>')); INSERT INTO mytab (id, xml) VALUES (4, XMLTYPE('<hello>')); INSERT INTO mytab (id, xml) VALUES (5, XMLTYPE('<?xml version="1.0"?><hello>hello world!<hello>')); INSERT INTO mytab (id, xml) VALUES (6, XMLTYPE('<?xml version="1.0"?><t1>liirum<t2><t1>laarum<t2>')); INSERT INTO mytab (id, xml) VALUES (7, XMLTYPE('<?xml version="1.0"?><t1>laarum<t1><t2>liirum<t2>')); INSERT INTO mytab (id, xml) VALUES (8, XMLTYPE('<t1>liirum<t2>laarum<t2><t1>')); SELECT * FROM mytab; ROLLBACK;

18 HELIA TIKO-05 XML ja tietokannat 18 ( 23) Harjoitus 2. Kokeile myös seuraavia komentoja. Miten nämä eroavat harjoituksen 1 komennoista? CREATE TABLE myxml OF XMLtype ; INSERT INTO myxml VALUES (XMLTYPE('<?xml version="1.0"?><blah>')); INSERT INTO myxml VALUES (XMLTYPE('<?xml version="1.0"?><blah>')); INSERT INTO myxml VALUES (XMLTYPE('<hello>')); INSERT INTO myxml VALUES (XMLTYPE('<?xml version="1.0"?><hello>hello world!<hello>')); INSERT INTO myxml VALUES (XMLTYPE('<?xml version="1.0"?> <t1>liirum<t2><t1>laarum<t2>')); SELECT * FROM myxml; ROLLBACK; Harjoitus 3. CLOB ja XMType sarakkeiden suoritusaikavertailu. Seuraava testi on poimittu Sean Dillonin Oracle Magazine MarchApril 2005 artikkelista Which Storage XML? -- XML as a CLOB drop table xmlclobs; drop table xmldocs; CREATE TABLE xmlclobs ( xmlclobs CLOB ); CREATE TABLE xmldocs ( x XMLtype ); set serveroutput on; DECLARE l_start timestamp; l_elapsed interval day to second(4); BEGIN l_start := systimestamp; for i in loop INSERT INTO xmlclobs VALUES ('<?xml version="1.0"?><blah>'); end loop; l_elapsed := systimestamp - l_start; dbms_output.put_line('clob:' to_char(l_elapsed)); l_start := systimestamp; for i in loop insert into xmldocs values (xmltype( '<?xmlversion="1.0"?> <blah>'));

19 HELIA TIKO-05 XML ja tietokannat 19 ( 23) end loop; l_elapsed := systimestamp - l_start; dbms_output.put_line('xmltype:' to_char(l_elapsed)); END; -- XML Using Object-Relational Storage -- Tähän tarvitaan ALTER SESSION oikeus alter session Set events='31098 trace name context forever' -- talletetaan XML Schema People.xsd XML DB:n repositoryyn DECLARE res BOOLEAN; schemastring VARCHAR2(1000):= '<?xml version="1.0"?> <xsd:schema xmlns:xsd=" xmlns:xsi=" <xsd:element name="person" type="persontype"> <xsd:complextype name="persontype"> <xsd:sequence> <xsd:element name="firstname"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:maxlength value="30"> <xsd:restriction> <xsd:simpletype> <xsd:element> <xsd:element name="lastname"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:maxlength value="50"> <xsd:restriction> <xsd:simpletype> <xsd:element> <xsd:element name="dateofbirth" type="xsd:datetime"> <xsd:sequence> <xsd:complextype> <xsd:schema>'; BEGIN res := DBMS_XDB.createResource('publicPeople.xsd', schemastring); END; -- rekisteröidään XML Schema: BEGIN DBMS_XMLSCHEMA.registerSchema (' xdburitype('publicpeople.xsd').getclob(), TRUE,TRUE,FALSE,TRUE ); End;

20 HELIA TIKO-05 XML ja tietokannat 20 ( 23) -- tehdään uudet taulut drop table xmlclobs; drop table xmldocs; -- CREATE TABLE xmlclobs ( xmlclobs XMLtype ); -- CREATE TABLE xmldocs OF XMLtype xmlschema " element "Person"; -- mitataan 1000 dokumentin lisäyksen aika set serveroutput on; DECLARE l_xml xmltype; l_start timestamp; l_elapsed interval day to second(4); BEGIN l_xml := xmltype( '<?xml version="1.0"?> <Person xmlns:xsi=" xsi:nonamespaceschemalocation= " <FirstName>Sean<FirstName> <LastName>Dillon<LastName> <DateOfBirth> <DateOfBirth> <Person>'); -- l_start := systimestamp; for i in loop INSERT INTO xmlclobs VALUES ( l_xml ); end loop; l_elapsed := systimestamp - l_start; dbms_output.put_line('xmlclobs:' to_char(l_elapsed)); -- l_start := systimestamp; for i in loop INSERT INTO xmldocs VALUES ( l_xml ); end loop; l_elapsed := systimestamp - l_start; dbms_output.put_line('xmldocs:' to_char(l_elapsed)); END; Tässä nähdään myös esimerkki Oraclen PLSQL-kielen ohjelmointiominaisuuksista. Harjoitus 4. Testataan XML Scheman vaikutusta lisättäessä XML-dokumentteja seuraavilla komennoille edellisen tehtävän tauluun xmldocs: -- tyhjennetään taulu ensin DELETE FROM xmldocs;

21 HELIA TIKO-05 XML ja tietokannat 21 ( 23) COMMIT; -- kokeillaan lisäyksiä INSERT INTO xmldocs VALUES( '<?xml version="1.0"?> <Person xmlns:xsi=" xsi:nonamespaceschemalocation= " <FirstName>Mickey<FirstName> <LastName>Mouse<LastName> <DateOfBirth> <DateOfBirth> <Person>') INSERT INTO xmldocs VALUES( '<?xml version="1.0"?> <Person xmlns:xsi=" xsi:nonamespaceschemalocation= " <FirstName>Minny<FirstName> <LastName>Mouse<LastName> <DateOfBirth> <DateOfBirth> <Person>') INSERT INTO xmldocs VALUES( '<?xml version="1.0"?> <Person xmlns:xsi=" xsi:nonamespaceschemalocation= " <FirstName>Sean<FirstName> <LastName>Connery<LastName> <DateOfBirth> <DateOfBirth> <Person>') INSERT INTO xmldocs VALUES( '<?xml version="1.0"?> <Person xmlns:xsi=" xsi:nonamespaceschemalocation= " <LastName>Connery<LastName> <FirstName>Sean<FirstName> <DOB> <DOB> <Person>') INSERT INTO xmldocs VALUES( '<?xml version="1.0"?> <Person xmlns:xsi=" xsi:nonamespaceschemalocation= " <FirstName>Donald<FirstName> <LastName>Duck<LastName> <BirthPlace>Hollywood<BirthPlace> <DateOfBirth> <DateOfBirth> <Person>')

22 HELIA TIKO-05 XML ja tietokannat 22 ( 23) Laadi vielä yksi komento, jolla lisäät jonkun uuden henkilön tiedot xmldocs-tauluun.

23 HELIA TIKO-05 XML ja tietokannat 23 ( 23) Harjoitus 5. Kokeillaan XPath-kyselyjä ja päivityksiä: -- onko tällaista dokumenttia? SELECT existsnode(value(x), 'Person[FirstName="Mickey"]') FROM xmldocs X -- keitä nämä ovat? SELECT extract(object_value,'personfirstname') FROM xmldocs WHERE existsnode(object_value,'person[lastname="mouse"]') = 1 -- päivitetään Mickeyn syntymäpäivä UPDATE xmldocs SET OBJECT_VALUE = updatexml(object_value,'persondateofbirthtext()',' ') WHERE existsnode(object_value,'person[firstname="mickey"]') = 1 Huom. OBJECT_VALUE on pseudosarake (pseudocolumn) jota voidaan käyttää (oliopohjaisen) XMLtype taulun aliasnimenä Oracle 10gR2:ssa korvaten aikaisemman value(x) -aliasnimen. Harjoitus 6. XMLSQL Duality luodaan SQL-näkymä xmldocs-taulun XML-dokumentteihin CREATE OR REPLACE VIEW People_View (fname, lname, DOB) AS SELECT extractvalue(value(p),'personfirstname'), extractvalue(value(p),'personlastname'), extractvalue(value(p),'persondateofbirth') FROM xmldocs p DESCRIBE People_View SELECT * FROM People_View Harjoitus 7. *** Sovella harjoituksia 3 ja 4 siten, että kopioit XML Scheman, lisäät siihen ID-elementin (kokonaislukutyyppiä), lisäät ID-elementit harjoituksen 4 XML-dokumentteihin ja näille uuden taulun, jossa sovelletaan muokkaamaasi XML Schemaa ja johon määrität ID-elementin yksikäsitteiseksi (unique) koko taulussa. Laadi myös yksikäsitteisyyden testaava tupladokumentti.

HELIA TIKO-05 XML ja tietokannat 1 ( 24) ICT03D Tieto ja tiedon varastointi Martti Laiho

HELIA TIKO-05 XML ja tietokannat 1 ( 24) ICT03D Tieto ja tiedon varastointi Martti Laiho HELIA TIKO-05 XML ja tietokannat 1 ( 24) XML ja tietokannat Miksi XML-dokumentteja tietokannassa? Unicode-merkistö ja XML-tietorakenne mahdollistavat yleispätevän alustariippumattoman tiedon talletusrakenteen

Lisätiedot

HELIA TIKO-05 XML ja tietokannat 1 ( 18) ICT03D Tieto ja tiedon varastointi Martti Laiho

HELIA TIKO-05 XML ja tietokannat 1 ( 18) ICT03D Tieto ja tiedon varastointi Martti Laiho HELIA TIKO-05 XML ja tietokannat 1 ( 18) XML ja tietokannat Miksi XML-dokumentteja tietokannassa? Unicode-merkistö ja XML-tietorakenne mahdollistavat yleispätevän alustariippumaton tiedon talletusrakenteen

Lisätiedot

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008 Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT Jouni Huotari S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

XQuery tietokannan kyselykielenä

XQuery tietokannan kyselykielenä XQuery tietokannan kyselykielenä Miro Lehtonen 31.10.2007 OUGF-syysseminaari Tietojenkäsittelytieteen laitos Sisältö Johdanto XQueryn perusteet + esimerkkejä Oracle ja XQuery Miro Lehtonen, XQuery tietokannan

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 DDL... 5 Tietokantaobjektien määrittely... 5 SQL:n tietotyypit... 6 Eheyssääntöjen määrittely... 9 Indeksin määrittely... 11 Syntaksikuvaukset...

Lisätiedot

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010 HELIA TIKO-05 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n tietotyypit... 8 Eheyssääntöjen määrittely...

Lisätiedot

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Muita tietokantaobjekteja Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Näkymät Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO NÄKYMÄT Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

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

SQL - STRUCTURED QUERY LANGUAGE

SQL - STRUCTURED QUERY LANGUAGE SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt

Lisätiedot

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

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

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Jouni Huotari Martti Laiho (materiaali on osa virtuaaliammattikorkeakoulun Tietokantaosaaja-opintokokonaisuutta) opintokokonaisuutta)

Lisätiedot

Tietokantakurssit / TKTL

Tietokantakurssit / TKTL Tietokantakurssit / TKTL Tietokantojen perusteet - tietokannan käyttö: SQL, sovellukset Tietokannan hallinta - tietokannanhallintajärjestelmän ominaisuuksia: tallennusrakenteet kyselyjen toteutus tapahtumien

Lisätiedot

3. Taulujen määrittely ja muuttaminen

3. Taulujen määrittely ja muuttaminen 3. Taulujen määrittely ja muuttaminen DDL: Taulujen luonti, muutos ja poisto DML: taulujen tietojen ylläpito Tapahtumien (transaktioiden) hallinta Näkymät, synonyymit ja muut tietokantaobjektit Taulujen

Lisätiedot

Lohdutus - tietokantadokumentti

Lohdutus - tietokantadokumentti Lohdutus - tietokantadokumentti Ohjelmiston tietokanta on toteutettu Oracle-ympäristöön, ja sitä käytetään ohjelmassa Hibernaten kautta. Tietokannan rakenne Tietokannan taulujen merkitykset Taulu Project

Lisätiedot

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN 3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN DDL: TAULUJEN LUONTI, MUUTOS JA POISTO DML: TAULUJEN TIETOJEN YLLÄPITO TAPAHTUMIEN (TRANSAKTIOIDEN) HALLINTA NÄKYMÄT, SYNONYYMIT JA MUUT TIETOKANTAOBJEKTIT TAULUJEN

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

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

Relaatiomalli ja -tietokanta

Relaatiomalli ja -tietokanta Relaatiomalli ja -tietokanta > Edgar. F. (Ted) Codd, IBM, 1969 < A Relational Model of Data for Large Shared Data Banks Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. > 70-luvun lopulla

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

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

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 29.3.2016 CSE-A1200 Tietokannat 29.3.2016 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat

Lisätiedot

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu HELIA 1 (13) Luento 2.9 Tietohakemistot 2 2 Coddin 12 säännöstä RDBMS:lle... 3 Oraclen tietohakemistonäkymät (osa) 4 Yleiset 4 Taulut 4 Säännöt 4 Näkymät 4 Synonyymit 5 Talletetut rutiinit 5 Käyttöoikeudet

Lisätiedot

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

HELIA 1 (15) Outi Virkki Tiedonhallinta

HELIA 1 (15) Outi Virkki Tiedonhallinta HELIA 1 (15) Luento Suorituskyvyn optimointi... 2 Tiedonhallintajärjestelmän rakenne... 3 Suunnittele... 4 SQL-komentojen viritys... 5 Tekninen ympäristö... 6 Fyysisen tason ratkaisut... 7 Indeksit...

Lisätiedot

Sovellusarkkitehtuurit

Sovellusarkkitehtuurit HELIA TiKo-05 1 (9) Sovellusarkkitehtuurit ODBC (Open Database Connectivity)... 2 JDBC (Java Database Connectivity)... 5 Middleware... 6 Middleware luokittelu... 7 Tietokanta -middleware... 8 Tapahtumamonitorit

Lisätiedot

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIEDONHALLINNAN PERUSTEET - SYKSY 2013 TIEDONHALLINNAN PERUSTEET - SYKSY 2013 Kurssikoodi: Saapumisryhmä: Luento 5 XX00AA79-3013 TU12S2 Pasi Ranne 11.9.2013 11/9/13 Helsinki Metropolia University of Applied Sciences 1 Tietokannan normalisoinnin

Lisätiedot

Hohde Consulting 2004

Hohde Consulting 2004 Luento 5: XQuery AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XQuery XQuery uudet funktiot sekvenssit muuttujat Iterointi järjestys suodatus järjestäminen Ehtorakenteet Muita toimintoja www.hohde.com

Lisätiedot

1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.

1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu. Helsingin yliopisto, Tietojenkäsittelytieteen laitos Kyselykielet, s 2006, Harjoitus 5 (7.12.2006) Tietokannassa on tietoa tavaroista ja niiden toimittajista: Supplier(sid,sname,city,address,phone,etc);

Lisätiedot

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki HELIA TIKO-05 1 (17) SQL / DML 4 Alikyselyt...2 Joukko-operaatiot...7 Yhdiste, unioni...8 Leikkaus...9 Erotus... 10 Tietokannan datan muokkaus... 11 Lisäys... 11 Yhden rivin lisääminen... 12 Useamman rivin

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

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX SQL - perusteet SQL - yleistä Esa Salmikangas InMics SE Oy versio 16.6.2003 SQL - perusteet 1 SQL - perusteet 2 SQL Structured Query Language SQL on tietokantojen käsittelyyn kehitetty kieli yleisimmät

Lisätiedot

Kari Aalto Saariston IT

Kari Aalto Saariston IT Saariston IT perustettu helmikuussa 2005 pitkä kokemus koulutuspalveluiden toimittamisesta Suomessa, Euroopassa ja Lähi-Idässä Arvot keskinäinen luottamus ja aito kumppanuus pitkäjänteinen yhteistoiminta,

Lisätiedot

6 XML-työkalut 1. 6 XML-työkalut

6 XML-työkalut 1. 6 XML-työkalut 6 XML-työkalut 1 6 XML-työkalut XML:n periaatteiden tutustumisen jälkeen on helpompi tutustua XML-dokumenttien käsittelyyn ja katseluun suunniteltuja työkaiuja. XML:n yleistymisen pahin pullonkaula on

Lisätiedot

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Agenda Regular Expression - funktiot Case-insensitive Sort Case-insensitive Seach Merge muutokset Tree-walking in 10g DML Returning Values

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...

Lisätiedot

LINUX-HARJOITUS, MYSQL

LINUX-HARJOITUS, MYSQL LINUX-HARJOITUS, MYSQL 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

Denormalisointia turvallisesti. Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso

Denormalisointia turvallisesti. Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso Denormalisointia turvallisesti Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso Timo Raitalaakso Senior Database Specialist Solita Oy 2001- - 2001 Tampereen Teknillinen korkeakoulu Tietokannat

Lisätiedot

Digitaalisen median tekniikat. JSP ja XML

Digitaalisen median tekniikat. JSP ja XML Digitaalisen median tekniikat JSP ja 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1 Digitaalisen median tekniikat JSP ja XML 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

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

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

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät HAAGA-HELIA Heti-09 1 (12) Näkymät Näkymät... 2 Eri tyyppisiä relaatioita... 2 Taulu - Tallennettu relaatio... 2 Tulosrelaatio - Kyselyn tulos... 2 Näkymä - Virtuaalirelaatio... 2 Näkymien määrittely...

Lisätiedot

TIETOKANNAT JOHDANTO

TIETOKANNAT JOHDANTO TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI 2000-2011 Tieto TAUSTAA Yritykselle tiedot ovat tärkeä resurssi päätöksenteon tukena (JIT) varastointi ja käyttö vaativat investointeja vrt. energia (lähde,

Lisätiedot

HELIA 1 (11) Outi Virkki Tiedonhallinta

HELIA 1 (11) Outi Virkki Tiedonhallinta HELIA 1 (11) Luento Käyttöoikeuksista ja tiedon suojauksesta... 2 Käyttäjätunnukset... 3 Tunnuksen luominen... 4 Oikeudet / Valtuudet... 5 Oikeuksien hallinta SQL:ssa... 6 Suojaustarkkuus?... 7 Roolit...

Lisätiedot

RDBMS - Yhteyskäytännöt

RDBMS - Yhteyskäytännöt HAAGA-HELIA Heti-09 1 (11) RDBMS - Yhteyskäytännöt Johdanto... 2 Upotettu SQL... 3 ESQL esimerkki... 4 ODBC... 5 Visual Basic ja ADO... 6 JAVA ja JDBC... 7 JDBC esimerkki... 8 Oracle ja JDBC... 9 Connection

Lisätiedot

TIETOKANNANHOITAJA DBA (DATABASE ADMINISTRATOR) JA TIETOKANNAN HALLINTA

TIETOKANNANHOITAJA DBA (DATABASE ADMINISTRATOR) JA TIETOKANNAN HALLINTA TIETOKANNANHOITAJA DBA (DATABASE ADMINISTRATOR) JA TIETOKANNAN HALLINTA JOUNI HUOTARI MARTTI LAIHO (materiaali on osa virtuaaliammattikorkeakoulun Tietokantaosaaja-opintokokonaisuutta) JOHDANTO Tietokannanhoitaja

Lisätiedot

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1 Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija OUGF syysseminaari 2002 Sivu 1 Oracle 8i (8.1.7) muistinkäyttöä ja viritystä: SGA ja PGA mitä ne on ja niihin vaikuttavat init.orat SGA:n rakenne Kannan

Lisätiedot

2. Käsiteanalyysi ja relaatiomalli

2. Käsiteanalyysi ja relaatiomalli 2. Käsiteanalyysi ja relaatiomalli lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Tietokannan suunnitteluprosessin osat sivu 2 Käsiteanalyysi ER-mallinnus, tietomallinnus

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

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

SELECT-lauseen perusmuoto

SELECT-lauseen perusmuoto SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää

Lisätiedot

HELIA TIKO-05 1 ( 12) ICT03D Tieto ja tiedon varastointi Martti Laiho 15.11.2005

HELIA TIKO-05 1 ( 12) ICT03D Tieto ja tiedon varastointi Martti Laiho 15.11.2005 HELIA TIKO-05 1 ( 12) Suorituskyky DBMS-järjestelmien keskeisiä laatuvaatimuksia ovat Tiedon luotettavuus (kattaen seuraavat: tietoturva, tiedon eheys, tiedon säilyvyys) Tiedon saatavuus (kattaen myös

Lisätiedot

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Tiedonhallintajärjestelmän rakenne ja Suorituskyky HELIA TIKO-05 1 (20) Tiedonhallintajärjestelmän rakenne ja Suorituskyky Tiedonhallintajärjestelmän rakenne... 2 SQL-käsittelijä... 3 Parsinta (Parser)... 3 Optimointi (Optimizer)... 3 Tilan käsittelijä...

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu HELIA 1 (15) Luento 2.6 Käyttöoikeuksista ja suojauksesta... 2 Suojausten suunnittelu... 3 Käyttäjätunnukset... 4 Tunnuksen luominen... 5 Tunnuksen muuttaminen... 6 Tunnuksen poistaminen... 6 Oikeudet

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen... 10 Loki-tiedosto... 11

Lisätiedot

XML and databases 246

XML and databases 246 XML and databases 246 A three-tier model of application development: Tier 1: a Web browser or a client application Tier 2: a Web server or an application server Tier 3: a database system or a transaction

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI Tavoite: Suunnitella käyttäjien tarvitsemat turvallisuusmekanismit ja säännöt. Toisin sanoen: tehdä tietokannasta turvallinen ja luotettava. Muistutus: Tietokanta

Lisätiedot

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 HOJ Haja-aiheita Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

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

D B. Kyselypuut ja ekvivalenssi

D B. Kyselypuut ja ekvivalenssi Kyselypuut ja ekvivalenssi Sisäisessä esityksessä kyselyt esitetään kyselypuuna lehdissä taulut juuressa lopputulos välisolmuina suoritettavat operaatiot s=select p=project j=join p (teos.nimi, kirjanro)

Lisätiedot

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

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

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa Samanaikaisuuden hallinta Optiot transaktionaalisissa työnkuluissa Sisältö Transaktionaaliset työnkulut Samanaikaisuuden ongelmat Optiot idea käyttökohteet WorkMan Optioiden toteutus Arviointi Transaktionaaliset

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (17) Outi Virkki Tiedonhallinta HELIA 1 (17) Luento 4.1 Looginen suunnittelu... 2 Relaatiomalli... 3 Peruskäsitteet... 4 Relaatio... 6 Relaatiokaava (Relation schema)... 6 Attribuutti ja arvojoukko... 7 Monikko... 8 Avaimet... 10 Avain

Lisätiedot

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia Tällä viikolla Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia 1.) Mainitse tietokonepelistä (kuvitteellisesta tai todellisesta) esimerkkitilanteita,

Lisätiedot

Tietohakemisto ja Transaktionkäsittely

Tietohakemisto ja Transaktionkäsittely HELIA TIKO-05 1 (18) Tietohakemisto ja Transaktionkäsittely Tietohakemisto...2 Oraclen tietohakemistonäkymät (osa)...3 Yleiset...3 Taulut...3 Säännöt...3 Näkymät...3 Synonyymit...4 Indeksit...4 Sekvenssit...4

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 8 XX00AA79-3013 TU12S2 Pasi Ranne 25.9.2013 25/9/13 Helsinki Metropolia University of Applied Sciences 1 Harjoitustyö Harjoitustöiden tilanne

Lisätiedot

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu HELIA 1 (16) Luento 3.2 Suorituskyvyn optimointi jatkuu...... 2 Tietojen tallennusratkaisut... 2 Tiedon tallennuksen yksiköitä... 3 Loogiset... 3 Fyysiset... 3 Tallennusmäärittelyt Oraclessa... 5 Loogiset

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely HAAGA-HELIA Heti-09 1 (14) Transaktionkäsittely Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen...

Lisätiedot

EXEC SQL BEGIN DECLARE SECTION

EXEC SQL BEGIN DECLARE SECTION Tietokantaohjelmointi Tietokantaa käytetään harvoin suoraan kyselyliittymän kautta Tyypillisesti käyttö tapahtuu sovellusohjelman kautta Sovellusohjelmaa laadittaessa vaihtoehtoja tietokantakäsitettelyn

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43 CS-A1150 Tietokannat 27.3.2018 CS-A1150 Tietokannat 27.3.2018 1 / 43 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat päivittää

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Näkymät ja tiedon suojaus

Näkymät ja tiedon suojaus HELIA TIKO-05 1 (23) Näkymät ja tiedon suojaus Näkymät...2 Eri tyyppisiä relaatioita...2 Taulu - Tallennettu relaatio...2 Tulosrelaatio - Kyselyn tulos...2 Työtaulut - Väliaikaisiksi luodut taulut...2

Lisätiedot

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho HAAGA-HELIA TIKO - Heti09 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n keskeiset tietotyypit... 8

Lisätiedot

Interfacing Product Data Management System

Interfacing Product Data Management System Interfacing Product Data Management System Tekijä: Työn valvoja: Mats Kuivalainen Timo Korhonen Esitelmän sisältö Työn suorituspaikka - Ideal Product Data Oy Käsitteitä Työn tavoitteet Työn tulokset 1/5

Lisätiedot

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta Tietokannan hallinta - kurssin tavoite Kurssilla opitaan periaatteet fyysisen tietokannan tallennuksesta ja käsittelystä tietokantakyselyiden muuntamisesta fyysisen tietokannan käsittelyoperaatioiksi kyselyn

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

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli SQL tietokantakieli Relaatiomalliin pohjautuvat tietokannat Perustana relaatiomallin mukainen näkemys tietojen rakenteesta ja käsittelystä Tietokantojen rakenteen määrittelyssä ja käsittelymahdollisuuksissa

Lisätiedot

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002 , XHTML ja CSS T-111.361 Hypermediadokumentin laatiminen 2002 XHTML CSS XSL Sisältö EXtensible Markup Language W3C Recommendation helmikuu 1998 SGML:n osajoukko Standard Generalized Markup Language Kevyempi

Lisätiedot

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta SQL tietokantakieli SQL:llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman

Lisätiedot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

käännös käännösvaiheessa tarkasettaan linkitys

käännös käännösvaiheessa tarkasettaan linkitys Upotettu SQL Ohjelmoitaessa 3GL kielillä, käytetään relaatiotietokantaa yleensä esikääntäjien avulla. Tietokannan valmistaja toimittaa funktiokirjaston, jota esikääntäjän avulla hyödynnetään. Ongelmaksi

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

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu HELIA 1 (21) Luento 4.1 Oliot ja Relaatiot... 2 Relaatiomalli... 2 Oliomalli... 2 Termejä... 4 Yhteensovituksen 3 tapaa... 5 1) Oliot relaatioina / tauluina ja RDBMS... 6 Olioluokka... 7 Olion identiteetti...

Lisätiedot

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

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy 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ä ja oikolukua

Lisätiedot

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli tietokantakieli :llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman käyttöön

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44 CS-A1150 Tietokannat 2.4.2019 CS-A1150 Tietokannat 2.4.2019 1 / 44 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan taulujen (relaatioiden) määrittelyt kirjoitetaan SQL:llä. Osaat päivittää

Lisätiedot