Big data: Más cerca de lo que imaginamos

Cuando hablamos de Big Data nos referimos al manejo de grandes volúmenes de datos de diversas índoles y a las tecnologías subyacentes. Su función se basa en permitir procesar la información y convertirla en un conocimiento muy valioso para la compañía. Veamos en detalle de qué se trata esta poderosa herramienta.

El puntapié inicial comenzó en comunidades científicas que trabajan, por ejemplo, en investigación del genoma humano y en proyectos de estudios de la industria farmacéutica. Con el correo de los años, la generación y análisis de información en grandes volúmenes se extendió fuertemente a las organizaciones empresariales y gubernamentales.

Para dar un ejemplo sobre el que mucho de nosotros seguramente estamos familiarizados, cuando compramos algún producto en un sitio masivo de comercio electrónico, estamos haciendo uso de una tecnología con elementos muy diferentes a los que manejamos en los sistemas tradicionales. Estos sistemas tienen millones de usuarios que acceden anualmente buscando texto, imágenes, comparando precios, realizando compras, ventas y para lo cual se necesita un tiempo de respuesta razonable.

Existen 3 ingredientes principales que componen este mundo a los que se llama habitualmente las tres V:

  1. Volumen de datos,
  2. Velocidad de procesamiento
  3. Variedad de estructuras

Volúmenes de datos

En realidad, no existe una cantidad específica de tamaño. Para dar un ejemplo actual,
Google maneja varios Petabytes por día, al igual que otros sitios como Ebay y Facebook. Esta información es generada por las personas en tipos de aplicaciones muy diversas: corporativas, gubernamentales, bancarias, de redes sociales, etc. Asimismo, existen otras fuentes automatizadas ligadas, por ejemplo, a sensores de temperatura, luz, datos biométricos (huellas dactilares, sensores de iris, etc.).

También el volumen y clase de dispositivos que generan datos a través de internet aumentan exponencialmente a nivel mundial: tabletas, teléfonos móviles, dispositivos en artefactos del hogar, GPS, sensores y muchos otros.

Velocidad de procesamiento

Además de tener una infraestructura que permita analizar esta enorme cantidad de información, se requiere una velocidad para gestionar los datos que sea suficiente para tomar decisiones en el momento oportuno. Como veremos más adelante, esto obliga a pensar en arquitecturas de procesamiento diferentes a las que estamos acostumbrados a ver.

Variedad de estructuras y datos

Básicamente, desde el punto de vista de la organización de los datos, se manejan 3 tipos de datos:

  • Estructurados: son datos que tienen definidos su longitud y formato, como las fechas, los números o las cadenas de caracteres. Están asociados a tablas: un ejemplo son las bases de datos relacionales y las hojas de cálculo.
  • No estructurados: son lo contrario de los datos estructurados, es decir, carecen de un formato específico. Algunos ejemplos son los documentos multimedia, imágenes, videos, e-mails, etc.
  • Semiestructurados: este tipo de datos no se limitan a campos determinados, pero contienen marcadores para separar los diferentes elementos que los componen. Estos datos poseen sus propios metadatos semi estructurados que describen los objetos y sus relaciones. Un ejemplo es HTML, XML, etc.

Arquitectura

El fenómeno de Big Data está soportado sobre la arquitectura de hardware y software. El procesar la información asociada a conjuntos de datos cuyo tamaño es del orden de varios terabytes plantea utilizar sistemas distribuidos en nodos en lugar de sistemas con un único nodo como normalmente estamos acostumbrados.

También hay que comprender que no es posible almacenar la información en el modo tradicional de bases de datos relacionales al que estamos acostumbrados (‘mundo SQL’); es necesario de disponer de repositorios que brinden soluciones específicas. Esto trae aparejada una serie de innovaciones como, por ejemplo, la arquitectura Lambda para Big Data, donde se plantea un pre-proceso de los datos en modo batch y la exposición de las vistas de datos pre-computados sobre los que se efectúan las consultas. Es una arquitectura multilayer que tiene las siguientes capas:

  • Data Sources: puede conectarse a diferentes fuentes de datos, a través de diversos conectores, para su procesado o almacenamiento en las capas siguientes en tiempo real.
  • Batch Layer: se encarga del almacenamientos de los datos (Master Dataset) así como del pre-procesado de la información para la generación de vistas pre-computadas. La implementación más popular es Hadoop Distributed File System (HDFS) que aplica un modelo de programación denominado MapReduce que permite trabajar en paralelo con grandes volúmenes de datos en grupos de computadoras o clusters.
  • Speed Layer: permite dar respuesta a los datos que deben ser expuestos de forma rápida generando vistas para su consulta. Esto se debe a que la capa de Batch tiene un alto grado de latencia para procesar determinada información, pudiendo tardar minutos e incluso horas. Debido a esto, los datos expuestos a través de esta capa son temporarios, mientras no estén disponibles a través de la capa de carga. Storm y Apache HBase son ejemplos de implementaciones.
  • Serving Layer: indexa los datos de manera de que puedan ser consultados y permite combinar los pre-procesados de la Capa Batch y la Speed Layer. Cloudera Impala es una implementación conocida para esto.

