tehnologije distribuiranih baza podataka distributed ... rad mirko hrnjaz.pdf · distributed...

67
Univerzitet u Novom Sadu Tehnički fakultet ”Mihajlo Pupin” Zrenjanin Tehnologije distribuiranih baza podataka Distributed Databases Technologies -Master rad- Mentor: Doc. dr Ljubica Kazi Student: Mirko Hrnjaz, MIT 11/15 Informacione tehnologije - master Zrenjanin, 2017

Upload: others

Post on 08-Jan-2020

9 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

Univerzitet u Novom Sadu

Tehnički fakultet ”Mihajlo Pupin”

Zrenjanin

Tehnologije distribuiranih baza podataka

Distributed Databases Technologies

-Master rad-

Mentor:

Doc. dr Ljubica Kazi

Student:

Mirko Hrnjaz, MIT 11/15

Informacione tehnologije

- master

Zrenjanin, 2017

Page 2: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

1

Univerzitet u Novom Sadu

Tehnički fakultet ,,Mihajlo Pupin“ Zrenjanin

Ključna dokumentacijska informacija

Redni broj:

RBR

Identifikacioni broj:

IBR

Tip dokumentacije:

TD

Monografska dokumentacija

Tip zapisa:

TZ

Tekstualni štampani materijal

Vrsta rada (dipl.mag.dokt.):

VR

Master rad

Ime i prezime autora:

AU

Hrnjaz Mirko

Mentor (titula, ime, prezime, zvanje):

MN

Doc. dr Ljubica Kazi

Naslov rada:

NS

Tehnologije distriburanih baza podataka

Jezik publikacije:

JZ

Srpski

Jezik izvoda:

JI

Srpski/Engleski

Zemlja publikovanja:

ZP

Republika Srbija

Uže geografsko područje:

UGP

Zrenjanin, Vojvodina

Godina:

GO

2017.

Izdavač:

IZ

Autorski reprint

Mesto i adresa:

MS

Tehnički fakultet ''Mihajlo Pupin'', Đure

Đakovića bb

Zrenjanin

Page 3: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

2

Fizički opis rada:

FO

Broj poglavlja 7/ strana 67/ slika 13/ listinga

18/

Naučna oblast:

OB

Informacione tehnologije -master

Naučna disciplina:

ND

Distribuirani informacioni sistemi

Predmetna odrednica, ključne reči:

PO

Distribuirane baze podataka,

particionisanje,replikacija,transakcije,oporavak

baze podataka

UDK

Čuva se:

ČU

Biblioteka Tehničkog fakulteta »Mihajlo

Pupin« Zrenjanin

Važna napomena:

VN

Izvod:

IZ

U ovom radu opisane su tehnike koje se

primenjuju u okviru procesiranja

distribuiranih baza podataka, kao i podrška

sistema za upravljanje bazama podataka za

distribuirane baze podataka. Opisane su

osnovne tehnike: replikacija podataka,

particionisanje podataka, distribuirane

transakcije i oporavak baze podataka u

najčešče korišćenim sistemima za

upravljanje bazama podataka. U radu je

prikazan primer Turističke agencije u

okviru kog su realizovane navedene

tehnike. Primer je realizovan korišćenjem

Microsoft SQL Server Management

Studio, PHP MyAdmin (za rad sa MYSQL

bazom podataka) i programsko razvojno

okruženje Microsoft Visual Studio. Datum prihvatanja teme od strane NN veća:

DP

Datum odbrane:

DO

Članovi komisije:

ČK

Page 4: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

3

University of Novi Sad

Technical Faculty ,,Mihajlo Pupin“ Zrenjanin

Key word documentation

Accession number:

ANO

Identification number:

INO

Document type:

DT

Monograph documentation

Type of record:

TR

Textual printed material

Concents code:

CC

M.Sc.thesis

Author:

AU

Hrnjaz Mirko

Menthor:

MN

PhD Ljubica Kazi, assistant professor

Title:

TI

Distributed Databases Technologies

Language of text:

LT

Serbian

Language of abstract:

LA

eng./serb

Country of publication:

CP

Republic of Serbia

Locality od publication:

LP

Zrenjanin, Vojvodina

Publication year

PY

2017.

Publisher:

PU

The autor’s reprint

Publication place:

PP

Tehnical faculty '' Mihajlo Pupin'' Đure

Đakovića bb Zrenjanin

Page 5: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

4

Physical description:

PD

chapters7/ pages 67/ pictures 13/ lists of code

18/

Scientific field:

SF

Computer Science – M.Sc.

Scientific discipline:

SD

Distributed information systems

Subject, Key words:

SKW

Distributed

database,partitioning,replication,transactions,

recovery databases

UDC

Holding data:

HD

Library of Technical Faculty »Mihajlo Pupin«

Zrenjanin

Note:

N

Abstract:

AB

In this paper techniques are described that

are implemented in the context of

processing distributed databases, as well

as the support system for managing

databases for distributed databases. The

basic techniques are described such as:

data replication, data partitioning,

distributed transactions and recovery

database in the most commonly used

systems for managing databases. The

paper presents example of tourist agency

where are realized the listed techniques.

The example is realized using Microsoft

SQL Server Management Studio, PHP

MyAdmin (to work with the MySQL

database) and software development

environment Microsoft Visual Studio. Accepted on Scientific Board on:

AS

Defended:

DE

Thesis Defend Board:

DB

Page 6: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

5

Sadržaj

1. Metodološki okvir istraživanja ................................................................................. 8

1.1 Predmet i problem istraživanja........................................................................... 8

1.2 Vrsta istraživanja ................................................................................................ 8

1.3 Cilj i zadaci istraživanja ..................................................................................... 8

1.4 Hipoteza i podhipoteze ....................................................................................... 8

1.5 Očekivani rezultati ............................................................................................. 9

1.6 Metodološki postupak ........................................................................................ 9

2. Teorijsko istraživanje .............................................................................................. 10

2.1 Particionisanje podataka ................................................................................... 12

2.2 Replikacija baze podataka ................................................................................ 14

2.3 Distribuirane transakcije .................................................................................. 15

2.4 Oporavak baze podataka .................................................................................. 17

2.5 Upravljanje katalogom ..................................................................................... 18

2.6 Sinhronizacija podataka ................................................................................... 18

3. Stručno istraživanje ................................................................................................. 20

3.1 Elementi procesiranja distribuiranih baza podataka u najčešće korišćenim

DBMS ......................................................................................................................... 20

3.1.1 MySQL ..................................................................................................... 20

3.1.1.1 Replikacija podataka ......................................................................... 20

3.1.1.2 Particionisanje podataka .................................................................... 21

3.1.1.3 Distribuirane transakcije .................................................................... 21

3.1.1.4 Opravak baze podataka ...................................................................... 22

3.1.2 MSSQL ..................................................................................................... 22

3.1.2.1 Replikacija podataka ......................................................................... 22

3.1.2.2 Particionisanje podataka .................................................................... 23

3.1.2.3 Distribuirane transakcije .................................................................... 23

3.1.2.4 Oporavak baze podataka .................................................................... 23

3.1.3 Oracle ........................................................................................................ 24

3.1.3.1 Replikacija podataka ......................................................................... 24

3.1.3.2 Particionisanje podatka ...................................................................... 25

3.1.3.3 Distribuirane transakcije .................................................................... 26

3.1.3.4 Oporavak baze podataka .................................................................... 27

3.1.4 Sumarni pregled tehnika distribuiranih baza podataka u okviru najčešće

korišćenih sistema za upravljanje bazama podataka ............................................... 28

3.2 Posebni DBMS namenjeni za distribuirane baze podataka .............................. 28

3.2.1 Mariposa-distribuirani sistem baza podataka ........................................... 28

Page 7: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

6

3.3 Platforma za sihronizaciju podataka ................................................................ 29

3.3.1 Microsoft Synchronization Services ......................................................... 29

4. Rezultati naučno-stručnih istraživanja .................................................................... 31

4.1 Spanner - Guglova distribuirana baza podataka ............................................... 31

4.2 Transakcioni menadzment u R* DSUPB ......................................................... 33

4.3 Multibaza-integrisani heterogeni distribuirani sistem baza podataka .............. 34

4.4 Distriuirani i paralelni sistemi baza podataka .................................................. 36

5. Implementirano rešenje ........................................................................................... 38

5.1 Opis poslovnog konteksta ................................................................................ 38

5.2 Cilj i opis korišćenih tehnologija ..................................................................... 38

5.2.1 MS SQL Server ......................................................................................... 38

5.2.2 PHP My Admin ........................................................................................ 39

5.2.3 Microsoft Visual Studio 2010 ................................................................... 39

5.2.4 PowerDesigner .......................................................................................... 40

5.3 Modeli .............................................................................................................. 40

5.3.1 Business process model ............................................................................ 41

5.3.2 Use case model ......................................................................................... 41

5.3.3 Dijagram komponenti ............................................................................... 42

5.3.4 Dijagram razmeštaja ................................................................................. 42

5.4 Korisničko uputstvo ......................................................................................... 42

5.5 Opis implementacije ......................................................................................... 44

5.5.1 Šema baze podataka i SQL script za kreiranje baze podataka .................. 44

5.5.2 Delovi programskog koda sa objašnjenjima ............................................. 47

5.5.2.1 Opis osnovnih elemanta realizacije web aplikacije uz primenu tehnika

distribuiranih baza podataka ............................................................................... 47

5.5.2.2 Opsti deo za sve primere ................................................................... 48

5.5.2.3 Implementacija replikacije podataka ................................................. 49

5.5.2.4 Implementacija horizontalnog particionisanja .................................. 50

5.5.2.5 Implementacija vertikalnog particionisanja ...................................... 51

5.5.2.6 Implementacija distribuirane transakcije ........................................... 53

5.5.2.7 Implementacija oporavka baze podataka ........................................... 54

5.5.2.8 Korišćenje web servisa za konsultovanje udaljene baze podataka .... 57

5.5.2.9 Upiti nad više baza podataka ............................................................. 59

6. Zaključak ................................................................................................................ 62

7. Literatura ................................................................................................................. 63

Page 8: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

7

Apstrakt

U ovom radu opisane su tehnike koje se primenjuju u okviru procesiranja distribuiranih

baza podataka, kao i podrška sistema za upravljanje bazama podataka za distribuirane

baze podataka. Opisane su osnovne tehnike: replikacija podataka, particionisanje

podataka, distribuirane transakcije i oporavak baze podataka u najčešče korišćenim

sistemima za upravljanje bazama podataka. U radu je prikazan primer Turističke

agencije u okviru kog su realizovane navedene tehnike. Primer je realizovan

korišćenjem Microsoft SQL Server Management Studio, PHP MyAdmin (za rad sa

MYSQL bazom podataka) i programsko razvojno okruženje Microsoft Visual Studio.

Abstrakt

In this paper techniques are described that are implemented in the context of processing

distributed databases, as well as the support system for managing databases for

distributed database. The basic techniques are described such as: data replication, data

partitioning, distributed transactions and recovery database in the most commonly used

systems for managing databases. The paper presents example of tourist agency where

are realized the listed techniques. The example is realized using Microsoft SQL Server

Management Studio, PHP MyAdmin (to work with the MySQL database) and software

development environment Microsoft Visual Studio.

Page 9: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

8

1. Metodološki okvir istraživanja

1.1 Predmet i problem istraživanja

Predmet istraživanja predstavljaju različite tehnologije koje se koriste u radu sa

distribuiranim bazama podataka. Problem istraživanja je utvrditi načine implementacije

pojedinih karakterističnih postupaka u radu sa distribuiranim bazama podataka.

1.2 Vrsta istraživanja

U ovom radu predmet istraživanja je izučen sa teorijskog i empirijskog aspekta. U

teorijskom aspektu biće opisane osnovne definicije pojedinih tehnika u radu sa

distribuiranim bazama podataka. U empirijskom delu biće opisana postojeća stručna

rešenja i dat primer kojim se ilustruje primena pojedinačnih tehnika.

1.3 Cilj i zadaci istraživanja

Cilj istraživanja je prikaz elemenata tehnoloških rešenja koja se odnose na distribuirane

baze podataka, prvenstveno replikacija, particionisanje, transakcije i oporavak baze

podataka. Konkretni procesi će biti ilustrovani praktično realizovanim primerom.

1.4 Hipoteza i podhipoteze

Osnovna hipoteza:

U najčešće korišćenim sistemima za upravljanje bazama podataka podržane su

osnovne tehnike za rad sa distribuiranim bazama podataka.

Podhipoteze:

U najčešće korišćenim sistemima za upravljanje bazama podataka podržana je

tehnika rada sa replikacijom podataka.

U najčešće korišćenim sistemima za upravljanje bazama podataka podržana je

tehnika rada sa particionisanjem podataka.

U najčešće korišćenim sistemima za upravljanje bazama podataka podržana je

tehnika rada za oporavak baze podataka.

Page 10: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

9

U najčešće korišćenim sistemima za upravljanje bazama podataka podržana je

tehnika rada sa distribuiranim transakcijama.

1.5 Očekivani rezultati

Teorijski prikaz osnovnih koncepata,

Stručno-istraživački rezultati prikaza profesionalnih rešenja u oblasti najčešće

korišćenih sistema za upravljanje bazama podataka i podrške tehnikama rada sa

distribuiranim bazama podataka,

Naučno-istraživački rezultati prikaza aktuelnih istraživanja u oblasti tehnika rada

sa distribuiranim bazama podataka,

Realizovan primer softverske aplikacije (web aplikacije) koja koristi raličite

tehnike rada sa distribuiranim bazama podataka uz prikaz tehnoloških elemenata

prvenstveno replikacija, particionisanje, transakcije i oporavak baze podataka.

1.6 Metodološki postupak

1. Naučno-metodološko koncipiranje istraživanja

2. Teorijska istraživanja

3. Praktična implementacija tehnoloških elemenata

4. Sumiranje i dokumentovanje rezultata

Page 11: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

10

2. Teorijsko istraživanje

“Distribuirana baza podataka je kolekcija velikog broja, logički integrisanih baza,

distribuiranih preko određene heterogene računarske mreže. Sistem za upravljanje

distribuiranim bazama podataka je softver koji upravlja mehanizmom pristupa

distribuiranim bazama podataka i čini ga transparentnim za sve korisnike. To je više ili

manje spregnut multiprocesorski računarski sistem sa sinhronizovanom vremenskom

podelom zadataka.” [1]

“Distribuirani sistemi baza podataka imaju sledeće prednosti:

Veću pouzdanost: koja se ogleda u pravljenju kopija ili replika svih

komponenata baze. Greške se pri tome svode na minimum, jer prekinuta

komunikaciona veza ili elemenat obrade ne obara ceo sistem, podaci će se

preuzeti za nekog drugog mesta. Distribuirana obrada transakcija garantuje

doslednost baze podataka i konkurentnost.

Bolje perfomanse: zbog mogućnosti određivanja najkraćeg puta i najboljih

karakteristika mreže u datom trenutku, zbog takvog rasporeda podataka na

distribuiranim serverima baza, da se najčešće korišćeni fragmenti baze mogu

nalaziti u blizini klijenata koji ih potražuju. Na osnovu ovoga se smanjuju

kašnjenja odziva na upite baze sa nekog udaljenog mesta. Međutim, kako je već

napomenuto, to zahteva podršku za fragmentaciju i replikaciju. Veoma je

značajno, u zavisnosti od propusnosti mreže i vremena kašnjenja, pravilno

odabrati relacije i njihove fragmente koji će biti prenošeni sa jedne lokacije na

drugu u cilju obrade upita (globalna optimizacija).”[1]

“Jednostavni sistemski razvoj: omogućuju pojedinačni DBMS sistemi koji se

nalaze na svakoj lokaciji i mogu da rade nezavisno pri izvršavanju upita, jer

svaki nod lokalne baze podataka mora biti ravnopravan sa ostalim nodovima u

bazi i može se koristiti nezavisno od ostatka distribuiranog sistema. Ovo se

naziva lokalnom autonomijom svakog noda. Razvoj sistema prati globalni

katalog, kao sistemska baza podataka (ili njen deo), koji sadrži informacije o

raznim objektima u sistemu kao što su bazne tabele, pogledi, indeksi, baze

podataka, planovi izvršavanja upita, ovlašćenja za pristup objektima, itd. U

Page 12: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

11

slučaju distribuiranog sistema, katalog sadrži informacije o načinu i lokacijama

na koje su podaci razdeljeni i (eventualno) ponovljeni. Obično se u realizaciji

koristi kombinovan (katalog je particionisan, ali na jednoj lokaciji postoji

centralna kopija kompletnog kataloga).” [1]

“DSUBP treba da zadovolji sledeće osnovne principe distribucije:

1. Lokalna autonomija svakog čvora - U svakom čvoru lokalna baza podataka

može da se koristi kao da nije deo distribuirane baze,

2. Nepostojanja centralnog čvora distribuirane baze podataka - Svi čvorovi u

distribuiranoj bazi podataka su ravnopravni. Postojanje centralnog čvora u

velikoj meri bi degradiralo pouzdanost i raspoloživost distribuirane baze

podataka. Otkaz centralnog čvora doveo bi do otkaza celokupnog sistema,

