50
Baze podataka i aplikacije

Baze podataka i aplikacije

  • Upload
    amora

  • View
    71

  • Download
    0

Embed Size (px)

DESCRIPTION

Baze podataka i aplikacije. Uvod. Klijent server arhitektura SUBP – serverska strana Aplikacija koja koristi BP – klijentska strana. Integrisana okruženja. Klijent i server su jedno Primer Access-a i MS JetDB Sve je u jednom fajlu Platformska zavisnost. Integrisana okruženja. - PowerPoint PPT Presentation

Citation preview

Page 1: Baze podataka  i aplikacije

Baze podataka i aplikacije

Page 2: Baze podataka  i aplikacije

Uvod

Klijent server arhitektura SUBP – serverska strana Aplikacija koja koristi BP – klijentska strana

Uspostavakonekcije

Zahtev za servisomDavanjeservisaRaskid

konekcije

2

Page 3: Baze podataka  i aplikacije

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

3

Page 4: Baze podataka  i aplikacije

JetDB engineAccess

Forms

Reports

Queries

Modules

4

Integrisana okruženja

Page 5: Baze podataka  i aplikacije

JetDB engineAccess

Forms

Reports

Queries

Modules

5

Integrisana okruženja

Page 6: Baze podataka  i aplikacije

JetDB engineAccess

Forms

Reports

Queries

Modules

6

Integrisana okruženja

Page 7: Baze podataka  i aplikacije

JetDB engineAccess

Forms

Reports

Queries

Modules

7

Integrisana okruženja

Page 8: Baze podataka  i aplikacije

Raslojavanje po potrebi

8

Integrisana okruženja

Page 9: Baze podataka  i aplikacije

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

9

Slojevita struktura aplikacija

Page 10: Baze podataka  i aplikacije

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

Page 11: Baze podataka  i aplikacije

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

11

Slojevita struktura aplikacija

Page 12: Baze podataka  i aplikacije

Osnovni aplikacioni model je troslojni model◦ Prezentcioni sloj (presentation layer)◦ Sloj poslovne logike (buisness logic layer)◦ Sloj podataka (data layer)

12

Slojevita struktura aplikacija

Page 13: Baze podataka  i aplikacije

13

Slojevita struktura aplikacija

Page 14: Baze podataka  i aplikacije

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

14

Slojevita struktura aplikacija

Page 15: Baze podataka  i aplikacije

15

Slojevita struktura aplikacija

Page 16: Baze podataka  i aplikacije

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

16

Slojevita struktura aplikacija

Page 17: Baze podataka  i aplikacije

17

Slojevita struktura aplikacija

Tri komponente Web servisa:Davalac servisa, korisnik servisa, provajderWeb servisi omogućavaju:Povezivanje različitih aplikacija, tehnologija i računarskih platformi

Page 18: Baze podataka  i aplikacije

Specifičnosti pristupa BP iz različitih slojeva◦ Pristup podacima iz prezentacionog sloja◦ Pristup podacima iz sloja poslovne logike◦ Pristup iz sloja podataka

18

Pristup BP

Page 19: Baze podataka  i aplikacije

Prezentacioni sloj sadrži objekte koriničkog interfejsa

Uokvireni prozori sa naslovnom linijom koji sadrže kontrole za interakciju sa korisnikom

19

Pristupa BP - Prezentacioni sloj -

Page 20: Baze podataka  i aplikacije

20

Pristupa BP - Prezentacioni sloj -

Page 21: Baze podataka  i aplikacije

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

21

VBA skripta koja sadrži SQL naredbu

Page 22: Baze podataka  i aplikacije

22

Pristupa BP - Prezentacioni sloj -

Page 23: Baze podataka  i aplikacije

Pristupa BP - Prezentacioni sloj -

23

Page 24: Baze podataka  i aplikacije

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

24

Pristup BP iz ASP (Active Server Pages) stranice

Page 25: Baze podataka  i aplikacije

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>

25

Posebno dizajnirani tag-ovi za pristupanje BP iz prezentacionog sloja

Page 26: Baze podataka  i aplikacije

Pristupa BP - Prezentacioni sloj -

1: mysql_connect(“localhost",$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

Pristupanje BP iz PHP stranice

Page 27: Baze podataka  i aplikacije

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

27

Pristup BP - sloj poslovne logike -

Page 28: Baze podataka  i aplikacije

28

Pristup BP - sloj poslovne logike -

Page 29: Baze podataka  i aplikacije

29

Pristup BP - sloj poslovne logike -

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

Page 30: Baze podataka  i aplikacije

30

Pristup BP - sloj poslovne logike -

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

Page 31: Baze podataka  i aplikacije

Pristup BP - sloj podataka -

Izmeštanje SQL naredbi iz izvornog koda aplikacije u SUBP

31

Page 32: Baze podataka  i aplikacije

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

32

Page 33: Baze podataka  i aplikacije

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

33

Page 34: Baze podataka  i aplikacije

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;

34

Page 35: Baze podataka  i aplikacije

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

35

Page 36: Baze podataka  i aplikacije

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 proizvod36

Page 37: Baze podataka  i aplikacije

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

37

Page 38: Baze podataka  i aplikacije

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

38

Page 39: Baze podataka  i aplikacije

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

39

Page 40: Baze podataka  i aplikacije

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

40

Page 41: Baze podataka  i aplikacije

Razmena podataka između BP i aplikacija- ODBC -

41

Dodavanje novogODBC veznika

Page 42: Baze podataka  i aplikacije

Razmena podataka između BP i aplikacija- ODBC -

42

Izbor ODBC drajvera

Page 43: Baze podataka  i aplikacije

Razmena podataka između BP i aplikacija- ODBC -

43

Zadavanje imenaODBC izvora podataka

Izbor BP

Page 44: Baze podataka  i aplikacije

Razmena podataka između BP i aplikacija- ODBC -

44

Izbor BP

Page 45: Baze podataka  i aplikacije

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

45

Naziv ODBC-a

Naziv tabele

Povezivanje polja u tabeli sapodacima u brokerskoj klasi

Page 46: Baze podataka  i aplikacije

Razmena podataka između BP i aplikacija

JDBC (Java DB Connectivity)

46

Page 47: Baze podataka  i aplikacije

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

47

Page 48: Baze podataka  i aplikacije

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

48

Page 49: Baze podataka  i aplikacije

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

49

Page 50: Baze podataka  i aplikacije

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

50