91
UNIVERZITET U SARAJEVU ELEKTROTEHNIČKI FAKULTET SARAJEVO PRIMJENA I IMPLEMENTACIJA ORACLE WEB SERVISA I SPATIAL TIP PODATAKA - DIPLOMSKI RAD - Mentor: Kandidat: Doc.Dr. Dženana Đonko, dipl.el.ing Mladen Antunović

47165895-MladenANTUNOVIC

  • Upload
    peka76

  • View
    45

  • Download
    1

Embed Size (px)

DESCRIPTION

pdf

Citation preview

Page 1: 47165895-MladenANTUNOVIC

U N I V E R Z I T E T U S A R A J E V U

E L E K T R O T E H N I Č K I F A K U L T E T S A R A J E V O

PRIMJENA I IMPLEMENTACIJA ORACLE WEB SERVISA I

SPATIAL TIP PODATAKA

- DIPLOMSKI RAD -

Mentor: Kandidat: Doc.Dr. Dženana Đonko, dipl.el.ing Mladen Antunović

Page 2: 47165895-MladenANTUNOVIC

| 1

Sažetak

Osnova komunikacije između distribuiranih sistema predstavlja razmjena podataka. Podaci se smještaju u bazu podataka na različite načine i istim se može pristupati na unaprijed određeni način. Oracle baza podataka predstavlja relacioni model baze podataka, gdje su podaci čuvaju u tabelama koje se međusobno vezane po unaprijed definisanim standardima – relacijama. Manipulacija podacima u Oracle bazi podataka se vrši pomoću SQL jezika. U Oracle bazi podataka moguće je smještati podatke različitog tipa, jedan od tipova podataka predstavlja prostorni tip podataka (SDO_GEOMETRY). Upravljanje prostornim tipom podataka se vrši pomoću funkcija i operatora omogućavajući unos novih i modifikovanje postojećih podataka.

Osim smještanja podataka Oracle baza podataka nudi mehanizme za pristup i manipulaciju podataka pomoću Oracle web servisa. Oracle web servisi koriste standardizovan sistem razmjene XML poruka po principu zahtjev-odgovor. Pomoću Oracle web servisa realizovanog kao PL/SQL procedura ili fukncija moguće je raditi nad svim tipovima podataka koje podržava Oracle baza podataka.

Internet bazirane aplikacije se odlikuju kao distribuirani sistemi gdje korisnik pomoću udaljene klijentske aplikacije pristupa internet stranici s ciljem dobivanja određenih informacija. Pomoću Javascript programskog jezika moguće je o okviru HTML stranica implementirati dinamičke sadržaje koji se mjenjaju zavisno od zahtjeva korisnika.

Abstract

Concept of comunnication between distributed systems consist of exchanging information. Data is usually stored in database so it is possible to access data from database for reading or changing in different ways, depend on database system used. Oracle database is relational database model, data are stored in tables connected with specific rules called relations. Structured Query Language is used for data manipulation in Oracle database system. In Oracle database is possible to store different kind of data, among others and spatial data type (SDO_GEOMETRY). Managing spatial data is performed using operators and functions enabling changing existing and entering new data.

Except Oracle database system used for storing different kind of data, there are mechanisms for accessing and manipulating stored data using Oracle web services. Oracle web services use standardized way of exchanging XML messages using request-response mechanism. Oracle web servis implemented as PL/SQL procedure or function can manipulate with all datatypes defined in Oracle database.

Internet based applications are distributed over different physical locations where application user access web pages for searching needed informations. Using Javascript program language inside HTML web pages is possible to implement dynamic content that is going to be changed depending on user request

Page 3: 47165895-MladenANTUNOVIC

| 2

Sadržaj:

UVOD ............................................................................................................................................................. 4

1. UVOD U BAZE PODATAKA ........................................................................................................................ 6

1.1. ŠTA JE BAZA PODATAKA ........................................................................................................................................ 6

1.2. ŠTA JE SQL (STRUCTURED QUERY LANGUAGE) ....................................................................................................... 10

1.3. ISTORIJA BAZA PODATAKA ................................................................................................................................... 11

2. ORACLE BAZA PODATAKA ...................................................................................................................... 14

2.1. ARHITEKTURA ORACLE BAZE PODATAKA ................................................................................................................ 14

2.1.1. Mrežna arhitektura .............................................................................................................................. 14

2.1.2. Aplikaciona arhitektura ....................................................................................................................... 15

2.2. FIZIČKA STRUKTURA ORACLE BAZE PODATAKA ......................................................................................................... 16

2.3. LOGIČKA STRUKTURA ORACLE BAZE PODATAKA ....................................................................................................... 18

2.3.1. Šeme baze podataka i objekti šema baze podataka ............................................................................ 20

2.4. ORACLE XML BAZA PODATAKA ............................................................................................................................ 22

2.4.1. Oracle XML DB protokol arhitektura .................................................................................................... 22

2.4.2. Pristup Oracle XML bazi podataka iz programskih jezika .................................................................... 23

2.4.3. XML (eXtensible Markup Language) .................................................................................................... 23

2.4.3.1. Poređenje XML-a sa HTML-om ............................................................................................................................... 24 2.4.3.2. Prednosti i mogućnosti XML-a ................................................................................................................................ 24 2.4.3.3. Prikazivanje XML dokumenata ................................................................................................................................ 25 2.4.3.4. XML Document Object Model (XML DOM) ............................................................................................................ 27 2.4.3.5. Document Type Definition (DTD) ............................................................................................................................ 28 2.4.3.6. Pravila pisanja XML dokumenata (XML sintaksa) .................................................................................................. 28

2.5. PREDNOSTI I NEDOSTACI ORACLE BAZE PODATAKA ................................................................................................... 29

2.5.1. Nove i poboljšane mogućnosti Oracle 11g baze podataka .................................................................. 30

2.6. ISTORIJA ORACLE BAZE PODATAKA ........................................................................................................................ 31

2.6.1. Pregled razvoja Oracle koorporacije od nastanka do danas ................................................................ 32

3. ORACLE SPATIAL .................................................................................................................................... 38

3.1. UPRAVLJANJE PROSTORNIM INFORMACIJAMA ......................................................................................................... 38

3.1.1. Operacije nad prostornim tipom podataka ......................................................................................... 39

3.1.2. Smještanje prostornih podataka u bazu podataka .............................................................................. 40

3.1.3. Oracle spatial arhitektura .................................................................................................................... 41

3.2. SDO_GEOMETRY TIP PODATAKA ...................................................................................................................... 42

3.2.1. Tipovi geometrijskih podataka podržani u SDO_GEOMETRY Oracle tipu podataka ............................ 43

3.2.1.1. Points (Tačke) ........................................................................................................................................................... 43 3.2.1.2. Line strings (Linije) ................................................................................................................................................... 43 3.2.1.3. Poligoni i površine (Polygons and Surface) ............................................................................................................ 44 3.2.1.4. Geometrijska tijela (Solids)...................................................................................................................................... 44 3.2.1.5. Kolekcije (Collections) .............................................................................................................................................. 44

Page 4: 47165895-MladenANTUNOVIC

| 3

3.2.2. Tip, atributi i vrijednosti SDO_GEOMETRY tipa .................................................................................... 45

3.2.2.1. SDO_GTYPE ............................................................................................................................................................... 45 3.2.2.2. SDO_SRID .................................................................................................................................................................. 46 3.2.2.3. SDO_POINT ............................................................................................................................................................... 48 3.2.2.4. SDO_ELEM_INFO i SDO_ORDINATES atributi ........................................................................................................ 49

3.3. GEOKODIRANJE ................................................................................................................................................ 51

3.3.1.1. Arhitektura Oracle Geokoder-a............................................................................................................................... 52

3.4. PRIMJENA, PREDNOSTI I NEDOSTACI SPATIAL PODATAKA ........................................................................................... 54

3.4.1. Primjena Spatial podataka u praksi ..................................................................................................... 56

3.4.2. Prednosti i nedostaci Oracle Spatial tipa podataka ............................................................................. 57

4. WEB SERVIS ........................................................................................................................................... 59

4.1. DEFINICIJA WEB SERVISA .................................................................................................................................... 59

4.2. ARHITEKTURA WEB SERVISA ................................................................................................................................ 60

4.2.1. Web servis uloge .................................................................................................................................. 60

4.2.2. Web servis skup protokola ................................................................................................................... 60

4.3. OSNOVNI PRINCIPI I TEHNOLOGIJE WEB SERVISA ..................................................................................................... 61

4.3.1. XML i XML-RPC ..................................................................................................................................... 61

4.3.1.1. XML-RPC data model ............................................................................................................................................... 62 4.3.1.2. XML-RPC Request structure (struktura zahtjeva) .................................................................................................. 63 4.3.1.3. XML-RPC Response structure (struktura odgovora) .............................................................................................. 63

4.3.2. WSDL .................................................................................................................................................... 64

4.3.3. SOAP (Simple Object Access Protocol) ................................................................................................. 69

4.3.3.1. SOAP 101 .................................................................................................................................................................. 69 4.3.3.2. SOAP Zahtjev ............................................................................................................................................................ 69 4.3.3.3. SOAP Odgovor .......................................................................................................................................................... 70 4.3.3.4. SOAP preko HTTP-a .................................................................................................................................................. 70

4.3.4. UDDI (Universal Description Discovery and Integration) ..................................................................... 72

4.3.4.1. UDDI tehničke specifikacije ..................................................................................................................................... 72

4.4. WEB SERVIS U POREĐENJU SA DRUGIM TEHNOLOGIJAMA .......................................................................................... 73

4.5. PRIMJENA, UPOTREBA I PREDNOSTI WEB SERVISA .................................................................................................... 73

5. PRIMJENA ORACLE WEB SERVISA I SPATIAL TIP PODATAKA ..................................................................... 76

5.1. POSTAVKE NA ORACLE BAZI PODATAKA – UPOTREBA XML WEB SERVISA ...................................................................... 76

5.2. OMOGUĆAVANJE UPOTREBE ORACLE WEB SERVISA KORISNICIMA ............................................................................... 77

5.3. PL/SQL PROCEDURA KAO WEB SERVIS .................................................................................................................. 77

5.4. IBM FRAMEWORK ZA PRISTUP SOAP WEB SERVISIMA ............................................................................................. 79

5.5. REALIZACIJA ORACLE WEB SERVISA, PRISTUP BAZI PODATAKA POMOĆU IBM JAVASCRIPT FRAMEWORK-A U PRAKSI .............. 81

ZAKLJUČAK ................................................................................................................................................... 89

LITERATURA .................................................................................................................................................. 90

Page 5: 47165895-MladenANTUNOVIC

| 4

UVOD

U današnje vrijeme u svim društvenim krugovima se može čuti kako živimo u vremenu globalizacije, eri Interneta i informatizacije. Počevši od traženja zakonskih dokumenata o dokazu mjesta boravka, identiteta, posjedovnih listova i slično čujemo pojmove kao što su baze podataka, internet stranice, internet bazirane aplikacije. Da li smo svi svjesni o čemu govorimo ?

Osnovna ideja ovog diplomskog rada je prikazati na jednostavan način, na najnižem nivou apstrakcije, pojmove sa kojima se susrećemo u svakodnevnom životu, iz dana u dan primorani koristit nove moderne tehnologije kao što su moderni mobilni uređaji, računari, navigacioni sistemi.

Rad je organizovan u pet poglavlja gdje je kroz svako poglavlje opisana korištena tehnologija počevši od jednostavnih informatičkih pojmova, njihovog definisanja, načina upotrebe do složenih pojmova i integrisanja navedenih tehnologija u internet baziranu aplikaciju.

Uvod u baze podataka – Opšti pojmovi vezani za sisteme za upravljanje bazama podataka,

pojam baze podataka, istorijat baza podataka od nastanka do danas, modeli baza podataka i način pristupa bazama podataka s ciljem manipulacije podacima smještenim u bazu podataka.

Oracle baza podataka – Sistem za upravljanje bazama podataka, fizička i logička

arhitektura Oracle baze podataka. Od čega se satoji baza podataka, objekti koji čine Oracle bazu podataka, XML kao univerzalni način za smještanje i prenos podataka, podrška XML-u kroz Oracle bazu podataka. Pristup podacima smještenim u Oracle bazu podataka, istorijat razvoja Oracle sistema za upravljanje bazama podataka, prednosti korištenja Oracle baze podataka.

Oracle spatial – Tip podataka vlasništvo Oracle baze podataka, podrška smještanju

prostornih informacija u Oracle bazu podataka. Arhitektura Oracle spatial-a, operacije nad podacima i način predstavljanja lokacija objekata u Oracle bazi podataka, manipulacija podacima, tipovi geometrijskih objekata podržani kroz Oracle spatial, Oracle geokoder, upotreba prostornog tipa u praksi, prednosti i nedostaci.

Web servis – Definicija i arhitektura web servisa, web servis skup protokola,

implementacija i način korištenja web servisa, univerzalnost i standardiziranost u sistemu razmjene poruka klijent-server. Dokumenti koji opisuju web servis, poređenje sa drugim tehnologijama, prednosti i upotreba web servisa.

Primjena Oracle web servisa i spatial tip podataka – Način omogućavanja i upotrebe

Oracle XML web servis tehnologije. Integracija tehnologija Oracle baze podataka, XML sistema razmjene poruka, web servisa i Google mape realizovan kroz praktični dio rada koristeći IBM-ov AJAX framework za pristup prostornim podacima pomoću internet pretraživača uz prikaz lokacija na Google mapi.

Page 6: 47165895-MladenANTUNOVIC

| 5

Postavka diplomskog rada

U okviru teoretskog djela diplomskog rada opisati tehnologiju baza podataka, Oracle bazu podataka kao jedan od sistema za upravljanje bazama podataka, tehnologiju web servisa, Oracle prostorni tip podataka sa osnovnim funkcijama, operatorima i geometrijskim tijelima koji su podržani u Oracle bazi podataka, web servis, Oracle web servis implementiran kao PL/SQL procedura ili funkcija.

U praktičnom djelu diplomskog rada implementirati internet stranicu gdje se razmjena podataka između klijenta i servera vrši korištenjem Oracle baze podataka kao sistema za smještanje podataka, Oracle prostornog tipa podataka i Oracle web servisa pomoću kojeg se vrši manipulacija prostornim podacima.

__________________________________

Doc.dr. Dženana Đonko, dipl.el.ing.

Page 7: 47165895-MladenANTUNOVIC

| 6

1. Uvod u baze podataka

1.1. Šta je baza podataka

Termin “database” se godinama koristi da se opiše skup (selekcija) proizvoda i/ili sistema koji uključuju skup, počevši od kolekcije datoteka do kompleksne strukture koju čine korisnički interfejsi, uređaji za smještanje podataka, sigurnosni mehanizami za pristup podacima, klijent-server tehnologije itd. Na primjer, kompanija A čuva podatke o zaposlenima, kao što su lični podaci, radno mjesto u kompaniji i visina mjesečne zarade u tekstualnim datotekama za svakog radnika pojedinačno. S druge strane kompanija B koja prestavlja regionalnu kompaniju za mjerenje i naplatu električne energije podatke o svojim korisnicima čuva u integrisanom informacionom sistemu te na osnovu tih podataka generiše izvještaje o potrošnji električne energije za određeni period, automatski kreira račune za potrošenu električnu energiju i slično. U oba navedena slučaja, kompanije se ophode prema svojim sistemima kao prema bazama podataka (“database”) bez obzira kolko je jedan sistem kompleksniji od drugog. Zavisno kako se koristi baza podataka, koju količinu podataka čuva, kompleksnosti podatka koji se nalaze u bazi podataka i brojni drugi parametri određuju šta je ustvari baza podataka. Najjednostavnije rečeno baza podataka predstavlja kolekciju podataka koji su međusobno povezani na specifičan način. Na primjer baza podataka jedne biblioteke sadrži informacije o autorima knjiga, naslovima knjiga i izdavačima. Također baza podataka je kolekcija međusobno povezanih podataka. Podaci moraju biti organizovani i klasificirani u struktuiranom formatu kako je opisano u metapodacima (“metadata”), koji opisuju podatke koji se nalaze u bazi podataka. Zajedno podaci i metapodaci čine jednu logičku cjelinu načina organizacije podataka kako bi se istim moglo efikasno pristupat, te održavat bazu podataka. Najjednostavniji način da se razumije pojam baze podataka je analogija sa telefonskim imenikom. Telefonski imenik sadrži imena, adrese i brojeve telefona za određeni grad,državu ili region. Ako se telefonski imenik posmatra kao baza podataka može se uočiti zavisnost među podacima(ime, adresa, telefonski broj) i uvidjeti struktuiranost u organizaciji podataka (metapodaci) koji određuju kako su stranice telefonskog imenika struktuirane kao i redoslijed telefonskih brojeva unesenih u imenik.

Bez određene strukture podataka unutar telefonskog imenika bilo bi gotovo nemoguće pronaći određenu osobu ili broj telefona. Na isti način kako struktura telefonskog imenika određuje informacije potrebne korisniku, metapodaci u bazama podataka određuju strukturu logičke organizacije podataka.

Kada govorimo o bazama podataka postoje četri osnovna modela baza podataka koje su najčešće u upotrebi:

a) Hijerarhijski model, b) Mrežni model, c) Relacioni model d) Objektno-relacioni model

Page 8: 47165895-MladenANTUNOVIC

| 7

a) Hijerarhijski model

U začecima nastanka baza podataka jedan od prvih modela dizajna baza podatake je bio hijerarhijski model. Ovaj model definira bazu kao jednostavnu strukturu podataka gdje su svi slogovi organizovani kao roditelj-djete veza formirajući invertovano drvo. Pomoću drveta se kreira logička struktura kategorija i podkategorija koristeći slogove da se predstave logičke jedinice podataka.

Slika 1.1 Hijerahijska organizacije baze podataka Kao što se može vidjet sa slike 1.1. slog roditelj se može povezati sa više slogova djece ali slog dijete se može vezati za samo jednog roditelja. Ovakva struktura podataka je slična strukturi koju je moguće vidjeti kroz korisnički interfejs aplikacija za upravljanje datotekama kao što je Windows explorer(Windows) ili Konqueror(Linux). U slučaju organizacije datoteka na osnovu prethodnog dijagrama imali bi glavni direktorij Grupa, dva poddirektorija Korisnik i Uloga a unutar direktorija Uloga bi imali direktorij Dozvola kao što je prikazanno na sljedećoj slici (Slika 1.2).

Slika 1.2. Hijerarhijska organizacija datotetka

Jedna od najuspješnijih implementacija hijerarhijskog modela baze podataka predstavlja IBM-ov Informacioni sistem za upravljanje (Information Management System - IMS) realizovan 1960-te godine i još uvijek široko korišten na IBM-ovim superračunarima. Kakogod, na stranu popularnost hijerarhijskog modela, ipak je ovaj način organizacije podataka neiskoristiv za veliki broj današnjih aplikacija. Bez obzira na jednostavnost roditelj-djete zavisnosti, organizacija podataka je precizno određena strukura koja za rezultat ima komplikovan proces navigacije (kretanja) kroz stablo koje zahtijeva, od onog koji razvija aplikaciju, kretanje kroz stablo od roditelja prema djeci putem kojim su povezani slogovi da bi došli do informacije koja im je potrebna. Slogovi se mogu čitati jedan po jedan krećući se kroz stablo na gore i na dole kroz

Page 9: 47165895-MladenANTUNOVIC

| 8

nivoe hijerarhije što često zahtijeva komplikovane promjene nad bazom podataka ili nad aplikacijom da bi se ispoštovala hijerarhijska struktura podataka. Također hijerarhijska struktura podataka ne podržava kompleksne veze između slogova. I naravno slog dijete može se povezati samo sa jednim slogom roditeljem.

Bez obzira na sva ograničenja hijerarhijskog modela velika količina podataka se još uvijek smješta u hijerarhijski organizovane baze podataka. Veliki broj sistema za upravljanje koriste hijerarhijski model, kao na primjer sistem za upravljanje korisnicima (Windows - Active directory, Linux - OpenLDAP). Sistem za upravljanje datotekama omogućavajući korisniku jednostavno pretraživanje koristeći sve prednosti i mane hijerarhijskog načina organizacije podataka.

b) Model mreže

Kao rezultat rada sa hijerarhijskim bazama podataka uz sva ograničenja koja posjeduje prethodni model, 1970. godine nastao je novi model baze podataka, sagrađen na temeljima hijerarhijskog modela, mrežni model baze podataka. Mrežni model je poboljšanje hijerarhijskog modela tako što je, kao jedan od novih mogućnosti, omogućeno da slogovi mogu učestvovati u više veza roditelj-djete. Zamislimo informacioni sistem koji upravlja podacima o ljudskim resursima tj, zaposlenima, njihovim vezama sa kupcima, narudžbama te poslovima koje obavljaju zaposleni.

Slika 1.3. Mrežni model organizacije podataka Ako svaki od navedenih entiteta operiraju bez međusobne interakcije tada je potreba za mrežnim modelom baze podataka minimalna. Kakogod, ako se uvidi da postoji veza između narudžbe i zaposlenog koji je napravio narudžbu, kupca koji je kupio naručene proizvode, vrste proizvoda koji je kupljen tada je očigledno da hijerarhijski model ne može udovoljiti adekvatno zahtjevima tada se koristi mrežni model jer se radi o kompleksnijim vezama između slogova u bazi podataka.

Page 10: 47165895-MladenANTUNOVIC

| 9

Mrežni model još uvijek ima mnogo nedostataka, ali za razliku od hijerarhijskog modela omogućava dosta fleksibilnije programiranje aplikacija koje rade s bazama podataka. Također bilo kakva promjena u strukturi baze podataka rezultira promjenama na nivou aplikacije i može dovesti do velikih problema. Iz navedenih razloga baza podataka treba unaprijed biti dobro dizajnirana, međutim u većini slučajeva to u potpunosti nije moguće postići.

c) Relacioni model

Relacioni model baza podataka je nastao kao odgovor na ograničenja prethodna dva modela (hijerarhijski, mrežni) krajem 1970-te godine i početkom 1980-tih godina kao standard za novu generaciju baza podataka. Relacioni model baza podataka donio je radikalne promjene u odnosu na prethodne modele koji zahtjevaju veliki broj ograničenja u samom dizajnu baze podataka prema jednom od navedenih modela. Pristup bazi podataka hijerarhijskog modela leži na unaprijed definisanoj strukturi baze podataka tako da baza mora bit kodirana unutuar programskog jezika aplikacije. Kad se promijeni struktura baze podataka mora se mijenjati i struktura aplikacije. Međutim relaciona baza podataka je nezavisna od aplikacije. Moguće je modificirati bazu podataka bez da se mijenja struktura aplikacije zato što relacioni model mijenja logiku roditelj-djete sa strukturom baziranom na kolonoma i redovima koji čine tabele u kojima se smještaju podaci. Rezultat ovakvog načina organizacije podataka jeste mogućnost kreiranja kompleksnih veza između tabela bez ograničenja koja su postojala u prethodim modelima.

d) Objektno-relacioni model

Objektno-relacioni model baze podataka je sličan relacionom modelu baze podataka koji podržava dodatne mogućnosti kao što su objekti, klase, nasljeđivanje koji su direktno podržani u shemama baza podataka i u jeziku za pravljenje upita nad bazom podataka. Objektno-relacioni model podržava proširenje modela podataka sa specifičnim tipovima podataka i metodama.

Jedna od prednosti ovakvog modela sistema je povezivanje konceptualnog modeliranja podataka kao što je Dijagramom veza entiteta (ERD) i objektno-relacionog mapiranja, koji često koristi klase i nasljeđivanje što u relacionim baza podataka nije podržano. Još jedna mogućnost koju sa sobom nosi ovaj model baze podataka je povezivanje relacionih baza podataka i objektno-orjentisanih tehnika za modeliranje koje se koriste u programskim jezicima kao što su Java, C++ i C#. Jedna od popularnih mogućnosti je korištenje standardne relacione baze podataka kao što je Oracle sa nekim od alata za objektno-orjentisano mapiranje (Java, .NET, PHP, Perl).

Page 11: 47165895-MladenANTUNOVIC

| 10

Slika 1.4. Relacioni model organizacije podataka

1.2. Šta je SQL (Structured Query Language)

SQL je, iznad svega, programski jezik koji se koristi za održavanje i pristup podacima u relacionim bazama podataka. SQL je univerzalni jezik za pristup podacima smještenim u bazama podataka, i kao takav je postao standardni jezik za menadžment baza podataka. SQL se koristi sa RDBMS-om (Relational DataBase Management System - sistem za upravljanje bazom podataka) kako bi se definisala struktura baze podataka, sačuvali podaci u bazi podataka. Omogućava manipualciju sa podacima smještenim u bazu, tj. čitanje iz baze, upisivanje u bazu, brisanje iz baze i kontrolu pristupa nad podacima uz očuvanje integriteta podataka. Također razvijeni su mnogi drugi jezici koji implementiraju relacioni model ali SQL je iznad svih izašao kao pobjednik. Gotovo svi sistemi za upravljanje bazama podataka koriste određeni model SQL jezika kako bi upravljali bazom podataka.

Slika 1.5. Komunikacija između RDBMS-a i SQL baze podataka

Page 12: 47165895-MladenANTUNOVIC

| 11

Među baze koje koriste SQL jezik osim Oracle-a tu su i MySQL, SQL Server, DB2, PostgreeSQL itd. Međutim ne treba mješati SQL jezik sa programskim jezicima koji su korišteni za realizaciju RDBMS-ova.

Primarna namjena SQL jezika je da omogući sistemu za upravljanje bazama podataka da komunicira sa bazom podataka (čitanje iz baze i upisivanje u bazu). Na slici 1.5 je prikazan šematski prikaz interakcije između sistema za upravljanje bazom podataka i SQL baze podataka pomoću SQL jezika.

SQL je stanrdadiziran jezik, nije zaseban proizvod, kao što su Oracle i MySQL. Osnovna i najbitnija funkcija SQL jezika je komunikacija sa RDBMS-om u cilju upravljanja podacima koji su smješteni u bazu podataka. Nije moguće razviti SQL baziranu aplikaciju ali je moguće razviti aplikaciju koja ima mogućnost konekcije sa RDBMS-om i preko njega indirektno slanja SQL upita nad bazom podataka kako bi se na taj način dobili podaci koje zahtijeva aplikacija a smješteni su u bazi podataka. Kakogod u postupku kreiranja aplikacija koje komuniciraju s SQL bazom podataka potrebno je bar osnovno znanje SQL jezika.

Sredinom 1980-te godine relacione baze podataka i SQL su postali industrijski standard. Od tada pa nadalje performanse sistema za upravljanje bazama podataka su se povećavale, mnoge kompanije su investirale u relacione tehnologije na više načina, razvijajući ili izlazeći na tržište sa svojim vlastitim SQL baziranim sistemima za upravljanje bazama podataka. SQL se sastoji od skupa izraza i iskaza koji definišu strukturu baze podataka i obrađuju podatke. Srž svakog SQL upita je sintaksna struktura koja definiše kako treba biti struktuiran upit nad podacima smještenim u bazi podataka. Zavisno od proizvođača baze podataka postoje različite verzije SQL jezika sa vrlo malim modifikacijama, međutim da bi se manipuliralo podacima u bazi potrebno je imati osnovno znanje SQL jezika proizvoda kojeg koristimo. Tipovi SQL upita:

a) DDL – Data Definition Language – Jezik za definiranje podataka. SQL upiti koji se koriste za definisanje strukture podataka, kreiranje baze podataka, kreiranje tabela, indeksa i drugih objekata te modifikovanje i brisanje postojećih objekata.

b) DML – Data Manipulation Language – Jezik za manipuliranje podacima. Za razliku od DDL upita DML upiti se koriste za manipuliranje podacima kao što je ubacivanje podataka u bazu podataka, brisanje podataka iz baze te njihova promjena.

c) DCL – Data Control Language – Jezik za kontrolu podataka. Kao što je rečeno ranije DDL upiti omogućavaju da se definiše struktura baze podataka, DML upiti omogućavaju pristup i rad nad podacima. DCL upiti predstavljaju još jednu funkcionalnost koja omogućava kontrolu pristupa bazi podataka. To su upiti tipa dodjeljivanja i oduzimanje prava nad objektima korisnicima baze podataka.

1.3. Istorija baza podataka

Baze podataka su nastale u samim počecima elektronskog računarstva. Za razliku od modernih računarskih sistema koji imaju mogućnost korištenja velikog broja sistema za

Page 13: 47165895-MladenANTUNOVIC

| 12

upravljanje bazama podataka raznih proizvođača, sistemi koji su u početku koristili baze podataka za razvoj aplikacija su bili usko vezani za tačno određene baze podataka kako bi bili isplativi uz zadovoljavajuće performanse. U početku razvoja baza podataka sistemi za upravljanje bazama podataka su korišteni samo od strane velikih organizacija koji su mogli sebi priuštiti računarsku infrastrukturu kako bi podržali rad baza podataka.

Baze podataka od nastanka do danas su prošle kroz određene faze razvoja koje su donijeli bitne promjene u načinu korištenja sistema baza podataka:

- 1960 –te godine: Navigacione baze podataka Kako su mogućnosti računara da izvršavaju složene operacije rasle tako su se sve više računari koristili u svim oblicima poslovanja, sredinom 60-tih godina sve veći broj sistema korišten je u komercijalne svrhe. Navigacioni pristup podacima se tradicionalno povezuje sa mrežnim i hijerarhijskim modelom baza podataka koji su prerasli u skup orjentisane sisteme. Navigacione tehnike koriste pokazivače i puteve kako bi navodili između slogova podataka (poznatih kao čvorovi). Na primjer, da bi dali nekom upute kako da dođe do određene lokacije prema navigacionom pristupu bi to izgledalo otprilke ovako: „ Idite autoputem 30 kilometara, isključite se s autoputa na izlazu Podlugovi, na sljedećoj raskrsnici skrenite desno u ulicu Veselin Masleša, treća kuća od skretanja je lokacije koju tražite“. Za razliku od ovog pristupa deklarativni pristup bi za isti primjer izgledao ovako: „Pronađite kuću sa sljedećim koordinatama...“.

- 1970-te godine: Relacione baze podataka Osnovna ideja relacionih baza podataka je da se baza podataka opiše kao kolekcija predikata pomoću skupa predikatskih varijabli, opisujući validne podatke koji se mogu unosit u bazu podataka kako bi se zadovoljila unaprijed zadata pravila(tipovi podataka, broj dozvoljenih karaktera i slično). sadržaj baze podataka je u svakom trenutku je potpun model, na primjer skup veza i entiteta. Osnov relacionih baza podataka predstavljaju table u koje se smještaju podaci i veze(relacije) koje određuju pravila između podataka. U relacionom modelu baza podataka konzistentnost podataka je određena pomoću ključeva.

- Kraj 1970-tih godina: SQL DBMS sistemi IBM-ov rad na protitip sistemu baziranom na Cood-ovm konceptu (Sve vrijednosti u bazi podataka su definisane atomski tj. vrijednosti u jednoj koloni u bazi podataka se ne mogu dalje razlagati odnosno pojjednostavljivati) nazvanom System R u ranim sedamdesetim godinama te je kao takav smatran nemoguć za implementaciju. Na projektu je radila grupa programera koji nisu razumili Codd-ov koncept te su prekršili osnovne principe koncepta relacinoh baza podataka. Prvi implementiran sistem na bazi Codd-ovog koncepta je napravljen 1974/5 godine te je tada započeo rad na više tabelarnim sistemima u koje je moguće razdvojiti podatke. Višekorisničko okruženje je testirano od strane korisnika sistema 1978/9-te godine kada je u međuvremenu nastao i SQL jezik za manipuliranje podacima i upravljanje bazama podataka.

Page 14: 47165895-MladenANTUNOVIC

| 13

Danas postoji veliki broj sistema za upravljanje bazama podataka među kojima su:

- Oracle - IBM DB2 - Microsoft SQL server - Microsoft Access MySQL server - PostgreSQL - SQLite - BerkeleyDB - Sybase - dBase - CouchDB

Page 15: 47165895-MladenANTUNOVIC

| 14

2. Oracle baza podataka

Oracle baza podataka (Oracle relacioni sistem za upravljanje bazama podataka ili jednostvano Oracle) je relacioni sistem za upravljanje bazama podataka dizajniran i distribuiran od strane Oracle korporacije. Oracle je postao vodeći brend u polju sistema za upravljanje bazama podataka.

Larry Ellison i njegove kolege, među kojima treba izdvojit Bob Miner-a, i Ed Oates-a, su započeli rad laboratorije za razvoj aplikacija (SDL – Software Development Laboratories) 1977.godine. SDL je razvila orginalnu verziju Oracle baze podataka. Ime Oracle potiče od kodnog imena CIA projekta na kojem je Ellison radio u prethodnoj kompaniji u kojoj je bio zaposlen(Ampex).

2.1. Arhitektura Oracle baze podataka

Baza podataka je skup podataka koji se posmatra kao cjelina. Osnovna namjena baze podataka je da čuva podatke i da omogućava da se ti podaci mogu po potrebi koristiti. Server baze podataka (Database server) je ključ za upravljanje informacijama. Generalno server upravlja velikim količinama podataka u višekorisničkom okruženju kako bi svi korisnici mogli konkurentno pristupati bazi podataka (čitnaje podataka i upisivanje podataka u bazu podataka). Server baze podataka također ima sigurnosnu ulogu tako što sprečava neovlašten pristup podacima i omogućava efikasna rješenja u slučaju grešaka. Oracle baza podataka je prva baza koja podržava pristup serveru baze podataka preko mreže, što olakšava kompanijama u pogledu održavnja a također odnos cijena-performanse je zadovoljavajući. Ovakav način organizacije preduzeća omogućava rad sa modularnim sistemima za smještanje podataka i serverskim tehnologijama. Koristeći serversku tehnologiju sistem odlikuje skalabilnost, tj. novi moduli se mogu dodavati i stari mjenjati bez potrebe za gašenjem sistema, nema potrebe za dodavanjem novih hardverskih komponenti kako bi se povećala mogućnost opterećenja sistema npr.dodavanjem većeg broja korisnika na bazu podataka se smanjuju performanse međutim uvijek postoji mogućnost nadogradnje sistema ili preraspodjele postojećih resursa kako bi se podržao veći broj korisnika. Kod baza podataka razlikujemo fizičku i logičku strukturu. Zbog postojanja ove razlike fizički smještajni prostor se može administrirati bez uticaja na logičku strukuru baze podataka.

2.1.1. Mrežna arhitektura

Mrežna arhitektura računarskih sistema(Grid Computing) je arhitektura informacionih tehnologija koja doprinosi skalabilnosti i rentabilnosti informacionih sistema. Na ovaj način grupe nezavisno organizovanih hardverskih platformi i softverskih komponenti mogu biti povezani u cjelinu zavisno od potreba samog informacionog sistema kojeg opslužuju. Mrežna arhitektura u računarskim sistemima je doprinijela rješavanju određenih problema u infrastrukturi velikih korporacija koje se bave razvojem informacionih sistema. Poredeći sa drugim načinima organizacije IT resursa, sistemi dizajnirani i implemetirani pomoću mrežne arhitekture odlikuju se visokim kvalitetom servisa, manjom cijenom i većom fleksibilnosti. Veći

Page 16: 47165895-MladenANTUNOVIC

| 15

nivo kvaliteta usluga je obezbjeđen na taj način što u mrežnoj arhitekturi nije situacija da ako jedan čvor i mreži prestane sa radom to dovodi do prestanka rada cijelog sistema. Upravljanje sistemima sa mrežnom arhitekturom je centralizovano. Prednost mrežne organizacije je manje cijene održavanja, skalabilnost sistema i vrijeme koje sistem nije u funkciji se svodi na minimum čak u dosta situacija je nula.

2.1.2. Aplikaciona arhitektura

Dvije najčešće korištene arhitekture baze podataka su klijent-server i višenivovska arhitektura. Kako je Internet računarstvo postalo veoma zastupljeno u svim oblastima ljudskog života, tako i u poslovnim okruženjima koja koriste računarske tehnologije sve više sistema za upravljanje bazama podataka se okreće ka višenivovskom okruženju. Klijen-server arhitektura Sistem Oracle baze podataka koristi prednosti distribuiranog procesiranja koristeći klijent-server arhitekturu. Na ovaj način sistem se sastoji iz dva dijela: Klijent – aplikacija koja zahtijeva izvršavanje određene akcije na strani servera baze podataka. Klijentska radna stanica treba biti optimizirana za izvršavanje klijentskih aplikacija. Na primjer, u ovakvoj aplikacionoj arhitekturi, klijentska radna stanica nema potrebe za velikim memorijskim prostorom. Na ovakav način omogućeno je da više klijenata istovremeno pristupaju jednom serveru baze pdoataka. Server – Na serveru baze podataka pokrenut je softver Oracle baze podataka koji upravlja resursima, raspoređuje zadatke i uslužuje zahtjeve korisnika odnosno klijentskih aplikacija. Računar koji predstavlja server baze podataka treba da ima velik diskovni prostor, velik memorijski prostor kako bi bio u mogućnosti sa minimalnim vremenom odziva ispravno opsluživati klijentske aplikacije odlikovan stabilnošću u radu.

Višenivovska arhitektura: Aplikacioni serveri Tradicionalna višenivovska arhitektura ima sljedeće komponente:

- Klijent – inicijator procesa koji pokreće određene akcije odnosno operacije. - Jedan ili više aplikacionih servera koji obrađuju zahtjeve primljene od strane klijenata.

Aplikacioni server sadrži veliki dio logike aplikacije, omogućava pristup podacima od strane klijenata, procesira upite nad bazom podataka. Aplikacioni server služi kao interfejs između više klijenata i servera baze podataka, te uz sve navedene operacije povećava nivo sigurnisti.

- Krajnji server ili server baze podataka koji čuva većinu podataka koji se koriste za izvršavanje operacija zahtjevanih od klijentskih aplikacija.

Page 17: 47165895-MladenANTUNOVIC

| 16

Višenivovska arhitektura omogućava upotrebu aplikacionog servera u sljedeće namjene:

- Autorizacija klijenata kroz klijentske aplikacije kao što su internet pretraživači. - Povezivanje klijenata na Oracle server baze podataka, kiljentske aplikacije korištene za

rad nad bazama podataka – Oracle SQL Developer. - Izvršavanje operacija zahtjevanih od klijentskih aplikacija.

Ako se u sistemu koristi proxy autorizacija onda je provjera identiteta korisnika omogućena na svim nivoima veze između klijenata i servera. Višenivovska arhitektura: Servis-orjentisana arhitektura (SOA) Servis orjentisana arhitektura (SOA) je višenivovska arhitektura gdje je funkcionalnost aplikacije definisana pomoću servisa. SOA servisi su većinom implementirani kao web servisi. Web servisima se može pristupati preko HTTP(Hyper Text Transfer Protocol) protokola i bazirani su na XML otvorenim standardima kao što su WSDL i SOAP.

2.2. Fizička struktura Oracle baze podataka

Oracle baza podataka je fizički sačinjena od : - Podatkovnih fajlova (Datafiles). - Kontrolnih fajlova (Control Files) - Online Redo log fajlova - Arhiviranih Redo log fajlova - Parametar fajlova - Alert i Trace log fajlova - Backup fajlova

Datafiles (fajlovi podataka) Svaka Oracle baza podataka ima jedan ili više fizičkih fajlova za smještanje podaka (datafiles), u kojima se fizički nalaze svi podaci baze podataka. Podaci logičkih struktura Oracle baze podataka kao što su tabele i indeksi su fizički smješteni u datafajlovima koji su alocirani za bazu podataka. Karakteristike datafajlova su :

- Jedan datafile može biti pridružen samo jednoj bazi podataka. - Datafajlovi se mogu definisani da budu fiksne memorijske veličine ili da se po potrebi

povećavaju stopom rasta kako se odredi na nivou baze podataka. - Jedan ili više datafajlova čine logičku jedinicu – Tablespace.

Čitanje podataka iz baze podataka je ustvari čitanje podataka koji su smješteni u određenom datafajlu, koji po potrebi mogu biti smješteni u memorijski keš Oracle baze podataka. Na

Page 18: 47165895-MladenANTUNOVIC

| 17

primjer ako korisnik želi pročitati podatak koji se nalazi u bazi podataka a isti nije keširan u memoriji onda se pristupa direktno datafajlu koji sadrži tražene podatke. Promjene nad podacima u bazi se ne smještaju odma u datafajlove. Da bi se smanjio broj čitanja s diska zbog poboljšanja performansi podaci se skupljaju u memoriju i pišu u određene datafajlove atomski. Datafajlovi koji privremeno čuvaju podatke unutar privremenog tablespace nazivaju se privremeni datafajlovi. Control Files (Kontrolni fajlovi) Svaka Oracle baza podataka ima kontrolne fajlove. Kontrolni fajlovi sadrže podatke koji specificiraju fizičku strukturu baze podataka, uključujući sljedeće informacije:

- Ime baze podataka. - Imena i lokaciju datafajlova i Redo log fajlova. - Vrijeme kreiranja baze podataka.

Svaki put kada se pokreće instanca Oracle baze podataka, kontrolni fajlovi identificiraju datafajlove, privremene datafajlove i redo logove koji moraju postojati i biti ispravni da bi mogla normalno funkcionirati instanca Oracle baze podataka. Online Redo Log fajlovi

Svaka instanca Oracle baze podataka ima skup od dva ili više redo log fajlova. Redo log fajlovi zajedno sa arhiviranim kopijama redo log fajlova zajedno čine redo logove jedne baze podataka. Jedan redo log je sačinjen od redo slogova u kojima su logirane sve promjene koje se dešavaju na bazi podataka. Ako dođe do greške u sistemu koja onemogućava pisanje podataka direktno u podatkovne fajlove baze podataka (datafiles), tada se promjene mogu restaurirati iz redo log fajlova tako da je na taj način omogućeno da rad s podacima nikada ne bude izgubljen. Da bi se u što boljoj mjeri zaštitio sav rad nad podacima koji se nalaze u bazi podataka moguće je umnožiti redo log fajlove koji se mogu čuvati na različim diskovima kako bi se onemogućilo da disk bude slaba tačka sistema koja može dovesti do gubitka rada nad podacima u bazi podataka. Arhivirani redo log fajlovi

Kada se redo log fajlovi zapisuju na diskove automatski postaju arhivirani redo log fajlovi. Oracle preporučuje da se omogući automatizovano zapisivanje log fajlova na druge diskove kako bi se mogućnost kraha sisteme svela na minimum. Kada je Oracle baza podataka u ARCHIVELOG modu rada tada je omogućeno automatski spremanje redo log fajlova. Parametar fajlovi

Jedan parametar fajl na Oracle bazi podataka sadrži konfiguracione informacije vezano za instancu baze podataka. Parametar fajlovi i server parametar fajlovi omogućavaju čuvanje i spremanje inicijalizacijskih parametara perzistentno na nekom distribuiranom disku. Server parametar fajl ima nekoliko prednosti:

Page 19: 47165895-MladenANTUNOVIC

| 18

- Fajl se konkurentno update-uje svaki put kada neka od vrijednosto parametara aktivne instance bude promjenjena.

- Fajl je centralizovan za pristup svim instancama u slučaju da je baza instalirana kao Real application servis.

Alert i Trace log fajlovi

Svaki serverski i pozadinski proces može pisati u odgovarajući trace fajl. Kada se desi interna greška u nekom od procesa koji se izvršavaju na Oracle bazi podataka, taj isti proces piše informacije vezane za tu grešku u određeni trace fajl. Neke od informacija koje se zapisuju u trace fajlove se tiču administratora baze podataka kako bi na osnovu tih informacija mogli odrediti uzrok greške i na taj način djelovati da se greška eliminiše, a drugi dio informacija pomažu Oracle servisima podrške korisnicima kako bi, ako je greška uzrokovana bazom podataka, istu mogli Oracle programeri ispraviti. Alert fajl ili alert log fajl je specijalna vrsta trace fajla gdje se zapisuju hronološki upozorenja i greške koje su se dogodile na bazi podataka. Backup fajlovi

U slučaju da dođe do greške ili pada kompletnog sistema baze podataka tada dolazi do gubitka svih podataka koji su se čuvali u bazi podataka. Međutim pošto se u bazi podataka kao što je Oracle većinom nalaze velike količine podataka koji su važni za kompaniju Oracle baza podataka ima mogućnost spašavanja svih podataka koji su smješteni u bazu podataka u obliku backup fajlova. Da bi vratili bazu u posljednje konzistentno stanje potrebno je da imamo backup fajlove zadnjeg konzistentnog stanja. Tipične situacije koje dovode do potrebe za restauracijom baze podataka na prethodno stanje jesu hardverske greške medija na kojem se čuvaju fajlovi gdje Oracle baza podataka smješta podatke. Do potrebe za korištenjem backup fajlova može doći i usljed greške korisnika baze podataka ili brisanja orginalnog fajla gdje su smješeni podaci. U navedenoj situaciji nastupaju backup fajlovi koji se moraju čuvati na odvojenom mediju od medija za smještanje podatkovnih fajlova. Backup Oracle baze podataka se vrši automatski tako što se odrede vremenski intervali kada se radi backup kompletne baze i backup nastalih promjena od zadnjeg potpunog backup-a Oracle baze podataka.

2.3. Logička struktura Oracle baze podataka

Logička struktura Oracle baze podataka omogućava preciznu kontrolu prostora za smještanje podataka unutar Oracle baze podataka. U okviru logičke strukture baze podataka bitne je spomeniti sljedeće teme:

- Blokovi podataka unutar Oracle baze podataka, - Produžeci (Extents), - Segmenti, - Tablespace-i.

Page 20: 47165895-MladenANTUNOVIC

| 19

Blokovi podataka

Na najnižem nivou granularnosti podaci unutar Oracle baze podataka su smješteni u logičke cjeline – blokove podataka (data bloks). Jedan blok podataka odgovara određenom broju bajta fizičkog prostora Oracle baze podataka unutar memorijskog prostora. Standardna veličina bloka podataka je definisana pomoću inicijalizacijskog parametra DB_BLOCK_SIZE. Oracle baza podataka alocira memorijski prostor unutar slobodnog prostora unutar blokova podataka. Produžeci (Extents)

Sljedeći logički nivo memorijskog prostora je produžetak (extent). Produžetak je broj uzastopnih blokova podataka koji su alocirani sekvencijalno i koriste se za smještanje posebne informacije. Segmenti

Nakon produžetaka u hijerarhiji logičke strukutre baze podataka je segment. Segment predstavlja skup produžetaka alociranih za tabelu, indeks, segment za povratak stanja baze u prethodno stanje ili za privremenu upotrebu od strane pojedine sesije ili transakcije. Poredeći sa fizičkom strukturom baze podataka svi produžeci pripadaju segmentu koji se nalazi u jednom tablespace-u, ali mogu se nalaziti u različitim podatkovnim fajlovima koji čine taj tablespace. Kada je produžetak popunjen podacima Oracle baza podataka dinamički alocira novi produžetak za taj segment. Kako su produžeci alocirani po potrebi slijedi da produžeci koji čine jedan segment mogu ali nemoraju biti smješteni sekvencijalno na disku. Tablespace

Oracle baza podataka je podijeljena u logičke jedinice – tablespace, koji grupišu određene blokove podataka, segmente i produžetke u logičku cjelinu. Tablespace grupiše zajedno sve objekte jedne aplikacije kako bi se pojednostavile administrativne operacije. Svaka baza podataka je logički podijeljena u dva ili više tablespace-a. Jedan ili više fajlova podataka(datafiles) su eksplicitno kreirani za svaki tablespace da fizički čuvaju podatke svih logičkih struktura u jednom tablespace-u. Suma smještajnog prostora fajlova podataka koji čine određeni tablespace predstavlja ukupnu veličinu memorijskog prostora jednog tablespace-a. Svaka Oracle baza podataka sadrži SYSTEM i SYSAUX tablespace koji su kreirani automatski pri instalaciji odnosno kreiranju same Oracle baze podataka. Sistemski kreirani tablespace su malog smještajnog kapaciteta (smallfile tablespace) koji predstavljaju tradicionalni tip tablespace-a. Pri kreiranju tablespace-a Oracle baza podataka dozvoljava kreiranje tablespace-a za smještanje velikih količina podataka (bigfile tablespace) koje čini jedan veliki fajl za smještanje podataka a ne više fajlove podataka manjeg smještajnog kapaciteta. U 64-bitnom sistemu adresiranja memorije omogućeno je kreiranje velikih tablespace-a do 8 hexabajta veličine što omogućava izvršavanje operacija na tablespace-u radije nego na pripadajućim fajlovima za smještanje podataka.

Page 21: 47165895-MladenANTUNOVIC

| 20

2.3.1. Šeme baze podataka i objekti šema baze podataka

Šema predstavlja kolekciju objekata unutar baze podataka. Vlasnik šeme baze podataka je korisnik kreiran na nivou baze podataka koji ima isto korisničko ime kao što je i ime same šeme baze podataka. Objekti šeme baze podataka su logičke strukture koji se direktno odnose na podatke smještene unutar baze podataka. Ne postoji relacija između tablespace-a i šeme baze podataka. Objekti iz jedne šeme mogu fizički biti smješteni unutar različitih tablespace-a kao što jedan tablespace može čuvati objekte koji pripadaju različitim šemama baze podataka. Objekti šeme baze podataka predstavljaju strukture kao što su:

- Tabele, - Indeksi, - Pogledi, - Klusteri, - Sinonimi.

Tabele

Tabele predstavljaju osnovne jedinice za smještanje podataka na Oracle bazi podataka. Tabele baze podataka čuvaju sve podatke kojima korisnik baze podataka može pristupati. Tabela je sačinjena od kolona i redova. Tabela koja čuva informacije o brojevima telefona (telefonski imenik) može imati kolonu broj_telefona koja čuva podatke o brojevima telefona za određeni slog unutar tabele. Indeksi

Indeksi su opcionalne struktrure podataka vezane za tabele unutar šeme Oracle baze podataka. Indeksi se kreiraju s ciljem poboljšanja performansi pri čitanju podataka iz baze podataka. Kao što indeks po prezimenu u telefonskom imeniku omogućava lakše pronalaženje osobe čiji broj telefona Vam je potreban tako indeks po određenom polju omogućava brže pretraživanje baze podataka po vrijednosti polja po kojem je indeks kreiran. Kada Oracle baza procesira upit nad podacima unutar baze podataka moguće je da se koristi određeni indeks ili svi indeksi koji postoje definisani na kolonama unutar tabele odakle se traže podaci. Indeksi su korisni kada aplikacija nad bazom podataka vrlo često traži podatke za više slogova odnosno kada je povratna informacija niz podataka na osnovu zadatog kriterija pretraživanja (Na primjer: pretraživanje baze telefonskih brojeva koji počinju sa 032) ili pri vraćanju jedne vrijednosti na osnovu specifičnog zahtjeva (Na primjer: Broj telefona korisnika čiji je JMBG dat kao uslov za pretragu). Nakon kreiranja indeksa Oracle baza podataka automatizovano koristi i upravlja indeksima. Promjene nad podacima unutar tabele na kojoj su kreirani indeksi se automatski odnose i na idekse, odnosno indeksi se automatski kreiraju i na dodatim ili promjenjenim vrijednostima unutar indeksirane kolone.

Page 22: 47165895-MladenANTUNOVIC

| 21

Pogledi

Pogledi predstavljaju specifičan način prikazivanja podataka iz jedne ili više tabela ili drugih pogleda. Pogledi fizički ne čuvaju podatke nego prikazuju podatke iz tabela ili drugih pogleda na kojima su bazirani. Operacije ubacivanja, mjenjanja i brisanja podataka se mogu izvršavati nad pogledima kao i nad tabelama sa određenim ograničenjima. Ako je moguće mjenjati podatke nad pogledima tada sve promjene napravljene nad pogledom također su promjene i nad tabelama na kojima su pogledi bazirani. Pogledi omogućavaju veći nivo sigurnosti jer postoji mogućnost zabrane pristupa podacima nad određenim redovima ili kolonama tabele, također skrivaju kompleksnost podataka i upita nad tim podacima. Klusteri

Klasteri su grupe sačinjene od jedne ili više tabela fizički spojene zato što dijele zajedničke kolone i često su korištene zajedno. Zbog grupisanja tabela redovi unutar klastera su fizički spojeni što smanjuje broj pristupa disku a to dalje vodi poboljšanju performansi sistema. Kao i indeksi, klasteri ne utiču na dizajn aplikacije, kada je tabela dio klastera ona je transparentna i korisnicima i aplikaciji. SQL upiti pristupaju podacima iz tabela spojenih u klaster na isti način kako pristupaju tabelama koji ne čine klaster nego su zasebne. Sinonimi

Sinonimi predstavljaju drugo ime za tabelu, pogled, sekvencu, operator, proceduru, funkciju, paket, Java objekat, objekat defisan od strane korisnika ili za drugi sinonim. Sinonim je tipični alias tako da ne zahtijeva dodatni memorijski prostor za smještanje podataka, jedina potreba za memorijskim prostorom jeste za samu definiciju sinonima unutar rječnika podataka.

2.3.2. Oracle rječnik podataka (Data Dictionary)

Svaka Oracle baza podataka sadrži rječnik podataka (Data Dictionary). Rječnik podataka predstvalja skup tabela i pogleda koji služe kao referenca za bazu podataka. Rječnik podataka čuva informacije o logičkoj i fizičkoj strukturi baze podataka kao i validne korisnike kreirane nad bazom podataka, informacije o intergitetu podataka unutar baze podataka, veličini prostora alociranog za svaku šemu baze podataka kao i koliko je od tog prostora zauzeto a koliko slobodno i mnoge druge važne informacije. Rječnik podataka se kreira pri instalaciji baze podataka. Da bi u svakom vremenskom trenutku rječnik podataka imao validne informacije vezane za bazu podataka Oracle baza podataka na osnovu promjena logičke i fizičke strukture baze podataka automatski mijenja vrijednosti unutar riječnika podataka. Korisnici nad bazom podataka nemaju mogućnost ručnog mjenjanja rječnika podataka. Tokom operacije koje utiču na promjenu logičke ili fizičke strukture baze podataka Oracle baza podataka čita podatke iz rječnika podataka kako bi verfikovala da korisnik nad bazom ima privilegije da izvršava određene operacije nad objektima šeme baze podataka.

Page 23: 47165895-MladenANTUNOVIC

| 22

2.4. Oracle XML baza podataka

Oracle XML DB predstavlja naziv za skup tehnologija unutar Oracle baze podataka koji se odnosi na visoke performanse za smještanje podataka u obliku XML-a i vraćanje podataka iz XML dokumenata. Oracle XML DB podržava korištenje izvornog XML formata uključujući SQL i XML model podataka. Oracle XML baza podataka uključuje sljedeće mogućnosti:

- Podrška W3C (World Wide Web Consortium) XML formatu i XML šemi podataka uključujući standardne metode pristupa i pretraživanja XML strukture podataka. Model podataka je inkorporiran u okviru Oracle baze podataka.

- Način za smještanje, pretraživanje, promjene podataka i transformisanje XML podataka koristeći SQL.

- Način da se izvršavaju XML operacije nad SQL podacima. - Na jednostavan način organizovanje XML repozitorija gdje je moguće organizovati i

upravljati sadržajem baze podataka uključujući i XML koristeći file/folder/URL poređenje.

- Neovisna infrastruktura na nivou smještanja podataka, sadržaja podataka i programskih jezika za smještanje i upravljanje XML podacima. Na ovaj način je omogućen novi način pretraživanja sadržaja XML podataka smještenih unutar Oracle baze podataka. Na primjer Oracle XML DB repositorij omogućava jednostavnije upravljanje hijerarhijom među XML dokumentima.