3. Transparentnost distribucije, odnosno sakrivanje detalja distribucije od

korisnika. Korisnik treba da jednostavno koristi distribuiranu BP na isti način na

koji koristi i centralizovanu, bez znanja o tome kako je distribucija podataka

fizički izvedena.”[2]

“Podaci u distribuiranom sistemu mogu biti particionisani (eng. partitioned) ili

ponovljeni (eng. replicated), a mogu biti istovremeno i particionisani i ponovljeni. U

slučaju particionisanje podataka, baza je razdeljena na više disjunktnih delova od kojih

je svaki na drugom čvoru komunikacione mreže. Skup podataka sa logičkog nivoa treba

na neki način podeliti, a zatim te delove – fragmente raspodeliti po raznim lokacijama.

Najčešće primenjivana tehnika za očuvanje informacija pri fragmentaciji podataka je

uvodjenje sistemskih identifikatora n-torki (nametnuti ključevi) kao primarnih ključeva,

koji se pamte uz svaki deo pojedine n-torke i omogućuju njenu rekonstrukciju.

U slučaju ponavljanja podataka, jedan logički objekat može imati više fizičkih

reprezentacija (veći broj kopija) na većem broju lokacija. Ukoliko je na svakom od

čvorova fizička reprezentacija čitave baze onda je to distribuirani sistem sa potpuno

ponovljenim podacima, a inače je distribuirani sistem sa delimično ponovljenim

podacima. Prilikom izbora načina organizacije podataka u distribuiranom sistemu, teži

se smanjenju troškova čuvanja podataka, obrade transakcija kao i komunikacije medju

čvorovima.”[7]

Page 13: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

12

2.1 Particionisanje podataka

“Particionisanje se često primenjuje u cilju poboljšanja perfomansi, pristupačnosti,

pouzdanosti sistema. U distribuiranom sistemu podaci mogu biti ponovljeni (jedan

logički objekat može imati veći broj kopija na više različitih lokacija) ili particionisani

(logički skup podataka se deli na delove, a zatim se delovi smeštaju u odvojene lokacije,

sa proizvoljnim brojem ponovljenih kopija) u fizičkoj memoriji. Takva ponovljenost

podataka povećava njihovu raspoloživost i efikasnost pristupa podacima, ali u značajnoj

meri usložnjava ažuriranje podataka, koji moraju biti konzistentni u svim svojim

kopijama. Složenost koju sa sobom nosi strategija ponavljanja podataka, mora biti

sakrivena od korisnika. Kod particioniranja podataka, logički skup podatka u

relacionom sistemu je relacija, a prirodni fragment relacije (koji je opet relacija) jeste

neki njen podskup definisan uslovom projekcije i restrikcije. Fragmentacija mora biti

izvedena tako da se spajanjem fragmenata može dobiti polazna relacija.

Postoje dve vrste particionisanja:

Horizontalno,

Vertikalno. “[1]

“Horizontalno particionisanje je fragmentacija slogova i ona se najčešće koristi kod

jednostavnih upita. Iz tog razloga horizontalno particionisanje zovemo i intuitivnim.

Kod njega svaka lokacija bi trebalo da sadrži sve informacije koje se koriste prilikom

upita, dok bi informacije na lokaciji trebale biti fragmentisane kako bi odgovori na

upite bili brži. Horizontalno particionisanje je definisano kao selekcija operacija,

σp(R), što znači da su rezultati kompleksniji, odnosno da, kao za jednostavan upit po

svojoj prirodi ono nije u stanju da izvrši visoku selekciju potrebnih podataka, već

vraća veliku količinu podataka od kojih verovatno jedan deo nije od interesa za

korisnika. Prednost ovog načina selekcije je njegova brzina izvršenja a negativna

strana je cena izvršenja što se manifestuje velikim dotokom podataka na klijentsku

stranu.

Horizontalna fregmentacija može biti:

Primarna horizontana fregmentacija

o Kriterijum fragmentacije je predikat definisan upravo na

fregmentisanoj relaciji

Izvedena horizontalna fregmentacija

Page 14: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

13

o Kriterijum fregmentacije je predikat definisan na drugim

relacijama.”[1]

“Vertikalna fragmentacija je usmerena na particionisanje relacije u mnoštvo manjih

relacija tako da više aplikacija može biti pokrenuto na samo jednom fragmentu odnosno

definiše se na neki način paralelizam izvršavanja.Vertikalna fragmentacija relacije R

proizvodi fragmente R1, R2,..., od kojih svaki sadrži podskup osobina relacije R.

Definisana je korišćenjem operacije projekcije relacione algebre : ΠA1,A2,...An (R)

Ono što se odmah vidi je da je vertikalna fragmentacija neizostavno komplikovanija od

horizontalne fragmentacije. Kao prilog ovoj tvrdnji stoji matematički model koji kaže

da je:

u horizontalnom particionisanju: za n prostih predikata, broj mogućih

minterma 2n (neki od njih mogu biti nezadovoljavajući za upit ali je broj

neznatno manji)

u vertikalnom particionisanju: za m ne – primarnih ključnih atributa, broj

mogućih fragmenata je B(m) tj. broj particija sa m stanja B(m) ~ mm.

Važno je reći da optimalno rešenje ne postoji, tako da se primenjuju heuristička rešenja.

Ovde razlikujemo dva tipa:

Grupisanje: gde se svakom fragmentu pridružuje po jedna osobina, i na

svakom koraku, pridružuju se neki fragmenti dok se ne zadovolje

postavljeni kriterijumi (prilaz bottom-up)

Deljenje: gde se počinje sa relacijom i onda se donose odluke za

povoljno particionisanje, zasnovane na ponašanju pristupne aplikacije

prema osobinama (prilaz top-down).”[1]

Slika 1. Prikaz horizonalog i vertikalog particionisanja [1]

Page 15: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

14

2.2 Replikacija baze podataka

“Replikacija (engl. replication) je postupak kopiranja i distribuiranja podataka i objekata

iz jedne baze podataka u drugu koji sadrži mehanizam za sinhronizaciju podataka.”[6]

“Replikacija znači da na određenim lokacijama čuvamo više kopija relacija ili

relacionih fragmenata. Tada cela relacija može biti replicirana na više lokacija. Shodno

tome, jedan ili više fragmenata relacije može biti repliciran na više lokacija. Na primer,

ako je relacija P, fragmentisana na relacije P1, P2 i P3, može se predpostaviti da postoji

samo jedna kopija relacije P1, dok bi se P2 replicirala na dve lokacije a P3 replicirala na

svim lokacijama.“[1]

„Postoje dva razloga za primenu replike:

Povećana dostupnost podataka: Ako ”padne” lokacija koja sadrži replike,

možemo pristupiti istim sa drugih lokacija. Slično tome, ako su dostupne lokalne

kopije i sa udaljenih relacija, sistem je otporiniji na neuspeh komunikacione

veze.

Realizacija bržih upita: Upiti se mogu izvršiti brže koristeći lokalnu kopiju

relacije umesto da se upiti realizuju sa udaljenih lokacija.

Pravljenje replike baze podataka je veoma popularna tehnika distribucije podataka.

Znači, ona predstavlja kopiju master baze podataka koja se može ažurirati na različite

načine i treba biti locirana što bliže korisniku. Sinhronizacija master baze podataka sa

replikom se vrši slanjem inkrementalnog imidža sa replike (pri svakoj promeni baze ili

periodično). U ovom slučaju, primarna baza podataka se ne ažurira, već samo njena

kopija (replika). Kada se podaci ažuriraju čim je baza podataka modifikovana

korišćenjem 2PC protokola, govorimo o sinhronoj replici, a kada se podaci ažuriraju

posle nekog vremena radi se asinhronoj replici. Keširanje je dinamčka replika, jer se

privremeno (dinamički) stvara kopija baze podataka ili njenog dela. Primena ovakvog

sistema repliciranja podataka poboljšava performanse sistema naročito ako se jednom

referisani podaci ponovo koriste.”[1]

Page 16: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

15

2.3 Distribuirane transakcije

“Transakcija je niz operacija nad bazom podataka koja odgovara jednoj logičkoj jedinici

posla.” [3]

“Svaka transakcija mora zadovoljiti osnovne principe i atribute:

Atomska. Transakcija se mora izvršiti ili u potpunosti, ili nimalo. Ne sme se

dozvoliti mogućnost izvršenja samo dela programa transakcije, jer bi to moglo

dovesti do nekonzistentnog stanja baze.

Konzistentna. Izvršenje transakcije nad bazom podataka koja je konzistentna,

mora prevesti bazu u takođe konzistentno stanje, odnosno očuvati

konzistentnost baze. Očuvanje konzistentnosti baze podrazumeva poštovanje

svih ograničenja integriteta.

Nezavisna. Kaže se da je skup transakcija nezavistan, ako je rezultat njihovog

konkurentnog izvršavanja isti kao da su se izvršavale jedna po jedna, bez

preklapanja izvršavanja. Saglasno tome, osobina nezavisnosti obezbeđuje

konkurentno izvršavanje transakcija.

Trajna. Pod trajnošću se podrazumeva osobina da kada se transakcija završi, sva

ažuriranja podataka su smeštena u memoriju, tipično na disk, koji može

sačuvati podatke i u slučaju kvara sistema. Posle oporavka sistema od kvara,

podaci nisu izgubljeni, a time i rezultati rada transakcije, nego se mogu naći na

odgovarajućem mestu na disku.”[3]

Prema [4], transakcija koji radi sa više izvora podataka se naziva distribuira transakcija.

Ako transakcija ne uspe onda su pogođene izvori podataka biti vraćeni u provobitno

stanje. U System.Transactions, MSDTC (Microsoft Distributed Transaction

Coordinator) upravlja distribuiranim transakcijama. Distribuirana transakcija je mnogo

sporija od lokalne transakcije. Objekat transakcija automatski eskalira lokalnu

transakciju u distribuiranu transakciju kada shvati da je potrebna distribuirana

transakcija.

Prema [4], u svakoj distribiranoj transakciji uključeno je nekoliko elemenata. Svaki deo

ima dve komponente:

Transaction Manager

Transaction Coordinator

Page 17: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

16

Transaction Manager - Održava evidenciju i koristi tu evidenciju ako je potrebno

povraćaj podataka. Kontroliše celu transakciju pokretanjem i kompletiranje, upravljanje

trajnošću i automatizacijom transakcije. Takođe koordinira transakcije preko jednog ili

više resursa.

Prema [4], postoje dve vrste tranasction menadžera.

1. Local Transaction Manager – upravlja transakcija gde postoji samo jedan izvor

podataka

2. Global Transaction Manager – upravlja transakcijama gde postoji više izvora

podataka

Transaction Coordinator - Početak izvršenje transakcija koje potiču na licu mesta.

Distribuira subtransakcije na odgovarajućim lokacijama, tako da oni mogu da se izvrše

na tim mestima. Koordinira svaku transakciju na svakoj lokaciji. Kao rezultat toga,

transakcija se ili izvrši ili vrati podatke na prvobitno stanje.

Slika 2.Sistemska arhitektura distribuiranih transakcija[4]

Prema [5], upravljanje zaključavanjem je u distribuiranim bazama podataka, zbog

postojanja replikacija elemenata baze, znatno složenije od zaključavanja u

centralizovanim bazama. Upravljanje zaključavanjem u DSUBP se bazira na metodama

zasnovanim na istaknutoj kopiji elemenata baze podataka ili na metodama glasanja

(voting methods).

“U metodama istaknute kopije jedna od kopija elemenata baze podataka se proglasi za

istaknutu u sve transakcije se obraćaju samo toj kopiji za dobijanje bilo kog lokota.

Kada transakcija dobije lokot na istaknutu kopiju on odgovarajuće operacije može da

izvrši na bilo kojoj drugoj kopiji na drugim čvorovima distribuirane baze. Istaknute

kopije elemenata baze podataka se mogu organizovati na različite načine:

Page 18: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

17

Tehnika primarnog čvora. Jedan čvor distribuirane baze podataka se proglasi

za kooridnatora zaključavanja i sve istaknute kopije se nalaze na njemu.

Prednost ovakvog postupka je potpuna analogija sa centralizovanim bazama

podataka i jednostavnost upravljanja zaključavanjem. Tehnika primarnog čvora

smanjuje pouzdanost i raspoloživost DSUBP-a. Otkaz primarnog čvora dovodi

do otkaza celokupnog sistema.

Tehnika primarne kopije. Da bi se distribuiralo opterećenje primarnog čvora,

mogu se distribuirati istaknute kopije. Otkaz jednog čvora prouzrokuje samo

poništenje onih transakcija koje pristupaju istaknutim kopijama na tom čvoru.

Izbor novog koordinatora. U bilo kojoj od prethodnih tehnika, kada čvor

koordinator otkaže, čvorovi distribuirane baze koji su još uvek aktivni biraju

novog koordinatora. Ako postoju “backup čvor” on postaje primarni čvor, a

medju ostalim se bira novi “backup čvor”. ”[5]

Prema [5], u metodama glasanja nema istaknutih kopija, sve su kopije ravnopravne.

Osnovni princip ovoga pristupa je da transakcija dobija globalni lokot na neki elemenat

baze podataka ako je dobila lokot na odredjenom broju kopija tog elementa.Metode

glasanja se mogu tretirati kao potpuno distribuirane metode upravljanja zaključavanjem.

Metode glasanja, po pravilu, zahtevaju veći broj prenosa poruka kroz mrežu nego

metode istaknutih kopija.

2.4 Oporavak baze podataka

“Distribuirani sistem upravljanja bazom podataka je podložan razlićitim otkazima:

otkaz lokalnog SUBP-a,

otkaz komunikacionih linija.

gubitak ili izobličenje poruke izmedju čvorova.”[5]

Prema [5], u svim ovim otkazima neophodno je očuvati integritet distribuirane baze

podataka odnosno obezbediti da sve transakcije zadrže ACID osobine.

“To se u distribuiranim bazama podataka postiže preko dvofaznog protokola

potvrdjivanja (two-phase commit protocol). Svaki lokalni SUBP ima svoj sopstveni

mehanizam za upravljanje transakcijama i svoj sopstveni log. Jedna distribuirana

transakcija koristi više lokalnih baza, odnosno obavlja se preko više lokalnih sistema za

upravljanje transakcijama. Da bi se obezbedila atomnost ovakvih transakcija

neophodino je obezbediti dvonivoski mehanizam oporavka baze podataka. Na prvom

Page 19: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

18

nivou se nalaze mehanizmi oporavka lokalnih SUBP, a na drugom tzv. koordinator koji

koordinira mehanizme oporavka sa prvog nivoa. Definišu se dve faze u potvrdivanju

promena koje transakcija izvrši u različitim bazama:

Faza l. Kada svi SUBP na prvom nivou pošalju signal koordinatoru da je deo transakcija

kojim upravijaju završen, koordinator im odgovara porukom, “pripremi se”. SUBP

prvog nivoa tada upisuju neophodne podatke na svoj log i šalju koordinatoru signal OK.

Ako upis na log nije uspeo, šalje se poruka “NOTOK”. Ako koordinator ne dobije

odgovor SUBP-a prvog nivoa u predefinisanom intervalu vremena, podrazumeva se

poruka “nije u redu”.

Faza 2. Ako su svi SUBP prvog nivoa poslali poruke “OK”, vrši se potvrdjivanje

(COMMIT) svih delova transakcije. U protivnom, poništavaju se promene

(ROLLBACK) svih delova transakcije na svim lokalnim SUBP.

Cilj da DSUBP ne bude zasnovan na jednom, “centralnom” čvoru zahteva da se

funkcije koordinatora takodje distribuiraju. Najčešće se to vrši na taj način da čvor sa

koga je neka transakcija startovala ima ulogu koordinatora za tu transakcju. “[5]

2.5 Upravljanje katalogom

“Katalog je sistemska baza podataka koja sadrži podatke o baznim relacijama,

pogledima, indeksima, korisnicima itd, a u slučaju distribuiranog sistema, i o načinu i

lokacijama na koje su podaci razdeljeni i ponovljeni. Sam katalog u distribuiranom

sistemu može biti centralizovan (samo na jednoj lokaciji), potpuno ponovljen (na svim

lokacijama po jedna kopija kataloga), particionisan (na svakoj lokaciji je deo kataloga

koji se odnosi na objekte sa te lokacije) ili kombinovan (katalog je particionisan, ali na

jednoj lokaciji postoji i centralna kopija kompletnog kataloga). Svaki od navedenih

pristupa ima svojih mana (zavisnost od centralne lokacije, visoka cena prenošenja

ažuriranja kataloga ili skup pristup udaljenoj lokaciji) pa pri izboru načina organizacije

treba uzeti u obzir karakteristike samog sistema npr. vreme odziva, veličinu kataloga,

kapacitet lokacije, pouzdanost itd.”[7]

2.6 Sinhronizacija podataka

“Sinhronizacija može biti automatska i manuelna. Manuelna sinhronizacija se koristi za

kopiranje podataka unutar jedne baze, za kopiranje podataka izmedju nepovezanih baza

i za kopiranje podataka izmedju baza koje ne predstavljaju "pravu" distribuiranu bazu.

Može se govoriti i o sinhronizaciji temeljenoj na podacima iz dnevnika (engl. log-based

Page 20: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

19

replication) i sinhronizaciji temeljenoj na transakcijama (engl. transactional replication).

Dnevnik je datoteka u kojoj se čuvaju radnje ažuriranja (i/ili rezultati tih radnji) koje su

radjene nad podacima u bazi podataka. Ti podaci uglavnom služe bazi da uspostavi

konzistentno stanje podataka nakon privremenog (npr. zbog nestanka struje) pada baze

ili spašavanja podataka nakon oštećenja diska sa podacima baze. Osim svoje primarne

uloge, ova datoteka se često koristi i za druge svrhe, pa i za sinhronizaciju podataka u

distribuiranom sistemu. Jedan od pionira u korišćenju dnevnika za sinhronizaciju

podataka je baza Sybase. Prednost sinhronizacije temeljene na dnevniku je njena

jednostavnost i mogućnost ponavljanja i sinhronizacije daleko veće količine podataka.

Sinhronizacija podataka se još može podeliti na sinhronu i asinhronu. Kod sinhrone,

proces ažuriranja kopija izvodi se u istoj transakciji kao i proces ažuriranja primarne

baze. Prednost je automatska sinhronizacija podataka u svim bazama (sinhronizacija je

ili svuda ili nigde uspela, što je osigurano mehanizmom dvofaznog protokola

potvrdjivanja), dok kod asinhrone može doći do konflikta izmedju vrednosti podataka

na različitim bazama i te konflikte mora rešavati programer (kod programiranja

aplikacije) ili administrator baze (DBA).Nažalost, sinhrona sinhronizacija ima i veliku

manu – sve baze moraju biti raspoložive da bi uspela.”[7]

Prema[7], može se govoriti o podeli na sekvencijalnu i proceduralnu sinhronizaciju.

Kod sekvencijalne sinhronizacije promene nad kopijom podataka rade se red po red,

iako su se na izvornoj bazi možda izvodile samo jednom naredbom. Za razliku od toga,

proceduralna sinhronizacija poziva udaljenu proceduru koja može na udaljenoj bazi

kroz jednu naredbu ažurirati više redova.

“Treba još pomenuti jednosmernu i dvosmernu sinhronizaciju. Jednosmerna je ona kod

koje samo jedna baza može ažurirati odredjenu tabelu i slati kopije podataka drugoj

bazi, a kod dvosmerne dve ili više baza mogu ažurirati istu lokalnu tabelu, pa

sinhronizacija treba da ide u dva smera.”[7]

Page 21: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

20

3. Stručno istraživanje

3.1 Elementi procesiranja distribuiranih baza podataka u najčešće

korišćenim DBMS

Prema [8], medju najčešće korišćene baze podataka i DBMS spadaju: MySQL,

MSSQL, Oracle.

3.1.1 MySQL

3.1.1.1 Replikacija podataka

“Replikacija omogućava da se podaci iz jedne MySQL baze podataka (master)

kopiraju na jednu ili više MySQL baza podataka (slave). U zavisnosti od konfiguracije,

mogu se replicirati sve baze podataka, odabrane baze podataka, ili čak i izabrane tabele

unutar baze podataka.”[9]

Prema [9], prednosti replikacije u MySQL uključuju:

Scale-out rešenja - širenje opterećenja između više slave-ova da bi se poboljšale

performansie. U takvom okruženju, unošenja i ažuriranja se moraju obavljati na

glavnom serveru (master). Čitanje se može obavljati na jednoj ili više baza

podataka (slave).

Sigurnost podataka – podaci se replicaju na slave, a slave može pauzirati proces

replikacije. Moguće je radit backup podataka na slave bez uticaja na

odgovarajuće matične podatke.

Distribuciju podataka na daljinu – replikacijom se moze stvoriti lokalna kopija

podataka za udaljene lokacije, bez stalnog pristupa master-u.

Prema [9], MySQL 8.0 podržava različite metode replikacije. Tradicionalna metoda se

zasniva na tome da replicira događaje iz binarnog loga master. Zahteva datoteke

evidencije i pozicije i u njima će biti sinhronizovana između master i slave. Novija

metoda bazirana na globalnoj transakciji identifikatora (GTIDs) je transakcijska i stoga

ne zahteva rad sa log datoteke ili pozicijama unutar ove datoteke, što znatno

pojednostavljuje replikaciju. Replikacija koristeći GTIDs garantuje konzistentnost

između master i slave sve dok su sve transakcije uradjene na master primjenje i na

slave.

Page 22: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

21

3.1.1.2 Particionisanje podataka

Prema [10], horizontalno particionisanje je podela različitih redova tabele može na

različite fizičke particije. MySQL 8.0 ne podržava vertikalno particionisanje, u kojem

različite kolone tabele se dodjeljuju na različite fizičke particije. Trenutno nema planova

za uvođenje vertikalnog particionisanja u MySQL.Za particionisane tabele mora se

koristiti jednu mašinu za skladištenje. U MySQL 8.0, sve particije iste particionisane

tabele moraju da koriste isti mašinu za skladištenje. Međutim, za različite particionisane

tabele se mogu koristiti različite mašine na istom MySQL serveru.

“Neke prednosti particonisanja su:

Particionisanje omogućuje skladištenje više podataka u jednoj tabeli nego što se

može održati na jednom disku.

Podaci koji nisu potrebni se mogu lako ukloniti iz particionisane tabele,

smeštanjem na particiju koja sadrži samo te podatke. Nasuprot tome, proces

dodavanja novih podataka može u nekim slučajevima biti znatno olakšan

dodavanjem jedne ili više novih particija za skladištenje posebno tih podataka.

Neki upiti mogu biti znatno optimizovani i samom činjenicom da podaci koji

zadovoljavaju dati WHERE uslov mogu biti skladišteni samo na jednoj ili više

particija, koji automatski isključuje sve preostale particije iz pretrage.”[10]

3.1.1.3 Distribuirane transakcije

Kao što smo naveli da sve transakcije moraju obezbediti četiri osnovna svojstva, tako i

u MySQL transakcije su nedeljive, uskladjene, izolovane i trajne.

“START TRANSACTION i BEGIN naredba označavaju početak nove

transakcije.

COMMIT potvrđuje tekuću transakciju, čineći promene nastale tom transakcijom

stalnim.

ROLLBACK poništava tekuću transakciju, otkazujući sve promene koje su u

okviru nje izvršene.

Naredba SET AUTOCOMMIT uključuje ili isključuje autocommit mod za aktivnu

konekciju”[25]

Prema[25], predefinisano je da MySQL radi sa uključenim autocommit modom. To

znači da čim izvršite SQL naredbu koja ažurira neku tabelu, MySQL promenu zapisuje

Page 23: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

22

u bazi. Ako se korist transaction-safe storage engine (kao što su InnoDB, BDB ili NDB

Cluster), može se isključiti autocommit mod na sledeći način:

SET AUTOCOMMIT=0;

3.1.1.4 Opravak baze podataka

Prema [11], oporavak se može opisati kao proces kroz koji novi učesnik dobija podatke

koji mu nedostaju od servera na mreži. Tokom oporavka server prati dogadjaje učesnka,

kao i transakcije koje se dešavaju dok oporavak traje.Oporavak se odvija u dve faze.

U prvoj fazi učesnik bira jedan od servera na mreži da mu bude donator za podatke koji

mu nedostaju. Donator je odgovoran za sve podatke koje nedostaju učesniku do ulaska

u grupu. Ovo se postiže preko standardnog asihrlonog kanala za replikaciju,

uspostavljenog izmedju donatora i učesnika. U drugoj fazi, učesnik prelazi na izvršenje

transakcija. Kad izvrši sve transakcije postaje član grupe.

3.1.2 MSSQL

3.1.2.1 Replikacija podataka

Prema [12], replikacija je skup tehnologija za kopiranje i distribuciju podataka i

objekata baze podataka iz jedne baze u drugu, kao i za sinhronizuju između baza

podataka za održavanje konzistentnosti.SQL nudi tri vrste replikacije za korištenje u

distribuiranim aplikacijama:

Transakciona replikacija,

Merge replikacija,

Snapshot replikacija.

“Transakciona replikacija se obično koristi u server-to-server scenariju, koji zahtevaju

veliku propusnu moć, uključujući: poboljšanje prilagodljivosti i rasprostranjenosti,

skladištenje podataka i izveštavanje, integrisanje podataka iz više lokacija, integrisanje

heterogenih podataka.

Merge replikacija je prvenstveno namenjena za mobilne aplikacije ili distribuirane

server aplikacije koje imaju moguće sukobe podataka. Uobičajeni scenariji uključuju:

razmene podataka sa mobilnim korisnicima i integracija podataka iz više lokacija.

Snapshot replikacija se koristi da obezbedi početne podatke za transakcion i marge

replikaciju.” [12]

Page 24: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

23

Prema [12], sa ove tri vrste replikacija SQL Server pruža snažan i fleksibilan sistem za

sinhronizaciju podataka.Kao alternativa replikacije, baze podataka se može

sinhronizovati pomoću Microsoft Sync Framework. Okvir za sinhronizaciju sadrži

komponente i intuitivan i fleksibilan API za lakšu sinhronizaciju između SQL Server,

SQL Server Express, SQL Server Compact, i SQL Azure baze podataka. Okvir Sync

uključuje klase koje se mogu adaptirati za sinhronizaciju između SQL Server bazom

podataka i bilo koje druge baze koja je kompatibilana sa ADO.NET.

3.1.2.2 Particionisanje podataka

Prema [13], SQL Server podržava i horizontalno i vertikalno particionisanje. To

podrazumeva delenje tabela u manje tabele, koje imaju manji broj redova a iste kolone,

odnosno, manji broj kolona a isti broj redova. Oba načina particionisanja omogučavaju

upitu skeniranje manje količine podataka. To dovodi do poboljšavanja performansi

upita.

3.1.2.3 Distribuirane transakcije

“SQL Server ima alat DTC (Distributed Transaction Coordinator) koji održava

integritet distribuiranih transakcija u SQL okruženju. Distribuirana transakcija se deli

na dve faze:

Pripremna faza zahteva da se svi servisi koji učestvuju u transakciji navedu zajedno sa

svim zadacima koji su mu dodeljeni. DTC svakoj instanci dodeljuje poslove. Instanca

izvršava posao transakcije, bez potvrde.

Faza potvrđivanja. DTC očekuje od servisa obaveštenje za mogućnost potvrde o

izvršavanju transakcije. Servisi šalju odgovor u vremenskom roku i mogućnost

potvđivanja izvršenog posla. U suprotnom, šalje se Abort poruka „transakcija se ne

izvršava“.”[14]

3.1.2.4 Oporavak baze podataka

“SQL Server-u postoje tri modela oporavljanja baze podataka:

Full – sve se beleži. Pod ovim modelom ne bi trebalo da ima nikakavih gubitaka

podataka u slučaju otkaza sistema, pod pretpostavkom da su rezervne kopije

podataka dostupne i da korisnik ima sve dnevnike transakcija od tog rezervog

kopiranja. Ukoliko nema dnevnik ili ima neki koji je oštećen, onda će moći da

Page 25: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

24

oporavi sve podatke do poslednjeg netaknutog dnevnika koji ima na

raspolaganju.

Bulk-Logged – je lakša verzija potpunog oporavka. Obične transakcije beleže se

u dnevnik isto kao kod metode potpunog oporavka, ali ne i masovne operacije.

Rezultat je taj da će u slučaju otkaza sistema oporavljene rezervne kopije

sadržati sve promene nad stranicama podataka koje nisu imale udela i masovne

operacije moraju se ponovo obaviti. Dobra vest kod ove metode je da se

masovne operacije ponašaju mnogo bolje. Uz ovakvu performansu dolazi i

pridruženi rizik, pa vam kilometraža može biti različita.

Simple-pod - ovim modelom dnevnik transakcija u suštini postoji samo kao

podrška transakcijama dok se one dešavaju. Dnevnik transakcija se redovno

skraćuje, pri čemu se sve završene ili opozvane transakcije u suštini uklanjaju iz

dnevnika (ne baš tako jednostavno, ali to je krajnji ishod). Ovo nam daje uredan

i lep dnevnik koji je manji i često se ponaša malo bolje, ali dnevnik koji nije ni

od kakve koristi za oporavak od otkaza sistema.”[26]

3.1.3 Oracle

3.1.3.1 Replikacija podataka

Prema[15], replikacija je proces kreiranja kopija podataka i sihronizacija podataka u

bazama koje čine distribuiranu bazu podataka. Sve promene koje se naprave na jednoj

bazi moraju se odraziti i na kopije podataka u ostalim bazama. Replikacija omogućava:

veću raspoloživost sistema,

bolje performanse,

nastavak rada i kad lokalna baza izgubi vezu sa ostalim bazama,

smanjenje protoka podataka kroz mrežu.

“Oracle, osim replikacije, ima i neke druge mehanizme koji omogućavaju neke od

navedenih osobina. Npr. Oracle Data Guard (postoji u Oracle 9i i 10g, a sličan

mehanizam u prethodnim verzijama zove se Standby Database) omogućava da se na

temelju log datoteka primarne baze ažurira sekundardna baza, koja je kopija primarne

baze. Ako primarna baza doživi pad, na njeno mesto uskače sekundarna baza. U

verzijama 9i i 10g moguće je tu sekundarnu bazu podataka iskoristiti za čitanje, tako da

se npr. svi ili neki korisnički upiti preusmere na tu bazu, i time odtereti primarna baza.

Page 26: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

25

Dakle, kao i replikacija, i Data Guard može povećati raspoloživost sistema, a ponekad i

povećati performanse. “[15]

“Oracle replikacija tzv. “stara” pojavila se prvi put u bazi 7. Osnovne varijante

replikacije iz baze 7 postoje i u bazi 10g. Tokom vremena povećavale su se mogućnosti

i performanse, olakšalo se administrovanje, povećao se broj mogućnosti. Oracle

replikacija temelji se na transakcijama a ne na log podacima.”[15]

Prema [15], Oracle Streams replikacija temelji se na log podacima. Log datoteke u

Oracle bazi dele se na on-line i archived log datoteke. Uvek moraju postojati barem dve

(Oracle preporučuje barem tri) on-line log datoteke u koje Oracle baza zapisuje

promene "u krug". Ako je Oracle baza postavljena u tzv. ARCHIVELOG način rada,

onda se podaci iz on-line datoteka ne gube, jer se on-line datoteke prenose u arhivu.

Oracle Streams replikacija je isključivo asinkrona, dvosmerna replikacija, a može

replicirati i DML i DDL naredbe.

“Oracle polaže velike nade u Oracle Streams i namenio ga je za više stvari, a ne samo za

replikaciju. Oracle Streams namenjen je i za punjenje skladišta podataka (Data

Warehousing) i za upravljanje redovima poruka (Message Queuing). Oracle Streams se

pojavio u bazi 9.2, ali je u bazi 10g značajno poboljšan.”[7]

3.1.3.2 Particionisanje podatka

“Oracle particionisanje nudi tri osnovne metode distribucije podataka kao osnovne

strategijae koje kontrolišu kako se podaci smešteju u zasebne particije:

Range,

Hash,

List.

Range-podela podataka na particije zasnovan na vrednošću particionog ključa koji se

uspostavlja za svaku particiju.

Hash particionisanje zasnovano je na hash algoritmu koji koristi Oracle za

particionisanje. Hash algoritam distribuira vrste prema particijama tako da particije

budu iste veličine. Hash particionisanje je idealna metoda za distribuciju podataka

izmedju uredjaja. Hash particionisanje je takodje alternativni, način za particionisanje

posebno kada podaci za particionisanje nisu istorijski ili nemaju jedinstveni particioni

ključ.

List particionisanje omogućuje, eksplicitnu kontrolu kako vrste u mapi će biti

particionisane prema listi diskretnih vrednosti particionog ključa za svaku particiju. List

Page 27: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

26

takodje daje prednost što može da se grupiše i organizuje liste podataka koji nisu

organizovani i nisu sredjeni u normalan redosled. ” [30]

3.1.3.3 Distribuirane transakcije

“Distribuirana transakcija koristi tzv. dvofazni commit protokol, koji ima faze Prepare i

Commit. U Oracle realizaciji on se zapravo, sastoji od tri faze – treća faza je Forget.

Ovako možemo ukratko prikazati postupak kod usješne distribuirane transakcije, koja

završava sa COMMIT i kod koje nije bilo nikakvih problema:

1. Klijentska aplikacija šalje DML naredbe (ili/i pozive udaljenih procedura) po

distribuiranoj bazi i na kraju završava sa COMMIT.

2. Ovde počinje prva faza. Globalni koordinator (baza na koju je direktno vezana

klijentska aplikacija) odredjuje koja će baza biti tzv. commit point site (u tome

pomažu i ostale baze, lokalni koordinatori).

3. Globalni koordinator svim bazama, osim commit point site bazi, šalje naredbu

da se pripreme.

4. Sve baze javljaju potvrdan odgovor (Prepared).

5. Ovde počinje druga faza. Globalni koordinator javlja commit point site bazi da

