13.07.2015 Views

Distribuirane i objektne baze podataka - Ncd.matf.bg.ac.rs ...

Distribuirane i objektne baze podataka - Ncd.matf.bg.ac.rs ...

Distribuirane i objektne baze podataka - Ncd.matf.bg.ac.rs ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Distribuirane</strong> i <strong>objektne</strong> <strong>baze</strong> <strong>podataka</strong>vežbe, školska 2009/10Univerzitet u Beogradu, Matematički fakultetBiljana Stojanović1


Povezivanje sa više bazaDvofazni COMMITčas 052novembar 2009, Matematički fakultet, Biljana Stojanović


Naredba CONNECT Za uspostavljanje konekcije između procesa aplik<strong>ac</strong>ije i<strong>baze</strong> koriste se dva tipa naredbe CONNECT: CONNECT (tip 1) – povezivanje sa jednom bazom u okvirujedne transakcije (Remote Unit Of Work - RUOW) CONNECT (tip 2) – povezivanje sa više baza u okviru jednetransakcije (Application-Directed Distributed Unit Of Work -DUOW) Ugrađeni SQL podržava konkurentne transakcije, štoomogućava višestruke konekcije, pri čemu je svaka od njihnezavisna transakcija. Jedna aplik<strong>ac</strong>ija može imati više konkurentnih konekcija saistom bazom.3novembar 2009, Matematički fakultet, Biljana Stojanović


Remote unit of work Primer: Proces aplik<strong>ac</strong>ije na računa<strong>rs</strong>kom sistemu A može da sepoveže sa bazom na istom ili nekom drugom sistemu B. U okviru jedne ili više transakcija vrši se proizvoljan brojSQL naredbi nad objektima <strong>baze</strong>. Nakon završetka transakcije, proces može da se povežesa bazom na istom ili nekom drugom sistemu C itd. Restrikcije u odnosu na SQL naredbe: svi objekti referisani u jednoj SQL naredbi moraju biti podupravom jednom servera aplik<strong>ac</strong>ije. sve SQL naredbe u okviru transakcije moraju biti izvršene odstrane jednog servera aplik<strong>ac</strong>ije.4novembar 2009, Matematički fakultet, Biljana Stojanović


2. Connectable and connected Proces je povezan sa serverom (connected) i CONNECTnaredbe mogu biti izvršene u nastavku (connectable). Ako je omogućen implicitni CONNECT, u ovo stanje se dolazi:iz stanja connectable and unconnected nakon CONNECT TO iliCONNECTiz stanja implicitly connectable nakon bilo koje naredbe različite od:CONNECT RESET, DISCONNECT, SET CONNECTION iliRELEASE. Bilo da je omogućeno implicitno povezivanje ili ne, u ovo stanjese prelazi:iz stanja connectable and unconnected nakon CONNECT TOnakon COMMIT ili ROLLBACK ili nakon prinudnog ROLLBACK-a ustanju connected and unconnectable8novembar 2009, Matematički fakultet, Biljana Stojanović


3. Unconnectable and connected Proces je povezan sa bazom, ali se ne može uspešnoizvršiti naredba CONNECT kako bi se izvršilopovezivanje sa drugom bazom. Proces dolazi u ovo stanje iz stanja connectable andconnected ako se izvrši bilo koja naredba različita od:CONNECT TO, CONNECT, CONNECT RESET,DISCONNECT, SET CONNECTION, RELEASE,COMMIT ili ROLLBACK.9novembar 2009, Matematički fakultet, Biljana Stojanović


Ovakve transakcije koriste CONNECT tipa 2. Procesi koji koriste konekcije tipa 2: su uvek connectable ili su u stanju connected ili u stanju unconnected imaju nula ili više konekcija Svaka konekcija je jednoznačno identifikovana. Proces je inicijalno u stanju unconnected i nema ni jednukonekciju. Konekcija je inicijalno u current and held stanju (videtinarednu stranu).13novembar 2009, Matematički fakultet, Biljana Stojanović