- Pristup podacima po industrijskim standardima i njihova promjena. Među industrijskim standardima bitno je napomenuti W3C Xpath preporuku i ISO-ANSI SQL/XML standard. FTP HTTP(S) i WebDAV je moguće koristiti za čitanje i smještanje podataka iz i u Oracle bazu podoataka. API-ji definisani po industrijskom standardu omogućavaju pristup i manipuliranje sadržajem XML-a koristeći programske jezike kao što su: Java, C i PL/SQL.

- Upravljanje memorijom i optimizacija. - Visok nivo poboljšanja mogućnosti XML integracije u okviru Oracle baza podataka,

mogućnosti kao što su: sigurnost, proširivost, pouzdanost i upotrebljivost.

2.4.1. Oracle XML DB protokol arhitektura

Jedna od ključnih mogućnosti Oracle XML baze podataka je podrška široko rasprostranjenim protokolima kao što stu HTTP(S), WebDAV i FTP protokoli. Listener (komponenta Oracle baze podataka) osluškuje HTTP i FTP zahtjeve na isti način kako osluškuje ODP.NET zahtjeve. Kada Listener primi HTTP(S) ili FTP zahtjev od strane klijenta taj zahtjev se prosljeđuje serveru Oracle baze podataka koji uslužuje zahtjev i vraća klijentu odgovarajući rezultat. Na nivou Oracle baze podataka potrebno je omogućiti pristup bazi podataka po navedenim protokolima.

Page 24: 47165895-MladenANTUNOVIC

| 23

2.4.2. Pristup Oracle XML bazi podataka iz programskih jezika

Svim mogućnostima koje nudi Oracle XML baza podataka je moguće pristupiti iz

programskih jezika kao što su Java, PL/SQL i C. Na ovaj način je omogućeno pravljenje internet baziranih aplikacija:

- Korištenjem servlet JSP stranica. Tipičan API pristup podacima smještenim u Oracle bazi podataka pomoću JDBC-a (Java Database Conectivity).

- Koristeći XSL (Extensible Stylesheet Language) i XSP (XML Server Pages). Pristup podacima u obliku XML-a je omogućen pomoću aplikacinog programskog interfejsa (API) koristeći DOM (Docuement Object Model) API implementacije.

Oracle XML baza podataka podržava oba pristupa razvoju aplikacija. Također je

omogućena implementacija DOM API metoda u okviru programskih jezika kao što su JAVA, PL/SQL i C. Aplikacije koje koriste JDBC, kao one bazirane na servletima, trebaju prije svega poznavanje strukture baze podataka koje procesiraju. Oracle JDBC drajveri omogućavaju pristup i promjene nad XML podacima smještenim u Oracke bazi podataka, kao i poziv PL/SQL procedura koje pristupaju Oracle XML DB repozitoriju. Aplikacije koje koriste DOM metodu zahtjevaju manje poznavanje strukture podataka smještenih u Oracle bazi podataka. DOM bazirane aplikacije koriste imena kako bi identificirali djelove sadržaja te dinamički prolaze kroz DOM strukturu kako bi pristupili traženim informacijama. Oracle XML DB podržava korištenje DOM API-ja za čitanje i promjene nad XML podacima smještenim u Oracle bazi podataka. Programiranje pomoću DOM API-ja je dosta fleksibilnije od programiranja koristeći JDBC-a međutim nedostatak je što u slučaju korištenja DOM API-ja potrebno je više resursa za vrijeme izvršavanja aplikacije.

2.4.3. XML (eXtensible Markup Language)

XML predstavlja jezik odlikovan fleksibilnošću i mogućnošću mjenjanja. XML kao jezik u velikoj mjeri je nalik na HTML, međutim XML ne predstavlja zamjenu za HTML. XML je dizajniran da čuva i prenosi podatke a ne da ih prikazuje, moguće ga je kombinovati sa HTML-om koji može prikazivati podatke koji su smješteni u XML dokumentima. Za razliku od HTML-a koji kao standard ima predefinisane tagove koje je moguće koristiti XML dozvoljava kreiranje vlastitih tagova. XML je dizajniran da čuva podatke i vrši njihov prenos dok HTML vodi brigu kako se određeni podaci prikazuju. HTML(Hypertext Markup Language), na drugoj strani, nije skalabilan jezik i kao takav predstavlja osnovu većine internet stranica zajedno sa mnogim drugim programskim jezicima koji se koriste za kreiranje sadržaja na internet stranicama. HTML internet stranice su efektivno zamrznute u vremenu od kad su kreirane i ne mogu se mjenjati za vrijeme pregleda u pretraživaču (poznati internet pretraživači su Mozilla Firefox i Internet Explorer).

S druge strane, XML dozvoljava aktualiziranje internet stranica za vrijeme njihovog pregledavanja. XML dozvoljava čuvanje promjenljivih podataka unutar internet stranica koji se mogu dinamički mjenjati za vrijeme rada stranice tj. bez potrebe da stranica bude nedostupna određeno vrijeme dok se izvršavaju određene promjene.

Page 25: 47165895-MladenANTUNOVIC

| 24

2.4.3.1. Poređenje XML-a sa HTML-om

HTML (HyperText Transfer Protocol) predstavlja dominantni jezik korišten za kreiranje internet stranica. Omogućava opisivanje strukture tekst baziranih informacija u dokumentu označavajući određeni tekst kao vezu prema drugim stranicama ili dataotekama, kao paragrafe ili liste. Također se koristi za pravljenje interaktivnih formi, ugradnju slika i drugih objekata u internet stranice. HTML se može, u određenoj mjeri, koristiti za kreiranje dizajna internet stranica i u okviru HTML-a je moguće uključiti programske jezike kao što je Javascript koji može utjecati na dinamičnst internet stranica. XML, u određenim slučajevima, se može posmatrati kao proširenje HTML-a. Ovakav način posmatranja XML-a je nastao zbog činjenice da je HTML jezik tačno određen sa oznakama koje je moguće koristiti. HTML koristi predefinisane tagove (oznake) kao na primjer HEAD, TITILE i P. Za razliku od HTML-a, XML je proširiv i kao takav posjeduje više mogućnosti da bude skalabilan ili da se dodaju nove mogućnosti u njegovom korištenju. XML dokument kada se ugradi u HTML internet stranicu treba unaprijed definisane tagove kao i kod HTML-a, međutim XML dokument se može sastojati od specifičnih tagova koji su karakteristični za taj dokumet. Važna činjenica koja je vezana za konstrukciju XML dokumenata koja nije u potpunosti zadovoljena kod HTML-a je da svaki tag mora imati svoj početni i završni tag. Kod HTML-a je moguće da započeti tag ne mora imati svoj završni tag (Na primjer: početni paragraf tag <P> ne mora imati svoj završni tag </P>) dok kod XML-a to nije slučaj. Svaki XML početni tag mora imati svoj završni tag inače takav XML dokument se ne može koristit jer nije validno konstruisan. Dakle XML nije ograničen sa uptrebom unaprijed određenih tagova, moguće je kreirati vlastite tagove unutar XML dokumenata.

2.4.3.2. Prednosti i mogućnosti XML-a

Prednosi upotrebe XML-a je moguće prikazati na sljedeći način:

- Fleksibilnost podataka – Bilo kakva informacija može biti smještena unutar XML

stranice. XML stranica postaje nosilac informacija a ne samo opisna definicija podataka. - Integracija unutar internet stranica – Integrisanje XML dokumenata u internet stranice

postaje jednostavnije jer se u novije vrijeme kreiranje stranica sa XML sadržajem vrši generički – automatizovano. Internet stranice postaju vođene podacima, bazirane na sadržaju internet stranice, a ne bazirane na tagovima koji ih definišu, vođene programskim jezikom i položajem tagova unutar stranica.

- Otvoreni standard – XML je potpuno fleksibilan standard. Ne postoji softver niti softverska kompanija koja ima pravo kontrolisanja i definisanja tagova koje je moguće kreirati u okviru XML dokuemata, značenje kreiranih tagova i pozicija tagova unutar XML dokumenata.

- Povećana skalabilnost i kompresija – Pri slanju internet stranica preko Interneta XML stranice mogu sadržavati samo podatke. Kodiranje svih tagova koje zahtjeva HTML nije potrebno.

Page 26: 47165895-MladenANTUNOVIC

| 25

- Redoslijed podataka – Redoslijed prikazivanja podataka unutar XML stranica nije bitan jer to su samo podaci. Podacima se može na klijentskoj strani omogućiti određeni nivo dizajna i preglednosti u okviru internet pretraživača ako se koristi XSL (eXtensible Style Sheets).

2.4.3.3. Prikazivanje XML dokumenata

U nastavku je prikazana jednostavna struktura XML dokumenta. Jedini unaprijed

definisani tag predstavlja tag prve linije koja služi da se opiše verzija XML parsera koji se koristi za XML verzije 1.0. <?xmlversion=“1.0“> <GeografskeKoordinate verzija=“25112008“> <lokacija> <naziv>Mladen Antunovi ć</naziv> <koordinate> <duzina>18.38</duzina> <širina>43.85</širina> </koordinate> </lokacija> </GeografskeKoordinate>

Parser je program koji analizira i provjerava pravila pisanja koda u određenom programskom jeziku. Internet pretraživač koji podržava pregled internet stranica sa XML sadržajem parsira XML kôd s ciljem provjere ispravnosti napisanog XML kôda. Kao što je ranije rečeno, funkcija parsera je da provjerava da svaki početni tag ima svoj završni tag i da je respored tagova unutar XML dokumenta ispravan. Na ovaj način je onemogućeno da se otvori novi početni tag dok prethodni takav tag nije zatvoren (Na primjer: tag <duzina> ne može biti ponovno otvoren dok prethodni tag <duzina> nema svoj završni tag </duzina>). Prvobitna i osnovna uloga HTML-a jeste prikazivanje podataka za razliku od XML-a koji nastoji da opisuje podatke. XML predstavlja podatke uz to da ti podaci sami sebe opisuju. Podaci prikazani u HTML internet stranicama sadrže podatke koji se moraju eksplicitno generisati. Za svaku lokaciju koja bi se prikazivala na mapi bi se trebala generisati jedna internet stranica koja će sadržati samo podatke vezane za tu lokaciju. Kada je u okviru HTML internet stranice uključen XML sadržaj koji sadrži podatke o pojedinoj lokaciji HTML stranica je jedna a samo se ponovo generišu podaci koji se prikazuju na mapi u okviru HTML internet stranice. Rezultat ovakvog pristupa kreiranja internet stranica je smanjenje prometa kroz mrežu što zahtijeva manje procesiranja na serverskoj kao i na klijentskoj strani. XML je također veoma prikladan za pogledu velikog prenosa podataka koji su nezavisni od sistema upravljanje bazama podataka kao i od softverske platforme na kojoj je instaliran sistem gdje se prenos podataka vrši. Za razliku od HTML-a koji vrši zahtjevna procesiranja podataka XML predstavlja univerzalan standard i kao takav dopunjuje nedostatke koje ima HTML a ne mijenja funkcionalnost HTML jezika. XML je nastao sa svrhom za čuvanje i razmjenu podataka dok je funkcija HTML-a prikazivanje podataka.

Page 27: 47165895-MladenANTUNOVIC

| 26

Da bi kreirali jedan ispravna XML dokument nije potreban nikakav specijalan softver, dovoljno je imati bilo koji tekstualni editor kao npr. Notepad, WordPad, Gedit, Nano ili Vi. Svaki početni tag XML dokumenta mora imati svoj završni tag. U nastavku je kreiran XML dokument sa osnovnim elementima i terminologijom koja je standardna pri kreiranju XML dokumenata. Primjer 1. – XML dokument <?xml version="1.0" encoding="UTF-8"?> <!--XML tag -->

<ListaStudenata> <!--Pocetni root tag - osnovni poc etni tag --> <student> <!--Pocetni tag cvor(node), dijete(chil d) --> <ime>Mladen</ime> <prezime>Antunovic</prezime> <broj_indeksa>13921</broj_indeksa> </student> <!--Zavrsni tag cvor(node), dijete(chi ld) --> <student> <!--Pocetni tag cvor(node), dijete(chil d) --> <ime>Sanel</ime> <prezime>Music<prezime> <broj_indeksa>50-c</broj_indeksa> </student> <!-- Zavrsni tag cvor(node), dijete(ch ild) -->

</ListaStudenata> <!--Zavrsni root tag - osnovni po cetni tag -->

Na osnovu nevedenog slijedi da se XML i HTML međusobno dopunjuju a ne isključuju jedan drugog, u sljedećem primjeru je prikazano kako je moguće XML dokument ugraditi u HTML dokument i podatke koji su sadržani u XML dokumentu prikazati na HTML internet stranici. Ugradnja XML dokumenta u HTML internet stranicu je poznato pod nazivom „otok podataka“ (Data Islands). U slučaju da se XML dokument ugrađuje direktno u HTML stranice tada se govori o „inline“ ubacivanju XML dokumenata koristeći <XML> tag, također je moguće odvojeno kreirati XML dokument i pomoću HTML <SRC> taga koristit XML podatke. Primjer 2. – XML dokument ugrađen u HTML stranicu

<HTML><BODY> <Title>XML dokument u okviru HTML-a</Title> <XML ID=”XMLStudenti”> <?xml version=”1.0”?> <ListaStudenata> <student> <ime>Mladen</ime> <prezime>Antunovic</prezime> <broj_indeksa>13921</broj_indeksa> </student> <ListaStudenata> </XML> <TABLE DATASRC=#XMLStudenti> <TR> <TD><DIV DATAFLD="ime"></DIV></TD><br> <TD><DIV DATAFLD=”$text”></DIV></TD><br> </TR>

Page 28: 47165895-MladenANTUNOVIC

| 27

</TABLE> </BODY></HTML>

Kôd prikazan iznad kada se spasi kao HTML dokument u internet pretraživaču izgleda kao na slici 2.1.

Slika 2.1 – HTML sa prikazom XML sadržaja

2.4.3.4. XML Document Object Model (XML DOM)

XML DOM definiše standardni način pristupa i manipulisanja XML dokumenata. DOM

gleda na XML dokumente kao na podatke u strukturi drveta, moguće je pristupiti svim elementima kroz drvo. Sadržaj XML dokumenata je moguće mjenjati, brisati i krerati nove elemente XML dokuemta. Elementi, tekst i njihovi atributi u XML notaciji se nazivaju čvorovima. Jedan od bitnih faktora pri korištenju XML dokumenata u HTML internet stranicama jeste da pretraživači internet stranica imaju ugrađenu mogućnost prikazivanja XML podataka. Kompletnoj strukturi XML dokumenta je moguće pristupiti koristeći Document Object Model ili XML DOM. Programer koristeći XML DOM metodu je u stanju pronaći, čitati i mjenjati sadržaj XML dokumenta. Promjene XML dokumenta je moguće napraviti na dva načina:

a) Eksplicitni pristup podacima – Aplikacija može pristupiti XML dokumentu eksplicitno tražeći pojedinog studenta koristeći tag <student> i ime studenta kojeg traži.

b) Dinamički ili generički pristup podacima – Aplikacija može pristupati XML dokumentu na osnovu sadržaja dokumenta koristeći poznatu strukturu dokumenta. Drugim riječima, aplikacija može pretražiti sve tagove i podatke unutar dokumenta bez obzira kakvi se podaci čuvaju u XML dokumentu. Skup podataka je nebitan zato što pomoću XML DOM-a je omogućen direktan pristup aplikaciji pomoću internet pretraživača, koji prikazuje podatke na ekranu kao što je pokazano na slici 2.1 prolazeći kroz drvo koje sadrži podatke u obliku XML dokumenta.

Page 29: 47165895-MladenANTUNOVIC

| 28

Internet pretraživači koriste XML DOM da bi prikazali sliku XML dokumenta, i parser koji ne brine koji je tip podataka sačuvan u XML dokumentu nego kako su struktuirani podaci. Podaci smješteni u relacionoj bazi podataka se mogu koristiti za kreiranje XML dokumenata koji također mogu biti smješteni u bazi podataka. XML DOM omogućava pristup XML dokumentima koji su smješteni u relacionoj bazi podataka kao što je Oracle. Drugim rječima nakon što se kreira XML dokument moguće ga je sačuvati u relacionu bazu podataka i onda koristiti aplikacije baze podataka da bi se pristupilo XML dokumentima u cjelini ili samo djelovima dokumenata koristeći XML DOM. Na različite načine i u različitoj mjeri internet pretraživači podržavaju prikaz podataka iz XML dokumenata. Posljednje verzije Internet Explorer-a ili Firefox-a bi trebale podržati prikaz XML podataka dok za starije verzije nije sigurno da li će se podaci ispravno prikazivat.

2.4.3.5. Document Type Definition (DTD)

DTD predstavlja metodu definisanja konzistentne strukture pri kreiranju XML dokumenata

dozvoljavajući na taj način uvođenje standarda za kreiranje XML dokumenta u kompanijama. Sa stanovišta baze podataka u pogledu XML-a, DTD omogućava način struturne validacije dokumenata, koji ima veoma važnu ulogu u bilo kojem pogledu strukture baze podataka. Zavisno od načina kreiranja ili generisanja XML dokumenata, da li predstavljaju izvor podataka ili metapodataka ili obadvoje, standardizacije pomoću DTD-a može biti veoma korisna. Statični podaci u bazi podataka su podaci koji se vrlo rijetko mjenjaju ili se ne mjenjaju uopšte (baza podataka koja čuva podatke o korisnicima). Transakcijski ili dinamički podaci su podaci koji se mjenjaju veoma često. Bez obzira da li se radilo o statičkim ili dinamičkim XML dokumentima oni će se kreirati automatski pomoću aplikacije. Zašto provjeravati validnost podataka pomoću DTD-a ako aplikacija generiše podatke i ujedno vrši validaciju podataka pri kreiranju ? Zato što pri korištenju XML dokumenta je moguće definisati XML šeme pomoću kojih su definisana pravila kreiranja i struktuiranja XML dokumenata te kreirani dokumenti moraju zadovoljavat definisane standarde.

2.4.3.6. Pravila pisanja XML dokumenata (XML sintaksa)

- XML tag: Početna linija XML dokumenta definiše verziju XML-a koji se koristi (<?xml

version=“1.0“?> ). - Root (Glavni) čvor: Sljedeća linija XML dokumenta sadrži glavni čvor XML dokumenta

strukture drveta (<root> ). Glavni čvor sadrži sve ostale čvorove u XML dokumentu direktno ili indirektno.

- Pojedinačni glavni čvor: XML dokument se sastoji od bar jednog sporednog čvora koji predstavlja glavni čvor u hijerarhiji za čvorove koje on sadrži. Svi podelementi moraju biti sadržani u okviru glavnog čvora(root node). XML tag se često naziva element.

- Završni glavni tag: Posljednja linija XML dokumenta sadrži završni element početnog glavnog elementa. Svi završni elementi imaju samo jedan istoimeni početni element

Page 30: 47165895-MladenANTUNOVIC

| 29

izuzev što je oznaka završnog elementa sa dodatim znakom kose linije unaprijed (</root> ).

- Otvoreni i zatvoreni elementi: Svi elementi XML dokumenta moraju imati svoj završni element inače XML dokument nije validan što uzrokuje grešku u radu sa takvim dokumentom. Izuzetak u ovom pravilu je element koji označava verziju XML-a koji se navodi samo na početku dokumenta i nema svoj završni element. Za razliku od XML-a HTML ne zahtijeva da svaki početni element ima svoj odgovarajuću završni element.

- Osjetljivost na velika i mala slova(Case sensitive): XML elementi razlikuju velika i mala slova dok HTML elementi ne. XML element <root> nije isto što i element <Root> već su to dva u potpunosti različita elementa.

- Pozicija elemenata: XML elementi imaju tačno određena pravila u pogledu ugnježdavanja elemenata. Svaki početni element mora imati svoj završni element na tačno određenoj poziciji dok kod HTML-a to nije slučaj. Primjer: <root><tag1></tag1></root> <!—Ispravan XML dokument -->

- Atributi elemenata: XML element može imati jedan ili više atributa i njihova vrijednost uvijek mora biti pod dvstrukim znacima navoda

<?xml version=”1.0”?> <kantoni> <kanton naziv=“ZE-DO“ broj_opcina=“25“> <!-- naziv je atribut --> <grad> <naziv>Kakanj</naziv> </grad> </kanton> </kantoni>

2.5. Prednosti i nedostaci Oracle baze podataka

Oracle baza podataka ima veliki broj mogućnosti i prednosti u odnosu na druge baze

podataka što Oracle kompaniju čini najvećom softverskom kompanijom u svijetu. Oracle baza podataka, u svakoj novoj verziji softvera, dolazi sa novim funkcionalnostima al i podrškom i poboljšanjima za postojeće funkcionalnosti iz prethodne verzije. Jedna od bitnih činjenica je da Oracle baza podataka predstavlja unazad kompatibilan softver što znači da podaci smješteni u ranijim verzijama podataka se mogu prebaciti u noviju verziju baze podataka ili da se softver može nadograditi na posljednje aktuelnu verziju sistema za upravljanje bazom podataka. Pri izlasku nove verzije Oracle baze podataka dokumentacija vezana za novu verziju nudi pregled svih novih funkcionalnosti koje dolaze sa novom verzijom kao i unaprijeđenim mogućnostima iz prethodne verzije. Trenutno je aktuelna verzija Oracle baze podataka 11.1.0.6 koja se pojavila na tržištu početkom 2008.godine dok je već u septembru 2008.godine na tržište izdata zakrpa za sve greške i poboljšanja u funkcionalnosti postojećih funkcionalnosti. Oracle kompanija je zauzela vodeću ulogu u polju sistema za upravljanja bazama podataka iz sljedećih razloga: Oracle baza podataka se koristi u gotovo svim aplikacijama koje rade sa velikim količinama podataka, naročito je zastupljena u bankovnim aplikacijama. Činjenica je da deset vodećih

Page 31: 47165895-MladenANTUNOVIC

| 30

svjetskih banaka koristi Oracle softver jer Oracle nudi kvalitetnu kombinaciju informacionih tehnologija i sveobuhvatan skup integrisanih poslovnih rješenja uključujući specijalizovane aplikacije za rad sa bankarskim sistemima. Osim Oracle-a sistemi za upravljanje bazama podataka kao što je Microsoft SQL Server također nude funkcionalnost kao što su petlje, nizovi, kursori i privremene tabele i druge operacije na način koji koriste više resursa od Oracle baze podataka. Prednost svake nove verzije Oracle baze podataka jesu nove funkcionalnosti i optimizacija postojećih funkcionalnosti iz prethodne verzije. Pouzdan i adekvatan sistem bazama podataka posjeduje sljedeće osobine:

- Atomičnost – U Oracle bazi podataka izvršenje svih vezanih transakcija ili je spašeno u bazu podataka, u slučaju ispravnog rezultata, ili se podaci u slučaju greške pri izvršavanju transakcije vraćaju u stanje kakvo je bilo prije početka izvršavanja transakcije. Na ovaj način je omogućeno da se transakcije smatraju i izvršavaju kao jedna operacija nad bazom podataka i u oba slučaja, ispravnost ili greška, podaci u bazi podataka ostaju u konzistentnom stanju.

- Konzistentnost – Baza podataka prelazi iz jednog validnog stanja u drugo validno stanje. Ilegalne operacije nisu dozvoljene i ako se desi da je narušen intergritet podataka promjene neće biti spašene u bazu podataka već se stanje sistema vraća na prethodno ispravno stanje.

- Izolacija podataka – rezultati jedne transakcije nisu vidljivi drugim transakcijama sve dok se transakcija ili uspješno ne završi pa se podaci zapišu u bazu podataka ili se sistem ne vrati u prethodno ispravno stanje. Na ovaj način informacije koje se čuvaju u Oracle bazi podataka su sigurni i oneogućeno je narušavanje integriteta podataka.

- Stabilnost – Rezultati transakcije jednom spašeni su stalni podaci koji su permanentno zaštićeni od grešaka na sistemu osiguravajući održavanje i zaštitu podataka.

2.5.1. Nove i poboljšane mogućnosti Oracle 11g baze podataka

Jedna od novih mogućnosti Oracle baze podataka već od verzije 10g je „Kanta za smeće“

(recycle bin). Navedena opcija kada je omogućena se može koristiti analogno kanti za otpatke u Windows operativnom sistemu. Izbrisane tabele idu u kantu za otpatke i mogu se ponovo vratiti baš kao u Windows operativnom sistemu.

Bitna nova funkcionalnost Oracle baze podataka predstavlja novi koncept nazvan „Flashback“. Činjenica je da srce svake aplikacije i oraganizacije predstavljaju podaci što zahtjeva pažljivo održavanje postojanosti i validnosti podataka koji se čuvaju u bazi podataka. Ali, u najgorem slučaju se može desiti da iz nekog razloga dođe do gubitka bitnih podataka za šta se u većini slučajeva optužuju hardverske greške ili ljudski faktor kao što su slučajno brisanje podataka, brisanje pogrešnih podataka ili brisanje pogrešne tabele.

Rezultat svih navedenih grešaka je gubljenje podataka što predstavlja veliki problem za bilo koju bazu podataka bez obzira na količinu podataka koja se čuva u bazi podataka. Pomoću Flashback Oracle tehnologije moguće je izbjeći neugodnosti koje izazivaju navedene situacije te na taj način olakšati upravljanjem podataka u bazi podataka.

Page 32: 47165895-MladenANTUNOVIC

| 31

Pomoću flashback tehnologije moguće je: - Efikasno vratiti podatke koji su izgubljeni kao rezultat ljudskog faktora. - Na brži način povratak baze u prethodno ispravno stanje. - Na jednostavniji način upravljati procesima i podacima.

Flashback je moguće definisati nad sljedećim objektima baze podataka:

- Flashback arhive podataka – na ovaj način se automatski zapisuju promjene nad svim Oracle podacima i omogućava jednostavan i centralizovan pristup tim podacima te u slučaju greške svi podaci se mogu vratiti u prethodno validno stanje.

- Flashback na nivou transakcije – Baze podataka koje čuvaju velike količine podataka svakodnevno obavljaju veliki broj kompleksnih transakcija, omogućavajući atomičnost i konzistentnost podataka pri izvršavanu operacija kao što su ubacivanje, mjenjanje i brisanje podataka. U slučaju da dođe do 'loše' transakcije koja će svojim djelovanjem uzrokovati grešku u podacima potrebno je stanje podataka vratiti na prethosno ispravno stanje. Vraćanje podataka u prethodno stanje može biti veoma komplikovan i 'skup' proces, pomoću 'flashback' tehnologije jednu transakciju i sve transakcije koje o njoj zavise moguće je vratiti pomoću jedne PL/SQL operacije.

- Flashback baze podataka – Pomoću ove opcije moguće je na brz i jednostavan način vratiti stanje baze podataka na određeni trenutak u prošlom vremenu kako bi se ispravile greške uzrokovane greškom na bazi podataka od strane korisnika ili na neki drugi način.

- Flashback tabele – Kada dođe do ljudske ili do greške od strane aplikacije poželjno je da postoji mogućnost da se mogu vratiti podaci koji su postojali u tabeli nad kojom je greška imala uticaja. 'Flashback' tabele vraća ne samo greškom izgubljene podatke nego i sve objekte na koje je greška imala uticaja kao što su indeksi i trigeri.

Greške uzrokovane ljudskim faktorom su najčešće greške koje uzrokuju prestanak ispravnog rada sistema. Ovakve greške je teško predvidjeti i veoma teško je nakon greške sistem vratiti u ispravno stanje ako se ne koristi odgovarajuća tehnologija. Jedno od rješenja je Oracle Database 11g Flashback tehnologija koja, za razliku od drugih, revolucionarno vrši povratak podataka zavisno od vremena kad su se desile promjene što smanjuje vrijeme potrebno da se isprave nepredvidive greške uzrokovane ljudskim faktorom.

2.6. Istorija Oracle baze podataka

Od osnivanja do danas Oracle koorporacija je fokusirana na inovatinost proizvoda i načinima kako da doprinesu optimalnijem i jednostavnijem poslovanju kompanija koje koriste njihove proizvode. Korisnici Oracle proizvoda koriste Oracle tehnologije, aplikacije i servise s ciljem poboljšanja svojih poslovnih rješenja. Veliki broj korisnika širom svijeta u okviru različitih industrijskih procesa koriste Oracle proizvode kako bi povećali profitabilnost i uspjeh u svom poslovanju. Oracle baza podataka je prva relaciona baza podataka koja podržava mrežne

Page 33: 47165895-MladenANTUNOVIC

| 32

tehnologije, omogućavajući da podaci jedne kompanije budu zaštićeni i dostupni u cijeloj mreži. Oracle predstavlja broj 1 bazu podataka i broj 1 bazu podataka na Linux operativnom sistemu.

2.6.1. Pregled razvoja Oracle koorporacije od nastanka do danas

1979.godina – Larry Ellison i njegove kolege su osnovali kompaniju po imenu „Software Development Laboratories“ koja je iste godine promjenila naziv u „Relational Software, Inc.“ (RSI) i predstavila proizvod pod imenom Oracle V2 kao prvi komercijalno dostupan relacioni sistem za upravljanje bazama podataka. Oracle V2 je napisan u PDP-11 asembler jeziku i pokretao se na DEC-ovom VAX miniračunarima u PDP-11 emulator načinu rada. 1980.godina – RSI je nastavio sa rastom povećavajući upotrebu miniračunara na radnim mjestima. Oracle verzije 2 je impresionirao prve korisnike sa implementacijom SQL-a kojeg je obilježavao ne baš programerski stil korištenja. Rast u korištenju DEC-ovih VAX računara i UNIX operativnog sistema na miniračunarima nije samo pomogla u rastu Oracle koorporacije nego je omogućila velikim industrijskim kompanijama da pređu sa velikih i skupih računarskih sistema na korištenje jednostavnijih i jeftinijih računarskih konfiguracija kao što su radne stanice. Larry Ellison je po prvi put demonstrirao Oracle sistem baza podataka na SIGMOD konferenciji gdje je baza podataka bila instalirana na računaru manjih dimenzija (PDP-11). IBM-ovi inžinjeri koji su prisustvovali konferenciji su bili impresionirani demonstracijom jer su oni u isto vrijeme razvijali sličan sistem kojeg je moguće bilo samo pokretati na „mainframe“ računarima. 1981.godina – RSI kompanija je počela sa razvojem novog sistema za upravljanje bazama podataka koji će omogućiti korisnicima da unose, vraćaju i formatiraju podatke u obliku izvještaja. Prvi alat koji je razvijen za potrebe kreiranja izvještaja je nazvan „Interactive Application Facility (IAF)“ pomoću kojeg je omogućeno generisanje i izvršavanje formi za procesiranje transakcija i predstavlja preteču današnjeg „Oracle Forms“ alata. U međuvremenu kompanija nastavlja sa radom na poboljšanju kompatibilnosti koristeći popularni C programski jezik za sljedeću verziju Oracle baze podataka. 1982.godina – RSI kompanija mijenja naziv u Oracle Systems. RSI kompanija nastavlja sa rastom i razvojem u pogledu kompatibilnosti tako verzija 2.3 Oracle baze podataka podržava veći dijapazon DEC-ovih VAX i PDP-11 miniračunara koji koriste 16-bitne i 32-bitne procesore kao i podrška IBM-ovim superračunarima koji pokreću VM/CMS operativne sisteme. Tridesetpet programera zaposlenih na puno radno vrijeme u RSI kompaniji su kodirali i testirali novu verziju baze podataka koja će uključiti brzu prenosivost između široko rasprostranjenih superračunara i radnih stanica. 1983.godina – Naglasak na kompatibilnosti i portabilnosti. Oracle Systems izlazi na tržište sa verzijom 3 baze podataka sa serverskim kôdom napisanom u C programskom jeziku. Oracle baza podatata će se od sada moći pokretati na superračunarima, miniračunarima i radnim stanicama, na bilo kojim hardverskim platformama koje imaju C kompajler. Ova mogućnost dozvoljava da korisnik kreiranu bazu podataka može analizirati na bilo kojoj hardverskoj platformi. Uvedene izmjene u verziji 3 Oracle baze podataka predstavljaju preteče današnje otvorene arhitekture IT sistema.

Page 34: 47165895-MladenANTUNOVIC

| 33

1984.godina – Oracle postaje skalabilan. Oracle verzije 4 se odlikuje novom mogućnosšću nazvana konzistentnost pri čitanju (read consistency), koja osigurava da će upit nad bazom podataka vratiti skup podataka koji su konzistentni u trenutku vremena bez obzira na ostale operacije koje se u tom vremenu izvršavaju nad podacima u bazi podataka. Prednost nove mogućnosti u poslovnim aplikacijama je očigledna, ako se kao primjer uzme prenos novca u bankovnom sistemu s jednog računa na drugi za vrijeme izvršavanja upita neće biti pogrešno izračunat, i uposlenici čiji su podaci unesenei u bazu podataka o uposlenicima za vrijeme izvršavanja upita se neće brojati dvaput. Kako je sve više rasla potreba za uključivanjem računarskih tehnologija u sve oblike ljudskog života, konzistentnost pri čitanju podataka iz baze podataka je postala vrlo bitno pitanje. Kako je u međuvremenu sve veći broj kompanija za sistem upravljanja bazama podataka birao Oracle bazu podataka tako su proizvođači računarske opreme bili primorani podržati sposobnost portabilnosti koja je podržana od strane Oracle baze podataka. 1985.godina – Klijent-server računarstvo postaje sve više zastupljeno u računarskoj industriji što je uzrokovalo da Oracle objavi novu verziju sistema za upravljanje bazama podataka. Oracle baza podataka verzije 5 je prva baza koja je radila u klijent-server načinu rada. Na ovaj način je omogućeno da se serveru baze podataka pristupa sa desktop računara (klijent) preko mrežne arhitekture. 1986.godina – Distribuirano računarstvo. Oracle verzija 5.1 uključuje novu opciju koja omogućava izvršavanje distribuiranih upita, dozvoljavajući da upit pristupa podacima koji su smješteni na više različitih fizičkih lokacija. Verzija 5.1 donosi mogućnost da se više računara veže u klaster koji fizički ne dijele zajedničku memoriju a pristupaju istoj bazi podataka. Također tehnologija klastera će se nastaviti usavršavati kroz sljedeće generacije Oracle baze podataka što će omogućiti dizajna fleksibilnih aplikacija koje će se usavršavati kako se usavršava i poslovanje. 1987.godina – Na osnovu klijentskih zahtjeva za poslovnim aplikacijama, Oracle kompanija pokreće diviziju za razvoj aplikativnog softvera, u početku sa samo sedam zaposlenih. U veoma kratkom vremenu, kompanija gradi aplikativni softver koji u sebi integriše usku povezanost sa bazom podataka kako bi unarijedili mogućnost procesiranja podataka omogućavajući optimalno izvršavanje poslovnih aktivnosti. Kako bi pomogli krajnjim korisnicima pri korištenju Oracle baze podataka i aplikativnog softvera uvodi se servis za podršku korisnicima. 1988.godina – Kako su rasle potrebe za uvođenjem računarskih tehnologija u sve veći broj poslovnih procesa tako su rasli zahtjevi za ubrzanjem rada poslovnih aplikacija kako bi kompanije povećale profit. Na osnovu zahtjeva tržišta Oracle predstavlja verziju šest Oracle baze podataka. Neke od novih mogućnosti ove verzije Oracle baze podataka su zaključavanje na nivou sloga podataka za vrijeme operacije pisanja što je u prethodnim verzijama rađeno na nivou čitave tabele. Rezultat navedene mogućnosti se ogleda u većoj propusnosti u pogledu izvršavanja klijentskih zahtjeva kako bi dok se u jedan slog baze podataka pišu nove vrijednosti ostale vrijednosti u istoj tabeli su mogli biti korišteni ili za čitanje ili za pisanje. U verziji šest Oracle baze podataka se uvodi mogućnost kreiranja backup-a za vrijeme dok je instanca baze podataka aktivna tj.moguće je izvršavati normalne operacije nad bazom podataka.

Page 35: 47165895-MladenANTUNOVIC

| 34

1989.godina – Oracle predstavlja komercijalne aplikacije za razliku od dosadašanjih koje su korištene na superračunarima za naučne i inžinjerske zadatke. Tražeći svoje mjesto na što je više moguće tržišta koji se dotiču sa dostignućima IT industrije Oracle predstavlja maloprodajne aplikacije. Ova dekada u istorji Oracle kompanije završava se sa rastom kompanije u više lokacija tako da nastaju nova odjeljenja u Belmont-u i Kaliforniji. 1990.godina – Nakon uspješne „utrke“ udvostručavajući prodaju svake godine Oracle se suočava sa upravljačkim izazovima i potrebom za vođenjem bolje poslovne politike kroz strožiji pristup upravljanju finansijama. Unatoč izazovima, Oracle isporučuje na tržište aplikacije koje dozvoljavaju klijentskim programima da se automatski prilagode različitim korisničkim interfejsima kao što su Macintoši i radne stanice. Uz navedene aplikacije u opticaju su prve klijent-server aplikacije. Raspadom Sovjetskog Saveza i rušenjem postojećih barijera Oracle formira odjel za Jugoistočnu Evropu kako bi usluga bila dostupna korisnicima u Bugarskoj, Čehoslovačkoj, Mađarskoj i Sovjetskom Savezu. 1991.godina – Računarska tehnologija se počinje sve više prožimati kroz sve sfere ljudskog života, postaje sve zastupljenija sa velikim stepenom savršenstva zahtjevajući od softvera skalabilnost kako bi se zadovoljio veliki trend rasta poslovanja. Oracle kompanija je na ove potrebe odgovorila sa bazom podataka koja podržava skalabilnost, portabilnost i povećanjem vjerodostojnosti čak i kada se pokreće na masivnim sistemima koji vrše paralelno procesiranje podataka. Sistemi sa paralelnim procesiranjem podataka mogu vršiti pretraživanje velikih baza podataka stotinama puta brže od tradicionalnih superračunara. 1992.godina – Nakon četiri godine intenzivnog istraživanja i razvoja i dvije godine testiranja od strane korisnika Oracle se predstavlja na tržištu sa bazom podataka verzije sedam. Oracle sedam uključuje nove mogućnosti poput procedura i trigera što bazu podataka čini programabilnom uz podršku poslovnim pravilima. Oracle baza podataka verzije sedam je doživila veliki uspjeh i podršku za svoju superiornost u odnosu na druge sisteme za upravljanje bazama podataka koje su tada bile prisutne na tržištu. 1993.godina – Klijent-server revolicija se nastavlja. Kako kompanije sve više pristupaju klijent-server modelu podrške kritičnim poslovnim procesima, Oracle revidira sve svoje aplikacije kako bi podržale klijent-server model rada. Prvi klijent-server model projekta realizovan je kao „Oracle Financials“ za OS/2 operativni sistem 1990.godine. Kako bi bilo moguće da se razvijaju nove generacije aplikacija Oracle je razvio alat koji čini skup integrisanih alata koji pružaju podršku pri razvoju aplikacija, Oracle Cooperative Development Environment (CDE). Oracle kompanija je uložila 177 miliona američkih dolara u istraživanje i razvoj kako bi se objedinile nove tehnologije koje bi povećale ulogu baze podataka u novim oblastima multimedije i interaktivnih servisa. Saradnja na polju multimedijalnih servisa je postignuta između Oracle korporacije i British Telecoma kao i Apple Computer kompanije s ciljem isporuke videa na zahtjev servisa koji su koristili testni TV korisnici u Velikoj Britaniji. 1994.godina – Predviđajući da će Internet, intranet i televizija zahtjevati efikasan i pouzdan sistem za smještanje i upravljanje podacima Oracle predstavlja novi tip podatkovnih servera koji će pružiti potrebnu podršku dolazećih aplikacija. Oracle predstavlja prvog proizvođača softvera koji predstavlja server za upravljanje multimedijalnim podacima.

Page 36: 47165895-MladenANTUNOVIC

| 35

1995.godina – Internet. Na konferenciji u Parizu Larry Ellison, osnivač Oracle korporacije, predstavio je svoju viziju Internet baziranog računarstva i mrežnog računarstva koji donosi jeftinije uređaje koje omogućavaju izvršavanje aplikacija putem lokalne ili globalne mreže (Internet). Ključni preokret predstavlja ubrzano usavršavanje računarskih tehnologija kada Oracle predstavlja svoju Internet strategiju dok druge kompanije nisu čak ni imale viziju Internet strategije. 1996.godina – Kao dio nove Internet vizije u računarskim naukama Oracle pristup se ogleda u nastojanju da Internet računarstvo postane pristupačnije i da ga može korisitit što veći broj korisnika. Kao rezultat ovakve vizije Oracle predstavlja mrežnu arhitekturu računarstva, što nije neki novi Oracle proizvod nego konceptualni standard za skup tehnologija, bazirane na otvorenim standardima, što će omogućiti svim klijentima da rade sa serverima baza podataka, web serverima i aplikacijskim serverima preko mreže. 1997.godina – Mreža je računar. U junu 1997.godine Larry Ellison predstavlja novu verziju Oracle proizvoda – Oracle 8. Ova verzija Oracle baze podataka je dizajnirana da podrži mrežno računarstvo omogućavajući smještanje velikih količina podataka na serveru i pristup tim podacima preko mreže pomoću tankih klijenata. Pri kraju godine je predstavljen Oracle Application Server 4.0 koji predstavlja srednji sloj između klijentskih aplikacija i servera baze podataka gdje su smješteni podaci. Ova dva proizvoda predstavljaju ključni napredak u Oracle-ovoj strategiji distribuiranog računarstva – strategiji koja predstavlja početak uvođenja mrežnih tehnogija u poslovne procese. 1998.godina – Ideja nastala s uvođenjem računara sa mrežnim pristupom navela je Oracle korporaciju na ulazak u eru interneta. Principi zastupljeni mrežnim računarstvom koji su nastali evolucijom Interneta dovode do centralizovanog upravljanja podacima i tehnologijama, distribuirani pristup sistemima i dosta jednostavniji prenos podataka sa udaljenih lokacija. Oracle Business Online uvodi koncept distribuiranih aplikacija na Oracle računarima i pristup resursima pomoću klijenata kao što su internet pretraživači. Oracle 8i je prva verzija baze podataka koja podržava Internet tehnologije kao što su Java i HTTP. 1999.godina – Aplikacije, doba Interneta. Larry Ellison je predstavio Oracle Applications 11i, u potpunosti Internet baziran skupa alata koje donose prelaz iz klijent-server arhitekture u novu Internet baziranu arhitekturu aplikacija. Baza podataka koja treba pružiti podršku Internet baziranim aplikacijama također mora bit Internet orjentisana pa je tako krajem godine predstavljena Oracle baza podataka 8i verzije 2 koja je zadovoljavala potrebe tržita i to je ujedno najbrže napravljena verzija baze podataka u istoriji Oracle korporacije. 2000.godina – Oracle E-Business Suite 11i je prvi potpuno integrisani industrijski aplikacijski paket. U procesu dizajna velikih sistema na osnovu paketa aplikacija eliminiše kompleksnost pri intergraciji projekata i dozvoljava da podaci budu kosnolidovani i centralizovani u jedinstvenoj bazi podataka kako bi se olakšao način kreiranja izvještaja iz baze podataka. Kako se Oracle E-Business Suite 11i odlikuje mogućnošću da mu se pristupi preko internet pretraživača pomoću obične radne stanice tako se potreba za skupim klijent-server modelom smanjila na minimum. 2001.godina – Oracle baza podataka verzija 9i donosi sa sobom sistem za upravljnje podacima koja će napraviti revoluciju u ekonomičnosti računarstva. Tako će korisnici Oracle baze podataka, po prvi put u istoriji, imati mogućnost poboljšanja performansi,

Page 37: 47165895-MladenANTUNOVIC

| 36

graditi skalabilne sisteme sa uvijek dostupnim podacima koristeći novu tehnologiju pod imenom Oracle Real Application Cluster (Oracle RAC). Nakon deset godina razvoja Oracle RAC sad dozvoljava korisnicima da pokreću bilo kakve Oracle aplikacije na skupu jeftinijih računara povezanih u klaster koji se logički ponašaju kao jedan server baze podataka. Osim očiglednog smanjenja troškova pri kupovini hardverske arhitekture na ovaj način je omogućeno proširivanje kompanija na osnovu potreba jednostavno dodavajući nove računare povećavajući kapacitete a ako dođe do greške na pojedinom od računara jednostavno se može zamjeniti sa novim bez velikog vremena nedostupnosti. 2002.godina – Prve godine novog milenijuma sa sobom nose izlazak novih verzija tri Oracle proizvoda: Oracle baza podataka, Oracle Application Server i Oracle E-Business Suite. Sa ova tri sloja nove IT infrastrukture Larry Ellison sa Oracle korporacijom prelazi iz Internet ere u novu eru nazvanu „Unbreakable“ dizajniranu da se promovira Oracle-ov vodeći sigurnosni industrijski standard. Nijedan od konkurenata Oracle-u nije dostigao toliki nivo sigurnosti dizajnirajući siguran i pouzdan softver. 2003.godina – Godina nove ere Oracle-a sa glavnom misijom da se poboljšaju postojeće aplikacije i Oracle baza podataka. Oracle predstavlja novu verziju baze podataka – Oracle 10g, prva komercijlna baza podataka sa podrškom za mrežno računarstvo. Na ovaj način je omogućeno korisnicima da pokreće Oracle aplikacije na skupu manje skupih servera poboljšavajući performanse, pouzdanost i proširivost sistema dok s druge strane se smanjuje cijena poslovanja koristeći Oracle proizvode. 2004.godina – Osnovna djelatnost Oracle korporacije je upravljanje informacijama objašnjava Charles Phillips predsjednik Oracle korporacije na seminaru Oracle OpenWorld 2004. Kako su sljedeće generacije poslovnih procesa i poslovne inteligencije vođene sa velikim količinama bitnih podataka Oracle sebe vidi kao jednistvenu softversku kompaniju u potpunosti spremnu za novu eru – eru Informacija. Oracle je spremno ušao u novu eru sa svim proizvodima koje su plasirali na tržište, Oracle baza podataka 10g je vodeći sistem za upravljanje bazama podataka u pogledu mrežnog računarstva; Oracle Collaboration Suite može integrisati pristup elektronskoj pošti, govornoj pošti, internet konferencijama, datotekama ili bilo kakvim nestruktuiranim podacima iz jedinstvene baze podataka. 2005.godina – U maju Oracle predstavlja Project Fusion, sveobuhvatno ponuda za sve nivoe kompanije prožima se od Oracle platformske tehnologije, PeopleSoft aplikacija, Oracle E-Business paketa i moćnih Oracle alata za srednji sloj aplikacija. Oracle je nastavio u ovom smjeru sa ugovorom o kupovini ERP Siebel sistem-a. Idući u ovom smjeru, za razliku od drugih, jačanjem ponude Oracle proizvoda ubrzavajući inovativnost kako bi se izašlo u susret korisnicima što je brže moguće. 2006.godina – Počevši sa kupovinom bivšeg rivala Siebel-a, Oracle napreduje u ispunjavanja obećanja predstavljanja nove račuanrske platforme. Na glavnoj konferenciji sa korisnicima predsjednik predstavlja Applications Unlimited, konstatnu obavezu kontinualnog poboljšanja i podrške za postojeće Oracle proizvode. U međuvremenu Oracle predstavlja paket proizvoda poslovne inteligencije baziranih na najboljim osobinama Siebel-a i Oracle proizvoda – jednistveni Oracle Fusion. Sa novim ponudama za upravljanje informacijama, djelomično podrška za Linux korisnike i beta novih verzija aplikacija, Oracle pokazuje da može zadržati postojeća korisnička ulaganja čak i pri korištenju novih tehnologija.

Page 38: 47165895-MladenANTUNOVIC

| 37

2007.godina – Oracle korporacija nastavlja u nastojanju da poveća poslovanje. Inovacije postaju karakteristike Oracle-a na osnovu rezultata i broja proizvoda koji su predstavljeni u ovoj godini. Pravljenjem strateških pomaka Oracle je u mogućnosti da ponudi korisnicima veoma bogat skup industrijski aplikacija. „Mi vidimo uspjeh kao rezultat istraživanja i razvoja bez rizika. Korisnici Oracle proizvoda su dobili pristup čitavoj industrijskoj bazi dokumentacije za istraživanje i razvoj“ kaže Charles Phillips, predsjednik Oracle-a. Na prestižnoj dvadesetčetri-satnoj globalnoj konferenciji održanoj u Januaru na šest kontinenata, Oracle ispunjava obećanje i predstavlja nove verzije pet osnovnih prozivoda: Oracle E-Business Suite 12, Oracle's peopleSoft Enterprise 9, Oracle's Siebel CRM 8, Oracle's JD Edwards EnterpriseOne 8.12 i JD Edwards World A9.1. U julu Oracle korporacija izlazi na tržište sa Oracle bazom podataka verzije 11g koja uključuje mnoštvo novih mogućnosti i poboljšanja postojećih koji su prvenstveno industrijski orjentisani. Nako trideset godina od osnivanja, kada je kompanija nastala sa tri čovjeka i 2000 američkih dolara, prerasla je u najveću svjetsku softversku kompaniju koja ima godišnji prihod od osamnaest biliona američkih dolara, broji šezdesetpet hiljada zaposlenih i dvjestosedamdesetpet hiljada korisnika u više od stotinučetrdesetpet zemalja širom svijeta među kojima je i Bosna i Hercegovina. 2008.godina – Oracle korporacija nastavlja sa usavršavanjem svojih proizvoda prisutnih na IT tržištu omogućavajući korisnicima u potpunosti otvoren i integrisan softver. Sve veća nastojanja na polju integrisanja otvorenih standarda korisnici Oracle proizvoda sada su u prilici da koriste servis orjentisanu arhitekturu, prednosti u upravljanju resursima i performansama i u polju poslovne inteligencije. Dominacija Oracle proizvoda u sferi sistema za upravljanja bazama podataka dovodi Oracle kompaniju na mjesto broj jedan u ovom polju poslovnih i industrijskih procesa.

Page 39: 47165895-MladenANTUNOVIC

| 38

3. Oracle spatial

3.1. Upravljanje prostornim informacijama

Lokacije su već dugo prisutne u okviru podataka koji se vezuju za poslovne informacije.

Organizacije čuvaju informacije o lokacijama svojih kupaca, upravljaju prenosom proizvoda s jedne lokacije na drugu i mnoge druge aktivnosti koje se vezuju za geografske lokacije. Osnovna aktivnost rada sa prostornim podacima je većinom upravljanje informacijama o geografskim adresama različitih tipova entiteta kao što su kupci, korisnici, vlasništvo, dobra i uposlenici. Lokacije bi trebalo da su statične ili ako se mjenjaju, u većini slučajeva promjena lokacija je vrlo rijetka. Na primjer mjesto stanovanja jedne osobe se ne mijenja kroz vrijeme tako često, većinom kroz različite faze života se dešavaju promjene u mjestu stanovanja. Sistem za upravljanje informacijama o mjestu stanovanja jedne osobe čuva informacije o mjestu rođenja koji su statični i mjestu trenutnog stanovanja koji se povremeno mjenjaju. Sve ove informacije koje se vezuju za jedan entitet se čuvaju, analiziraju i razmjenju između više informacionih sistema a osnovna uloga je da se sve ove operacije svedu na jeftinije, brže i pristupačnije informacije. Većina ovih sistema su povezani međusobno putem Interneta. U navedenom primjeru pokazan je način na koji se smještaju podaci o pojedinom entitu vezani za zemaljske adrese, međutim u gotovo 80 % poslovnih sistema osim navedenih podataka čuvaju se i podaci o geografskim lokacijama gdje su smješteni određeni entiteti pomoću jedinstvenog koordinatnog sistema koji čuvaju podatke o tačno određenoj lokaciji. Mogućnost upravljanja prostornim podacima je ključ uspjeha poslovnih organizacija i može se dovesti u usku vezu sa smanjenjem troškova. Organizacije kao što su zdravstvo, telekomunikacije i vladine organizacije zavise od prostornih informacija pri izvršavanju svakodnevnih poslovnih aktivnosti. Ostale organizacije poput maloprodajnih kompanija, dostave proizvoda i reklamnih kampanija koriste prostorne informacije za donošenje strateški važnih poslovnih odluka kao što su: Gdje graditi novu prodajnu lokaciju? Gdje investirati sredstva kako bi se što veći broj klijenata uspješno uslužio ?

U jednom trenutku je izgledalo kao da je Internet učini lokacije nebitnim, čineći svijet u toj mjeri pristupačnim da nije bitno gdje se nalazili omogućavajući razmjenu podataka, sklapanje poslova i razmjenu sredstava bez obzira gdje se nalazili u svijetu što je dovelo do mišljenja da su prenos, smještanje i lokacije entiteta dostigli kritični nivo. Naravno ovakav način razmišljanja je neispravan. Internet je doprinio u pogledu globalizacije tako što je približio digitalni i fizički svijet na tako malu udaljenost, omoćeno je da se veliki dio poslovnih operacija izvršava putem Interneta bez obzira gdje se u svijetu nalazili. Sa nastankom bežičnih i prostornih servisa omgućeno je dodavanje lokacija na sve informacije ili poslovne procese koji se koriste. Tehnologija kao što je RFID (Radio Frequency IDentification) omogućavaju da imamo i pratimo informaciju o lokaciji bilo čega što želimo ma kolko to nešto bilo malo ili nebitno što je uzrokovalo da alati za upravljanje prostornim informacijama postanu u tolikoj mjeri bitni za današnji moderan način života.

Page 40: 47165895-MladenANTUNOVIC

| 39

Softverski alati za upravljanje prostornim informacijama tradicionalno su poznati pod imenom Geografski Informacioni Sistemi (GIS). GIS sistemi se specijalne aplikacije za smještanje, procesiranje, analiziranje i prikazivanje prostornih informacija. Kako je upotreba prostornih informacija u velikom porastu kako u poslovnom tako i u javnom sektoru neke od nedostataka geografskih informacionih sistema su postale otežavajući faktor. Organizacije se često susreću sa velikim brojem nekompatibilnih standarda za smještanje prostornih informacija što primorava korisnika na korištenje različitih jezika i interfejsa za anliziranje podataka. Sistemi kao što su CRM (Customer Relationship Management) i ERP (Enterpirise Resource Planning) u sve većoj mjeri zahtjevaju intagraciju prostornih informacija sa ostalim tipovima informacija koje čuvaju. U velikoj mjeri ovaj problem je bio na operativnom i tehničkom nivou koji je većinom rješavan ručnim ekstraktovanjem podataka iz jednog sistema i korištenje tih podataka u drugom sistemu kako bi se vršila potrebna analiza.

Oracle podrška za prostorni tip podataka (Oracle Spatial) ima specijalnu ulogu u poboljšanju rješenja navedenih problema. Jednom kada se prostorni podaci smjeste u Oracle bazu podataka mogu biti procesirani i povezani sa drugim podacima koji se također čuvaju u bazi podataka kao što su: prostorne informacije ili lokacije, ili jednostavno bilo koji drugi atribut koji je vezan za određeni entitet. Na ovaj način rješena su problemi sa koordinacijom sa više izvora podataka zbog nezavisnosti aplikacije od specijalnih struktura podataka i problem sa korištenjem više programskih jezika da bi se dobili potrebni podaci. Prednost pri smještanju prostornih informacija u Oracle bazu podataka jeste mogućnost pristupa podacima pomoću SQL upita kao i kod bilo koje baze podataka koje čuva podatke bilo kojeg tipa. Veliki broj sistema za procesiranje prostornih podataka kao što su GIS i baze podataka koje čuvaju prostorne informacije omogućavaju funkcionalnost potrebnu za upravljanje prostornim informacijama koristeći vlastite tipove podataka i funkcije koje rade sa specifičnim tipovima. U nastavku je data terminologija vezana za prostorne informacije nevezano za bilo koji specifičan alat kao što je Oracle Spatial.