izvrši lokalni COMMIT.

6. Commit point site baza izvršava lokalni COMMIT i obaveštava globalnog

koordinatora.

7. Globalni i lokalni koordinatori javljaju svim ostalim bazama da naprave lokalni

COMMIT.

8. Sve baze rade lokalni COMMIT i obaveštavaju koordinatore.

9. Ovde počinje treća faza. Globalni koordinator obavještava commit point site

bazu da zaboravi distribuiranu transakciju.

10. Commit point site baza briše svoje podatke o distribuiranoj transakciji i

obavještava globalnog koordinatora.

11. Globalni koordinator briše svoje podatke o distribuiranoj transakciji.”[16]

Prema [16], kod ovog commit protokola postoji period u kojem je transakcija osetljiva

na pad (nekog) servera baze ili veze izmedju baza. Greške koje se mogu desiti jesu:

pao je sistem na računaru na kojem radi Oracle baza,

prekinula se veza izmedju dvije ili više baza koje učestvuju u distribuiranoj

transakciji,

desio se neki softverski problem.

Page 28: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

27

3.1.3.4 Oporavak baze podataka

“Postoje različiti tipovi grešaka i problema koji se mogu javiti u radu s bazom podataka.

Oporavak od nekih grešaka je automatski, dok druge zahtevaju intervenciju

administratora. Ako SQL naredba uzrokuje grešku, baza automatski poništava efekte

naredbe korištenjem undo podataka i transformacijskih vektora. Greška se može

dogoditi i na nivo korisničkog procesa koji je pokrenuo transakciju. Najčešći je uzrok

prekid veze izmedju klijenta i servera. Ovakve slučajeve rešava pozadinski proces

PMON na način da poništava efekte transakcije i gasi serverski proces te oslobadja

zauzetu memoriju. Tipičan problem koji svakako zahteva angažman administratora je

oštećenje diskova koji čuvaju podatke. Kontrolna datoteka i redo log datoteke moraju u

svakom trenutku biti zaštićene multipleksiranjem. Ako se dotične datoteke

multipleksiraju na različite diskove, uvek je moguće upotrebiti kopije s ispravnih

diskova. Budući da postoji mala verovatnoća da se pokvare svi diskovi na kojima se

nalaze multipleksirane kopije, dodatna je mera sigurnosti arhiviranje kontrolne i redo

log datoteka. Podatkovne datoteke se ne mogu multipleksirati, stoga je jedina opcija

kreiranje sigurnosnih arhivskih kopija. Kako bi se podaci doveli u konzistentno stanje,

na arhivske je kopije potrebno primeniti transformacijske vektore iz arhiviranih i

aktualnih redo log datoteka. Koriste se oni transformacijski vektori u kojima su zapisane

promene koje su se dogodile u periodu izmeñu trenutka kreiranja arhivske kopije

podatkovne datoteke i kvara na mediju.”[27]

“Oracle baza je inicijalno u NOARCHIVELOG načinu rada. To znači da se

transformacijski vektori ne arhiviraju i podaci su nezaštićeni u slučaju kvara medija.

Iskusan će administrator zbog toga odmah nakon instalacije bazu prebaciti u

ARCHIVELOG način rada. To rezultira pokretanjem pozadinskog procesa koji brine o

arhiviranju redo log datoteka nakon svake izmene aktivne redo log grupe. Lokacija za

arhiviranje se eksplicitno odredjuje. Dodatna je zaštita multipleksiranje arhiviranih redo

log datoteke na različite diskove. Trajanje oporavka zavisi o frekfenciji arhiviranja

podatkovnih datoteka. Što je arhiva svežija, potrebno je primijeniti manji broj

transformacijskih vektora na podatke pa je oporavak kraći. Medjutim, arhiviranje

podataka usporava bazu. Stoga administrator mora odabrati optimalno rešenje čijom

primjenom baza neće biti preopterećena arhiviranjem dok će potencijalni oporavak od

kvara medija biti izvršen u razumnom vremenu.”[27]

Page 29: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

28

3.1.4 Sumarni pregled tehnika distribuiranih baza podataka u okviru

najčešće korišćenih sistema za upravljanje bazama podataka

U ovom odeljku su prikazane osnovne tehnike rada sa distribuiranim bazama podataka

uporedno za tri najčešće korišćena sistema za upravljanje bazama podataka. Opis načina

rada sa pojedinačnim tehnikama u odgovarajućem DBMS sistemu dat je u prethodnim

odeljcima, a ovde je dat sumarni pregled referenci u kojima se te tehnike spominju,

čime se potvrđuju podhipoteze i glavna hipoteza.

SUBP Replikacija Particionisanje Transakcije Oporavak

Oracle [15] [30] [16] [27]

MSSQL [12] [13] [14] [26]

MySQL [9] [10] [25] [11]

Tabela 1. Uporedni prikaz tehnika distribuiranih baza podataka

za 3 najčešće korišćena SUBP

3.2 Posebni DBMS namenjeni za distribuirane baze podataka

3.2.1 Mariposa-distribuirani sistem baza podataka

„Mariposa je sistem za upravljanje distribuiranim bazama podataka koji je nastao kao

istraživački projekat na Univerzitetu Kalifornije u Berkliju. Mariposa objedinjuje

pristup koji se uzima pri radu sa distribuiranim fajl sistemima i distribuiranim bazama.

Kao takav, omogućuje sveobuhvatnu fleksibilnu platformu za izradu novih algoritama

za optimizaciju distribuiranih upita, upravljanje memorijom i skalabilne strukture za

čuvanje podataka. Fleksibilnost se primarno koristi za korišćenje veće autonomije koja

dozvoljava izvršenje lokalnih naredbi nezavisno od mesta gde se podatak nalazio u

memoriji, mesta izvršenja upita i upravljanja memorijom.“[17]

Postoje četiri pristupa koji se odnose na upravljanje distribuiranim podacima

koji su se istraživali:

distribuirani bazni sistemi

klijent-server distribuirani fajl sistemi

"deep store" fajl sistemi

objektno-orijentisani bazni sistemi

Prema[18], fundametnalni zadaci Maripose su ujedinjenje različitih pristupa

distribuiranju baza podataka, keširanja distribuiranih fajl sistema, "duboko skladištenje"

fajl sistema i servera za objekte. Mariposa distribuira podatke preko puteva koji su

povezani nekom lokalnom ili širokopojasnom mrežom (LAN/WAN). Svaka lokacija

Page 30: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

29

ima uređaj za skladištenje, koju smatramo glavnom memorijom u ovom slučaju, disk ili

tercijalna memorija.

Prema [18], bitno je naglasiti da ni jedna lokacija ne poseduje globalne informacije o

stanju baze podataka. Druga bitna stvar, je sam optimizer koji ima opciju prenosa upita

do lokacije gde misli da se podaci nalaze ili obrnut proces. Odabir koja će se strategija

koristiti predstavlja odluku optimizacije. I ako je poznato da se samostalni upit

optimalno izvršava prenosom upita do podataka, ako optimizer prosudi da je veća

verovatnoća da će upit pre biti viđen od strane lokacije, postoji mogućnost da je transfer

podataka bolja opcija. Mariposa optimizer uzima u obzir obe opcije.Treće, ako bi se

Mariposa odlučila da prenese podatake do upita, mora da odabere koju će kopiju da

prenese ili da odluči da napravi novu kopiju, što dalje dovodi do veće kompleksnosti

sistema.Četvrto, pretpostavlja se da je Mariposa sistem heterogen, tj da poseduje

različite brzine, kapacitet i osobine. Na primer, nemoguće je izrvšiti sve operacije na

svim, lokacijama zbog limita u kapacitetu memorije. Pored toga,u nadogradivom

DBMS okruženju, lokalni DBMS na svakoj lokaciji mogu imati drugačije tipove

biblioteka.

Kao rezultat dobijamo glavne aspekte Mariposa sistema:

1. sistem organizovan pravilima koji radi na mehanizmu koji je zasnovan na tom

setu pravila

2. algoritmi za kretanje fragmenata radi veće mobilnosti podataka

3. optimizer upita i mehanizam za izvršenje istih

4. dozvoljava multipliciranje kopija za ovo okruženje.

3.3 Platforma za sihronizaciju podataka

3.3.1 Microsoft Synchronization Services

“Microsoft Sync Framework je platforma za sinhronizaciju podataka. Sync Framework

ima arhitekturu koja ne zavisi od specifičnog transportnog protokola i u koju mogu biti

uključeni specifični sinhronizacioni provajderi implementirani kroz ADO.NET API.

Sync Framework se može koristiti za oflajn pristup podacima, pri čemu se lokalno radi

sa poslednjom prevučenom verzijom podataka, a promene se u paketima šalju udaljenoj

server bazi, za sinhornizaciju promena na svim čvorovima u mreži, kao i za

sinhronizaciju većeg broja direktno povezanih (engl. peer-to-peer) čvorova. Sync

Framework ima ugradjenu podršku za otkrivanje konflikta korišćenjem oznaka

Page 31: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

30

konfliktnih podataka pri čemu korisnik naknadno razrešava konflikt (podaci su već

ažurirani) ili primenom definisane politike za rešavanje konflikta. Sync Services

uključuje i ugradjenu bazu SQL Server Compact za čuvanje meta podataka o procesu

sinhronizacije.”[19]

Prema [19], Sync Framework omogućava sinhronizaciju bez obzira na specifično

skladište podataka kao i na transportni protokol. Kroz specifične sinhronizacione

provajdere (engl. synchronization providers), bilo koji izvor podataka može biti

podržan. Postoje tri sinhronizaciona provajdera: Microsoft Sync Services for

ADO.NET, Sync Services for File Systems, i Sync Services for SSE.

“Sync Services API kreira sinhronizacionu sesiju, (Session objekat). Sinhronizacija se u

sesiji odvija korišćenjem dva sinhronizaciona provajdera – jedan za izvorišno skladište

podataka i jedan za odredišno skladište podataka. Tokom procesa sinhronizacije

odredišni provajder šalje skup podataka, izvorišni provajder uporedjuje ovaj skup sa

skupom promena na izvorištu i dobijene razlike šalje odredištu. Odredišni provajder

ispituje da li postoje konflikti i ažurira podatke na odredištu.”[19]

Page 32: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

31

4. Rezultati naučno-stručnih istraživanja

4.1 Spanner - Guglova distribuirana baza podataka

“Spanner je skalabilna, globalna distribuirana baza podataka dizajnirana, izgradjena i

razvijena od strane Gugla. Sa gledišta visokog nivoa apstrakcije, to je baza podataka

koja deli podatke kroz mnoge setove Paxosa, kao statičke mašine u data centrima iz

celog sveta. Replikaicja se koristi za globalnu dostupnost i geografski lokalitet. Spanner

automatski deli podatke kroz mašine kao ogromnu kolicinu podataka ili brojeva ili

izmena servera i automatski migrira podatke kroz mašine (cak i kroz datacentre) kako bi

balansirao očitavanje i odgovore na greške. Spanner je dizajniran da pojača milione

mašina kroz hiljade datacentara i trilione redova baza podataka.” [23]

Prema [23], aplikacije mogu da koriste Spanner za široku namenu, cak i u pogledu

područja prirodnih katastrofa što se postiže repliciranjem njihovih podataka u okviru

odredjenih ili preko razlicitih kontinenata. Njihov glavni klijent bio je F1, kopija Gugl

marketinskog bekenda (AdWords). F1 koristi 5 replika raširenih širom USA. Većina

aplikacija verovatno bi replicirala svoje podatke u preko 3 do 5 datacentara u okviru

jednog geografskog regiona, ali sa relativno nezavisnim neuspelim režimima. Na taj

način, većina aplikacija će izabrati nižu latentnost (zadržavanje od inputa u sistem do

željenog izlaza; u pravom značenju skrivanje) nego visoku dostupnost, dok god mogu

da prežive 1 ili 2 neuspeha datacentara.

Prema [23], Spannerov glavni fokus je upravljvanje cross-datacenter repliciranim

podacima, ali takodje troši se značajno vreme za dizajniranje i implementaciju bitnih

karakteristika baza podataka koje se nalaze na vrhu infrastrukture distribuiranih sistema.

Iako mnogi projekti uspešno koriste Bigtable oni isto tako primaju pritužbe od mnogih

korisnika Bigtable-a kako sam Bigtable može biti veoma težak za korišćenje odredjenih

aplikacija: one koje su složene, razvijaju šeme ili one koje zahtevaju snažnu

konzistentnost u okviru prisustva širokog područja replikacije. Mnoge Gugl aplikacije

su izabrane da koriste Megastore zbog njihovog polurelacionog modela podataka i

podrške za sinhronu replikaciju, uprkos njihovom relativno slabom protoku. Kao

posledica, Spanner se razvio od Bigtable skladišta za verzioniranje koda u privremenu

Page 33: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

32

multiverzionu bazu podataka. Podaci su uskladišteni u šematizovane polurelacione

tabele. Podaci su verzionirani i svaka verzija je automatski vremenski označena sa

njenim izvršenim vremenom. Stare verzije podataka su podložne prilagodjavanju

politikama sakupljaču smeća (garbage-collection – automatsko upravljanje memorijom),

i aplikacije mogu da čitaju podatke u uskladištene vremenske odrednice (timestamp –

vremenska odrednica kad se desi neki dogadjaj pa računar uzme to vreme kad se desio

dogadjaj). Spanner podržava opšte-namenske transakcije i obezbedjuje SQL upitni

jezik.

Prema [23], kao globalna distribuirana baza podataka, Spanner obezbedjuje nekoliko

interesantnih karakteristika. Prvo, replikacije konfigurisane za podatke mogu da se

dinamički kontrolišu veoma precizno od strane aplikacija. Aplikacije mogu da

specificiraju ograničenja za kontrolu koje sadrže datacentri, koliko su podaci dostupni

korisnicima (za kontrolu latentnosti čitanja), koliko su replike udaljene jedna od druge

(za kontrolu latentnosti upisa) i koliko puno replika je održivo(za kontrolu trajnosti,

dostupnosti i performansi za čitanje). Podaci mogu takodje da budu dinamički i

transparentno pomerani izmedju datacentara od strane sistema za balansiranje resursa

koji se koriste izmedju data centara. Drugo, Spanner ima dve karakteristike koje je teško

implementirati u distribuirane baze: on obezbedjuje eksternu konzistentnost čitanja i

pisanja i globalnu konzistentnost čitanja . Ove karakteristike omogućavaju Spanneru da

podrži konzistentne rezerve, konzistentna MapReduce izvršenja, i izmene atomičnih

šema (koje ne zavise od drugih šema), sve na globalnom nivou, čak i u prisustvu

odlazećih transakcija.Ove karakteristike su omogućene zahvaljujući činjenici da

Spanner dodeljuje globalno značajne tajmstampove za transakcije (kako bi se lakše

upravljalo transakcijama), čak iako transakcije mogu da budu distribuirane.

Tajmstampovi reflektuju red serijalizacije. Dodatno, red serijalizacije zadovoljava

eksternu konzistentnost: ako transakcija T1 se izvrši pre nego sto druga transakcija T2

počne, tada T1 izvršeni tajmstamp je manji od T2. Spanner je prvi sistem koji

obezbedjuje takve garancije na globalnom nivou.

“Ključ koji omogućava ove karakteristike je novi TrueTime API i njegova

implementacija. Ovaj API direktno prikazuje čas nesigurnosti (vremenska razlika

izmedju dva vremenska dogadjaja) i garancije na Spannerovim tajmstampovima koji

zavise od granica koje implementacija stvara. Ako je čas nesigurnosti ogroman, Spanner

Page 34: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

33

usporava da bi sačekao taj čas nesigurnosti. Guglov klaster menadzment softver

obezbedjuje implementaciju TrueTime API-ja. Ova implementacija čuva čas

nesigurnosti malim (manji od 10ms) koristeći višestruke moderne časovne reference

(GPS i atomski sat). Konzervativno raportovon čas nesigurnosti je neophodan za

ispravnost. Čuvanje granica ovog časa na niskom nivou je neophodno za

učinkovitost.”[23]

4.2 Transakcioni menadzment u R* DSUPB

“R* je eksperimentalni, distribuirani sistem za upravljanje bazom podataka (DDBMS)

razvijen i pokrenut u IBM San Hose istraživačkoj laboratoriji. U distribuiranom sistemu

baze podataka akcije transakcije (atomična jedinica konzistentnosti i oporavka) mogu da

se pojave u više sajtova. Njihov model transakcije, dozvoljava višestruku manipulaciju

podacima i definisanje izveštaja za konstituisanje jedne transakcije. Kada izvršavanje

transakcije krene, njene operacije i akcije nisu ograničene. Uslovno izvršavanje i za

sada SQL izveštaji su dostupni u aplikacionim programima. Cela transakcija treba da

bude potpuno specificirana i otkrivena sistemu unapred. Distribuirana transakcija

izvršava protokol koji je potreban da osigura da svi efekti transakcije istraju ili da

nijedan od efekata istraje, uprkos neprekidnim sajtovima ili neuspešnim

komunikacionim linkovima. Drugim rečima, izvršeni protokol (commit protokol) je

