Mostrando entradas con la etiqueta Bases de Datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Bases de Datos. Mostrar todas las entradas

lunes, 22 de julio de 2024

Big stream: procesamiento de datos en tiempo real para un mundo de dispositivos y sensores

Cuando hablamos de procesamiento de datos, especialmente de analítica, y de tratamiento de grandes datos, tendemos a pensar, y la verdad es que es bastante razonable, en un almacén de datos, más o menos ordenado, sobre el que lanzamos consultas o algoritmos de machine learning para obtener indicadores, resúmenes, tendencias o predicciones.

Pero no siempre es así. Existen cada vez más casos de uso, y más posibilidades, de explotar y analizar flujos de datos en tiempo real.

Vayamos poco a poco.


Almacenes de datos 


Desde casi los primeros tiempos de la informática han existido los almacenes de datos. Inicialmente eran meros ficheros pero muy pronto la necesidad de tratar datos en abundancia, garantizando su coherencia y escalabilidad llevó a la invención de las bases de datos, y con ellas, los Sistemas de Gestión de Bases de Datos (SGBD), de entre las cuales, las 'reinas' fueron, y en el fondo casi que siguen siendo, las bases de datos relacionales con sus sistemas de gestión de bases de datos relacionales. Sobre esas bases de datos relacionales, se podían ya hacer consultas, informes y análisis.

Sin embargo, a medida que el volumen de datos crecía y la complejidad de los análisis también, hacer analítica sobre la misma base de datos relacional operativa generaba problemas de prestaciones. Por ello, y como explico en mi primer libro 'La carrera digital', surgieron, en primer lugar los ODS ('Operational Data Store'), meras réplicas de una base de datos pero físicamente soportada en ficheros diferenciados.

Y luego, con la misma motivación de prestaciones, pero impulsado también por el interés en mejorar las capacidades analíticas, y de la mano de los conceptos de Business Intelligence y OLAP ('Online Analytical Processing') surgieron los denominados datamarts o datawarehouses, creo que a finales de los años 90.


Big Data y datalakes


Y en eso llegó el Big Data que, en el fondo, y en cuanto a utilidad y resultados, casi aspira a lo mismo que el Business Intelligence pero que surge en un entorno nuevo, donde el volumen de datos, que ya era grande, explota hacia niveles muy superiores y donde, sobre todo, cobran enorme importancia los datos semiestructurados (ficheros XML y JSON, por ejemplo) y no estructurados (texto libre, imágenes, vídeos, etc) y todo esto unido a una exigencia cada vez mayor de disponer de análisis en tiempo real, superando los típicos informes basados en datos del día anterior tan comunes usando datawarehoueses.

Esto da lugar al concepto de Big Data, donde las tres ideas expresadas se recogen en las famosas tres Vs de Doug Laney, Volumen, Variedad y Velocidad, a las que, de una forma algo espuria en mi opinión, luego se le han ido añadiendo otras Vs.

Asociado a Big data tenemos otra forma de repositorio de datos: los famosos datalakes que, en concepto, no son muy diferentes de los datamarts o datawarehouses pero que experiementan ese incremento en volumen y variedad de datos.


Big Stream


Sin embargo, y un poco 'a la chita callando' se va desarrollando un concepto, muy unido al Big data, pero en el fondo bastante diferente: el del 'Big stream', que se centra en el procesamiento de datos pero no unos datos contenidos en un repositorio sino unos datos que van llegando en tiempo real en una suerte de flujos de datos.

Leo acerca de este concepto en 'Internet of things: architectures, protocols and standards' de Simone Cirani, Gianluigi Ferrari, Marco Picone y Luca Veltri donde los autores comparan el concepto de big data con el de big stream y nos dicen:


The main differences between the Big Data  and Big Stream paradigms are the nature of data sources and the real-time/latency requirements of the consumers.


En efecto, hay que diferenciar el origen de datos que, en el caso del Big Data tienden a ser sistemas de información más o menos convencionales, mientras que en el caso del Big Stream con frecuencia, aunque no exclusivamente, hablamos de información procedente de sensores y dispositivos, con frecuencia en estrecha conexión, por tanto, con el mundo físico.

La segunda diferenciación, igualmente relevante, son los requisitos de latencia (es decir, la necesidad de una rápida respuesta) y de funcionamiento en tiempo real, algo que es habitual en la interacción con el mundo físico, especialmente en aplicaciones críticas.

