Objektni model baze podataka

Objekte baze podataka

Poslednja decenija u softverskom inženjerstvu je decenija „objektne” orijentacije.

Objektna orijentacija je pristup u kome se neki sistem organizuje kao kolekcija međusobno povezanih objekata koji sarađujući ostvaruju postavljene ciljeve. Objektna orijentacija je danas preovlađujuća u programiranju i programskim jezicima, metodološkim pristupima razvoju softvera i informacionih sistema, a postepeno preuzima primat i u sistemima za upravljanje bazom podataka, bilo preko „čistih” objektnih SUBP, bilo preko objektno-relacionih SUBP koji predstavljaju proširenje relacionih sa objektnim konceptima.

Jedna od najbitnijih karakteristika SUBP-a je skup tipova podataka koje on podržava. Konvencionalni SUBP (hijerarhijski, mrežni i relacioni) su zasnovani na tipu rekorda koji predstavlja agregaciju polja (atributa u relacionom modelu) koja su definisana nad standardnim tipovima.

U relacionom modelu se još definiše i tabela kao skup rekorda, u mrežnom se uvodi pojam „rekord seta”, a u hijerarhijskom pojam „stabla” rekorda. Objektni SUBP su postavili sebi cilj da stvore mnogo bogatiji skup tipova i time omoguće prirodniju manipulaciju podacima u aplikacijama koji se razvijaju nad bazom.

Cilj razvoja objektnih SUBP je takođe da preuzmu i ostale bitne karakteristike objektno-orjentisanih programskih jezika i objektno-orjentisanog razvoja:

  • učaurenje, odvajanje implementacije softvera od njegove specifikacije, odnosno načina korišćenja;
  • modularizaciju, grupisanje pojedinih delova softvera u koherentne i relativno izolovane celine (komponente);
  • jednostavno ponovno korišćenje (Reusability) ranije razvijenog softvera.

ANSI/SPARK arhitektura

U konvencionalnim SUBP troslojna ANSI/SPARC arhitektura imala je za cilj da omogući da se baza podataka tretira kao samostalna komponenta nekog informacionog sistema, u najvećoj mogućoj meri nezavisna od aplikacija koje je koriste. Zbog toga je Jezik baze podataka (DDL i DML) u ovim SUBP potpuno odvojen (nezavisan) od programskih jezika u kojima se razvijaju aplikacije, omogućavajući na taj način da se nad jednom bazom podataka razvijaju i izvršavaju aplikacije napisane i u različitim programskim jezicima.

Zbog toga se nezavisnost jezika baze podataka u odnosu na programske jezike, bez obzira na probleme koji su proisticali iz njihove moguće nesaglasnosti, tretirala kao prednost, a ne kao nedostatak ovih SUBP-a.

Nasuprot tome, objektni SUBP teže da integrišu funkcije SUBP-a u programski jezik, da bi se nesaglasnost jezika baze podataka i programskih jezika eliminisale i značajno poboljšale performanse sistema. Teži se tome da se u potpunosti izjednače objekti baze podataka i objekti aplikacija koji se specifikuju u nekom objektnom programskom jeziku.

Objekti

Jedina razlika izmedu objekata baze i objekata aplikacija treba da bude njihov životni vek.

Objekti u aplikacijama su tranzijentni, životni vek im je jednak trajanju aplikacije, dok su objekti u bazi podataka perzistentni, nezavisni od postojanja aplikacija koje ih koriste. Pri tome, integracija SUBP i programskih jezika ne eliminiše mogućnost da više programa, koriste istu BP. Isto tako, raspolažući sa mnogo bogatijim skupom tipova, objektni SUBP treba da podrže i znatno moćniji upitni jezik od relacionog (SQL-a).

Slika 1

Slika 1

 

Osnovna karakteristika objektnih SUBP-a je integracija objektno-orjentisanih jezika i funkcija SUBP-a. Oni omogućavaju da se objekti baze podataka pojavljuju kao objekti programa, tzv. perzistentni objekti.

Arhitektura objektnih SUBP

