Upload
profedemecanizadofp
View
217
Download
0
Embed Size (px)
DESCRIPTION
Oracle Euskaraz
Citation preview
Informatika sailaDpto. InformáticaDatu Baseak
1
Informatika sailaDpto. InformáticaDatu Baseak
2
Datuak gehitzeko, ezabatzeko, irakurtzeko eta aldarazteko SQL instrukzioen sekuentziak osatutako lanerako Unitate Logikoa da. Egoera trinko batetik amaierako beste egoera trinko batera pasatzen ditu datuak.
COMMIT transakzioa balidatu ROLLBACK transmisioa utzi
Huts eginez gero, egoera trinkora itzuli beharko du sistemak.
Transakzioak
Informatika sailaDpto. InformáticaDatu Baseak
3
Transakzioak
Adb.: 10.000 euroko (1.663.860) transferentzia A diru-kontutik B diru-kontura.
Urratsak:1. A-ren saldoa irakurri.2. A-ren saldoa: = ASaldoa – 10.0003. Saldo berria aldarazi A diru-kontuan.4. B-ren saldoa irakurri.5. B-ren saldoa = BSaldoa + 10.0006. B diru-kontuaren saldoa aldarazi.Sei urratsak behar bezala burutu badira, COMMIT egingo dut. Bestela, ROLLBACK.
Huts eginez gero, egoera trinkora itzuli beharko du sistemak.
Informatika sailaDpto. InformáticaDatu Baseak
4
PL/SQL-ren adibidea: Euro-kopurua transferitu 1 diru-kontutik 2 diru-kontura
Honako ekintza hauek dira transakzio hori osatzen dutenak:create or replace procedure transferentzia (idktakendu IN numbere, idktaerantsi IN number, kopurua IN number) is sal NUMBER ;BEGIN SELECT SALDOA into sal FROM KTA WHERE IDKTA=idktakendu; sal:=sal-kopurua; DBMS_OUTPUT.PUT_LINE(to_char(sal)); update KTA set saldoa=sal where idkta=idktakendu; SELECT SALDOA into sal FROM KTA WHERE IDKTA=idktaerantsi; sal:=sal+cantidad; DBMS_OUTPUT.PUT_LINE(to_char(sal)); update CTA set saldoa=sal where idkta=idktaerantsi; commit;EXCEPTION when others then
rollback;end;/
Transakzioak
Informatika sailaDpto. InformáticaDatu Baseak
5
Adb.: VB.NET: Euro-kopurua transferitu 1 diru-kontutik 2 diru-kontura
Dim trnNew As System.Data.OleDb.OleDbTransactionMe.cn.Open()trnNew=Me.cn.BeginTransaction()Try ...Eguneratu Kta A y la Kta B trnNew.Commit()Catch aka As System.Data.Oledb.OleDbException trnNew.Rollback() Finally Me.cn.Close()End Try
Transakzioak
Informatika sailaDpto. InformáticaDatu Baseak
6
Transakzioak: Propietateak(ACID)
Atomizitatea: Edo osorik egiten da, edo ez da egiten.
Trinkotasunaren Artapena (Compactness): Egoera trinko batetik beste egoera trinko batera pasako da.
Isolamendua (Isolation): Transakzioek ez dituzte aldaketak ikusgai erakutsiko baliozko ez diren bitartean.
Iraunkortasuna (Durability): Transakzioak aldaketak egin eta baliozko bihurtuta dauzkanean, elkarren segidako hutsak gertaturik ere, datuok ez dira galduko.
Informatika sailaDpto. InformáticaDatu Baseak
7
Transakzioen aldiberekotasuna
Erabiltze anitzentzako sistemetan beharrezkoa da aldibereko-tasuna kontrolatuko duen mekanismoa izatea.
Aldi berean jardutearen ondoriozko trinkotasun-gabezia garrantzitsuak gerta daitezke.
Hona hemen arazo horietako zenbait:
• Galdutako eragiketa
• Irakurketazikina
• Laburpen okerra
Informatika sailaDpto. InformáticaDatu Baseak
8
Aldiberekotasuna: Galdutako eragiketa
kopiakop elementua_irakurri eta n1ean gorde
n1:=n1+1
n1-en balioaz eguneratuko du kopiakop
T1
kopiakop elementua_irakurri eta n2an gorde
n2:=n2+1
n2-ren balioaz eguneratuko du kopiakop
T2
Denbora
kopiakop = 2 eta kopiakop = 3 izan beharko luke
Liburutegi-sistemetan, mailegurako erabilgarri dauden kopien kopurua biltzeko eremua izaten da.Liburuaren ale bat itzultzen den bakoitzean gora egingo du, ale bat, eremu horrek, eta ale bat mailegutan uzten den bakoitzean, berriz, ale bat behera egingo du. Liburuzain zenbait izan eta 23456 zenbakidun liburuaren bi ale mailegatuz gero, baliteke une berean ekitea eguneratzeari. Liburuak izeneko taularen kopiakop zutabean dago kopien kopurua, eta hasierako balioa 1 baldin bada eta iliburua, bere aldetik, 23456.
Informatika sailaDpto. InformáticaDatu Baseak
9
Aldiberekotasuna: Irakurketa zikina
(X) elementua_irakurri
Transakzioak huts egin du eta X antzinako baliora itzuli beharra dago.
X := X - N(X) elementua idatzi
T1
X=80, N = 5, M = 10
(X) elementua_irakurri X := X + M(X) elementua_idatzi
T2
Denbora
X=8590 izan beharko luke
Baliteke transakzio honek Xren balio okerra erabilita eragiketak egin izana.
Informatika sailaDpto. InformáticaDatu Baseak
10
Aldiberekotasuna: Laburpen Okerra
(X) elementua_irakurri
(Y) elementua_irakurri
(Y) elementua_idatzi
X := X - N
Y := Y + N
(X) elementua_idatzi
T1
(X) elementua_irakurri
batuketa := batuketa + x
(Y) elementua_irakurri
batuketa := batuketa + Y
T2
Denbora
Batuketa :=0(A) elementua_irakurri batuketa := batuketa + a
Beste transakzioa eguneratu ondoren hartu da kontuan X; Y, ordea, eguneratu aurretik hartu da kontuan. Laburpen okerra da.
Informatika sailaDpto. InformáticaDatu Baseak
11
Aldiberekotasuna kontrolatzeko teknikak
Aldiberekotasuna kontrolatzeko teknikak
Ezkorrak
Baikorrak
Blokeoak
Time Stamping-a
Informatika sailaDpto. InformáticaDatu Baseak
12
Aldiberekotasuna kontrolatzeko teknikak: Blokeoak
Blokeo-motak:
a) Esklusiboak: Transakzio batek mota honetako blokeoari eusten dionean, beste ezein transakziok ez dauka blokeaturiko objektura iristerik, ez eta blokeatzerik, eutsita zeukan transakzioak askatzen ez duen bitartean. Eguneratu nahi denean erabiltzen da.
b) Partekatua: Transakzio batek era honetako blokeoa gauzatzen duenean, beste transakzio batzuek ere badaukate, partekatutako blokean, eta ez esklusiboan, objektuari eusterik. Datuak eguneratu beharrik izan ez, baina datuei buruzko kontsultak egin bitartean aldarazpenik gauza ez dadin nahi denean erabiliko da mota honetako blokeoa.
Informatika sailaDpto. InformáticaDatu Baseak
13
Blokeo-teknikek Bi fasetan darabilte algoritmoa:
Bi Fasetako algoritmoak bi izan daitezke:
Bi Fasetako Blokeo Artatzailea: Hasi aurretik, transakzioa saiatuko da beharrezkoak diren elementu guztiak blokeatzen. Hori egiterik ez badauka, ez du bat ere blokeatuko eta zain geratuko da erreserbak noiz egin ahal izango. Dead Lock delakoa saihestuko da teknika honen bidez. Hala ere, ia bideraezina da.
Bi Fasetako Blokeo Zorrotza: Transakzioak ez du elementuetako bat ere askatuko baieztatu edo abortatu arte (Commit edo Rollback). Erabili beharreko elementua baino ez du blokeatuko. Kasu honetan, bi transakzio edo gehiago zain egon daitezke, aurrera egin aurretik, besteak objekturen bat noiz askatuko (deadlock).
Aldiberekotasuna kontrolatzeko teknikak: Blokeoak
Informatika sailaDpto. InformáticaDatu Baseak
14
Deadlock
*********BESARKADA HILGARRIA
SESION 1: UPDATE KTA SET SALDOA=10000 WHERE IDKTA=1;
SESION 2: UPDATE KTA SET SALDOA=10000 WHERE IDKTA=2;
SESION 1: UPDATE KTA SET SALDOA=20000 WHERE IDKTA=2;
SESION 2: UPDATE KTA SET SALDOA=20000 WHERE IDKTA=1;
****Besarkada hilgarria gertatuko da
1. SAIOA: COMMIT;
2. SAIOA: COMMIT;
Bi transakzio zain daudenean besteak elementu baten gaineko blokeoa noiz askatuko:
Aldiberekotasuna kontrolatzeko teknikak: Blokeoak
Informatika sailaDpto. InformáticaDatu Baseak
15
Zein irtenbide eman Deadlock bati
Deadlock-a prebenitzeaBehar dituzten elementu guztiak aldez aurretik blokearaziko dizkie transakzioei.
Elementu horiek guztiak lortzerik izan ezean, ez du bat ere blokeatuko eta zain geratuko da berriz saiatu arte.
Deadlock-ari antzemateaAldian-aldian kontrolatuko da ea deadlock-ik izan den. Biktima diren transakzioak aukeratu eta, deadlock-a desagertu arte, transakzio horiek desegitea da irtenbidea. DBKS bakoitzak politika batzuk izango ditu biktimak hautatzeko.
Aldiberekotasuna kontrolatzeko teknikak: Blokeoak
Informatika sailaDpto. InformáticaDatu Baseak
16
Blokeoaren Ale-egitura
Honakoak blokea ditzakete DBKSek:
• Tuplo bateko zutabe bat • Erregistro bat (tupla) • Taula bat • Guztirako Datu Basea
Horri deritzo blokeoaren ale-egitura.Oso lodia den ale-egitura izanez gero, blokeo-kopuru txikiagoa kudeatuko da, baina transakzio askoren burutzapena atzeratu egingo du. Oso ale-egitura fina izanez gero, berriz, handiagoa izango da aldiberekotasuna, baina blokeo-kopuru handiagoa kudeatu beharra izango da.Nabaria da kontu honek sistemen errendimenduan daukan eragina.Tuplako edo erregistroko ale-egitura maila daukate Oracle-k eta Sql Server-ek.
Aldiberekotasuna kontrolatzeko teknikak: Blokeoak
Informatika sailaDpto. InformáticaDatu Baseak
17
Transakzio bakoitzari denbora-marka (Time-Stamp) esleitzean datza eta, horrela, T1 T2 baino arinago iritsiko da granulu komunetara. Granulu bat irakurtzean, gazteago den beste batek irakurria edo grabatua izan den egiaztatuko da. Horretarako, bi denbora-marka lotuko zaio elementu edo granulu bakoitzari:
MT_Irakurketa (X): Elementua irakurri duten transakzio guztien denbora-markarik altuena.
MT_Idazketa (X): Elementua idatzi duten transakzio guztien denbora-markarik altuena.
Teknika honen bidez ez da blokeorik izango. Transakzioak ordenatu egingo ditu. Atzeratu egingo dira transakzioak.
Aldiberekotasuna kontrolatzeko teknikak: Denbora-marka
Informatika sailaDpto. InformáticaDatu Baseak
18
T transakzioari esker idatzi_elementua (X) eragiketa gauzatuko da.• Baldin eta MT_irakurketa (X) > MT (T), T abortatu eta desegin.• Bestela exekutatu idatzi_elementua (X) eta MT_idazketa (X):= MT (T)
T transakzioak irakurri_elementua (X) eragiketa gauzatuko du• Baldin eta MT_idazketa (X) > MT (T), T abortatu eta desegin.• Bestela exekutatu irakurri_elementua (X) eta MT_irakurketa (X):= MT
(T)
T deseginez gero, desegin egingo dira T-ren eguneratzeak erabilitako transakzio guztiak, eta horrela gertatuko da kaskadan.
Aldiberekotasuna kontrolatzeko teknikak: Denbora-marka
Informatika sailaDpto. InformáticaDatu Baseak
19
Aske iritsiko dira transakzioak elementuetara, eta bukatu aurretik zehaztu ahal izango da interferentziarik izan den.
Transakzioak 3 fasekotzat hartuko dituzte mota honetako teknikek:
• Irakurketa: Transakzioek objektuen kopia pribatuen gaineko eragiketak gauzatuko ditzute (transakzioaren bidez baino ezin euts dakieke).
• Balidatzea: Transakzio batek aldarazitako objektu-multzoa, transakzio horren irakurketa-fasean balidazioa egin duen besteren batek aldarazitako objektuen multzoarekin gainjartzen den egiaztatzeko.
• Grabaketa: Interferentziarik detektatu ezean, aldarazpenak grabatu egingo dira, eta objektuen bertsio pribatuak bertsio eguneratu bilakaraziko.
Aldiberekotasuna kontrolatzeko teknikak: Baikorrak
Informatika sailaDpto. InformáticaDatu Baseak
20
Huts fisikoa, logikoa edo gizakiak eragindakoa izanez gero, DBKS-k huts horiek prebenitzeko, detektatzeko eta zuzentzeko mekanismoak eman behar ditu.Transakzioak baliogabetu eta berreskuratu ahal izateko, honakoa erabiliko da:
• Bitakora
Berreskuratzea
Informatika sailaDpto. InformáticaDatu Baseak
21
Bitakora (egunkaria): Transakzioen DB-aren gainean gauzatzen dituzten ekintzak biltzen ditu bere baitara. Hutsa gertatuz gero, DB--aren berreskuratzea burutzeko balio du.
Sarrerak:
• Hasiera, T• Idatzi, T, X, lehenagoko balioa, ondorengo balioa• Irakurri, T, X• Baieztatu, T• Abortatu, T
Berreskuratzea: Bitakora
Informatika sailaDpto. InformáticaDatu Baseak
22
T1
irakurri (A)
idatzi (A)baieztatu
T2
irakurri (D)irakurri(B)
idatzi (A)baieztatu
Bitakora
Hasiera T1
Irakurri T1, AHasiera T2
irakurri T2, Dirakurri T2, B
idatzi T1, A, x, ybaieztatu T1
idatzi T2, A, x, ybaieztatu T2
Berreskuratzea: Bitakora
Informatika sailaDpto. InformáticaDatu Baseak
23
Diskoko datuak noiz aldatzen diren kontuan hartuta, ezberdin berreskuratuko dira. Bi motako eguneratzeak daude:
Berehalako Idazketa: Datu bat aldarazten denean, fisikoki idazten da datu hori diskoan.
Idazketa Diferitua: Datuen idazketa fisikoa atzeratu egingo da diskorako irisgarritasuna optimizatzeko. Aldian behin gertatuko da idazketa (CheckPoint).
Berreskuratzea: Berehalako/Diferituriko Idazketa
Informatika sailaDpto. InformáticaDatu Baseak
24
Hutsa gertatzen denean, honako hauek egin beharko dira:• Balidatu gabeko transakzio guztiek eragindako aldaketa guztiak desegin.
• Ezer ez da Berregin behar, eguneratze guztiak diskoan baitaude.
T1
T2
T3
Sistemaren hutsa
DenboraCommit
Ez berregin
Ez berregin
Desegin
Berreskuratzea: Berehalako Idazketa Desegin/Ez Berregin
Informatika sailaDpto. InformáticaDatu Baseak
25
Adb.:T3
T3
Sistemaren hutsa
Denbora
Desegin BD
X=3
BD
X=6
BD
X=9
T3 transakzioan gauzatzen den ekintza bakoitzeko, honako hau idatziko da Bitakoran: Hasiera, T3 T3,x,3,6T3,x,6,9Hortaz, hutsa gertatu ondoren, egoera trinkora itzuli beharra dago, datuak balidatu gabe daudelako eta transakzioa oraindik amaitu ez delako. Datuak desegiteko erabiliko da bitakora.
Berreskuratzea: Berehalako Idazketa Desegin/Ez Berregin
Informatika sailaDpto. InformáticaDatu Baseak
26
Hutsa gertatzen denean, azken checkpoint-az geroztik balidatutako transakzio guztiak berregin beharko dira.Ez da ezer desegin behar, izan ere, ez baita DB-an eguneratu.
T1
T2
T3
Sistemaren hutsa
DenboraCommit
Berregin
Azken Checkpoint-a
Transakzioa baliogabetu
Berreskuratzea: Idazketa Diferitua Desegin/Ez Berregin
Informatika sailaDpto. InformáticaDatu Baseak
27
Adb.:T3
T3
Sistemaren hutsa
Denbora
(T3 baliogabetu)BD
X=3
Memoria
X=6
Memoria
X=9
Hutsa gertatu ondoren, egoera trinkora itzuli beharra dago; izan ere, datuak balidatu gabe daude eta transakzioa ez da oraindik amaitu. Ez da ezer egin behar T3 baliogabetzeko, Datu Basean (diskoan) ez baita ezer kopiatu.
Berreskuratzea: Idazketa Diferitua Desegin/Ez Berregin
Informatika sailaDpto. InformáticaDatu Baseak
28
Adb.:T2
T2
Sistemaren hutsa
Denbora
(T2 berregingo du)
BD
X=3
Memoria
X=6
Memoria
X=9
Idazketa diferituan, transakzioan eragiten diren aldaketak bitakoran kopiatuko dira. Horregatik, hutsa gertatzen denean, DB trinkoa izan dadin, T2-ren egoera balidatura joan beharko du, bitakorako informazioa berreskuratuz.
Checkpoint-a Commit T2
BD
X=6
bitakoraHasiera T2
T2,x,3,6
bitakoraHasiera T2
T2,x,3,6T2,x,6,9
T2 balidatuko duT2ren amaiera
Berreskuratzea: Idazketa Diferitua Desegin/Ez Berregin
Informatika sailaDpto. InformáticaDatu Baseak
29
Aldian behin, DB osoa eta bitakora biltegiratze-bitarteko ekonomiko batean kopiatuko dira.
Huts katastrofikoa gertatuz gero, BD-ren azken kopia osoa berreskura daiteke eta bitakoraren azken transakzio balidatuak berregin.
TT
T
T
T
TT T
T
T
T
Huts katastrofikoa
BD-ren kopia osoa
Checkpoint-a
bitakora bitakora
Berreskuratzea: Huts katastrofikoak