El mundo de las bases de datos NoSQL

El escenario de las Bases de Datos

Fuente: The 451 Group

En un post anterior intentaba describir algunas alternativas de Bases de Datos de Nube. Específicamente me enfoqué en bases de datos con el modelo relacional: AmazonRDS, ClearDB, Xeround, Database.com, VoltDB, etc. Sin embargo no comentamos nada acerca del modelo alternativo: el NoSQL. Bajo este concepto se agrupan un buen número de productos de base de datos, con muy diversos modelos conceptuales y soluciones técnicas, cuyo denominador común es que no siguen el modelo de bases de datos relacional. No basan su gestión en el lenguaje SQL.

¿De qué se trata entonces el NoSQL? Bueno, lo que sucede es que estas soluciones han venido a llenar un importante carencia de las bases de datos relacionales en cuanto a la capacidad que estas tienen en escalabilidad, distribución y manejo de datos no estructurados. Estas 3 características resulta que son cada día más relevantes debido precisamente a la Nube; a los múltiples y diversos servicios cuyo crecimiento y replicación distribuida son extremadamente necesarios: ¿cómo estructurar, por ejemplo, la información almacenada por Google o Facebook? ¿cómo asegurar que nuestra información en la Nube siempre estará disponible? ¿cómo manejar el explosivo crecimiento de información y su variabilidad de formatos? En síntesis, ¿cómo manejar el problema de almacenamiento del Big Data?

De hecho, existen muy buenos artículos que detallan con profundidad el problema de las bases de datos relacionales. Recomiendo mucho que lean “NoSQL, NewSQL and Beyond” que presenta concisa pero analíticamente este problema de las bases de datos relacionales acuñando inclusive el término “STRAINED” (torcidas o exprimidas, en español) con las iniciales de cada uno de los problemas que tienen.

El hecho es que, a raíz de esta problemática han surgido los modelos NoSQL (y también, aunque menos conocidos, los NewSQL que se comentan en el artículo mencionado). Entre los principales modelos NoSQL y algunos productos insignia de cada modelo tenemos:

Modelo: Documental
Descripción: Guardan documentos textuales y/o XML, principalmente en formato JSON, con la finalidad de almacenar información con estructura laxa y cambiante. Ideal para servicios que requieren almacenar transacciones o datos enviados desde dispositivos móviles que usen JSON para intercambiar información.
Productos insigne: MongoDB (por mucho la BD NoSQL más usada en el mundo), CouchDB

Modelo: Almacén Llave-Valor (Key-Value Stores)
Descripción: Enfocadas en el almacenamiento de información de configuración o basada en arreglos asociativos (hashes). Su intención es guardar simplemente una gran serie de “llaves” con su valor asociado lo cual da una potente flexibilidad ante datos no estructurados.
Productos insigne: Redis, Amazon DynamoDB

Modelo: Orientadas a almacenamiento de Clusters Distribuidos – Big Tables
Descripción:
Orientadas en el almacenamiento de enormes cantidades de información desestructurada que es almacenada de manera distribuida en cientos o miles de clusters en localizaciones geográficas incluso distintas. Típicamente basadas en almacenamiento en innovadores sistemas de archivos y usando el cada día más relevante algoritmo Map-Reduce.
Productos insigne: Hadoop, HBase, Cassandra

Esos son los principales pero realmente están emergiendo modelos cada día más innovadores enfocados en retos distintos y con diferentes capacidades y orientaciones. De hecho, los modelos y productos descritos arriba tienen fronteras poco claras y por tanto varias características de un producto podrían clasificarlo dentro de otro modelo.

Todos estos modelos aprovechan la tendencia al “relajamiento” de la integridad de la información en beneficio de la replicabilidad y disponibilidad de la información. Por ejemplo, ¿han notado como Facebook en ocasiones no representa exactamente la misma información dependiendo de dónde o cómo accedamos a él? Eso es porque estos servicios “relajan” la integridad la cual hacen “eventualmente” consistente. Pero no siempre consistente en tiempo real.

Ello debido al Teorema de CAP que en esencia nos dice que la información, en un cluster distribuido y replicado, podrá estar siempre disponible o siempre consistente pero no ambas. Pero realmente, ¿a quién le interesa que Facebook o Twitter se tarden unos segundos o un par de minutos en hacer consistente la información? Casi a nadie. Lógicamente en ambientes empresariales la integridad y consistencia es esencial y por eso la gran solidez histórica de las bases relacionales.

Y es precisamente a la última frase del párrafo anterior que las bases de datos relacionales no solo no están muertas sino que son más importantes y relevantes que nunca. Las aplicaciones empresariales internas y estructuradas seguirán requiriendo de la integridad y estructura eficiente que este modelo privilegia. Las bases de datos relacionales seguirán teniendo vigencia, sin duda. Lo que pasa es que el modelo NoSQL viene a solventar otro tipo de necesidades de almacenamiento y recuperación de información que han aparecido en años recientes principalmente debido a los servicios de Internet, la Nube y la problemática del Big Data. En síntesis, ambos modelos pueden perfectamente coexistir y tener validez en los desarrollos de software. Simplemente que los Developers necesitaremos ser bilingües o, mejor dicho, políglotas para poder aplicar el modelo de base de datos correcto dependiendo de la necesidad de negocio específica que tengamos entre manos. El mensaje para el SQL y el NoSQL es “zapatero a tus zapatos”.

¿Y entonces.. con qué debo iniciar si quiero empezar a usar NoSQL? A menos que tu proyecto tenga realmente una problemática grande debido al enorme volumen de datos y distribución en clusters (en cuyo caso Hadoop o Cassandra podrían ser la vía) lo típico es que uno empiece usando el modelo documental (MongoDB es el líder; es el MySQL del mundo NoSQL) o el de Key-Value Stores (con Redis, por ejemplo).

Voilá!

, , , , , ,

  1. #1 por Julia el abril 23, 2016 - 9:27 am

    Me ha parecido una descripción perfecta de las bases de datos en la nube! Felicitaciones!

    • #2 por Leopoldo el abril 25, 2016 - 11:41 am

      Gracias. Qué bien que te fue útil Julia. Esa es la intención de la descripción. Saludos!

  1. El escenario de las Bases de Datos de Nube « Cloud.Mobile.Social

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: