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

Koko: px
Aloita esitys sivulta:

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

Transkriptio

1 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 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 ( 24) 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 XML-dokumentiksi. DOM-mallin soveltamista massiivisten XML-dokumenttien käsittelyyn rajoittaa puurakenteen vaatima tila sovelluksen rajallisessa muistiavaruudessa. Javan tietokantaliittymä JDBC 3 API olin vielä täysin suuntautunut perinteisten SQL-taulujen käsittelyyn, mutta JDBC 4 huomioi myös XML-dokumenttien käsittelyn SQL-standardin 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 ohjelmointiparadigmana 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 julkaisufunktioita, joilla XML-dokumentti (tai XML-fragmentti) tai XML-näkymä voidaan rakentaa (composition) SQL-taulujen tiedoista. Täydellinen XML-dokumentti alkaa XML-prologilla <?xml version=..?> ja yksikäsitteisellä juurielementillä. Jos nämä puuttuvat muuten XML-syntaksin mukaisesta dokumentista käytetään tästä nimitystä XML-fragmentti (fragment) tai XML CONTENT.

3 HELIA TIKO-05 XML ja tietokannat 3 ( 24) Esimerkki 1 (sovitettu lähteestä [Che07]) XML-tietotyyppi: Luodaan Orders-taulu seuraavasti: CREATE TABLE Orders (orderid INTEGER, orderinfo XML ); ja kirjataan sinne rivi seuraavalla INSERT-komennolla INSERT INTO orders (orderid, orderinfo) VALUES (2, '<order> <orderdate> <orderdate> <customer id="wilmk"> <name>wilman Kala<name> <zip>12345<zip> <customer> <shipnote>freezed contents<shipnote> <order>' ); ja katsotaan mitä taulusta löytyy SELECT * FROM Orders; orderid orderinfo <order><orderdate> <orderdate><customer id="wilmk"> <name>wilman Kala<name><zip>12345<zip><customer> <shipnote>freezed contents<shipnote><order> SQL:2003-standardin 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

4 HELIA TIKO-05 XML ja tietokannat 4 ( 24) Esimerkki 2: (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 oli XML-käsittelyn osalta vielä kovin keskeneräinen. Seuraavan eli SQL:2006-standardin SQLXML versio tuntee jo W3C:n kehittämän 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. Esimerkki 3 (sovitettu lähteestä [Che07] jatkaen esimerkkiä 1): Luodaan XMLTABLE-funktiota käyttävä SQL-näkymä XML-sarakkeeseen: CREATE VIEW vorderinfo AS SELECT X.* FROM XMLTABLE ('db2-fn:xmlcolumn("orders.orderinfo")customer' COLUMNS id CHAR(8) PATH '@id', name CHAR(20) PATH 'name', postcode CHAR(5) PATH 'zip', note VARCHAR(50) PATH '..shipnote' ) AS X ; Tässä merkkijono 'db2-fn:xmlcolumn("orders.orderinfo")customer' on DB2:n toteutus näkymän kontekstisolmun määritykseen XML-sarakkeen dokumenteissa. Näkymän määrittämät sarakkeet poimitaan kontekstisolmusta lähtien määritettävillä XPath-lausekkeilla PATH-määreissä. Perinteisesti SQL-standardi ei ota kantaa talletusrakenteisiin, joten XML-tietotyypin talletus- (esimerkiksi mahdollinen shredding) ja indeksointiratkaisut ovat DBMS-järjestelmän toimittajan päätettävissä. (SQL:2006-standardi määrittää myös miten XML-dokumentteja voidaan päivittää, mutta tämä osuus on vielä tässä dokumentissa työn alla.)

5 HELIA TIKO-05 XML ja tietokannat 5 ( 24) XML Schema XML-dokumentin tulee olla hyvin muodostettu (well-formed). SQL-standardin XMLtietotyyppi takaa, että XML-sarakkeeseen talletettu dokumentti on hyvin muodostettu XMLdokumentti. XML-dokumentin rakenne voidaan määrittää XML Schema -kuvauksena ja dokumenttia, joka noudattaa osoittamaansa XML Schemaa sanotaan validiksi (valid). XML Scheman sijainti määritetään URL-määrellä, joka voi paikallinen tai Internet-osoite. SQL-standardi mainitsee, että scheman tulee olla SQL-palvelimelle rekisteröity, mutta ei ota kantaa siihen miten XML Schema toteutetaan paikallisesti tietokannassa. Standardi määrittää funktion XMLVALIDATE, jolla dokumentti voidaan validoida käyttäen rekisteröityä XML Schemaa. Standardi ei ota kantaa siihen milloin XML-dokumentin validoinnin tulee tapahtua ja toimittajien toteukset ovatkin tämän osalta hyvin erilaisia. SQL-tunnusten ja XML-tunnusten muodostussäännöt ja merkistöt eivät ole täysin vastaavat joten SQL-standardi määrittää tunnusten kuvautumisia varten kuvautumissäännöt (mapping). W3C:n määrittämä XML Schema on SQL-kieltä ilmaisuvoimaisempi tietotyyppien sallittujen arvojen määrityksessä. Lähes kaikille SQL-standardin tietotyypeille löytyy XML Schema nimiavaruudesta vastaava xsd:<tietotyyppi>, jota tarvittaessa voidaan tarkentaa SQLyhteensopivaksi sqlxml-nimiavaruuden annotaatioilla. XML Scheman facet-määreillä arvoalue on rajattavissa tarkemminkin (esim. minimi- ja maksimipituudet, pattern matching, precision, scale, jne). Seuraava esimerkki SQL-määrityksen DECIMAL(8,2) XML Schema sovituksesta on poimittu Connollyn [Con05] kirjan luvusta 30.4 <xsd:simpletype> <xsd:restriction base = "xsd:decimal"> <xsd:precision value = "9"> <xsd:scale value = "2"> <xsd:annotation> <sqlxml:sqltype name = "DECIMAL" userprecision = "8" scale = "2"> <xsd:annotation> <xsd:restriction> <xsd:simpletype> SQLXML standardi kehittynee vielä. Toistaiseksi ainakin IBM ja Oracle pyrkivät toteuttamaan tätä tietokantatuotteissaan. Ongelmana on standardin kehittymisen hitaus, minkä vuoksi toimittajat ovat ehtineet tehdä jo tästä poikkeavia ratkaisuja.

6 HELIA TIKO-05 XML ja tietokannat 6 ( 24) 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 IBM, Oracle ja Microsoft mukana ja 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 Atovan XMLSpyn 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.

7 HELIA TIKO-05 XML ja tietokannat 7 ( 24) Server-side XML-toteutuksia Tarkastelemme seuraavassa DB2 UDB :n, Microsoft SQL Server 2005:n ja Oracle 10gR2:n XML-toteutuksia. Verrattuna SQL-standardin näiden toteutukset poikkeavat XML document CLOB XML column CLOB value XML column tree XML column shredding into nested tables side tables unstructured binary structured kuva 2. XML-sarakkeen CLOB, binarytree tai shredded toteutus melkoisesti toisistaan. Keskeinen suunnitteluongelma on XML-sarakkeen talletusratkaisu: CLOB vai SQL-tauluihin purettu toteutus. Näiden vaihtoehdoksi on muodostunut "native XML" -puurakenne (binary XML). XML Scheman paikallinen talletus ja XML-sarakkeen vahva tyyppitystapa XML Schema -sidonnalla on kaikissa erilainen. 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. Kaikki tarkastellut DBMS-järjestelmät tarjoavat mahdollisuuksia XML-dokumentin ja dokumentin osien päivityksiin ainakin shredded-ratkaisuissa. SQLXML-julkaisufunktioissa on eroja. SQL Server käyttää näiden asemesta omaa SELECT FOR XML ratkaisuaan.

8 HELIA TIKO-05 XML ja tietokannat 8 ( 24) 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 julkaisufunktiot, 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). DB2 V9 purexml Versiossa v9.1, jota IBM kutsuu hybriditietokannaksi, on toteutettu SQL-standardin mukainen XML-tietotyyppi, SQLXML ja XQuery-kielen toteutus relaatiotietokannan ja SQL:n rinnalla. Näistä generoituva matalamman tason suoritussuunnitelman välikieli on yhteinen, mikä mahdollistaa DB2:n palvelujen hyödyntämisen myös XML-käsittelyssä. Tämän tutkiminen tätä tekstiä varten on vielä kesken. Tarkempia tietoja löytyy lähteestä [Ste07], version manuaaleista ja esimerkiksi IBM Systems Journal lehden teemanumerosta Celebrating 10 Years of XML Volume 45, Number 2, 2006.

9 HELIA TIKO-05 XML ja tietokannat 9 ( 24) 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 OPENXMLfunktiolla. CREATE TABLE PublishedMedia (ISBN Title Publisher varchar(50)) GO int PRIMARY KEY, varchar(50), 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

