Versione vettore - Version vector
Un vettore di versione è un meccanismo per il rilevamento delle modifiche ai dati in un sistema distribuito , in cui più agenti possono aggiornare i dati in tempi diversi. Il vettore versione permette ai partecipanti di determinare se un aggiornamento preceduto altro ( successo-prima ), seguita, o se i due aggiornamenti avvenuti contemporaneamente (e quindi possano entrare in conflitto tra loro). In questo modo, i vettori versione consentono causalità monitoraggio tra le repliche dei dati e sono un meccanismo di base per la replica ottimista . In termini matematici, la versione del vettore genera un preordine che traccia gli eventi che precedono, e può quindi influenzare, in seguito gli aggiornamenti.
Vettori versione mantengono lo stato identico a quello in un vettore orologio , ma le regole di aggiornamento differiscono leggermente; In questo esempio, le repliche possono sia sperimentare aggiornamenti locali (ad esempio, l'utente modifica di un file sul nodo locale), oppure possono eseguire la sincronizzazione con un'altra replica:
- Inizialmente tutti i contatori vettoriali sono zero.
- Ogni volta che una replica sperimenta un evento di aggiornamento locale, incrementa il proprio contatore nel vettore per uno.
- Ogni volta due repliche ei sincronizzare, entrambi fissati gli elementi nella loro copia del vettore al massimo dell'elemento attraverso entrambi i contatori: . Dopo la sincronizzazione, le due repliche sono identici vettori di versione.
Coppie di repliche, , , possano essere confrontati dal controllo del loro vettori versione e determinati ad essere: identici ( ), concomitante ( ), o ordinata ( o ). La relazione ordinata è definita come: Vettore se e solo se ogni elemento è inferiore o uguale al suo elemento corrispondente , e almeno uno degli elementi è strettamente minore di. Se nessuno o , ma i vettori non sono identiche, quindi i due vettori devono essere concomitante.
Vettori versione o varianti sono utilizzati per monitorare gli aggiornamenti in molti file system distribuiti, come Coda (file system) e Ficus, e sono la struttura dei dati principale dietro replica ottimista.
altri meccanismi
- Storie Hash evitano il ricorso ad contatori, mantenendo una serie di hash di ogni versione aggiornata e confrontando questi set per set inclusione. Tuttavia, questo meccanismo può solo dare garanzie probabilistiche.
- Concise Versione vettori consentono un notevole risparmio di spazio quando si maneggiano oggetti multipli replicati, come ad esempio in strutture di directory in file system.
- Francobolli Versione permettono il monitoraggio di un numero variabile di repliche e non ricorrere ai contatori. Questo meccanismo può rappresentare problemi di scalabilità in alcune impostazioni, ma può essere sostituito per intervallo Albero Clocks.
- Intervallo Albero Clocks generalizzare vettori di versione e orologi vettoriali e permette numeri dinamiche di repliche / processi.
- Delimitate Versione vettori permettono un'implementazione limitata, con contatori dimensioni limitate, purché coppie di replica possono essere atomicamente sincronizzati.
- Tratteggiate Versione Vettori affrontare la scalabilità con un piccolo insieme di server che mediano l'accesso replica da un gran numero di client concorrenti.