El uso de las bases de datos NoSQL se hace presente hoy en día de forma frecuente. Las aplicaciones y los softwares que más utilizamos las incluyen de forma directa en su arquitectura. Algún tiempo atrás fue toda una revolución la aparición de las BBDD construidas con SQL. Han cumplido y lo han hecho bien, pero las necesidades del mundo digital avanzan a pasos agigantados y lamentablemente las BBDD SQL tienen algunas limitaciones.
Esta es una de las razones de la aparición de las Bases de datos NoSQL. La evolución tecnológica de la sociedad y la participación masiva de usuarios que producen y alojan contenido cada segundo, exigía una forma más flexible de almacenar, ordenar y captar mayor cantidad de datos. Eso es lo que ha ayudado a solucionar el NoSQL.
¿Qué es NOSQL?
El termino NoSQL se refiere a la denominación en inglés Not Only SQL. Plantea modelos de datos específicos de esquemas flexibles que se adaptan a los requisitos de las aplicaciones más modernas. Tienen un conjunto increíble de características y varios modelos que descubriremos más adelante.
Marcas de Bases de Datos NoSQL
Existe una amplia variedad de Bases de Datos NoSQL que podemos utilizar e implementar en nuestros proyectos. Todas ellas cumplen funciones especiales con un excelente rendimiento. Pero debemos analizar nuestros requerimientos y necesidades para saber escoger cual tomaremos en cuenta para nuestro proyecto.
Conozcamos algunas de las BBDD NoSQL más reconocidas en la actualidad:
MongoDB
Desde las Bases de datos documentales una de las favorita de los desarrolladores en MongoDB de 10Gen. Sus inicios se remontan a finales de 2007, pero su liberación en licencia opensource fue en el año 2009. Este importante gestor de datos NoSQL almacena documentos en un formato muy parecido al JSON a alta velocidad.
Construido en C++ tiene un rendimiento increíble que le permite ser muy flexible y potente. Es ideal para proyectos en los que se requiera alto nivel de escalabilidad. Tiene capacidad para recibir miles de lecturas por segundo sin pestañear. Múltiples gestores de contenido y juegos online se benefician de sus propiedades.
Apache Cassandra
ApacheCassandra nace desde como un proyecto de google. Varios procesos han transcurrido desde esa época, hasta que en 2010 obtuvo su graduación como proyecto de alto nivel en ApacheIncubator.
Es una base de datos de tipo clave-valor. Cassandra es una BBDD NoSQL está diseñada para almacenar cantidades gigantescas de datos y realizar distribuciones a través de varios nodos. Esto permite que el almacenamiento de datos pueda estar repartido entre diversos servidores sin un solo punto de fallo. La gran mayoría de nosotros tiene una cercanía con esta base de datos ya que es una de las herramientas esenciales de Facebook.
CouchDB
CouchDB es una base de datos NoSQL que nace con aspiraciones bastante altas. Su principal desarrollador aspiraba a que CouchDB se convirtiera en la base de datos más usada en internet. En 2008 el proyecto pasa a formar parte de ApacheIncoubator.
La BBDD CouchDB llega a nosotros con la intención de facilitar la accesibilidad y compatibilidad web con diferentes tipos de dispositivos. Su primera versión estable llegó al público en el año 2010. En esta BBDD los datos se incluyen en formato JSON. La forma en la que los datos son organizados es según pares de valor clave.
Redis
Otro importante motor de base de datos de tipo calve-valor es Redis. Esta BBDD NoSQL de Código abierto es patrocinada y desarrollada por RedisLabs. Su diseño principal está basado en el almacenamiento de tablas de hashes aunque no es restrictiva sólo hacia este modelo. También tiene la posibilidad de ser utilizada como una BBDD persistente.
Neo4j
La base de datos Neo4j es desarrollada en software libre es del tipo orientada a grafos, construida con lenguaje Java. Esta base de datos tiene un funcionamiento transaccional que almacena en estructura de grafos. Su primera versión fue lanzada en 2010. Esta BBDD con diferentes tipos de grafos.
Las características principales que ofrece Neo4J a sus desarrolladores es un alto desempeño, si las consultas empiezan a crecer de forma exponencial el rendimiento de esta BBDD no disminuye. Es Ágil, flexible y altamente escalable. De sus usos y posibilidades de implementación te hablaremos con seguridad más adelante.
Tipos de Bases de Datos NoSQL
Ya conocimos algunos nombres famosos de las Bases de Datos NoSQL, pero es importante destacar que existe una clasificación que debemos conocer para entender cómo estas BBDD están construidas y nos pueden ser de utilidad. Veamos cuales son las principales clasificaciones:
Bases de datos documentales
Una base de datos documental u orientada a documentos, es un tipo de BBDD NoSQL que orienta su funcionamiento a datos alojados en documentos o tiendas de documentos. Estas bases de datos se utilizan para almacenar, recuperar y administrar datos semiestructurados.
Las bases de datos documentales almacenan cada uno de los registros y los datos asociados en un solo documento. Cada documento contiene datos semiestructurados que pueden ser consultados con diferentes herramientas de análisis. Estas bases de datos ofrecen mucha flexibilidad, escritura rápida, y consultas rápidas gracias a su gran capacidad de indexación. Entre las BBDD documentales más reconocidas encontramos la ya conocida por nosotros a MongoDb, de 10gen, y CouchDB, de Apache.
También gozan de un gran reconocimiento en el mundo de las Bases de datos NoSQL la RavenDB, de Hibernating Rhinos, BaseX, djondb, eXist, SimpleDB, de Amazon, IBM Lotus Domino y Terrastore
Bases de datos en orientadas a grafos
Las bases de datos orientadas a grafos son excelentes herramientas para trabajar datos complejos. Estas BBDD nos permite darle representar los datos en estructuras de grafos. Esto es de gran utilidad cuando los datos que vamos a procesar tienen altos niveles de interrelación. Estas versátiles bases de datos, nos permite ejecutar consultas y almacenamiento de datos de cualquier característica sin siquiera preocuparnos por el volumen de los datos.
Gozan de un excepcional rendimiento para responder de forma eficiente al análisis y consulta de volúmenes gigantescos de datos. Ofrece también una diversidad de métodos analíticos y de consulta que la convierten en una de las opciones más flexibles en NoSQL. Es bastante frecuente conseguir la implementación de este modelo de BBDD en estructuras web de blogs. Twitter es uno de los casos más relevantes donde una BBDD de Grafos está relacionada.
Las Bases de Datos orientadas a grafos también tiene otras funcionalidades que no te puedes perder. Entre las marcas más reconocidas está nuestra ya conocida Neo4j, pero esta no es la única. También están las conocidas HyperGraphDB, InfoGrid, AllegroGraph, InfiniteGraph, Sones y DEX/Sparksee.
Bases de datos clave/valor
Las bases de datos clave valor son modelos no relacionales que utilizan un método simple de almacenamiento de datos. Este tipo de BBDD toma los datos como un conjunto de pares “clave-valor” en los que las claves cumplen funciones de identificadores únicos.
Las claves o lo valores pueden ser cualquier tipo de datos. Pueden ser objetos simples o complejos. Estas BBDD son altamente divisibles y brindan grandes capacidades de escalabilidad horizontal.
Estos modelos de BBDD son uno de los preferidos de los clientes NoSQL, porque son simples en cuanto a funcionalidad y brindan alto rendimiento a la hora de ejecutar las lecturas y escrituras de datos. Ya hemos dado algunos ejemplos de Bases de Datos Clave Valor como Cassandra y Redis, pero es obligatorio expandir la lista cuando tenemos importantes BBDD como BigTable de Google, Dynamo de Amazon, Project Voldemort de LinkedIn, OracleNoSQL y Riak.
Bases de datos multivalor
Las bases de datos multivalor son sistemas interesantes que incorporan diferentes características multidimensionales y NoSQL para la clasificación y manejo de los datos. Estas BBDD comparten significativas similitudes con los modelos relacionales tradicionales. Ambos esquemas contienen tablas. Pero que esto no te engañe, las BBDD multivalor proporcionan un esquema de trabajo menos rígido.
Además de proporcionar mayor flexibilidad, los datos almacenados acá pueden contener listas de valores. Esto quiere decir que cualquier dato almacenado puede tener diversos valores asignados.
Estas bases de datos tienen un nivel de complejidad un poco más elevado debido a que incorporan reglas de normalización para su diseño. Entre las BBDD multivalor más conocidas podemos destacar Rocket D3 DBMS, Rocket mvBase DBMS, Rocket U2 Universe, Rocket U2 Unidata, OpenQM, Caché InterSystems, Reality, Jbase, OpenInsight, Extensible storage engine
Bases de datos orientadas a objetos
Como bien lo indica su nombre, las BBDD de este tipo están conformadas por objetos. Estos objetos pueden ser de diferentes tipos, sobre los que se definen unas operaciones que determinan sus propiedades de interacción. Las Bases de datos orientadas a objetos han revivido el interés de los usuarios gracias a sus características principales.
Estas BBDD son altamente flexibles y admiten lenguajes de programación como JAVA, Visual Basic o C++. Entre las más Bases de Datos orientadas a objetos más conocidas tenemos a ObjectDB, Zope Object Database, ZooDB, GemStone, Objectivity y Realm.io
Bases de datos tabulares
Una BBDD tabular no es más que la estructuración de una BBDD en forma de tabla. Incorpora elementos en columnas y líneas. Cada una de las celdas genera intersecciones entre las columnas y las líneas. A estas intersecciones se le asignan una numeración única para establecer un orden eficiente de los datos. Están pensadas para grandes volúmenes de datos.
Estas tienen la capacidad de almacenar gran cantidad de datos dispersos. Entre las principales DDBB de este estilo podemos conseguir a HBase de Apache que es utilizada para soportar el servicio de mensajería de Facebook, también a BigTable de Google y la versión abierta llamada LevelDB y a Hypertable.
Bases de datos de Arrays
Las Bases de datos arrays sirven para trabar colecciones de datos conocidas como raster data. Sitúan los datos en una cuadricula regular con más de dos dimensiones. Estas bases de datos se utilizan para representar simulaciones, sensores y datos estadísticos. Son capaces de manejar volúmenes de datos importantes ofreciendo una flexibilidad y escalabilidad.
Estas bases de datos son consideradas una generación tecnológica emergente. De las bases de datos más destacadas que trabajan este modelo podemos mencionar a Oracle que ha profundizado sus trabajos en ella y SciDB, de Paradigm4
Ventajas y desventajas de las Bases de datos NoSQL
Una vez estudiadas y descritas los múltiples modelos de Bases de Datos NoSQL que tenemos a nuestra disposición, es casi obligatorio resumir sus ventajas y desventajas, para poder decidir en qué momento aprovecharlas. También describiremos algunas desventajas ciertas. No todo es color de rosa y las BBDD relacionales aún tienen un lugar importante en este mundo.
Ventajas
- Alto rendimiento y baja exigencia: un punto común de las BBDD NoSQL es que pueden ejecutarse en máquinas con recursos modestos. A diferencia de los sistemas SQL, la inversión que necesitamos hacer en estos casos es significativamente baja.
- Escalabilidad horizontal: para mejorar el rendimiento de estos sistemas no debemos inventar un mundo nuevo o una revolución total. Podemos incrementar o añadir nodos de forma horizontal para pisar a fondo el acelerador de rendimiento.
- El volumen de datos no es problema: se pueden manejar gran cantidad de datos sin dudarlo. No se generan cuellos de botella ni se corre el riesgo de ralentizar el sistema.
- Flexibilidad: como ya pudimos detallar en cada uno de sus tipos, estas BBDD NoSQL son extremadamente flexibles y podemos hacer que se ajusten a casi todo lo que necesitamos.
Desventajas:
- Funciones de Fiabilidad: esta si se quiere es una de las debilidades más grandes de los modelos NoSQL. Estas bases al no admitir funciones de fiabilidad lleva a los desarrolladores a implementar su propio código, lo que agrega mayor complejidad a los sistemas.
- Aplicabilidad: Esta desventaja está íntimamente relacionada con la anterior. La falta de inclusión de funciones de fiabilidad limita la aplicabilidad de estas BBDD a funciones delicadas como las del sector bancario, limitando mucho su potencial.
- Incompatibilidad en consultas SQL: en la mayoría de los casos las BBDD NoSQL son incompatibles a consultas SQL, lo que agrega una dificultad mayor ya que en caso de ser necesario se debe incluir una consulta manual, que puede hacer los procesos más lentos y complejos.
Ejemplos y casos de uso de Bases de datos NoSQL
Como vemos las BBDD NoSQL gozan de múltiples funciones, marcas, tipos y ventajas. Ahora, es momento de poner más en contexto y mostrar algunos ejemplos de su implementación.
A modo de ejemplo utilizaremos un JSON como el que conseguirás en mongoDB.
Veamos:
Supongamos que vamos a registrar diferentes personas en una colección perteneciente a una BBDD NoSQL con algunos campos especiales. Estos no necesariamente tienen que seguir un patrón específico como verás a continuación:
{
Nombre: «José»,
Apellidos: «Pérez Campo»,
Edad: 35,
Aficiones: [«vino»,»libros»,»ciclismo»],
Amigos: [
{
Nombre:»María»,
Edad:22
},
{
Nombre:»Luis»,
Edad:28
}
]
}
Ahora bien, si queremos añadir a otros datos de otra persona con algunas características diferentes la podemos hacer sin mayor problema introduciendo lo siguiente:
{ Nombre: "Luis", Estudios: "Marketing y Publicidad", Amigos:12 }
En un modelo relacional o SQL clásico esto sería imposible de hacer. Esta es una de las tantas ventajas de las que te hemos hablado.
Esperamos que te sea de utilidad y te aventures a profundizar en el mundo de las BBDD.