3.1.1. Operacije nad prostornim tipom podataka

Prostor za smještanje prostornih podataka – Prostorni podaci se većinom čuvaju u formi baze podataka. Na primjer sistem baze podataka može podržavati geometrijski tip podataka gdje je moguće smještati prostorne informacije kao što su: tačke, linije i poligoni.

Analiza prostornih informacija – U većini slučajeva funkcije koje se koriste za analizu prostornih informacija su sljedeće:

- Within-distance (Na udaljenosti) – Funkcija koja vraća sve lokacije u odnosu na zadatu udaljenost od određene tačke.

- Nearest-neighbor (Najbliži susjed) – Funkcija vraća sve lokacije koje su najbliže referentnoj lokaciji.

- Contains (Sadrži) – Rezultat ove operacije su sve lokacije koje sadrže traženu geografsku vrijednost (npr. geografska dužina).

- Distance (Udaljenost) – Funkcija računa udaljenost između dvije zadate lokacije. - Buffer – Vraća skup lokacija koje okružuju zadatu lokaciju. - Overlay – Operacija prekriva različite nivoe prostornih podaka.

Page 41: 47165895-MladenANTUNOVIC

| 40

- Visualization (Prikaz) – Operacija prikazuje prostorne informacije(lokacije) na mapi.

3.1.2. Smještanje prostornih podataka u bazu podataka

Kada govorimo o prostornom tipu podataka, uzimajuću u obzir da je osnovni geometrijski

element tačka koja je određena sa dvije koordinate u dvodimenzionalnom koordinatnom sistemu, možemo razlikovati:

- Tačka – određena sa x,y koordinatama u 2D koordinatnom sistemu ili sa x,y,z u 3D koordinatnom sistemu (Npr. lokacija prodajnog objekta, osobe i slično).

- Linija – prostorni opis zahtijeva početnu koordinatu, završnu koordinatu i nekoliko koordinata tačaka između početne i krajnje tačke(Geometrija: Linija je skup tačaka). Primjer prostornih podataka ovog tipa su ulice.

- Poligon – oblast zatvorena linijama (Npr. Aerodrom, stadion i slično).

Slika 3.1. – Vektorski prikaz prostornih podataka

Oracle spatial instalacija dolazi u okviru standardnog paketa instalacije 11g Oracle baze podataka. Pomoću spatial tipa podataka je moguće čuvati informacije o podacima kao što su:

- Lokacija – Određuje lokaciju objekata ili ljudi u geografskom smislu i predstavljaju se pomoću dvije, tri ili četri dimenzije u koordinatnom sistemu. Na primjer lokacija Elektrotehničkog Fakulteta u Sarajevu je određena sa koordinatama geografske dužine (longitude) i geografske širine(latitude) u dvodimnezionalnom koordinatnom sistemu sa vrijednostima LonLat(18.398473262786865,43.85659481561591).

- Prostor – Pokazuje na geometrijsku strukturu podataka. Tačka, linija i poligon predstavlajju primjere geometrijskog prostora. Za navedeni primjer koordinata Elektrotehničkog Fakulteta u Sarajevu u dvodimenzionalnom latitude/longitude

Page 42: 47165895-MladenANTUNOVIC

| 41

koordinatnog sistema imamo da je prostor tipa tačke. U ovom slučaju tačka predstavlja ujedno i lokaciju i prostor, međutim prostor može biti linija ili poligon koji su određeni dvima ili više tačaka koje se međusobno spojene.

SDO_GEOMETRY tip podataka čuva podatke o lokacijama ili o prostornim informacijama u tabeli čija je kolona geometrijskog tipa. Ovaj tip podataka se predstavlja kao Oracle tip podataka. Kada se u Oracle bazi podatka smještaju geometrijski tipovi podataka jednostavno se kolona, unutar tabele gdje će se smještati podaci, definiše kao kolona tipa SDO_GEOMETRY.

create table lokacije ( id NUMBER, naziv_lokacije VARCHAR2 (64), lokacija SDO_GEOMETRY );

3.1.3. Oracle spatial arhitektura

Oracle Spatial tehnologija se nalazi između dva sloja: Oracle servera baze podataka i aplikacionog servera. Na slici 3.2 prikazane su različite komponente koje čine stek Oracle spatial tehnologije i prikazuju komponente koje povezuju Oracle server baze podaka sa aplikacijskim serverom. Osnovne komponente koje sačinjavaju Oracle spatial tehnologiju u okviru Oracle servera baze podataka su: model smještanja podataka, alate za analizu i upite nad bazom podataka, i alate za unos podataka u bazu podataka. Komponenta MapViewer se nalazi u okviru Oracle aplikacijskog servera već od verzije 10g. Osnovne komponente koje su prikazane na slici 3.2 su:

- Data model (Model podataka) – Oracle spatial koristi SQL tip podataka, SDO_GEOMETRY, za čuvanje prostornih informacija u Oracle bazi podataka. Korisnici su u mogućnosti da definiraju tabele koje sadrže kolone SDO_GEOMETRY tipa kako bi u njih smještali lokacije korisnika, prodavnica, restorana, poslovnih objekata i entiteta kao što su ulice, raskrsnice, parkovi itd.

- Location-enabling – Korisnici mogu dodavati SDO_GEOMETRY kolone u aplikacijske tabele unoseći podatke pomoću Oracle-ovih alata kao što su SQL*Loader, import i export alati. Također je moguće konvertovati geografske adrese u prostorni tip podataka koristeći geocoder komponentu Oracle spatial tehnologije.

- Spatial query and analysis (Upiti i analiza spatial tipa podataka) – moguće je vršiti upite i manipulisati sa SDO_GEOMETRY tipom podataka pomoću Oracle komponente koristeći index i geometrijski mehanizme.

- Advanced spatial engine (Napredni mehanizmi za rad sa spatial tipom podataka) – pomoću ove Oracle spatial komponente moguće je vršiti komplikovanije radnje nad prostornim tipom podataka koji vode do naprednih aplikacija koje rade sa spatial tipom podataka kao što su Geografski Informacioni sistemi (GIS) i bioinformatika. Također su

Page 43: 47165895-MladenANTUNOVIC

| 42

uključeni mehanizmi rutiranja, mrežna analiza i GeoRaster koji omogućavaju čuvanje spatial objekata koristeći slike (skup piksela) radije nego tačke, linije i poligone.

- Visualizaton (Vizuelizacija) – Komponente uključene u Oracle aplikacijski server omogućavaju grafičko predstavljanje prostornih podataka pomoću alata MapViewer koji podatke smještene u obliku SDO_GEOMETRY tipa može prikazati na mapi. U posljednjim verzijama Oracle softvera predstavljen je Oracle Maps skup tehnologija koje poboljšavaju funkcionalnost i performanse MapViewer-a

Slika 3.3. – Komponente Oracle spatial tehnologije

3.2. SDO_GEOMETRY tip podataka U prethodnim poglavljima je bilo govora o prostornim tipovima podataka i načinima

upotrebe pri razvoju aplikacija, smještajući podatke u tabele baze podataka koje su sačinjene od kolona SDO_GEOMETRY tipa podataka. U nastavku je fokus na smještanju i modeliranju različitih informacija o lokacijama određenih objekata koristeći SDO_GEOMETRY tip podataka u okviru Oracle baze podataka. U koloni SDO_GEOMETRY tipa podataka mogu se smještati različite vrste prostornih informacija kao što su:

- Tačka – smještanje koordinata lokacija kao što su: korisnik, prodavnica, adresa isporuke, adresa događaja, itd.

- Linija – koristi se za čuvanje koordinata djela ulice i slično.

Page 44: 47165895-MladenANTUNOVIC

| 43

- Poligon - smještanje koordinata jednog okruga, grada, područja jedne opštine, kampusa i slično.

- Kompleksni poligoni – smještaje podataka kao što su poligoni koje sačinjavaju više poligona, na primjer granice država kao što je Kalifornija.

3.2.1. Tipovi geometrijskih podataka podržani u SDO_GEOMETRY Oracle tipu podataka

Slika 3.4. Primjeri geometrijskih podataka podržanih u SDO_GEOMETRY tipu podataka

3.2.1.1. Points (Tačke)

Najjednostavniji oblik geometrije koji, zavisno od toga da li se radi o dvodimenzionalnom ili trodimenzionalnom koordinatnom sistemu, se predstavlja sa dvije (geografska dužina, geografska širina) ili tri vrijednosti (geografska dužina, geografska širina, visina). Podaci tipa tačke većinom čuvaju informacije o objektima, osobama i drugim lokacijama gdje nije bitno da se zna oblik niti površina objekta o kojm se čuvaju informacije nego samo njegov geografski položaj (lokacija).

3.2.1.2. Line strings (Linije)

Linijama se predstavljaju dvije ili više međusobno povezanih tačaka. Uopšteno, ulice, prenosne mreže, gasovodi su predstavljeni pomoću tipa linije u okviru SDO_GEOMETRY tipa.

Page 45: 47165895-MladenANTUNOVIC

| 44

Ako se radi o zatvorenoj liniji onda govorimo o prstenu, u svim ostalim slučajevima kažemo da se radi o liniji. Linija spaja dvije ili više tačaka pomoću:

- Pravih linija – Dvije tačke su jednostavno spojene pravom linijom, primjer se može vidjeti na slici 3.4. objekat B.

- Zakrivljenih linija – Dvije ili više tačaka spojene zakrivljenim linijama koje zajedno se smatraju kao jedna linija.

- Kombinacija pravih i zakrivljenih linija – Linija sastavljena od spojenih tačaka gdje je jedan dio tačaka spojen pravim a jedan dio zakrivljenim linijama. Ovakva kombinacija se naziva složena linija.

3.2.1.3. Poligoni i površine (Polygons and Surface)

Poligon je određen sa jednim ili više prstenova (zatvorenih linija) i asocira na oblast, može

biti različitog oblika (pravougaonik, krug, piramida, trougao itd.). Poligonom se, u geografskom smislu, može predstaviti područje grada, opštine, države. Poligon ima sljedeće osobine:

- Područje poligona je određeno sa jednom ili više zatvorenih linija. Specijalni slučajevi poligona koje je moguće predstaviti pomoću SDO_GEOMETRY tipa podataka uključuje pravougaonike i krugove.

- Poligon, za razliku od linije, određuje površinu koja je zatvorena linijama. Površina poligona treba da bude kontinualna (konveksna) tako da ako se krećemo unutar prostora poligona ne prelazimo preko linija koje ga određuju. Na primjer broj 8 ima oblik poligona koji nije u skladu sa navedenim pravilima, međutim moguće je broj 8 predstaviti kao višepoligonalnu geometriju ili kao kolekciju.

- Prsten je određen sa površinom koju zatvara poligon a moguće je razložiti na prave, krive ili skup pravih i krivih linija. Krug unutar kruga predstavlja se kao rupa u prostoru, tako da ako je određena površina određena pomoću dva kruga jedan unutar drugog onda ta površina predstavlja presjek površina krugova koji je određuju.

3.2.1.4. Geometrijska tijela (Solids)

Jednostavno geometrijsko tijelo je određeno sa vanjskom površinom i nijednom ili više unutrašnjih složenih površina (objekat J, slika 3.4.). Za razliku od površine geometrijsko tijelo osim površine ima i zapreminu, koriste se za predstavljanje zgrada i ostalih arhitektonskih objekata te se kao takvi mogu koristiti u aplikacijama za 3D modeliranje gradova, ulica, država i slično. U nekim slučajevima zgrade se sastoje od jednog ili više vezanih građevinskih objekata pa se kao takve mogu predstavljati kao složeni objekti sastavljeni od više jednostavnih (osnovnih) oblika (Composite Solid).

3.2.1.5. Kolekcije (Collections)

Kolekcija je određena sa više geometrijskih objekata. Kolekcija može biti heterogena –

sačinjena od različitih geometrijskih objekata kao što su tačke, linije i poligoni; homogena –

Page 46: 47165895-MladenANTUNOVIC

| 45

sastoje se od elemenata istog tipa. Za već navedeni primjer broja 8 kao geometrijskog oblika može se reć da ga je moguće predstaviti kao kolekciju dva objekta tipa poligona.

3.2.2. Tip, atributi i vrijednosti SDO_GEOMETRY tipa

SQL/MM predstavlja ISO/IEC međunarodni standard za “Text, Spatial, Still Images, and

Data Mining“, odnosi se na tipove podataka definisane od strane korisnika koji su povezani sa rutinama smještanja, upravljanja i čitanja iz baze podataka dvodimenzionalnih geometrijskih podataka. Ovim standardom je definisano da SDO_Geometry tip služi za smještanje dvodimenzionalnih geometrijskih podataka. Podtipovi navedenog tipa su SDO_Point, SDO_LineString i SDO_Polygon koji služe za modeliranje različitih tipova geometrije. SDO_GEOMETRY Oracle tip podataka ima sljedeću strukturu: SQL> DESCRIBE SDO_GEOMETRY Name Null? Type -------------------------- -------- --------------- ----- SDO_GTYPE NUMBER SDO_SRID NUMBER SDO_POINT SDO_POINT_TYPE SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY SDO_ORDINATES SDO_ORDINATE_ARRAY

3.2.2.1. SDO_GTYPE

SDO_GTYPE atribut opisuje tip geometrije (tačka, linija, poligon, kolekcija) koja je predstavljena prostornim tipom podataka. Ovaj atribut određuje samo tip geometrije koja je predstavljena ali ne i same koordinate koje određuju geometriju. Sama geometrija može biti kombinacija više elemenata različitih geometrijskih oblika. SDO_GTYPE atribut ima vrijednost, zavisno od geometrije koju određuje, struktuiranu u obliku D00T. Prva i zadnja vrijednost (D,T) se razlikuju zavisno od tipa geometrije i dimenzija koju predstavljaju kao što je prikazano u tabeli 3.1. dok su druga i treća vrijednost uvijek nule (0).

Parametar Vrijednosti

D (dimenzija ili geometrija) 2 = Dvije dimenzije, 3 = Tri demnzije, 4 = Četri dimenzije

T (oblik/tip geometrije) 0 = Nije definisano, 1 = Tačka, 5 = Skup tačaka, 2 = Linija, 6 = Skup linija, 3 = Poligon/površina, 7 = Skup poligona/ više površina, 4 = Kolekcija, 8 = Geometrijsko tijelo, 9 = Skup geometrijskih tijela

Tabela 3.1. – Vrijednosti parametara D i T u D00T formatu SDO_GTYPE atributa

Page 47: 47165895-MladenANTUNOVIC

| 46

Parametar D u D00T prezentaciji SDO_GTYPE-a se koristi za označavanje dimenzionalnosti geometrijskog objekta. Ako je riječ o dvodimenzionalnim podacima onda geometrijski objekat je određen sa dvije koordinate, ako se radi o trodimenzionalnim objekat je određen sa tri dimenzije itd. Parametar T SDO_GTYPE-a označava tip ili oblik geometrije. Iz tabele se vidi kojim vrijednostima parametra je određen svaki tip geometrije koje je moguće predstaviti pomoću Spatial tipa podataka. Primjer unosa lokacije tipa tačke gdje parametar D00T ima vrijednost 2001:

INSERT INTO LOCATIONS VALUES (SEQ_LOC_ID.NEXTVAL,1, 'Elektrotehnicki Fakultet', SDO_GEOMETRY(2001 ,8307, -- D00T= 2001 SDO_POINT_TYPE ( 43.856625760841254,18.39832305908203 ,NULL), NULL, NULL) );

Otkako je uvedeno da u okviru Oracle Spatial tipa podataka postoji mogućnost smještanja četvero-dimenzionalnih podataka omogućeno je da, iako su radi o podacima dvo-dimenzionalnog karaktera, se smjeste dodatne informacije kao što je visina, vremenski podaci, dozvoljena brzina ili treća ili četvrta dimenzija.

3.2.2.2. SDO_SRID

SDO_SRID atribut opisuje vrsta referentnog geografskog sistema (koordinatni sistem) u kojem je određena geometrija predstavljena.

Na slici 3.5. su predstavljene lokacije dvije složene linije, A i B, određene u odnosu na koordinatni početak (0,0) pomoću vrijednosti koordinata x i y ortogonalno projiciranih na X,Y ose. Očigledna je sličnost objekata A i B međutim njihove lokacije u odnosu na referentnu tačku su različite. Ako bi došlo do pomjeranja koordinatnog sistema vrijednosti tačaka koje određuju poziciju tačaka linije A i B bi se promjenile ali bi pozicija jednog objekta u odnosu na drugi ostala ista. Ovakav tip referntnog koordinatnog sistema je poznat pod nazivom Kartezijanski produkt. Ovakav sistem je pogodan za predstavljanje podataka koji imaju samo dvije dimenzije međutim javlja se problem sa podacima koje određuju lokaciju objekata na zemaljskoj kugli. Ako se uzme u obzir da je zemaljska kugla elipsastog oblika i da su se lokacije predstavljaju pomoću linija geografske širine i geografske dužine. Izravnavajući sliku zemaljske kugle u dvodimenzionalni oblik dobija se mapa svijeta kako je prikazano na slici 3.6 međutim dolazi do gubitka tačnosti geografskih informacija. Kako predstaviti informacije o lokacijama na zemaljskoj kugli uz najmanje greške i gubitke u tačnosti ?

Page 48: 47165895-MladenANTUNOVIC

| 47

Ovo pitanje se postavlja velikom broju naučnika iz polja geografije, matematike i inovatorstva, napisan je veliki broj knjiga, međutim generalno postoje dvije tehnike za modeliranje geografskih podataka koji određuju lokaciju na zemaljskoj kugli.

Slika 3.5. – Koordinatni sistem

Slika 3.6. – Mapa svijeta

Page 49: 47165895-MladenANTUNOVIC

| 48

Tehnike za modeliranje za modeliranje geografskih podataka: a) Geodetski koordinatni sistem – Koristiti model zemaljske kugle koristeći

trodimenzionalne elipsoidne površine. b) Projicirani koordinatni sistem - Projicirati zemaljsku kuglu u dvodimenzionalnu površinu.

Koordinatni sistemi koji služe za predstavljanje lokacija na zemlji, koje su projicirane i geodetske koordiante, se nazivaju georeferencirani koordinatni sistemi. Svi ostali koordinatni sistemi, kao oni koji su korišteni u CAD/CAM aplikacijama, se nazivaju lokalni ili negeoreferencirani koordinatni sistemi. Biranje koordinatnog sistema se vrši postavljanjem određene vrijednosti SDO_SRID atributa zavisno od toga da li se radi o jednom od dva navedena koordinatna sistema. Za većinu poslovnih aplikacija koje koriste lokacije u Sjedinjenim Američkim Državama, koristi se široko rasprostranjen koordinatni sistem za Sjevernu Ameriku, kao što je WGS84 (SRID=8307). Oracle podržava oko 1000 različitih koordinatnih sistema koji pokrivaju gotovo sve zemlje svijeta a informacija o podržanim koordinatnim sistemima čuva se u sistemskom pogledu MDSYS.CS_SRS. Primjer unosa lokacije,gdje SRID atribut ima vrijednost 8307:

INSERT INTO LOCATIONS VALUES (SEQ_LOC_ID.NEXTVAL,1, 'ATLANTBH Sarajevo', SDO_GEOMETRY(2001,8307 , -- SRID = 8307 SDO_POINT_TYPE ( 43.8518909546263,18.383946418762207 ,NULL), NULL, NULL));

3.2.2.3. SDO_POINT

Ovaj atribut određuje lokaciju tačke, kao što je npr.lokacija jednog poslovnog objekta. SDO_POINT atribut je tipa SDO_POINT_TYPE, koji predstavlja još jedan tip objekta. Struktura SDO_POINT_TYPE tipa podataka:

SQL> DESCRIBE SDO_POINT_TYPE Name Null? Type --------------------- -------- -------------- X NUMBER Y NUMBER Z NUMBER

Primjer kreiranja tabele koja sadrži geometrijske podatke, te unosa podataka u tabelu sa prikazom tipa podataka. Tabela LOCATIONS čuva koordinate u koloni COORDINATE_SPTL koja je geometrijskog tipa

podataka.

Page 50: 47165895-MladenANTUNOVIC

| 49

CREATE TABLE LOCATIONS ( ID number(6) NOT NULL ENABLE, ADDRESS_ID number(6) NOT NULL ENABLE, LOCATION_NAME varchar2(64) NOT NULL ENABLE, COORDINATE_SPTL SDO_GEOMETRY NOT NULL ENABLE, CONSTRAINT PK_LOCATIONS PRIMARY KEY (ID), CONSTRAINT FK_LOCATIONS_ADDRESS_ID FOREIGN KEY (ADDRESS_ID) REFERENCES ADDRESSES(ID) ENABLE );

Unos podataka u tabelu LOCATIONS:

INSERT INTO LOCATIONS VALUES ( SEQ_LOC_ID.NEXTVAL, -- Redni broj lokacije 0, -- ID na adresu 'Autobuska stanica', -- Naziv lokacije SDO_GEOMETRY (2001, --SDO_GTYPE format:D00T za 2D ta čku ima vrijednost 2001 8307, -- SDO_SRID Geodetski koordinatni sistem SDO_POINT_TYPE ( 43.858838302829724, -- koordinata – geografska duži na 18.39757204055786, -- koordinata – geografska širi na NULL), -- bez tre će koordinate, 2D sistem NULL, --SDO_ELEM_INFO NULL) –SDO_ORDINATES );

Napomena: SDO_POINT može čuvati vrijednosti samo tri koordinate, u slučaju da se radi o četverodimenzionalnom koordinatnom sistemu potrebno je koristiti SDO_ELEM_INFO i SDO_ORDINATES atribute.

3.2.2.4. SDO_ELEM_INFO i SDO_ORDINATES atributi

U prethodno navedenom primjeru smještani su podaci tipa tačke koristeći SDO_POINT atribut. Međutim, ne radi se u svim slučajevima da se čuvaju samo podaci tipa tačke, ako se radi o složenijim geometrijama kao što su linije ili poligoni potreban nam je veći broj tačaka odnosno dimenzija. Da bi čuvali kompleksne geometrijske podatke u kolonama tipa SDO_GEOMETRY potrebno je korisiti SDO_ELEM_INFO i SDO_ORDINATES atribute.

SDO_ORDINATES atribut

Ovaj atribut se koristi za smještanje koordinata svih dimenzija i svih vrsta geometrija. SDO_ORDINATES atribut je tipa SDO_ORDINATE_ARRAY, koji je kolekcija brojeva tipa VARRAY (niz varijabilne dužine). VARRAY tip je koristan pri smještanju tačaka koje opisuju određenu

Page 51: 47165895-MladenANTUNOVIC

| 50

površinu u ispravnom redoslijedu tako da nije potrebno dodatno procesiranje kada se dobavljaju takvi podaci. Ako je u pitanju modeliranje prave linije koja spaja dvije tačke A(Xa,Ya) i B(Xb,Yb) tada će SDO_ORDINATES sadržavati brojeve Xa,Ya,Xb i Yb respektivno. Maksimalna veličina varijabilnog niza je 1048576 elemenata, što omogućava dovoljno prostora za smještanje koordinata velikih i kompleksnih gemetrijskih oblika. SQL> DESCRIBE SDO_ORDINATE_ARRAY

SDO_ORDINATE_ARRAY VARRAY(1048576) OF NUMBER

Ako atribut SDO_ATRIBUTES određuje koordinate (sve dimenzije) svih elemenata geometrijskog objekta, kako su onda predstavljene koordinate i odvojene da bi predstavili različite tipovi i oblici geometrijskih tijela ? Potrebna informacija da se opišu i odvoje koordinate u elemente je specificirana u SDO_ELEM_INFO atributu.

SDO_ELEM_INFO atribut

SDO_ELEM_INFO atribut je tipa SDO_ELEM_INFO_ARRAY, koji je također niz brojeva varijabilne dužine (VARRAY) maksimalne veličine 1048576 elemenata. Svaka tri broja u SDO_ELEM_INFO koloni su grupisani u uređenu trojku (descriptor triplet), opisujući element ili dio elementa, tako da ovaj element predstavlja niz uređenih trojki (triplet). Triplet se zapisuje u formi <offset, element-type, interpretation>, gdje su: offset – određuje početni indeks u SDO_ORDINATES nizu gdje su koordinate smještene, element-type, interpretation – poprimaju vrijednosti zavisno od toga da li je objekat koji se predstavlja tačka, linija ili poligon ili da li su linije koje ograničavaju površinu tipa pravih ili krivih linija ili i jedne i druge. U većini poslovnih aplikacija radi se o gemetrijama tipa:

Tačka predstavlja lokaciju kupca, saradnika i slično, Linija označava ulice i autoputeve, Poligon služi za predstavljanje granica jednog grada, države ili opštine.

Naziv

Element type

Interpretation

SDO_ELEM_INFO: (1, Etype,

Interpretation)

SDO_ORDINATES

Ilustracija

Tačka (lokacija kupca)

1

N, gdje N broj tačaka. 1 za

jednu tačku; >1 za skup tačaka

(1,1,1) (Xa,Ya)

Linija (ulica,

autoput) 2

1 = spojeni pravim linijama

2 = spojeni krivim linijama

(1,2,1)

(1,2,2)

(Xa,Ya,Xb,Yb,Xc,Yc)

(Xa,Ya,Xb,Yb,Xc,Yc)

Page 52: 47165895-MladenANTUNOVIC

| 51

Poligon (granice grada, države)

1003

1=Poligon ograničen

pravim linijama (1,1003,1)

(Xa,Ya,Xb,Yb,Xc,Yc, Xd,Yd,Xa,Ya)

3=Pravougaonik

(označen donjom lijevom

i gornjom desnom tačkom)

(1,1003,3) (Xa,Ya, Xc,Yc)

4= Krug određen sa tri

tačke (1,1003,4)

(Xa,Ya,Xb,Yb,Xc,Yc)

Tabela 3.2.2.2 – Vrijednosti SDO_ELEM_INFO i SDO_ORDINATES za jednostavne geometrije.

3.3. Geokodiranje

Geokodiranje ima dvije osnovne namjene, glavna namjena je povezivanje geografskih

koordinata sa adresama. Spatial funkcija GEOCODE_AS_GEOMETRY se koristi za vraćanje geografskih koordinata na osnovu zemaljske adrese. Primjer geokodiranja adrese:

SQL> SELECT SDO_GCDR.GEOCODE_AS_GEOMETRY ( 'SPATIAL', SDO_KEYWORDARRAY ( '3746 CONNECTICUT AVE NW', 'WASHINGTON, DC 20008' ), 'US' ) geom FROM DUAL;

GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_E LEM_INFO, SDO_ORDINATES) --------------------------------------------------- -------------------- SDO_GEOMETRY(2001,8307,SDO_POINT_TYPE(-77.060283,38 .9387083,NULL),NULL, NULL)

Page 53: 47165895-MladenANTUNOVIC

| 52

Pitanje je šta se dešava ako je adresa u upitu pogrešno napisana? Sada dolazimo do druge namjene geokodiranja a to je sposobnost geokodera da ispravi greške do određene mjere. Ovaj proces se često naziva normalizacija adrese, što uključuje formatiranje ulazne adrese. Proces normalizovanja adrese je važan jer ispravlja greške pri pisanju adrese osiguravajući da je unesena adresa potpuna, dobro struktuirana i tačna.

3.3.1.1. Arhitektura Oracle Geokoder-a

Kako je implementiran geokoder? Na slici 3.3.1.1 prikazan je proces geokodiranja, za početak geokoder zahtijeva referentne podatke – listu adresa sa poznatim koordinatama kao što su ulice, putevi,također i gradovi poštanski brojevi sa njihvom geografskom lokacijom i oblikom geometrije. Sa ovakvim referentnim podacima, geokoder vršo geokodiranje u tri koraka:

a) Parsira ulaznu adresu. b) Pretražuje bazu podataka tražeći adresu sa odgovorajućim ulaznim podacima. c) Izračunava lokaciju (spatial koordinate) za pronađenu adresu.

Slika 3.7. – Arhitektura Oracle geokoder-a

Page 54: 47165895-MladenANTUNOVIC

| 53

Parsiranje ulazne adrese

Geokoder u prvom koraku prepoznaje djelove adrese i odvaja djelove adrese u njemu prepoznatljive elemente kao što su ime ulice, tip ulice (ulica, avenija, bulevar), kućni broj, poštanski broj i grad. Proces geokodiranja može biti vrlo komplikovan – postoji više načina da se jedna te ista adresa zapiše naročito u različitim zemljama, kulturama i jezicima.

Pronalaženje adrese

Kada se proces parsiranja ulazne adrese završi, i kada je adresa parsirana u prepoznatljive elemente geokoder može početi sa pretraživanjem liste adresa po imenu ulice koje su najbliže jednake ulaznoj adresi. Ovakva pretraga je fuzzy, što znači da pronalazi adrese čak i ako postoji greška u pisanju (kao na primjer ako se napiše avnue umjesto avenue). Pretraga također može biti aproksimativne prirode – ako se ne pronađu adrese koje se podudaraju u potpunosti (exact match) onda geokoder vraća sve vrijednosti sa nivoa niže, na primjer poštanski broj ili naziv grada. Korisnik je u mogućnosti da specificira koeficijent prihvatljivosti koji će služit kao filter za vraćene podatke. Također je moguće da pretraga vraća više rezultata za jedan ulazni parametar pa u takvim slučajevima ili je odlučeno na nivou aplikacije koji će rezultat vratit ili se vrate svi pa je na korisniku da odluči koji je traženi rezultat. Veoma važna činjenica je da rezultat pretrage je adresa koja je ispravno formatirana sa svim elementima čak i onima koji su nedostajali u upitu koji je proslijeđen.

Izračunavanje Spatial koordinata

Kada je pronađena ulica potrebno je da geokoder konvertuje adresu u geografsku tačku. Referentni podaci koje koriste Oracle geokoder čuva kućne brojeve koji se nalaze na svakom ćošku ulice i na svakoj strani ulice. Kada ulazna adresa sadrži broj kuće, geokoder računa geografsku poziciju koristeći interpolaciju. Slika 3.8. prikazuje ovaj proces, prikazana je ulica Elm Street. Poznati su samo brojevi na svakom kraju ulice: brojevi 10 i 11 su na jednom kraju a brojevi 18 i 19 su na drugom kraju.

Slika 3.8. – Primjer interpolacije

Page 55: 47165895-MladenANTUNOVIC

| 54

Gdje se nalazi Elm Street 13? Oracle geokoder koristi pretpostavku da su brojevi kuća linearno raspoređeni na svakom djelu ulice tako da je lokacija tražene adrese prikazana na slici 3.8. U slučaju da je pretpostavka o kućnim brojevima ispravna rezultat interpolacije je prilično tačan, inače se može desit da je rezultat apsolutno pogrešan.

3.4. Primjena, prednosti i nedostaci Spatial podataka

Podacima geometrijskog tiopa moguće je upravljati na onaj način kako to zahtijeva

određena aplikacija koja je bazirana na podacima SDO_GEOMETRY tipa. U većini slučajeva moguće je čitati sadržaj SDO_GEOMETRY podataka iz SQL-a. Na primjer, moguće je pročitati geografske koordinate iz SDO_GEOMETRY tipa. Primjer: Ekstraktovanje koordinata SELECT distinct l.location_name "NAME", l.coordinat e_sptl.sdo_point.x "LONG",l.coordinate_sptl.sdo_point.y LAT FROM locations l WHERE l.address_id = 13;

NAME LONG LAT --------------------------- --------------------------- ---------------------- Šumarski Fakultet 43.85112499476676 18.40062975883484 Na primjeru iznad prikazano je kako na jednostavan način ekstraktovat informacije iz SDO_GEOMETRY tipa koristeći tačkastu notaciju. Na ovaj način je moguće ekstraktovat bilo koju skalarnu vrijednost iz geometrijskog objekta, drugim rječima, tip geometrije (SDO_GTYPE); ID referentnog sistema (SDO_SRID); i X, Y i Z atribute iz strukture tačke (SDO_POINT.X, .Y, i .Z). Tipični slučajevi kada je potrebno manipulirati SDO_GEOMETRY tipom podataka su :

- Složena analiza lokacija – Ako je potrebno kreirati geometriju za nove lokacije, za odgovarajuće prodajne regione, ili za praćenje puta isporuke proizvoda u poslovnim aplikacijama. Da bi se kreirala nova geometrija potrebno je znati kako promjeniti postojeće geometrijske podatke.

- Konverzija podataka – U slučaju da je potrebno unijeti podatke koji se nalaze u nestandardnom formatu za koji ne postoji alat za konverziju. Većina komercijalnih alata vrše konverziju za unaprijed definisane formate podataka karakteristične za taj alat. U navedenim slučajevima potrebno je kreirati interfejs između tog formata podataka i Oracle Spatial objekata.

- Vizuelizacijska analiza – u slučaju da dođe do potrebe da se razvija alat za predstavljanje geometrijskih podataka potrebno je također razviti i softver koji pristupa geometrijskim objektima SDO_GEOMETRY tipa. Oracle posjeduje alat za prikaz podataka koji se naziva Oracle MapViewer.

Da bi se manipuliralo sa Spatial tipom podataka potrebno je, osim SQL upita, poznavati strukturu SDO_GEOMETRY tipa jer SDO_GEOMETRY predstavlja objekt sa svojim atributima.

Page 56: 47165895-MladenANTUNOVIC

| 55

Jedan od programskih jezika koji podržava manipuliranje SDO_GEOMETRY tipom podataka je JAVA (JGeometry klasa) programski jezik koji omogućava:

- Mapiranje objekata u odgovarajući tip podataka za određeni programski jezik. - Čitanje/Pisanje SDO_GEOMETRY objekata kroz aplikacioni program. - Ekstraktovanje informacija iz SDO_GEOMETRY objekata u aplikaciju. - Kreiranje novih SDO_GEOMETRY objekata kroz aplikaciju. - Modifikovanje postojećih SDO_GEOMETRY objekata (PL/SQL).

Manipulisanje podacima koristeći PL/SQL

Čitanje i pisanje SDO_GEOMETRY podataka u PL/SQL-u je jednostavno, definišu se varijable SDO_GEOMETRY tipa i vrši se čitanje ili pisanje u te varijable za vrijeme izvršavanja SQL upita. Kreiranje novih geometrija koristeći procedure ili funkcije pojednostavljuje rad sa geometrijskim podacima. Moguće je koristit konstruktore za promjenu postojećih ili kreiranje novih geometrija. Kostruktor Tačke funkcija Potrebno je deklarisati funkciju SDO_GEOMETRY tipa, koristeći standardni konstruktor za generisanje ispravne strukture tačke koristeći argumente za unos (X,Y i ID koordinatnog sistema). U nastavku primjer takve funkcije za kreiranje objekta tipa tačke.

CREATE OR REPLACE FUNCTION point ( x NUMBER, y NUMBER, srid NUMBER DEFAULT 8307) RETURN SDO_GEOMETRY DETERMINISTIC IS BEGIN RETURN SDO_GEOMETRY ( 2001, srid, SDO_POINT_TYPE (x,y,NULL), NULL, NULL); END;

Konstruktor Pravougaonik funkcija Funkcija za konstrukciju pravougaonika se koristi za kreiranje geometrije za prikaz određenog regiona oko lokacije. Funkcija prima kao parametre koordinate centra pravougaonika, razmak između centra i svake stranice pravougaonika i opcionalno ID korištenog koordinatnog sistema. Primjer implementacije rectangle funkcije:

CREATE OR REPLACE FUNCTION rectangle ( ctr_x NUMBER, ctr_y NUMBER, exp_x NUMBER, exp_y NUM BER, srid NUMBER) RETURN SDO_GEOMETRY DETERMINISTIC

Page 57: 47165895-MladenANTUNOVIC

| 56

IS r SDO_GEOMETRY; BEGIN r := SDO_GEOMETRY ( 2003, srid, NULL, SDO_ELEM_INFO_ARRAY (1, 1003, 3), SDO_ORDINATE_ARRAY ( ctr_x - exp_x, ctr_y - exp_y, ctr_x + exp_x, ctr_y + exp_y)); RETURN r; END;

Konstruktor Linija funkcija Funkcija line implemetira kreiranje nove geometrije tipa linije sa početnom i krajnjom tačkom. Primjer implementirane fukncije:

CREATE OR REPLACE FUNCTION line ( first_x NUMBER, first_y NUMBER, next_x NUMBER, next _y NUMBER, srid NUMBER) RETURN SDO_GEOMETRY DETERMINISTIC IS l SDO_GEOMETRY; BEGIN l := SDO_GEOMETRY ( 2002, srid, NULL, SDO_ELEM_INFO_ARRAY (1, 2, 1), SDO_ORDINATE_ARRAY ( first_x, first_y, next_x, next_y)); RETURN l; END;

3.4.1. Primjena Spatial podataka u praksi

Osnovna primjena geometrijskog tipa podataka, vizuelizacije podataka i analize u različitim granama poslovanja je:

a) Finansije i bankarstvo: Geometrijski podaci se koriste za čuvanje informacija i analize mreže poslovnica i istraživanje poslovne inteligencije. Baza podataka korisnika u kombinaciji sa demografskim podacima pomaže bankama definisanje optimalne mreže poslovnica s ciljem što bolje produktivnosti i efikasnosti.

b) Telekomunikacije: Analiza lokacija pomaže telekom operaterima da optimiziraju postavljanje odašiljača signala s ciljem povećanja kvaliteta usluga. Geografski podaci se koriste za mrežno planiranje, odabir lokacije poslovnica, organizaciju sistema održavanja, podrške korisnicima, marketing-a i inžinjering-a.

c) Lokalne i državne vladine organizacije: Gotovo sve vladine organizacije koriste prostorne informacije otkako upravljaju organizacijama koje su široko distribuirane u prostoru.

Page 58: 47165895-MladenANTUNOVIC

| 57

Upravljanje prirodnim resursima ili planiranje urbanističkog zemljišta, gradnja puteva i slične aktivnosti također zahtjevaju upotrebu prostornih informacija.

d) Zakonska uprava: Prostorne informacije se koriste u svakodnevnim operacijama kao što su analiza i prevencija kriminala, lociranje mjesta i drugih resursa u prostoru u realnom vremenu.

e) Upravljanje privrednim resursima: Geografski i demografski podaci se koriste za lakše evidentiranje lokacija za gradnju naselja, privrednih resursa, iskorištavanje prostora i transport materijalnih dobara.

f) Komunalne mreže: veliki broj različitih komunalnih usluga se nalaze ispod gotovo svake ulice. Čuvanjem spatial informacija o lokacijama komunalnih sistema olakšava odražavanje, nadzor, planiranje i unapređivanje navedenih sistema.

g) Bežični servisi: S tendencijom rasta bežični servisi napreduju sa korištenjem geografskih informacija kako bi poboljšali svoje usluge u korist korisnika. Upotreba uključuje korištenje ličnih navigacionih sistema, GPS sistema, sistema za nadzor i praćenje objekata i ljudi. Bežični servisi su neophodni za brz povrat investicija telekomunikacijskih sistema baziranih na telekom mrežama treće generacije.

3.4.2. Prednosti i nedostaci Oracle Spatial tipa podataka

Prostorni raspored objekata, ljudi predstavljen putem interneta, geografskih karata ili na bilo koji način u velikoj mjeri olakšava moderni način života današnjeg čovjeka. Povezanost između objekata i njihovog geometrijskog oblika i položaja omogućava jednostavniji način življenja, putovanja i poslovanja. Geografski podaci koji povezuju fizički postojane objekte sa lokacijama na zemaljskoj kugli, njihove koordinate potiču od različitih izvora koji sa određenom preciznošću i tačnošću povezuju korespodentne objekte. Funkcionalnost koju omogućava upotreba geografskih podataka i njihovo predstavljanje na način kako je navedeno (Oracle Spatial) je dovelo do vrhunca računarske nauke koje se bave geografskim informacionim sistemima (GIS). Oracle je predstavio set alata baziranih na Oracle Spatial tehnologijama s ciljem podrške za procesiranje geografskih podataka u okviru Oracle baze podataka.

Prednosti upotrebe Oracle Spatial podataka:

- Eliminira potrebu za dvojnom arhitekturom, jedan dio za podatke drugi za geografske podatke. Sve podatke, kao što su mape, tekst i multimedija, je moguće smještati u zajedničku bazu podataka.

- Upotrebom SQL-a, standardiziranog jezika za pristup podacima koji se čuvaju u relacionim bazama podataka otklanjajući potrebu za posebnim programskim jezikom ili alatom za pristup i manipuliranje podacima.

- Definisanje SDO_GEOMETRY tipa podataka, koji je ekvivalent prostornim tipovima podataka drugih alata podržavajući standarde kod prikaza podataka takvog tipa.

Page 59: 47165895-MladenANTUNOVIC

| 58

- Geometrijskim podacima je moguće pristupati iz aplikacija razvijenih u programskim jezicima kao što je Java pomoću funkcija koje omogućavaju unos, promjene i brisanje podataka bez potrebe za dodatnim alatima.

- Oracle Spatial predstavlja standard za smještanje i pristup podacima iz Oracle baze podataka, u potpunosti podržana od strane svjetski vodećih kompanija čija je osnovna djelatnost prikupljanje prostornih podataka, razvijanje alata i aplikacija baziranih na geometrijskim podacima. Neke od vodećih komapnija su: NAVTEQ, Tele Atlas, Digital Globe, 1Spatial, Autodesk, Bentley, eSpatial, ESRI, GE Energy/Smallworld, Intergraph, Leica Geosystems, Manifold, PCI Geomatics, Pitney/Bowes/MapInfo, Safe Software, Skyline i mnogih drugi.

- Skalabilnost, integritet, sigurnost podataka i napredni sistemi upravljanja prostornim podacima koji su normirani Oracle bazom podataka ili drugih alata koje koriste podatke navedenog tipa

- Oracle Spatial otklanja potrebu za odvojenim kompanijama za upravljanje infrastrukturom podataka geometrijskog tipa (hardver, softver, podrška), i potrebu za dodatnim alatima za rad sa Spatial podacima.

- Kroz aplikacioni server omogućeno je da bilo koja aplikacija koristi prostorne podatke smještene u bazi podataka smanjujući troškove i kompleksnost dodatnih alata i resursa za upravljanje prostornim podacima.

- Koristi se prednost mrežnog računarstva za baze podataka koje čuvaju i Spatial podatke. Za velike organizacije koje upravljaju sa velikim količinama podataka fleksibilnost i mogućnost proširenja računarskih resursa, u velikoj mjeri, doprinosi smanjenju troškova i jednostavnije održavanje struktura baza podataka.

- Uz sve potrebne alate nalaze se i moćni vizuelizacijski alati koji eleminišu potrebu za dodatnim alatima što doprinosi smanjenju troškova kompanija koje bave navedenom problematikom.

Page 60: 47165895-MladenANTUNOVIC

| 59

4. Web servis

4.1. Definicija web servisa

Web servis je definisan od strane World Wide Web konzorcijuma (W3C) kao „sistem dizajniran da podrži interakciju raznorodnih sistema preko mreže“.

Web servisu je moguće pristupiti preko računarske mreže kao što je Internet što omogućava

da se servis nalazi na udaljenim računarskim sistemima. Prema W3C fondaciji web servis obuhvata više raznorodnih sistema, ali zajedničko za sve definicije je da termin web servis se odnosi na klijent-server arhitekturu gdje klijent i server komuniciraju preko HTTP protokola koji je široko rasprostranjen kao Internet protokol.

Web servisi predstavljaju sloj apstrakcije između postojećih softverskih sistema, kao što su aplikacioni serveri i .NET serveri. Web servisi rade na nivou apstrakcije slično Internetu i imaju mogućnost povezivanja raznorodnih operativnih sistema, hardverskih platformi ili programskih jezika što omogućava i Internet. Za razliku od postojećih distribuiranih sistema web servisi su prilagođeni Internetu što i samo ime govori. Aplikacije zasnovane na novim standardima se mogu razvijati bilo gdje, u bilo koje vrijeme i na bilo kojim sistemima koristeći prednosti unaprijed izgrađenih komponenti, ubrzavajući rad aplikacija i smanjujući cijenu razvoja novih sistema. Web servis predstavlja bilo koji servis koji je dostupan preko Internet mreže, koristi standardizovani XML sistem za razmjenu poruka i nije vezan ni za jedan operativni sistem ili programski jezik.

Slika 4.1. - Web servis

Osim navedenog načina razmjena poruka postoje i drugi načini koji predstavljaju alternativu za XML a to su SOAP i HTTP GET/POST uz dodatne XML dokumente o čemu će više biti riječi u nastavku. Web servisi je određen sa:

- Dostupan je preko Internet-a ili intranet-a (privatne lokalne mreže). - Koristi standardizovani XML sistem razmjene poruka. - Nije usko povezan ni sa jednim operativnim sistemom, nezavisan od operativnog

sistema. - Samoopisiv je pomoću gramatike XML –a. - Moguće ga je pronaći pomoću jednostavnog mehanima za traženje web servisa.

Page 61: 47165895-MladenANTUNOVIC

| 60

4.2. Arhitektura web servisa

Arhitektura web servisa definisana je na dva načina. Prvi način je provjera individualnih prava učesnika komunikacije kroz web servis; drugi način je analiza skupa protokola web servisa.

4.2.1. Web servis uloge

Uloge koje su definisane u ovakvoj arhitekturi web servisa su:

Service provider – kreator web servisa je osoba ili organizacija koja je implemetirala web servis i učinila ga dostupnim preko Internet mreže. Service requestor – korisnik web servisa, osoba ili organizacija koja koristi web servis otvarajući konekciju prema servisu i šaljući zahtjeve za uslugom koju pruža servis kroz XML zahtjev. Servis registry – logički definisan centralni direktorij web servisa. Registry predstavlja centralno mjesto gdje onaj ko razvija web servis publikuje svoje servise ili pronalazi one koji već postoje.

Slika 4.2 – Web servis arhitektura - Uloge

4.2.2. Web servis skup protokola

Skup protokola koji čine web servis arhitekturu definisanu na ovaj način čine četri osnovna sloja međutim ovaj skup je još uvijek u fazi evolucije i unaprijeđivanja. Slojevi koji definišu web servis skup protokola su:

Service trasport (transportni sloj) – odgovornost ovog sloja je prenos poruka između aplikacia (zahtjev-odgovor sistem razmjene poruka). Danas, ovaj sloj uključuje internet protokole: Hyper Text Transfer Protocol (HTTP) i Simple Mail Transfer Protocol (SMTP).

XML messaging (razmjena poruka) – na ovom sloju protokola se vrši kodiranje/dekodiranje XML poruka u format koji je razumljiv na obje strane – pošiljaoc i primatelj. Protokol korišten na ovom sloju je SOAP.

Service description (opis servisa) – opis javnog interfejsa određenog web servisa. Danas se koristi Web Service Description Language za opis web servisa.

Page 62: 47165895-MladenANTUNOVIC

| 61

Service discovery – servis odgovoran za centralizovanje web servisa u registar i omogući jednostavna način za publikovanje i pronalaženje servisa. Pronalaženje servisa se vrši UDDI (Universal Description, Discovery, and Integration) servisa.

Slika 4.3 – Web servis skup protokola arhitektura

4.3. Osnovni principi i tehnologije Web servisa

Aplikacije koje komuniciraju među sobom preko Internet-a moraju biti u mogućnosti da pronađu jedna drugu, da znaju određene informacije koje će omogućiti međusobnu interakciju, da spoznaju način međusobne komunikacije pomoću zahtjev/odgovor sistema uz potrebne sisteme koji objezbjeđuju sigurnost i ispravnost poruka. Neki od navedenih zahtjeva su implementirani u postojećim tehnologijama. Pomoću web servis orjentisane tehnologije nastoji se da budu zadovoljeni svi navedeni kriteriji, omogućavajući unaprijeđenja uporedo sa dolaskom novih i poboljšanjima postojećih tehnologija.

4.3.1. XML i XML-RPC

U posljednje vrijeme u računarskim naukama upotreba XML-a je u sve većem porastu.

Zaslugu za porast upotrebe XML-a kroz sve veći broj aplikacija jest mogućnost lakše razmjene podataka između raznorodnih sistema i aplikacija nezavisno od programskog jezika ili operativnog sistema na kojem je razvijena aplikacija. Postoji veliki broj XML alata, uključujući parsere, editore dostupnih za sve operativne sisteme i programske jezike među kojima možemo izdvojiti Javu, Perl, C#,C i C++. Upotreba XML-a za razmjenu poruka omogućena je pomoću XML-RPC i SOAP protokola.

XML-RPC (XML-Remote Procedure Call) predstavlja XML i HTTP bazirani mehanizam za implementiranje metoda ili funkcije za razmjenu poruka između klijentske i serverske strane uz opis zahtjeva sa jednostavnom XML sintaksom. Klijent specificira naziv procedure i parametre u XML zahtjevu, server vraća tražene informacije ili grešku u slučaju da je zahtjev neispravno formatiran. XML-PRC parametri su jednostavna lista vrijednosti i tipova među kojima su slogovi i nizovi najsloženiji tipovi.

Page 63: 47165895-MladenANTUNOVIC

| 62

XML-RPC se sastoji od tri jednostavna djela: XML-RPC data model – Skup tipova koje je moguće koristiti kao parametre, rezultate i poruke o greškama. XML-RPC request structures – HTTP POST zahtjev sadrži metode i informacije o parametrima. XML-RPC response structures – HTTP odgovor, vrijednosti koje predstavljaju rezultat ili poruka o grešci.

4.3.1.1. XML-RPC data model

Po XML-RPC sprecifikaciji definisano je šest osnovnih i dva složena tipa podataka koji predstavljaju kombinaciju prostih tipova podataka. Za razliku od većine programskih jezika ovako definisan skup tipova podataka koje je moguće koristiti je veoma skučen međutim dovoljan za predstavljanje velikog broja informacija. Svi osnovni tipovi podataka su predstavljeni pomoću jednostavnih XML elemenata čiji sadržaj predstavlja vrijednost. Na primjer, za definisanje tekstualnog tipa podataka čija bi vrijednost bila „Dobar dan“ se definiše sa: <string>Dobar dan</string>. Sve vrijednosti bilo kojeg tipa podataka su zatvorene sa elementom <value> pa bi na primjer niz vrijednosti bio prikazan na sljedeći način:

<value> <array>

<data> <value><string>Ovo </string></value> <value><string>je </string></value> <value><string>primjer </string></value> <value><string>niza</string></value>

</data> </array>

</value>

Slogovi sadrže vrijednosti koje su određene imenom, kao i kod nizova nije određeno da slog struktura mora sadržavati podatke samo jednog tipa nego je moguće isprepletati više tipova kao što prikazuje sljedeći primjer: <value>

<struct> <member>

<name>Ime</name> <value><string>Mladen</string></value>

</member> <member>

<name>Prezime</name> <value><string>Antunovi ć</string></value>

</member> <member>

<name>Godina</name>

Page 64: 47165895-MladenANTUNOVIC

| 63

<value><int>25</int></value> </member>

</struct> </value> Imena polja su tekstualnog tipa (string) ali nemoraju bit označeni sa elementom <string> ,

svaki element tipa sloga (struct) sadrži listu elemenata članova (member). Member(član) element sadrži name(ime) elementa i value (vrijednost) elementa .

4.3.1.2. XML-RPC Request structure (struktura zahtjeva)

XML-RPC zahtjevi predstavljaju kombinaciju XML sadržaja i HTTP zaglavlja. XML sadržaj se

koristi kao struktura podataka za prosljeđivanje parametara uz dodatne informacije koji određuju koja procedura se poziva, dok HTTP zaglavlja predstavljaju omotnicu koja omogućava prosljeđivanje zahtjeva na Internet mrežu.

Svaki zahtjev sadrži XML dokument, čiji je glavni element methodCall element, a svaki methodCall element sadrži methodName element i param element. Na primjer, da bi se proslijedio zahtjev za poziv metode povrsinaKruga, koji prima decimalnu vrijednost (Double) kao parametar XML-RPC zahtjev bi imao sljedeći izgled: <?xml version="1.0"?>

<methodCall> <methodName>povrsinaKruga</methodName> <params>

<param> <value><double>2.41</double></value>

</param> </params>

</methodCall>

HTTP zaglavlje za navedeni zahtjev poslat od klijenta ka XML-RPC serveru koji osluškuje na /xmlrpc bi imao sljedeći izgled:

POST /xmlrpc HTTP 1.0 User-Agent: myXMLRPCClient/1.0 Host: 192.168.100.113 Content-Type: text/xml Content-Length: 168

4.3.1.3. XML-RPC Response structure (struktura odgovora)

Odgovori su dosta slični zahtjevima uz minimalne promjene. Ako je zahtjev uspješno

uslužen – procedura pronađena, ispravno izvršena, i vraćeni su rezultati tada XML-RPC odgovor ima strukturu sličnu zahtjevu, izuzev methodCall element-a koji je zamijenjen sa methodResponse elementom i izostavljen je methodName element:

Page 65: 47165895-MladenANTUNOVIC

| 64

<?xml version="1.0"?> <methodResponse>

<params> <param>

<value><double>18.24668429131</double></value> </param>

</params> </methodResponse>

XML-RPC vraća uvijek jednu i samo jednu vrijednost čak i u slučaju ako procedura ne vraća

ni jedan rezultat u odgovoru se upiše da je uspješno izvršena procedura. Ako dođe do grešaka pri izvršavanju XML-RPC zahtjeva tada element methodResponse sadrži fault element umjesto param elementa sa samo jednom vrijednošću. Primjer odgovora sa greškom pri usluživanju zahtjeva: <?xml version="1.0"?>

<methodResponse> <fault>

<value><string>No such method!</string></value> </fault>

</methodResponse>

Kako su zahtjevi tako su i odgovori omotani sa HTTP zaglavljem. Svi XML-RPC odgovori koriste 200 ok kôd za odgovor čak i ako je zahtjev neuslužen odnosno odgovor je greška. XML-RPC zahtjeva HTTP 1.0 podršku, također je HTTP 1.1 kompatibilna. HTTP zaglavlje u odgovoru za poziv procedure povrsinaKruga je dat u nastavku:

HTTP/1.1 200 OK Date: Sat, 06 Oct 2001 23:20:04 GMT Server: Apache.1.3.12 (Unix) Connection: close Content-Type: text/xml Content-Length: 124

Kada se uspješno završi komunikacija klijent-server konekcija se zatvara i sljedeći zahtjevi se šalju kao odvojene XML-RPC konekcije.

4.3.2. WSDL

WSDL predstavlja specifikaciju načina opisivanja web servisa pomoću XML gramatike. WSDL opisuje četri kritična djela podataka:

- Javno dostupne funkcije. - Tip podataka za sve poruke zahtjeva i odgovora. - Vrijednosti vezane za protokol korišten za razmjenu podataka. - Informacije o adresi traženih servisa.

Page 66: 47165895-MladenANTUNOVIC

| 65

Uopšteno gledajući, WSDL predstavlja vezu između onog ko zahtijeva uslugu servisa i

davaoca servisa, na sličan način kako Java interfejs predstavlja vezu između klijentskog kôda i aktuelnog Java objekta. Osnovna razlika je da WSDL nije zavisan od operativnog sistema i programskog jezika i primarno se koristi za opisivanje SOAP servisa. WSDL specifikacija se može predstaviti sa šest osnovnih elemenata:

