Baze podataka i aplikacije

Download Report

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.close

21: %> 22: 23: 26.12.2006.

Active Server Pages ) stranice 25

Pristupa BP - Prezentacioni sloj -

1:

2: 3:

SELECT * FROM moja_tabela

4: 5: 6: 7: 8: 9: 10: 11: 12: 13: Posebno dizajnirani tag-ovi za pristupanje BP iz prezentacionog sloja 26.12.2006.

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