You are on page 1of 32

Posluitelji i transakcije

7.10.2010

Danas nas oekuje


Arhitektura klijent-posluitelj Sustav za upravljanje bazom podataka Transakcije

Klijent-posluitelj arhitektura
Eng. Client server architecture Koncept zahtjev-odgovor Komunikacija se najede odvija preko mree
preko dobro definiranog suelja
API Aplication program interface

Klijent i posluitelj mogu biti na istom fizikom raunalu


Preko lokalne mree (127.0.0.1 ili localhost) Neimenovanih cjevovoda Zajednike memorije

Razliite arhitekture sustava


Client centric
Arhitektura oslonjena na klijenta Fat client

Server centric
Arhitektura oslonjena na posluitelja Zaseban jezik za svaku komponentu

Troslojna arhitektra Vieslojna arhitektura

Troslojna arhitektra
Klijent
Korisniko suelje

Aplikacijski posluitelj
Sloj poslovne logike Sloj pristupa podacima

Posluitelj baze podataka


Sloj baze podataka

Vieslojna arhitektura
Sloj korisnikog suelja
Prezentacijski sloj Sloj upravljanja dijalogom

Sloj poslovne logike


Sloj aplikacijske jezgre

Sloj upravljanja podacima


Sloj pristupa podacima Sloj baze podataka

Primjer vieslojne arhitekture


Tanki klijent
Prezentacijski sloj

Web posluitelj+servlet engine


Prezentacijski sloj Sloj upravljanja dijalogom

PHP aplikacijski servlet


Sloj pristupa podacima

Posluitelj baze podataka


Sloj baze podataka

Posljedice raslojavanja
Pozitivne posljedice
Specijalizacija sklopovske i programske podrke Udruivanje raunalne snage vie raunala

Negativne posljedice
Povedanje konstrukcijske sloenosti Vie potencijalnih uskih grla Veda mogudnost pojave sigurnosnih propusta Tee odravanje integriteta podataka Vedi trokovi instaliranja i odravanja programske podrke

Posluitelj baze podataka


Prua uslugu drugim raunalima ili procesima Sustav upravljanja bazom podataka
Database management system DBMS Neki od njih (MySQL, npr.) se oslanjaju isljuivo na SC model

Za koje DBMS-ove ste u ivotu uli?


velika veina od njih vjerojatno su RDBMS
RDBMS relational DBMS

RDBMS?
DB2 Microsoft Access IBM Microsoft Microsoft Sun Microsystems (now Oracle Corporation) Oracle Corporation PostgreSQL Global Development Group 1983 1992 1989 1995 1979 1989 Proprietary Proprietary GPL ili Proprietary Proprietary PostgreSQL licence (Free and Open Source)

Microsoft SQL Server


MySQL Oracle PostgreSQL

Windows
DB2 5 Microsoft Access Microsoft SQL Server MySQL 8 Oracle 4

Mac OS X
Da Ne

Linux
Da Ne

BSD
Ne Ne

UNIX Symbian
Da Ne Ne Ne

Da Da

Da
Da Da

Ne
Da Da

Ne
Da Da

Ne
Da Ne

Ne
Da Da

Ne
Da Ne

PostgreSQL

Da

Da

Da

Da

Da

Ne

Max DB size Max table size Max row size

Max columns Max Blob/Clob size per row

Max CHAR size

Max Min Max Max NUMBER DATE DATE column size value value name size 64 bits 1 9999 128

DB2

512 TB

512 TB

32,677 B

1012

2 GB 64 KB (memo field), 1 GB ("OLE Object" field)

32 KB (32 KiB)

Microsoft Access

2 GB

2 GB

16 MB

255

255 B (text field)

32 bits

100

9999

524,258 TB Microsoft (32,767 files * SQL 16 TB max file Server size)

524,258 TB

Unlimited

30000

2 GB

2 GB 6

126 bits 2

9999

128

MySQL 5

Unlimited

MyISAM storage limits: 256TB; Innodb storage limits: 64TB 4 GB * block size (with BIGFILE tablespace)

64 KB 3

4096

4 GB (longtext, longblob)

64 KB (text)

64 bits

1000

9999

64

Oracle

Unlimited (4 GB * block size per tablespace)

8KB

1000

Unlimited

4000 B

126 bits -4712 9999

30

PostgreS QL

Unlimited

32 TB

1.6 TB

250-1600

1 GB (text, bytea) stored inline or 2 GB (stored in pg_largeobject)

1 GB

Unlimited -4713

58748 97

63

UGLAVNOM DBMS?
Set software-skih komponenti koje slue za
Stvaranje Odravanje Upotrebu

Omoguava razliitim aplikacijama upotrebu iste pohranu i dohvat podataka na jasno strukturirani nain. Podrava razliite DB modele
to su to DB modeli?

baze podataka

DBMS
Sastoji se od:
DBMS mehanizma (eng. DBMS engine)
Podsustava za definiciju podataka

Podsustava za manipulaciju podatcima


Aplikacijski podsustav

Administracijski podsustav

Zadaci DBMS-a
Definiranje i rukovanje podacima Zatita baze od neovlatenog pristupa Spreavanje naruavanja pravila integriteta Osiguravanje obnove podataka u sluaju razruenja Upravljanje istodobnim pristupom podacima Optimizacija upita i sl.

DBMS engine
Storage engine Komponenta sustava za upravljanje bazom podataka (DBMS) koja slui za stvaranje, itanje, promjenu i brisanje podataka iz baze Razlikuju se po nekoliko specifinosti a one na koje se danas najvie obrada panja jesu podravanje transakcija i tzv. full text search