10 HELIA TIKO-05 XML ja tietokannat 10 ( 24) 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ä.

11 HELIA TIKO-05 XML ja tietokannat 11 ( 24) 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.

12 HELIA TIKO-05 XML ja tietokannat 12 ( 24) 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

13 HELIA TIKO-05 XML ja tietokannat 13 ( 24) 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. Seuraava 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>

14 HELIA TIKO-05 XML ja tietokannat 14 ( 24) 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> Esimerkkinä 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>

15 HELIA TIKO-05 XML ja tietokannat 15 ( 24) 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;

16 HELIA TIKO-05 XML ja tietokannat 16 ( 24) 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">

17 HELIA TIKO-05 XML ja tietokannat 17 ( 24) 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ä * * *

18 HELIA TIKO-05 XML ja tietokannat 18 ( 24) Lähteet: [Ada05] Drew Adams: Oracle XML DB Developer s Guide, 10g Release 2, Oracle, 2005 [db2ext] DB2 XML Extender Administration and Programming, Version 8.2, IBM, 2004 [Che07] Chen et al: DB2 9 purexml Guide, IBM Redbooks, 2007 [Con05] Connolly and Begg: Database Systems, 4 th ed., Addison-Wesley, 2005 [sqlp14] SQL-200n Part 14 XML-Related Specifications (SQLXML), draft [sqlx05] ( ) [Ste04] Steegmans et al: XML for DB2 Information Integration, IBM Redbooks, 2004

19 HELIA TIKO-05 XML ja tietokannat 19 ( 24) 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: 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; SELECT * FROM mytab; COMMIT; 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>'));

20 HELIA TIKO-05 XML ja tietokannat 20 ( 24) 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>')); 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

21 HELIA TIKO-05 XML ja tietokannat 21 ( 24) 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; -- tehdään uudet taulut drop table xmlclobs; drop table xmldocs; -- CREATE TABLE xmlclobs ( xmlclobs XMLtype ); -- CREATE TABLE xmldocs OF XMLtype

22 HELIA TIKO-05 XML ja tietokannat 22 ( 24) 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; COMMIT; -- kokeillaan lisäyksiä INSERT INTO xmldocs VALUES( '<?xml version="1.0"?> <Person xmlns:xsi=" xsi:nonamespaceschemalocation= " <FirstName>Mickey<FirstName>

23 HELIA TIKO-05 XML ja tietokannat 23 ( 24) <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>') Laadi vielä yksi komento, jolla lisäät jonkun uuden henkilön tiedot xmldocs-tauluun.

24 HELIA TIKO-05 XML ja tietokannat 24 ( 24) 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 ( 23) ICT03D Tieto ja tiedon varastointi Martti Laiho

HELIA TIKO-05 XML ja tietokannat 1 ( 23) ICT03D Tieto ja tiedon varastointi Martti Laiho 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

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

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

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

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

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 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

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

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

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

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

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

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

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

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 (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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008 HAAGA-HELIA TIKO-05 1 (19) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Yksilön eheyssääntö ja Pääavain... 9 Viite-eheyssääntö

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DOORSin Spreadsheet export/import

DOORSin Spreadsheet export/import DOORSin Spreadsheet export/import 17.10.2006 SoftQA Oy http/www.softqa.fi/ Pekka Mäkinen Pekka.Makinen@softqa.fi Tietojen siirto DOORSista ja DOORSiin Yhteistyökumppaneilla ei välttämättä ole käytössä

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

SQL-kielen perusteet. Tietokantojen perusteet 4.4.2008

SQL-kielen perusteet. Tietokantojen perusteet 4.4.2008 SQL-kielen perusteet Tietokantojen perusteet 4.4.2008 Sisällys Tietokannan käsittely ja ylläpito SQL tiedonmäärittelykielenä Tietokantataulun ja sen osien määrittely SQL tiedonkäsittelykielenä SQL-kysely

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

OpenOffice.org Base 3.1.0

OpenOffice.org Base 3.1.0 OpenOffice.org Base 3.1.0 Sisällysluettelo 1 Tietokannan luominen...1 2 Taulukon eli taulun luominen...3 3 Kysely...9 4 Raportti...14 1 Tietokannan luominen Tietokanta on kokoelma tietoja, joilla on yhteys

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

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

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

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

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

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto

Lisätiedot

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli HAAGA-HELIA heti09 1 (27) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Arvojoukkoeheyssääntö... 8 Pääavain ja yksilön eheyssääntö...

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

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

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