Cómo elegir una base de datos de acuerdo a tus necesidades

Cómo elegir una Base de Datos

La elección de un sistema de base de datos implica experiencia y una cuidadosa consideración de una gran cantidad de detalles y factores altamente técnicos.

En este post te daremos una visión general de un par de puntos claves que debes considerar antes de elegir tu base de datos ideal. Además, te hablaremos de lo que es el teorema CAP y sobre los sistemas de bases de datos NoSQL y NewSQL. 

Teorema CAP

El teorema de CAP (o teorema de Brewer) dice que no es posible que un sistema informático distribuido proporcione simultáneamente garantías de consistencia, disponibilidad y tolerancia de partición. En pocas palabras, el teorema establece que no puedes tener todos los tres al mismo tiempo, ya que existen intercambios naturales entre cada uno de los elementos.

El teorema se explica mejor con la frase "rápido, barato o fácil, elige solo dos", en el teorema CAP vendría siendo: "consistencia, disponibilidad o tolerancia de partición, elige dos". Repasemos lo que representan cada uno de estos elementos. 

La consistencia indica que todas las operaciones o transacciones de base de datos exitosas dan como resultado un estado válido, y que todos los datos solicitados están actualizados o se devuelve en un error. 

La disponibilidad dice que cada solicitud recibe una respuesta, sin garantía de que contenga la versión más reciente de la información. Se implica que la disponibilidad aquí se refiere a los nodos de la base de datos que están en un estado de no falla, y que devuelven la información solicitada en lugar de un error.

La tolerancia de partición garantiza que el sistema continúe funcionando a pesar de la partición arbitraria debido a fallas en la red. Una partición en este caso se refiere a una partición de red en la que un componente o subsistema de una red ya no puede comunicarse con otro. En el caso de un DDBS, uno o más nodos distribuidos ya no pueden comunicarse con otros en presencia de una partición de red.

Es importante destacar que el teorema de CAP solo es relevante en la existencia de una partición de red y ciertas fallas, pero no durante la operación normal de DDBS. A continuación te mostramos las únicas tres combinaciones que puede tener el teorema CAP que de hecho son también las unas garantías que un sistema DDBS puede ofrecer:

AP: altamente disponible y tolerante a la partición, pero no consistente.

CP: consistente y tolerante a la partición, pero no altamente disponible.

CA: Altamente disponible y consistente, pero no tolerante a la partición.

Al momento de colocar estos tres elementos juntos, comenzarás a comprender por qué solo puede priorizar dos de ellos a la vez.

Por ejemplo, si tu sistema necesita estar disponible y ser tolerante a la partición, entonces debes estar dispuesto a aceptar cierta latencia en tus requisitos de consistencia.

NoSQL vs NewSQL

Los sistemas de base de datos NoSQL han ganado una gran popularidad, principalmente debido a los beneficios relacionados con la escalabilidad y la alta disponibilidad.

Favorecen el modelo de consistencia eventual, y estos sistemas típicamente modelan y almacenan datos de manera diferente a las relaciones tabulares tradicionales de las bases de datos relacionales.

Estos sistemas también se caracterizan por ser bases de datos modernas a escala web que, por lo general, están libres de esquemas (esquemas dinámicos que no sufren de rigidez), proporcionan una fácil replicación, tienen API simples y son finalmente consistentes. Son los más adecuados para aplicaciones y datos no estructurados que involucran grandes volúmenes de datos, por ejemplo, todo lo relacionado con la Big Data.

Con NoSQL, los datos se generan y consumen en volúmenes, variedades y velocidades más grandes que nunca. Las bases de datos NoSQL son, en muchos aspectos, mucho más adecuadas para esto, y en las soluciones de Big Data en general en relación con su contraparte RDBMS.

Existen múltiples tipos de bases de datos NoSQL, siendo el documento, el valor clave, el gráfico y la columna amplia los más frecuentes. Los diferentes tipos se refieren principalmente a cómo se almacenan los datos y las características del propio sistema de base de datos.

Cada tipo implica compensaciones entre el modelo de datos preferido, la simplicidad, las capacidades de consulta y operativas, la particionabilidad, la coherencia, la disponibilidad, el rendimiento, la tolerancia a la falta de coincidencia de la impedancia del objeto, etc.

Los beneficios de las bases de datos NoSQL son la simplicidad, escalabilidad, flexibilidad, velocidad, baja latencia, alta disponibilidad, alto rendimiento y tolerancia de partición. De hecho, muchos de estos sistemas están diseñados para pedidos extraordinarios y volúmenes de datos que pueden aprovechar la escala horizontal masiva (por ejemplo, miles de servidores) para satisfacer la demanda.

A diferencia de los sistemas RDBMS, los ingenieros de software pueden instalar, administrar y utilizar casi por completo muchas bases de datos NoSQL sin necesidad de un fondo DBA. Esto es importante ya que no requieren múltiples roles altamente especializados lo que hace que la base de datos sea altamente eficiente, más ágil, más rápido y menos propenso a errores.

Las desventajas potenciales son el compromiso de consistencia según el teorema de CAP (aunque muchos ofrecen consistencia a nivel de registro o documento), la falta general de transacciones ACID (aunque no siempre) y la pérdida potencial de datos, capacidad de consulta, estabilidad y los lenguajes de consulta personalizados que estos sistemas emplean, aunque algunos también admiten consultas SQL comunes.

Finalmente, están los sistemas de bases de datos NewSQL, estos son sistemas de bases de datos relacionales que combinan una sólida consistencia y garantías transaccionales de ACID con escalabilidad y rendimiento similares a los de NoSQL.

