Un sistema de gestión de flujos de datos (DSMS) es un software que gestiona flujos de datos continuos . Es similar a un sistema de gestión de bases de datos (DBMS), diseñado para datos estáticos en bases de datos convencionales . Un DBMS también ofrece un procesamiento de consultas flexible, permitiendo expresar la información necesaria mediante consultas. Sin embargo, a diferencia de un DBMS, un DSMS ejecuta una consulta continua que no solo se realiza una vez, sino que se instala permanentemente. Por lo tanto, la consulta se ejecuta continuamente hasta que se desinstala explícitamente. Dado que la mayoría de los DSMS se basan en datos, una consulta continua produce nuevos resultados siempre que lleguen nuevos datos al sistema. Este concepto básico es similar al procesamiento de eventos complejos , por lo que ambas tecnologías se están fusionando parcialmente.
Principio funcional
Una característica importante de un DSMS es la capacidad de gestionar flujos de datos potencialmente infinitos y de rápida evolución, ofreciendo un procesamiento flexible a pesar de contar con recursos limitados como la memoria principal. La siguiente tabla presenta diversos principios de los DSMS y los compara con los sistemas de gestión de bases de datos (DBMS) tradicionales.
Modelos de procesamiento y transmisión
Uno de los mayores desafíos para un sistema de gestión de datos (DSMS) es manejar flujos de datos potencialmente infinitos con una cantidad fija de memoria y sin acceso aleatorio a los datos. Existen diferentes enfoques para limitar la cantidad de datos en una sola pasada, que se pueden dividir en dos clases. Por un lado, están las técnicas de compresión que intentan resumir los datos y, por otro lado, están las técnicas de ventana que intentan dividir los datos en partes (finitas).
Sinopsis
La idea detrás de las técnicas de compresión es mantener solo un resumen de los datos, pero no todos los puntos de datos (en bruto) del flujo de datos. Los algoritmos abarcan desde la selección de puntos de datos aleatorios, denominada muestreo, hasta la generación de resúmenes mediante histogramas, ondículas o gráficos. Un ejemplo sencillo de compresión es el cálculo continuo de un promedio. En lugar de memorizar cada punto de datos, el resumen solo contiene la suma y la cantidad de elementos. El promedio se puede calcular dividiendo la suma entre la cantidad. Sin embargo, cabe mencionar que los resúmenes no pueden reflejar los datos con precisión. Por lo tanto, un procesamiento basado en resúmenes puede producir resultados inexactos.
Windows
En lugar de utilizar sinopsis para comprimir las características de flujos de datos completos, las técnicas de ventana solo consideran una parte de los datos. Este enfoque se basa en la idea de que solo los datos más recientes son relevantes. Por lo tanto, una ventana recorta continuamente una parte del flujo de datos, por ejemplo, los últimos diez elementos, y solo considera estos elementos durante el procesamiento. Existen diferentes tipos de ventanas, como las ventanas deslizantes, similares a las listas FIFO , o las ventanas rotativas, que recortan partes disjuntas. Además, las ventanas también se pueden diferenciar en ventanas basadas en elementos, por ejemplo, para considerar los últimos diez elementos, o ventanas basadas en el tiempo, por ejemplo, para considerar los últimos diez segundos de datos. También existen diferentes enfoques para implementar ventanas. Por ejemplo, hay enfoques que utilizan marcas de tiempo o intervalos de tiempo para ventanas de todo el sistema o ventanas basadas en búferes para cada paso de procesamiento. El procesamiento de consultas con ventanas deslizantes también es adecuado para su implementación en procesadores paralelos, aprovechando el paralelismo entre diferentes ventanas o dentro de cada extensión de ventana. [ 1 ]
Procesamiento de consultas
Dado que existen muchos prototipos, no hay una arquitectura estandarizada. Sin embargo, la mayoría de los DSMS se basan en el procesamiento de consultas en DBMS mediante el uso de lenguajes declarativos para expresar consultas, las cuales se traducen en un plan de operadores. Estos planes pueden optimizarse y ejecutarse. El procesamiento de una consulta suele constar de los siguientes pasos.
Formulación de consultas continuas
La formulación de consultas se realiza principalmente mediante lenguajes declarativos como SQL en los sistemas de gestión de bases de datos (DBMS). Dado que no existen lenguajes de consulta estandarizados para expresar consultas continuas, existen numerosos lenguajes y variantes. Sin embargo, la mayoría se basan en SQL , como el Lenguaje de Consulta Continua (CQL), StreamSQL y ESP . También existen enfoques gráficos donde cada paso del procesamiento se representa mediante un recuadro y el flujo del procesamiento se expresa mediante flechas entre los recuadros.
El lenguaje depende en gran medida del modelo de procesamiento. Por ejemplo, si se utilizan ventanas para el procesamiento, es necesario expresar la definición de una ventana. En StreamSQL , una consulta con una ventana deslizante para los últimos 10 elementos tiene el siguiente aspecto:
SELECCIONAR PROMEDIO ( precio ) DE examplestream [ TAMAÑO 10 AVANCE 1 TUPLES ] DONDE valor > 100.0Este flujo calcula continuamente el valor promedio de "precio" de las últimas 10 tuplas, pero solo considera aquellas tuplas cuyos precios son mayores que 100.0.
En el siguiente paso, la consulta declarativa se traduce en un plan de consulta lógico . Un plan de consulta es un grafo dirigido donde los nodos son operadores y las aristas describen el flujo de procesamiento. Cada operador en el plan de consulta encapsula la semántica de una operación específica, como el filtrado o la agregación. En los sistemas de gestión de datos que procesan flujos de datos relacionales, los operadores son iguales o similares a los del álgebra relacional , de modo que existen operadores para selección, proyección, unión y operaciones de conjuntos. Este concepto de operador permite un procesamiento muy flexible y versátil en un sistema de gestión de datos.
Optimización de consultas
El plan de consulta lógica se puede optimizar, lo cual depende en gran medida del modelo de transmisión de datos. Los conceptos básicos para optimizar consultas continuas son los mismos que en los sistemas de bases de datos . Si existen flujos de datos relacionales y el plan de consulta lógica se basa en operadores relacionales del álgebra relacional , un optimizador de consultas puede utilizar las equivalencias algebraicas para optimizar el plan. Esto puede implicar, por ejemplo, trasladar los operadores de selección a las fuentes, ya que no son tan intensivos computacionalmente como los operadores de unión.
Además, existen técnicas de optimización basadas en costos, como en los sistemas de gestión de bases de datos (DBMS), donde se elige el plan de consulta con el menor costo entre diferentes planes equivalentes. Un ejemplo es la elección del orden de dos operadores de unión sucesivos. En los DBMS, esta decisión se basa principalmente en ciertas estadísticas de las bases de datos involucradas. Sin embargo, dado que los datos de un flujo de datos se desconocen de antemano, no existen tales estadísticas en un sistema de gestión de bases de datos (DSMS). No obstante, es posible observar un flujo de datos durante un tiempo determinado para obtener algunas estadísticas. Utilizando estas estadísticas, la consulta también se puede optimizar posteriormente. Por lo tanto, a diferencia de un DBMS, algunos DSMS permiten optimizar la consulta incluso durante la ejecución. En consecuencia, un DSMS requiere estrategias de migración de planes para reemplazar un plan de consulta en ejecución por uno nuevo.
Transformación de consultas
Dado que un operador lógico solo se encarga de la semántica de una operación y no incluye ningún algoritmo, el plan de consulta lógico debe transformarse en una contraparte ejecutable. Esto se denomina plan de consulta físico. La distinción entre un plan de operador lógico y uno físico permite más de una implementación para el mismo operador lógico. La operación de unión, por ejemplo, es lógicamente la misma, aunque puede implementarse mediante diferentes algoritmos, como una unión de bucle anidado o una unión de ordenación y fusión . Cabe destacar que estos algoritmos también dependen en gran medida del flujo de datos y del modelo de procesamiento utilizados. Finalmente, la consulta está disponible como un plan de consulta físico.
Ejecución de consultas
Dado que el plan de consulta físico consta de algoritmos ejecutables, puede ejecutarse directamente. Para ello, se instala en el sistema. La parte inferior del gráfico (del plan de consulta) se conecta a las fuentes de entrada, que pueden ser, por ejemplo, conectores a sensores. La parte superior del gráfico se conecta a los sumideros de salida, que pueden ser, por ejemplo, una visualización. Como la mayoría de los DSMS se basan en datos, una consulta se ejecuta enviando los elementos de datos entrantes desde la fuente a través del plan de consulta hasta el sumidero. Cada vez que un elemento de datos pasa por un operador, este realiza su operación específica sobre el elemento y reenvía el resultado a todos los operadores sucesivos.
Ejemplos
- AURORA , [ 2 ] StreamBase Systems, Inc. Archivado el 23 de marzo de 2009 en Wayback Machine
- Hortonworks DataFlow
- IBM Streams
- Motor de consulta NIAGARA [ 3 ]
- NiagaraST: Un sistema de gestión de flujos de datos de investigación en la Universidad Estatal de Portland.
- Odysseus , un marco de trabajo de código abierto basado en Java para sistemas de gestión de flujos de datos.
- Base de datos de canalización
- PIPES Archivado el 24 de diciembre de 2016 en Wayback Machine , webMethods Business Events
- QStream
- Procesamiento de flujos de eventos SAS
- SQLstream
- TRANSMISIÓN [ 4 ]
- StreamGlobe
- StreamInsight
- TelegraphCQ [ 5 ]
- Procesador de flujo WSO2
Véase también
Referencias
- ↑ De Matteis, Tiziano; Mencagli, Gabriele (25 de marzo de 2016). "Patrones paralelos para operadores con estado basados en ventanas en flujos de datos: un enfoque de esqueleto algorítmico" . International Journal of Parallel Programming . 45 (2): 382– 401. doi : 10.1007/s10766-016-0413-x . S2CID 255600 .
- ↑ Abadi; et al. Aurora: Un sistema de gestión de flujos de datos . SIGMOD 2003. CiteSeerX 10.1.1.67.8671 .
- ↑ Jianjun Chen; David J. DeWitt; Feng Tian; Yuan Wang (2000). "NiagaraCQ: Un sistema de consulta continua escalable para bases de datos de Internet" (PDF) . Departamento de Ciencias de la Computación. Universidad de Wisconsin-Madison . SIGMOD . Recuperado el 21 de noviembre de 2018 .
- ↑ Arasu, A., et al. STREAM: El sistema de gestión de flujos de datos de Stanford. Informe técnico. 2004, Stanford InfoLab.
- ↑ "Chandrasekaran, S. et al, "TelegraphCQ: Procesamiento continuo de flujo de datos para un mundo incierto." CIDR 2003" (PDF) . Archivado del original (PDF) el 7 de febrero de 2014. Recuperado el 26 de agosto de 2011 .
Enlaces externos
- Flujos de procesamiento de información: del flujo de datos al procesamiento de eventos complejos - Artículo de revisión sobre sistemas de procesamiento de flujo de datos y eventos complejos
- Procesamiento de flujos de datos con SQL : Introducción a la gestión de datos en tiempo real con SQL
- Big data
- Gestión de datos
- Ingeniería de datos