Pregunta

http://en.wikipedia.org/wiki/CAP_theorem

http://www.cs.berkeley.edu/~brewer/cs262b -2004 / PODC-keynote.pdf

Creo que no es muy sencillo por qué sólo dos de

  1. Consistencia
  2. Disponibilidad
  3. tolerancia partición

puede contener para cualquier sistema de base de datos distribuida dado. Esta conjetura fue probada, pero hay una manera más fácil de ver por qué probablemente Puede espera?

Yo no busco a una prueba, sólo una buena manera de entender por qué este teorema podría tener sentido. ¿Cuál es el razonamiento?

¿Fue útil?

Solución

bien, imaginemos que tiene una base de datos distribuida. Digamos que usted tiene un nodo en Oregon y uno en California. La teoría dice que la PAC que se ejecutará en problemas cuando la creación de este tipo de base de datos.

Por ejemplo, si la consulta de datos de una base de datos, tiene que ser el mismo que los datos en la otra base de datos. Esto asegura que todo lo que valoran tienen en una base de datos está garantizado a estar en el otro ( La consistencia de la teoría de la PAC). Hacer esto le permite actualizar los datos en una base de datos y consulta de otro, obteniendo los mismos resultados.

Actualización de datos del ordenador A en Oregon, transfiere los datos a California

Cuando actualizar los datos en el nodo de Oregon, los datos se envían al nodo de California para que las bases de datos son consistentes. Con el fin de mantener la coherencia de verdad, tenemos que asegurar que ambas bases de datos reciben la actualización antes de que cualquiera se les permite realmente guardar los datos (en dos fases mediante las transacciones distribuidas). En otras palabras, si la base de datos de California no puede guardar los datos por alguna razón (por ejemplo, fallo del disco duro), entonces la base de datos en Oregon no guardará los datos y fallará la transacción.

El problema con las transacciones distribuidas como la de arriba viene cuando queremos tener una alta disponibilidad. En este escenario anterior, el proceso de tratar de conseguir ambas bases de datos en sincronía es un proceso muy, muy lento. (Imagínese, tenemos que enviar los datos de Oregón a California, asegúrese de que llegue allí, asegúrese de que ambas bases de datos tienen cerraduras en los datos, etc.) Esto causa grandes problemas cuando queremos un sistema que es rápido y sensible, incluso durante momentos de alta demanda. (Este es el Disponibilidad del teorema CAP).

Por lo general, lo que hacemos con el fin de asegurar la alta disponibilidad es utilizamos la replicación en lugar de transacciones distribuidas. Así que en lugar de garantizar que California puede aceptar los datos, sólo seguir adelante y la almacenamos en el nodo de Oregon y luego enviar los datos a California cuando se deciden a hacerlo. Esto garantiza que siempre se almacenan los datos, independientemente de que California está lista para almacenar los datos o no.

El nodo de Oregon actualiza los datos mientras que California lee los datos. Posteriormente, los datos se trasladó a California

Esto mejora la disponibilidad, pero a costa de consistencia. Véase, si alguien actualiza los datos en Oregon y entonces alguien (al mismo tiempo) lee los datos en California, que no están recibiendo los nuevos datos - las bases de datos ya no son consistentes. De hecho, no van a ser consistentes hasta Oregon envía los datos a California!

Por lo tanto, esa es la disponibilidad web frente disyuntiva consistencia.

Tolerancia partición es el tercer aspecto de la teoría de la PAC. La partición es, en este contexto, la idea de que una base de datos (u otro sistema distribuido) pueden romper en secciones separadas y seguir funcionando correctamente.

La pregunta es, ¿qué sucede cuando ambas bases de datos están funcionando correctamente, pero el enlace desde Oregón a California se corta?

Oregon está siendo actualizado mientras que el nodo de California se está leyendo. La red entre los nodos se corta.

Si actualizamos la base de datos en Oregon, tenemos que obtener los datos a California de una manera u otra (o de transacciones distribuidas de replicación). Sin embargo, si se corta el enlace entre los dos, entonces el sistema se ha convertido repartió y las bases de datos ya no están unidos entre sí.

Cuando esto sucede, sus opciones son para dejar de permitir actualizaciones (para mantener la consistencia) a costa de la disponibilidad o para permitir las actualizaciones (para mantener la disponibilidad) a costa de consistencia.

Como se puede ver, la tolerancia partición crea compensaciones directas entre consistencia y disponibilidad.


No es, evidentemente, más que eso, pero esos son un par de ejemplos de cómo estos tres aspectos principales de los sistemas distribuidos trabajan y uno contra el otro. href="http://www.julianbrowne.com/article/viewer/brewers-cap-theorem" rel="nofollow noreferrer"> Julian de Browne de la teoría de la PAC es un excelente lugar para aprender más.

scroll top