Pravila za izvršavanje naredbe CONNECT Kontekst ne može da obuhvata više od jedne konekcije saistom bazom u isto vreme. Kada proces izvrši SET CONNECTION naredbu,navedeno ime lok<strong>ac</strong>ije mora da se odnosi na postojećukonekciju za dati proces. Kada proces izvrši CONNECT naredbu i opcijaSQLRULES(STD) je uključena, navedeno ime ne sme bitineka od postojećih konekcija za taj proces.15novembar 2009, Matematički fakultet, Biljana Stojanović


Tipovi stanja konekcije held and release-pending current and dormant Ako proces izvrši naredbu CONNECT, a ime <strong>baze</strong> nije uskupu postojećih konekcija: tekuća konekcija prelazi u stanje dormant, ime <strong>baze</strong> se dodajeskupu konekcija, dok nova konekcija prelazi u stanje current i ustanje held. Ako je ime <strong>baze</strong> već u skupu postojećih konekcija i opcijapreprocesora SQLRULES(STD) je uključena, generiše segreška.17novembar 2009, Matematički fakultet, Biljana Stojanović


Stanja held i release-pending Release-pending znači da će se u narednoj uspešnopotvrđenoj oper<strong>ac</strong>iji javiti DISCONNECT (rollb<strong>ac</strong>k nemauticaja na konekciju). Held znači da se u narednoj uspešno potvrđenoj oper<strong>ac</strong>ijineće javiti DISCONNECT. Sve konekcije su inicijalno u held stanju. Naredbom RELEASE prelazi se u stanje release-pending. Iz stanja release-pending ne može se vratiti u stanje held. Konekcija ostaje u release-pending stanju tokomtransakcije ako se izvrši ROLLBACK ili ako se usledneuspešne COMMIT oper<strong>ac</strong>ije, zapravo izvršiROLLBACK.18novembar 2009, Matematički fakultet, Biljana Stojanović


Stanja current i dormant Konekcija koja je u held ili release-pending stanju može bitii u stanju current ili dormant. Current konekcija je konekcija koja se koristi za izvršenjeSQL naredbi dok je u ovom stanju. Konekcija u dormant stanju nije tekuća (current). Za dormant konekcije dozvoljene su naredbe: COMMIT,ROLLBACK, DISCONNECT ili RELEASE. SET CONNECTION ili CONNECT – konekcija sanavedenom bazom prelazi u stanje current, ostalekonekcije prelaze ili ostaju u stanju dormant. U svakom trenutku, samo jedna konekcija može bititekuća.19novembar 2009, Matematički fakultet, Biljana Stojanović


Opcije preprocesora koje se koriste sanaredbom CONNECT tipa 2 Podrazumevane vrednosti opcija su podvučene. CONNECT (1 | 2) SQLRULES(DB2 | STD)DB2 – connect tipa 2 se vrši po DB2 pravilima koja omogućavajuprelazak konekcije u stanje dormantSTD – connect tipa 2 se vrši po pravilima SQL92 Standarda koji nedopušta prelazak konekcije u stanje dormant DISCONNECT (EXPLICIT | CONDITIONAL | AUTOMATIC)EXPLICIT – raskidaju se one konekcije koje su eksplicitno obeleženeza oslobađanje komandom SQL RELEASECONDITIONAL – raskidaju se one konekcije koje nemaju otvoreneWITH HOLD ku<strong>rs</strong>ore i one koje su selektovane za oslobađanjeAUTOMATIC – raskidaju se sve konekcije20novembar 2009, Matematički fakultet, Biljana Stojanović


SYNCPOINT (ONEPHASE | TWOPHASE | NONE) Specifikuje kako se vrši koordin<strong>ac</strong>ija COMMIT iliROLLBACK naredbi kada postoje višestruke konekcije. Samo se jedna baza u okviru transakcije može ažurirati,sve ostale mogu samo da se čitaju (ONEPHASE). Bilo kojipokušaj menjanja neke druge <strong>baze</strong> generiše grešku. Upravljač transakcijama (TM) u vreme izvršavanja vršikoordin<strong>ac</strong>iju dvofaznih COMMIT naredbi između onihbaza koje podržavaju ovaj protokol (TWOPHASE). Ne koristiti TM za izvršenje dvofaznih COMMIT naredbi ine primenjivati ažuriranje jedne, a čitanje više baza (singleupdater, multiple reader) (NONE).21novembar 2009, Matematički fakultet, Biljana Stojanović


