Operatii Concurente Asupra Bazelor de Date

Imagine preview
(8/10 din 1 vot)

Acest proiect trateaza Operatii Concurente Asupra Bazelor de Date.
Mai jos poate fi vizualizat cuprinsul si un extras din document (aprox. 2 pagini).

Arhiva contine 3 fisiere doc de 68 de pagini (in total).

Iti recomandam sa te uiti bine pe extras, cuprins si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca. Ai nevoie de doar 6 puncte.

Domeniu: Limbaje de Programare

Cuprins

INTRODUCERE 4
TRANZACŢII ASUPRA BAZELOR DE DATE 5
1. CONCEPTE DE BAZĂ 5
ITEM-URI 5
BLOCAJE 6
AŞTEPTAREA LA NESFÂRŞIT ŞI BLOCAREA DEFINITIVĂ 7
SERIALIZABILITATEA 9
PROTOCOALE ŞI ORARE 11
2. UN MODEL SIMPLU DE TRANZACŢII 11
TEST DE SERIALIZABILITATE 13
UN PROTOCOL CARE GARANTEAZĂ SERIALIZABILITATEA 16
3. UN MODEL CU BLOCAJE LA CITIRE ŞI SCRIERE 17
TEST DE SERIALIZABILITATE 18
PROTOCOLUL ÎN DOUĂ FAZE 21
4. UN MODEL „DOAR-CITIRE, DOAR-SCRIERE” 21
ECHIVALENŢA ORARELOR 21
TEST PENTRU DEPISTAREA TRANZACŢIILOR INUTILE 22
UN MODEL FORMAL 23
TEST DE SERIALIZABILITATE 23
PROTOCOLUL ÎN DOUĂ FAZE, DIN NOU 27
5. CONCURENŢA PENTRU STRUCTURILE IERARHICE DE ITEM-URI 28
UN PROTOCOL SIMPLU PENTRU ARBORII DE ITEM-URI 28
UN PROTOCOL CARE PERMITE BLOCAREA PE SUBARBORI 31
6. PROTECŢIA ÎMPOTRIVA DISTRUGERILOR 33
COPIILE DE SIGURANŢĂ 34
JURNALUL 34
TRANZACŢII COMISE 35
EŞUAREA TRANZACŢIILOR INDIVIDUALE 36
TRANZACŢII CARE NU SE SUPUN POLITICII DE COMITERE ÎN DOUĂ FAZE 36
PARTAJAREA DATELOR ÎN REŢEA CU AJUTORUL PROGRAMULUI VISUAL FOXPRO 39
TIPURI DE BLOCAJE 39
BLOCAREA ÎNREGISTRĂRILOR SAU A FIŞIERELOR ? 39
BLOCĂRI AUTOMATE SAU MANUALE ? 40
CUM PROCEDĂM ATUNCI CÂND ÎNREGISTRAREA DE CARE AVEM NEVOIE ESTE BLOCATĂ 43
UTILIZAREA SESIUNILOR 43
UTILIZAREA ZONELOR TAMPON PENTRU EDITARE 44
ZONELE TAMPON DE ÎNREGISTRĂRI 46
ZONE TAMPON DE TABELE 46
BLOCAREA ÎN ZONELE TAMPON 46
EFECTUAREA ACTUALIZĂRILOR 48
DETECTAREA ŞI REZOLVAREA CONFLICTELOR 49
UTILIZAREA PROCESĂRII TRANZACŢIILOR 52
DEFINIREA LIMITELOR UNEI TRANZACŢII 53
DERULAREA ÎNAPOI A UNEI TRANZACŢII 53
IMBRICAREA TRANZACŢIILOR 55
ALTE SOLUŢII PENTRU REDUCEREA NUMĂRULUI DE BLOCAJE 57
UTILIZAREA SEMAFORIZĂRII BLOCAJELOR 57
LUCRUL CU VARIABILE DE MEMORIE 57
STOCAREA DATELOR DE CĂUTARE ÎN MASIVE 57
CREAREA FIŞIERELOR TEMPORARE 58
ALEGERE ÎNTRE SORTARE ŞI INDEXARE 58
DESCHIDEREA FIŞIERELOR PENTRU UTILIZARE EXCLUSIVĂ 58
UTILIZAREA COMENZII EXCLUSIVE 59
PREZENTAREA APLICAŢIEI 60
CONCLUZII 68
BIBLIOGRAFIE 69

Extras din document

INTRODUCERE

Până nu demult, conceptul nostru despre bazele de date a fost unul în care programele care accesează o bază de date sunt rulate unul după altul. De multe ori aceasta este situaţia în care ne aflăm. Astăzi există de asemenea numeroase aplicaţii în care mai mult de un program, sau diferite execuţii ale aceluiaşi program rulează simultan accesând aceeaşi bază de date. Un astfel de exemplu este un sistem de rezervare a locurilor la o companie aeriană, unde mai mulţi agenţi pot vinde bilete sau face rezervări de locuri. Problema care intervine este aceea că dacă nu suntem atenţi cum permitem la mai mult de două programe să acceseze baza de date, putem vinde acelaşi loc de două ori. Intuitiv, două procese care citesc şi schimbă valoarea aceluiaşi obiect nu trebuie rulate concurent .

