La co­mpu­tación en la nube ha abierto muchos caminos nuevos en el mundo digital. En pa­r­ti­cu­lar, la di­s­po­ni­bi­li­dad de recursos in­fo­r­má­ti­cos en internet permite innovar rá­pi­da­me­n­te, utilizar los recursos de manera flexible y, por lo tanto, adaptar las co­n­si­guie­n­tes po­si­bi­li­da­des de es­ca­la­bi­li­dad a las ne­ce­si­da­des in­di­vi­dua­les. No obstante, el teorema CAP demuestra que esta fle­xi­bi­li­dad puede poner trabas a otros aspectos. Te ex­pli­ca­mos qué hay detrás del teorema CAP (también llamado teorema de Brewer o Brewers theorem) y te pre­se­n­ta­mos algunos ejemplos de modelos que siguen este teorema sobre los sistemas di­s­tri­bui­dos.

Compute Engine
La solución IaaS ideal para tus cargas de trabajo
  • vCPU económico con núcleos dedicados
  • Flexible y sin periodo mínimo co­n­tra­c­tual
  • Soporte experto 24/7

¿En qué consiste el teorema CAP?

El teorema CAP (en inglés, CAP theorem) sostiene que no es posible que un sistema di­s­tri­bui­do cumpla o garantice a la vez más de dos de las tres pro­pie­da­des si­guie­n­tes:

  • Con­si­s­te­n­cy (co­he­re­n­cia): todos los clientes ven los mismos datos si­mu­l­tá­nea­me­n­te.
  • Avai­la­bi­li­ty (di­s­po­ni­bi­li­dad): todos los clientes disponen de acceso de lectura y escritura en cualquier momento, ya que el sistema siempre responde.
  • Partition tolerance (to­le­ra­n­cia a la partición): el sistema continúa fu­n­cio­na­n­do como un todo incluso cuando los nodos de la red fallan o no se comunican entre sí.
Hecho

El teorema CAP surgió de una su­po­si­ción del in­fo­r­má­ti­co Eric Brewer, que la mencionó durante su co­n­fe­re­n­cia en el Simposio sobre Pri­n­ci­pios de Co­mpu­tación Di­s­tri­bui­da (PODC, por sus siglas en inglés) en el año 2000. Por ello, esta propuesta sobre las li­mi­ta­cio­nes de las ca­ra­c­te­rí­s­ti­cas de los sistemas di­s­tri­bui­dos también se conoce como teorema de Brewer o Brewers theorem. En 2002, Seth Gilbert y Nancy Lynch, del MIT, de­mo­s­tra­ron su validez con evidencia axio­má­ti­ca, es­ta­ble­cié­n­do­la como teorema.

Ac­tua­l­me­n­te, a la hora de diseñar un nuevo sistema di­s­tri­bui­do se sigue este teorema y se elige un modelo básico concreto que presenta dos de las tres pro­pie­da­des. De esta manera, la conexión de varios or­de­na­do­res in­de­pe­n­die­n­tes en un solo sistema de red puede cla­si­fi­car­se en las si­guie­n­tes tres ca­te­go­rías, de acuerdo con el teorema CAP:

  • Sistema CP (co­he­re­n­cia y to­le­ra­n­cia a la partición)
  • Sistema AP (di­s­po­ni­bi­li­dad y to­le­ra­n­cia a la partición)
  • Sistema CA (co­he­re­n­cia y di­s­po­ni­bi­li­dad)

El teorema CAP en la práctica

Para que los pri­n­ci­pios del teorema CAP te queden un poco más claros, te pre­se­n­ta­mos algunos ejemplos de sistemas di­s­tri­bui­dos que de­mue­s­tran su validez. En cada caso también re­sa­l­ta­mos de qué manera se aplica el teorema de Brewer.

Ejemplo de sistema AP: sistema de nombres de dominio

Un ejemplo bien conocido de sistema AP es el DNS (del inglés domain name system o sistema de nombres de dominio). Este co­m­po­ne­n­te de red central se encarga de asociar los nombres de dominio a las di­re­c­cio­nes IP co­rre­s­po­n­die­n­tes y se basa en las pro­pie­da­des de di­s­po­ni­bi­li­dad y to­le­ra­n­cia a la partición. Gracias a la gran cantidad de se­r­vi­do­res que existen, el sistema está di­s­po­ni­ble casi sin excepción: si falla un servidor DNS, el siguiente se hace cargo. No obstante, de acuerdo con el teorema CAP, el DNS no ofrece co­he­re­n­cia: si se modifica un registro en el DNS, pueden pasar incluso varios días hasta que el cambio se transmita a toda la jerarquía del sistema y todos los clientes puedan verlo.

Ejemplo de sistema CA: sistemas de gestión de bases de datos re­la­cio­na­les

Los sistemas de gestión de bases de datos que siguen el modelo de base de datos re­la­cio­nal son un buen ejemplo de sistema CA. Estos sistemas se ca­ra­c­te­ri­zan sobre todo por su gran co­he­re­n­cia y por ofrecer la máxima di­s­po­ni­bi­li­dad posible. Sin embargo, hay que tener en cuenta que, en caso de conflicto, la di­s­po­ni­bi­li­dad puede disminuir en favor de la co­he­re­n­cia. En este caso, la seguridad en términos de partición tiene un papel se­cu­n­da­rio.

Ejemplo de sistema CP: apli­ca­cio­nes fi­na­n­cie­ras o bancarias

La di­s­po­ni­bi­li­dad es una de las pro­pie­da­des más im­po­r­ta­n­tes de la mayoría de los sistemas di­s­tri­bui­dos, por lo que los sistemas CP son poco ha­bi­tua­les en la práctica. No obstante, estos sistemas de­mue­s­tran ser muy útiles en ámbitos como el de las finanzas: las apli­ca­cio­nes bancarias, que deben cargar y tra­n­s­fe­rir dinero de manera fiable, dependen de la co­he­re­n­cia y la seguridad de partición para descartar cualquier po­si­bi­li­dad de efectuar ano­ta­cio­nes in­co­rre­c­tas, incluso si se in­te­rru­m­pe el tráfico de datos.

Ir al menú principal