Por otro lado, la necesidad de disponer de mecanismos de almacenamiento y lecturas de estructuras de datos no relacionales nos introduce al tema de bases de datos NoSQL o Not Only SQL. Pero antes de avanzar, debemos comprender algunos conceptos claves. Según el teorema de Cap o teorema de Brewer, es imposible para un sistema de distribuido garantizar simultáneamente:

Debido a que las bases de datos NoSQL son escalables y distribuidas, surgen las siguientes clasificaciones:

  • AP: brindan disponibilidad y tolerancia a particiones pero no consistencia total. En un sistema AP, nos importa más la disponibilidad, por lo que aunque haya una partición del sistema, la petición se procesará igualmente.
  • CP: proporcionan consistencia y tolerancia a particiones pero no garantiza alta disponibilidad. Para garantizar la consistencia debemos asegurarnos de que la operación se realiza en los todos los nodos al mismo tiempo, lo que da lugar a la indisponibilidad.
  • CA: sacrifican la tolerancia a particiones en favor de la consistencia y alta disponibilidad.

Si el sistema no está particionado, cualquier operación se procesará y replicará al resto de los nodos. Ahora bien, si el sistema se particiona, ya no podremos garantizar la consistencia de la operación y, si falla, entonces no podremos garantizar disponibilidad.

Con esto dicho podemos ver por qué las implementaciones de bases de datos distribuidas (tanto las tradicionales como las NoSQL) se ven obligadas a escoger entre consistencia (CP) o disponibilidad (AP), pero jamás podrán elegir las dos (CA), a no ser claro está, que haya un solo nodo o que todos los nodos residan en la misma caja física; pero esto no sería un sistema distribuido.

En función de las necesidades de negocio relacionadas con Big Data se configuran una u otra característica; estas bases de datos normalmente soportan diversos tipos de configuraciones a tal efecto.

Tanto las estructuras relacionales como no relacionales pueden convivir perfectamente en una implementación de Big Data. De acuerdo al tipo de almacenamiento las bases de datos NoSQL se pueden clasificar en:

Orientado a documentos

Almacenan documentos en diversos formatos (XML, JSon, HTML, PDF, etc), los cuales constituyen un conjunto de elementos etiquetados junto con una serie de metadatos y una clave que permiten su indexación y recuperación. Así, estas bases de datos, por lo general, pueden asociar cualquier número de campos de cualquier longitud en un documento. De esta manera, se puede almacenar, por ejemplo, el nombre de un paciente médico, la imagen de sus estudios y sus datos de nacimiento.

Orientado a grafos

Para almacenar la información utilizan estructuras de grafos con nodos, vértices y sus propiedades. Cada elemento de la BD contiene un puntero a sus elementos adyacentes y, por lo tanto, no son necesarios los índices. Los nodos pueden tener múltiples aristas que definen los diferentes tipos de relaciones que tienen con otros nodos. Las consultas en las bases de datos orientadas a grafos están diseñadas para empezar en un nodo específico y explorar sus relaciones con otros nodos. Es por eso que este tipo de bases de datos están frecuentemente asociadas con motores de recomendación que se usan con frecuencia en aplicaciones sociales y de comercio electrónico. Estas bases de datos aprenden e indexan las relaciones más comunes con el objetivo de acelerar el tiempo de respuesta.

Orientado a columnas

Están organizadas, es decir, todos los casos de un solo elemento de datos se almacenan de modo que se puede acceder como una unidad. Las familias de columnas pueden contener un número indefinido de columnas y pueden crearse en tiempo de ejecución. Cada registro es identificado por una clave que se relaciona a una o varias columnas, lo que las vuelve especialmente eficaces en las consultas analíticas, donde por lo general se leen pocos elementos de datos, pero necesitamos ver todas las instancias de estos elementos.

Orientado a pares clave valor

Están pensadas para almacenamiento y no orientadas a búsquedas; almacenan la información en forma de pares [clave, valor]. En un sistema de este tipo tenemos contenedores, y en cada uno podemos tener tantas parejas de clave-valor como queramos. Existen sistemas que permiten tener claves duplicadas y otros que no. En cada contenedor podemos tener datos de la misma naturaleza (productos, pedidos, clientes) o totalmente diferentes (como un contenedor por cliente).

Seguramente, muchos de los que trabajamos en el área de desarrollo escucharemos cada vez más de productos y conceptos ligados a Big Data, y se producirá también una evolución importante en alguno o varios de los conceptos que hemos detallado.

También, es muy posible que podamos aplicar, al menos parcialmente, esta tecnología en el corto plazo para alguna necesidad particular. En cualquier caso, no podemos dejar de estar atentos a la evolución de todo esto; se presenta como un área de posibilidades para el emprendimiento que nos obliga a aprovechar esa inmensa cantidad de datos, convirtiendo su análisis, gestión y explotación en un servicio, y por lo tanto, en un negocio rentable.

Por Gustavo Flores
Plataforma

 

¿qué software es apto para su empresa?

Acceda a nuestros evaluadores

Deja un comentario