En la misma obra, y poco después, los autores nos amplían esa comparativa diciendo:


In brief, while both Big data and Big Stream systems deal with massive amounts of data, the former focuses on the analysis of data while the latter focuses on the management of flows of data


En efecto, ambas tecnologías, Big Data y Big Stream, tratan con grandes cantidades de datos, pero mientras que en el Big Data más tradicional éstos tienden a estar ya recogidos en algún tipo de almacén de datos (típicamente un datalake), en el caso del Big Stream nos llegan como flujos en tiempo real y el volumen no deriva tanto del tamaño de cada bloque de información sino de la hiper-abundancia y continuidad de esos bloques de información.

No es extraño encontrar una explicación sobre Big Stream en un libro de Internet de las Cosas porque, seguramente, éste sea el campo donde más sentido adquiere para procesar toda la abundantísimo información que generan 'las cosas' que incluyen, por ejemplo, dispositivos y sensores para telemedida. 

Sin embargo, no es éste el único, y así, en el post 'Stream Processing – Tecnologías y Comparativa' Óscar Fernández nos identifica otra serie de usos


  • Monitorización de sistemas, de redes y de aplicaciones
  • Dispositivos Internet of Things (IoT)
  • Sistemas de recomendación y optimización de resultados
  • Transacciones financieras, detección de fraude y trading
  • Seguimiento de usuarios en páginas web y comercio electrónico
  • Notificaciones en dispositivos y aplicaciones móviles en tiempo real


No voy a profundizar aquí, aunque es muy interesante, en los retos técnicos que esto supone y me quedo, de momento, con resaltar este interesante y prometedor concepto de Big Stream


Conclusiones


Aunque menos popular que el Big Data, el Big Stream es una forma de procesamiento de datos que, probablemente, vaya adquiriendo más y más importancia (aunque no sé si relevancia mediática) a medida que se expandan Internet de las Cosas y los sistemas ciber-físicos, y que incorporemos, por tanto, más y más dispositivos y sensores a la 'conversación y, por tanto, a la creación de datos.


viernes, 21 de febrero de 2020

Bases de datos relacionales y NoSQL con Andreas Meier y Michael Kaufmann

'SQL & NoSQL databases' subtitulado 'Models, Languages, Consistency Options and Architectures for Big Data Management' es un tratado ordenado, científico y formalista del campo de las bases de datos, tanto relacionales como no relacionales, aunque quizá con un poco más de foco y profundidad en las primeras. Un tratado muy atento a los fundamentos, las reglas y el rigor.



El libro se estructura en 7 capítulos:
  • '1. Data Management': Un capítulo introductorio repleto de definiciones donde introduce el concepto de base de datos, las claves de identificación, el modelo relacional, SQL y algunas ideas de Big Data y bases de datos NoSQL. También dedica un espacio a explicar la disciplina del Data Management que es lo que presta título al capítulo.

  • '2. Data Modeling': Tras una introducción al tema del modelado explica con bastante profundidad el modelo entidad-relación detallando, por ejemplo, los tipos de asociaciones, las formas normales y las reglas de mapeo a un schema. Luego aborda las bases de datos gráficas, explicando primero el modelo de grafos para luego entrar en las reglas de mapeo de este caso. Finaliza hablando de la arquitectura de datos a nivel de empresa y sugiriendo unos pasos o fases para llevar a cabo el diseño de una base de datos.

  • '3. Database languages': Comienza por explicar el álgebra relacional con sus operadores relacionales y de conjuntos, explica de una forma no muy larga pero a pesar de ello bastante competa, el lenguaje SQL. También menciona el lenguje QBE (Query By Example) y los lenguahes de grafos, especialmente Cypher. Sigue con los lenguajes embebidos y el concepto de procedimientos almacenados así como JDBC. Y finaliza con una serie de aspectos a tener en cuenta como el manejo de variables NULL, las restricciones de integridad o aspectos de protección de datos.

  • '4. Ensuring Data Consistency': Comienza explicando la situación del acceso de múltiples usuarios a una base de datos y aborda la definición de transacciones y las propiedades ACID. Luego trata el problema de la consistencia en bases de datos distribuidas y habla de los teoremas CAP y BASE y hace una comparativa entre el enfoque ACID propio de las bases de datos relacionales y el BASE, más usado en NoSQL y Big Data.

  • '5. System Architecture': Comienza hablando del manejo de datos no estructuradosy de conceptos de almacenaje y acceso incluyendo una explicación de los mecanismos de hashing o de estructuras de datos multidimensionales. Luego aborda con cierto detalle la optimización de bases de datos relacionales. A continuación explica los algoritmos Map Reduce y finaliza con un modelo en capas para bases de datos relacionales y una visión holística de uso coordinado de diferentes bases de datos

  • '6. Postrelational Databases': Es un repaso rápido pero interesante de diferentes tipos o conceptos de bases de datos no relacionales incluyendo bases de datos federadas, bases de datos temporales, bases de datos multidimensionales, data warehouse, bases de datos orientadas a objetos, bases de datos de conocimiento y bases de datos difusas (fuzzy).

  • '7. NOSQL Databases': Primero hace una breve introducción con la historia y motivaciones de las bases de datos NoSQL para luego repasar diferentes alternativas como los repositorios atributo-valor, las bases de datos columnares, los almacenes de documentos, las bases de datos XML y las bases de datos gráficas.
