Press "Enter" to skip to content

Bases de Datos NoSQL

leninmhs 0

Por Carlos Ruiz y Degli Pino

Introducción

Con el auge de los sistemas distribuidos y la BigData, han tomado relevancia los gestores de base de datos que permiten fácilmente escalar horizontalmente1 para distribuir sus aplicaciones a un gran volumen de usuarios. Ejemplos de servicios tales como el buscador Google o las redes sociales tales como Facebook y Twitter, apalancan distintos ámbitos de sus áreas de negocio sobre gestores de base de datos que no responden al modelo tradicional Relacional.

En tal sentido el término que ha venido a agrupar los distintos tipos de bases de datos que no responden al modelo relacional se han denominado Bases de Datos NoSQL. El término no viene dado por un rechazo al modelo tradicional, sino al planteamiento de Bases de Datos No solamente SQL; basado en la clasificación de Ben Scofield2, se identifican los siguientes tipos de base de datos según su Taxonomía; Llave-Valor, Basado en Columnas, Basado en Documentos, Basado en Grafos y Relacional. A efecto del estudio de las bases de datos NoSQL hemos sustituido las Bases de Datos Relacionales por las Bases de Datos Orientadas a Objetos.

Qué se entiende por NoSQL

Antes que nada un gestor de base de datos NoSQL asume que no requiere ofrecer todas las garantías de las Bases de Datos Relacionales (conocidas también como ACID por las siglas de Atomicity, Consistency, Isolation and Durability), con tal de ofrecer una alternativa que permita mayores capacidades en cuanto a escalabilidad, tolerancia a fallos y simplicidad con respecto a estructuras. Este modelo alternativo también es conocido como BASE (por las siglas en inglés de Basic Availability, Soft-state and Eventual consistency)3.

Se han desarrollado una cantidad de soluciones que tienen características únicas en el abordaje de este nuevo punto de vista sobre las bases de datos. Sin embargo algunas de estas características son compartidas, podemos listar, la simplicidad en el diseño, el control fino sobre los esquemas para disponibilidad y escalabilidad horizontal.

Tipos de BD NoSQL

Llave Valor (Key-Value)

Las bases de datos del tipo llave-valor almacenan la información de un modo sin esquema que puede ser accedido a través de criterios relativos a la llave o nombre único dentro del repositorio. En tal sentido existen distinciones según la implementación. Las bases de datos de llave valor pueden implementar soluciones con respecto a; consistencia eventual, jerárquicas, basadas en caché en memoria RAM, orientado a rendimiento a disco y en listas ordenadas.

Los gestores de base de datos del tipo llave valor más conocidos son:

Basadas en Columnas (Columnar)

Bases de Datos basadas en columnas, es la implementación de almacenamiento y análisis de una gran cantidad de datos con orientación columnar haciendo diferencia de las relacionales basadas en filas.

Las bases de Datos están organizadas de columna por columna en lugar de la fila, es decir todos los casos de un solo elemento de datos se almacenan de modo que se puede acceder como una unidad.

Los gestores de base de datos del tipo columnar más conocidos son:

Basada en Documentos

El concepto central de una base de datos orientada a documentos es el concepto mismo de Documento. Mientras cada implementación de base de datos orientada a documentos difiere en los detalles, en general todas ellas comparten el principio de que los documentos encapsulan y codifican datos o información siguiendo algún formato estándar. Entre las codificaciones usadas en la actualidad se encuentran XML, YAML, JSON y BSON entre otros.

Los documentos dentro de una base de datos orientada a documentos son similares, de algún modo, a registros, tuplas o filas en una base de datos relacional pero menos rígidos. No se requiere ajustarlos a un esquema estándar, ni tener todos las mismas secciones, atributos, claves o elementos por el estilo.

Los gestores de bases de datos basados en documentos más conocidos son:

Basada en Grafos

Las bases de datos orientadas a grafos (BDOG) representan la información como nodos de un grafo y sus relaciones con las aristas del mismo, de manera que se pueda usar teoría de grafos para recorrer la base de datos ya que esta puede describir atributos de los nodos(entidades) y las aristas(relaciones).

Una base de datos orientada a grafos debe estar absolutamente normalizada, esto quiere decir que cada tabla tendría una sola columna y cada relación tan solo dos, con esto se consigue que cualquier cambio en la estructura de la información tenga un efecto tan solo local.

Entre los gestores de bases de datos basados en grafos más conocidos se encuentran:

Orientada a Objetos

Los gestores de bases de datos orientados a objetos son profundamente dependientes de los lenguajes de programación donde se desarrollan o se inscriben, es así como desde Java, C# o Python se almacenan dentro de estos sistemas de persistencia los objetos definidos dentro de las clases establecidas dentro de la aplicación.

Entre los gestores de bases de datos orientadas a objeto más conocidos se encuentran:

Comparación de BD NoSQL

Las comparaciones entre los gestores de bases de datos NoSQL son complicadas, principalmente porque eventualmente con el diseño adecuado es posible hacer la misma tarea con prácticamente cualquier gestor de bases de datos (incluyendo las bases de datos relacionales). El problema es determinar, en cual de estos esquemas o paradigmas de bases de datos la solución es óptima para el proceso.

Existen dos buenos listados que comparan aspectos de los distintos gestores de bases de datos NoSQL, que permitirán hacer una matriz de análisis para quien desee implementar estas soluciones de software.

El primer listado corresponde a la recopilación realizada por los editores de la Wikipedia en su sitio “Comparison of structured storage software”:

En el mismo pueden observarse lado a lado las capacidades de cada una en temas como persistencia, replicación, alta disponibilidad, transacciones, entre otros datos.

En el otro caso es un estudio permanente que hace el consultor independiente Kristof Kovacs en donde hace énfasis en las novedades de cada gestor de base de datos NoSQL:

Aquí la clasificación es por popularidad, clones de Google Bigtable, para usos especiales, y también las menos conocidas pero de gran valor. Para cada caso da la información básica del gestor de base de datos, sus novedades, mejores usos y ejemplos concretos.

NoSQL en Venezuela

En general la información sobre el uso y adopción de gestores de bases de datos NoSQL en nuestro país se encuentra dispersa y no muy extendida. Sin embargo a través de comunidades de programadores como Coders Venezuela4, eventos como el FLISOL5, herramientas colaborativas como MeetUp6, así como bloggers venezolanos nos encontramos con que las bases de datos basadas en documentos (MongoDB y CouchDB) han sido las de mayor difusión. Ello puede responder a que son las más populares y de fácil instalación desde cualquier distribución GNU/Linux. Sin embargo también se observa un creciente interés en temas de BigData por lo que comienzan a surgir ofertas de empleo para conocedores de Hadoop, Cassandra, entre otros10. Incluso se sabe, a través de una experiencia de trabajo de un compañero de la comunidad PythonVE11, de implementaciones de estas soluciones en el área de petróleo.

El tema de las Bases de Datos NoSQL en Venezuela se encuentra en un período incipiente pero muy positivo, pues poco a poco van avanzando y consolidándose con implementaciones en diversas áreas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *