Concetti Chiave
- I database condivisi sono accessibili da più utenti tramite una rete locale o internet, permettendo la consultazione e l'elaborazione delle informazioni.
- Nel contesto di un'agenzia turistica online, il database contiene informazioni sui viaggi ed è ospitato sul server del sito per l'accesso simultaneo degli utenti.
- I processi concorrenti si verificano quando più utenti interagiscono con le stesse risorse del database nello stesso momento.
- Il DBMS utilizza meccanismi di blocco per garantire che solo una transazione possa aggiornare un dato alla volta, prevenendo accessi concorrenti.
- Il dato viene sbloccato una volta completato l'aggiornamento, permettendo alle altre transazioni in attesa di procedere.
Analizziamo ora il caso di un database condiviso tra più utenti connessi tramite una rete locale o via web. Il database potrebbe ad esempio essere allocato fisicamente sul computer come funzione di server della rete, mentre gli utenti potrebbero consultarlo ed elaborarlo attraverso computer con funzioni di client in una LAN o via internet.
Prendiamo ad esempio in considerazione un sito di un'agenzia turistica che vende via web viaggi per le vacanze estive. Il database condiviso contenente tutte le informazioni sui viaggi è allocato fisicamente sul server che ospita che il sito dell'agenzia. A questo sito accedono contemporaneamente più utenti via web per consultare le ultime novità in fatto di mete turistiche e per avere informazioni o acquistare i viaggi messi a disposizione dall'agenzia. Attraverso i loro processi, i diversi utenti connessi via web al sito leggono e modificano le informazioni raccolte nel database condiviso, anche nello stesso istante, concorrendo all'utilizzo della stessa risorsa, cioè le tabelle, le righe e gli attributi del database dell'agenzia turistica.
Due processi si dicono concorrenti quando l'esecuzione di uno di essi inizia quando l'esecuzione dell'altro non è ancora terminata. I processi concorrenti possono essere disgiunti, quando non usano le stesse risorse o usano le risorse ma in tempi diversi, o interagenti, quando usano le stesse risorse nello stesso intervallo di tempo.
Il DBMS può in certi casi mettere lo stato di blocco (Lock), per cui solo la transazione che ha avuto accesso a tali dati può aggiornarli,mentre tutti gli altri tentativi di aggiornamento da parte di altre transizioni concorrenti vengono impediti. In altre parole, ponendo un dato da aggiornare in stato di blocco si impedisce alle altre transazioni di aver accesso al dato in aggiornamento, in modo che solo la transazione che ha effettuato il blocco possa agire su di esso in muta esclusione .
Solo al termine dell'aggiornamento il dato è sbloccato, in modo che le altre transazioni concorrenti in attesa possano a questo punto proseguire nella loro esecuzione.
Domande da interrogazione
- Cosa si intende per processi concorrenti in un database condiviso?
- Come gestisce il DBMS la concorrenza tra processi?
- Cosa succede ai dati una volta terminato l'aggiornamento da parte di una transazione?
I processi concorrenti sono quelli in cui l'esecuzione di uno inizia mentre l'altro non è ancora terminato. Possono essere disgiunti o interagenti a seconda dell'uso delle risorse.
Il DBMS può mettere in stato di blocco (Lock) i dati, permettendo solo alla transazione che ha accesso di aggiornarli, impedendo così aggiornamenti da parte di altre transazioni concorrenti.
Una volta terminato l'aggiornamento, il dato viene sbloccato, permettendo alle altre transazioni concorrenti in attesa di proseguire con la loro esecuzione.