Title: Baze podataka i aplikacije
1Baze podataka i aplikacije
Lekcija 13
Baze podataka
2Sadržaj
- Uvod
- Integrisana rešenja
- Slojevita struktura aplikacija
- Specificnosti pristupa BP iz razlicitih slojeva
- Tehnologije koje omogucavaju razmenu podataka
izmedu BP i aplikacija
3Uvod
- Klijent server arhitektura
- SUBP serverska strana
- Aplikacija koja koristi BP klijentska strana
4Integrisana okruženja
- Klijent i server su jedno
- Primer Access-a i MS JetDB
- Sve je u jednom fajlu
- Platformska zavisnost
5Integrisana okruženja
6Integrisana okruženja
7Integrisana okruženja
8Integrisana okruženja
9Integrisana okruženja
10Slojevita struktura aplikacija
- Pojavom OOP omoguceno je
- razdvajanje podataka od logike njihove obrade
- razdvajanje podataka od interfejsa prema
korisnicima podataka. - Aplikacije se grade od objekata
- Objekti preuzimaju odovornost za obavljanje
specificnih funkcionalnosti aplikacije
11Slojevita struktura aplikacija
- Primeri
- Grupa objekata od kojih se gradi korisnicki
interfejs - Grupa objekata koji ostvaruju konekciju na BP,
izvršavaju upite i prihvataju rezultate upita - Objekti medusobno komuniciraju preko
funkcionalnih poziva - Objekti mogu biti fizicki razdvojeni (na
razlicitim racunarskim platformama - Za takve aplikacije kažemo da su ditribuirane
26.12.2006.
Predavanja
11
12Slojevita struktura aplikacija
- Raslojavanje aplikacije - odvajanje njenih delova
prema funkcionalnosti - Slojevi grupisani objekti srodnih
funkcionalnosti - Pravilo dobrog dizajna aplikacija
- izmedu objekata (klasa) u istom sloju treba da se
postigne visoka kohezija (high cohesion), - slaba sprega izmedu slojeva (low coupling).
13Slojevita struktura aplikacija
- Osnovni aplikacioni model je troslojni model
- Prezentcioni sloj (presentation layer)
- Sloj poslovne logike (buisness logic layer)
- Sloj podataka (data layer)
14Slojevita struktura aplikacija
15Slojevita struktura aplikacija
- Aplikacije mogu imati više od tri sloja
- Podaci mogu biti razdvojeni na više razlicitih
mesta - Rasterecenje hardverskih (serverskih) platformi
- Više nivoa obrade
- Primer Web aplikacije
16Slojevita struktura aplikacija
17Slojevita struktura aplikacija
- Aplikacije servisi (nezavisne softverske
komponente ) - Web servisi su zasnovani na tri osnovna
standarda - XML extensible markup language - (za
prikazivanje podataka), - SOAP simple object access protokol (za razmenu
podataka izmedu davalaca i korisnika servisa) i, - WSDL Web Service Definition Language - za
potrebe opisa servisa, definisan je poseban jezik
18Slojevita struktura aplikacija
Tri komponente Web servisa Davalac servisa,
korisnik servisa, provajder Web servisi
omogucavaju Povezivanje razlicitih aplikacija,
tehnologija i racunarskih platformi
19Pristup BP
- Specificnosti pristupa BP iz razlicitih slojeva
- Pristup podacima iz prezentacionog sloja
- Pristup podacima iz sloja poslovne logike
- Pristup iz sloja podataka
20Pristupa BP - Prezentacioni sloj -
- Prezentacioni sloj sadrži objekte korinickog
interfejsa - Uokvireni prozori sa naslovnom linijom koji
sadrže kontrole za interakciju sa korisnikom
21Pristupa BP - Prezentacioni sloj -
22Pristupa BP - Prezentacioni sloj -
1Private Sub Form_Close() 2DoCmd.RunSQL "UPDATE KolicineSred SET KOLIC 3Forms!TSredstva!RecSum WHERE KolicineSred.ID_BR 4Forms!TSredstva!ID_BR AND 5KolicineSred.SifDugForms!TSredstva!SifDug" 6End Sub
VBA skripta koja sadrži SQL naredbu
23Pristupa BP - Prezentacioni sloj -
24Pristupa BP - Prezentacioni sloj -
25- Prezentacioni sloj -
1 lthtmlgt 2 ltbodygt 3 lt 4 set connServer.CreateObject("ADODB.Connection") 5 conn.Provider"Microsoft.Jet.OLEDB.4.0"6 conn.Open "d/webdata/partneri.mdb 7 sql"INSERT INTO kupci (naz_firme, adresa, postbroj)"8 sqlsql " VALUES 9 sqlsql "('" Request.Form("firma") "', 10 sqlsql "'" Request.Form("adresa") "', 11 sqlsql "'" Request.Form("postkod") "') 12 on error resume next 13 conn.Execute sql,recaffected 14 if errltgt0 then 15 Response.Write("Nemate prava na dodavanje podataka!") 16 else 17 Response.Write("lth3gtKlijent " Request.Form("firma") 18 " je dodatlt/h3gt") 19 end if 20 conn.close 21 gt 22 lt/bodygt 23 lt/htmlgt
Pristup BP iz ASP (Active Server Pages) stranice
26Pristupa BP - Prezentacioni sloj -
1 ltsqlquery var"upit1"gt2 SELECT FROM moja_tabela3 lt/sqlquerygt 4 ltcforEach var"naziv_polja" items"upit1.columnNames"gt5 ltthgtltcout value"naziv_polja"/gtlt/thgt6 lt/cforEachgt7 ltcforEach var"red" items"upit1.rows"gt8 lttrgt9 ltcforEach var"kolona" items"red"gt10 lttdgtltcout value"kolona.value"/gtlt/tdgt11 lt/cforEachgt12 lt/trgt13 lt/cforEachgt
Posebno dizajnirani tag-ovi za pristupanje BP iz
prezentacionog sloja
27Pristupa BP - Prezentacioni sloj -
1 mysql_connect("biblioteka.snemanja.net3617",username,password)2 _at_mysql_select_db("biblioteka") or die( "Nema konekcije sa BP") 3 result mysql_query("SELECT FROM knjige") 4 num mysql_numrows(result)5 mysql_close() 6 i07 while (i lt num) 8 naslov mysql_result(result,i,"naslov")9 autor mysql_result(result,i,"autor") 10 i 11
Pristupanje BP iz PHP stranice
28Pristup BP - sloj poslovne logike -
- Najcešce korišcen pristup kod višeslojnih
aplikacija - Entiteti (klase ili moduli) zaduženi za
komunikciju sa BP - Uslužne klase koje omogucavaju interakciju sa BP
- CDatabase, CRecordset klase iz Microsoft (MFC)
- ResultSet, Connection klase u Java-inom paketu
java.sql.
29Pristup BP - sloj poslovne logike -
30Pristup BP - sloj poslovne logike -
C kod koji preuzima nazive proizvoda iz tabele
u BP i dodaje ih u listu proizvoda u korisnickom
interfejsu
31Pristup BP - sloj poslovne logike -
Java kod koji u tabelu t_mtutor_groups u
BP dodaje novi zapis (novi naziv grupe)
32Pristup BP - sloj podataka -
- Izmeštanje SQL naredbi iz izvornog koda
aplikacije u SUBP
33Pristup BP - sloj podataka -
- Ugnježdene procedure (stored procedures)
- Skupovi instrukcija koje se cesto koriste
- Njihovom upotrebom programeri se oslobadaju
višestrukih pozivanja istih komandi - Najbrže se izvršavaju jer se proces prevodenja
instrukcija vrši na SQL serveru - Procedure se nalaze na jednom mestu, a ne na više
mesta u aplikacijama (npr. na front-end kraju
prezentacioni sloj), pa je njihova izmena i
ažuriranje mnogo lakše
34Pristup BP - sloj podataka -
- Ugnježdene procedure (stored procedures)
- Kada se izvrši procedura, samo rezultat obrade se
šalje ka sledecem sloju - Najmanje opterecenje mreže, poboljšanje
performansi - Procedurama se mogu prosledivati parametri i
promenljive - Procedure se mogu pozivati i iz drugih procedura
- Najcešce se pišu u nekom od proširenja jezika SQL
koje definiše proizvodac konkretnog DBMS - Oracle PL/SQL
- Microsoft SQL Server Tansact-SQL
35Pristup BP - sloj podataka -
- Preduslov - SUBP mora da poseduje mogucnosti
kreiranja procedura - SQL naredbe se ugnježdavaju kao procedure (stored
procedure) u ciljnu BP
1 CREATE PROCEDURE spUsedTestSets(IN u_id INTEGER(11)) 2 BEGIN 3 SELECT FROM t_mtutor_used_test_sets WHERE ( user_id u_id ) 4 END
36Pristup BP - sloj podataka -
- Poziv ugnježdenih procedura
1 cs conn.prepareCall("call spUsedTestSets(?)") 2 cs.setInt("user_id", u_id) 3 rs cs.executeQuery() 4 while( rs.next() ) 5 int test_id rs.getInt("test_set_id") 6 Date test_dat rs.getDate("date") 7
37Pristup BP - sloj podataka -
- Trigeri, okidaci (triggers)
- Programska procedura u okviru SUBP, koja se
aktivira odredenim dogadajem - upis novog zapisa u tabelu
- brisanje odredenog zapisa
- modifikacija postojeceg zapisa
- Triger predstavlja jedan od mehanizama za proveru
uslova integriteta baze podataka - Npr. Pre upisa u tabelu dobavljac-artikal
proveriti da li dobavljac dobavlja dati proizvod
38Pristup BP - sloj podataka -
- Trigeri, okidaci (triggers)
- Triger pokrece odredenu aktivnost nad bazom, uvek
kada se desi jedan od navedenih dogadaja - Tacnije receno, SUBP inicira izvršenje okidaca,
odmah po nastajanju dogadaja - Rad okidaca je van kontrole aplikativnog programa
koji je vezan na SUBP, a obavezno se izvršava
39Pristup BP - sloj podataka -
- Trigeri, okidaci (triggers)
- Sintaksa trigera je sledeca
- Tip može biti BEFORE, AFTER i INSTEAD OF
- CREATE OR REPLACE TRIGGER /naziv_trigera/ /tip
trigera/ ON /naziv tabele/ BEGIN
/izvrsne_instrukcije_trigera/ END
40Pristup BP - sloj podataka -
- Trigeri, okidaci (triggers)
- Oracle ima trigere koji se aktiviraju i kada se
menja šema RBP - Schema-level triggers
- After Creation
- Before Alter
- After Alter
- Before Drop
- After Drop
- Before Logoff
- After Logon
41Razmena podataka izmedu BP i aplikacija
- Tehnologije koje omogucavaju razmenu podataka
izmedu BP i aplikacija ODBC - DAO (Data Access Objects)
- ADO
- JDBC
42Razmena podataka izmedu BP i aplikacija- ODBC -
- Pre kreiranja aplikacije potrebno je izvršiti
registrovanje BP kojoj se pristupa posredstvom
ODBC drajvera. - Registracija je obavezna bez obzira na tip BP
- U Windows-ovom kontrol-panelu se bira ikonica
ODBC, pri cemu se otvara administatorski dijalog
prozor
43Razmena podataka izmedu BP i aplikacija- ODBC -
Dodavanje novog ODBC veznika
44Razmena podataka izmedu BP i aplikacija- ODBC -
Izbor ODBC drajvera
45Razmena podataka izmedu BP i aplikacija- ODBC -
Zadavanje imena ODBC izvora podataka
Izbor BP
46Razmena podataka izmedu BP i aplikacija- ODBC -
Izbor BP
47Razmena podataka izmedu BP i aplikacija- ODBC -
- Dalje se kreiraju brokerske klase koje koriste
ODBC preko datog naziva, da bi uspostavile
interakciju sa podacima u BP
Naziv ODBC-a
Naziv tabele
Povezivanje polja u tabeli sa podacima u
brokerskoj klasi
48Razmena podataka izmedu BP i aplikacija- DAO -
- Automatizacija potpuna nezavisnost objekata
aplikacije od prezentacije podataka u ciljnoj BP - Potpunija kontrola i jednostavniji pristup svim
entitetima u SUBP - Razliciti DAO paketi i biblioteke
49Razmena podataka izmedu BP i aplikacija- DAO -
- Svi objekti u SUBP su obavijeni odgovarajucim
aplikacionim objektima - SUBP
- BP
- Tabele
- Polja
- indeksi
- Upiti
- ...
- Grupe
- Korisnici
50Razmena podataka izmedu BP i aplikacija- DAO -
1 try 2 CDaoDatabase db 3 db.Open(s_erw05.mdb) 4 db.Execute(INSERT INTO t_masters VALUES (test,test_pwd,0)) 5 db.Close() 6 catch(CDaoException pe)..
1 CDaoDatabase db CDaoMasterSet ms 2 try 3 ms.Open(AFX_DAO_USE_DEFAULT_TYPE, 4 SELECT FROM t_masters WHERE status 0 ) 4 while (!ms.IsEOF()) 5 fillCombo(ms.m_sUserName) 6 ms.MoveNext() 7 7 catch(CDaoException pe)..
51Razmena podataka izmedu BP i aplikacija- DAO -
DAO u Web okruženju
52Razmena podataka izmedu BP i aplikacija- ADO -
- ADO ActiveX Data Objects
- Pristup svemu što može da poseduje podatke
(e-mailovi, Excel tabele, datoteke) - ADO sloj nadgradnje nad OLE radi uprošcavanja
pristupa podacima
53Razmena podataka izmedu BP i aplikacija
- JDBC (Java DB Connectivity)
54Razmena podataka izmedu BP i aplikacija- JDBC -
- Posredstvom JDBC-a je moguce dobiti informacije
o - strukturi baze podataka i njenih tabela
- Posredstvom klase DatabaseMetaData je moguce
dobiti informacije o strukturi baze
55Razmena podataka izmedu BP i aplikacija- JDBC -
- Moguce je dobiti detaljne informacije o
- tabelama,
- ogranicenjima,
- uskladištenim procedurama,
- user-ima,
- JDBC drajveru pomocu kojega je uspostavljena
konekcija...
56Razmena podataka izmedu BP i aplikacija- JDBC -
- Klasa ResultSetMetaData može da posluži kao izvor
detaljnih informacija o - broju kolona,
- nazivu svake od njih,
- tipu,
- dužini polja...
57Razmena podataka izmedu BP i aplikacija- JDBC -
- Ova klasa takode poseduje veliki broj metoda od
kojih su najvažnije - int getColumnCount() vraca broj kolona
- String getColumnLabel(int i) vraca naziv i-te
kolone - int getColumnType(int i) vraca tip i-te kolone