definitions – ovaj element mora biti glavn (root) element svih WSDL elemenata. Definiše naziv web servisa, deklariše imenske prostore (namespaces) korištene kroz dokument i sadrži opisane sve elemente servisa. types – opisuje sve tipove podataka korištene između klijenta i servera. WSDL se ne vezuje ni za jedan sistem pisanja, ali preporučuje upotrebu W3C XML specifikacije šeme. message – element opisuje jednosmjernu poruku, ili je to jedan zahtjev ili jedan odgovor. Definiše naziv poruke i sadrži nijedan ili više part elemenata, koji se može odnositi na parametre poruke ili na vrijednosti koje su vraćene kroz poruku. portType – predstavlja kombinaciju više message elemenata i na taj način čini potpunu jednosmjernu operaciju. Na primjer portType se može sastojati od jednog zahtjeva i jednog odgovora spojeni u jednu zahtjev/odgovor operaciju veoma često korištenu u SOAP servisima. binding – opisuje kako će servis biti fizički implentiran kroz mrežu. service – element definiše adresu odakle se poziva određeni web servis, većinom je predstavljen kao URL za poziv SOAP servisa.

Slika 4.4. – WSDL specifikacija

documentation – opcionalni element, može biti uključen za predstavljanje dokumentacije WSDL dokumenta. import – koristi se za uključivanje drugih WSDL dokumenata ili XML šema. Na ovaj način je omogućen modularni sistem WSDL dokumenata. Na primjer dva WSDL dokumenta mogu koristiti iste osnovne elemente i uz njih uključiti za sebe specifične servis elemente.

<definitions>: Root WSDL element

<types>: Koji tipovi podataka se prenose?

<message>: Koja poruka se prenosi?

<portType>:Podržane operacije (funkcije)?

<binding>: Način prenosa poruka preko mreže?

<service>: Lokacija servisa?

Page 67: 47165895-MladenANTUNOVIC

| 66

Primjer WSDL dokumenta (web servis za unos podataka u Oracle bazu podataka, korišteno pri izradi aplikacije u praktičnom dijelu): InsertByMladen.wsdl <definitions name="INSERTBYMLADEN" targetNamespace="http://xmlns.oracle.com/orawsv/SCO TT/INSERTBYMLADEN">

<types> <xsd:schema

targetNamespace="http://xmlns.oracle.com/orawsv/SCO TT/INSERTBYMLADEN" elementFormDefault="qualified">

<xsd:element name="INSERTBYMLADENInput"> <xsd:complexType> <xsd:sequence>

<xsd:element name="P_URL-VARCHAR2-IN" type="xsd:str ing"/> <xsd:element name="P_STREET_NUMBER-NUMBER-IN" type= "xsd:double"/> <xsd:element name="P_STREET_NAME-VARCHAR2-IN" type= "xsd:string"/> <xsd:element name="P_LON-NUMBER-IN" type="xsd:doubl e"/> <xsd:element name="P_LOCATION_NAME-VARCHAR2-IN" typ e="xsd:string"/> <xsd:element name="P_LAT-NUMBER-IN" type="xsd:doubl e"/> <xsd:element name="P_COUNTRY_CODE-VARCHAR2-IN" type ="xsd:string"/> <xsd:element name="P_CITY-VARCHAR2-IN" type="xsd:st ring"/>

</xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="INSERTBYMLADENOutput"> <xsd:complexType>

<xsd:sequence> </xsd:sequence>

</xsd:complexType> </xsd:element>

</xsd:schema> </types> <message name="INSERTBYMLADENInputMessage">

<part name="parameters" element="tns:INSERTBYMLADEN Input"/> </message> <message name="INSERTBYMLADENOutputMessage">

<part name="parameters" element="tns:INSERTBYMLADEN Output"/> </message> <portType name="INSERTBYMLADENPortType">

<operation name="INSERTBYMLADEN"> <input message="tns:INSERTBYMLADENInputMessage"/> <output message="tns:INSERTBYMLADENOutputMessage"/>

</operation> </portType>

<binding name="INSERTBYMLADENBinding" type="tns:INS ERTBYMLADENPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="INSERTBYMLADEN"> <soap:operation soapAction="INSERTBYMLADEN"/>

<input> <soap:body parts="parameters" use="literal"/> </input> <output>

Page 68: 47165895-MladenANTUNOVIC

| 67

<soap:body parts="parameters" use="literal"/> </output>

</operation> </binding> <service name="INSERTBYMLADENService">

<documentation>Oracle Web Service</documentation> <port name="INSERTBYMLADENPort" binding="tns:INSERT BYMLADENBinding">

<soap:address location="http://ora3.atlantbh.lok:8080/orawsv/SCOT T/INSERTBYMLADEN"/>

</port> </service> </definitions>

Opis WSDL elemenata korištenih u dokumentu InsertByMladen.wsdl: <definitions> element opsiuje naziv dokumenta o kojem se radi, tj InsertByMladen.wsdl.

Također opisuje namespace-ove koirštene kroz dokument što je veoma bitno zbog razdvajanja različitih elemenata i referenciranje na eksterne specifikacije, uključujući WSDL specifikaciju, SOAP specifikaciju i XML specifikaciju. Definisan je i element targetNamespace (http://xmlns.oracle.com/orawsv/SCOTT/INSERTBYMLADEN) koji ne zahijeva da datoteka uistinu postoji na navedenoj lokaciji, ali je bitno da je jedinstven namespace u odnosu na ostale koji su definisani. Svi elementi bez namespace prefiksa kao što su message i portType su dio osnovnog namespace-a.

<message> - Definisana su dva elementa, prvi predstavlja poruku zahtjeva INSERTBYMLADENInputMessage, i drugi poruku odgovora INSERTBYMLADENOutput: <message name="INSERTBYMLADENInputMessage"> <part name="parameters" element="tns:INSERTBYMLADEN Input"/> </message> <message name="INSERTBYMLADENOutputMessage"> <part name="parameters" element="tns:INSERTBYMLADEN Output"/> </message> Svaki dio sadrži part element, u navedenom primjeru za zahtjev to predstavlja ulazni parametar a za odgovor je definisana povratna vrijednost.

<portType> element definiše jednu operaciju (INSERTBYMLADENPortType), sastoji se od ulazne (INSERTBYMLADENInputMessage ) i izlazne poruke (INSERTBYMLADENOutputMessage): <portType name="INSERTBYMLADENPortType">

<operation name="INSERTBYMLADEN"> <input message="tns:INSERTBYMLADENInputMessage"/> <output message="tns:INSERTBYMLADENOutputMessage"/>

</operation> </portType>

Tns prefiks odnosi se na targetNamespace definirano u definitions elementu. WSDL podržava četri tipa operacija: jednosmjerna (primanje poruke), zahtjev-odgovor (primanje i slanje poruka), jednosmjerna (slanje poruke, na osnovu poslane poruke prima se zahtjev) i notifikacija (slanje poruke).

Page 69: 47165895-MladenANTUNOVIC

| 68

<soap:binding> - WSDL 1.1 specifikacija uključuje podršku za SOAP protokol verzije 1.1., koji omogućava specificiranje SOAP detalja uključujući zaglavlja, stil kodiranja i SOAPAction

HTTP zaglavlje. Na ovaj način je omogućeno vršiti razmjenu poruka u SOAP formatu. Style atribut označava način razmjene poruka, vrijednost ovog elementa kad je document tada se radi o XML načinu poziva servisa što znači da će se zahtjevi i odgovori prosljeđivat kao XML poruke. Atribut transport indicira protokol korišten za razmjenu poruka. U navedenom primjeru radi se o SOAP HTTP protokolu.

<binding name="INSERTBYMLADENBinding" type="tns:INS ERTBYMLADENPortType">

<soap:bindingstyle="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="INSERTBYMLADEN"> <soap:operation soapAction="INSERTBYMLADEN"/>

<input> <soap:body parts="parameters" use="literal"/>

</input> <output>

<soap:body parts="parameters" use="literal"/> </output>

</operation> </binding>

<soap:operation> element povezuje određenu operaciju sa SOAP implementacijom. <soap:body> element omogućava specificiranje detalja ulaznih i izlaznih poruka. <service> element označava lokaciju servisa, pošto se radi o SOAP servisu koristi se soap:address element sa adresom web servisa na serveru baze podataka (http://ora3.atlantbh.lok:8080/orawsv/SCOTT/INSERTBYMLADEN). <service name="INSERTBYMLADENService">

<documentation>Oracle Web Service</documentation> <port name="INSERTBYMLADENPort" binding="tns:INSERT BYMLADENBinding">

<soap:address location="http://ora3.atlantbh.lok:8080/orawsv/SCOT T/INSERTBYMLADEN"/>

</port> </service>

Page 70: 47165895-MladenANTUNOVIC

| 69

4.3.3. SOAP (Simple Object Access Protocol)

SOAP je XML bazirani protokol za razmjenu informacija između računara, koristi se u različitim sistemima za razmjenu poruka, prenos je moguće vršiti preko različitih transportnih protokola a najčešće korišteni je HTTP. Pomoću SOAP-a je omogućeno da klijentska aplikacija komunicira sa udaljenim servisima, jedan takav često korišten je na internet stranicama za prevođenje rječi. SOAP predstavlja temelj arhitekture web servisa omogućavajući, na jednostavan način, razmjenu informacija i podataka preko mreže.

4.3.3.1. SOAP 101

SOAP specifikacija definiše tri osnovna djela: SOAP envelope specification – SOAP XML envelope (omotnica) definiše pravila za enkapsulaciju podataka koji se prenose između računara što uključuje specifične podake za određenu aplikaciju kao što su naziv metode koja se poziva, parametri zahtjeva ili povratne vrijednosti. Također uključuje informacije o dekodiranju grešaka pri pozivu servisa. Data encoding rules (pravila za dekodiranje podataka) – Da bi došlo do razmjene podataka između računara moraju se odrediti određena pravila za dekodiranje određenih tipova podataka. SOAP uključuje osnovni skup pravila za dekodiranje tipova podataka. Većina konvencija je W3C XML bazirana specifikacija. RPC conventions – SOAP protokol se može koristiti na više načina, uključujući jednosmernu i dvosmjernu komunikaciju. Za dvosmjernu komunikaciju definišu se pravila za predstavljanje poziva udaljenih procedura i odgovora. Na ovaj način je omogućeno da klijentska aplikacija odredi naziv udaljene metode uključujući broj parametara i da primi odgovor od serverske aplikacije.

4.3.3.2. SOAP Zahtjev

Zahtjev poslan od strane klijenta mora uključiti naziv metode koja se poziva i parametre

koje zahtijeva određena metoda. Primjer SOAP zahtjetva (implementira u okviru praktičnog djela rada): <soapenv:Envelope xmlns:soapenv="http://schemas.xml soap.org/soap/envelope/" xmlns:sear="http://xmlns.oracle.com/orawsv/SCOTT/SE ARCHBYMLADEN"> <soapenv:Header/> <soapenv:Body> <sear:SEARCHBYMLADENInput> <sear:URL-NUMBER-OUT/> <sear:P_LOCATION_NAME-VARCHAR2-IN>elektro< /sear:P_LOCATION_NAME-VARCHAR2-IN> <sear:NAZIV_ULICE-VARCHAR2-OUT/> <sear:NAZIV_LOKACIJE-VARCHAR2-OUT/> <sear:LON-NUMBER-OUT/> <sear:LAT-NUMBER-OUT/>

Page 71: 47165895-MladenANTUNOVIC

| 70

<sear:GRAD-VARCHAR2-OUT/> <sear:BROJ_ULICE-NUMBER-OUT/> </sear:SEARCHBYMLADENInput> </soapenv:Body> </soapenv:Envelope>

U navedenom primjeru važno je primjetiti osnovne elemente SOAP zahtjeva: Envelope – Svaku SOAP poruku čini osnovni (root) envelope element. Za razliku od specifikacija kao što su XML i HTTP specifikacije, SOAP ne definiše tradicionalni sistem verzinisanja nego koristi namespace-e za razlikovanje verzije. Verzija je definisana zajedno sa envelope elementom (xmlns:soapenv="http://schemas.xmlsoap.org/soap/enve lope/" ). Header – Opcinalni element nudi fleskibilan framework za specikaciju dodatnih zahtjeva na nivou aplikacije. Na primjer pomoću Header elementa moguće je specificirati: digitalni potpis za naplatu korištenja SOAP servisa, otvoreni mehanizam za autentikaciju i slično.

Body – Obavezan element za sve SOAP poruke, tipična upotreba uključuje pozive i odgovore udaljenih procedura

4.3.3.3. SOAP Odgovor

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.o rg/soap/envelope/"> <soap:Body> <SEARCHBYMLADENOutput xmlns="http://xmlns.oracle.com/orawsv/SCOTT/SEARCHB YMLADEN"> <BROJ_ULICE>0</BROJ_ULICE> <GRAD>Sarajevo</GRAD> <LAT>43.856625760841254</LAT> <LON>18.39832305908203</LON> <NAZIV_LOKACIJE>Elektrotehni čki Fakultet</NAZIV_LOKACIJE> <NAZIV_ULICE>Zmaja od Bosne</NAZIV_ULICE> <URL>http://www.etf.unsa.ba</URL> </SEARCHBYMLADENOutput> </soap:Body> </soap:Envelope>

Kao i kod zahtjeva, odgovor sadrži Envelope i Body elemente i XML namespace-e. Odgovor na zahtjev sada u okviru Body elementa sadrži rezultat na osnovu zadanog parametra u zahtjevu.

4.3.3.4. SOAP preko HTTP-a

SOAP nije usko vezan ni za jedan transportni protokol, poruke je moguće prenositi preko SMTP, FTP ili nekog drugog protokola. Međutim po SOAP spefikaciji jedino je detaljno uključen HTTP protokol i ujedno je najčešće korišteni protokol. Zahtjevi se šalju kao HTTP zahtjevi i rezultat je također HTTP odgovor, sadržaj zahtjeva i odgovora je text/xml tipa. Klijent mora definirati SOAPAction zaglavlje, specifično za serversku stranu aplikacije kako bi se odredio sadržaj zahtjeva. Primjer HTTP pristupa web servisu je AltaVista BabelFish servis za prevođenje

Page 72: 47165895-MladenANTUNOVIC

| 71

koji se nalazi na XMethods serverima. Da bi pristupili BabelFish web servisu potrebno je specificirati urn:methodsBabelFish#BabelFish kao SOAPAction zaglavlje čak i ako server ne zahtijeva potpunu specifikaciju SOAPAction zaglavlja klijent mora specificirati prazan tekst ili null vrijednost. Primjer pozivanja BabelFish we servisa:

POST /perl/soaplite.cgi HTTP/1.0 Host: services.xmethods.com Content-Type: text/xml; charset=utf-8 Content-Length: 538 SOAPAction: "urn:xmethodsBabelFish#BabelFish" <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/env elope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instanc e" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:BabelFish xmlns:ns1="urn:xmethodsBabelFish" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/ encoding/"> <translationmode xsi:type="xsd:string">en_fr</trans lationmode> <sourcedata xsi:type="xsd:string">Hello, world!</so urcedata> </ns1:BabelFish> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

U zahtjevu su navedeni parametri za prevod, jezik s kojeg i jezik na koji se vrši prevod tako da na osnovu zahtjeva dobijemo sljedeći odgovor:

HTTP/1.1 200 OK Date: Sat, 09 Jun 2001 15:01:55 GMT Server: Apache/1.3.14 (Unix) tomcat/1.0 PHP/4.0.1pl 2 SOAPServer: SOAP::Lite/Perl/0.50 Cache-Control: s-maxage=60, proxy-revalidate Content-Length: 539 Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/enc oding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/ soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instanc e" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/env elope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <namesp1:BabelFishResponse xmlns:namesp1="urn:xmeth odsBabelFish"> <return xsi:type="xsd:string">Bonjour, monde!</retu rn> </namesp1:BabelFishResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Page 73: 47165895-MladenANTUNOVIC

| 72

SOAP odgovor preko HTTP protokola zahtijeva da se navede i kôd statusa, status kôd 200 indicira uspješno izvršenje, 500 Internal Server Error. U praktičnom djelu rada gdje razvijena web aplikacija koja komunicira sa Oracle web servisom preko SOAP protokola pomoću javascript funkcija, gdje su također zahtjev i odgovor XML oblika.

4.3.4. UDDI (Universal Description Discovery and Integration)

UDDI predstavlja tehničku specifikaciju za opisivanje, pronalaženje i inetrgisanje web servisa, jedan je od osnovnih elemenata web servis skupa protokola omogućavajući kompanijama da javno istaknu svoje web servise i da pronađu postojeće. Podaci su smješteni u određenom XML formatu, specifikacija uključuje API detalje za traženje postojećih i objavljivanje novih web servisa. Drugi dio UDDI specifikacije se odnosi na UDDI Business Registry – potpuno operativna implementacija UDDI specifikacije. U maju 2001.godine predstvaljen je UDDI Registry servis od strane Microsoft-a i IBM-a gdje je moguće registrovati ili pronaći već registrovane web servise.

4.3.4.1. UDDI tehničke specifikacije

UDDI arhitektura sastoji se od tri djela:

a) UDDI data model – Predstavlja XML šemu koja opisuje četri osnovna tipa informacija:

- businessEntity – element nosi informacije o aktuelnom business-u, uključuje naziv business-a, opis, adresu i kontakt informacije.

- businessService – informacije o jednom ili grupi web servisa, uključuje naziv, opis i opcionalno listu bindingTemplate elemenata.

- bindingTemplate – predstvalja informaciju gdje i kako se može pristupiti određenom web servisu, koristi se za HTTP bazirane servise, a može se koristiti i za email bazirane servise, faks bazirane servise, FTP bazirane servise čak i telefonski bazirane servise

- tModel – tehnički model, najvažniji od navedenih elemenata, koristi se za povezivanje pokazivača eksternim tehničkim specifikacijama

b) UDDI API – SOAP bazirani API za traženje i publikovanje web servisa na UDDI Business Registry-u. Dijeli se na dva dijela: Inquiry API – omogućava pretraživanje i vraćanje rezultata, Publisher API – objavljivanje servisa, ubacivanje novih i mjenjanje postojećih.

c) UDDI cloud services – Stranica operatora koja omogućava implementiranje UDDI

specifikacije i sinhronizaciju svih podataka. Ovaj tip servisa trenutno nude Microsoft i IBM, servis je logički centralizovan fizički distribuiran, replikacija podataka se vrši svakih 24 sata. Također je moguće implementirati privatni UDDI registre, međutim pošto novi registri nisu autamtski sinhronizovani sa glavnim UDDI čvorovima oni ne predstavljaju dio skupa UDDI registara (UDDI cloud).

Page 74: 47165895-MladenANTUNOVIC

| 73

4.4. Web servis u poređenju sa drugim tehnologijama

Web servisi nisu identični tradicionalnim distribuiranim računarskim tehnologijama kao što

su CORBA i DCOM, više su nalik na tehnologiju web servera, HTML-u, HTTP-u na čemu su i bazirani. Pomoću web servisa definišu se podaci nezavisni od programskog jezika, skupa mrežnih protokola i sistema za smještanje podataka, podaci su mapirani u nazavisan format. Inteligencija mapiranja poruka sa alikacijama nije sadržana u definiciji interfejsa, kao što je slučaj kod CORBA-e i DCOM-a koji su bazirani na RPC modelu, nego je sadržana u XML procesoru koji prima XML poruke i, na osnovu definisanih instrukcija, parsira poruke i mapiraju podatke u bilo koji program koji implementira web servis. Web servisi ne zahtjevaju postojanje istog softvera na klijentskoj i serverskoj strani aplikacije kako bi bila moguća komunikacija. Pomoću web servisa ista poruka se može mapirati na više aplikacija uključujući i RPC bazirane komponente. Web servisi predstavljaju asinhronu razmjenu poruka podržavajući sistem zahtjev/odgovor, RPC emuliranu komunikaciju koja je XML bazirana a ne protokol zavisna. Osnovne tehnologije web servisa, kao što su SOAP, WSDL i UDDI, se koriste za prevazilaženje problema komunikacije između raznorodnih tehnologija. U svijetu web servisa, glavni proizvođači računarskih programa i hardvera su donijeli osnovni skup standarda, na primjer implementacija web servisa pomoću SOAP, WSDL i UDDI protokola. Dodatne tehnologije su primarno fokusirane na sistemu sigurnosti, pošto se komunikacija odvija preko mreže sigurnost je veoma bitan faktor.

4.5. Primjena, upotreba i prednosti Web servisa

Da bi bili od koristi, SOAP, WSDL i UDDI, treba da budu široko implementirani i dostupni

softverski proizvodi. Koristeći navedene tehnologije moguće je poboljšati sistem upotrebe raznorodnih tehnologija i softversko-hardverskih platformi, i na taj način razvoj softvera dovesti na nivo da nije bitno koji alat se koristi, na kojem operativnom sistemu, koji transportni protokol da bi se napravila kvalitetna, distribuirana aplikacija koja će biti dostupna velikom broju korisnika. Razvoj aplikacija koristeći tehnologiju web servisa omogućava jednostavni i lakši način za povrat uloženih sredstava pri izradi određenog sistema jer na ovaj način nije određeno da li će s koristit Linux ili Windows kao operativni sistem. Alati za implementaciju web servisa su ostavljeni na odabir onome ko razvija web servis, tako da nema nikakve veze da li se jedan dio distribuiranog sistema, na primjer klijentska aplikacija, razvija koristeći komercijalne Microsoft alate ili nekomercijalne alate kao što je JAVA.

Osnovne kategorije implementacije web servisa su: - Microsoft .NET Framework - Aplication servers) - Integration brokers - Database vendors - ERP, CRM - Web service platform

Page 75: 47165895-MladenANTUNOVIC

| 74

Da bi web servis predstavili na jednostavan i konkretan način uzmimo za primjer osnovnu funkcionalnost kupovine putem Interneta (e-commerce). Kompanija A koja se bavi prodajom računarskih proizvoda preko svoje internet stranice treba da omogući korisnicima da naprave narudžbu za skup prozvoda koje žele kupit iz ponude kompanije i da imaju uvid u status napravljene narudžbe. Da bi provjerili status narudžbe korisnici treba da imaju mogućnost da se autoriziraju na internet stranicu prodavača proizvoda (kompanija A) pomoću internet pretraživača i da rezultat upita dobiju u čitljivom formatu, najčešće i najjednostavnije za korisnika u obliku HTML stranice. Osnovni model podrazumijeva ljudima orjentisan web interfejs, gdje su kupci primarni učesnici koji iniciraju većinu zahtjeva. S jedne strane kupac-klijent (korisnik servisa) na svom računaru pomoću internet pretraživača (klijent aplikacija) pristupaju podacima kompanije-prodavač (web server). Na ovaj način funkcioniše osnovni model web-a danas (slika 4.5).

Slika 4.5. – Human-centric web

Pomoću web servis tehnologije, prelazimo sa čovjeku orjentisanog interneta ka

aplikacijski orjentisanom internetu, što ne znači da je čovjek u potpunosti izbačen iz procesa komunikacije. Kad se kaže da govorimo o aplikacijski orjentisanom internetu odnosi se na to da je moguće ostvariti komunikaciju između klijentske i serverske aplikacije koje se nalaze odvojeno jedna od druga bez znanja o kojoj platformi se radi kako na jednoj tako i na drugoj strani. Na primjer status narudžbe je moguće mjenjati pomoću aplikacije što vodi do automatizirane komunikacije. S jedne strane klijentska aplikacija zahtjeva određenu uslugu-kupovina proizvoda a s druge strane aplikacija na strani prodavca (server) procesira primljene podatke pomoću sistema za upravljanje podacima uključujući smještanje u bazu podataka, mjenjanje statusa narudžbe i slično (Slika 4.2.).

Slika 4.6. Application-centric web

Na ovakav načina danas postoji veliki broj javnih servisa koji u velikoj mjeri olakšavaju rad i klijentima i kompanijama. Primjer servisa usluga implementiranih na ovaj način: sistem za

Page 76: 47165895-MladenANTUNOVIC

| 75

kupovinu avionskih karata, internet bankarstvo, online rječnik i sistemi za konverziju novca iz jedne valute u drugu. Upotrebom web servisa se nastoji stvoriti potpuno automatizovane internet servise, već postoje implementirani servisi kao što su sistem plaćanja kreditnom karticom putem interneta, sistemi za pretraživanje. Ako su servisi jednostavni za pronalaženje, samoopisivi i uklapaju se u određene standarde moguće je automatizirati integraciju aplikacija. Međutim danas još uvijek web servisi nisu napredovali do te mjere da se mogu smatrati sistemima u realnom vremenu koji mogu u potpunosti automatizirati procese komunikacije na internetu. Postoji veliki broj rješenja za implementiranje web servisa od kojih se izdvajaju Microsoft's .NET, IBM Web Services, and Sun Open Net Environment (ONE).

Page 77: 47165895-MladenANTUNOVIC

| 76

5. Primjena Oracle web servisa i spatial tip podataka

Web servisi omogućavaju na standardan način razmjenu informacija preko Interneta i pristup servisima koji implementiraju business logiku. Podacima smještenim u Oracle bazi podataka je moguće pristupiti koristeći ugrađenu podršku za implementaciju web servisa. Kada servis postane dostupan na Oracle bazi podataka moguće je izvršavati SQL upite a kao rezultat vraćati podatke XML formata. Drugi servis omogućava pristup PL/SQL procedurama i funkcijama, moguće je mjenjati ulazni i izlazni dokument iz čega se automatski generiše WSDL dokument pomoću Web servis mehanizma ugrađenog u Oracle bazu podataka. SOAP 1.1 predstavlja verziju SOAP protokola podržanu od strane Oracle XML baze podataka. Aplikacije koriste HTTP POST metode za prosljeđivanje SOAP zahtjeva Oracle XML web servisima. Moguće je konfigurisati sigurnosne postavke i lokaciju svih web servisa koristeći za to definisane datoteke. Upravljanje greškama pri upotrebi Oracle XML web servisa je riješeno na nivou SOAP framework-a.

5.1. Postavke na Oracle bazi podataka – upotreba XML web servisa

Da bi bilo moguće koristiti Oracle XML web servise potrebno je prvo izvršiti određena sistemska podešavanja na Oracle bazi podataka. Prijaviti se na sistem za upravljanje bazama podataka sa administratorskim privilegijama, SYS korisnik na bazi, i dodati konfiguraciju za omogućavanje servlet-a (programski interfejs, omogućava komunikaciju zahtjev/odgovor u XML formatu). Dodavanje servleta za omogućavanje web servisa na Oracle bazi podataka se vrši na sljedeći način (Izvršiti SQL kôd sa sistemskim (SYS) privilegijama):

DECLARE

SERVLET_NAME VARCHAR2(32) := 'orawsv';

BEGIN

DBMS_XDB.deleteServletMapping(SERVLET_NAME);

DBMS_XDB.deleteServlet(SERVLET_NAME);

DBMS_XDB.addServlet(NAME => SERVLET_NAME,

LANGUAGE => 'C',

DISPNAME => 'Oracle Query Web Service',

DESCRIPT => 'Servlet for issuing queries as a Web S ervice',

SCHEMA => 'XDB');

DBMS_XDB.addServletSecRole(SERVNAME => SERVLET_NAME ,

ROLENAME => 'XDB_WEBSERVICES',

ROLELINK => 'XDB_WEBSERVICES');

DBMS_XDB.addServletMapping(PATTERN => '/orawsv/*',

NAME => SERVLET_NAME);

END;

Na ovaj način kreiran je servlet po imenu orawsv koji kreira dvije nove role (skup privilegija) pomoću kojih je moguće određenom korisniku baze podataka dopustiti da kreira Oracle XML web servise.

Page 78: 47165895-MladenANTUNOVIC

| 77

5.2. Omogućavanje upotrebe Oracle web servisa korisnicima

