Transcript Baze podataka i aplikacije
Lekcija 13 Baze podataka
Baze podataka i aplikacije
Sadržaj
• Uvod • Integrisana rešenja • Slojevita struktura aplikacija • Specifičnosti pristupa BP iz različitih slojeva • Tehnologije koje omogućavaju razmenu podataka između BP i aplikacija 26.12.2006.
Predavanja 2
Uvod
• Klijent server arhitektura • SUBP – serverska strana • Aplikacija koja koristi BP – klijentska strana 26.12.2006.
Uspostava konekcije Zahtev za servisom Davanje servisa Raskid konekcije Predavanja 3
• Klijent i server su jedno • Primer Access-a i MS JetDB • Sve je u jednom fajlu • Platformska zavisnost Forms Queries Reports Access Modules
Integrisana okruženja
JetDB engine 26.12.2006.
Predavanja 4
26.12.2006.
Forms Queries Reports Access Modules JetDB engine Predavanja
Integrisana okruženja
5
26.12.2006.
Forms Queries Reports Access Modules JetDB engine Predavanja
Integrisana okruženja
6
26.12.2006.
Forms Queries Reports Access Modules JetDB engine Predavanja
Integrisana okruženja
7
26.12.2006.
Forms Queries Reports Access Modules JetDB engine Predavanja
Integrisana okruženja
8
• Raslojavanje po potrebi
Integrisana okruženja
26.12.2006.
Predavanja 9
Slojevita struktura aplikacija
• Pojavom OOP omogućeno je: – razdvajanje podataka od logike njihove obrade – razdvajanje podataka od interfejsa prema korisnicima podataka .
• Aplikacije se grade od objekata • Objekti preuzimaju odovornost za obavljanje specifičnih funkcionalnosti aplikacije 26.12.2006.
Predavanja 10
Slojevita struktura aplikacija
• Primeri: – Grupa objekata od kojih se gradi korisnički interfejs – Grupa objekata koji ostvaruju konekciju na BP, izvršavaju upite i prihvataju rezultate upita • Objekti međusobno komuniciraju preko funkcionalnih poziva • Objekti mogu biti fizički razdvojeni (na različitim računarskim platformama – Za takve aplikacije kažemo da su ditribuirane 26.12.2006.
Predavanja 11
Slojevita struktura aplikacija
• Raslojavanje aplikacije - odvajanje njenih delova prema funkcionalnosti • Slojevi – grupisani objekti srodnih funkcionalnosti • Pravilo dobrog dizajna aplikacija: – između objekata (klasa) u istom sloju treba da se postigne visoka kohezija (
high cohesion
), – slaba sprega između slojeva (
low coupling
).
26.12.2006.
Predavanja 12
Slojevita struktura aplikacija
• Osnovni aplikacioni model je troslojni model – Prezentcioni sloj (
presentation layer
) – Sloj poslovne logike (
buisness logic layer
) – Sloj podataka (
data layer
) 26.12.2006.
Predavanja 13
Slojevita struktura aplikacija
26.12.2006.
Predavanja 14
Slojevita struktura aplikacija
• Aplikacije mogu imati više od tri sloja • Podaci mogu biti razdvojeni na više različitih mesta – Rasterećenje hardverskih (serverskih) platformi • Više nivoa obrade • Primer: Web aplikacije 26.12.2006.
Predavanja 15
Slojevita struktura aplikacija
26.12.2006.
Predavanja 16
Slojevita struktura aplikacija
• • Aplikacije servisi (nezavisne softverske komponente ) Web servisi su zasnovani na tri osnovna – – – standarda: XML –
extensible markup language
prikazivanje podataka), - (za SOAP –
simple object access protokol
(za razmenu podataka između davalaca i korisnika servisa) i, WSDL –
Web Service Definition Language
- za potrebe opisa servisa, definisan je poseban jezik 26.12.2006.
Predavanja 17
Slojevita struktura aplikacija
Tri komponente Web servisa: Davalac servisa, korisnik servisa, provajder Web servisi omogućavaju: Povezivanje različitih aplikacija, tehnologija i računarskih platformi 26.12.2006.
Predavanja 18
Pristup BP
• Specifičnosti pristupa BP iz različitih slojeva – Pristup podacima iz prezentacionog sloja – Pristup podacima iz sloja poslovne logike – Pristup iz sloja podataka 26.12.2006.
Predavanja 19
Pristupa BP - Prezentacioni sloj
• • Prezentacioni sloj sadrži objekte koriničkog interfejsa Uokvireni prozori sa naslovnom linijom koji sadrže kontrole za interakciju sa korisnikom 26.12.2006.
Predavanja 20
Pristupa BP - Prezentacioni sloj -
26.12.2006.
Predavanja 21
Pristupa BP - Prezentacioni sloj -
1:Private Sub Form_Close() 2:
DoCmd.RunSQL "UPDATE KolicineSred SET [KOLIC] =
3:
Forms![TSredstva]![RecSum] WHERE KolicineSred.ID_BR =
4:
Forms![TSredstva]![ID_BR] AND
5:
KolicineSred.SifDug=Forms![TSredstva]![SifDug];"
6:End Sub 26.12.2006.
VBA skripta koja sadrži SQL naredbu Predavanja 22
Pristupa BP - Prezentacioni sloj -
26.12.2006.
Predavanja 23
Pristupa BP - Prezentacioni sloj -
26.12.2006.
Predavanja 24
- Prezentacioni sloj -
1: 2:
3: <% 4: set conn=Server.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: sql=sql & " VALUES “ 9: sql=sql & "('" & Request.Form("firma") & "',“ 10: sql=sql & "'" & Request.Form("adresa") & "',“ 11: sql=sql & "'" & Request.Form("postkod") & "')“ 12: on error resume next 13: conn.Execute sql,recaffected 14: if err<>0 then 15: Response.Write("Nemate prava na dodavanje podataka!") 16: else 17: Response.Write("Klijent " & Request.Form("firma") 18: & " je dodat
") 19: end if 20: conn.close21: %> 22: 23: 26.12.2006.
Active Server Pages ) stranice 25
Pristupa BP - Prezentacioni sloj -
1:
2: 3:
SELECT * FROM moja_tabela
4: 6: 9: 13: 11:
Predavanja 26
Pristupa BP - Prezentacioni sloj -
1: mysql_connect("biblioteka.snemanja.net:3617",$username,$password); 2: @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: $i=0; 7: while ($i < $num) { 8: $naslov = mysql_result($result,$i,"naslov"); 9: $autor = mysql_result($result,$i,"autor"); 10: $i++; 11: } Predavanja Pristupanje BP iz PHP stranice 27 26.12.2006.
Pristup BP - sloj poslovne logike -
• • • Najčešće korišćen pristup kod višeslojnih aplikacija • Entiteti (klase ili moduli) zaduženi za komunikciju sa BP • Uslužne klase koje omogućavaju interakciju sa BP
CDatabase, CRecordset ResultSet, Connection java.sql.*
klase iz Microsoft (MFC) klase u Java-inom paketu 26.12.2006.
Predavanja 28
Pristup BP - sloj poslovne logike -
26.12.2006.
Predavanja 29
Pristup BP - sloj poslovne logike 26.12.2006.
C++ kod koji preuzima nazive proizvoda iz tabele u BP i dodaje ih u listu proizvoda u korisničkom interfejsu Predavanja 30
Pristup BP - sloj poslovne logike 26.12.2006.
Java kod koji u tabelu t_mtutor_groups dodaje novi zapis (novi naziv grupe) u BP Predavanja 31
Pristup BP - sloj podataka •
Izmeštanje
SQL naredbi iz izvornog koda aplikacije u SUBP 26.12.2006.
Predavanja 32
Pristup BP - sloj podataka • Ugnježdene procedure (
stored procedures
) – Skupovi instrukcija koje se često koriste – Njihovom upotrebom programeri se oslobađaju višestrukih pozivanja istih komandi – Najbrže se izvršavaju jer se proces prevođenja 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 26.12.2006.
Predavanja 33
Pristup BP - sloj podataka • Ugnježdene procedure (
stored procedures
) – Kada se izvrši procedura, samo rezultat obrade se šalje ka sledećem sloju • Najmanje opterećenje mreže, poboljšanje performansi – Procedurama se mogu prosleđivati parametri i promenljive – Procedure se mogu pozivati i iz drugih procedura • Najčešće se pišu u nekom od proširenja jezika SQL koje definiše proizvođač konkretnog DBMS – Oracle – PL/SQL – Microsoft SQL Server – Tansact-SQL 26.12.2006.
Predavanja 34
Pristup BP - sloj podataka • Preduslov - SUBP mora da poseduje mogućnosti kreiranja procedura • SQL naredbe se
ugnježdavaju
(
stored procedure
) u ciljnu BP kao procedure
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;
26.12.2006.
Predavanja 35
Pristup 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: }
26.12.2006.
Predavanja 36
Pristup BP - sloj podataka • Trigeri, okidači (
triggers
) – Programska procedura u okviru SUBP, koja se aktivira određenim događajem: • upis novog zapisa u tabelu • brisanje određenog zapisa • modifikacija postojećeg zapisa • Triger predstavlja jedan od mehanizama za proveru uslova integriteta baze podataka – Npr. Pre upisa u tabelu dobavljač-artikal proveriti da li dobavljač dobavlja dati proizvod 26.12.2006.
Predavanja 37
Pristup BP - sloj podataka • Trigeri, okidači (
triggers
) – Triger pokreće određenu aktivnost nad bazom, uvek kada se desi jedan od navedenih događaja – Tačnije rečeno, SUBP inicira izvršenje okidača, odmah po nastajanju događaja – Rad okidača je van kontrole aplikativnog programa koji je vezan na SUBP, a obavezno se izvršava 26.12.2006.
Predavanja 38
Pristup BP - sloj podataka • Trigeri, okidači (
triggers
) – Sintaksa trigera je sledeća: • 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 26.12.2006.
Predavanja 39
Pristup BP - sloj podataka • Trigeri, okidači (
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 26.12.2006.
Predavanja 40
Razmena podataka između BP i aplikacija • Tehnologije koje omogućavaju razmenu podataka između BP i aplikacija ODBC – DAO (
Data Access Objects
) – ADO – JDBC 26.12.2006.
Predavanja 41
Razmena podataka između 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 čemu se otvara administatorski dijalog prozor 26.12.2006.
Predavanja 42
Razmena podataka između BP i aplikacija - ODBC Dodavanje novog ODBC veznika 43 26.12.2006.
Predavanja
Razmena podataka između BP i aplikacija - ODBC Izbor ODBC drajvera 26.12.2006.
Predavanja 44
26.12.2006.
Razmena podataka između BP i aplikacija - ODBC Zadavanje imena ODBC izvora podataka Izbor BP 45 Predavanja
Razmena podataka između BP i aplikacija - ODBC 26.12.2006.
Predavanja Izbor BP 46
Razmena podataka između 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 26.12.2006.
Predavanja 47
Razmena podataka između BP i aplikacija - DAO • Automatizacija – potpuna nezavisnost objekata aplikacije od prezentacije podataka u ciljnoj BP • Potpunija kontrola i jednostavniji pristup svim entitetima u SUBP • Različiti DAO paketi i biblioteke 26.12.2006.
Predavanja 48
Razmena podataka između BP i aplikacija - DAO • Svi objekti u SUBP su
obavijeni
odgovarajućim aplikacionim objektima: – SUBP – BP • Tabele – Polja – indeksi • Upiti • ...
– Grupe – Korisnici 26.12.2006.
Predavanja 49
Razmena podataka između 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: 4: 5: 6: “SELECT * FROM t_masters WHERE status = 0 ”): while (!ms.IsEOF()){ fillCombo(ms.m_sUserName); ms.MoveNext(); 7: } 7: }catch(CDaoException* pe){..;}
26.12.2006.
Predavanja 50
Razmena podataka između BP i aplikacija - DAO 26.12.2006.
DAO u Web okruženju Predavanja 51
Razmena podataka između 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šćavanja pristupa podacima 26.12.2006.
Predavanja 52
Razmena podataka između BP i aplikacija • JDBC (Java DB Connectivity) 26.12.2006.
Predavanja 53
Razmena podataka između BP i aplikacija - JDBC • Posredstvom JDBC-a je moguće dobiti informacije o: – strukturi baze podataka i njenih tabela • Posredstvom klase
DatabaseMetaData
moguće dobiti informacije o strukturi baze je 26.12.2006.
Predavanja 54
Razmena podataka između BP i aplikacija - JDBC • Moguće je dobiti detaljne informacije o: – tabelama, – ograničenjima, – uskladištenim procedurama, – user-ima, – JDBC drajveru pomoću kojega je uspostavljena konekcija...
26.12.2006.
Predavanja 55
Razmena podataka između 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...
26.12.2006.
Predavanja 56
Razmena podataka između BP i aplikacija - JDBC • Ova klasa takođe poseduje veliki broj metoda od kojih su najvažnije: –
int getColumnCount()
–
vraća broj kolona –
String getColumnLabel(int i)
–
vraća – naziv i-te kolone
int getColumnType(int i)
–
vraća tip i te kolone 26.12.2006.
Predavanja 57