Todos los capítulos finalizan con una lista comentada de sugerencias y referencias bibliográficas.

'SQL & NoSQL databases' es un tratado austero pero muy riguroso del campo de las bases de datos, amplio en cuanto a las tipologías que contempla (con mucho más detalle, eso sí, sobre el modelo relacional y el gráfico) y muy atento al rigor, a las reglas y álgebra muy claramente explicadas y aplicadas. Un libro serio, completo y útil.

Andreas Meier

(Fuente: Traducción y ligera elaboración propia de su ficha de autor en Springer)

Andreas Meier
Andreas Meier fue miembro de la Facultad de Economía y Ciencias Sociales de Friburgo donde fue profesor de Tecnologías de la Información. Se especializa en empresa electrónica, gobierno electrónico y gestión de la información. Es miembro de la GI (Gesellschaft für Informatik), de IEEE Computer Society y de ACM.

Tras estudiar música en Viena, se licenció con un grado en matemáticas en el Federal Institute of Technology (ETH) en Zurich, realizó su doctorado y fue aceptado como profesor universitario en el Institute of Computer Science.

Fue ingeniero de sistemas en el laboratorio de investigacion de IBM en San José, California, director de un banco internacional y miembro del comité ejecutivo de una compañía aseguradora.

Puedes saber más del autor visitando su ficha de profesor en la Universidad de Friburgo.

Michael Kaufmann

(Fuente: Traducción y ligera elaboración propia de su ficha de autor en Springer)

Michael Kaufmann
Michael Kaufmann es profesor de Ciencia de Datos y Big Data en la School of Information Technology de la Lucerne University of Applied Sciences and Arts. Es también el coordinador en la universidad del equipo de investigación en Inteligencia de Datos en que estudia y desarrolla métodos y tecnologías para la gestión inteligente de datos.

Michael Kaufmann estudió ciencia de los computadores, leyes y psicología en la universidad de Friburgo. Con estudios doctorales, recibió su doctorado en ciencia de los computadores sobre clasificación borrosa inductiva en analítica de marketing.

Trabajó en PostFinance como superusuario de desarrollo corporativo en un datawarehouse, como arquitecto de datos en la unidad de arquitectura en Mobiliar Insurance y como analista de negocio en FIVE Informatik AG, donde lanzó y dirigió un proyecto de investigación y comenzó a impartir clases como profesor a tiempo parcial en Kalaidos University of Applied Science.

Desde 2014 ha estado trabajando en Lucerne University of Applied Sciences and Art en la enseñanza e investigación como profesor de bases de datos, donde ha fundado y conseguido financiar el equipo de investigación de inteligencia de datos.

Puedes saber más sobre él visitando su perfil en LinkedIn.

miércoles, 12 de febrero de 2020

Una visión holística del uso combinado de bases de datos relacionales y NoSQL


Durante muchos años el mundo de las bases de datos ha estado dominado por las bases de datos relacionales. Aunque han existido desde siempre otras alternativas, las bases de datos relacionales han sido las reinas del lugar. En el fondo, todavía son, seguramente, las más preponderantes.

Sin embargo, algunos fenómenos de los últimos años, la hiper-abudancia de datos con fuentes como social media o Internet de las cosas, la importancia de los datos no estructurados y la eclosión del Big Data, han hecho que ganen relevancia otras formas de gestionar los datos más aptos para ese tratamiento masivo de datos no estructurados.