Neki DBMS engine-i


MyISAM
Pohrana na disku Velika brzina operacija

InnoDB
Pohrana na disku, moguca i raw pohrana podrava transakcije Meduspremnik potreban zbog vece pohrane

Memory (HEAP)
Pohrana podataka u memoriji, izuzetno brzi dohvat

NDB MySQL cluster storage engine


Pohrana na disku u raw formatu Visoke performanse i velika redundancija

TRANSAKCIJE

Transakcija
Jedinica rada nad bazom podataka Sastoji se od jedne ili niza logiki povezanih izmjena Vode se sve ili nita naelom
Svaka jedinica posla provedena nad bazom podataka mora biti provedena u cijelosti ili ne smije biti provedena uopde

Zadade transakcija
Osigurati jedinstvenu i pouzdanu jedinicu iz koje se moe izvesti oporavak baze u sluaju pada baze tijekom provedbe neke operacije nad bazom Osigurati izolaciju podataka kod viestrukog programskog pristupa bazi

Niz naredbi kao transakcija


Svaka operacija u bazi podataka je transakcija. Trebamo storage engine koji podrava transakcije Moramo postaviti varijablu AUTOCOMMIT na 0 Dva moguda kraja:
Uspjeno izvoenje -> COMMIT WORK Neuspjeno izvoenje -> ROLLBACK WORK

Koraci u transakciji:

1. Zaponi transakciju
SET AUTOCOMMIT=0; START TRANSACTION BEGIN WORK BEGIN

2. Izvri upite/izmjene/manipulaciju nad podacima 3. Ako nije bilo greaka pohrani rezultate i zavri
COMMIT WORK ROLLBACK WORK
Ne podrava se opoziv DDL naredbi (Create table, Drop database)

4. Ako je bilo pogreaka, odustani od rezultata i zavri

Stanja transakcija
Aktivna (active) tijekom izvoenja Djelomino zavrena (partially committed) nakon to je obavljena njezina posljednja operacija Neispravna (failed) nakon to se ustanovi da nije mogude nastaviti njezino normalno izvoenje Neuspjeno zavrena (aborted) nakon to su poniteni njezini efekti i baza podataka vradena u stanje kakvo je bilo prije nego to je zapoela Potvrena (committed) uspjeno zavrena

Stanja transakcija
Toka potvrivanja (commit point)
U toci potvrivanja otputaju se svi kljuevi

Kod ulaska u transakciju otputaju se sva zakljuavanja ako su pokrenuta (vidi kasnije predavanja koja se bave zakljuavanjima entorke ili relacije) Potvrena izmjena nikad ne moe biti ponitena sustav garantira da de njezine izmjene biti permanentno pohranjene u bazi podataka, ak i ako kvar nastane ved u sljededem trenutku

to to svata tamo ima?

ACID
Atomicity - atomarnost
transakcija se mora obaviti u cijelosti ili se uopde ne smije obaviti, sve ili nita naelo

Consistency - konzistentnost
Isolation - izolacija

transakcijom baza podataka prelazi iz jednog konzistentnog stanja u drugo konzistentno stanje, kada se paralelno obavljaju dvije ili vie transakcija, njihov uinak mora biti jednak kao da su se obavljale jedna iza druge, ukoliko je transakcija obavila svoj posao, njezini efekti ne smiju biti izgubljeni ako se dogodi kvar sustava, ak i u situaciji kada se kvar desi neposredno nakon zavretka transakcije

Durability - izdrljivost

Primjer transakcije
SET AUTOCOMMIT=0; BEGIN WORK; UPDATE rezervacija SET satservis=1 WHERE sifKvar=33; UPDATE rezervacija SET satservis=1 WHERE sifKvar=32; COMMIT WORK;

Ili
SET AUTOCOMMIT=0; BEGIN WORK; UPDATE rezervacija SET satservis=1 WHERE sifKvar=33; UPDATE rezervacija SET satservis=1 WHERE sifKvar=32; ROLLBACK WORK;

Pogreke
Pogreke koje otkriva sama aplikacija Pogreke unutar transakcije kojima aplikacija ne rukuje na eksplicitan nain (npr. preliv, dijeljenje s nulom) Pogreka u bazi podataka Kvar raunalskog sustava - baza nije fiziki unitena Kvar medija za pohranu - fiziki unitena baza

Pogreke
Pogreke koje otkriva aplikacija
Sluajevi u kojima aplikacija predvia obavljanje naredbe ROLLBACK WORK Ponitavanje efekata transakcije
kao da transakcija nikad nije zapoela s radom

Ponitavanje izmjena - pretragom dnevnika unatrag nova vrijednost zapisa zamjenjuje se sa starom vrijednodu - sve dok se ne done do poetka transakcije - BEGIN WORK

Pogreke koje ne otkriva aplikacija


ako se javi pogreka za koju nismo pretpostavili akciju - program zavri na neplanirani nain u tim sluajevima ne postoji naredba ROLLBACK WORK !
Ponitavanje efekata transakcije, ponitavanje poruka

Primjer: pokuaj unosa zapisa iji klju ved postoji u bazi !

BEGIN WORK; INSERT INTO klijent VALUES(1,'Ja','Ja',10000,10000, INSERT INTO klijent VALUES(1,'Ti','Ti',10000,10000, COMMIT WORK; to de se dogoditi? Obavit de sve SQL naredbe koje moe U tablici klijent de biti zapisano: 1,Ja, Ja . -> potrebno mu je deklarirati eljeno ponaanje u sluaju neuspjeha

Pauza
Za danas

You might also like