neophodan da osigura jednoliku privrženost distribuiranih transakcionih izvršenja.”[24]

Prema [24], garantovana jednolikost zahteva da odredjene karakteristike postoje u

dstribuiranom sistemu baze podataka. Svaki proces transakcije je sposoban da

privremeno obavlja akcije transakcije tako da transakcija može da se ne izvrši ili da se

prekine. Takodje, svaka baza distribuiranog sistema baze podataka ima evidenciju koja

se koristi za povraćaj zapisa o promenama stanja transakcija tokom izvršavanja

protokola i transakcionih promena u bazi (UNDO/REDO evidencija). Evidencija zapisa

pažljivo je zapisana sekvencijalno u fajlu koji se cuva u stabilnom skladištu.Kada je

evidencioni zapis napravljen, moze da se izvrši sinhrono ili asinhrono. Transakciono

pisanje evidencionih zapisa ne dozvoljava da nastavi izvršavanje dok se operacija ne

završi. Ovo znaći da ako je sajt srušen (pretpostavljamo da rušenje rezultira u gubitku

sadržaja iz virtuelne memorije) nakon sto je prisiljen zapis kompletiran, tada prisiljen

zapis i onaj koji mu prethodi preživljavaju rušenje i postaju dostupni, iz stabilnog

skladišta, kada se sajt povrati. Veoma je važno da bude dostupan da gomila prisiljene

Page 35: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

34

zapise za visoku performansu. R* vrsi elementarno gomilanje prisiljenih zapisa.S druge

strane, u asinhronom slucaju, zapis biva zapisan u bafer skladištu virtuelne memorije i

dozvoljeno je da migrira kasnije u stabilno skladište (tokom sledećeg prisiljavanja ili

kada se bafer log stranice popuni). Transakciono pisanje zapisa je dozvoljeno da nastavi

izvršavanje pre nego što migracija zauzme poziciju. Ovo znači da ako je sajt srušen

nakon upisa evidencije, tada zapis može biti dostupan za čitanje kada se sajt oporavi.

Važna tacka napomene je da sinhrono pisanje povećava vreme odgovora transakcije u

poredjenju sa asinhronim pisanjem.

R* koji je evolucija centralizovanog SUBP sistema R, kao njegov prethodnik, podržava

serijabilnost transakcije i koristi dvofazni zaključavajući protokol (2PL) kao paralelni

kontrolni mehanizam. Korist od 2Pl-a pokazuje mogućnost pojave dedloka (mrtve

petlje). R* umesto zaštite od dedloka, dozvoljava im (čak i distribuirani) da se dese i

onda ih rešava preko dedlok detekcije i žrtvena transakcija se prekida.

Neke od karakteristika u distribuiranom dedlok detekcionom protokolu su:

1. svi dedlokovi su rešeni uprkos neuspesima sajtova i linkova,

2. svaki dedlok je detektovan samo jednom,

3. prekoračenje u smislu razmene poruka je malo i

4. jednom distribuiran dedlok koji je detektovan, vreme za njegovo

rešavanje je malo.

4.3 Multibaza-integrisani heterogeni distribuirani sistem baza

podataka

Prema [28], Multibaza je softverski sistem koji pomaže integraciju neintegracionih,

heterogenih, distribuiranih baza podataka. Njen glavni cilj je da predstavi iluziju

integracione baze korisnicima bez zahteva da baza bude fizički integrisana. To se

ostvaruje dozvoljavajući korisnicima da vide bazu podataka kroz jednu globalnu šemu i

dozvoljavajući im pristup podacima koristeći upitni jezik visokog nivoa. Upiti

postavljeni preko ovog jezika su kompletno obradjeni od Multibaze ako je baza

integrisana, homogena i nedistribuirana. Multibaza koristi funkcionalni model podataka

da definise globalnu šemu i jezik DAPLEX kao upitni jezik visokog nivoa.

Page 36: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

35

Prema [28], predložena arhitektura sistema Multibaze sastoji se od dve bazne

komponente: pomoćne dizajnerske šeme i pokretačkog podsistema za obradu upita.

Pomoćna dizajnerska šema obezbedjuje alate za integrisane baze podataka dizajnirane

da dizajniraju globalnu šemu i da definišu mapiranje od lokalne baze do globalne šeme.

Pokretački podsistem za obradu upita tada koristi definisano mapiranje za prevod

globalnih upita u lokalne upite, obezbedjujući da lokalni upiti budu izvršeni korektno i

efikasno od strane lokalno SUBP-a.

Šema arhitekture. Arhitektura Multibaze ima tri nivoa šeme, globalnu šemu na

gornjem nivou (GS), integracionu šemu (IS) i jednu lokalnu šemu (LS) po lokalnoj bazi

na srednjem nivou i jednu lokalnu domaću semu po lokalnoj bazi na donjem nivou.

Lokalna domaća je originalna postojeća sema definisana u lokalnom modelu podataka i

korišćena od strane SUBP-a. Izražavanjem LS-a u jednom modelu podataka, viši nivoi

sistema moraju da budu zabrinuti za razlike modela podataka medju lokalnim SUBPa.

U prilog tome, postoji integraciona šema koja opisuje bazu podataka koja sadrži

informacije potrebne za integrisanje baza podataka. Primera radi, pretpostavimo da

jedna baza evidentira brzinu brodova u miljama po satu, dok druga evidentira to sve u

kilometrima po satu. Da bi se integrisale ove dve baze, potrebna nam je informacija o

mapiranju izmedju ove dve mere. Ova informacija je uskladištena u integracionoj bazi

podataka.

Arhitektura obrade upita. Arhitektura pokretačkog podsistema obrade upita sastoji se

od softvera Multibaze i lokalnog SUBP-a. Korisnici prosledjuju upite preko globalne

šeme (nazvani globalni upiti) u softver Multibaze, koji ih prevodi u podupite preko

lokalne šeme (nazvani lokalni upiti). Ovi lokalni upiti se tada šalju u lokalni SUBP da

budu izvrseni.Pošto su globalni upiti postavljeni protivno globalnoj šemi bez ikakvog

znanja o distribuciji podataka i dostupnosti “brzo pristupajućih puteva”, softver

Multibaze mora da optimizuje upite kako bi se mogli efikasno izvršiti. U prilog tome,

proces prevodjenja mora takodje da bude korektan. To je da lokalni upiti moraju da

povrate tačne informacije koje originalni globalni upit zahteva.[28]

Page 37: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

36

4.4 Distriuirani i paralelni sistemi baza podataka

“Distribuirane baze predstavaljaju kolekciju višestrukih, logički interrelacionih baza

podataka distribuiranih preko računarske mreže. Distribuirani SUBP je definisan kao

softverski sitem koji dozvojljava upravljanje distribuiranim bazama i čini da distribucija

bude distupna svima.

Istinski distribuiran SUBP ne razlikuje klijentsku i serversku mašinu. U idealnom

trenutku, svaki sajt moze da izvrši funkcionalnost klijenta i servera. Takva arhitektura,

nazvana peer-to-peer (P2P – jednak jednakom), zahteva sofisticirane protokole da

upravlja distribuiranim podacima preko višestrukih sajtova. Kompleksnost zahtevanog

softvera kasni u ponudi P2P distribuiranih proizvoda SUBP.

Baza podataka je fizički distribuirana preko sajtova podataka fragmentacijom i

replikacijom podataka. Pružajući relacionalnu šemu baze, fragmentacija deli svaku

relaciju u horizontalne ili vertikalne particije. Fragmentacija je poželjna zato što čini

mogućim da se postave podaci u neposrednoj blizini takvog mesta za korišćenje tako da

se smanje troškovi prenosa i smanji veličina relacija uključenih u korisničke upite.

Paralelni SUBP može da bude definisan kao SUBP implementiran na čvrsto spojenom

multiprocesoru. Razlika izmedju paralelnog SUBP i distribuiranog SUBP je malo

nejasna. Možda va-na razlika je ta da distribuirani SUBP pretpostavimo gubi

interkonekciju izmedju procesora koji imaju svoje vlastite operativne sistema i rade

nezavisno. Paralelni SUBP iskorišćavaju skorašnje multiprocesorske rečunarske

arhitekture u cilju da izgrade visoke performanse i visoku dostupnost servera baze

podataka po znatno nižoj ceni nego ekvivalentni mejnfrejm računari.” [29]

Prema [29], distribuirani i paralelni SUBP obezbedjuju istu funkcionalnost kao

centralizovani SUBP osim u okruženju gde su podaci distribuirani preko sajtova na

mreži ili preko čvorova multiprocesorskog sistema. Ova funkcionalnost obezbedjuje

transparentnost; tako su korisnici nesvesni distribucije podataka, fragmentacije i

replikacije.

“Obrada upita i optimizacija. U distribuiranim SUBP, obrada upita i optimizacione

tehnike moraju da adresiraju poteškoće koje pristižu od fragmentacije i distribucije

podataka. U obradi, mogućnosti za paralelno izvršavanje su identifikovane i neophodni

rad je eliminisan. Globalna optimizacija upita uključuje permutovanje reda operacija u

Page 38: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

37

upitu, odredjivanje izvršavanja sajtova za različite distribuirane operacije i

identifikovanje najboljeg distribuiranog izvršnog algoritma za distribuirane operacije.

Paralelna optimizacija upita uzima prednost od intraoperacionog paralelizma i

interoperacionog paralelizma. Intraoperacioni paralelizam je postignut izvršavanjem

operacija na nekoliko čvorova multiprocesorske mašine. Paralelna optimizacija pri

korišćenju intraoperacionog paralelizma može da ima korist od nekih tehnika

osmišljenih za distribuirane baze. Interoperacioni paralelizam dešava se kada dve ili

više operacija se izvršavaju paralelno, ili kao dataflow (protok podataka) ili nezavisno.

Nezavisni paralelizam dešava se kada operacije se izvršavaju u istom trenutku ili u

arbitražnom redu. Nezavisni paralelizam je moguć samo kada operacije ne uključuju

same podatke.

Kontrola konkurentnosti. U distribuiranim SUBP, izazov u sinhronizovanju

konkuretntnih korisničkih transakcija je da proširi i argument serijabilnosti i algoritme

za kontrolu konkurentnosti u distribuiranoj izvršnoj okolini. U ovim sistemima,

operacije datih transakcija mogu da se izvrše u višestrukim sajtovima gde imaju pristup

podacima. Tako globalna serijabilnost zahteva:

a) Da izvršenje setova transakcija na svakom sajtu bude serijabilno

b) Da serijalizaciona naredjenja ovih transakcija na svim sajtovima budu identicne

Ako se koriste algoritmi za zaključavanje, zaključane tabele i menadžment odgovornosti

zaključavanja (lock menadzment odgovornosti) mogu da budu centralizovani ili

distribuirani. Dobro poznate nuspojave svih algoritama za zaključavanje kontrole

konkurentnosti su one koje uzrokuju dedlokove.

Replikacioni protokoli. U replikacionim distribuiranim bazama podataka, svaka logička

stavka podatka ima odredjen broj fizičkih instanci. Problem u ovom tipu sistema baze

podataka je da održi neke pojmove konzistentnosti medju kopijama fizičkih instanci

kada korisnici transparentno vrše ažuriranje logičkih stavki podataka. Pravi kriterijum

konzistentnosti je jednokopijska ekvivalentnost koja ističe da vrednost svih fizičkih

kopija logičkih stavki podataka treba da bude identicne kada transakcija koja se ažurira

se prekine. Tipični protokol za kontrolu replikacije koji primenjuje jednokopijsku

serijabilnost je poznat kao Čitaj-Jednom/Piši-sve (ROWA) protokol. Ovaj protokol je

jednostavan i jasan, ali zahteva da sve kopije logičkih stavki podataka budu ažurirane od

strane transakcije kako bi bili pristupačne za transakcije koje se prekidaju. Neuspeh

jednog sajta može da blokira transakciju, smanjujući dostupnost baze podataka.” [29]

Page 39: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

38

5. Implementirano rešenje

5.1 Opis poslovnog konteksta

Primer poslovnog procesa koji je izabran za ilustrovanje primerima implementacije je

rezervisanje turističkih destinacija.

Radnik turističke agencije evidentira nove destinacije, na osnovu prethodne prijave

same destinacije (hotela i slično). Klijent turističke agencije pregleda ponudu destinacija

i bira jednu destinaciju, pri čemu navodi i željene karakteristike samog smeštaja.

Turistička agencija kontaktira destinaciju i proverava rasploživost i karakteristike

raspoloživih kapaciteta. Ukoliko je slobodan smeštaj željenih karakteristika, klijent

potvrdjuje rezervaciju i evidentira se rezervacija. Agencija kontaktira destinaciju i

obaveštava o rezervisanju.

5.2 Cilj i opis korišćenih tehnologija

Cilj je ilustrovati tehnike procesiranja u distribuiranoj bazi podataka. Biće prikazani

primeri za sledeće tehnologije: replikacija, particionisanje, transakcije i oporavak baze

podataka.Tehnologije koje su korištene u realizaciji primera su: MS SQL Server i

Visual Studio 2010 kao i Power Designer za modele.

5.2.1 MS SQL Server

“SQL je skraćenica za „Structured Query Language“ što u prevodu znači

strukturirani jezik za upite. “[20]

Prema[20], relacioni upitni jezici predstavljaju praktičan rezultat formalnih istraživanja

relacionog modela i relacionih jezika. Mada su oni, u suštini, zasnovani na relacionoj

algebri, relacioni upitni jezici poseduju znatno širi spektar mogućnosti za opštije

izražavanje radnji nad tabelama relacione baze. Način na koji se formulišu upiti u ovim

jezicima prilagođen je širokom krugu korisnika baza podataka, posebno korisnicima sa

skromnim znanjima iz matematike i programiranja.

“SQL razvrstava kategorije SQL naredbi u sedam kategorija :

Naredbe za šemu baze podataka (SQL-schema statements) - za kreiranje, izmenu

i izbacivanje šema i objekata šema (CREATE, ALTER, DROP)

Page 40: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

39

Naredbe za podatke (SQL-data statements) - za prikaz i ažuriranje podataka baze

(SELECT, INSERT, UPDATE, DELETE)

Naredbe za transakcije (SQL-transaction statements) - za startovanje,

završavanje i postavljanje parametara za transakcije(COMMIT, ROLLBACK)

Naredbe za kontrolu (SQL-contol statements), koje se koriste za kontrolu

izvršavanja sekvence SQL naredbi (CALL, RETURN)

Naredbe za konekcije (SQL-connection statements) - za uspostavljanje i

prekidanje SQL konekcije (CONNECT, DISCONNECT)

Naredbe za sesije (SQL-session statements) - za postavljanje default vrednosti i

drugih parametara SQL sesije (SET)

Naredbe za dijagnostiku (SQL-diagnostic statements) - signalizuju izuzetke u

SQL rutinama (GET DIAGNOSTIC)”[20]

5.2.2 PHP My Admin

Ovaj alat predstavlja sastavni deo XAMPP paketa koji sadrži različite alate potrebne za

rad sa PHP (Web server Apache) i MYSQL bazom podataka (PHP MyAdmin).

U okviru ovog alata postoje opcije:

Kreiranje baze podataka, tabela, pogleda, stored procedura

Rad sa SQL skriptom

Unos podataka

Eksport podataka

Grafički prikaz structure relacione baze podataka.

5.2.3 Microsoft Visual Studio 2010

Prema [21], Microsoft Visual Studio predstavlja integrisano razvojno okruženje (IDE)

napravljeno od strane Microsofta. Koristi se za pravljenje programa za Microsoft

Windows forme, takođe za veb sajtove, veb aplikacije i veb servise.

Visual Studio koristi Microsoft platforme za kreiranje softvera kao što su:

Windows API,

Windows Forms,

Windows Presentatation Foundation,

Page 41: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

40

Windows Store i

Microsoft Silverlight.

5.2.4 PowerDesigner

Prema [22], PowerDesigner je vodeći softverski alat za modelovanje procesa

raznorodnih sistema i podataka koji se u njima pojavljuju. Optimizovan za kolaboraciju

više korisnika, PowerDesigner je projektovan za Windows okruženje kao host

aplikacija, koja za pluginove (dodatke) koristi Java platformu i programsko okruženje

Eclipse. PowerDesigner nudi mnogo mogućnosti u oblasti modelovanja:

Modelovanje poslovnih procesa (u daljem tekstu BPM – Business

ProcessModeling),

Generisanje programskog koda (Java, C#, VB.NET, JSF, PowerBuilder itd),

Modelovanje podataka (rad sa vodećim sistemima za upravljanje bazama

podataka),

Modelovanje DataWarehouse-a,

Eclipse programiranje,

Objektno modeliranje (UML2.0 dijagrami),

Generisanje izveštaja,

Rad sa repozitorijumima,

Generisanje XML šema u DTD standardu itd.

5.3 Modeli

U ovom odeljku će biti prikazan business process model kojim se opisuje tok poslovnog

procesa u turističkoj agenciji. Na osnovu BPM modela uradjen je use case koji

predstavlja softverske funkcije budućeg softverskog rešenja. Modeli podataka nisu

predstavljeni u ovom odeljku, jer je u odeljku implementacije data šema baze podataka

koja je implementirana. Na kraju, predstavljen je dijagram komponenti i razmeštaja.

Page 42: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

41

5.3.1 Business process model

Slika 3. Biznis process model

5.3.2 Use case model

<<extend>>

<<extend>>

<<extend>>

<<extend>>

<<extend>>

<<extend>>

<<access>>

<<access>>

<<access>>

<<access>>

<<access>>

<<include>>

<<include>>

<<access>>

Radnik TA

Klijent TA

Turisticka destinacija

Unos nove destinacije

TAbelarni prikaz destinacija sa podacima o raspolozivosti kapaciteta

Filtriranje destinacija

Brisanje destinacije

Izmena destinacije

Stampa svih destinacija fi ltrirano

Tabelarni prikaz destinacija i raspolozivosti kapaciteta za kli jente

Filtriranje destinacija prema mestu, drzavi, tipu desticije

Stampanje spiska destinacija fi ltrirano

Izbor zeljene destinacije i pojedinacni prikaz

Stampa pojedinacne destinacije

Unos rezervacije za izabranu destianciju *

Tabelarni prikaz svih unetih destinacija

Tabelarni prikaz rezervacija i zauzeca za tu destinaciju

Automatsko azuriranje statusa zauzetosti smestajnih kapaciteta

Unos podataka o zauzimanju smestajnog kapaciteta

Slika 3. Use case model

Page 43: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

42

5.3.3 Dijagram komponenti

Softverska podrska turisticke agencije Softverska podrska turisticke destinacije

DBMS TA

DBMS TD

Web aplikacija turisticke agencijeWeb servis za proveru smestajnih kapaciteta Web aplikacija za turisticku destinaciju

Web servis za distribuiranu transakciju i sinhronizaciju azuriranja stanja zauzetosti kapaciteta

Centralna baza podataka

Bekap baza podataka

Horizontalno particionisana baza podataka

Vertikalno particionisana baza podataka

Baza podataka turisticke desinacije

Slika 5. Dijagram komponenti

5.3.4 Dijagram razmeštaja

Slika 6. Dijagram razmeštaja

5.4 Korisničko uputstvo

Implementiran je deo programa koji se odnosi na unos podataka o rezervaciji koji

posledično snima podatke u bazu podataka turističke agencije i druge baze podataka,

koristeći razne tehnike distribuiranih baza podataka (replikacija – rezervna kopija baze,

udaljeni pristup drugoj bazi podataka putem web servisa, horizontalno i vertikalno

particionisanje, distribuirane transakcije i oporavak baze).

U ovom odeljku je dat izgled osnovnog ekrana za unos podataka o rezervaciji. Ostale

softverske funkcije web aplikacije za turističku agenciju i destinaciju nisu realizovane.

Page 44: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

43

Slika 7. Izgled osnovnog ekrana za unos podataka o rezervaciji

Slika 8. Ekran za primenom web servisa za proveru kapaciteta

Page 45: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

44

5.5 Opis implementacije

5.5.1 Šema baze podataka i SQL script za kreiranje baze podataka

U realizaciji ovog rada imamo 2 baze podataka (za obe su date shema baze podataka i

SQL script za kreiranje BP):

1. Baza podataka turističke agencije ,

2. Baza podataka turističke destinacije.

Slika 9. Shema baze podataka turističke agencije

USE [master] GO

CREATE DATABASE [TuristickaAgencija]

GO

USE [TuristickaAgencija]

GO

CREATE TABLE [dbo].[TipDestinacije](

[Id] [int] NOT NULL,

[Naziv] [nvarchar](50) NULL )

GO

Page 46: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

45

ALTER TABLE [dbo].[TipDestinacije] ADD CONSTRAINT [PK_TipDestinacije] PRIMARY KEY CLUSTERED

( [Id] ASC

)

GO

CREATE TABLE [dbo].[TipBoravka](

[Id] [int] NOT NULL, [Naziv] [nvarchar](50) NULL

)

GO ALTER TABLE [dbo].[TipBoravka]

ADD CONSTRAINT [PK_TipBoravka] PRIMARY KEY CLUSTERED

( [Id] ASC

)

GO

CREATE TABLE [dbo].[Drzava](

[Id] [int] NOT NULL,

[Naziv] [nvarchar](50) NULL )

GO

ALTER TABLE [dbo].[Drzava] ADD CONSTRAINT [PK_Drzava] PRIMARY KEY CLUSTERED

( [Id] ASC

)

GO CREATE TABLE [dbo].[Mesto](

[Id] [int] NOT NULL,

[Naziv] [nvarchar](50) NULL, [Id_Drzave] [int] NULL

)

GO

ALTER TABLE [dbo].[Mesto]

ADD CONSTRAINT [PK_Mesto] PRIMARY KEY CLUSTERED

( [Id] ASC

)

GO CREATE TABLE [dbo].[Destinacija](

[Id] [int] NOT NULL,

[PIB] [nvarchar](50) NULL, [Naziv] [nvarchar](50) NULL,

[Id_Mesta] [int] NULL,

[Adresa] [nvarchar](50) NULL, [Email] [nvarchar](50) NULL,

[Telefon] [nvarchar](50) NULL,

[Id_Tipa_Destinacije] [int] NULL )

GO

ALTER TABLE [dbo].[Destinacija] ADD CONSTRAINT [PK_Destinacija] PRIMARY KEY CLUSTERED

(

[Id] ASC )

GO

CREATE TABLE [dbo].[Rezervacija]( [Id] [int] NOT NULL,

[Prezime] [nvarchar](50) NULL,

[Ime] [nvarchar](50) NULL, [Datum_Rodjenja] [date] NULL,

[Telefon] [nvarchar](50) NULL,

[Adresa] [nvarchar](50) NULL, [Id_Mesta] [int] NULL,

[Id_Destinacije] [int] NULL,

[Datum_Boravka_Od] [date] NULL, [Datum_Boravka_Do] [date] NULL,

[Id_Tip_Boravka] [int] NULL,

[Ukupna_Cena_Aranzmana] [decimal](18, 2) NULL )

GO

ALTER TABLE [dbo].[Rezervacija]

ADD CONSTRAINT [PK_Rezervacija] PRIMARY KEY CLUSTERED

Page 47: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

46

( [Id] ASC

) GO

CREATE TABLE [dbo].[Cenovnik](

[Id] [int] NOT NULL, [Kalendarska_godina] [int] NULL,

[Id_Destinacije] [int] NULL,

[Id_Tipa_Boravka] [int] NULL, [Cena_Za_Dan] [decimal](18, 2) NULL

)

GO ALTER TABLE [dbo].[Cenovnik]

ADD CONSTRAINT [PK_Cenovnik] PRIMARY KEY CLUSTERED

( [Id] ASC

)

GO

Listing 1. SQL script baze podataka turističke agencije

Slika 10. Shema baze podataka turističke destinacije

USE [master]

GO

CREATE DATABASE [TuristickaDestinacija]

GO

USE [TuristickaDestinacija]

GO

CREATE TABLE [dbo].[Soba](

[Id] [int] NOT NULL,

[PIB] [nvarchar](50) NULL,

[Oznaka] [nvarchar](50) NULL,

[Opis] [nvarchar](50) NULL

)

GO

ALTER TABLE [dbo].[Soba]

Page 48: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

47

ADD CONSTRAINT [PK_Soba] PRIMARY KEY CLUSTERED

(

[Id] ASC

)

GO

CREATE TABLE [dbo].[ZauzueceSobe](

[Id] [int] NOT NULL,

[Id_Sobe] [int] NULL,

[Datum_Zauzeta_Od] [date] NULL,

[Datum_Zauzeta_Do] [date] NULL

)

GO

ALTER TABLE [dbo].[ZauzeceSobe]

ADD CONSTRAINT [PK_ZauzeceSobe] PRIMARY KEY CLUSTERED

(

[Id] ASC

)

GO

Listing 2. SQL script baze podataka turistička destinacija

5.5.2 Delovi programskog koda sa objašnjenjima

5.5.2.1 Opis osnovnih elemanta realizacije web aplikacije uz primenu tehnika distribuiranih baza podataka

U ovom delu biće opisana implementacija osnovnih koncepata rada sa distribuiranim

bazama podataka u okviru opisa realizacije web aplikacije i web servisa, koristeći

Visual Studio .NET razvojno okruženje, ASPX/C# programiranje i MSSQL Server bazu

podataka. Realizovani primer ilustruje za sledeće koncepte:

1. Replikacija: podaci iz jedne baze podataka se kopiraju u drugu bazu podataka.

Podaci iz baze podataka Turistička agencija se kopiraju u bazu Backup

Turistička agencija.

2. Particionisanje:

– Horizontalno: podaci se snimaju prilikom unosa u jednu od dve baze

podataka i razvrstavaju se po kriterijumu države destinacije u: bazu

podataka Turistička agencija Svet i Turistička agencija Srbija.

– Vertikalno: podaci se istovremeno snimaju u 2 baze podataka koje

imaju istoimenu tabelu Rezervacija, ali imaju deo polja u odnosu na

celovitu tabelu rezervacija. Odvojeni su podaci o klijentu i podaci o

samom aranžmanu koji je klijent rezervisao.

3. Distribuirane transakcije – prilikom unosa podataka, podaci se snimaju u više

baza podataka i svi upiti tipa insert into koji idu nad različitim bazama podataka

su objedinjeni objektom klase Transaction Scope čime se upravlja svim

pojedinačnim transakcijama kao celinom.

Page 49: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

48

4. Oporavak baze podataka – simulacija iskljucivanja jedne baze podataka u

odnosu na skup svih baza podataka i nakon ponovnog uključivanja, detektovanje

koji su nedostajući podaci i nadoknadjivanje nedostajućih podataka.

5.5.2.2 Opsti deo za sve primere

U sledećem listing je prikazan kod za konektovanje na bazu podataka u okviru web

config.

<connectionStrings>

<add name="ApplicationServices"

connectionString="data source=.\SQLEXPRESS;Integrated

Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"

providerName="System.Data.SqlClient" />

<add name="KonekcijaTuristickaAgencija"

connectionString="Data Source=MIRKO-PC\SQLEXPRESS; Initial Catalog=TuristickaAgencija; Integrated

Security=True;"

providerName="System.Data.SqlClient" />

<add name="KonekcijaTuristickaAgencijaSrbija"

connectionString="Data Source=MIRKO-PC\SQLEXPRESS; Initial Catalog=TuristickaAgencijaSrbija;

Integrated Security=True;"

providerName="System.Data.SqlClient" />

<add name="KonekcijaTuristickaAgencijaSvet"

connectionString="Data Source=MIRKO-PC\SQLEXPRESS; Initial Catalog=TuristickaAgencijaSvet;

Integrated Security=True;"

providerName="System.Data.SqlClient" />

<add name="KonekcijaTuristickaAgencijaBackup"

connectionString="Data Source=MIRKO-PC\SQLEXPRESS; Initial Catalog=TuristickaAgencijaBackup;

Integrated Security=True;"

providerName="System.Data.SqlClient" />

<add name="KonekcijaTuristickaAgencijaLicniPodaci"

connectionString="Data Source=MIRKO-PC\SQLEXPRESS; Initial Catalog=TuristickaAgencijaLicniPodaci;

Integrated Security=True;"

providerName="System.Data.SqlClient" />

<add name="KonekcijaTuristickaAgencijaAranzman"

connectionString="Data Source=MIRKO-PC\SQLEXPRESS; Initial Catalog=TuristickaAgencijaAranzman;

Integrated Security=True;"

providerName="System.Data.SqlClient" />

</connectionStrings>

Listing 3. Konektovanje na baze podataka

protected void btnSnimi_Click(object sender, EventArgs e)

{

// PREUZIMANJE VREDNOSTI IZ KORISNICKOG INTERFEJSA

objRezervacija = new clsRezervacija();

objRezervacija.Id = int.Parse(txtID.Text);

objRezervacija.Ime = txtIme.Text;

objRezervacija.Prezime = txtPrezime.Text;

objRezervacija.DatumRodjenja = txtDatumRodjenja.Text;

objRezervacija.Telefon = txtTelefon.Text;

objRezervacija.Mesto = ddlMesto1.Text;

objRezervacija.Adresa = txtAdresa.Text;

objRezervacija.Id_Destinacije = ddlNazivDestinacije.Text;

objRezervacija.Datum_Boravka_Od = txtDatumBoravkaOd.Text;

objRezervacija.Datum_Boravka_Do = txtDatumBoravkaDo.Text;

objRezervacija.Id_Tip_Boravka = ddlTipBoravka.Text;

Listing 4. Preuzimanje vrednosti iz korisničkog interfejsa

Page 50: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

49

Svi delovi koji se odnose na poziv procedure snimi podatke biće prikazani u nastavku.

Svaki rad sa pojedinačnom bazom podataka rezultuje uspehom ili neuspehom, koji se

beleži u okviru statusa.

if (brojSlogovaUspesnoSnimljeno > 0) {

TekstStatusa = TekstStatusa + " KonekcijaTuristickaAgencija =U;";

}

else {

TekstStatusa = TekstStatusa + " KonekcijaTuristickaAgencija =N;";

}

}

catch (Exception greska) {

TekstStatusa = TekstStatusa + " KonekcijaTuristickaAgencija =G=" + greska.Message;

}

// PRIKAZ STATUSA ZA SVE BAZE

lblStatus.Text = TekstStatusa;

Listing 5.Prikaz statusa uspeha

5.5.2.3 Implementacija replikacije podataka

Replikacija podataka je implementirana kao istovremeno snimanje, pored osnovne, u

bekap bazu podataka. Listing 6. opisuje proceduru za snimanje, koja se poziva u okviru

tastera Snimi na korisničkom interfejsu (Listing 7.). U okviru algoritma za snimanje na

tom tasteru nalaze se 2 bloka koda- za snimanje u osnovnu i bekap bazu podataka.

private int SnimiPodatke(string NazivStringaKonekcije, string Id, string Prezime string Ime, string

Datum_Rodjenja, string Telefon, string Adresa, string Id_Mesta, string Id_Destinacije, string Datum_Boravka_Od,

string Datum_Boravka_Do, string Id_Tip_Boravka)

{

int brojslogova = 0;

// konektovanje na bazu

SqlConnection Veza = new

SqlConnection(ConfigurationManager.ConnectionStrings[NazivStringaKonekcije].ConnectionString);

Veza.Open();

// snimanje podataka

String strSQL = "";

strSQL = "Insert into Rezervacija (Id, Prezime, Ime, Datum_Rodjenja, Telefon, Adresa, Id_Mesta,

Id_Destinacije, Datum_Boravka_Od, Datum_Boravka_Do, Id_Tip_Boravka ) values (" + Id + ", '" + Prezime + "','" +

Ime + "', '" + Datum_Rodjenja + "', '" + Telefon + "', '" + Adresa + "', '" + Id_Mesta + "', '" + Id_Destinacije + "', '" +

Datum_Boravka_Od + "', '" + Datum_Boravka_Do + "', '" + Id_Tip_Boravka + "' )";

SqlCommand Komanda = new SqlCommand(strSQL, Veza);

brojslogova = Komanda.ExecuteNonQuery();

// diskonektovanje sa baze

Veza.Close();

Veza.Dispose();

return brojslogova;

}

Listing 6.Procedura za snimanje

Page 51: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

50

protected void btnSnimi_Click(object sender, EventArgs e)

{

// snimanje u glavnu bazu podataka

try

{

brojslogovarezervacija = SnimiPodatke("KonekcijaTuristickaAgencija", txtId.Text, txtPrezime.Text,

txtIme.Text, txtDatumRodjenja.Text, txtTelefon.Text, txtAdresa.Text, ddlMesto1.Text, ddlNazivDestinacije.Text,

txtDatumBoravkaOd.Text, txt.DatumBoravkaDo.Text, ddlTipBoravka.Text);

if (brojslogovarezervacija > 0)

{

porukauspeharezervacija = "Uspesno dodavanje nove!";

}

else

{

porukauspeharezervacija = "Neuspeh dodavanja!";

}

}

catch (Exception ex)

{

porukauspeharezervacija = ex.Message.ToString();

}

// kopiranje u bekap bazu

try

{

brojslogovarezervacija = SnimiPodatke("KonekcijaTuristickaAgencijaBackup", txtId.Text,

txtPrezime.Text, txtIme.Text, txtDatumRodjenja.Text, txtTelefon.Text, txtAdresa.Text, ddlMesto1.Text,

ddlNazivDestinacije.Text, txtDatumBoravkaOd.Text, txt.DatumBoravkaDo.Text, ddlTipBoravka.Text);

if (brojslogovarezervacija > 0)

{

porukauspeharezervacija = "Uspesno dodavanje nove!";

}

else

{

porukauspeharezervacija = "Neuspeh dodavanja!";

}

}

Listing 7. Snimanje podataka u glavnu i backup bazu

5.5.2.4 Implementacija horizontalnog particionisanja

Horizontalno particionisanje podataka podrazumeva snimanje istih podataka u različite

baze podataka po nekom kriterijumu razvrstavanja (snima se samo u jednu od baza

podataka ako odgovara tom kriterijumu). U ovom primeru, u zavisnosti od vrednosti

lblDrzava vrši se razvrstavanje na bazu za rezervacije za Srbiju i druge države.

string vrstadrzave = lblDrzava.Text;

if (vrstadrzave.Equals (“Srbija”)

{

try

{

brojslogovasrbija = SnimiPodatke("KonekcijaTuristickaAgencijaSrbija", txtId.Text, txtPrezime.Text,

txtIme.Text, txtDatumRodjenja.Text, txtTelefon.Text, txtAdresa.Text, ddlMesto1.Text, ddlNazivDestinacije.Text,

txtDatumBoravkaOd.Text, txt.DatumBoravkaDo.Text, ddlTipBoravka.Text);

Page 52: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

51

if (brojslogovasrbija > 0)

{

porukauspehasrbija = "Uspesno dodavanje novog!";

}

else

{

porukauspehasrbija= "Neuspeh dodavanja!";

}

}

catch (Exception ex)

{

porukauspehasrbija = ex.Message.ToString();

}

}

else

{

try

{

brojslogovasvet = SnimiPodatke("KonekcijaTuristickaAgencijaSvet", txtId.Text, txtPrezime.Text,

txtIme.Text, txtDatumRodjenja.Text, txtTelefon.Text, txtAdresa.Text, ddlMesto1.Text, ddlNazivDestinacije.Text,

txtDatumBoravkaOd.Text, txt.DatumBoravkaDo.Text, ddlTipBoravka.Text);

if (brojslogovasvet > 0)

{

porukauspehasvet = "Uspesno dodavanje novog!";

}

else

{

porukauspehasvet = "Neuspeh dodavanja!";

}

}

catch (Exception ex)

{

porukauspehasvet = ex.Message.ToString();

}

}

Listing 8. Implementacija horizontalnog particionisanja

5.5.2.5 Implementacija vertikalnog particionisanja

Kod implementacije vertikalnog particionisanja podaci se upisuju u obe baze podataka

istovremeno, ali se deo podataka snima u jednu bazu podataka, a deo u drugu. U ovom

primeru smo odvojili lične podatke i podatke o aranžmanu koji se inače čuvaju u

zajedničkoj tabeli u osnovnoj bazi podataka. U listingu 9. je data procedura Snimi

podatke koja omogućava izvršavanje različitih SQL upita tipa insert into u zavisnosti da

li se snimaju podaci u celu bazu podataka (“full”) ili deo podataka za vertikalno

particionisanje. U listing 10 je prikazano pozivanje ove procedure na 2 načina –

parcijalno snimanje.

private int SnimiPodatke(string nazivStringaKonekcije, string tipUpisa, clsAerodrom

objNovaRezervacija)

{

int brojslogova = 0;

// konektovanje na bazu

Page 53: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

52

SqlConnection Veza = new

SqlConnection(ConfigurationManager.ConnectionStrings[nazivStringaKonekcije].ConnectionString);

Veza.Open();

// snimanje podataka

String strSQL = "";

switch (tipUpisa)

{

case "full":

strSQL = "Insert into Rezervacija(Id, Prezime, Ime, Datum_Rodjenja, Telefon, Adresa, Id_Mesta,

Id_Destinacije, Datum_Boravka_Od, Datum_Boravka_Do, Id_Tip_Boravka) values (" + objNovaRezervacija.Id + ",

'" + objNovaRezervacija.Prezime + "'," + objNovaRezervacija.Ime + ",'" + objNovaRezervacija.Datum_Rodjenja +

"'," + objNovaRezervacija.Telefon + "," + objNovaRezervacija.Adresa + ",'" + objNovaRezervacija.Id_Mesta + "','" +

objNovaRezervacija.Id_Destinacije + "','" + objNovaRezervacija.Datum_Boravka_od + "','" +

objNovaRezervacija.Datum_Boravka_Do + "','" + objNovaRezervacija.Id_Tip_Boravka + "')";

break;

case "LicniPodaci":

strSQL = "Insert into Rezervacija(Id, Prezime, Ime, Datum_Rodjenja, Telefon, Adresa, Id_Mesta) values

(" + objNovaRezervacija.Id + ", '" + objNovaRezervacija.Prezime + "'," + objNovaRezervacija.Ime + ",'" +

objNovaRezervacija.Datum_Rodjenja + "'," + objNovaRezervacija.Telefon + "," + objNovaRezervacija.Adresa + ",'"

+ objNovaRezervacija.Id_Mesta + "')";

break;

case "Aranzman":

strSQL = "Insert into Rezervacija(Id, Id_Destinacije, Datum_Boravka_Od, Datum_Boravka_Do,

Id_Tip_Boravka) values ('" + objNovaRezervacija.Id_Destinacije + "','" + objNovaRezervacija.Datum_Boravka_od +

"','" + objNovaRezervacija.Datum_Boravka_Do + "','" + objNovaRezervacija.Id_Tip_Boravka + "') ";

break;

};

SqlCommand Komanda = new SqlCommand(strSQL, Veza);

brojslogova = Komanda.ExecuteNonQuery();

// diskonektovanje sa baze

Veza.Close();

Veza.Dispose();

return brojslogova;

}

Listing 9.Implementacija vertikalnog particionisanja

// =========== VERTIKALNO PARTICIONISANJE

// licni podaci

try

{

int brojSlogovaUspesnoSnimljeno = SnimiPodatke("KonekcijaTuristickaAgencijaLicniPodaci",

"LicniPodaci", objRezervacija);

if (brojSlogovaUspesnoSnimljeno > 0)

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaLicniPodaci =U;";

}

else

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaLicniPodaci =N;";

}

}

catch (Exception greska)

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaLicniPodaci =G;"; //+ greska.Message;

}

// aranzman– odmah iza, oba se upisuju

Page 54: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

53

try

{

int brojSlogovaUspesnoSnimljeno = SnimiPodatke("KonekcijaTuristickaAgencijaAranzman ",

"Aranzman", objRezervacija);

if (brojSlogovaUspesnoSnimljeno > 0)

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaAranzman =U;";

}

else

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaAranzman;";

}

}

catch (Exception greska)

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaAranzman =G=" + greska.Message;

}

Listing 10. Pozivanje u okviru dugmeta snimi

5.5.2.6 Implementacija distribuirane transakcije

Dodajemo iz standardnog paketa .NET biblioteka klasa – biblioteku

System.Transactions, da bismo mogli da koristimo TransactionScope klasu. Inače, u

System.Data.SQLClient postoji SQLTransaction klasa, ali radi samo sa jednom bazom

podataka.

Slika 11. Dodavanje biblioteke System.Transactions

U nastavku u listingu 11 se nalazi deo koda kojim se koristi TransactionScope objekat

kojim se objedinjuje izvršavanje upita nad više baza podataka. Pojedini blokovi koda

kojima se pristupa pojedinačnim bazama podataka opisani su u prethodnim odeljcima,

pa su ovde navedeni samo komentarima.

Page 55: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

54

protected void btnSnimi_Click(object sender, EventArgs e)

{

// preuzimanje vrednosti KI

using (TransactionScope scope = new TransactionScope())

{

// snimanje TuristickaAgencija

// snimanje TuristickaAgencijaBackup

// snimanje TuristickaAgencijaSrbija

// snimanje TuristickaAgencijaSvet

// snimanje TuristickaAgencijaLicniPodaci

// snimanje TuristickaAgencijaAranzman

scope.Complete();

} // zatvaranje transaction scope

} // zatvaranje procedure btnSnimi_Click

Listing 11. Implementacija TransactionScope-a

Ceo kod sa svim delovima snimanja u svih šest baza podataka koje su objedinjene u

zajednički TransactionScope biće prikazan u prilogu.

5.5.2.7 Implementacija oporavka baze podataka

U ovom odeljku ćemo simulirati privremenu nemogućnost rada sa jednom bazom

podataka i njen oporavak. Simulacija se izvršava u više koraka, uz korišćenje Kataloga

distribuirane baze podataka.

1. Korak - Obrada unosa podataka u više baza podataka realizuje se zajedničkim

programskim kodom za pristup svakoj bazi podataka (čitanjem u for ciklusu

redom jedne po jedne stavke kataloga koja opisuje jednu po jednu iz niza

distribuiranih baza podataka) i izvršavanjem specifičnog koda koji se odnosi na

poseban tip baze koja se obrađuje.

Katalog distribuirane baze podataka – XML sa strukturom koja sadrži naziv

baze podataka, tip baze i connection string.

<?xml version="1.0" encoding="UTF-8"?>

<Katalog>

<BazaPodataka>

<naziv>TuristickaAgencija</naziv>

<tip>full</tip>

<StringKonekcije>Data Source= MIRKOPC\SQLEXPRESS;InitialCatalog=TuristickaAgencija; Integrated

Security=True;";</ StringKonekcije >

</BazaPodataka>

<BazaPodataka>

<naziv>TuristickaAgencijaBackup</naziv>

<tip>full</tip>

<StringKonekcije>Data Source= MIRKOPC\SQLEXPRESS;InitialCatalog=TuristickaAgencijaBackup;

Integrated Security=True;";</ StringKonekcije >

</BazaPodataka>

<BazaPodataka>

<naziv>TuristickaAgencijaSvet</naziv>

<tip>full</tip>

Page 56: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

55

<StringKonekcije>DataSource=MIRKOPC\SQLEXPRESS;InitialCatalog=TuristickaAgencijaSvet;

Integrated Security=True;";

</ StringKonekcije >

</BazaPodataka>

<BazaPodataka>

<naziv>TuristickaAgencijaSrbija</naziv>

<tip>full</tip>

<StringKonekcije>Data Source= MIRKOPC\SQLEXPRESS;InitialCatalog=TuristickaAgencijaSrbija;

Integrated Security=True;";</ StringKonekcije >

</BazaPodataka>

<BazaPodataka>

<naziv>TuristickaAgencijaLicniPodaci</naziv>

<tip>LicniPodaci</tip>

<StringKonekcije>Data Source=

MIRKOPC\SQLEXPRESS;InitialCatalog=TuristickaAgencijaLicniPodaci; Integrated Security=True;";</

StringKonekcije >

</BazaPodataka>

<BazaPodataka>

<naziv>TuristickaAgencijaAranzman</naziv>

<tip>Aranzman</tip>

<StringKonekcije>Data Source= MIRKOPC\SQLEXPRESS;InitialCatalog=TuristickaAgencijaAranzman;

Integrated Security=True;";</ StringKonekcije >

</BazaPodataka>

</Katalog>

Listing 12. XML kataloga distribuirane baze podataka

Listing 13. prikazuje izmenjene procedure za snimi podatke koja dobija string konekcije

kao parameter, a ne naziv stringa konekcije koji je ranije omogućavao čitanje iz Web

Config. Ovako omogućavamo univerzalno učitavanje podataka:

private int SnimiPodatke(string StringKonekcije, string tipUpisa, clsAerodrom objNovaRezervacija)

{

int brojslogova = 0;

// konektovanje na bazu

SqlConnection Veza = new SqlConnection(StringKonekcije);

Veza.Open();

// snimanje podataka

String strSQL = “”;

switch (tipUpisa)

{

case “full”:

strSQL = “Insert into Rezervacija(Id, Prezime, Ime, Datum_Rodjenja, Telefon, Adresa, Id_Mesta,

Id_Destinacije, Datum_Boravka_Od, Datum_Boravka_Do, Id_Tip_Boravka) values (“ + objNovaRezervacija.Id + “,

‘” + objNovaRezervacija.Prezime + “’,” + objNovaRezervacija.Ime + “,’” + objNovaRezervacija.Datum_Rodjenja +

“’,” + objNovaRezervacija.Telefon + “,” + objNovaRezervacija.Adresa + “,’” + objNovaRezervacija.Id_Mesta + “’,’”

+ objNovaRezervacija.Id_Destinacije + “’,’” + objNovaRezervacija.Datum_Boravka_od + “’,’” +

objNovaRezervacija.Datum_Boravka_Do + “’,’” + objNovaRezervacija.Id_Tip_Boravka + “’)”;

break;

case “LicniPodaci”:

strSQL = “Insert into Rezervacija(Id, Prezime, Ime, Datum_Rodjenja, Telefon, Adresa, Id_Mesta) values

(“ + objNovaRezervacija.Id + “, ‘” + objNovaRezervacija.Prezime + “’,” + objNovaRezervacija.Ime + “,’” +

objNovaRezervacija.Datum_Rodjenja + “’,” + objNovaRezervacija.Telefon + “,” + objNovaRezervacija.Adresa +

“,’” + objNovaRezervacija.Id_Mesta + “’)”;

break;

case “Aranzman”:

strSQL = “Insert into Rezervacija(Id, Id_Destinacije, Datum_Boravka_Od, Datum_Boravka_Do,

Id_Tip_Boravka) values (‘” + objNovaRezervacija.Id_Destinacije + “’,’” + objNovaRezervacija.Datum_Boravka_od

+ “’,’” + objNovaRezervacija.Datum_Boravka_Do + “’,’” + objNovaRezervacija.Id_Tip_Boravka + “’) “;

break;

};

Page 57: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

56

SqlCommand Komanda = new SqlCommand(strSQL, Veza);

brojslogova = Komanda.ExecuteNonQuery();

// diskonektovanje sa baze

Veza.Close();

Veza.Dispose();

return brojslogova;

}

Listing 13. Izmena procedure snimi podatke

int max= dsKatalogDistribuiraneBaze.Tables[0].Rows.Count;

for (i=0; i<max; i++)

{ string StringKonekcijeIzKataloga = dsKatalogDistribuiraneBaze.Tables[0].Rows[i].ItemArray[2].ToString();

string TipBazePodataka = dsKatalogDistribuiraneBaze.Tables[0].Rows[i].ItemArray[1].ToString();

try

{

int brojSlogovaUspesnoSnimljeno = SnimiPodatke(StringKonekcijeIzKataloga, TipBazePodataka,

objAerodrom);

if (brojSlogovaUspesnoSnimljeno > 0)

{

TekstStatusa = StringKonekcijeIzKataloga +"=U;";

}

else

{

TekstStatusa = StringKonekcijeIzKataloga +"=N;";

}

}

catch (Exception greska)

{

TekstStatusa = StringKonekcijeIzKataloga +"=G;"; //+ greska.Message;

}

}

Listing 14. Primena Kataloga

2. Korak - izostaviti jednu bazu podataka iz Kataloga i pokrenuti program. Podaci

neće biti snimljeni u tu bazu podataka.

3. Korak – ponovno pokretanje programa uz ponovno aktiviranje te baze podataka

nadoknađivanje podataka koji su izostali. Ovaj deo bi mogao biti realizovan na

sledeći način:

- Dodavanje Time stamp polja u strukturu svake tabele svih baza

podataka.

- Algoritam provere – izdvoji vrednost poslednjeg TimeStamp za

osnovnu bazu i uporedi sa poslednjim TimeStamp iz isključene

Page 58: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

57

baze. Ako postoji razlika, ciklusom se svi zapisi koji ne postoje

(nemaju taj Time Stamp koji ima osnovna baza) ponovo unose iz

osnovne baze podataka.

5.5.2.8 Korišćenje web servisa za konsultovanje udaljene baze podataka

Projekat tipa web servisa je kreiran u VSNET framework 3.5.

Slika 12. Web Servis turističke destinacije

Ideja primene web servisa je pristup udaljenim bazama podataka. Turistička destinacija

nudi web servis kojim turističke agencije mogu da proveravaju raspoloživost soba, uz

mogućnost čak i da snimaju promene statusa zauzeća soba putem drugog web servisa

(ili druge metode istog web servisa).

U našem primeru kreiran je web servis koji treba da obezbedi podatke o zauzeću soba

koji bi se prikazivali u okviru web aplikacije turističke agencije, nakon izbora

destinacije - u tabelarnim prikazu (Slika 8). se prikazuju sobe od izabrane destinacije.

PIB Destinacije iz tabele Destinacija (Baza podataka turističke agencije) i PIB

destinacije iz tabele Soba (Baza podataka same turističke destinacije) se upoređuju i na

osnovu PIB destinacije se izdvajaju odgovarajuće sobe.

private DataSet DajDataSet(DataTable dt)

{

DataSet ds = new DataSet();

ds.Tables.Add(dt);

return ds;

}

private DataTable UcitajSve(string NazivKonekcije, string Upit)

{

DataTable TabelaPodataka = new DataTable();

// konekcija na bazu

SqlConnection Veza = new

SqlConnection(ConfigurationManager.ConnectionStrings[NazivKonekcije].ConnectionString);

Veza.Open();

// preuzimanje podataka

Page 59: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

58

String strSQL;

strSQL = Upit;

SqlCommand Komanda = new SqlCommand(strSQL, Veza);

SqlDataReader dr = Komanda.ExecuteReader();

if (dr.HasRows)

{

TabelaPodataka.Load(dr);

}

dr.Close();

Veza.Close();

Veza.Dispose();

return TabelaPodataka;

}

[WebMethod]

public DataSet DajDataSetSoba(string PIBDestinacije)

