La coherencia de datos implica que la misma información se vea igual en todas partes. La dirección del cliente en el sistema de facturación coincide con la del sistema de envíos. El inventario en el almacén coincide con el del sitio web. Cuando los sistemas no coinciden, se toman decisiones erróneas. Los pedidos se envían a direcciones antiguas. Los clientes compran productos que no están disponibles. La coherencia es fundamental para los sistemas que dependen unos de otros.
Los sistemas distribuidos dificultan la consistencia. Los datos replicados en múltiples servidores pueden desincronizarse. Una partición de red aísla una región de otra. Ambas regiones aceptan escrituras. Cuando la partición se restablece, los datos entran en conflicto. El teorema CAP establece que se puede tener consistencia, disponibilidad y tolerancia a particiones, pero no las tres simultáneamente. La mayoría de las bases de datos distribuidas optan por la disponibilidad y la consistencia eventual. Esto significa que los datos convergen con el tiempo, pero existe un intervalo en el que los distintos nodos ven valores diferentes. La consistencia fuerte requiere coordinación, lo que conlleva latencia. La elección depende de la aplicación. Un libro mayor bancario necesita consistencia fuerte. Un feed de redes sociales puede tolerar la consistencia eventual. La respuesta correcta no es universal. Depende de qué falla cuando los datos no coinciden.
Modelos de consistencia
- Fuerte: todos los nodos ven los mismos datos inmediatamente.
- Eventual: los nodos convergen con el tiempo.
- Causal: las operaciones relacionadas se ven en orden
- Lee tus propios escritos: verás tus actualizaciones inmediatamente.
La consistencia es un espectro. La cuestión es cuánta inconsistencia puede tolerar la aplicación antes de fallar.
Comments
No comments yet. Be the first to share a thought.
Leave a comment