Da bi korisnik (user) na bazi podataka bio u mogućnosti primjenjivati tehnologiju Oracle XML web servisa prije svega je potrebno dodjeliti određene privilegije na bazi podataka. Da bi korisnik baze podataka imao određenu privilegiju na bazi podataka potrebno je da mu privilegiju dodijeli administrator baze podataka (SYS user). Da bi korisnik baze podataka bio u mogućnosti razvijati Oracle XML web servis pomoću PL/SQL kôda potrebno je da mu je dodijeljena Oracle preivilegija XDB_WEBSERVICES. Administrator baze podataka može, dodatno dodjeliti sljedeće privilegije korisniku :

- XDB_WEBSERVICES_OVER_HTTP – Omogućava korisniku upotrebu web servisa preko HTTP internet protokola, ne samo HTTPS protokola koji je definisan kroz XDB_WEBSERVICES privilegiju.

- XDB_WEBSERVICES_WITH_PUBLIC – Definiše mogućnost pristupa objektima baze podataka, koji su na nivou baze podataka definisani kao javni (PUBLIC), pomoću web servisa. Korisnik kojem nije dodijeljena ova privilegija ima pravo da pristupa objektima baze podataka čiji je vlasnik ili mu je drugi korisnik, kao vlasnik, dozvolio da pristupa njegovim objektima. Sa XDB_WEBSERVICES_WITH_PUBLIC privilegijom korisnik može, osim navedenih objekata, pristupati svim objektima baze podataka koji su javno dostupni (PUBLIC).

5.3. PL/SQL Procedura kao web servis

Oracle XML web servis za upite nad Oracle bazom podataka se nalazi na adresi http://host:port/orawsv gdje host ime računara gdje instalirana Oracle baza podataka a port HTTP(S) port definisan na nivou baze podataka. WSDL dokument koji opisuje Oracle web servis, format ulaznih i izlaznih dokumenata koristeći XML šemu se nalazi na lokaciji http://host:port/orawsv?wsdl. Klijentska aplikacija šalje upite web servisu kao XML dokumente. Oracle XML web servis za pristup i rad sa PL/SQL funkcijama i procedurama je definisan na sljedećoj URL adresi http:// host : port / orawsv / dbšema/ paket / fn_ili_proc ili za proceduru i za funkciju koji nisu dio paketa na URL adresi http:// host : port / orawsv / dbšema/ fn_ili_proc . Host i port su definisani kao

svojstva baze podataka ranije navedeni, gdje je fn_ili_proc naziv funkcije ili procedure koja je istaknuta kao Oracle web servis, paket je SQL paket unutar kojeg može biti definisana i implementirana procedura ili fukcija a dbšema šema baze podataka (user, korisnik) koja je vlasnik navedenih objekata. Ulazni XML dokument mora sadržavati ulazne parametre koji su parametri fukcije ili procedure. Izlazni XML dokument sadrži vrijednosti svih izlaznih (OUT) parametara kao rezultata (povratne vrijednosti).

Imena XML elemenata u ulaznim i izlaznim dokumentima povezani su sa definisanim ulaznim i izlaznim parametrima SQL funkcije ili procedure. Automatski generisan WSDL dokument prikazuje potpuna imena XML elemenata. Standard za imenovanje ulaznih i izlaznih XML elemenata koji se koristi kod Oracle XML web servisa:

Page 79: 47165895-MladenANTUNOVIC

| 78

- XML element koji predstavlja početak za ulazne parametre za PL/SQL funkciju imenovan je kao ime_funkcije Input, gdje je ime_funkcije naziv PL/SQL funkcije (napisan

velikim slovima). - XML elementi za vrijednosti ulaznih parametara funkcije se imenovani po standardu

kao: ime_parametra-tip_parametra_iu_mod, gdje su: - ime_parametra – ime ulaznog parametra u fuknciju/proceduru. - tip_paramtera – SQL tip podataka ulaznog parametra. - iu-mod – izlazno – ulazni mod koji može biti: IN (ulazni), OUT (izlazni) i INOUT

(ulazno-izlazni). - XML element koji označava izlazne parametre XML dokumenta označen je sa

Spovratni_tip-ime_funkcije Output , gdje je povratni-tip SQL tip podataka

povratne vrijednosti-rezultata funkcije (velikim slovima), a ime_funckije je naziv PL/SQL funkcije (velikim slovima).

- XML elementi koji označavaju vrijednosti izaznih parametara funkcije su označeni na isti način kao i sami izlazni parametri(velikim slovima) uz to da je dodat prefiks RETURN koji označava da se radi o povratnim vrijednostima.

Svaka Oracle PL/SQL procedura istaknuta kao web servis je opisana sa pojedinačnim

generisanim WSDL dokumentom. WSDL dokument se nalazi na URL adresi http:// host : port / orawsv / dbšema/ paket / fn_ili_proc ?wsdl ili http:// host : port / orawsv / dbšema/ fn_ili_proc ?wsdl

Po potrebi je moguće generisati WSDL dokumet za sve funkcije ili procedure implementirane u jednom paketu, URL adresa za navedeni WSDL dokument je http:// host : port / orawsv / dbšema/ paket ?wsdl . Tipovi podataka koje je moguće korisiti kao ulazne i izlazne parametre su određeni sa SQL tipovima podataka, dati u tabeli 5.1.

SQL Tip podataka XML šema Tip podataka

CHAR, VARCHAR2, VARCHAR xsd:string

DATE – Format kao u bazi podataka xsd:date

TIMESTAMP, TIMESTAMP WITH TIMEZONE, TIMESTAMP WITH LOCAL TIMEZONE

xsd:dateTime

INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND xsd: duration

NUMBER, BINARY_DOUBLE, BINARY_FLOAT xsd:double

PL/SQL BOOLEAN xsd:boolean

Object types complexType

Tabela 5.1. Tipovi podataka, SQL-XML

Page 80: 47165895-MladenANTUNOVIC

| 79

5.4. IBM Framework za pristup SOAP web servisima

Da bi bilo moguće pozivati Oracle web servis i vršiti razmjenu informacija potrebno je implementirati klijentsku apliakciju preko koje bi na jednostavan način komunicirali sa serverskom aplikacijom – Oracle web servis. IBM je razvio framework za komunikaciju sa web servisom koresteći AJAX (Asynchronus JavaScript XML) tehnologiju te je koristeći ovaj framework moguće iz internet pretraživača komunicirati sa Oracle web servisom.

Pozivanje web servisa iz internet pretraživača može biti kompleksno, jednim djelom zato što niti jedan pretraživač ne komunicira razmjenom XML poruka u istom formatu i na isti način. Postoji jedan dio API (Application Programing Interface) koji imaju identičnu implementaciju za sve pretraživače. Jedan od često korištenih API-ja je XMLHttpRequest API koji predstavlja osnov AJAX dizajna klijentskih aplikacija. XMLHttpRequest je Javascript objekat korišten za implementaciju asinhronih HTTP zahtjeva.

IBM-ova implementacija klijenske aplikacije koja omogućava pozivanj SOAP web servis iz internet pretraživača (Mozilla Firefox) uključuje poznavanje i razumjevanje osnovnih sigurnosnih elemenata koji trebaju biti zadovoljeni. Da bi bilo moguće komunicirati sa SOAP web servisom iz internet pretraživača potrebno je omogućiti u sigurnosnim postavkama pretraživača pristup servisu koji je postavljen na određenoj lokaciji unutar ili izvan domene klijenstske aplikacije. Na ovaj način je omogućen sistem sigurnosti kako se nebi dozvolilo drugim aplikacijama ili servisima da ugroze sigurnosni sistem. Na slici 5.1 je dat prikaz komunikacije između web servisa iz Javascript kôda kroz internet preraživač koristeći Javascript biblioteke za pristup web servisu.

Slika 5.1. - Dijagram pristupa web servisu iz internet pretraživača

Page 81: 47165895-MladenANTUNOVIC

| 80

Web servis Javascript biblioteka korištena za pozivanje web servisa prikazana na slici 5.1. predstavlja kolekciju Javascript objekata i funkcija koje omogućavaju osnovni nivo podrške za SOAP 1.1 bazirane web servise, WS.js definiše sljedeće objekte:

- WS.call – Web servis klijent koji oblikuje XMLHttpRequest zahtjev. - WS.Qname – XML Qualified Name implementacija. - WS.Binder – Osnova za specifične XML serializatore i deserializatore. - WS.Handler – Osnova za Zahtjev/Odgovor upravljačke elemente. - SOAP.Element – Osnova za ugrađivanje SOAP elemenata u XML DOM. - SOAP.Envelope – Soap omotnica gdje su sadržani SOAP elementi. - SOAP.Header – Soap omotnica sadrži elemente zaglavlja. - SOAP.Body - Soap tijelo sadrži SOAP elemente. - XML – Metode za rad sa XML dokumentima.

Implementacija navedenih motoda se nalazi u WS.js Javaskripti, metode se pozivaju iz klijentske aplikacije za kreiranje zahtjeva i prihvatanje rezultata web servisa u XML obliku. Primjena navedenih metoda detaljnije je navedena u sljedećem poglavlju.

Page 82: 47165895-MladenANTUNOVIC

| 81

5.5. Realizacija Oracle web servisa, pristup bazi podataka pomoću IBM Javascript framework-a u praksi

Popularizacija sve veće upotrebe kroz veliki broj poznatih internet servisa kao što su Gmail,

Google mape i slično dovelo je do sve većeg broja razvoja web baziranih aplikacija koje koriste asinhronu razmjenu XML poruka. Jedan od takvih servisa implementiran je u okviru praktičnog djela ovog rada gdje je ugrađeno korištenje Oracle baze podataka kao aplikacionog servera i servera baze podataka, Google Mapa, Mozila Firefox – Internet pretraživač i IBM framework za pozivanje SOAP baziranih web servisa. Slika 5.2. prikazuje arhitekturu aplikacije koja predstavlja implementaciju navedenih tehnologija. Microsoft Windows XP Oracle Enterprise LINUX

Slika 5.2. – Arhitektura aplikacije

Praktični primjer aplikacije koja u sebi implementira primjenu Oracle web servisa – PL/SQL procedura za pretragu Oracle baze podataka lokacija na osnovu zadatog imena lokacije i kao rezultat vraća prostorni tip podataka (Oracle Spatial). Uređeni par čine geografska širina i geografska dužina, podaci vraćeni iz baze podataka se prikazuju na Google mapi koja je ugrađena u web stranicu koristeći Google mapa API-je široko dostupne na internetu. Web aplikacija realizuje komunikaciju između aplikacije i baze podataka kroz IBM Javascript framework i Oracle web servise uz upotrebu SOAP XML tehnologije. U nastavku je dat kôd implementacije metode SearchByMladen – pretražuje Oracle Spatial bazu podataka i na osnovu imena tražene lokacije vraća, između ostalih, vrijednosti geografske dužine i širine.

Mozilla Firefox

KLIJENT

WS.js

Javascript funkcije

WS.call

SOAP.Envelope

XMLHttpRequest ZAHTJEV

ODGOVOR

Oracle DB Server

SERVER

ORACLE WEB SERVIS

ORACLE Baza podataka

XML

Page 83: 47165895-MladenANTUNOVIC

| 82

Kod PL/SQL procedure SearchByMladen: create or replace PROCEDURE searchByMladen

(p_location_name IN VARCHAR2, naziv_lokacije OUT VARCHAR2, naziv_ulice OUT VARCHAR2, broj_ulice OUT NUMBER, URL OUT VARCHAR2, grad OUT VARCHAR2, lat OUT NUMBER, lon OUT NUMBER)

IS BEGIN

SELECT l.location_name, a.street_name, a.street_num ber, a.city, l.url, l.coordinate_sptl.sdo_point.x, l.coordinate_sptl.sdo_point.y INTO naziv_lokacije, naziv_ulice, broj_ulice, grad, url, lat, lon FROM locations l, addresses a WHERE a.id = l.address_id AND UPPER(l.location_name) like UPPER(p_location_na me||'%');

EXCEPTION WHEN OTHERS THEN naziv_lokacije:='Lokacija ne postoji u bazi'; naziv_ulice:='-'; broj_ulice:=0; grad:='-'; url:='-'; lat:=0; lon:=0;

END searchByMladen;

SOAP XML Zahtjev:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/enve lope/" xmlns:sear="http://xmlns.oracle.com/orawsv/SCOTT/SE ARCHBYMLADEN"> <soapenv:Header/> <soapenv:Body> <sear:SEARCHBYMLADENInput> <sear:URL-NUMBER-OUT/>

<sear:P_LOCATION_NAME-VARCHAR2-IN>Elektro </sear:P_LOCATION_NAME-VARCHAR2-IN>

<sear:NAZIV_ULICE-VARCHAR2-OUT/> <sear:NAZIV_LOKACIJE-VARCHAR2-OUT/> <sear:LON-NUMBER-OUT/> <sear:LAT-NUMBER-OUT/> <sear:GRAD-VARCHAR2-OUT/> <sear:BROJ_ULICE-NUMBER-OUT/> </sear:SEARCHBYMLADENInput> </soapenv:Body> </soapenv:Envelope>

Page 84: 47165895-MladenANTUNOVIC

| 83

SOAP XML Odgovor:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelop e/"> <soap:Body>

<SEARCHBYMLADENOutput xmlns="http://xmlns.oracle.com/orawsv/SCOTT/SEARCHB YMLADEN">

<BROJ_ULICE> 1</BROJ_ULICE> <GRAD> Sarajevo </GRAD> <LAT> 43.856625760841254 </LAT> <LON> 18.39832305908203 </LON> <NAZIV_LOKACIJE> Elektrotehni čki Fakultet </NAZIV_LOKACIJE> <NAZIV_ULICE> Zmaja od Bosne </NAZIV_ULICE> <URL> http://www.etf.unsa.ba </URL>

</SEARCHBYMLADENOutput> </soap:Body> </soap:Envelope>

SOAPUi - Alat za testirane SOAP web servisa – Poziv procedure

Slika 5.3. - SOAPUi – SOAP XML Zahtjev/odgovor

Page 85: 47165895-MladenANTUNOVIC

| 84

WSDL dokument – opis SearchByMladen web servisa: <definitions name="SEARCHBYMLADEN" targetNamespace="http://xmlns.oracle.com/orawsv/SCO TT/SEARCHBYMLADEN"> <types> <xsd:schema targetNamespace="http://xmlns.oracle.com/orawsv/SCO TT/SEARCHBYMLADEN" elementFormDefault="qualified"> <xsd:element name="SEARCHBYMLADENInput">

<xsd:complexType> <xsd:sequence> <xsd:element name="URL-VARCHAR2-OUT"> <xsd:complexType/> </xsd:element> <xsd:element name="P_LOCATION_NAME-VARCHAR2-IN" typ e="xsd:string"/> <xsd:element name="NAZIV_ULICE-VARCHAR2-OUT"> <xsd:complexType/> </xsd:element> <xsd:element name="NAZIV_LOKACIJE-VARCHAR2-OUT"> <xsd:complexType/> </xsd:element> <xsd:element name="LON-NUMBER-OUT"> <xsd:complexType/> </xsd:element> <xsd:element name="LAT-NUMBER-OUT"> <xsd:complexType/> </xsd:element> <xsd:element name="GRAD-VARCHAR2-OUT"> <xsd:complexType/> </xsd:element> <xsd:element name="BROJ_ULICE-NUMBER-OUT"> <xsd:complexType/> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element>

<xsd:element name="SEARCHBYMLADENOutput"> <xsd:complexType> <xsd:sequence> <xsd:element name="URL" type="xsd:string"/> <xsd:element name="NAZIV_ULICE" type="xsd:string"/> <xsd:element name="NAZIV_LOKACIJE" type="xsd:string "/> <xsd:element name="LON" type="xsd:double"/> <xsd:element name="LAT" type="xsd:double"/> <xsd:element name="GRAD" type="xsd:string"/> <xsd:element name="BROJ_ULICE" type="xsd:double"/> </xsd:sequence> </xsd:complexType> </xsd:element>

</xsd:schema> </types> <message name="SEARCHBYMLADENInputMessage">

<part name="parameters" element="tns:SEARCHBYMLADEN Input"/> </message> <message name="SEARCHBYMLADENOutputMessage">

<part name="parameters" element="tns:SEARCHBYMLADEN Output"/>

Page 86: 47165895-MladenANTUNOVIC

| 85

</message> <portType name="SEARCHBYMLADENPortType">

<operation name="SEARCHBYMLADEN"> <input message="tns:SEARCHBYMLADENInputMessage"/> <output message="tns:SEARCHBYMLADENOutputMessage"/> </operation>

</portType> <binding name="SEARCHBYMLADENBinding" type="tns:SEA RCHBYMLADENPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<operation name="SEARCHBYMLADEN"> <soap:operation soapAction="SEARCHBYMLADEN"/> <input> <soap:body parts="parameters" use="literal"/> </input> <output> <soap:body parts="parameters" use="literal"/> </output> </operation>

</binding> <service name="SEARCHBYMLADENService"> <documentation>Oracle Web Service</documentation>

<port name="SEARCHBYMLADENPort" binding="tns:SEARCH BYMLADENBinding"> <soap:address location="http://ora3.atlantbh.lok:8080/orawsv/SCOT T/SEARCHBYMLADEN"/> </port>

</service> </definitions>

Javascript funkcije – pretraživanje baze podaka – SOAP XML Oracle web servis – Google mape (Javascript kôd – implementacija Oracle web servisa) <script language="javascript" type="text/javascript " src="scripts/prototype.js"></script> <script language="javascript" type="text/javascript " src="scripts/ws.js"></script> <script src="http://maps.google.com/maps?file=api&amp;v=2&a mp;key=ABQIAAAAj_LcBdf_D3-RrOSBkdF3XxQCAXLDKGAwBhuXo0BUSV2cFTVsHhQN66HUMncJn3hATz_O3s33XuP5iw"type="text/javascript"></script> //<![CDATA[ function initialize() { if (GBrowserIsCompatible()) { var mylat=43.85182905924541; var mylong=18.384182453155518; var crossLayer = new GTileLayer(new GCopyrightColle ction(""), 0, 16); crossLayer.getTileUrl = function(tile, zoom) { return "./include/tile_crosshairs.png";

} crossLayer.isPng = function() {return true;} var layerTerCross = [ G_PHYSICAL_MAP.getTileLayers( )[0],crossLayer ];

Page 87: 47165895-MladenANTUNOVIC

| 86

var mtTerCross = new GMapType(layerTerCross,G_PHYSI CAL_MAP.getProjection(), "Ter+"); var map = new GMap2(document.getElementById("map_ca nvas")); map.addMapType(G_PHYSICAL_MAP); map.setMapType(G_SATELLITE_MAP); //Satelite map vie w map.addMapType(mtTerCross); map.setCenter(new GLatLng(mylat, mylong), 16); map.addControl(new GOverviewMapControl()); map.enableScrollWheelZoom(); var mapControl = new GHierarchicalMapTypeControl(); mapControl.clearRelationships(); mapControl.addRelationship(G_SATELLITE_MAP, G_HYBRI D_MAP, "Labels", false); mapControl.addRelationship(G_PHYSICAL_MAP, mtTerCro ss, "Crosshairs"); map.addControl(mapControl); var marker = new GMarker(new GLatLng(mylat,mylong), 16); map.addOverlay(marker); GEvent.addListener( marker, "mouseover", function() { marker.openInfoWindowHtml(myHtml); } ); GEvent.addListener ( map, "mouseout", function () { map.closeInfoWindow (); } ); var geocoder = new GClientGeocoder(); } } function searchLocation(name) { var call = null; if (navigator.appName == "Netscape") { try { netscape.security.PrivilegeManager.enablePrivileg e("UniversalBrowserRead"); call = new WS.Call('http://ora3.atlantbh.lok:8080/orawsv/SCOTT /SEARCHBYMLADEN'); }

catch (err) { document.write("Sorry, you can not view this sit e because of " + err + "."); return false; } } else

{ call = new WS.Call('http://ora3.atlantbh.lok:8080/orawsv/SCOTT /SEARCHBYMLADEN'); } var nsuri = 'http://xmlns.oracle.com/orawsv/SCOTT/S EARCHBYMLADEN'; var envelope = new SOAP.Envelope(); var body = envelope.create_body(); var search = body.create_child(new WS.QName('SEARCH BYMLADENInput',nsuri)); search.create_child(new WS.QName('URL-VARCHAR2-OUT' ,nsuri)).set_value(''); search.create_child(new WS.QName('P_LOCATION_NAME-V ARCHAR2-IN',nsuri)).set_value(name);

Page 88: 47165895-MladenANTUNOVIC

| 87

search.create_child(new WS.QName('NAZIV_ULICE-VARCH AR2-OUT',nsuri)).set_value(''); search.create_child(new WS.QName('NAZIV_LOKACIJE-VA RCHAR2-OUT',nsuri)).set_value(''); search.create_child(new WS.QName('LON-NUMBER-OUT',n suri)).set_value(''); search.create_child(new WS.QName('LAT-NUMBER-OUT',n suri)).set_value(''); search.create_child(new WS.QName('GRAD-VARCHAR2-OUT ',nsuri)).set_value(''); search.create_child(new WS.QName('BROJ_ULICE-NUMBER -OUT',nsuri)).set_value(''); //call ws call.invoke(envelope, searchFinished); } function searchFinished(call,respEnvelope) { var resp = respEnvelope.get_body().get_all_chi ldren()[0];

if (resp.qname().local_part() == 'SEARCHBYMLADENOut put'){ var broj = resp.get_all_children()[0].get_value (); var grad = resp.get_all_children()[1].get_value (); var lat = resp.get_all_children()[2].get_value( ); var lon = resp.get_all_children()[3].get_value( ); var lokacija = resp.get_all_children()[4].get_v alue(); var ulica = resp.get_all_children()[5].get_valu e(); var url = resp.get_all_children()[6].get_value( ); //handle received location handleLocation(lokacija, lat, lon, ulica, broj, grad, url); }else

{ alert('Problems calling Web Service'); } } function handleLocation(lokacija, lat, lon, ulica, broj, grad, url) { $('result').innerHTML = '<b>' + lokacija + '</b><br /><br/><b>Location info:</b><br/><b>LAT: </b>'+ lat+'<br/><b>LON: </b> '+ lon + '<br/><b>ULICA: </b>' + ulica + '<br/><b>BROJ: </b>' + broj + '<br/ ><b>GRAD: </b>' + grad + '<br/><br/>'; var myHtml = '<b>' + lokacija + '</b><br/><br/>Ulic a: ' + ulica + '<br/> Broj ulice: ' + broj + '<br/>Grad:'+ grad +'<br/><a href ="' + url + '"' + "target='_blank'" + '>' + url + '</a>'; var crossLayer = new GTileLayer(new GCopyrightColle ction(""), 0, 16); crossLayer.getTileUrl = function(tile, zoom) { return "./include/tile_crosshairs.png"; } crossLayer.isPng = function() {return true;} var layerTerCross = [ G_PHYSICAL_MAP.getTileLayers( )[0],crossLayer ]; var mtTerCross = new GMapType(layerTerCross,G_PHYSI CAL_MAP.getProjection(), "Ter+"); var map = new GMap2(document.getElementById("map_ca nvas")); map.addMapType(G_PHYSICAL_MAP); map.setMapType(G_SATELLITE_MAP); //Satelite map vie w map.addMapType(mtTerCross); map.setCenter(new GLatLng(lat, lon), 16); //SET Cen ter of the map map.addControl(new GOverviewMapControl()); map.enableScrollWheelZoom(); var mapControl = new GHierarchicalMapTypeControl();

Page 89: 47165895-MladenANTUNOVIC

| 88

mapControl.clearRelationships(); mapControl.addRelationship(G_SATELLITE_MAP, G_HYBRI D_MAP, "Labels", false); mapControl.addRelationship(G_PHYSICAL_MAP, mtTerCro ss, "Crosshairs"); map.addControl(mapControl); var marker = new GMarker(new GLatLng(lat,lon), 16); map.addOverlay(marker); GEvent.addListener( marker, "mouseover", function() { marker.openInfoWindowHtml(myHtml); } ); GEvent.addListener ( map, "mouseout", function () { map.closeInfoWindow (); } ); } </script>

Slika 5.4. – Rezultat pretrage za lokaciju AtlantBH

Page 90: 47165895-MladenANTUNOVIC

| 89

ZAKLJUČAK

Računarski programi su dobri onoliko koliko se koriste. Razvojem Interneta došlo je do razvoja internet baziranih aplikacija omogućavajući velikom broju udaljenih korisnika korištenje određenog informacionog sistema. Podaci i informacije predstavljaju predmet razmjene između korisnika i aplikacije (klijent-server). Da bi razmjenjivali podatke koji nas interesuju podaci treba da bude smješteni u određeni memorijski prostor. Baze podataka su uključene u sve moderne i napredne aplikacije, služe za centralizovano i struktuirano čuvanje podataka uz velike mjere sigurnosti i dostupnosti podataka. Razvojem i konstatnim unapređenjem Interneta i internet baziranih aplikacija prevaziđene su poteškoće kako poslovanja na distribuiranim udaljenim lokacijama tako i korištenja usluga i kupovine proizvoda sa udaljenih mjesta preko internet stranica. Internet doprinosi ekonomskoj i geografskoj globalizaciji, međutim ipak nije moguće u potpunosti zanemariti lokacije objekata, ljudi i drugih resursa jer ipak uz sve pogodnosti novih internet baziranih tehnologija potrebno je u velikoj mjeri znati gdje se nalaze objekti interesantni za određenu kompaniju ili pojedinca. Upravljanje lokacijama na način kako je opisano u okviru diplomskog rada u velikoj mjeri doprinosi kvalitetnijem i ekonomičnijem poslovanju i planiranju budućeg poslovanja.

Veliki broj kompanija nije u stanju priuštiti sebi kupovinu komercijalnih softverskih rješenja za razvoj informacionih sistema i web baziranih aplikacija, danas postoji također dosta besplatnih softverskih rješenja koja, s druge strane, su implemetirana na drukčiji način pomoću različitih tehnologija. Besplatni softverski alati u velikoj mjeri mogu zadovoljiti potrebe razvoja softvera, problem koji je prisutan u softverskoj industriji je komunikacija između sistema razvijenih na komercijalnim i besplatnim alatima. Krajnji korisnik ne zna niti treba da zna na kojoj platformi je razvijena aplikacija ni konfiguraciju platforme koju posjeduje privatno putem koje pristupa udaljenim internet aplikacijama. Web servisi donose novinu u softverskioj industriji, zahtjevi za različitim platformama pomoću kojih se pristupa distribuiranim aplikacijama su svedeni na nulu. Upotrebom standardnih formata kao što je XML ne zavisi od operativnog sistema ili internet pretraživača na strani klijenta tako da je eliminisana velika prepreka u korištenju distribuiranih aplikacija.

Kako je Internet doprinio globalizaciji društva i smanjenja geografskih udaljenosti tako su web servisi doprinijeli globalizaciji u softverskoj industriji distribuiranih aplikacija.

Page 91: 47165895-MladenANTUNOVIC

| 90

LITERATURA

- Oracle Database Concepts, 11g Release 1 (11.1) – Oracle Coorporation, California,

USA; Richard Strohm

- Beginning XML Databases – Wiley Publishing, Inc., Indianapolis, USA; Gavin

Powell

- Oracle XML Database, Developer's Guide, 11g Release 1 (11.1) - Oracle

Coorporation, California, USA; Drew Adams

- Pro Oracle Spatial for Oracle Database 11g – Appress, Inc., California, USA; Ravi

Kothuri, Albert Godfrind, Euro Beinat

- Web Services Essentials, Distributed Applications with XML-RPC, SOAP, UDDI and

WSDL – O'Reilly Media, Inc.; Ethan Cerami

- http://www.oracle.com/index.html - Oracle 11g, Siebel, Peoplesoft | Oracle, The

World's Largest Enterprise Software Company

- http://en.wikipedia.org/wiki/Main_Page - Wikipedia, the free encyclopedia

- http://www.ibm.com/developerworks/ - developerWorks : IBM's resource for

developers and IT professionals

- http://code.google.com/apis/maps/ - Google Maps API – Google Code

- http://maps.google.com/ - Google Maps