UNIR Revista
Las bases de datos son un elemento fundamental en la gestión de información, el almacenaje masivo, su gestión, análisis y difusión. En este post analizamos las diferentes bases de datos para Big Data.
Antes del Big Data las organizaciones disponían de información estructurada en sus aplicaciones, como por ejemplo el ERP o CRM, pero con la llegada del Big Data la información de interés ya no solo se encuentra en el dominio y dentro del perímetro de las organizaciones, sino que está en las redes sociales, estudios estadísticos de terceros… tratándose generalmente de información no estructurada.
Las bases de datos se clasifican, a grandes rasgos, por su forma de estructurar la información y el lenguaje que utilizan para gestionar los datos en BBDD SQL y NoSQL.
En el Big Data, las BBDD generalmente utilizadas son las NoSQL debido a:
- Elevado número de fuentes de los datos: internet, IoT, estudios, etc.
- Distinto tipo de datos: estructurados (tablas), no estructurados (documentos, vídeos, etc.), semiestructurados…
- Gran cantidad de datos.
- Alta volatilidad de los datos que cambian constantemente y hay que procesarlos de manera rápida.
Características de las BBDD usadas en Big Data
Las BBDD usadas en Big Data deben responder a una serie de requisitos, como la capacidad de gestionar volúmenes muy grandes de datos, de distintos tipos (estructurados, no estructurados…), con un coste aceptable (hardware), un buen rendimiento y estar disponibles siempre. Por eso, entre sus cualidades destacan:
- Flexibilidad: las BBDD de los entornos Big Data deben soportar desarrollos o aplicaciones muy diversos y con requerimientos muy distintos. Es por lo que se requiere que estas BBDD sean flexibles y permitan tratar con distintos tipos de datos, opciones de consulta, etc.
- Escalabilidad: al tratar con volúmenes tan grandes de datos y con aplicaciones que implican un elevado número de operaciones de lectura y escritura, las BBDD deben permitir el incremento de recursos tanto de hardware como de software de manera sencilla, sin interrupción del servicio y con un coste asumible.
- Velocidad: los datos en los entornos de Big Data se crean en volúmenes muy grandes y continuamente. Las aplicaciones y desarrollos del Big Data pretenden obtenerlos, almacenarlos y procesarlos en tiempo real. Por eso las BBDD que soportan estas aplicaciones y desarrollos (los datos que gestionan) deben realizar las operaciones de lectura y escritura de manera muy rápida.
- Alto volumen de demanda: las aplicaciones y desarrollos del Big Data consumen una elevadísima cantidad de datos por el volumen constante y masivo de información generada. Las bases de datos deben ser capaces de realizar un gran número de operaciones de lectura y escritura y tener una elevada capacidad de almacenamiento.
Principales sistemas de bases de datos empleados en Big Data
MongoDB
Es un tipo de BBDD NoSQL pensada para la gestión de documentos y open source. Guarda los datos en estructuras BSON, similares a JSON, pero no en tablas como las BBDD relacionales o clásicas (Oracle, SQL Server, MySQL, etc.).
Sus principales características son:
- Permite consultas por campos de los documentos guardados, rangos, expresiones regulares…
- Los campos de los documentos almacenados son registrados e indexados, por lo que las operaciones de lectura y escritura sobre ellos son rápidas.
- Posibilita el balanceo de carga utilizando la metodología sharding.
- Se puede utilizar como un gestor de archivos, aprovechando sus características de balanceo de carga y replicación (sharding).
Cassandra
Se trata de una base de datos NoSQL que tiene dos objetivos fundamentales: la escalabilidad lineal y la disponibilidad. Implementa la metodología sharding mediante una arquitectura distribuida en nodos iguales que se comunican entre sí, aumentando la tolerancia a fallos o redundancia al máximo.
Los datos se replican entre los nodos sin la necesidad de un servidor central, por lo que ofrece una baja latencia en las operaciones de lectura y escritura.
Sus principales características son:
- Arquitectura descentralizada al no haber un servidor central, todos los nodos tienen las mismas funciones.
- Los datos son distribuidos entre todos los nodos.
- Se pueden añadir nuevos nodos de manera totalmente transparente y sin interrumpir el servicio aumentando la capacidad de lectura y escritura del sistema.
- Alta redundancia o tolerancia a fallos al no haber ningún punto único central o de fallo, todos los nodos son iguales.
Redis
Procede de las iniciales Remote Dictionary Server (en castellano, servidor de diccionario remoto). Se trata de un servidor que como base de datos ofrece tanto opciones de memoria como de clave-valor. Su estructura la forman las denominadas strings (cadenas simples de caracteres). Se utiliza en sistemas de mensajería y chat, soporte de caché de páginas web, administración de carros de compra de ecommerce, estadísticas en tiempo real, etc.
Sus principales características son:
- Buenos tiempos de respuesta a la hora de recuperar información (principalmente porque se almacena en memoria y no en disco).
- Fácil configuración y alta disponibilidad.
- Ofrece diferentes estructuras de datos, lo que permite adaptarse a diferentes necesidades. Entre ellas estarían list, set, sorted sed, etc.
- Indicado cuando la velocidad de acceso y tiempos de respuesta son críticos, así como para aplicaciones en tiempo real.
Neo4j
Emplea un modelo de grafos para la representación de los datos. Está indicado en caso de volúmenes de datos altos, complejos y con muchas relaciones entre ellos. Implementada en Java, usa los denominados grafos de propiedad.
Sus principales características son:
- Alta disponibilidad y velocidad constante de operaciones (independientemente de la complejidad).
- Alto rendimiento en lecturas.
- Compatible con transacciones ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad).
- Comunidad de usuarios muy amplia y activa.
Otras BBDD utilizadas en entornos Big Data son:
- Terrstore
- OrientDB
- CouchDB
- FlockDB
- Hibari
- Riak
- Apache HBase
Las BBDD para sistemas y aplicaciones de procesamiento de grandes cantidades y flujos de datos, como en el entorno Big Data, necesitan ser rápidas, escalables horizontal y verticalmente, tener tolerancia a fallos y servir tanto para datos estructurados como no estructurados. Es una elección fundamental para el diseño de estos entornos y debe ser adaptada a las necesidades del sistema.
En el Grado en Ciencia de Datos los estudiantes adquieren conocimientos profundos sobre el diseño, implementación y gestión de sistemas de bases de datos escalables y eficientes para manejar grandes volúmenes de datos.