Teorema CAP: ¿Consistencia, disponibilidad o tolerancia?

Fuentes: CAP Theorem - Partition is a verb

El Teorema CAP es un concepto fundamental en el diseño de sistemas distribuidos, pero a menudo se malinterpreta. La mayoría de las personas familiarizadas con bases de datos conocen el acrónimo ACID, y muchos desarrolladores de sistemas distribuidos han oído hablar del Teorema CAP, aunque quizás no comprendan todos los detalles. La frase clave que suele asociarse con el Teorema CAP es “elige dos de tres”, refiriéndose a Consistencia, Disponibilidad y Tolerancia a Particiones. La confusión suele surgir con la tercera letra, 'P', que erróneamente se asocia con 'Performance' (rendimiento). En realidad, 'P' significa Tolerancia a Particiones.

La clave para comprender el Teorema CAP reside en entender que, en este contexto, 'Partición' no es un sustantivo que describe una porción de datos (como cuando se fragmenta una base de datos por ubicación geográfica), sino un verbo. Se refiere a la ocurrencia de una interrupción en la red que divide el sistema en partes aisladas, impidiendo la comunicación entre ellas. Imagina que una falla de red separa a una parte de tu sistema en Maryland del resto; esto es una partición.

La Tolerancia a Particiones, por lo tanto, se refiere a la capacidad del sistema para seguir funcionando, aunque de forma degradada, cuando ocurre una partición de red. El sistema debe decidir cómo manejar la situación, y esto implica que, inevitablemente, se debe priorizar entre Consistencia y Disponibilidad. Si se prioriza la Consistencia, las actualizaciones podrían no propagarse a todas las partes del sistema durante la partición, limitando la disponibilidad. Si se prioriza la Disponibilidad, se podría permitir que diferentes partes del sistema tengan datos inconsistentes.

Un ejemplo concreto: si una partición de red aísla a Maryland, el sistema podría elegir mantener el servicio en funcionamiento en Virginia, pero a costa de que los usuarios en Maryland no puedan acceder a él. Esto no se debe a la forma en que se almacenan los datos, sino a la decisión que toma el sistema para mantener la operación durante la partición.

En resumen, la Tolerancia a Particiones no trata sobre la ubicación física de los datos, sino sobre cómo el sistema responde a las fallas de comunicación. Comprender que 'Partición' es un verbo, no un sustantivo, es crucial para diseñar sistemas distribuidos robustos y conscientes de las limitaciones impuestas por el Teorema CAP.