Vector versiune - Version vector

Un vector de versiune este un mecanism de urmărire a modificărilor datelor într-un sistem distribuit , în care mai mulți agenți ar putea actualiza datele în momente diferite. Vectorul de versiune permite participanților să stabilească dacă o actualizare a precedat-o pe alta ( s-a întâmplat înainte ), a urmat-o sau dacă cele două actualizări s-au întâmplat concomitent (și, prin urmare, ar putea intra în conflict între ele). În acest fel, vectorii de versiune permit urmărirea cauzalității printre replici de date și sunt un mecanism de bază pentru replicarea optimistă . În termeni matematici, vectorul de versiune generează o precomandă care urmărește evenimentele care preced și, prin urmare, poate influența actualizările ulterioare.

Vectorii de versiune mențin o stare identică cu cea dintr-un ceas vectorial , dar regulile de actualizare diferă ușor; în acest exemplu, replicile pot experimenta actualizări locale (de exemplu, utilizatorul care editează un fișier pe nodul local) sau se poate sincroniza cu o altă replică:

  • Inițial, toate contoarele de vectori sunt zero.
  • De fiecare dată când o replică experimentează un eveniment de actualizare locală, își crește contorul în vector cu unu.
  • De fiecare dată când două replici și sincroniza, ambele au stabilit elementele în copie lor a vectorului la maxim al elementului pe ambele contoare: . După sincronizare, cele două replici au vectori de versiune identici.

Perechi de replici, , , pot fi comparate prin inspectarea vectorilor lor versiune și determinată să fie: identică ( ), concurentă ( ) sau comandate ( sau ). Relația ordonată este definită ca: Vector dacă și numai dacă fiecare element este mai mic sau egal cu elementul său corespunzător în și cel puțin unul dintre elemente este strict mai mic decât. Dacă nici unul sau altul , dar vectorii nu sunt identici, atunci cei doi vectori trebuie să fie concomitenți.

Vectorii de versiune sau variantele sunt utilizate pentru a urmări actualizările în multe sisteme de fișiere distribuite, cum ar fi Coda (sistem de fișiere) și Ficus, și sunt principala structură de date din spatele replicării optimiste.

Alte mecanisme

  • Istoriile Hash evită utilizarea contoarelor prin păstrarea unui set de hashes din fiecare versiune actualizată și compararea seturilor respective prin includerea setului. Cu toate acestea, acest mecanism poate oferi doar garanții probabilistice.
  • Vectoarele cu versiune concisă permit economii de spațiu semnificative atunci când manipulați mai multe articole reproduse, cum ar fi în structurile de directoare din sistemele de fișiere.
  • Ștampilele de versiune permit urmărirea unui număr variabil de replici și nu recurg la contoare. Acest mecanism poate prezenta probleme de scalabilitate în unele setări, dar poate fi înlocuit cu intervale de ceasuri arbore.
  • Intervalul cu ceasuri arborele generalizează vectori de versiune și ceasuri vectoriale și permite un număr dinamic de replici / procese.
  • Vectoarele de versiuni delimitate permit o implementare delimitată, cu contoare de mărimi delimitate, atât timp cât perechile de replici pot fi sincronizate atomic.
  • Vectoarele cu versiune punctată abordează scalabilitatea cu un set mic de servere care mediază accesul replicii de către un număr mare de clienți concurenti.

Referințe

linkuri externe