Pojedinačne COMMIT (ROLLBACK) naredbe seprosleđuju svim bazama. Ako jedna ili više ROLLBACK naredbi ne uspe, generišese greška, slično za COMMIT. Da bi se u vreme izvršavanja postavile neke drugevrednosti parametara, koristi se komanda SET CLIENT ilisqlesetc API. Komanda QUERY CLIENT (ili sqleqryc API) vraća tekućevrednosti opcija preprocesora.22novembar 2009, Matematički fakultet, Biljana Stojanović


sqleqryc - Query client connection settings Vraća parametre podešavanja tekuće konekcije procesaaplik<strong>ac</strong>ije. Struktura sqle_conn_setting sadrži tipove i vrednostiparametara podešavanja konekcije. Neophodno je uključiti API zaglavlje sqlenv.h sqleqryc (struct sqle_conn_setting * pConnectionSettings,unsigned short NumSettings,struct sqlca * pSqlca);23novembar 2009, Matematički fakultet, Biljana Stojanović


Parametri pri pozivu sqlecryc API-ja pConnectionSettings – ulazno/izlazni parameter. Pokazivačna sqle_conn_setting strukturu, koja specifikuje tipove ivrednosti parametara podešavanja koja se odnose nakonekciju. Korisnik definiše niz od numSettings elemenatatipa sqle_conn_settings. Polje type se postavlja na jednu od5 mogućih opcija za podešavanje parametara konekcije.Nakon poziva API-ja, polje value svakog elementa sadržitekuće podešavanje navedene opcije. numSettings – ulazni parametar. Bilo koji ceo broj (od 0 do7) koji predstavlja broj vrednosti opcija konekcije koje sevraćaju. pSqlca – izlazni parametar. Pokazivač na sqlca strukturu.24novembar 2009, Matematički fakultet, Biljana Stojanović


sqleqryc U bilo kom trenutku izvršavanja procesa aplik<strong>ac</strong>ije možese zatražiti inform<strong>ac</strong>ija o tekućim parametrimapodešavanjima konekcije. Ukoliko QUERY CLIENT prođe uspešno, polja usqle_conn_setting strukturi će sadržati tekuće parametrepodešavanja konekcije. Ako do tada nije pozivana naredba SET CLIENT, ovastruktura će sadržati podešavanja iz faze preprocesiranja,samo ako je već procesirana bar jedna SQL naredba;inače, sadržaće podrazumevane vrednosti opcijapreprocesora.25novembar 2009, Matematički fakultet, Biljana Stojanović


sqlesetc - Set client connection settings Postavljaju se parametri podešavanja konekcije, koristećistrukturu sqle_conn_setting. Neophodno je uključiti zaglavlje sqlenv.h sqlesetc ( struct sqle_conn_setting * pConnectionSettings,unsigned short NumSettings,struct sqlca * pSqlca); pConnectionSettings – ulazni parametar. Pokazivač na strukturusqle_conn_settings. Alocira se niz od NumSettingssqle_conn_setting struktura. Polje type svake strukture sepostavlja na odgovarajuću opciju konekcije. Polje value sepostavlja na željenu vrednost te opcije. NumSetting – ceo broj (od 0 do 7) koji predstavlja broj opcijakonekcije koje treba da se postave na odgovarajuće vrednosti pSqlca – izlazni parametar. Pokazivač na strukturu sqlca.26novembar 2009, Matematički fakultet, Biljana Stojanović


