Basi di dati distribuite: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
+ db distribuiti oggi
+client-server
Riga 1:
{{avanzamento|2575%|lezione}}
I sistemi a database distribuiti rappresentano una grande sfida per i progettisti di DBMS, in particolare per garantire le proprietà acide e la prevenzione di deadlock.
 
Riga 7:
 
== Paradigma Client-Server ==
Il paradigma client-server è uno dei metodi più usati per eseguire operazioni sulle basi di dati. La gestione dei dati è a carico del server che forniscono servizi ai client che li hanno invocati. I client formulano le query e presentano i dati all'applicazione che ne fa richiesta. Normalmente il server è un servizio '''reattivo''' cioè effettua operazioni sulla base di dati solamente quando un client ne fa richiesta.
 
Si noti che il paradigma client-server non implica che il server e il client siano su macchine diverse connesse via rete, possono anche essere sulla stessa macchina e interagire mediante chiamate di sistema.
 
Ultimamente<ref>2007 - {{cita libro|titolo=Basi di dati - Architetture e linee di evoluzione|capitolo=6|pagine=p. 199-201|editore=McGraw-Hill|anno=2007}}</ref> si è diffusa la architettura '''three-tier''': client-server applicativo-server. Il server applicativo ha la funzione di gestire la logica in comune con tutti i client (che ora vengono chiamati '''thin-client''' per il ridotto numero di funzioni). Un esempio di ''thin-client'' sono i browser web, che utilizzano applicativi web per connettersi ai server web.
 
== Tecniche di distribuzione ==
Line 51 ⟶ 55:
 
quindi:
 
<math>
\text{Transazione}_i = \text{Transazione} \ltimes \text{ControCorrente}_i
Line 66 ⟶ 71:
I livelli di trasparenza sono parametri che definiscono quanto il programmatore che scrive query per una base di dati distribuita su differenti DBMS può astrarre il suo codice. Questo è dovuto alle differenti tecniche di approccio alla frammentazione, query, ecc. dei vari DBMS.
 
Possiamo identificare trequattro principali livelli di trasparenza:
# Trasparenza di '''frammentazione''': il programmatore non conosce (nè gli interessa) come e quando la base di dati è frammentata e distribuita;
# Trasparenza di '''allocazione''': il programmatore conosce la struttura dei frammenti, ma non l'allocazione fisica dei dati;
# Trasparenza di '''linguaggio''': il programmatore conosce sia la struttura dei frammenti che la loro allocazione ed è costretto a indicarle manualmente, però è avvantaggiato dall'avere un solo linguaggio per tutti i DBMS. Si noti che se la maggior parte dei DBMS utilizzi SQL come linguaggio, ogni DBMS ha un proprio dialetto che complicherebbe lo sviluppo in caso di DBMS diversi;
# Nessuna trasparenza.