Introducción a Bases de Datos Distribuidas

En los últimos años, muchas empresas se han centrado en el almacenamiento y análisis de grandes cantidades de información siendo esto imposible con sistemas de almacenamiento tradicionales. Las bases de datos distribuidas surgieron con el objetivo de solventar esta problemática y poder almacenar mayor cantidad sin poner en riesgo la eficiencia del sistema.

Bases de Datos Distribuidas

Los sistemas de almacenamiento distribuidos son un conjunto de bases de datos que están repartidas de manera lógica por diferentes lugares geográficos.
En función de cómo se distribuye la información en los distintos nodos, se pueden encontrar los siguientes tipos de bases de datos:

Centralizada La base de datos se encuentra en un único lugar centralizado
Replica Toda la información existente en un nodo se encuentra replicada en otro
Particionada Solo hay una copia de un elemento en todo el clúster pero se encuentra distribuida entre todos los nodos
Híbrida Es una combinación de los esquemas particionado y replica. En este esquema, la información se encuentra particionada entre los distintos nodos y se almacena una réplica también particionada

 

Las bases de datos distribuidas suelen utilizar un modelo híbrido. Estos sistemas almacenan la información de manera particionada entre los distintos nodos generando además réplicas de los datos. Esto permite tener la información disponible incluso tras fallo en alguno de los nodos.

Teorema del CAP

El Teorema del CAP aplica a ambientes distribuidos y fue referenciado por el profesor Eric A. Brenere en el año 2000. Este teorema enuncia que en un esquema de cómputo distribuido solo se pueden garantizar dos de las siguientes tres características:

Consistencia Disponibilidad Tolerancia a particiones
Consistency Availability Partition Tolerance
Todos los nodos garantizan la misma información bajo las mismas condiciones que afecten su entrada. Todos los nodos deben entregar la misma información de salida El sistema debe aceptar requerimientos de escritura o lectura sin importar que algún nodo se haya caído o tenga problemas El sistema debe de seguir funcionando incluso si existen fallos en alguno de sus nodos

 

Al solo poder seleccionar dos de las tres propiedades anteriores, los sistemas de almacenamiento distribuido se dividen en:

  • CP: El sistema garantiza consistencia aún y cuando existan particiones geográficas. Estos sistemas presentan problemas de disponibilidad en caso de que un nodo falle (master node). Éste es elegido en dominios donde prevalece la consistencia sobre la disponibilidad. Aquí podemos encontrar bases de datos como Couchbase, Mongo DB, HBase, Redis o Paxos.
  • AP: La información estará siempre disponible incluso existiendo fallos en varios de los nodos, pero puede existir información no consistente. En este tipo de esquema prevalece la disponibilidad frente a la consistencia. Algunas bases de datos con este esquema serían: CouchDB, Cassandra, Riak, etcétera.
  • CA: Sistema con alta disponibilidad y consistencia pero la información no estará particionada. Aquí se pueden encontrar las bases de datos relacionales como MySQL, Oracle, Postgre, MariaDB, etcétera.

ACID vs. BASE

Con la llegada de las primeras bases de datos relacionales apareció el acrónimo ACID. Una base de datos cumple con la propiedad ACID cuando cumple con las siguientes características:

Atomicidad Consistencia Aislamiento Durabilidad
Atomicity Consistency Isolation Durability
Todos los pasos de una operación son ejecutados o bien ninguno Existe integridad en el sistema La ejecución de una operación no afectará a otras Las operaciones realizadas persistirán en el sistema

 

Con la aparición de las nuevas bases de datos distribuidas, donde la consistencia no siempre es una característica propia del sistema, ha surgido un nuevo tipo de bases de datos denominado BASE. Este nuevo grupo tiene las siguientes características:

Disponibilidad básica Estado suave Consistencia eventual
Basic Availability Soft-state Eventual consistency
Los datos siempre estarán disponibles mientras la consistencia lo permita El estado de la información cambiará en el tiempo al no existir consistencia en la información Estos sistemas garantizan consistencia en algún tiempo en el futuro

 

Estas nuevas bases de datos BASE tienen la característica de ser sistemas donde prevalece la alta disponibilidad del sistema frente a la consistencia de la información (AP en el Teorema del CAP).

Consistencia eventual

La aparición de los nuevos sistemas de almacenamiento tipo BASE ha provocado que la información sea eventualmente consistente. La consistencia eventual es una propiedad que asegura que el sistema tenderá a ser consistente pero sin especificar el cuándo. El “cuándo” se haga efectiva la consistencia, depende de diversos factores como la velocidad de conexión, posición geográfica de los nodos, etcétera.
Aún no garantizándose la consistencia, un sistema eventualmente consistente aparenta siempre ser consistente.

Las bases de datos distribuidas nacen para dar respuesta a la necesidad de las empresas de almacenar una mayor cantidad de información y de mejorar la eficiencia respecto a sistemas tradicionales. Estos sistemas permiten la escalabilidad horizontal que se traduce en una reducción de costes al poder adaptar el sistema a la cantidad de información almacenada, además de optimizar el procesamiento de los datos.
La aparición de estos sistemas en adición a que muchos de ellos son desarrollos open-source, ha abierto un amplio mundo de posibilidades,  facilitando la aparición de nuevos productos que se adaptan cada vez más a nuestras necesidades.