{

DataSet dsSoba = new DataSet();

dsSoba = DajDataSet (UcitajSve (“KonekcijaDestinacija”, “select Datum_zauzeta_od, D

Datum_zauzeta_do from zauzece_sobe inner join soba on zauzece_sobe.Id_sobe=soba.id where

soba.PIB=’” + PIBDestinacije + “’”));

return dsSoba;

}Listing 15. Kod za čitanje

5.5.2.8. Tabelarni prikaz objedinjenih podataka iz horizontalno particionisanih

baza podataka

private DataSet DajDataSet(DataTable dt)

{

DataSet ds = new DataSet();

ds.Tables.Add(dt);

return ds;

}

private DataTable UcitajSve(string NazivKonekcije)

{

DataTable TabelaPodataka = new DataTable();

// konekcija na bazu

SqlConnection Veza = new

SqlConnection(ConfigurationManager.ConnectionStrings[NazivKonekcije].ConnectionString);

Veza.Open();

// preuzimanje podataka

String strSQL;

strSQL = "Select * from Rezervacija";

SqlCommand Komanda = new SqlCommand(strSQL, Veza);

SqlDataReader dr = Komanda.ExecuteReader();

// transformacija datareader u data table

// - ne mora, u web aplikaciji se moze povezati direktno

// grid sa data readerom, ali postoji problem zbog zatvaranja konekcije

// pa je bolje ipak da se podati postave u datatable, koji nije direktno povezan sa bazom

if (dr.HasRows)

{

TabelaPodataka.Load(dr);

}

dr.Close();

Veza.Close();

Veza.Dispose();

return TabelaPodataka;

Page 60: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

59

}

private DataSet UcitajIntegrisanePodatke()

{

DataSet dsTASrbija = DajDataSet(UcitajSve("KonekcijaTuristickaAgencijaSrbija "));

DataSet dsTASvet = DajDataSet(UcitajSve("KonekcijaTuristickaAgencijaSvet "));

DataSet dsTASpojeno = SpojPodatke(dsTASrbija, dsTASvet);

return dsTASpojeno;

}

// integrisanje dva data seta

private System.Data.DataSet SpojPodatke(System.Data.DataSet ds1, System.Data.DataSet ds2)

{

System.Data.DataSet dsZajedno;

dsZajedno = ds1.Copy();

dsZajedno.Merge(ds2);

return dsZajedno;

}

// vezivanje data seta za grid

private void PrikaziPodatke(GridView gv, DataTable TabelaPodataka)

{

gv.DataSource = TabelaPodataka;

gv.DataBind();

}

private void PrikaziPodatke(GridView gv, DataSet ds)

{

gv.DataSource = ds.Tables[0];

gv.DataBind();

}

// dogadjaji

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

DataSet dsIntegrisano =UcitajIntegrisanePodatke();

PrikaziPodatke(gvSpisakRezervacija, dsIntegrisano);

}

}

protected void btnSvi_Click(object sender, EventArgs e)

{

txtFilter.Text = “”;

DataSet dsIntegrisano = UcitajIntegrisanePodatke();

PrikaziPodatke(gvSpisakRezervacija, dsIntegrisano);

}

Listing16 . Tabelarni prikaz horizontalnog particionisanja

5.5.2.9 Upiti nad više baza podataka

U ovom odeljku će biti demonstrirano kako se postavljaju upiti nad više različitih baza

podataka, koristeći DBMS MySQL.

Za prethodni primer urađen je drugi SQL script koji se odnosi na MySQL sintaksu.

CREATE DATABASE `TuristickaAgencija` CHARACTER SET utf8 COLLATE utf8_general_ci;

create table `TuristickaAgencija`.`TipDestinacije`

(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

Naziv varchar(50) NULL

Page 61: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

60

);

create table `TuristickaAgencija`.`TipBoravka`(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

Naziv varchar(50) NULL

);

create table `TuristickaAgencija`.`Drzava`(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

Naziv varchar(50) NULL

);

create table `TuristickaAgencija`.`Mesto`(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

Naziv varchar(50) NULL,

Id_Drzave int NULL

);

create table `TuristickaAgencija`.`Destinacija`(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

PIB varchar(50) NULL,

Naziv varchar(50) NULL,

Id_Mesta int NULL,

Adresa varchar(50) NULL,

Email varchar(50) NULL,

Telefon nvarchar(50) NULL,

Id_Tipa_Destinacije int NULL

);

create table `TuristickaAgencija`.`Rezervacija`(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

Prezime varchar(50) NULL,

Ime varchar(50) NULL,

Datum_Rodjenja date NULL,

Telefon varchar(50) NULL,

Adresa varchar(50) NULL,

Id_Mesta int NULL,

Id_Destinacije int NULL,

Datum_Boravka_Od date NULL,

Datum_Boravka_Do date NULL,

Id_Tip_Boravka int NULL,

Ukupna_Cena_Aranzmana decimal(18, 2) NULL

);

create table `TuristickaAgencija`.`Cenovnik`(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

Kalendarska_godina int NULL,

Id_Destinacije int NULL,

Id_Tipa_Boravka int NULL,

Cena_Za_Dan decimal(18, 2) NULL

);

CREATE DATABASE `TuristickaDestinacija` CHARACTER SET utf8 COLLATE utf8_general_ci;

create table `TuristickaDestinacija`.`Soba`(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

PIB varchar(50) NULL,

Oznaka varchar(50) NULL,

Opis nvarchar(50) NULL

);

create table `TuristickaDestinacija`.`ZauzeceSobe`(

Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

Id_Sobe int NULL,

Datum_Zauzeta_Od date NULL,

Datum_Zauzeta_Do date NULL

);

Listing 17. MySQL sintaksa za kreiranje baza

Page 62: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

61

Postavljen je upit kojim se povezuju 2 baze podataka:

select `TuristickaAgencija`.`Destinacija`.`Naziv`,`TuristickaDestinacija`.`Soba`.`Oznaka` from

`TuristickaAgencija`.`Destinacija` inner join `TuristickaDestinacija`.`Soba` on

`TuristickaAgencija`.`Destinacija`.`PIB` = `TuristickaDestinacija`.`Soba`.`PIB`

Listing 18. Upit za povezivanje dve baze podataka

Rezultat izvršavanja upita je dat na sledećoj slici.

Slika 13. Rezultat izvršenja upita

Page 63: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

62

6. Zaključak

U ovom radu predmet istraživanja bio je predstavljanje različitih tehnologija koje se

koriste u radu sa distribuiranim bazama podataka. Cilj istraživanja je bio prikaz

elemenata tehnoloških rešenja koja se odnose na distribuirane baze podataka,

prvenstveno particionisanje, transakcije i oporavak baze podataka. Konkretni procesi su

ilustrovani praktično realizovanim primerom.

Osnovna hipoteza je bila da najčešće korišćeni sistemi za upravljanje bazama podataka

podržavaju tehnike rada sa distribuiranim bazama podataka. Hipoteza je dokazana za

najčešće korišćene DBMS – Oracle, MS SQL i MySQL kroz prikaz različitih tehnika

koje su u tim DBMS prisutne (replikacija, particionisanje, distribuirane transakcije i

oporavak baze podataka). Na ovaj način, kroz dokazivanje podhipoteza dokazana je i

glavna hipoteza. Ovaj deo je prikazan u okviru opisa stručno-istraživački rezultati

profesionalnih rešenja u oblasti najčešće korišćenih sistema za upravljanje bazama

podataka i podrške tehnikama rada sa distribuiranim bazama podataka.

Osim rezultata koji se odnose na dokazivanje hipoteze i podhipoteza, realizovan je

teorijski prikaz osnovnih koncepata i prikazani naučno-istraživački rezultati u oblasti

tehnika rada sa distribuiranim bazama podataka. Realizovan je primer softverske

aplikacije (web aplikacije) koja koristi raličite tehnike rada sa distribuiranim bazama

podataka uz prikaz tehnoloških elemenata prvenstveno replikacija, particionisanje,

transakcije i oporavak baze podataka.

Dalja istraživanja koja se odnose na distribuirane baze podataka mogla bi se odnositi na

druge tipove baza podataka (dakle baze podataka koje nisu zasnovane na relacionom

modelu), kao što su NoSQL baze podataka, document-orentisane baze podataka (npr.

Mongo) i slične.

Takođe, dalje bi se mogli izučavati i pojedinačni problemi koje se odnose na rad sa

distribuiranim bazama podataka, kao što je problem očuvanja referencijalnog integriteta

u fizički odvojenim bazama podataka koje imaju logičku vezu između tabela.

Page 64: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

63

7. Literatura

1. Borivoje Milošević, Obrada podataka u disribuiranim bazama ,Visoka tehnička

škola strukovnih studija, Niš

2. http://www.link-university.com/lekcija/Distribuirane-arhitekture/5517

3. Borivoje Milošević, Distribuirane Transkcije, Visoka tehnička škola strukovnig

studija, Niš

4. https://www.codeproject.com/Articles/690136/All-About-TransactionScope

5. Branislav Lazarević, Zoran Marjanović, Nenad Aničić, Sladjan Babarogić, Baze

podataka, treće izdanje, Beograd,2006

6. Borivoje Milošević, Replikacija i fragmentacija podataka u distribuiranim bazama,

Visoka tehnička škola strukovnig studija, Niš

7. Milica Janačkov, Sinhronizacija podataka u distribuiranim bazama podataka:

ponovljeni podaci i lenjo ažuriranje-master rad, Beograd 2011

8. http://www.itcareersuccess.com/tech/database.htm

9. https://dev.mysql.com/doc/refman/8.0/en/replication.html

10. https://dev.mysql.com/doc/refman/8.0/en/partitioning-overview.html

11. https://dev.mysql.com/doc/refman/8.0/en/group-replication-basics.html

12. https://docs.microsoft.com/hr-hr/sql/relational-databases/replication/sql-server-

replication

13. https://technet.microsoft.com/en-us/library/ms178148(v=sql.105).aspx

14. http://www.link-university.com/lekcija/Upravljanje-transakcijama/4861

15. Zlatko Sirotić, Replikacija podataka u Oracle bazi, Istra informatički inženjering

d.o.o., Pula

16. Zlatko Sirotić, Transakcije i Oracle-baza,forms,Adf, Istra informatički inženjering

d.o.o., Pula

17. http://mariposa.cs.berkeley.edu/about.html

18. Michael Stonebraker, Paul M. Aoki, Witold Litwin, Avi Pfeffer, Adam Sah, Jeff

Sidell, Carl Staelin, Andrew Yu, Mariposa: a wide-area distributed database

system, The VLDB Journal (1996) 5: 48–63

19. https://en.wikipedia.org/wiki/Microsoft_Sync_Framework

Page 65: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

64

20. http://www.gimeko.edu.rs/wp-content/uploads/2011/12/SqlPriru%C4%8Dnik.pdf

21. https://bs.wikipedia.org/wiki/Microsoft_Visual_Studio

22. http://poslis.fon.rs/download/vezbe/PD%20Skripta.pdf

23. Corbett, J. C., Dean, J., Epstein, M., Fikes, A., Frost, C., Furman, J. J., Ghemawat,

S., Gubarev, A., Heiser,C., Hochschild, P., Hsieh, W., Kanthak, S., Kogan, E., Li,

H., Lloyd, A., Melnik, S., Mwaura, D., Nagle,D., Quinlan, S., Rao, R., Rolig, L.,

Saito, Y., Szymaniak, M., Taylor, C., Wang, R., Woodford, D.,Spanner: Google’s

globally distributed database, ACM Trans. Comput. Syst. 31, 3, August 2013

24. C. Mohan, B Lindsay, R. Obermarck, Transaction Menagment in the R* Distributed

Database Menagment System, ACM Transactions on Database Systems, Vol. 11,

No. 4, December 1966, Pages 373-396.

25. http://www.pmf.ni.ac.rs/pmf/licne_prezentacije/230/prezentacija/MySQL-2-1.pptx

26. http://www.link-elearning.com/lekcija-Kreiranje-rezervnih-kopija-i-restauracija-

baze_5942

27. http://sigurnost.zemris.fer.hr/ostalo/2009_vrbanic/Sigurnost_podataka_u_Oracle_ba

zi.pdf

28. John Miles Smith, Phili A. Bernstein, Umeshwar Dayal, Nathan Goodman, Terry

Landers, Ken W.T. Lin, Eugene Wong, Multibase-integrating heterogeneous

distributed database systems, National Computer Conference,1981

29. M. Tamer Ozsu, Patrick Valduriez, Distributed and Parallel Database Systems,

ACM Computing Surveys, Vol. 28, No. 1, March 1996

30. https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm#i468016

31. Materijali sa vežbi iz predmeta Distribuirani informacioni sistemi, Tehnički fakultet

“Mihajlo Pupin” Zrenjanin, http://www.tfzr.uns.ac.rs/Predmet/distribuirani-

informacioni-sistemi

Page 66: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

65

Prilozi protected void btnSnimi_Click(object sender, EventArgs e)

{

using (TransactionScope scope = new TransactionScope())

{

// snimanje u glavnu bazu podataka

try

{

brojslogovarezervacija = SnimiPodatke("KonekcijaTuristickaAgencija", txtId.Text, txtPrezime.Text,

txtIme.Text, txtDatumRodjenja.Text, txtTelefon.Text, txtAdresa.Text, ddlMesto1.Text, ddlNazivDestinacije.Text,

txtDatumBoravkaOd.Text, txt.DatumBoravkaDo.Text, ddlTipBoravka.Text);

if (brojslogovarezervacija > 0)

{

porukauspeharezervacija = "Uspesno dodavanje nove!";

}

else

{

porukauspeharezervacija = "Neuspeh dodavanja!";

}

}

catch (Exception ex)

{

porukauspeharezervacija = ex.Message.ToString();

}

// kopiranje u bekap bazu

try

{

brojslogovarezervacija = SnimiPodatke("KonekcijaTuristickaAgencijaBackup", txtId.Text,

txtPrezime.Text, txtIme.Text, txtDatumRodjenja.Text, txtTelefon.Text, txtAdresa.Text, ddlMesto1.Text,

ddlNazivDestinacije.Text, txtDatumBoravkaOd.Text, txt.DatumBoravkaDo.Text, ddlTipBoravka.Text);

if (brojslogovarezervacija > 0)

{

porukauspeharezervacija = "Uspesno dodavanje nove!";

}

else

{

porukauspeharezervacija = "Neuspeh dodavanja!";

}

}

// snimanje TuristickaAgencijaSrbija

// snimanje TuristickaAgencijaSvet

try

{

brojslogovasrbija = SnimiPodatke("KonekcijaTuristickaAgencijaSrbija", txtId.Text, txtPrezime.Text,

txtIme.Text, txtDatumRodjenja.Text, txtTelefon.Text, txtAdresa.Text, ddlMesto1.Text, ddlNazivDestinacije.Text,

txtDatumBoravkaOd.Text, txt.DatumBoravkaDo.Text, ddlTipBoravka.Text);

if (brojslogovasrbija > 0)

{

porukauspehasrbija = "Uspesno dodavanje novog!";

}

else

{

porukauspehasrbija= "Neuspeh dodavanja!";

}

}

catch (Exception ex)

{

porukauspehasrbija = ex.Message.ToString();

}

Page 67: Tehnologije distribuiranih baza podataka Distributed ... rad MIRKO HRNJAZ.pdf · distributed database. The basic techniques are described such as: data replication, data partitioning,

66

}

else

{

try

{

brojslogovasvet = SnimiPodatke("KonekcijaTuristickaAgencijaSvet", txtId.Text, txtPrezime.Text,

txtIme.Text, txtDatumRodjenja.Text, txtTelefon.Text, txtAdresa.Text, ddlMesto1.Text, ddlNazivDestinacije.Text,

txtDatumBoravkaOd.Text, txt.DatumBoravkaDo.Text, ddlTipBoravka.Text);

if (brojslogovasvet > 0)

{

porukauspehasvet = "Uspesno dodavanje novog!";

}

else

{

porukauspehasvet = "Neuspeh dodavanja!";

}

}

catch (Exception ex)

{

porukauspehasvet = ex.Message.ToString();

}

// snimanje TuristickaAgencijaLicniPodaci

// snimanje TuristickaAgencijaAranzman

try

{

int brojSlogovaUspesnoSnimljeno = SnimiPodatke("KonekcijaTuristickaAgencijaLicniPodaci",

"LicniPodaci", objRezervacija);

if (brojSlogovaUspesnoSnimljeno > 0)

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaLicniPodaci =U;";

}

else

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaLicniPodaci =N;";

}

}

catch (Exception greska)

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaLicniPodaci =G;"; //+ greska.Message;

}

// aranzman– odmah iza, oba se upisuju

try

{

int brojSlogovaUspesnoSnimljeno = SnimiPodatke("KonekcijaTuristickaAgencijaAranzman ",

"Aranzman", objRezervacija);

if (brojSlogovaUspesnoSnimljeno > 0)

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaAranzman =U;";

}

else

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaAranzman;";

}

}

catch (Exception greska)

{

TekstStatusa = TekstStatusa + "KonekcijaTuristickaAgencijaAranzman =G=" + greska.Message;

}

scope.Complete();

} // zatvaranje transaction scope

} // zatvaranje procedure btnSnimi_Click

Prilog 1. Listing celog primera snimanja sa primenom transaction scope i svi blokovi