Osnovni elementi arhitekture objektnih baza su:

  1. objektni model, objektni model na kome treba da bude zasnovan svaki objektni SUBP (ODMG model) izveden je iz OMG (Object Management Group) modela. OMG je objektni model definisan kao zajednička osnova za objektne programske jezike, komunikaciju objekata u nekoj klijent-server arhitekturi (Object Request Brockers(ORB), na primer CORBA) i objektne baze podataka,
  2. objektni specifikacioni jezici koji služe da opišu sistem kao skup međusobno povezanih objekata. Objektni specifikacioni jezik, ODL (Object Definition Language) ima ulogu JOP-a (DDL-a) u konvencionalnim SUBP, 
  3. objektni upitni jezik je neproceduralni jezik za postavljanje upita i modifikaciju baze podataka koji se naziva OQL (Object Query Language). Ovaj upitni jezik, namerno veoma sličnog naziva SQL-u, ima znatno veće mogućnosti koje proizilaze iz bogatije strukture objektnog modela,
  4. C++, Smalltalk ili Java jezički povez (Language Binding) su posebne nezavisne komponente arhitekture koje pokazuju kako se u C++ (Smalltalk, Java) ugrađuju mogućnosti manipulacije sa perzistentnim objektima, mehanizmi za povezivanje sa OQL-om, upravljanje transakcijama i slično.

Odnos komponenti – Objektne baze podataka

Slika 2

Slika 2

 

Na slici je prikazan međusobni odnos opisanih komponenti. Programer opisuje BP za svoju aplikaciju koristeći se bilo samostalnim ODL jezikom, ili proširenim programskim jezikom (PLODL). Preko preprocesora opisa, opis baze (metapodaci) se skladišti u BP.

Programer piše aplikaciju u programskom jeziku (oznaka PL zamenjuje C++, Smalltalk i Java jezik). Koristeći taj izvorni kod i rezultate preprocesiranja opisa baze, PL prevodilac generiše odgovarajući binarni kod. Dobijeni binarni kod se povezuje sa Runtime rutinama objektnog SUBP-a, proizvodeći izvršni kod koji komunicira sa BP. BP može da se koristi (deli) sa ostalim aplikacijama u sistemu.

Objektni model

Bilo koji sistem se može posmatrati kao skup međusobno povezanih objekata. Pod objektima u nekom sistemu se podrazumevaju fizički objekti, koncepti, apstrakcije, bilo šta što ima jasne granice i jasno značenje, što se jasno razlikuje od drugih objekata u sistemu. Objektni model polazi od ovakve definicije sistema.

U objektnom modelu definišu se sledeći koncepti:

  1. objekat i literal su osnovni primitivni koncepti objektnog modela. Pod objektom se podrazumeva entitet koji je sposoban da čuva svoja stanja i koji stavlja okolini na raspolaganje skup operacija preko kojih se ta stanja prikazuju ili menjaju,
  2. literal je u osnovi vrednost, podatak koji se koristi u modelu. Literali mogu biti prosti, složeni ili kolekcije. Brojevi i karakteri su primeri atomskih literala, datum je primer složenog (struktuiranog) literala, a skup je primer kolekcije. Pojam literala je ekvivalentan pojmu nepromenljivog (Immutable) objekta koji se koristi u nekim ranijim objektnim modelima i programskim jezicima.
  3. razlika između objekta i literala se može ilustrovati definicijama u tim modelima i jezicima: “Objekti neke klase su bilo vrednosti datog tipa (Immutable Objects) ili promenljive koje mogu uzimati vrednosti datog tipa (Muttable oObject).”)

Posebno je potrebno naglasiti sledeću razliku objekta i literala: objekat ima jedinstveni identifikator, a literal nema.

Tipovi u objektnom modelu

Objekti i literali se kategorizuju u tipove.

Svi objekti, odnosno literali istog tipa imaju jedinstveni skup stanja (odnosno isti skup osobina) i jedinstveno ponašanje (odnosno isti skup operacija). Konkretan objekat se ponekad naziva pojavljivanje (instanca) datog tipa. Pojavljivanja literala se ne kreiraju eksplicitno u aplikacijama, već se pretpostavlja da implicitno postoje.

Stanje objekta se predstavlja vrednostima njegovih osobina. Pod osobinama objekta se podrazumevaju atributi objekta i njegove veze sa drugim objektima u sistemu. Osobine objekta se menjaju u vremenu.

Ponašanje objekta se opisuje preko skupa operacija koje on izvršava ili se nad njim izvršavaju. Svaka operacija ima kao implicitni argument objekat kome je pridružena. Pored toga, operacija može da ima listu ulaznih i izlaznih parametara definisanih tipova, a može i da vrati tipizovan rezultat.

