jueves, 29 de marzo de 2012

Replicacion y Consistencia

Replicacion.
Los datos en nuestro sistema consisten en una colección de elementos llamados objetos. Un objeto podría ser un archivo o un objeto en Java. La replicación de datos es utilizada para el mantenimiento automático de copias de datos en múltiples computadoras, por ejemplo el almacenamiento de datos provenientes de servidores Web en la memoria caché.

Es una técnica para la mejora de los servicios que ofrecen los sistemas distribuidos porque proporciona una mejora del rendimiento de los servicios e incrementa su disponibilidad y lo hace tolerante a fallos.

Su objetivo es que las operaciones de los clientes sobre las réplicas se realicen de forma consistente y con un tiempo de respuesta y un caudal satisfactorio. La consistencia no se logra algunas veces debido a que las réplicas de un cierto objeto no son necesariamente idénticas, al menos no en cada instante de tiempo particular. Algunas réplicas pueden haber recibido actualizaciones que otras no hayan recibido.



Por que replicar?
Confiabilidad:
- Continuidad de trabajo ante fallas
- Mayor cantidad de copias mejor protección contra corrupción de datos


Rendimiento:

- Escalabilidad en número
- Escalabilidad en área geográfica (menor tiempo de acceso a copias cercanas)
- Consulta simultánea de datos





Consistencia
La consistencia de los datos es definida entre el programador y el sistema, que garantiza que si el programador sigue las reglas, la memoria será consistente y el resultado de las operaciones de memoria será predecible.


Los lenguajes de alto nivel, tales como C, C++ y Java, respetan parcialmente este modelo traduciendo operaciones de memoria en operaciones de bajo nivel para preservar la memoria semántica. Para mantener el modelo, los compiladores pueden reordenar algunas instrucciones de memoria, y las llamadas a las bibliotecas como pthread_mutex_lock(), encapsular la sincronización necesaria.

En general no es aceptable que distintos clientes obtengan diferentes resultados al acceder a los mismos datos. Como mínimo no es aceptable si el resultado lleva a una inconsistencia detectable y significativa entre diferentes aplicaciones o incluso dentro de una misma aplicación.
Los ejemplos incluyen:
  • Linealizable (también conocido como el estricta o consistencia atómica)
  • Consistencia secuencial:
       - El resultado de una ejecución es el mismo si todas las operaciones (lectura y escritura) de todos los procesos sobre el dato fueran ejecutadas en algún orden secuencial y las operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su programa.
  • Consistencia de causalidad
  • Consistencia liberada
  • Consistencia eventual
  • Consistencia delta
  • Consistencia PRAM (también conocido como consistencia FIFO)
  • Consistencia débil
    - La consistencia débil asegura consistencia sobre un grupo de operaciones, no sobre lecturas o escrituras aisladas.
  • Consistencia vector campo


Bibliografias:
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/REPLIC02.html
http://es.wikipedia.org/wiki/Consistencia_de_datos

1 comentario: