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 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.
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
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.
Osnovni elementi arhitekture objektnih baza su:
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.
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:
Posebno je potrebno naglasiti sledeću razliku objekta i literala: objekat ima jedinstveni identifikator, a literal nema.
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.
Slika 3
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.
O načinu specifikacije objektnih baza preko UML-a govoriće se posebno.
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:
Slika 4
Tokom osamdesetih godina je došlo do primene računara u jednom broju novih oblasti. U te nove oblasti primene spadaju:
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.