Baze podataka i aplikacije

Preview:

DESCRIPTION

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. Uvod. Klijent server arhitektura - PowerPoint PPT Presentation

Citation preview

Baze podataka i aplikacije

Baze podatakaBaze podataka

Lekcija 13Lekcija 13

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

Uspostavakonekcije

Zahtev za servisomDavanjeservisa

Raskidkonekcije

26.12.2006. Predavanja 3

Integrisana okruženja

• Klijent i server su jedno• Primer Access-a i MS JetDB• Sve je u jednom fajlu • Platformska zavisnost

JetDB engineAccess

Forms

Reports

Queries

Modules

26.12.2006. Predavanja 4

Integrisana okruženja

JetDB engineAccess

Forms

Reports

Queries

Modules

26.12.2006. Predavanja 5

Integrisana okruženja

JetDB engineAccess

Forms

Reports

Queries

Modules

26.12.2006. Predavanja 6

Integrisana okruženja

JetDB engineAccess

Forms

Reports

Queries

Modules

26.12.2006. Predavanja 7

Integrisana okruženja

JetDB engineAccess

Forms

Reports

Queries

Modules

26.12.2006. Predavanja 8

Integrisana okruženja

• Raslojavanje po potrebi

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

26.12.2006. Predavanja 11

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

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 - (za prikazivanje podataka),

– 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

26.12.2006. Predavanja 18

Tri komponente Web servisa:Davalac servisa, korisnik servisa, provajder

Web servisi omogućavaju:Povezivanje različitih aplikacija, tehnologija i računarskih platformi

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. Predavanja 22

VBA skripta koja sadrži SQL naredbu

Pristupa BP - Prezentacioni sloj -

26.12.2006. Predavanja 23

Pristupa BP - Prezentacioni sloj -

26.12.2006. Predavanja 24

- Prezentacioni sloj -1: <html>2: <body>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 next13: conn.Execute sql,recaffected14: if err<>0 then15: Response.Write("Nemate prava na dodavanje podataka!")16: else 17: Response.Write("<h3>Klijent " & Request.Form("firma") 18: & " je dodat</h3>")19: end if20: conn.close21: %>22: </body>23: </html>26.12.2006. Predavanja 25Pristup BP iz ASP (Active Server Pages) stranice

Pristupa BP - Prezentacioni sloj -

1: <sql:query var="upit1">2: SELECT * FROM moja_tabela3: </sql:query>4: <c:forEach var="naziv_polja" items="${upit1.columnNames}">5: <th><c:out value="${naziv_polja}"/></th>6: </c:forEach>7: <c:forEach var="red" items="${upit1.rows}">8: <tr>9: <c:forEach var="kolona" items="${red}">10: <td><c:out value="${kolona.value}"/></td>11: </c:forEach>12: </tr>13: </c:forEach>

26.12.2006. Predavanja 26

Posebno dizajnirani tag-ovi za pristupanje BP iz prezentacionog sloja

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: }

26.12.2006. Predavanja 27

Pristupanje BP iz PHP stranice

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 klase iz Microsoft (MFC) • ResultSet, Connection klase u Java-inom paketu

java.sql.*

26.12.2006. Predavanja 28

Pristup BP - sloj poslovne logike -

26.12.2006. Predavanja 29

Pristup BP - sloj poslovne logike -

26.12.2006. Predavanja 30

C++ kod koji preuzima nazive proizvoda iz tabele u BPi dodaje ih u listu proizvoda u korisničkom interfejsu

Pristup BP - sloj poslovne logike -

26.12.2006. Predavanja 31

Java kod koji u tabelu t_mtutor_groups u BPdodaje novi zapis (novi naziv grupe)

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 kao procedure (stored procedure) u ciljnu BP

1: CREATE PROCEDURE `spUsedTestSets`(IN u_id INTEGER(11))2: BEGIN3: 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 -

26.12.2006. Predavanja 43

Dodavanje novogODBC veznika

Razmena podataka između BP i aplikacija

- ODBC -

26.12.2006. Predavanja 44

Izbor ODBC drajvera

Razmena podataka između BP i aplikacija

- ODBC -

26.12.2006. Predavanja 45

Zadavanje imenaODBC izvora podataka

Izbor BP

Razmena podataka između BP i aplikacija

- ODBC -

26.12.2006. Predavanja 46

Izbor BP

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

26.12.2006. Predavanja 47

Naziv ODBC-a

Naziv tabele

Povezivanje polja u tabeli sapodacima u brokerskoj klasi

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){..;}

26.12.2006. Predavanja 50

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){..;}

Razmena podataka između BP i aplikacija

- DAO -

26.12.2006. Predavanja 51

DAO DAO u Web okruu Web okruženjuženju

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 je moguće dobiti informacije o strukturi baze

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