Upravljač transakcijama (TM) Upravljač transakcijama dodeljuje identifikatoretransakcijama, kontroliše njihov rad i preuzimaodgovornost za uspešan završetak rada transakcija ilipojavu problema. Upravljač transakcijama čuva inform<strong>ac</strong>ijeo transakcijama u posebnoj bazi (baza upravljačatransakcijama). SUBP obezbeđuje funkcionalnost upravljača transakcijamakoja može da obezbedi koordin<strong>ac</strong>iju promena na više bazaunutar jedne transakcije. Klijentska aplik<strong>ac</strong>ija koristi bazu upravljača transakcijamaza registrovanje svake transakcije i praćenje njihovogizvršavanja.32novembar 2009, Matematički fakultet, Biljana Stojanović


0 - aplik<strong>ac</strong>ija je pripremljena za dvofazni commit. To se može postićipreko opcija preprocesora.1 - klijent želi da se poveže sa bazom SAVINGS_DB.Prvo se interno povezuje sa bazom upravljača transakcija.Baza upravljača transakcija vraća potvrdu klijentu.Ako je konfigur<strong>ac</strong>ioni parameter SUBP-a tm_database postavljen na1ST_CONN, SAVINGS_DB postaje baza upravljača transakcijamadok traje proces aplik<strong>ac</strong>ije.2 - uspostavlja se konekcija sa bazom SAVINGS_DB i dobija sepotvrda.3 - update tabele SAVINGS_ACCOUT, čime počinje transakcija.Baza upravljača transakcijama odgovara klijentu prosleđujući ID zadatu transakciju.Napomena: registr<strong>ac</strong>ija transakcije se vrši kada se pokrene prva SQLnaredba u transakciji, ne za vreme uspostavljanja konekcije.34novembar 2009, Matematički fakultet, Biljana Stojanović


5 - izvršavanje SQL naredbi nad bazom SAVINGS_DB. 6 - registr<strong>ac</strong>ija ID-a transakcije nad bazom FEE_DB koja sadržitabelu TRANSACTION_FEE, kada se vrši prvi pristup bazi uokviru transakcije. 7 - izvršavanje SQL naredbi nad bazom FEE_DB 8 - mogu se dodatne SQL naredbe izvršiti nad bazomSAVINGS_DB aktiviranjem konekcije. Kako je transakcija većregistrovana u koraku 4, nema potrebe vršiti registr<strong>ac</strong>ijuponovo. 9 - povezivanje i rad sa bazom CHECKING_DB vrši se na istinačin kao u kor<strong>ac</strong>ima 6 i 7. 10 - kada klijent zahteva commit transakcije, prepare porukase šalje svim bazama koje učestvuju u transakciji. Svaka bazaupisuje "PREPARED" slog u svoj log fajl i šalje odgovor klijentu.35novembar 2009, Matematički fakultet, Biljana Stojanović


11 - nakon što klijent primi pozitivne odgovore od svih baza,on šalje poruku bazi upravljača transakcijama, infomrišući je daje transakcija spremna za commit (PREPARED). Baza upravljačatransakcijama upisuje "PREPARED" slog u svoj log fajl i šaljeodgovor klijentu da druga faza commit oper<strong>ac</strong>ije može dapočne. 12 - tokom druge faze commit-a, klijent šalje poruku svimbazama da treba da izvrše commit. Svaka baza upisuje"COMMITTED" slog u svoj log fajl i oslobađa ključeve koji subili postavaljeni tokom transakcije. Kada baza završipotvrđivanje promena, šalje odgovor klijentu. 13 - nakon što klijent dobije pozitivan odgovor od svih baza,on šalje poruku bazi upravljača transakcijama, informišući je daje transakcija završena. Baza upravljača transakcijama upisuje"COMMITTED" slog u svoj log fajl, čime se naglašava da jetransakcija završena i obaveštava klijenta o završetku.36novembar 2009, Matematički fakultet, Biljana Stojanović


Korišćena literatura DB2 9.7 documentation: Database Administration Concepts and ConfigurationReference (pdf) Administrative API Reference (pdf) SQL Reference Vol.2 (pdf)37novembar 2009, Matematički fakultet, Biljana Stojanović

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!