Vector de versión


Un vector de versión es un mecanismo para rastrear cambios en los datos en un sistema distribuido , donde varios agentes pueden actualizar los datos en diferentes momentos. El vector de versión permite a los participantes determinar si una actualización precedió a otra ( sucedió antes ), la siguió o si las dos actualizaciones sucedieron al mismo tiempo (y, por lo tanto, podrían entrar en conflicto entre sí). De esta manera, los vectores de versión permiten el seguimiento de la causalidad entre las réplicas de datos y son un mecanismo básico para la replicación optimista . En términos matemáticos, el vector de versión genera un preorden que rastrea los eventos que preceden y, por lo tanto, pueden influir en actualizaciones posteriores.

Los vectores de versión mantienen un estado idéntico al de un reloj vectorial , pero las reglas de actualización difieren ligeramente; En este ejemplo, las réplicas pueden experimentar actualizaciones locales (por ejemplo, el usuario edita un archivo en el nodo local) o pueden sincronizarse con otra réplica:

Los pares de réplicas, a , b , se pueden comparar inspeccionando sus vectores de versión y se determina que son: idénticos ( ), concurrentes ( ) u ordenados ( o ). La relación ordenada se define como: Vector si y solo si cada elemento de es menor o igual que su elemento correspondiente en , y al menos uno de los elementos es estrictamente menor que. Si ninguno de los dos o , pero los vectores no son idénticos, entonces los dos vectores deben ser concurrentes.

Los vectores de versión [1] o variantes se utilizan para rastrear actualizaciones en muchos sistemas de archivos distribuidos, como Coda (sistema de archivos) y Ficus, y son la estructura de datos principal detrás de la replicación optimista. [2]