Constituyen lo que, de forma resumida, se denominan bases de datos NoSQL, cuya implementación no sigue el esquema de tablas propio de las relacionales y que ofrecen otras formas de consulta en paralelo o alternativo al uso de SQL.

Hay una gran variedad de ellas: repositorios atributo-valor, bases de datos columnares, bases de datos de grafos, bases de datos documentales, etc Las bases de datos NoSQL no son, por tanto, una solución única sino una variedad de opciones más adecuadas o menos según el caso.


En el libro desarrollan muy bien la parte más teórica sobre gestión de datos, modelado, lenguajes de consulta, etc.

Sin embargo, lo que quería traer a este post es algo más simple, pero quizá más ilustrativo. Se trata de un ejemplo que proponen bastante avanzado el libro sobre la combinación de varias de estas tecnologías de bases de datos para soportar distintos tipos de informaciones en el caso de una tienda en la web.

El ejemplo se recoge en la figura, tomada del libro:



En ella se puede observar el uso de cinco tecnologías diferentes:

  • Bases de datos relacional: el modelo más tradicional para almacenar la información estructurada disponible sobre clientes, cuentas, transacciones, etc

  • Almacenes atributo-valor: para el almacenamiento de datos más transitorios como el carrito de la compra o las sesiones y pensando, sobre todo, en la alta disponibilidad.

  • Bases de datos documental: para almacenar pedidos, entendiendo que el cuerpo de éstos podrían estar contenido, por ejemplo, en documentos XML o JSON o quizá, incluso, en PDF.

  • Bases de datos de grafo: para el tratamiento de información procedente de medios sociales como, por ejemplo, debates en blogs o hilos en twitter. 

  • Bases de datos en memoria: para la parte analítica se propone un datawarehouse complementado con herramientas especializadas de data mining o análisis predictivo. Para mejorar las prestaciones en el análisis de esos datos, se propone mantener la información en memoria.

Finalmente, y aunque no se aprecia en la figura, los autores proponen, a modo de ejemplo, y de cara a la integración, el uso de una arquitectura REST

La verdad es que parece un esquema un poco de laboratorio o, mejor dicho, de libro o Powerpoint. Es difícil imaginar que en una solución real se mezclen cinco tecnologías de bases de datos por más que, individualmente, cada una pueda ser óptima para una de las labores descritas.

Sin embargo, me gusta por lo ilustrativo y panorámico que resulta, porque ayuda a entender y recordar... y por eso he querido dejarlo consignado en este post.

viernes, 29 de enero de 2016

Conceptos claros... o la importancia del modelado de datos



No sé si el lector se encontrará familiarizado con el concepto de modelado que se utiliza en el  mundo de la ingeniería software.

El modelado es una abstracción del mundo real, una visión simplificada pero formalmente nítida, de ese mundo real. El modelado se expresa mediante diagramas codificados en un lenguaje formal de naturaleza generalmente gráfica. El más popular hoy día sería el UML (Unified Modelling Language).

Esa expresión en lenguaje formal hace que su significado sea inequívoco y su posterior traducción a un objeto software o a tablas de una base de datos relacional sea casi directo y sujeto a pocas interpretaciones.

En ese sentido, el modelado hace de puente entre el mundo real y el software: representa al mundo real y luego se traduce en software.

Sin embargo, hay algunos vicios que afectan a la práctica del modelado.

A veces se lo desprecia como algo abstracto, quizá poco práctico, quizá poco realista. Y si esa es la opinión del analista, sus modelos serán poco rigurosos...y entonces, paradójicamente, sí que serán poco prácticos.

Un vicio especialmente común es el modelar conceptos poco claros, artificiosos, abstracciones de definición incierta, que no somos capaces ni de explicar sin titubear. Es un gravísimo error. 

Los conceptos del modelo deben ser un espejo del mundo real, deben corresponderse a conceptos nítidos de ese mundo real, definibles en lenguaje natural de manera inequívoca y entendible por personas ajenas a la ingeniería software.

Eso es lo que nos recuerdan de forma más que acertada Mark Allen y Dalton Cervo en su libro 'Multi-domain master data management'

The reason data models are important is that they translate business concepts into concrete technical terms. That is where the risk is. If a business concept is not clearly defined, its technical representation is flawed and further maintenance is prone to error.

Muy claro. 

Si el concepto del mundo real no es claro, su modelado será erróneo y el software que derive de ese modelo reflejará mal el mundo real lo que favorece los errores y, sobre todo, la evolución de ese software.

De los polvos de un concepto poco claro, a los lodos de un software difícil y caro de mantener.

¡Quién nos lo iba a decir!

Pero que nadie lo dude... es así...

viernes, 18 de abril de 2014

En busca de la tecnología en Big Data

Es, quizá, un vicio demasiado extendido en el mundo de la tecnología o, por mejor decir, en el del marketing tecnológico: hablamos de tecnología...pero sin hablar de tecnología.

Se venden los beneficios para las empresas, para el negocio o la transformación de la sociedad que una nueva tecnología puede inducir...pero no se indica cómo, no se dan pistas acerca de en qué consiste la tecnología subyacente, no se explica dónde está la raíz de la novedad. Se utilizan grandes términos generalistas, pero no se detalla.

No sé si es que se asume que el público general no está interesado realmente en la tecnología sino en sus usos y beneficios; no sé si se piensa que ese público no es capaz de entender la tecnología... o no sé si es que, en ocasiones, no hay tal novedad tecnológica y estamos hablando más de marketing que de tecnología.

Esa sensación de falta de explicación tecnológica me la he encontrado, por ejemplo, intentando entender el fenómeno de Big Data. Encuentro muy frecuentes menciones a los cambios recientes en la naturaleza de los datos, a la proliferación de tipos de datos no estructurados, a la influencia de los medios sociales con toda su información no relacional que contienen, a la generación de masivas cantidades de datos, al abaratamiento del almacenamiento... y también encuentro frecuentes menciones a los beneficios de un conocimiento profundo del cliente, a los análisis de sentimiento, a la captura de tendencias...

Todo ello lo entiendo, lo valoro y me interesa.

Pero... ¿dónde está la tecnología?

¿Que nuevas estructuras de información se precisan? ¿Qué algoritmos gestionan esos nuevos tipos de datos? ¿Qué optimizaciones se aplican para manejar de forma eficiente esas masivas cantidades de información? ¿Hay nuevo hardware en discos o memorias? ¿Nuevos modos de indexación? ¿Nuevos algoritmos o lenguajes de consulta? ¿Nuevos conceptos en transaccionalidad? ¿Qué pasa con los SGBD relacionales? ¿Cómo se integran, si es que lo hacen, en los modelos de Big Data?

Aunque, en efecto, la tecnología 'profunda' es dura, echo en falta algo de explicación que, siquiera, me permita vislumbrar el cambio tecnológico subyacente tras un fenómeno que tanto da que hablar.

En el libro 'Too big to ignore' de Phil Simon, encuentro, no una profunda explicación tecnológica pero si, al menos, algunas pistas de las que tirar.

Observo la importancia que se le concede a las nuevas bases de datos NoSQL que, entiendo, agrupan realmente un conjunto de nuevos (en algunos casos no tan nuevos) tipos de bases de datos. También observo la emergencia del concepto de las bases de datos columnares... y me quedo con la preponderancia de Hadoop como plataforma real con su sistema de archivos HDFS (Hadoop Distributed File System) que sí parace tener algo que decir.

Quizá el lector conozca en profundidad estas tecnologías y no valore el hallazgo pero a mi me ha costado un tiempo (bien es verdad que algo disperso y de de escasa dedicación, a modo de hobby y no como actividad profesional) el llegar a disponer de la más mínima pista de naturaleza tecnológica, acerca de qué había detrás de Big Data.

Es, quizá, un vicio demasiado extendido en el mundo de la tecnología o, por mejor decir, del marketing tecnológico: hablamos de tecnología...pero sin hablar de tecnología. Es posible que eso simplifique los mensajes y los haga más accesibles al gran público...pero también es cierto que en ocasiones genera la sensación de 'venta de humo', la duda de si realmente hay una tecnología o sólo marketing. Y hace dudar...

Ya dispongo de algunas pistas tecnológicas sobre Big Data. Cuando pueda profundizar en ellas, espero descubir que, en efecto, hay tecnología detrás de Big Data y que esta nuevo y prometedor fenómeno puede, realmente, ponerse a la altura de su promesa.