Baza podataka skladišti objekte i stavlja ih na korišćenje većem broju korisnika, odnosno aplikacija. Baza podataka se opisuje preko svoje šeme koja se specifikuje preko ODL-a. U šemi se definišu tipovi objekata čija se pojavljivanja čuvaju u bazi.

Objektni model podataka – Primer

Primer objektnog modela

Primer objektnog modela

 

Već smo prikazali osnovne iskaze u ODL-u ODMG modela. Umesto detaljnijeg prikaza potpune sintakse ovog jezika za specifikaciju objektnih baza, prikazaćemo primer specifikacije jedne baze podataka.

U ODMG se daju i grafičke oznake za grafički prikaz strukture baze podataka. U grafičkom prikazu daju se samo atributi i veze tipova, dok se specifikacija operacija izostavlja. Na taj način se dobija jedan prikaz potpuno ekvivalentan modelu objekti-veze.

Napomenimo da je standard UML (Unified Modeling Language) mnogo sveobuhvatniji standard, pored ostalog, i za detaljnu specifikaciju objektnih baza podataka.

Klase Pravougaonik, Trougao i Krug nasleđuju operacije intertejsa GeometrijskiOblik, a klasa RavnostraniTrougao „proširuje” klasu Trougao sa svojim dodatnim atributima i operacijama. U grafičkim oznakama se ne razlikuje vrsta višeznačne veze (Set, List, Array, Dictionary), već se sve one predstavljaju na isti način (kao opšta kolekcija). Tek u transformaciji specifikuje se ova vrsta veze. Moguće je definisati jednosmerne veze sa strelicama u jednom smeru.

Model na slici je očigledan. Ipak treba dati nekoliko napomena:

  • jednosmerne veze se realizuju kao atributi čiji je domen tip objekta prema kome je jednosmerna veza usmerena,
  • primer „preopterećenja” imena pri nasleđivanju dat je u odnosu interfejs Slušalac i njegovih podtipova Asistent i Student. Atributi i veze tipa Slušalac su „prekopirani” u opis klasa Asistent i Student, zbog toga što se iz interfejsa mogu naslediti samo operacije. U interfejsu ovi atributi, odnosno relacije će biti implementirane kao operacije preko kojih će se preneti odgovarajuća informacija preko granica sistema, dok će u klasama Student i Asistent ovi atributi i veze biti iskorišćeni da predstave stanje objekata.
Slika 4

Slika 4

 

Objektno orijentisani modeli podataka

Tokom osamdesetih godina je došlo do primene računara u jednom broju novih oblasti.

U te nove oblasti primene spadaju:

  • računarom podržano projektovanje u mašinstvu, elektrotehnici, arhitekturi, građevinarstvu i informatici,
  • multimedijalni sistemi i baze znanja.

Sve ove nove oblasti primene zahtevaju manipulisanje velikim količinama podataka i mogle bi imati koristi od primene SUBP. Međutim, priroda podataka u tim primenama se teško uklapa u relacione okvire. Na primer. sistemi za računarom podržano projektovanje treba da omoguće izgradnju modela kompleksnih objekata i održavanje različitih verzija istog objekta. Multimedijalni sistemi sadrže tekstove varijabilne dužine, grafiku, slike. audio i video podatke, što rezultuje u zahtevu za efikasnim memorisanjem i manipulisanjem nizovima velike i promenljive dužine. Konačno, sistemi zasnovani na znanju zahtevaju semantički bogate podatke i kompleksne operacije. Sve ove nove oblasti primene stavljaju akcenat na još dva zahteva. To su: produktivnost programera i performanse obrade.

Opisani zahtevi su doveli i do razvoja novog modela podataka, taj novi model podataka se naziva objektno-orijentisanim. Razvija se na idejama objektno-orijentisanih programskih jezika i semantičkih modela podataka. Ceo pristup se, često, naziva objektno-orijentisanom paradigmom.

Kada je reč o objektno-orijentisanoj paradigmi, reč je o softverskom predstavljanju realnih entiteta putem parova (struktura podataka, ponašanje). Ti parovi predstavlaju nedeljivu celinu, a nazivaju se objektima.

Ponašanje se odnosi na programsku realizaciju postupka, putem kojih objekti menjaju stanje ili samo daju informacije o svom stanju. Stanje objekta je definisano strukturom podataka, putem koje je realni entitet predstavljen.

Tutorijali - Materijali za učenje