Big Data y Business Intelligence de supervivencia
Durante los meses finales del año 2014, he ido anotando los términos que he oído en las reuniones en las que se hablaba de Big Data y de Inteligencia de Negocio, a veces nombrada por los interlocutores como BI, de su nombre en inglés Business Intelligence.
Son términos como Cassandra, Apache Lucene, Elasticsearch, Flume, Hadoop, HBase, Hive, Kafka, MongoDB, Spark, Storm, Pivotal, MapR, Hortonworks, Cloudera, Agile Software Development, Python, Java o Scala, NoSQL, R, MLlib, Weka, etc. en los que se mezcla un poco de todo, nombres de herramientas y entornos, de sistemas de gestión de bases de datos, de lenguajes de programación, de técnicas y de metodologías, tanto específicos para Big Data y Business Intelligence como para otros usos.
A comienzos de 2015 y a partir de ellos se me ocurrió redactar un vocabulario de supervivencia para estas reuniones empresariales de Big Data y Business Intelligence.
Ahora a finales de 2015 he seleccionado para presentar aquí 13 de los más frecuentes de esos términos, que son:
NoSQL: Término que sirve para hacer referencia a los sistemas de gestión de base de datos no relacionales. Comprende categorías como clave-valor, BigTable, bases documentales y bases de datos orientadas a grafos. Estos sistemas de gestión de bases de datos están optimizados para recuperar y agregar datos, pero no suelen ofrecer funcionalidades más allá de almacenar y recuperar registros, por ejemplo, usando un esquema de clave-valor. Estas limitaciones para algunos aspectos las compensan con ganancias en escalabilidad y rendimiento.
BigTable: Es un sistema de gestión de base de datos creado por Google, es distribuido, de alta eficiencia y propietario. Fue construido utilizando Google File System (GFS) y Chubby Lock Service. Funciona sobre computadores personales con procesadores Intel sencillos y baratos. Almacena la información en tablas multidimensionales, donde muchas celdas pueden estar vacías y, también, contener versiones temporales de sus valores históricos.
MongoDB: Su nombre procede de humongous / enorme. Es un sistema de base de datos NoSQL, orientado a documentos y desarrollado como código abierto.
Cassandra: Es un sistema de base de datos NoSql con las siguientes características: almacenamiento por clave-valor, Java, grandes volúmenes, escalabilidad lineal, alta disponibilidad, arquitectura distribuida con nodos iguales comunicados por un protocolo P2P con máxima redundancia, desarrollado por Apache Software Foundation.
Apache Lucene: Es un API, interfaz de aplicación, de código abierto para la recuperación de información, es útil para indexar y buscar a texto completo.
Multitenencia: Término que se emplea cuando una sola instancia de la aplicación se ejecuta en el servidor sirviendo a múltiples clientes u organizaciones. Este concepto se diferencia de las arquitecturas con múltiples instancias donde cada cliente u organización tiene su propia instancia instalada de la aplicación.
REST y RESTful: Los sistemas que siguen los principios REST se suelen llamar RESTful. Se dice que la web ha disfrutado de escalabilidad como resultado de una serie de diseños clave:
- Un protocolo cliente / servidor sin estado, donde cada mensaje HTTP contiene toda la información necesaria para comprender la petición, ni cliente ni servidor necesitan recordar ningún estado de las comunicaciones entre mensajes, pero, en la práctica, muchas aplicaciones HTTP necesitan mecanismos como las cookies u otros para mantener el estado de la sesión.
- Un conjunto de operaciones bien definidas que se aplican a todos los recursos de información, HTTP en sí define un conjunto pequeño de operaciones como POST, GET, PUT y DELETE.
- Una sintaxis universal para identificar los recursos, en un sistema REST, cada recurso es direccionable únicamente a través de su URI.
- El uso de hipermedios, para la información de la aplicación y para las transiciones de estado de la aplicación, la representación de este estado en un sistema REST son típicamente HTML o XML, por ello, es posible navegar de un recurso REST a otros, siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.
JSON: JavaScript Object Notation, es un formato ligero para el intercambio de datos, por su simplicidad de JSON es una alternativa a XML en AJAX. Es sencillo escribir un analizador sintáctico (parser) de JSON. En JavaScript, un texto JSON se puede analizar usando la función eval().
Elasticsearch: Servidor de búsqueda basado en Lucene, motor de búsqueda de texto completo, distribuido y con capacidad de multitenencia con una interfaz web RESTful y con documentos JSON. En Java y publicado como OSS con licencia Apache.
Hadoop Apache: Framework que soporta aplicaciones distribuidas, licencia libre, permite a las aplicaciones trabajar con miles de nodos y muy altos volúmenes de datos, se inspira en los documentos Google para MapReduce y Google File System (GFS).
HBase: Sistema de gestión de base de datos que sigue el modelo BigTable Hypertable usado en Hadoop.
Cloudera Impala: Motor de consultas SQL OSS para el procesamiento masivo en paralelo de los datos almacenados en un clúster de computadoras ejecutando Apache Hadoop.
Pentaho BI Suite: Conjunto de programas libres para BI para: ETL (extracción, transformación y carga); Analysis Services (Modrian, OLAP, MDX, XML); Reporting con OpenOffice; Data Mining usando Weka para clasificación, regresión, reglas de asociación, clustering, análisis predictivo; Dashboard de informes, gráficos interactivos y cubos creados con las herramientas Pentaho Report Designer; y Apache Hadoop para acceder a grandes volúmenes de datos.
Dentro de 3 años más de la mitad de estos términos, ahora tan notorios, o los habremos olvidado o nos olerán ya a naftalina.