Bien, en esta lección de hoy vamos a hablar de bases de datos analíticas. En ese sentido, vamos a explicar qué es la analítica de datos en un entorno empresarial, vamos a presentar diferentes herramientas, diferentes aproximaciones a la analítica de datos y, dando un poco una visión de cómo se usan y cuáles son los entornos de los cuales disponemos. La analítica de datos lo que pretende es, primero, adquirir fuentes de datos de diferentes lugares. Son, nuevamente, datos no estructurados, con diferentes formatos, que van a integrar nuestra visión de los datos de una compañía. Esa visión, nuevamente, es muy voluminosa, tenemos varios terabytes de datos agregados. Necesitamos analizarlos, responder preguntas relacionadas con el negocio de la compañía en un tiempo cercano al tiempo real. Y es importante, a veces, poder escalar esa infraestructura donde están los datos en algún proveedor en la nube. Llegamos a este momento, nos podemos preguntar por qué es necesario construir una solución a medida en un proyecto empresarial. Existen varias razones que hacen que sea factible, que sea interesante realizar nuestro propio servidor, nuestro propio servicio de gestión de datos. Y tiene que ver con una serie de preguntas que nos tenemos que hacer cuando tengamos un problema adelante. Lo primero que nos tenemos que preguntar es que si nuestros datos, queremos trabajar con nuestros propios datos. Es importante que los datos no salgan de nuestras instalaciones por la razón que sea, porque son privados, porque no queremos que ciertas partes del negocio sean visibles, con lo cual, esa es una de las primeras razones por las que queremos construir nuestro propio sistema. También, puede ser que tengamos que adaptar consultas, determinadas consultas complejas, a nuestras necesidades de negocio con lo cual, también, es necesario que lo adoptemos. También, es importante la necesidad de integrar diferentes partes de la empresa, como puede ser investigación y desarrollo, ventas y unidades de negocio. Este conjunto también hace que sea necesario hacer algo a medida. Luego, la necesidad también de aplicar técnicas específicas de "machine learning" que no están disponibles en paquetes opcionales o que no están como opciones en paquetes comerciales. Y, finalmente, nos puede preocupar el coste de las herramientas comerciales si queremos tener algo más a medida. En este sentido, existen diferentes tipos de bases de datos. Existen las de código abierto donde las más importantes son las del proyecto Apache, como pueden ser Hadoop o Hbase, Spark, Storm, Impala. Vamos a introducir algunas de ellas en breve, en los próximos minutos. También, tenemos aquellas proporcionadas por los grandes distribuidores de cómputo en el "cloud", como Google, o BigQuery, o Amazon Redshift. Y luego, tenemos las herramientas comerciales como Pentaho o Greenplum, que también permiten este tipo de funcionalidad. Ahora, nos centramos un poco en la necesidad industrial del "Business Analytics". El "Business Analytics" es esta práctica continua, explorar los datos de la compañía derivados de los procesos de negocio de la misma. El objetivo es obtener información sobre estos procesos para mejorar, tanto la planificación como el desarrollo de los productos de la misma compañía. Y básicamente, se basa en diversos métodos de análisis de datos que se realizan sobre el conjunto de datos definido previamente, guardado en diferentes repositorios de datos. Los entornos que vamos a introducir en ese contexto de Business Analytics son Hadoop, Impala, Sparck, BigQuery y Redshift. El primero es Hadoop que es el entorno base donde empezó todo para el procesamiento de datos. Es un entorno muy flexible, fácilmente escalable, muy programable, donde el gran problema que tiene es la latencia larga donde necesitamos un tiempo bastante largo para obtener respuestas sobre nuestros datos. La configuración de Hadoop suele ser compleja cuando no nos hemos enfrentado a ningún sistema previamente. Y también, tiene una cierta complejidad de trabajo puesto que los analistas necesitan, muchas veces, desarrollar esos algoritmos de análisis en lenguaje como Java. Ciertos tipos de procesamiento de datos, donde la información base está parcialmente o totalmente ordenada, puede sacar partido de Hadoop de una manera muy rápida y puede ser muy fácil utilizar este entorno para esos tipos de datos. Por lo tanto, siempre que tengamos este tipo de naturaleza de datos, puede ser una opción interesante. Apache Spark es una versión, una adaptación del modelo Hadoop para flexibilizar su procesamiento de datos donde, no sólo tenemos fases "map" y "reduce", tenemos una flexibilización del análisis, por lo tanto, existe un soporte para implementar "pipelines", complejos de datos, donde existen bucles, donde existen "DAGs", donde existen diferentes etapas que reutilizan los datos de forma que, una etapa, tiene como resultado un dato que es utilizado como entrada de la etapa siguiente. Siempre que nuestros datos, nuestro procesamiento tenga esta estructura, Spark nos va a ayudar. También permite consultas de alto nivel en el lenguaje SQL y otros lenguajes de alto nivel, como R o Python. Por lo tanto, esa flexibilidad está haciendo que eclipse a Hadoop como uno de los entornos más utilizados actualmente en proyectos de código abierto. Si nuestro proyecto, como característica especial, tiene como característica importante que los tiempos de las "queries" o de las consultas tienen que ser muy cortos, es importante que nos acerquemos a Apache Impala ya que está diseñado para reducir la latencia de las consultas. Apache Impala presenta una arquitectura en donde se orienta el tratamiento de los datos, donde estos datos están almacenados totalmente en memoria, con lo cual, se acelera su acceso. La ventaja que tenemos es que nuestros datos están ya guardados en HDFS o en Hbase, podemos colocar Apache Impala justo encima, y tendremos una aceleración en el consumo de los datos. Esta solución es buena cuando tenemos muchos usuarios realizando consultas de forma simultánea sobre un conjunto de datos bastante bien definido. Si nuestro proyecto tiene este esquema, podemos sacar un buen partido de este proyecto de Apache Impala. Finalmente, vamos a analizar dos soluciones que ya existen en los proveedores de computación en la nube. El primero de ellos es el Google BigQuery, que es el servicio de Google para análisis interactivo de grandes conjuntos de datos. La gestión de los datos, la importación y la exportación de datos se realiza en formato JSON, y la consulta se puede realizar utilizando lenguajes como SQL. Es fácil, la ventaja que tiene esta herramienta, es la facilidad de integración con herramientas que ya existen en Google, como los repositorios de datos y las hojas de cálculo de Google. Y, finalmente, en los últimos tiempos se ha presentado un esquema de visualización llamado "Analytics data studio" donde nos puede permitir la simplificación de ciertos procesos, sobretodo, la visualización de resultados. También, como contrapartida, Amazon Web Services también tienen su servicio que se llama Amazon Redshift, donde tenemos especial énfasis en la analítica de datos. Los datos se almacenan, se gestionan en columnas, por lo tanto, cuando nos concentramos en analizar resultados que tienen un subconjunto de columnas, el resto no se utilizan, con lo cual, se mejora el rendimiento. Y se permite, fácilmente, la creación de "clusters" de forma dinámica a partir de las necesidades de los datos de nuestras consultas, con lo cual, tenemos la facilidad de crecer y decrecer en el tiempo utilizando servicios de Amazon. Finalmente, también permite una fácil integración de otros servicios de Amazon, como puede ser el servicio de repositor de datos como es "S3". Como conclusiones, tenemos un gran ecosistema de sistemas de gestión de datos analíticos, existe una gran variedad de aplicaciones y entornos que podemos usar, y tenemos que elegir las herramientas de nuestro proyecto en función de nuestros requerimientos. Tenemos que analizar cuál es el volumen de nuestros datos, si es grande, es pequeño, cuál es el conocimiento técnico del equipo que se va a dedicar a desarrollarlo, ¿tienen conocimiento de programación?, ¿no?, ¿son especialistas en SQL?, ¿o en Java? ¿Cuál es el requerimiento del tiempo del análisis?, ¿es tiempo real o nos podemos permitir que la latencia sea larga? ¿Cuál es el coste en infraestructura que podemos permitirnos? Y qué necesidad tenemos de hacer crecer la infraestructura en el tiempo en función del volumen de los datos que vamos a manejar. En función de las respuestas que demos a estas preguntas, habrá proyectos, herramientas que nos sean más útiles que otras, aunque todas realicen, más o menos, el mismo proceso.