Un al doilea exemplu este acela al unei baze de date statice, unde mai mulţi utilizatori pot face interogări în acelaşi timp. Aici, atât timp cât nimeni nu schimbă datele, nu este important în ce ordine procesele citesc datele, putem lăsa sistemul de operare să programeze simultan cererile de citire cum doreşte. În acest gen de situaţii, unde se face numai citire, dorim să permitem un număr maxim de operaţii concurente, ca să economisim timp. În cazul sistemului de rezervări, unde citirea şi scrierea sunt amândouă în progres, avem nevoie de restricţii pentru cazurile în care permitem ca două programe să ruleze concurent.

În această lucrare vom considera modele de procese concurente care sunt legate de operaţiile pe bazele de date. Modelele se disting în primul rând prin detaliile care descriu accesul la elementele din baza de date. Pentru fiecare model vom descrie o cale rezonabilă de a permite acele operaţii concurente care păstrează integritatea bazelor de date şi să prevenim acele operaţii care pot distruge integritatea unei baze de date, atât cât un model cu detalii limitate ne poate spune despre integritate. Şi ca o regulă, cu cât modelul este mai detaliat cu atât mai mult putem permite concurenţa în siguranţă.

De asemenea în această lucrare vom discuta şi despre felul în care sunt abordate operaţiile concurente pe baze de date în limbajul de programare Visual FoxPro. Partea practică a acestei lucrări o reprezintă aplicaţia “Administraţia unui cămin studenţesc”, care reprezintă un sistem informatic pentru un cămin studenţesc. Această aplicaţie simulează serviciile de cazare şi plată a taxei de cămin care se realizează într-un cămin studenţesc.

TRANZACŢII ASUPRA BAZELOR DE DATE

1. CONCEPTE DE BAZĂ

O tranzacţie este o singură execuţie a unui program. Acest program poate fi o simplă interogare sau un program complex cu apeluri din unul din limbajele QUEL, SEQUEL, etc… Mai multe execuţii independente ale aceluiaşi program pot fi în progres simultan; fiecare dintre aceste execuţii este o tranzacţie.

ITEM-URI

Ne imaginăm că baza de date este împărţită în item-uri (articole) care sunt porţiuni din baza de date care pot fi blocate. Prin blocarea unui item o tranzacţie poate preveni alte tranzacţii să mai acceseze acel item, până când tranzacţia care deţine blocajul nu deblochează itemul respectiv. O parte a DBMS (DataBase Maneger System) numită managerul de blocaje asigneză şi înregistrează blocajele, ca de altfel şi arbitrarea între două sau mai multe cereri de a bloca acelaşi item.

Natura şi mărimea item-urilor sunt subiectele unor teme ce urmează în continuare. De exemplu, în modelul relaţional de date, putem alege item-uri mari, cum sunt relaţiile, sau item-uri mici ca tuple individuale sau componente din tuple. Putem alege o mărime intemediară pentru item-uri, de exemplu item-urile pot fi colecţii de 100 de tuple din aceeaşi relaţie. În modelul de reţea, de exemplu, un item poate fi o colecţie a tuturor înregistrărilor unui singur tip.

Alegând item-uri mari sistemul poate pica în timpul menţinerii blocărilor, în timp ce alegând item-uri mici putem permite mai multor tranzacţii să opereze în paralel. Dacă o tranzacţie tipică (într-un sistem relaţional) citeşte sau modifică un tuplu, care se găseşte cu ajutorul unui index, ar fi mai convenabil de tratat tuplele ca item-uri. Dacă o tranzacţie tipică face o operaţie de join pe două sau mai multe relaţii, atunci poate ar fi mai bine să tratăm relaţiile ca item-uri.

În ceea ce urmează, vom presupune că atunci când o parte a unui item este modificată, întreg item-ul este modificat şi primeşte o valoare unică şi neegală cu nici o altă valoare care poate fi obţinută prin orice altă modificare. Facem această presupunere nu numai pentru a simplifica modelarea tranzacţiilor. În practică, necesită multă muncă din partea sistemului pentru a deduce fapte ca acela că rezultatul unei modificări a unui item dă acelui item aceeaşi valoare pe care o avea după câteva modificări precedente. Mai mult dacă sistemul poate să-şi amintească, când o parte a unui item a rămas neschimbată după ce item-ul a fost modificat, acesta poate de asemenea să împartă item-ul în mai multe item-uri mai mici. O consecinţă a presupunerii noastre despre indivizibilitatea item-urilor este că nu vom greşi dacă vom considera item-urile ca simple variabile, aşa cum sunt folosite în limbajele de programare obişnuite.

Fisiere in arhiva (3):

  • Bibliografie.doc
  • Cuprins.doc
  • Operatii Concurente Asupra Bazelor de Date.doc