Sin embargo, dado que los sistemas de bases de datos NewSQL son relativamente nuevos y aún no están tan establecidos como los sistemas relacionales y NoSQL sería mucho mejor si se investigara un poco más a profundidad antes de considerar usarlo.

Según el Tipo de Datos

Antes de considerar una base de datos específica, tomate un tiempo para pensar qué tipo sería el mejor para el proyecto en cuestión. La pregunta va más allá de "SQL vs. NoSQL".

Por eso te invitamos a que sigas leyendo para conocer los tipos de bases de datos más comunes, los méritos relativos de cada uno y cómo determinar cuál es la mejor opción.

Relacionales

Las bases de datos relacionales se desarrollaron en la década de los 70 para manejar la creciente inundación de datos que se producían. Estas tienen una sólida teoría fundamental y han influido en casi todos los sistemas de bases de datos en uso de hoy en día.

Las bases de datos relacionales almacenan conjuntos de datos como: tablas con filas y columnas donde toda la información se almacena como un valor en una celda específica. Los datos en un RDBMS se gestionan utilizando SQL. Aunque existen diferentes implementaciones, SQL está estandarizado y proporciona un nivel de previsibilidad y utilidad.

Las bases de datos relacionales se destacan en el manejo de datos altamente estructurados y proporcionan soporte para transacciones ACID (Atomicidad, consistencia, aislamiento y durabilidad). Los datos se almacenan y recuperan fácilmente mediante consultas SQL.

La estructura se puede ampliar rápidamente porque agregar datos sin modificar los datos existentes es simple. Su único inconveniente es que aunque son muy buenos con los datos estructurados, no son tan buenos con los datos no estructurados. Esta base de datos puede ser usada para:

  • Situaciones donde la integridad de los datos es absolutamente primordial (es decir, para aplicaciones financieras, defensa y seguridad, e información privada de salud).
  • Datos altamente estructurados.
  • Automatización de procesos internos.

Documentos

Un almacén de documentos es una base de datos no relacional que almacena datos en documentos JSON, BSON o XML. Cuentan con un esquema flexible. A diferencia de las bases de datos SQL, donde los usuarios deben declarar el esquema de una tabla antes de insertar datos,  aquí los almacenes de documentos no imponen la estructura del documento.

Los documentos pueden contener cualquier dato deseado. Tienen pares clave-valor pero también incorporan metadatos de atributos para facilitar las consultas.

Estas bases de datos manejan bien los datos semiestructurados y no estructurados. Los usuarios no necesitan saber durante la configuración qué tipos de datos se almacenarán, por lo que esta es una buena opción cuando no estás claro de antemano qué tipo de datos recibirás.  Esta base de datos puede ser usada para:

  • Datos no estructurados o semiestructurados.
  • Gestión de contenido
  • Análisis de datos en profundidad.

Clave Valor

Un almacén de clave-valor es un tipo de base de datos no relacional donde cada valor está asociado con una clave específica. También se conoce como una matriz asociativa. La "clave" es un identificador único asociado solo con el valor. Las claves pueden ser cualquier cosa permitida por el DBMS.

Los "valores" se almacenan como manchas y no necesitan un esquema predefinido. Pueden tomar casi cualquier forma: números, cadenas, contadores, JSON, XML, HTML, PHP, binarios, imágenes, videos cortos, listas e incluso otro par clave-valor encapsulado en un objeto. Algunos DBMS permiten que se especifique el tipo de datos, pero no es obligatorio.

Este estilo de base de datos tiene muchos aspectos positivos. Es increíblemente flexible, capaz de manejar una gran variedad de tipos de datos fácilmente. Pero, esta flexibilidad tiene un precio y es que es imposible consultar valores, ya que se almacenan como un blob y solo se pueden devolverlos de la misma forma.

Esto hace que sea difícil hacer informes o editar partes de valores. Esta base de datos puede ser usada para:

  • Recomendaciones
  • Perfiles de usuario y configuraciones
  • Datos no estructurados como reseñas de productos o comentarios de blogs.
  • Gestión de sesiones a escala.
  • Datos a los que se accederá con frecuencia pero que no se actualizarán con frecuencia.

Columnas Anchas

Los almacenes de columna ancha, también llamados almacenes de columna o almacenes de registros extensibles, son bases de datos dinámicas no relacionales orientadas a columnas.

A veces se los ve como un tipo de almacén de valores clave, pero también tienen atributos de las bases de datos relacionales tradicionales. Las tiendas de columna ancha utilizan el concepto de espacio de teclas en lugar de esquemas. Un espacio de teclas abarca familias de columnas (similares a las tablas pero con una estructura más flexible), cada una de las cuales contiene varias filas con columnas distintas.

Cada fila no necesita tener el mismo número o tipo de columna. Esta base de datos puede ser usada para:

  • Análisis de big data donde la velocidad es importante.
  • Almacenamiento de datos en big data.
  • Proyectos a gran escala (este estilo de base de datos no es una buena herramienta para aplicaciones transaccionales promedio).

Búsqueda 

Puede parecer extraño incluir motores de búsqueda en un artículo sobre tipos de bases de datos. Sin embargo, Elasticsearch ha visto una creciente popularidad en esta esfera a medida que los desarrolladores buscan formas innovadoras de reducir el retraso en la búsqueda.

Elastisearch es una solución no relacional de almacenamiento y recuperación de datos basada en documentos específicamente diseñada y optimizada para el almacenamiento y la recuperación rápida de datos. Este buscador puede ser usado solo para mejorar la experiencia del usuario con resultados de búsqueda más rápidos.