Professional Documents
Culture Documents
INTERNET TEHNOLOGIJE
Mentor:
Kandidat:
ime mentora
Beograd, 2010.
Prouavanju baza se pristupa sa 2 meusobno povezana aspekta: a) sistem za upravljanje bazom Database Management Systems DBMS, softverski sistem koji obezbeuje osnovne funkcije obrade velike koliine podataka - jednostavno pretraivanje i odravanje podataka - viestruko paralelno (konkurentno) korienje istog skupa podataka, - pouzdanost, - sigurnost. b) modeli podataka - specifine teorije pomou kojih se specifikuje i projektuje neka baza
3. Ulazi u sistem za upravljanje su: - Upiti (zahtevi sa podacima iz baze, sa navedenim uslovima koje podaci treba da zadovoljavaju) Preko njih moe da se menja sadraj baze. - Aplikacije (programi koji realizuju unapred definisane zahteve korisnika). Koristi se standardni programski jezik u koji se ugrauje jezik baze podataka. - Odravanje eme baze podataka. ema baze opisuje strukturu baze, pravila integriteta i pravila korienja. Odravanje, kreiranje i modifikovanje opisa koji se uva u reniku podataka. Ova tri ulaza realizuju se preko jezika baze podataka (Databse Language), koji se sastoji od dve komponente: - jezik za opis podataka (Data Definition Language), koristi se za odravanje eme baze, - opis baze podataka sveukupno, a i sa gledita pojedinih korisnika jezik za manipulaciju podataka (Data Manipulation Language), koristi za realizaciju upita i modifikacije baze. Preko jezika baze podataka definiu se tipovi podataka u bazi, oitavanje ili menjanje podataka, odreuje se pristup bazi. Generalno, jezici baze mogu biti proceduralni i neproceduralni.
4. Upravljanje transakcijama i oporavkom obezbeuje da baza ostane u konzistentnom stanju u konkurentnoj obradi podataka, ak i pri ozbiljnim otkazima sistema. Sistem za upravljenje treba da obezbedi efikasan oporavak baze (periodinim kopiranjem baze podataka na arhivske memorije i registrovanjem promena izmeu dva kopiranja). Transakcija predstavlja niz operacija nad bazom podataka koji odgovara jedoj logikoj jedinici posla u realnom vremenu. Logika jedinica posla, najmanji, atomski, posla koji ima neko realno znaenje. Ona se, u nekom programu, moe sastojati i od vie operacija nad bazom podataka (generalno, svaka operacija menja stanje baze ali od interesa, ovom sluaju je samo zbirni efekat ovih operacija). Sa korisnike take gledita stanje baze se moe menjati samo po okonanju logike jedinice posla. Prilikom izvravanja, transakcija mora da ima ACID osobine: 1. Atomnost (Atomicity): nad bazom podataka e se izvriti ili sve operacije ili nijedna. Za ostvarivanje ove osobine definiu se dve operacije nad bazom podataka: - COMMIT oznaava uspean kraj transakcije i potvruje sve promene u bazi podataka koje je proizvela transakcija - ROLLBACK kojom se ponitavaju efekti svih prethodnih operacija izvrenih nad BP u jednoj transakciji, ukoliko ona moe ugrozi konzistentnost baze podataka. 2. Konzistentnost (Consistency) pre i posle okonanja transakcije BP mora da zadovoljava uslove konzistentnosti. 3. Izolacija (Isolation): kada se izvravaju dve ili vie transakcija, njihovi efekti moraju biti meusobno izolovani. Odn. efekti koje izazovu transakcije koje se izvravaju istovremeno moraju biti jednaki efektima izvrenja transakcija jedne za drugom. 4. Trajnost (Durability): po zavretku transakcije, njeni efekti ne smeju biti izgubljeni ak i ako se desi otkaz sistema. Kontrola pristupa BP podrazumeva mogunost definicije kontrole na vie nivoa: - ko moe da pristupa BP, - kojim delovima BP korisnici mogu da pristupe, - ta korisnici mogu da rade sa delovima baze kojima imaju pristup.
1.
Krajnji korisnici- interaktivni korisnici a) Obini korisnici- pristupaju DBMS sa SQL upitima b) Naivni korisnici- pristupaju bazi kroz menije Programeri aplikacija- koji piu aplikacije sa meniima Administratori BP-Specijalisti koji nadgledaju DBMS
2. 3.
Krajnji korisnici. Neki obini korisik od njeg se oekuje da ima lakou korienja SQL-a, to i nije tako jednostavno. Termin obian implicira da korisnik ima promenljive zahteve od sesije do sesije pa nije ekonomino pokuavati da se napie program baziran na meniju. Upiti - da odgovore neposredim potrebama su poznati kao interaktivni upiti ad hoc upiti, grubo, za specifinu namenu. Naivni korisnik obavlja sve - sa BP kroz aplikacije sa meniima i izbegava da konstruie upite u SQL sintaksi. Banke, avioni.. Programeri aplikacija- u smislu korienja DBMS, pie aplikacije koje koriste krajnji korisnici. Programi moraju predvideti potrebe korisnika i biti sposobni da postave SQL upite za vreme izvrenja da se dohvati eljena informacija iz baze podataka. Programeri su iskusni u radu sa tekim problemima sintakse i konceptualnim problemima. Oni provode dug period izvodei kompleksnu sintaksu upita da odgovori na neke upite koji mogu biti poslani od strane naivnog korisnika. Na utedu korisnikih napora programi obezbeuju vie konfidens poverenja da ne postoji podmukla greka u upitu koja moe da vrati pogrean odgovor. to je kompleksniji SQL upiti su tei za konstrukciju na ad hoc nain bez nekog rizika za greku. Treba da razume sve osobine zahtevane od administratora baze da bi planirao efikasne programe.
grafik 2.1.1
U nekom objektnom jeziku jednostavno se mogu realizovati sloene strukture podataka i takve uskladititi u objektnu bazu podataka. U sluaju relacionih baza podataka ta struktura podataka se prvo transformie u odgovarajui skup tabela relacione baze to je ponekad sloen i vremenski zahtevan postupak. Rani komercijalni objektni SUBP nisu bili zasnovani na jedinstvenom standardu, navedene ciljeve su ostvarivali sa manje ili vie uspeha, na razliite naine. Njihov komercijalni prodor je bio zanemarljiv. Uspeh relacionih SUBP pored ve diskutovanih prednosti bio je i u tome to su zasnovani na jedinstvenom standardu, SQL-u, to je znaajno podiglo njihovu prihvatljivost, prenosivost i mogunost kooperacije razliitih sistema. Zbog toga se u poslednjih nekoliko godina intezivno razvija standard za objektne baze podataka u okviru takozvane ODMG ( Object Database Management Group). Verzija ODMG 1.2 standarda pojavila se 1996. a znaajno izmenjena i dopunjena verzija 2.0 1997. godine . Ovde se izlau elementi ODMG 2.0 standarda.
Objektni model: Objektni model na kome treba da bude zasnovan svaki objektni SUBP ( ODMG model ) izveden je iz OMG ( Object Management Group ) objektnog modela. OMG je objektni model definisan kao zajednika osnova za objektne orijentisane programe i jezike, komunikaciju objekata u nekoj klijent-server arhitekturi ( Object Request Brockers, ORB, na primer CORBA ) i objektne baze podataka.
Objektni specifikacioni jezici: Slue da opiu sistem kao skup meusobno povezanih objekata. Objektni specifikacioni jezik ODL ima istu ulogu koju JOP (DDL) ima u konvencionalnim jezicima. Objektni upitni jezik: Neproceduralni jezik za postavljanje upita i modifikaciju baze podataka. Ovaj upitni jezik nazvan OQL ( Object Query Language) je namerno veoma slian SQL-u sa veim mogunostima koje prua objektni model. C++, Smalltalk, Java Binding Language Posebne nezavisne komponente arhitekture koje pokazuju kako se u C++ (Smalltalk, Java) ugrauju mogunosti manipulacije perzistentnim objektima, mehanizmi za povezivanje sa OQL-om , upravljanje transakcijama i slino. Za razliku od konvencionalnih JMP jezika, JMP u objektnim bazama se kroje prema jeziku domainu.
Bilo koji sistem se moe posmatrati kao skup meusobno povezanih objekata. Pod objektima u nekom sistemu se podrazumevaju fiziki objekti, koncepti, apstrakcije, bilo ta to ima jasne granice i jasno znaenje, to se jasno razlikuje od drugih objekata u sistemu. U realnom sistemu objekti i nain ostvarivanja njihovih veza mogu da budu veoma raznovrsni. U nekoj vrsti modela realnog sistema svi ti raznovrsni objekti i njihove veze predstavljaju se sa odredjenim brojem precizno definisanih koncepata. Modeli koji slue za opis baze podataka nazivaju se modeli podataka.
implementaciju tipova objekata. Koncept klase u objektnim jezicima ne treba izjednaavati sa pojmom klase u ODMG. Specifikacija tipova neke baze podataka se definie preko ODL-a a njihova implementacija u okviru povezivanja sa jezicima Language Bindings. Oni definiu nain transformacije klase ODMG u sopstveni implementacioni koncept klase.
U ODMG svi objekti nasleuju operacije osnovnog interfejsa OBJECT. Objekti se kreiraju pozivajui operacije interfejsa ObjectFactory a kolekcije pozivanjem operacija interfejsa CollectionFactory. interface ObjectFactory { Object new (); } ; interface Object { boolean same_as ( in Object ime_Objekta); Object copy (); void delete (); } ;
Operacije se primenjuju na objekte korienjem dot notacije. o.same_as (p) ; Poto jedan objektni SUBP moe da upravlja sa vie baza podataka definie se objekat za fabrikovanje baza kao i objekat koji definie samu bazu. interface databaseFactor { Database new ( ) ; } ; interface database { exception ElementNotFound { } ; void open ( in string ime_baze); void close ( ) ; void bind ( in any neki_obj, in string ime_obj); Object unbind ( in string ime_objekta ); Object lookup ( in string ime_objekta ) raises ( ElementNotFound ); }; interface CollectionFactory : ObjectFactory { Collection new_of_size (in long velicina) ; };
interface Collection { exception InvalidCollectionType { } ; exception ElementNotFound { bilo koji element } ; unsigned Long cardinality ( ) ; boolean is_empty ( ) ; boolean is_ordered ( ) ; boolean allows_duplicates ( ) ; boolean contains_element ( in neki_element ) ; void insert_element ( in neki_element ) ; void remove_element ( in neki_element ) ; raises ( ElementNotFound ) ; iterator create_Iterator ( in boolean stable ) ; bidirectionalIterator create_bidirectional_iterator ( in boolean stable ) ; raises ( InvalidCollectionType ); }
interface Iterator { exception NoMoreElements { } ; exception InvalidCollectionType { } ; boolean is_stable ( ) ; boolean at_end ( ) ; void reset ( ) ; any get_element ( ) raises ( NoMoreElements ); void next_position ( in neki_element ) ; void replace_element ( in neki_element ) ; raises InvalidCollectionType ( ); }
interface Set : Collection { Set create_union ( in Set drugi_skup ) ; Set create_intersection ( in Set drugi_skup ) ; Set create_difference ( in Set drugi_skup ) ; boolean is_subset_of ( in drugi_skup) ; boolean is_proper_subset_of ( in drugi_skup) ; boolean is_superset_of ( in drugi_skup) ; boolean is_proper_superset_of ( in drugi_skup ) ; }
Veze: ODMG podrava samo binarne veze ( relationship ) tj. veze izmeu dva tipa objekata. Veza se definie implicitno unutar opisa tipa objekta kao tzv. prelazna putanja ( travelsal path). Prelazna putanja se uvek deklarie u paru, u okviru deklaracije oba tipa koji su u vezi. Deklarie se, na primer, da radnik radi u preduzeu (u okviru tipa Radnik) i da preduzee zapoljava radnika (u okviru tipa Preduzee). injenica da ovakve dve deklaracije predstavljaju jednu vezu iskazuje se u ODL-u preko klauzule INVERSE . Primer deklarisanja veze: interface Radnik { .... relationship Preduzece radi inverse Preduzece : : zaposljava ; ....};
interface Preduzece { .... relationship set <Radnik> zaposljava inverse Radnik : : radi ; .... }; Kardinalnost veze se definie preko injenice da veza uzima kao vrednost jedan atomski objekat ( kardinalnost jedan ) ili neku njihovu kolekciju ( kardinalnost vie ). Objektni SUBP treba da ostvari integritet veze: ako je objekat koji uestvuje u vezi izbrisan iz baze tada se i svaka prelazna putanja prema tom objektu takoe brie. Veza u OMG-u je uvek dvosmerna. Pri implementaciji veze u nekom pridruenom jeziku veza se moe uiniti jednosmernom. Isto tako, kao to je ranije pokazano, atribut ije je vrednost indentifikator nekog objekta moe da poslui za iskaz jednosmernih veza.
Primer operacije je : Boolean upisan_na_predmet ( in insinged short kurs ) raises ( nema_uslova , popunjen_broj );
2.10 Nasleivanje
U ODMG se definiu dve posebne vrste nasleivanja: 1. Nasleivanje ponaanja 2. Nasleivanje stanja Za nasleivanje ponaanja se koristi veza nadtip-podtip ( koja se ponekad naziva veza generalizacija-specijalizacija ili ISA veza ). Nadtip u nasleivanju ponaanja mora da bude interfejs. Za nasleivanje stanja koristi se specifina veza EXTENDS. U ovoj vezi izmeu klasa, podreena klasa nasleuje celokupno stanje i ponaanje klase koju proiruje. 1. Nasleivanje ponaanja Za nasleivanje ponaanja se koristi veza nadtip-podtip.
Primer: injenica da je Nastavnik podtip Radnika a asistent podtip Nastavnika oznaava se na sledei nain: interface Radnik { . . . specifikacija tipa Radnik . . . } interface Nastavnik : Radnik { . . . spec tipa Nastavnik . . . } interface Asistent : Nastavnik { . . . spec tipa Asistent . . . } class StalniRadnik : Radnik { . . .spec tipa StalniRadnik } class PrivremeniRadnik : Radnik { spec tipa PrivremeniRadnik } U podtipu se moe i redefinisati ponaanje specifikovano u nadtipu. Na pr. ako je u tipu Radnik specifikovana operacija ObraunZarade ista operacija se moe razliito implementirati za podtipove StalniRadnik i PrivremeniRadnik. Osobina da se ista operacija izvrava na razliit nain u zavisnosti od tipa objekta sa kojim se izvrava naziva se polimorfizam. U ODMG modelu podrano je viestruko nasleivanje ponaanja. Tada se, meutim moe desiti da dve ili vie nasleenih operacija imaju isti naziv, a razliiti broj i/ili tip argumenata. Da bi se ovaj problem izbegao nije dozvoljeno preoptereenje (overloading) imena operacije (davanje istih imena operacija razliitih tipova) u takvoj hijerarhiji nasleivanja. 2. Nasleivanje stanja ODMG model uvodi EXTENDS vezu za definisanje nasleivanja stanja. Na primer, class Lice { attribute string ime; attribute Date datumRodjenja; class ZaposlenoLice extends Lice:Radnik { attribute Date datumZaposljavanja; attribute Currency plata ; relationship Rukovodilac sef inverse Rukovodilac : : podredjeni ; } ; class Rukovodilac extends ZaposlenoLice { relationship set <ZaposlenoLice> podredjeni inverse ZaposlenoLice sef ; } ; Odnos tip-podtip (generalizacija-specijalizacija) u ODMG modelu se primenjuje samo na nasleivanje ponaanja. Zbog toga interfejs i klasa mogu biti podtipovi samo interfejsa. Interfejsi i klase ne mogu biti podtipovi klasa. Poto se interfejs ne moe instancirati, on ( slino apstraktnoj klasi u nekim OO jezicima ) slui samo za to da se iz njega naslede neke operacije. Poto se preko odnosa podtip/nadtip nasleuje samo ponaanje, ako se eli u podtipu isti atribut koji postoji u interfejsu koji je nadtip, on se u podtipu mora kopirati.
Opseg tipa je skup svih instanci datog tipa u okviru posmatrane baze podataka. Ako je neki objekat instanca tipa A, tada je on element opsega A. U konvencionalnim bazama podataka uvaju se sva pojavljivanja tipova definisanih u njima. U objektnim bazama , projektant moe da odlui da li e se opseg tipa uvati u bazi ili ne. Objektni SUBP treba da obezbedi ubacivanje i izbacivanje pojavljivanja u i iz opsega, kao i kreiranje indeksa. Mogue je definisati da jedan atribut ili vie atributa predstavljaju korisniki klju tipa. Klju slui za jedinstvenu identifikaciju, preko atributa definisanih u njegovoj specifikaciji, jednog pojavljivanja u opsegu tipa.
grafik 2.10.2jedinstvene oznake za prikaz eme BP u ODMG
Primer 1 Geometrijski oblici : interface GeometrijskiObjekat { attribute enum Oblik {Pravougao, Trougao, Krug} oblik; attribute struct Tacka { short x, short y } referentna_tacka; float obim ( ); float povrsina ( ); void pomeri ( short x_pomeraj, short y_pomeraj ); void rotiraj (short ugao) ; } ; class Pravougaonik : Geometrijski oblik (extent pravougaonici ) { attribute struct Tacka {short x, short y } referentna_tacka; attribute short duzina ; attribute short sirina ; } ; Primer 2 Prikaz eme sa ODMG oznakama:
Primer 2 : class Kurs (extent kursevi key sif_kurs ) { attribute string sif_kurs; attribute string naziv; relationship set <Kurs> zahteva_se inverse Kurs : : zahtevan ; relationship set <Kurs> zahtevan inverse Kurs : : zahteva_se ; relationship set < Slusalac > slusaju inverse Slusalac : : slusa ; relationship Asistent drzi_vezb inverse Asistent: :vezba; relationship Profesor drzi_pred inverse Profesor : : predaje; Boolean drzi_se (in unsigned short semestar ) raises (vec_plan); Boolean izostavljen ( in unsigned short semestar) raises ( vec_izost ); } ;
class Radnik ( extent radnici key id ) { attribute short id ; attribute Plata mesecna_plata ; void ( ) zaposli; void otpusti ( ) raises ( nema_tog_radnika ) ; } ; class Plata { attribute float osnovna; attribute float prekovremena ; attribute float minuli_rad ; } ;
class Profesor extends Radnik ( extent radnici ) { attribute enum Zvanje { redovni, vanredni, docent } zvanje; relationship set <Kurs> predaje inverse Kurs : : drzi_pred ; } ; interface Slusalac { struct Adresa { string grad, string ulica_i_broj } ; attribute string ime; attribute string broj_indeksa; attribute Adresa adresa-stud; relationship set <Kurs> slusa inverse Kurs : : slusaju ; Boolean upisan_za_kurs ( in unsigned short Kurs) raises (nema_preduslove, popunjeno ); void ispisi ( in unsigned short Kurs ) raises ( nije_upisan ); } ;
class Asistent extends Radnik : Slusalac { attribute string ime; attribute string broj_indeksa; attribute Adresa adresa-stud; relationship set <Kurs> slusa inverse Kurs : : slusaju ; relationship set <Kurs> vezba inverse Kurs : : drzi_vezb; } ; class Student: Slusalac ( extent studenti ) { attribute string broj_indeksa ; attribute Adresa adresa-stud; relationship set <Kurs> slusa inverse Kurs : : slusaju ; } ;