ES2922820T3 - Estructuras de datos distribuidas para la agregación de ventanas deslizantes o aplicaciones similares - Google Patents

Estructuras de datos distribuidas para la agregación de ventanas deslizantes o aplicaciones similares Download PDF

Info

Publication number
ES2922820T3
ES2922820T3 ES17745124T ES17745124T ES2922820T3 ES 2922820 T3 ES2922820 T3 ES 2922820T3 ES 17745124 T ES17745124 T ES 17745124T ES 17745124 T ES17745124 T ES 17745124T ES 2922820 T3 ES2922820 T3 ES 2922820T3
Authority
ES
Spain
Prior art keywords
nodes
data
forest
node
null
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES17745124T
Other languages
English (en)
Inventor
Perez David Carrera
Navarro Alvaro Villalba
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Universitat Politecnica de Catalunya UPC
Barcelona Supercomputing Center
Original Assignee
Universitat Politecnica de Catalunya UPC
Barcelona Supercomputing Center
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universitat Politecnica de Catalunya UPC, Barcelona Supercomputing Center filed Critical Universitat Politecnica de Catalunya UPC
Application granted granted Critical
Publication of ES2922820T3 publication Critical patent/ES2922820T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compounds Of Alkaline-Earth Elements, Aluminum Or Rare-Earth Metals (AREA)
  • Lubricants (AREA)

Abstract

Se proporcionan sistemas informáticos para el almacenamiento distribuido de datos estructurados como bosques de árboles equilibrados de nodos, cada nodo incluye elementos de datos y los bosques comprenden niveles. Los nodos comprenden primeros nodos finales en el primer lado del bosque, segundos nodos finales en el segundo lado del bosque y nodos intermedios entre el primer y segundo nodos finales. Los sistemas informáticos comprenden memorias para almacenar al menos el primer y segundo nodo final; conectores para implementar conexiones con sistemas de almacenamiento que almacenan nodos intermedios, de manera que el intercambio de nodos con los sistemas de almacenamiento se realiza a través de dichas conexiones; y procesadores para actualizar los nodos almacenados en las memorias según criterios de actualización, y para intercambiar nodos con los sistemas de almacenamiento a través de las conexiones según criterios de intercambio. También se proporcionan sistemas de almacenamiento, junto con métodos y programas informáticos que pueden ejecutar los sistemas informáticos. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Estructuras de datos distribuidas para la agregación de ventanas deslizantes o aplicaciones similares
Esta solicitud reivindica la prioridad de la solicitud de patente europea EP17382202.4 presentada el 12 de abril de 2017.
La presente divulgación se refiere a sistemas informáticos y sistemas de almacenamiento para el almacenamiento distribuido de datos estructurados en forma de bosque de árboles balanceados adecuados para, por ejemplo, la agregación de ventanas deslizantes o aplicaciones similares.
La presente divulgación se refiere además a procedimientos y a correspondientes programas informáticos adecuados para ser ejecutados por dichos sistemas informáticos.
ANTECEDENTES
Se sabe que las estructuras de datos en forma de árboles o bosques de árboles se utilizan en diversas aplicaciones informáticas. En algunas aplicaciones, dichas estructuras basadas en árboles pueden contener grandes cantidades de datos y, por lo tanto, su procesamiento puede requerir grandes cantidades de memoria (de ejecución).
Por ejemplo, la rápida evolución de las plataformas de análisis de datos ha dado lugar a una creciente demanda de procesamiento de streams de datos en tiempo real. Desde las aplicaciones del Internet de las Cosas hasta la monitorización de telemetría generada en grandes centros de datos, una demanda común de los escenarios emergentes en la actualidad es la necesidad de procesar grandes cantidades de datos con bajas latencias, realizando en general el proceso de análisis lo más cerca posible espacialmente de la fuente de datos.
Se requiere que las plataformas de procesamiento de streams sean versátiles y absorban los picos generados por las fluctuaciones de las velocidades de generación de datos. Los datos se suelen producir en forma de series temporales que deben ser agregadas usando múltiples operadores, siendo las ventanas deslizantes uno de los principios más utilizados para procesar datos en tiempo real. Para satisfacer las demandas mencionadas anteriormente, pueden ser necesarias técnicas eficientes de procesamiento de streams que agreguen los datos con un coste de procesamiento mínimo.
Los streams de datos son secuencias sin límites de actualizaciones atómicas (o unidades de datos) ordenadas sobre una misma característica de información. Por ejemplo, un stream asociado a la temperatura de un dispositivo físico D contiene una secuencia de actualizaciones de dicha información de temperatura del dispositivo D, sustituyendo cada actualización a la anterior. Dado que un stream emite actualizaciones indefinidamente, dichas secuencias de actualizaciones no pueden ser recorridas en sentido ascendente, ya que no tienen un tamaño finito y carecen de límites. En cambio, la selección de una ventana limitada en las actualizaciones dentro de un stream de datos se suele considerar uno de los procedimientos más asequibles para analizar los datos y la información procedentes de una fuente de datos. Para este tipo de procesamiento, proyectar los datos de los streams en ventanas deslizantes puede ser un mecanismo conveniente para el análisis y la agregación de datos.
Una ventana deslizante se puede definir como una abstracción que representa proyecciones sobre secuencias de datos, organizadas como estructuras del tipo: primero en entrar, primero en salir (FIFO: First-In-First-Out), que contienen elementos del mismo tipo (las actualizaciones de datos o unidades de datos de un stream de datos). Las actualizaciones de datos pueden entrar en la ventana deslizante cuando se reciben procedentes de la fuente de datos (stream de datos), y pueden ser eliminadas de acuerdo con un conjunto de condiciones o criterios. Una ventana deslizante puede contener siempre las actualizaciones o unidades de datos más recientes de un correspondiente stream.
Las aplicaciones que procesan streams de datos suelen definir un conjunto de operaciones de agregación que cuando son calculadas producen un resultado asociado a los streams. A causa de la naturaleza sin límites de los streams, las ventanas deslizantes son un enfoque conveniente para procesar dichas agregaciones, definiendo el subconjunto de unidades de datos a considerar para su procesamiento. Por lo tanto, para su propósito de procesamiento, las ventanas deslizantes se pueden asociar con al menos una función de agregación que es calculada para los elementos contenidos cada vez que se actualiza el contenido de la ventana.
Una agregación se puede expresar como un monoide. Un monoide es una estructura algebraica con una operación binaria asociativa y un elemento neutro (o valor nulo). Se han utilizado ampliamente en la literatura para la implementación de agregaciones de datos.
Más formalmente, teniendo en cuenta que S es un conjunto y • es una operación binaria, la operación compone un monoide si obedece a los siguientes principios:
Asociatividad: Para todo a, b y c en S, la expresión (a • b) • c = a • (b • c) es verdadera.
Elemento neutro: Existe un valor e en S que para todo a la expresión e a = a e = a es verdadera.
Cierre: Para todo a y b en S, el resultado de a b está también en S.
En aplicaciones en las que los datos de los streams de datos son procesados por sistemas informáticos ubicados lo más cerca posible espacialmente de las fuentes de datos, dichos sistemas informáticos están normalmente dimensionados con un tamaño reducido y recursos informáticos restringidos. Por ejemplo, cuando las fuentes de datos comprenden grandes cantidades de sensores distribuidos por una gran ciudad o escenario similar, se utilizan muchos sistemas informáticos para proporcionar a todos los sitios de sensores unas funcionalidades de procesamiento adecuadas. Las restricciones espaciales en los sitios de sensores también pueden condicionar el tamaño y la potencia de procesamiento de los sistemas informáticos.
Cuando el mismo sistema informático se utiliza para procesar datos de diferentes streams de datos, las restricciones mencionadas anteriormente se pueden agravar, ya que los recursos informáticos son compartidos entre diferentes procesos. Esta situación se puede dar tanto en el enfoque distribuido que se ha mencionado anteriormente como en un enfoque centralizado en el que un sistema informático central recibe los datos procedentes de muchos streams de datos diferentes (sitios de sensores). En cualquiera de estos casos, los procesos correspondientes pueden, por lo tanto, resultar ineficientes y/o poco fiables en el contexto de, por ejemplo, aplicaciones de streaming. Si con el objetivo de resolver estas limitaciones, los sistemas informáticos son dotados de recursos más potentes, el sistema completo puede resultar más caro.
Un objeto de la presente divulgación es mejorar los sistemas, procedimientos y programas informáticos del estado de la técnica cuyo objetivo es procesar datos estructurados en forma de disposiciones basadas en árboles, en particular, en forma de bosques de árboles balanceados que implementan, por ejemplo, la agregación de datos en una ventana deslizante.
El documento US 2014/067870 A1 divulga un sistema informático para el almacenamiento distribuido de datos estructurados en forma de bosque de árboles balanceados de uno o más nodos.
RESUMEN
La invención está definida por las reivindicaciones adjuntas.
En un aspecto, se proporciona un sistema informático para el almacenamiento distribuido de datos estructurados en forma de bosque de árboles balanceados de uno o más nodos, incluyendo cada nodo una pluralidad de elementos de datos, y comprendiendo el bosque una pluralidad de niveles que incluyen un nivel más superior y un nivel más inferior o de hoja. Los nodos del bosque comprenden unos primeros nodos finales en un primer lado del bosque, unos segundos nodos finales en un segundo lado del bosque, y unos nodos intermedios entre los primeros y segundos nodos finales.
El sistema informático comprende una memoria para almacenar al menos los primeros y segundos nodos finales, y un conector para implementar una conexión con un sistema de almacenamiento configurado para almacenar nodos intermedios del bosque. El sistema informático realiza un intercambio de nodos con el sistema de almacenamiento a través de dicha conexión.
El sistema informático comprende además un procesador para actualizar los nodos almacenados en la memoria según unos criterios de actualización, y para intercambiar nodos con el sistema de almacenamiento a través de la conexión según unos criterios de intercambio.
El sistema informático propuesto basa su funcionamiento en el almacenamiento (y correspondiente actualización) de un bosque tal como los que se sugieren en otras partes de la descripción, con sólo una parte del bosque en la memoria (de ejecución) del sistema informático. Esto puede permitir el procesamiento de bosques mucho más grandes en comparación con los sistemas de la técnica anterior que almacenan bosques completos en la memoria. Por lo tanto, se puede mejorar significativamente la eficiencia y/o la fiabilidad de, por ejemplo, la agregación de datos en una ventana deslizante implementada por el bosque 'distribuido' (en aplicaciones de streaming).
Otra ventaja puede ser que varios bosques que reciben unidades de datos procedentes de varios streams de datos pueden implementar las correspondientes ventanas deslizantes sin necesidad de utilizar cantidades excesivas de memoria. Los sistemas de la técnica anterior que almacenan estructuras basadas en árboles enteras pueden necesitar mucha más memoria en comparación con los sistemas informáticos según la presente divulgación.
Las ventajas que se han mencionado anteriormente pueden ser especialmente beneficiosas en configuraciones en las que se proporcionan muchos sitios de sensores con los correspondientes sistemas informáticos lo más espacialmente cercanos posible a los sensores. En estas circunstancias, sistemas informáticos relativamente baratos según la presente divulgación pueden cooperar con el correspondiente sistema o sistemas de almacenamiento para almacenar un mayor número de bosques y/o bosques más grandes. Según se describe en otras partes de la descripción, se puede realizar una transferencia adecuada de nodos entre el sistema informático y el sistema de almacenamiento con el fin de tener cantidades balanceadas de datos distribuidos entre el sistema informático y el sistema de almacenamiento.
En un aspecto adicional, se proporciona un sistema de almacenamiento para un almacenamiento distribuido de datos estructurados en forma de bosque de árboles balanceados de uno o más nodos, incluyendo cada nodo una pluralidad de elementos de datos, y comprendiendo el bosque una pluralidad de niveles que incluyen un nivel más superior y un nivel más inferior o de hoja. Los nodos del bosque comprenden unos primeros nodos finales en un primer lado del bosque, unos segundos nodos finales en un segundo lado del bosque, y unos nodos intermedios entre los primeros y segundos nodos finales.
El sistema de almacenamiento comprende una memoria para almacenar al menos algunos de los nodos intermedios, y un conector para implementar una conexión con un sistema informático que está configurado para almacenar y actualizar al menos los primeros y segundos nodos finales del bosque. El intercambio de nodos con el sistema informático se realiza (por parte del sistema informático) a través de dicha conexión.
El sistema o sistemas de almacenamiento propuestos pueden cooperar con un correspondiente sistema o sistemas informáticos para almacenar bosques más grandes y/o mayores cantidades de estructuras en forma de árbol de una manera más eficiente y fiable que sistemas de la técnica anterior (almacenamiento de estructuras en forma de árbol enteras). En otras partes de la descripción se proporcionan detalles sobre dicha cooperación.
En algunos ejemplos, también se puede proporcionar un sistema completo para el almacenamiento distribuido de datos estructurados en forma de bosque de árboles balanceados, comprendiendo el sistema un sistema informático y un sistema de almacenamiento tales como los que se han descrito anteriormente. El sistema informático y el sistema de almacenamiento pueden ser conectables (o estar conectados) entre sí a través de una conexión entre el conector del sistema informático y el conector del sistema de almacenamiento. Una vez conectados, el sistema informático y el sistema de almacenamiento pueden cooperar según se describe en otras partes de la divulgación para almacenar grandes bosques y/o varios bosques.
En un aspecto más adicional, se proporciona un procedimiento para actualizar datos distribuidos estructurados en forma de bosque de árboles balanceados de uno o más nodos, incluyendo cada nodo una pluralidad de elementos de datos, y comprendiendo el bosque una pluralidad de niveles que incluyen un nivel más superior y un nivel más inferior o de hoja. Los nodos del bosque comprenden unos primeros nodos finales en un primer lado del bosque, unos segundos nodos finales en un segundo lado del bosque, y unos nodos intermedios entre los primeros y segundos nodos finales.
El procedimiento sugerido comprende almacenar, por parte de un procesador de un sistema informático, al menos los primeros y el segundos nodos finales en una memoria del sistema informático, y actualizar, por parte del procesador, los nodos almacenados en la memoria según unos criterios de actualización.
El procedimiento comprende además intercambiar, por parte del procesador, nodos con un sistema de almacenamiento a través de una conexión según unos criterios de intercambio, estando el sistema de almacenamiento configurado para almacenar nodos intermedios del bosque, y estando implementada la conexión a través de un conector del sistema informático.
El procedimiento sugerido, que se basa en los principios que se han descrito anteriormente con respecto al sistema informático y al sistema de almacenamiento, puede permitir de este modo el almacenamiento distribuido de bosques con mayores cantidades de datos y/o varios bosques, en comparación con sistemas de la técnica anterior que almacenan (bosques de) estructuras completas basadas en árboles.
En otro aspecto, se proporciona un programa informático que comprende instrucciones de programa para hacer que un sistema informático realice un procedimiento, tal como por ejemplo el que se ha descrito anteriormente, para actualizar datos distribuidos estructurados en forma de bosque de árboles balanceados. El programa informático puede ser o estar incorporado en un medio de almacenamiento y/o puede ser transportado en una señal portadora.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
A continuación se describirán ejemplos no limitantes de la presente divulgación, con referencia a los dibujos adjuntos, en los que:
La Figura 1a es una representación esquemática de unos sistemas informático y de almacenamiento según ejemplos en el contexto de una primera arquitectura;
La Figura 1b es una representación esquemática de unos sistemas informático y de almacenamiento según ejemplos en el contexto de una segunda configuración;
La Figura 1c es un diagrama de bloques de sistemas informático y de almacenamiento conectados entre sí según ejemplos;
Las Figuras 1d, 1e ilustran de forma esquemática una estructura de bosque adecuada para ser almacenada y actualizada en una configuración con correspondientes sistemas informático y de almacenamiento, tales como los representados en figuras anteriores;
La Figura 2 es un diagrama de flujo que ilustra de forma esquemática un procedimiento según ejemplos para actualizar datos distribuidos estructurados en forma de bosque de árboles balanceados que implementan una ventana deslizante en una aplicación de streaming;
La Figura 3 es un diagrama de flujo que ilustra de forma esquemática ejemplos de inserción de una unidad de datos en una estructura de bosque que implementa una ventana deslizante, en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar;
Las Figuras 4a - 4i ilustran de forma esquemática una estructura de bosque y su evolución debida a inserciones de unidades de datos en el bosque realizadas de la misma forma o similar a la que se muestra en el diagrama de flujo de la Figura 3;
La Figura 5 es un diagrama de flujo que ilustra de forma esquemática otros ejemplos de inserción de una unidad de datos en una estructura de bosque que implementa una ventana deslizante, en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar;
La Figura 6 es un diagrama de flujo que ilustra de forma esquemática ejemplos de determinación a partir de la nada (from scratch) de resultados parciales de una agregación de ventana completa en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar;
La Figura 7 muestra el bosque de la Figura 4i junto con un correspondiente nodo de resultados y pila actualizados según el sub-procedimiento de la Figura 6 o similar;
La Figura 8 es un diagrama de flujo que ilustra de forma esquemática ejemplos de eliminación de una unidad de datos de una estructura de bosque que implementa una ventana deslizante en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar;
Las Figuras 9a - 9h ilustran de forma esquemática una estructura de bosque y su evolución debida a la eliminación de una unidad o unidades de datos realizada de la misma forma o similar a la que se indica en la Figura 8;
La Figura 10 es un diagrama de flujo que ilustra de forma esquemática otros ejemplos de eliminación de una unidad o unidades de datos de una estructura de bosque que implementa una ventana deslizante en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar;
La Figura 11 es un diagrama de flujo que ilustra de forma esquemática otros ejemplos de eliminación de una unidad o unidades de datos de una estructura de bosque que implementa una ventana deslizante en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar;
Las Figuras 12a - 12e muestran una ventana/bosque y su evolución debida a la ejecución de un sub-procedimiento de eliminación 'masiva' tal como el de la Figura 11 o similar;
La Figura 13 es un diagrama de flujo que ilustra de forma esquemática otros ejemplos de eliminación de una unidad o unidades de datos de una estructura de bosque que implementa una ventana deslizante en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar; y
Las Figuras 14a - 14c muestran una ventana con su correspondiente bosque, nodo de resultados y pila y su evolución debida a la ejecución de un sub-procedimiento de eliminación tal como el de la Figura 13 o similar.
DESCRIPCION DETALLADA DE EJEMPLOS
Sistemas informático y de almacenamiento
La Figura 1a es una representación esquemática de unos sistemas informático y de almacenamiento según ejemplos en el contexto de una primera arquitectura. En este caso, se ilustra un enfoque centralizado en el que un único sistema informático 100 recibe datos procedentes de una pluralidad de sitios de sensores 110-112.
El sistema informático 100 puede estar en la nube 102 o puede proporcionar unos correspondientes servicios a través de la nube 102. El sistema informático 100 puede ser o estar conectado con una pluralidad de sensores 110­ 112 a través de unas conexiones adecuadas 113-115, respectivamente, de tal manera que el sistema 100 puede recibir un stream de datos generados por dichos sensores. Dichas conexiones 113-115 pueden ser, por ejemplo, conexiones inalámbricas o por cable y, en algunos ejemplos, pueden ser o estar implementadas a través de una red de comunicaciones tal como, por ejemplo, Internet. Los sensores pueden ser, por ejemplo, sensores de temperatura, sensores de humedad, sensores de contaminación, sensores de viento, etc. instalados en diferentes lugares de, por ejemplo, una ciudad o pueblo 103, un centro de procesamiento de datos, una fábrica, etc.
Un sistema intermedio (que no se muestra) puede intermediar entre los sensores 110 - 112 y el sistema informático 100. Este sistema intermedio puede estar configurado para generar unos streams de datos que tienen por objetivo proporcionar unidades de datos a partir de datos producidos por los sensores.
El sistema 100 puede ser o estar conectado con otros sistemas 106, 108 a través de correspondientes conexiones 107, 109, respectivamente. Dichas conexiones 107, 109 pueden ser, por ejemplo, conexiones inalámbricas o por cable y, en algunos ejemplos, se pueden implementar a través de una red de comunicaciones tal como, por ejemplo, Internet. Cada uno de los sistemas adicionales 106, 108 puede comprender una correspondiente memoria o dispositivo de almacenamiento 104, 105, respectivamente. Uno de dichos sistemas adicionales 106, 108 puede ser un sistema de almacenamiento 106 según la presente divulgación.
El sistema informático 100 y el sistema de almacenamiento 106 pueden cooperar para almacenar datos estructurados en forma de bosque de árboles balanceados de forma distribuida. Es decir, el sistema informático 100 puede almacenar una parte del bosque y el sistema de almacenamiento 106 puede almacenar la parte restante del bosque. Los detalles sobre este almacenamiento distribuido se proporcionan en otras partes de la descripción. Otro de los sistemas adicionales 106, 108 puede ser un sistema 108 dedicado a, por ejemplo, consumir datos procedentes del sistema informático 100 que, por lo tanto, puede actuar como proveedor de servicios/datos. Datos agregados en forma de, por ejemplo, valores promedio, valores máximos, valores mínimos, etc. pueden ser proporcionados por el sistema informático 100 (a través de la correspondiente conexión 109) al sistema consumidor 108. A continuación, dicho sistema 108 puede procesar/analizar los datos agregados recibidos para, por ejemplo, determinar acciones correctivas y/o preventivas para, al menos, atenuar condiciones distorsionantes o perjudiciales inferidas a partir de los datos agregados.
La Figura 1b es una representación esquemática de unos sistemas informático y de almacenamiento según ejemplos en el contexto de una segunda configuración. Esta figura es similar a la anterior Figura 1a. En este caso, sin embargo, se propone un enfoque descentralizado en el que cada uno de una pluralidad de sitios de sensores 116, 119, 122 está provisto de correspondientes sistemas informáticos 118, 121, 124 de acuerdo con la presente divulgación, respectivamente.
Cada uno de dichos sistemas informáticos 118, 121, 124 puede tener su correspondiente procesador y memoria 117, 120, 123 respectivamente, y puede ser o estar conectado a un sistema de almacenamiento 125 con su correspondiente memoria 126. El sistema de almacenamiento 125 puede estar en la nube 127, por ejemplo. Cada sistema informático 118, 121, 124 puede recibir datos procedentes de un sitio de sensores asociado 116, 119, 122, respectivamente.
De forma similar a la anterior Figura 1a, cada uno de los sistemas informáticos 118, 121, 124 y el sistema de almacenamiento 125 pueden cooperar para almacenar datos (procedentes de los sensores) estructurados en forma de bosque de árboles balanceados, respectivamente. Es decir, cada uno de los sistemas informáticos 118, 121, 124 puede almacenar una parte del correspondiente bosque y el sistema de almacenamiento 125 puede almacenar la parte restante del bosque. Los detalles sobre este almacenamiento distribuido se proporcionan en otras partes de la descripción.
Cualquiera de los sistemas informáticos anteriores 100, 118, 121, 124 puede ser o estar implementado a través de medios informáticos, medios electrónicos o una combinación de los mismos. Los medios informáticos pueden ser un conjunto de instrucciones (es decir, un programa informático) y entonces el sistema informático 100, 118, 121, 124 puede comprender una memoria (o medio de almacenamiento) y un procesador, que incorporan dicho conjunto de instrucciones almacenadas en la memoria y ejecutables por el procesador. Las instrucciones pueden comprender funcionalidades para ejecutar procedimientos tal como, por ejemplo, los que se describen con referencia a las Figuras 2 - 14c.
En el caso de que el sistema informático 100, 118, 121, 124 sea o esté implementado únicamente por medios electrónicos, el controlador puede ser, por ejemplo, un microcontrolador, un Dispositivo Lógico Programable Complejo (CPLD: Complex Programmable Logic Device), un Conjunto de Puertas Programables en Campo (FPGA: Field Programable Gate Array) o un Circuito Integrado de Aplicación Específica (ASIC: Application-Specific Integrated Circuit).
En el caso de que el sistema informático 100, 118, 121, 124 sea una combinación de medios electrónicos y medios informáticos, los medios informáticos pueden ser un conjunto de instrucciones (por ejemplo, un programa informático) y los medios electrónicos pueden ser cualquier circuito electrónico capaz de implementar la correspondiente etapa o etapas de los procedimientos citados.
El programa informático puede ser o estar incorporado en un medio de almacenamiento (por ejemplo, un CD-ROM, un DVD, una unidad USB, una memoria informática o una memoria de sólo lectura) o ser transportado en una señal portadora (por ejemplo, en una señal portadora eléctrica u óptica).
El programa informático puede ser o estar en forma de código fuente, código objeto, un código intermedio entre código fuente y código objeto tal como en forma parcialmente compilada, o en cualquier otra forma adecuada para su uso en la implementación de los procedimientos según la presente divulgación. El portador puede ser cualquier entidad o dispositivo capaz de transportar el programa informático.
Por ejemplo, el portador puede comprender un medio de almacenamiento, tal como una ROM, por ejemplo un CD ROM o una ROM semiconductora, o un medio de grabación magnética, por ejemplo un disco duro. Además, el portador puede ser un portador transmisible, tal como una señal eléctrica u óptica, que puede ser transportada a través de un cable eléctrico u óptico o por radio u otros medios.
Cuando el programa informático es o está incorporado en una señal que puede ser transportada directamente por un cable u otro dispositivo o medio, el soporte puede estar constituido por dicho cable u otro dispositivo o medio.
Alternativamente, el portador puede ser un circuito integrado en el que el programa informático se encuentra embebido, estando adaptado el circuito integrado para realizar, o para su uso en la realización de, los procedimientos pertinentes.
Con respecto a la configuración técnica de los sistemas de almacenamiento 106, 125, se les pueden atribuir a los sistemas de almacenamiento 106, 125 unas consideraciones similares a las comentadas con respecto a los sistemas informáticos 100, 118, 121, 124. Una diferencia es que los sistemas de almacenamiento 106, 125 pueden necesitar capacidades de procesamiento menores en comparación con los sistemas informáticos, ya que los sistemas de almacenamiento 106, 125 se utilizan simplemente para almacenar datos e intercambiar datos con los sistemas informáticos 100, 118, 121, 124.
Los sistemas informáticos 100, 118, 121, 124 pueden agregar unidades de datos procedentes de un stream o streams de datos para, por ejemplo, producir continuamente valores agregados (por ejemplo, valores promedio, máximos, mínimos...) a partir de datos de sensores.
Dichos valores agregados pueden ser, por ejemplo, valores de contaminación en la ciudad 103. En otros ejemplos, los valores agregados pueden ser, por ejemplo, valores de temperatura en un centro de procesamiento de datos con el fin de monitorizar el estado de diferentes sistemas informáticos en el centro. En otros ejemplos, los valores agregados pueden ser, por ejemplo, valores de temperatura en una fábrica con el fin de monitorizar el estado de la maquinaria en la fábrica.
La Figura 1c es un diagrama de bloques de sistemas informático y de almacenamiento conectados entre sí según la invención.
El sistema informático 1282. comprende una memoria (de ejecución) 129, un conector 131 y un procesador 130.
La memoria 129 está configurada para almacenar al menos los primeros y segundos nodos finales de un bosque de árboles balanceados según la invención. Detalles sobre ejemplos de dichos bosques se proporcionan en otras partes de la descripción con referencia a otras figuras (véanse, por ejemplo, las Figuras 1d, 1e, 4a - 4i, 7, 9a - 9h, 12a - 12e, 14a - 14c y sus correspondientes descripciones).
El conector 131 está configurado para implementar una conexión con el sistema de almacenamiento 132, que está configurado para almacenar al menos algunos de los nodos intermedios del bosque (véanse, por ejemplo, las Figuras 1d, 1e y sus correspondientes descripciones). El intercambio de nodos o elementos de datos en los nodos con el sistema de almacenamiento 132 se realiza a través de dicha conexión.
El procesador 130 está configurado para actualizar los nodos (o elementos de datos en los nodos) almacenados en la memoria 129 según unos criterios de actualización, y para intercambiar nodos (o elementos de datos) con el sistema de almacenamiento 132 a través de la conexión según unos criterios de intercambio.
El sistema de almacenamiento 132 comprende una memoria 133 para almacenar al menos algunos de los nodos intermedios del bosque (véanse, por ejemplo, las Figuras 1d, 1e y sus correspondientes descripciones). El sistema de almacenamiento 132 comprende además un conector 134 para implementar una conexión con el sistema informático 128 (que almacena y actualiza al menos los primeros y segundos nodos finales del bosque). El intercambio de nodos (es decir, elementos de datos) con el sistema informático 128 se realiza a través de dicha conexión.
En el ejemplo particular que se muestra, el sistema informático 128 y el sistema de almacenamiento 132 pueden estar conectados entre sí a través de una red de comunicaciones 135, tal como por ejemplo Internet. En particular, el sistema informático 128 puede ser o estar conectado a la red 135 a través del conector 130 y el sistema de almacenamiento 132 puede ser o estar conectado a la red 135 a través del conector 134.
Los principios comentados con respecto a la Figura 1c se pueden aplicar de forma similar a las configuraciones que se describen con referencia a las Figuras 1a, 1b, y viceversa. El sistema informático y el sistema de almacenamiento se han descrito previamente con respecto a las Figuras 1a - 1c como sistemas separados. Sin embargo, también es posible que, en algunos ejemplos, el sistema de almacenamiento esté comprendido en el sistema informático. Las Figuras 1d, 1e ilustran de forma esquemática una estructura de bosque adecuada para ser almacenada (y actualizada) en una configuración con los correspondientes sistemas informático y de almacenamiento, tal como los representados en las anteriores Figuras 1a - 1c.
En la Figura 1d, se muestra un bosque particular que puede ser o estar almacenado de forma distribuida entre los correspondientes sistemas informático y de almacenamiento según la invención. Este tipo de bosque es un bosque de árboles balanceados de uno o más nodos, incluyendo cada nodo una pluralidad de elementos de datos. Los bosques también comprenden una pluralidad de niveles que incluyen un nivel más superior 144 y un nivel más inferior o de hoja 145.
De acuerdo con la invención, los nodos del bosque comprenden unos primeros nodos finales 139- 136 en un primer lado del bosque, unos segundos nodos finales 139 - 142 en un segundo lado del bosque, y unos nodos intermedios 143 entre los primeros y segundos nodos finales. En el ejemplo particular que se muestra, el primer lado es el lado derecho y el segundo lado es el lado izquierdo. Por motivos de simplicidad, se ha asumido este principio en las Figuras 2 - 14c. En este sentido, los primeros nodos finales 139 - 136 se pueden denominar nodos de más a la derecha, y los segundos nodos finales 139 - 142 se pueden denominar nodos de más a la izquierda.
En otros ejemplos, el primer lado puede ser el lado izquierdo y el segundo lado puede ser el lado derecho. En dicho caso, los primeros nodos finales 139 - 136 se podrían denominar nodos de más a la izquierda, y los segundos nodos finales 139 - 142 se podrían denominar nodos de más a la derecha.
La Figura 1e muestra que en bosques del tipo propuesto, los primeros nodos finales (o, por razones de simplicidad, los nodos de más a la derecha) pueden ser nodos raíz de árboles del bosque. En el ejemplo particular que se muestra, el bosque tiene el árbol de más a la izquierda 146 con el nodo de más a la derecha 139 como nodo raíz de dicho árbol 146, el siguiente árbol 147 con el nodo de más a la derecha 138 como nodo raíz de dicho árbol 147, el siguiente árbol 148 con el nodo de más a la derecha 137 como nodo raíz de dicho árbol 148, y el árbol de más a la derecha 149 con el nodo de más a la derecha 136 como nodo raíz de dicho árbol 149.
En bosques según la presente divulgación, tal como los que se muestran en las Figuras 1d y 1e, todos los elementos de datos en todos los nodos intermedios pueden ser distintos de valor nulo. Además, cada uno de los primeros/segundos nodos finales en los niveles distintos del nivel más superior puede tener todos los elementos de datos distintos de valor nulo, o tener elementos de datos consecutivos distintos de valor nulo y elementos de datos consecutivos iguales a valor nulo, siendo los elementos de datos distintos de valor nulo más lejanos y los elementos de datos iguales a valor nulo más cercanos con respecto al primer/segundo lado del bosque, respectivamente. Según se muestra en las Figuras 1d, 1e y otras (por ejemplo, las Figuras 4a - 4i, 7, 9a - 9h, 12a - 12e, 14a - 14c), sólo los nodos finales pueden tener valores nulos en los elementos de dato derecho en los nodos de más a la derecha y en los elementos de dato izquierdo en los nodos de más a la izquierda. Los demás elementos de datos sólo pueden ser distintos de valor nulo.
Procedimientos según la presente divulgación pueden generar y actualizar una estructura de bosque según el tipo anterior, en la que se pueden realizar agregaciones en una región de más a la derecha y en una región de más a la izquierda del bosque. Por lo tanto, los nodos del bosque que se encuentran en una región intermedia del bosque (es decir, fuera de las regiones de más a la derecha y de más a la izquierda) pueden ser almacenados temporalmente fuera del sistema informático. Esto puede hacer que se minimice la cantidad de memoria necesaria en el sistema informático. Según se ha comentado anteriormente, los nodos no almacenados en la memoria del sistema informático pueden ser almacenados en un correspondiente sistema de almacenamiento.
La región de más a la derecha del bosque puede comprender los nodos de más a la derecha (o primeros nodos finales) y, opcionalmente, un número de nodos intermedios consecutivos que son vecinos del primer nodo final (en cada uno de los niveles). La región de más a la izquierda del bosque puede comprender los nodos de más a la izquierda (o segundos nodos finales) y, opcionalmente, un número de nodos intermedios consecutivos que son vecinos del segundo nodo final (en cada uno de los niveles).
En los procedimientos propuestos se pueden realizar agregaciones a través de una función de agregación que tiene la propiedad asociativa y el correspondiente elemento neutro (o valor nulo).
Visión global de los procedimientos
La Figura 2 es un diagrama de flujo que ilustra de forma esquemática un procedimiento según ejemplos para el almacenamiento distribuido de un bosque de árboles balanceados. Este procedimiento puede comprender además determinar una agregación final de una ventana deslizante para actualizar el bosque en el contexto de una aplicación de streaming. Este procedimiento (o similar) puede ser o estar implementado como, por ejemplo, un programa informático en un sistema como el sistema informático 100 de la Figura 1a. Este programa se puede ejecutar de forma iterativa, de modo que todas o parte de las unidades de datos recibidas procedentes de un stream o streams de datos se pueden procesar de acuerdo con los siguientes principios.
Se pueden realizar agregaciones en procedimientos según la presente divulgación utilizando una o más operaciones binarias asociativas que también se conocen como monoides. Estas operaciones pueden ser conmutativas o no, y pueden incluir un elemento neutro que, en la presente divulgación, también se puede denominar valor nulo o a través del símbolo '0'.
En el bloque 200, se puede iniciar el procedimiento como resultado de la detección de una condición de inicio, tal como por ejemplo la recepción de una petición que solicita el inicio del procedimiento. La condición de inicio también puede corresponder, por ejemplo, a la recepción de una unidad de datos, es decir, el bloque 200 puede ser iniciado cada vez que se recibe una o más unidades de datos procedentes de un stream o streams de datos correspondientes.
En el bloque 201, las regiones de más a la izquierda y de más a la derecha actuales del bosque se pueden almacenar en la memoria del sistema informático, si no se han almacenado ya en la misma en ejecuciones anteriores del procedimiento. Nodos no incluidos en las regiones de más a la izquierda y de más a la derecha se pueden almacenar en el correspondiente sistema de almacenamiento, tal como por ejemplo una base de datos (sistema de almacenamiento) remota. Este enfoque de almacenamiento selectivo puede ser especialmente ventajoso cuando los sistemas informáticos están situados lo más cerca posible espacialmente de la fuente de datos (por ejemplo, sitios de sensores). Dado que sólo una pequeña parte del bosque se puede almacenar en el sistema informático, sus recursos informáticos se pueden utilizar de forma más óptima y/o se pueden almacenar más bosques de tamaño posiblemente mayor en la memoria (de ejecución). Estructuras de bosque más grandes pueden aumentar la eficiencia y la precisión en la determinación de, por ejemplo, agregaciones finales de la ventana deslizante. Una mayor cantidad de bosques puede permitir el procesamiento de datos procedentes de más streams de datos.
La ejecución del procedimiento puede comenzar a partir de un bosque vacío o de un bosque no vacío generado según ejemplos de procedimientos de acuerdo con la presente divulgación. Por ejemplo, el bosque no vacío puede resultar de iteraciones anteriores del mismo procedimiento.
En el bloque 202, se puede recibir una o más unidades de datos (que incluyen, por ejemplo, un tiempo de producción) procedentes de un correspondiente stream o streams de datos. Las unidades de datos recibidas se pueden almacenar en, por ejemplo, una cola de entrada en orden de tiempo de producción, de modo que la unidad de datos producida más recientemente se puede procesar en último lugar.
En el bloque 203, una unidad de datos (procedente de, por ejemplo, la cola de entrada) puede ser insertada en una estructura de bosque de acuerdo con diferentes enfoques tal como, por ejemplo, los que se muestran en las Figuras 3 y 5 o similares. Según se ha comentado anteriormente, se pueden insertar unidades de datos en el bosque en función del tiempo de producción, de tal manera que la unidad de datos que se ha producido más recientemente puede ser insertada en último lugar. El bloque 203 se puede ejecutar tantas veces como sea necesario antes de pasar al siguiente bloque. En particular, el bloque 203 se puede ejecutar para cada una de las unidades de datos recibidas según el orden de tiempo de producción.
La inserción de una unidad de datos puede provocar, en cualquiera de los niveles, la creación de un nuevo primer nodo final (o nodo de más a la derecha) y la transformación de un primer nodo final (o nodo de más a la derecha) en un nodo intermedio y, por lo tanto, un aumento del número de nodos de ese nivel almacenados en el sistema informático. En este caso, el sistema informático puede enviar un nodo intermedio al sistema de almacenamiento para compensar dicho aumento. Esta regla puede ser o estar implementada de diversas maneras. Por ejemplo, se puede realizar una transferencia de un número determinado de nodos (por ejemplo, 10, 20, 30 o cualquier otra cantidad predefinida) del sistema informático al sistema de almacenamiento cada vez que el número de nodos se haya incrementado en una cantidad igual o similar a dicho número determinado de nodos.
En el bloque 204, el procedimiento puede incluir una verificación de si se satisface una condición de eliminación predefinida. En el caso de que el resultado de dicha verificación sea positivo (o verdadero), la unidad o unidades de datos pueden ser eliminadas del bosque. En caso contrario, no se realiza la eliminación. La condición de eliminación puede incluir, por ejemplo, un número máximo de unidades de datos en el bosque, de forma que sólo se puedan realizar una o más eliminaciones cuando se alcance dicho máximo. La eliminación de la unidad o unidades de datos se puede realizar de acuerdo con diferentes enfoques tal como, por ejemplo, cualquiera de los que se muestran en las Figuras 8, 10, 11, 13 o similares.
La eliminación de una unidad de datos puede provocar, en cualquiera de los niveles, la eliminación de un segundo nodo final (o nodo de más a la izquierda) existente y la transformación de un nodo intermedio en un nuevo segundo nodo final (o nodo de más a la izquierda) y, por lo tanto, una disminución del número de nodos de ese nivel almacenados en el sistema informático. En este caso, el sistema informático puede recuperar un nodo intermedio del sistema de almacenamiento para compensar dicha disminución. Este principio puede ser o estar implementado de diversas maneras. Por ejemplo, la transferencia de un número determinado de nodos (por ejemplo, 10, 20, 30 o cualquier otra cantidad predefinida) del sistema de almacenamiento al sistema informático se puede realizar cada vez que el número de nodos haya disminuido en una cantidad igual o similar a dicho número determinado de nodos. En el bloque 205, se puede determinar un resultado parcial derecho en función de los nodos de más a la derecha del bosque y, en el bloque 206, se puede determinar un resultado parcial izquierdo en función de los nodos de más a la izquierda del bosque. Los resultados parciales derecho e izquierdo se pueden determinar de diferentes maneras en función de cómo se hayan insertado las unidades de datos en el bosque y, en algunas circunstancias, de cómo se hayan eliminado las unidades de datos del bosque. Los resultados parciales derecho e izquierdo se pueden entender como agregaciones parciales correspondientes a respectivas partes derecha e izquierda del bosque cuya combinación da lugar al bosque completo.
En algunos ejemplos, si la inserción/eliminación de una unidad o unidades de datos comprende una actualización incremental de un nodo de resultados que incluye unos resultados parciales derecho e izquierdo, la determinación de los resultados parciales derecho e izquierdo puede comprender la recuperación de correspondientes valores de dicho nodo de resultados.
En otros ejemplos sin actualización incremental de un nodo de resultados, la determinación del resultado parcial derecho puede comprender la agregación de correspondientes nodos derechos, y la determinación del resultado parcial izquierdo puede comprender la agregación de correspondientes nodos izquierdos.
En el bloque 207, se puede determinar una agregación final de la ventana completa agregando los resultados parciales derecho e izquierdo que se han determinado en los bloques 205 y 206 respectivamente. La agregación o agregaciones finales o datos agregados pueden ser procesados o analizados para inferir condiciones distorsionantes o perjudiciales y, en consecuencia, determinar acciones correctivas/preventivas para al menos atenuar dichas condiciones distorsionantes o perjudiciales. Este análisis de los datos agregados puede ser realizado por el mismo sistema informático que produce los datos agregados, o por un sistema externo que puede estar situado, por ejemplo, en una ubicación remota con respecto al sistema informático.
En el bloque 208, el procedimiento puede incluir una verificación de si se satisface una condición de finalización predefinida. En el caso de un resultado positivo (o verdadero) de dicha verificación, se puede realizar una transición al bloque 209 para finalizar la ejecución del procedimiento. De lo contrario, el procedimiento puede volver hacia atrás al bloque 202 para recibir nuevas unidades de datos de los streams de datos y, por lo tanto, iniciar una nueva iteración.
En algunos ejemplos, la condición final puede comprender una petición que solicita la finalización del procedimiento, en cuyo caso el procedimiento (programa informático) puede ser finalizado completamente (en el bloque 209). En otros ejemplos, la condición final puede incluir un tiempo máximo transcurrido sin recibir ninguna unidad de datos del stream o streams de datos, en cuyo caso se puede hacer (en el bloque 209) que el procedimiento/programa pase a un estado de espera. En el bloque 209, el estado de espera puede causar la desactivación del programa informático mientras se esperan nuevas unidades de datos y su reactivación ante la recepción de nuevas unidades de datos. Inserción
La Figura 3 es un diagrama de flujo que ilustra de forma esquemática una inserción de una unidad de datos en una estructura de bosque que implementa una ventana deslizante en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar. La Figura 3 incluye algunas referencias numéricas de la Figura 2 porque muestra una posible implementación del bloque 203 (o similar) con el correspondiente bloque anterior 202 (o similar) y el posterior bloque 204 (o similar).
Las Figuras 4a - 4i ilustran de forma esquemática una estructura de bosque y su evolución debida a la inserción de unidades de datos realizada de la misma manera o similar a la que se indica en la Figura 3. El símbolo '0' se utiliza en las Figuras 4a - 4i para indicar el elemento neutro o valor nulo del correspondiente monoide que se utiliza para realizar agregaciones. En este ejemplo concreto se utiliza la suma para realizar agregaciones, aunque se podría utilizar cualquier otra operación de monoide para ese fin. Para facilitar la comprensión, se pueden utilizar referencias numéricas de las Figuras 4a - 4i en la siguiente descripción de la Figura 3.
Los bosques representados en las Figuras 4a - 4i tienen un nivel más inferior 401 y un nivel más superior 400, y cada uno de los niveles puede tener un nodo de más a la derecha. La Figura 4a muestra un bosque inicial que puede haber sido producido por procedimientos según la presente divulgación partiendo de un bosque vacío. El nodo de más a la derecha en el nivel más inferior 401 en dicho bosque inicial se indica en la Figura 4a con la referencia numérica 405. Las Figuras 4b - 4i muestran diferentes evoluciones de dicho bosque inicial debidas a inserciones realizadas según el diagrama de flujo de la Figura 3 o similar.
Las Figuras 4a - 4i muestran bosques de árboles binarios por motivos de simplicidad, pero también son posibles procedimientos según la presente divulgación que producen (y/o tratan con) bosques de árboles basados en más de dos dimensiones.
En el bloque 300, el nivel más inferior 401 del bosque puede ser designado (o establecido) como el nivel actual (es decir, el nivel que se está procesando en la iteración actual), y la unidad de datos recibida (procedente del bloque 202) puede ser designada (o establecida) como dato actual.
En el bloque 301, se puede realizar una verificación de si el nivel actual (del bosque) está vacío, en cuyo caso se puede realizar una transición al bloque 302 y, en caso contrario, el procedimiento puede pasar al bloque 303.
En el bloque 302, se puede crear un nuevo nodo (en la memoria del sistema informático) con dato izquierdo igual al dato actual (que corresponde a la unidad de datos recibida en la primera iteración) y dato derecho igual a valor nulo (o elemento neutro). Una vez se ha creado el nuevo nodo, la inserción de la unidad de datos puede ser finalizada pasando al bloque 204 (Figura 2).
Los datos izquierdo y derecho de un determinado nodo en el bosque se pueden definir con referencia a la Figura 4a, en la que el nodo de más a la derecha 405 en el nivel más inferior 401 se muestra con dato izquierdo 403 igual a '1' y dato derecho 404 igual a '0' (elemento neutro o valor nulo).
En el bloque 303, se puede realizar una verificación de si el dato derecho 404 del nodo de más a la derecha 405 en el nivel actual (nivel más inferior 401 en la primera iteración) es igual a valor nulo. En el caso de que el resultado de dicha verificación sea positivo (o verdadero), el procedimiento puede pasar al bloque 304. De lo contrario, se puede realizar una transición al bloque 305.
En el bloque 304, el dato derecho 404 del nodo de más a la derecha 405 puede ser actualizado con el dato actual (unidad de datos recibida 402 igual a '2' en la Figura 4a). Una vez se ha realizado dicha actualización, la inserción de la unidad de datos puede ser finalizada pasando al bloque 204 (Figura 2).
En el bloque 305, se puede determinar una agregación promocionable agregando los datos izquierdo y derecho del nodo de más a la derecha en el nivel actual y, en el bloque 306, se puede crear un nuevo nodo de más a la derecha (en la memoria del sistema informático) con el dato izquierdo igual al dato actual y el dato derecho igual a valor nulo. La expresión 'agregación promocionable' se utiliza en este documento para indicar que dicha agregación debe ser promocionada o propagada hacia arriba en el bosque.
La Figura 4b muestra un ejemplo de determinación de una agregación promocionable y de creación (en la memoria del sistema informático) de un nuevo nodo de más a la derecha según los bloques 305 y 306 respectivamente. La agregación promocionable 413 (igual a '3') resulta de la agregación de los datos izquierdo y derecho (iguales a '1' y '2' respectivamente) del nodo de más a la derecha 405 (el nodo 409 aún no ha sido creado) en el nivel actual (nivel más inferior 401 en este caso). A continuación, se puede crear un nuevo nodo de más a la derecha 409 (en la memoria del sistema informático) con el dato izquierdo 407 igual al dato actual (unidad de datos recibida 410 igual a '1' en este caso) y el dato derecho igual a '0' (elemento neutro o valor nulo).
La Figura 4b muestra cómo se puede usar dicha agregación promocionable 413 (igual a '3') en la segunda iteración en el bloque 304. En particular, se muestra que el dato derecho 411 del nodo de más a la derecha 412 en un nivel intermedio 406 (un nivel encima del nivel más inferior 401) puede ser actualizado con la agregación promocionable 413 (igual a '3') que se ha determinado en el bloque 305 en la iteración anterior.
Una vez que se ha determinado la agregación promocionable (en el bloque 305) y se ha creado el nuevo nodo de más a la derecha (en el bloque 306), se puede realizar una transición al bloque 307.
En el bloque 307, se puede realizar una verificación de si el nivel actual es el nivel más superior 400 (Figura 4a). En el caso de un resultado positivo (o verdadero) de dicha verificación, el procedimiento puede pasar al bloque 309. De lo contrario, se puede realizar una transición al bloque 308.
En el bloque 308, el nivel encima del nivel actual puede ser designado (o establecido) como el nivel actual y la agregación promocionable puede ser designada (o establecida) como dato actual para subir de nivel en el bosque con el fin de propagar la agregación promocionable hacia arriba tantos niveles como sea necesario y, por lo tanto, iniciar una nueva iteración. Con este fin, se puede realizar un retroceso del bloque 308 al bloque 301.
En el bloque 309, dado que se ha creado un segundo nodo en el nivel más superior actual, se puede crear (en la memoria del sistema informático) un nuevo nodo en un nuevo nivel más superior (encima del nivel más superior actual), teniendo dicho nuevo nodo un dato izquierdo igual a la agregación promocionable y un dato derecho igual a valor nulo. La Figura 4h muestra un ejemplo de estas circunstancias y la Figura 4i muestra un bosque 'final' resultante de dichas circunstancias ilustradas por la Figura 4h.
Al menos algunas de las Figuras 4a - 4i han sido ligeramente referidas en la descripción anterior de la Figura 3 para facilitar la comprensión de la Figura 3. Ahora, se proporcionará una descripción más detallada de las Figuras 4a - 4i como un ejemplo de evolución del correspondiente bosque según el sub-procedimiento de inserción de la Figura 3 o similar.
La Figura 4a muestra que se puede recibir una nueva unidad de datos 402 (procedente del stream de datos) y puede ser insertada como dato derecho en el nodo de más a la derecha 405 en el nivel más inferior 401. La ejecución del sub-procedimiento de inserción puede ser finalizada porque no se ha creado un nuevo nodo de más a la derecha en el nivel actual/inferior 401, y se puede iniciar una nueva ejecución de dicho sub-procedimiento ante la recepción de otra unidad de datos.
La Figura 4b muestra que se puede recibir una nueva unidad de datos 410 pero, en este caso, dicha unidad de datos 410 puede no ser insertada en el nodo de más a la derecha 405 porque el dato izquierdo y el dato derecho de dicho nodo 405 son distintos de valor nulo. En lugar de eso, se puede determinar una agregación promocionable 413 y se puede crear un nuevo nodo de más a la derecha 409 (en la memoria del sistema informático). A continuación, la nueva unidad de datos 410 puede ser insertada como dato izquierdo 407 en dicho nuevo nodo de más a la derecha 409, y la agregación promocionable 413 puede ser insertada como dato derecho 411 en el nodo de más a la derecha 412 en el nivel intermedio 401 (es decir, el nivel encima del nivel más inferior 401).
Esta última inserción puede producir una relación padre-hijo 408 consistente entre los nodos 412 y 405 en el sentido de que la agregación de los datos izquierdo y derecho ('1' '2') del nodo hijo 405 es igual al dato derecho 411 (= '3') del nodo padre 412. La ejecución del sub-procedimiento de inserción puede ser finalizada porque no se ha creado ningún nuevo nodo de más a la derecha en el nivel actual/intermedio 406, y se puede iniciar una nueva ejecución de dicho sub-procedimiento ante la recepción de otra unidad de datos.
La Figura 4c muestra que se puede recibir una nueva unidad de datos 414 y puede ser insertada como dato derecho 408 en el nodo de más a la derecha 409 en el nivel más inferior 401. La ejecución del sub-procedimiento de inserción puede ser finalizada porque no se ha creado ningún nuevo nodo de más a la derecha en el nivel actual/inferior 401, y se puede iniciar una nueva ejecución de dicho sub-procedimiento ante la recepción de otra unidad de datos.
La Figura 4d muestra que se puede recibir una nueva unidad de datos 416 y dicha unidad de datos 416 puede no ser insertada en el nodo de más a la derecha 409 porque los datos izquierdo y derecho de dicho nodo 409 son distintos de valor nulo. En lugar de eso, se puede determinar una agregación promocionable 420 y se puede crear un nuevo nodo de más a la derecha 415 (en la memoria del sistema informático). A continuación, la nueva unidad de datos 416 puede ser insertada como dato izquierdo en el nuevo nodo 415. Sin embargo, la agregación promocionable 420 puede no ser insertada en el nodo 411 del nivel intermedio 406 porque los datos izquierdo y derecho de dicho nodo 411 son distintos de valor nulo.
En consecuencia, se puede determinar otra agregación promocionable 422 a partir del nodo 411 en el nivel intermedio 406 y se puede crear un nuevo nodo de más a la derecha 421 en el mismo nivel intermedio 406. A continuación, la agregación promocionable 420 procedente del nivel más inferior 401 puede ser insertada como dato izquierdo 418 en el nuevo nodo de más a la derecha 421 (con el dato derecho 419 igual a valor nulo). Esta última inserción puede producir una relación padre-hijo 417 consistente entre los nodos 421 y 409 en el sentido de que la agregación de los datos izquierdo y derecho ('1' '2') del nodo hijo 409 es igual al dato izquierdo 418 (= '3') del nodo padre 421.
Una vez que el nivel intermedio 406 ha sido 'procesado', se puede realizar una transición del nivel actual al siguiente nivel hacia arriba en el bosque con el fin de procesar el siguiente nivel (nivel más superior) 400. En este caso, la agregación promocionable 422 procedente del nivel intermedio 406 puede ser insertada como dato derecho en el único nodo existente 423 en el nivel más superior 400. Esta última inserción puede producir una relación padre-hijo consistente 424 entre los nodos 423 y 411 en el sentido de que la agregación de los datos izquierdo y derecho ('3' '3') del nodo hijo 411 es igual al dato derecho (= '6') del nodo padre 423. La ejecución del sub-procedimiento de inserción puede entonces ser finalizada porque no se ha creado ningún nuevo nodo de más a la derecha en el nivel actual/superior 400, y se puede iniciar una nueva ejecución de dicho sub-procedimiento ante la recepción de otra unidad de datos.
Las Figuras 4e - 4i muestran evoluciones subsiguientes del bosque sin utilizar números de referencia porque los principios subyacentes se han explicado suficientemente con referencia a las Figuras 4a - 4d. Estas evoluciones subsiguientes del bosque se describen en este documento con el fin de reflejar claramente cómo el bosque puede alcanzar una situación en la que se puede crear un nuevo nivel más superior.
La Figura 4e muestra que la nueva unidad de datos (igual a '2') puede ser recibida e insertada como dato derecho en el nodo de más a la derecha en el nivel más inferior. La ejecución del sub-procedimiento de inserción puede entonces ser finalizada porque no se ha creado un nuevo nodo de más a la derecha en el nivel actual/inferior.
La Figura 4f muestra que se puede recibir una nueva unidad de datos (igual a '1') y se puede determinar una agregación promocionable (igual a '3') a partir del nodo de más a la derecha en el nivel más inferior (porque los datos izquierdo y derecho del nodo de más a la derecha son distintos de valor nulo). Esta figura también muestra que se puede crear un nuevo nodo de más a la derecha en el nivel más inferior y se puede insertar la nueva unidad de datos como dato izquierdo en el nuevo nodo de más a la derecha en el nivel más inferior. También se muestra en esta figura que la agregación promocionable procedente del nivel más inferior se puede insertar como dato derecho en el nodo de más a la derecha en el nivel intermedio. La ejecución del sub-procedimiento de inserción puede entonces ser finalizada porque no se ha creado ningún nuevo nodo de más a la derecha en el nivel actual/intermedio.
La Figura 4g muestra que la nueva unidad de datos (igual a '2') puede ser recibida e insertada como dato derecho en el nodo de más a la derecha en el nivel más inferior. La ejecución del sub-procedimiento de inserción puede entonces ser finalizada porque no se ha creado un nuevo nodo de más a la derecha en el nivel actual/inferior.
La Figura 4h muestra que se puede recibir una nueva unidad de datos (igual a '1') y se puede determinar una agregación promocionable (igual a '3') a partir del nodo de más a la derecha en el nivel más inferior (porque los datos izquierdo y derecho en dicho nodo de más a la derecha son distintos de valor nulo). Esta figura también muestra que se puede crear un nuevo nodo de más a la derecha en el nivel más inferior y se puede insertar la nueva unidad de datos como dato izquierdo en dicho nuevo nodo de más a la derecha en el nivel más inferior. También se muestra que se puede determinar una agregación promocionable (igual a '6') a partir del nodo de más a la derecha en el nivel intermedio (porque los datos izquierdo y derecho en dicho nodo de más a la derecha son distintos de valor nulo).
La Figura 4h muestra además que se puede crear un nuevo nodo de más a la derecha en un nivel intermedio y la agregación promocionable procedente del nivel más inferior se puede insertar como dato izquierdo en dicho nuevo nodo de más a la derecha. La agregación promocionable (igual a '12') se puede determinar a partir del nodo de más a la derecha y único existente en el nivel más superior (porque los datos izquierdo y derecho en dicho nodo son distintos de valor nulo). A continuación, la agregación promocionable procedente del nivel intermedio se puede insertar como dato izquierdo en el nuevo nodo de más a la derecha en el nivel más superior, de modo que se puede definir una relación padre-hijo consistente entre el nuevo nodo de más a la derecha en el nivel más superior y el anterior nodo de más a la derecha en el nivel intermedio.
La Figura 4h muestra finalmente que se puede crear un nuevo nodo en el nuevo nivel más superior y que la agregación promocionable procedente del nivel más superior anterior se puede insertar como dato izquierdo en dicho nuevo nodo del nuevo nivel más superior. Esta última inserción implica que se puede definir una relación padre-hijo consistente entre el nuevo nodo en el nuevo nivel más superior y el anterior nodo de más a la derecha en el nivel más superior anterior. La ejecución del sub-procedimiento de inserción puede entonces ser finalizada, ya que se ha creado un nuevo nodo en el nuevo nivel más superior.
La Figura 4i muestra un bosque final que puede resultar de las circunstancias (evoluciones) anteriores ilustradas por las Figuras 4a - 4h. Es decir, el bosque final puede resultar de recibir varias nuevas unidades de datos (procedentes del stream de datos) y realizar el sub-procedimiento de inserción según la Figura 3 para cada una de las unidades de datos recibidas. Construir el bosque de esta manera puede permitir determinar un resultado parcial derecho (bloque 205 de la Figura 2) a partir de los nodos de más a la derecha en los niveles distintos del nivel más superior y un resultado parcial izquierdo (bloque 206 de la Figura 2) a partir de los nodos de más a la izquierda en todos los niveles, según se indica a continuación. El resultado final (es decir, la agregación de la ventana completa) se puede determinar agregando dichos resultados parciales derecho e izquierdo (bloque 207 de la Figura 2).
El resultado parcial derecho se puede determinar agregando los datos izquierdo y derecho de los nodos de más a la derecha en los niveles distintos del nivel más superior:
Nivel más inferior => '1' '0'
Primer nivel encima del nivel más inferior => '3' '0'
Segundo nivel encima del nivel más inferior => '6' '0'
Resultado parcial derecho => '1' '0' '3' '0' '6' '0' = '10'.
El resultado parcial izquierdo se puede determinar agregando los datos de más a la izquierda distintos de valor nulo en el nivel más inferior y el dato derecho de los nodos de más a la izquierda en todos los niveles que tienen datos izquierdo y derecho distintos de valor nulo (es decir, se descarta el nodo de nivel más superior <12, 0>):
Nivel más inferior => '2'
Primer nivel encima del nivel más inferior => '3'
Segundo nivel encima del nivel más inferior => '6'
Datos de más a la izquierda distintos de valor nulo => '1'
Resultado parcial izquierdo => '2' '3' '6' '1' = '12'.
En consecuencia, la agregación final de la ventana completa puede ser igual a '22', lo que resulta de la agregación del resultado parcial derecho (= '10') y del resultado parcial izquierdo (= '12').
La Figura 5 es un diagrama de flujo que ilustra de forma esquemática un sub-procedimiento de inserción similar al sub-procedimiento de inserción de la Figura 3. En particular, los bloques 500 - 509 (de la Figura 5) pueden ser iguales o similares a los bloques 300 - 309 (de la Figura 3) respectivamente. La Figura 5 se puede diferenciar de la Figura 3 en los bloques 510 - 512, que tienen por objeto actualizar de forma incremental un nodo de resultados que tiene sub-nodos de resultado derecho e izquierdo para almacenar los resultados parciales izquierdo y derecho, respectivamente. El nodo de resultados puede residir en la memoria del sistema informático.
En el bloque 512, una nueva unidad de datos (recibida del stream de datos) puede ser agregada al resultado parcial derecho en el sub-nodo de resultado derecho y el sub-nodo de resultado derecho puede ser actualizado con dicha agregación. Esto implica que el sub-nodo de resultado derecho puede ser actualizado incrementalmente a medida que se reciben e insertan nuevas unidades de datos en el bosque.
En el bloque 510, se puede realizar una verificación de si sólo se ha actualizado (en el bloque 504) un nodo existente en el nivel más superior. En el caso de que el resultado de dicha verificación sea positivo (o verdadero), se puede realizar una transición al bloque 511. En caso contrario, el sub-procedimiento puede ser finalizado y pasar, por ejemplo, al bloque 204 (si no se van a realizar más inserciones).
En el bloque 511, se pueden determinar resultados parciales derecho e izquierdo en sub-nodos de resultado derecho e izquierdo a partir de la nada, de forma similar a la que se ha descrito anteriormente con referencia a la Figura 4i. En particular, el resultado parcial derecho se puede determinar agregando los datos izquierdo y derecho de los nodos de más a la derecha en los niveles distintos del nivel más superior en el bosque. El resultado parcial izquierdo se puede determinar agregando el dato de más a la izquierda distinto de valor nulo en el nivel más inferior y el dato derecho de los nodos de más a la izquierda que tienen datos izquierdo y derecho distintos de valor nulo en todos los niveles del bosque. La Figura 6 ilustra un sub-procedimiento de ejemplo para determinar resultados parciales derecho e izquierdo a partir de la nada (inspeccionando los nodos de más a la derecha en los niveles distintos del nivel más superior y los nodos de más a la izquierda en todos los niveles).
Una vez que el bloque 511 ha sido completado, el sub-procedimiento puede ser finalizado o puede ser repetido con el fin de insertar una nueva unidad de datos recibida del stream de datos. Si el sub-procedimiento es finalizado, se puede realizar una transición a, por ejemplo, el bloque 204.
Si el sub-nodo de resultado derecho ha sido actualizado de acuerdo con el sub-procedimiento propuesto, el resultado parcial derecho puede ser recuperado directamente del nodo de resultados (en el bloque 205 de la Figura 2). De forma similar, si el sub-nodo de resultado izquierdo ha sido actualizado de acuerdo con el sub-procedimiento propuesto, el resultado parcial izquierdo puede ser recuperado directamente del sub-nodo de resultado izquierdo (en el bloque 206 de la Figura 2). Esto puede hacer que al menos algunos procedimientos según la presente divulgación sean más eficientes en términos de uso óptimo de recursos informáticos.
Generación de resultados parciales
La Figura 6 es un diagrama de flujo que ilustra de forma esquemática un ejemplo de sub-procedimiento que implementa el bloque 511 (de la Figura 5) para determinar resultados parciales derecho e izquierdo a partir de la nada. En este ejemplo, se utiliza una pila para almacenar las agregaciones parciales correspondientes al resultado (o agregación) parcial izquierdo. Esta pila puede residir en la memoria del sistema informático.
En el bloque 600, los sub-nodos de resultado derecho e izquierdo pueden ser inicializados con valor nulo (o elemento neutro) y la pila puede ser inicializada como vacía. A continuación, el sub-procedimiento puede pasar al siguiente bloque 601.
En el bloque 601, el sub-nodo de resultado derecho puede ser actualizado con la agregación de los datos izquierdo y derecho de los nodos de más a la derecha en todos los niveles distintos del nivel más superior. A continuación, el sub-procedimiento puede pasar al siguiente bloque 602.
En el bloque 602, se puede determinar una selección de nodos de más a la izquierda con datos izquierdo y derecho distintos de valor nulo en todos los niveles del bosque. Dicha selección puede ser ordenada en orden descendente (de arriba abajo) de nivel. A continuación, se puede realizar una transición al siguiente bloque 603.
En el bloque 603, se puede realizar una verificación de si hay un siguiente nodo disponible (es decir, que aún no ha sido procesado) en la selección de nodos de más a la izquierda. En la primera iteración, el siguiente nodo disponible puede ser el primer nodo de la selección (si no está vacía). En el caso de que el resultado de dicha verificación sea positivo (o verdadero), el sub-procedimiento puede pasar al bloque 604. En caso contrario, se puede realizar una transición al bloque 605.
En el bloque 604, se puede determinar una agregación del dato más superior en la pila y el dato derecho de dicho siguiente nodo de la selección. A continuación, dicha agregación puede ser apilada (pushed) en la pila para mantener un registro de la correspondiente agregación parcial en la región de más a la izquierda del bosque. En el caso de que la pila esté vacía, se puede asumir que el dato más superior en la pila es igual a valor nulo (o elemento neutro). Una vez se ha actualizado la pila, el sub-procedimiento puede volver hacia atrás al bloque anterior 603 con el fin de procesar el siguiente nodo disponible (si existe) en la selección.
En el bloque 605, se puede determinar una agregación del dato más superior en la pila y el dato de más a la izquierda distinto de valor nulo en el nivel más inferior. A continuación, el sub-nodo de resultado izquierdo puede ser actualizado con dicha agregación que corresponde al resultado parcial izquierdo o agregación parcial izquierda. En el caso de que la pila esté vacía, se puede asumir que el dato más superior en la pila es igual a valor nulo (o elemento neutro). El dato de más a la izquierda distinto de valor nulo en el nivel más inferior puede ser, por ejemplo, el dato izquierdo del nodo de más a la izquierda en el nivel más inferior si dicho dato izquierdo es distinto de valor nulo, o el dato derecho en el nodo de más a la izquierda en el nivel más inferior si dicho dato derecho es distinto de valor nulo y el dato izquierdo es igual a valor nulo. Una vez se ha actualizado el sub-nodo de resultado izquierdo, el sub-procedimiento puede ser finalizado pasando del bloque 605 a, por ejemplo, el bloque 204 de la Figura 2 o similar.
La Figura 7 muestra el bosque de la Figura 4i junto con el correspondiente nodo de resultados 700 y la pila 703 actualizados según el sub-procedimiento de la Figura 6. El resultado parcial izquierdo se puede determinar recuperándolo del sub-nodo de resultado izquierdo 701 en el nodo de resultados 700 (bloque 206 de la Figura 2). El resultado parcial derecho se puede determinar recuperándolo del sub-nodo de resultado derecho 702 en el nodo de resultados 700 (bloque 205 de la Figura 2). El resultado (o agregación) final se puede determinar agregando los resultados parciales izquierdo y derecho que han sido recuperados (bloque 207 de la Figura 2).
Eliminación
La Figura 8 es un diagrama de flujo que ilustra de forma esquemática un sub-procedimiento de eliminación de una unidad de datos de una estructura de bosque que implementa una ventana deslizante en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar.
Las Figuras 9a - 9h ilustran de forma esquemática una estructura de bosque y su evolución debida a la eliminación de unidades de datos realizada de la misma manera o similar a la que se indica en la Figura 8. El símbolo '0' se utiliza en las Figuras 9a - 9h para indicar el elemento neutro o valor nulo del correspondiente monoide utilizado para realizar las agregaciones. Para facilitar la comprensión, se pueden utilizar referencias numéricas de las Figuras 9a -9h en la siguiente descripción de la Figura 8.
En el bloque 800, el nivel más inferior puede ser designado (o establecido) como el nivel actual y, a continuación, se puede realizar una transición al siguiente bloque 801. En el ejemplo de la Figura 9a, el nivel más inferior se indica con la referencia numérica 900.
En el bloque 801, se puede realizar una verificación de si el dato de más a la izquierda distinto de valor nulo en el nivel actual/inferior satisface una condición de eliminación predefinida. En el caso de que el resultado de dicha verificación sea positivo (o verdadero), el sub-procedimiento puede pasar al bloque 802. De lo contrario, el sub­ procedimiento puede pasar al bloque 807 para provocar la finalización del sub-procedimiento.
En el ejemplo de la Figura 9a, el dato de más a la izquierda distinto de valor nulo en el nivel más inferior corresponde al dato izquierdo 902 del nodo de más a la izquierda 901 (igual a '1'). En el ejemplo de la Figura 9b, el dato de más a la izquierda distinto de valor nulo en el nivel más inferior corresponde al dato derecho 903 del nodo de más a la izquierda 901 (igual a '2') ya que su dato izquierdo 901 es igual a valor nulo.
Una condición de eliminación predefinida puede comprender, por ejemplo, el cumplimiento de que el número de actualizaciones agregadas (unidades de datos recibidas) en la ventana no puede superar un número máximo de actualizaciones. Es decir, un exceso de contaje (con respecto a dicho máximo) puede ser reducido a cero con el fin de hacer que se satisfaga la condición de eliminación. Con el fin de implementar esto, una dimensión de la agregación podría ser un contaje de actualizaciones. Si el valor del contaje en una agregación parcial considerada es menor o igual que el exceso de contaje en la agregación de la ventana completa, los datos de la ventana correspondiente a dicha agregación parcial pueden ser eliminados según la condición de eliminación.
Otra condición de eliminación puede comprender el cumplimiento de que las actualizaciones agregadas (unidades de datos recibidas) en la ventana no pueden estar fuera de un lapso de tiempo específico tal como, por ejemplo, una hora. Con este fin, cada unidad de datos recibida puede incluir una marca de tiempo correspondiente a cuándo se ha producido la unidad de datos. Una dimensión de la agregación podría ser una marca de tiempo máxima, de modo que si el valor de la marca de tiempo en una agregación parcial considerada es más antiguo que el lapso de tiempo especificado por la condición de eliminación, los datos en la ventana correspondientes a dicha agregación parcial pueden ser eliminados según la condición de eliminación.
En el bloque 802, una vez que se ha determinado (en el bloque 801) que el dato de más a la izquierda distinto de valor nulo en el nivel más inferior satisface la condición de eliminación, se puede realizar una verificación de si los datos izquierdo y derecho del nodo de más a la izquierda en el nivel actual son distintos de valor nulo. En el caso de que el resultado de dicha verificación sea positivo (o verdadero), el sub-procedimiento puede pasar al bloque 803. En caso contrario, se puede realizar una transición al bloque 804.
En el ejemplo de la Figura 9a, la verificación del bloque 802 puede producir un resultado positivo (o verdadero) ya que los datos izquierdo y derecho 902, 903 del nodo de más a la izquierda 901 (en el nivel más inferior 900) son distintos de valor nulo. En el ejemplo de la Figura 9b, la verificación del bloque 802 puede producir un resultado negativo (o falso) ya que el dato izquierdo 902 del nodo de más a la izquierda 901 (en el nivel más inferior 900) es igual a valor nulo.
En el bloque 803, una vez que se ha determinado (en el bloque 802) que los datos izquierdo y derecho del nodo de más a la izquierda en el nivel actual son distintos de valor nulo, el dato izquierdo del nodo de más a la izquierda en el nivel actual puede ser actualizado con valor nulo. A continuación, el sub-procedimiento puede volver hacia atrás al bloque 800 con el fin de iniciar una nueva iteración empezando de nuevo desde el nivel más inferior. La Figura 9a muestra que el dato izquierdo 902 del nodo de más a la izquierda 901 en el nivel más inferior 900 es actualizado con valor nulo (según el bloque 803), y la Figura 9c muestra que el dato izquierdo 906 del nodo de más a la izquierda 905 en el nivel intermedio 904 es actualizado con valor nulo (según el bloque 803).
En el bloque 804, una vez que se ha determinado (en el bloque 802) que el dato izquierdo del nodo de más a la izquierda del nivel actual es igual a valor nulo, se puede eliminar el nodo de más a la izquierda del nivel actual. A continuación, se puede realizar una transición al bloque 805 con el fin de verificar si el nodo eliminado corresponde al nivel más superior. La Figura 9b muestra que el nodo de más a la izquierda 901 en el nivel más inferior 900 es eliminado (según el bloque 804) porque el dato izquierdo 902 de dicho nodo es igual a valor nulo. La Figura 9f muestra que el nodo de más a la izquierda en el nivel intermedio es eliminado (según el bloque 804) porque el dato izquierdo de dicho nodo es igual a valor nulo.
En el bloque 805, una vez que se ha eliminado el nodo de más a la izquierda en el nivel actual, se puede realizar una verificación de si dicho nodo eliminado corresponde al nivel más superior. En el caso de que el resultado de dicha verificación sea positivo (o verdadero) (nodo eliminado en el nivel más superior), el sub-procedimiento puede volver hacia atrás al bloque 800 con el fin de iniciar una nueva iteración empezando de nuevo desde el nivel más inferior. En caso contrario (nodo eliminado en un nivel distinto del nivel superior), se puede realizar una transición al bloque 806 para subir de nivel en el bosque.
En el bloque 806, una vez que se ha verificado que el nodo eliminado no corresponde al nivel más superior, el nivel encima del actual puede ser designado como el nivel actual, es decir, se puede realizar una transición del nivel actual al siguiente nivel hacia arriba en el bosque. A continuación, el sub-procedimiento puede volver hacia atrás al bloque 802 con el fin de iniciar una nueva iteración para inspeccionar el nodo de más a la izquierda en dicho siguiente nivel hacia arriba (bloque 802) y actualizar su dato izquierdo con valor nulo (bloque 803) o eliminarlo (bloque 804) en función de si sus datos izquierdo y derecho son iguales a o distintos de valor nulo.
Al menos algunas de las Figuras 9a - 9h han sido ligeramente referidas en la descripción anterior de la Figura 8 para facilitar la comprensión de la Figura 8. Ahora, se proporcionará una descripción más detallada de las Figuras 9a - 9h como un ejemplo de evolución del correspondiente bosque según el sub-procedimiento de eliminación de la Figura 8 o similar.
La Figura 9a muestra que los datos izquierdo y derecho 902, 903 del nodo de más a la izquierda 901 en el nivel más inferior son distintos de valor nulo y, por lo tanto, el dato izquierdo 902 de dicho nodo de más a la izquierda 901 puede ser actualizado con valor nulo.
La Figura 9b ilustra que se puede iniciar una nueva iteración comenzando de nuevo desde el nivel más inferior porque el dato izquierdo 902 del nodo 901 ha sido actualizado con valor nulo (ver Figura 9a). También se muestra que el nodo de más a la izquierda 901 en el nivel más inferior 900 puede ser eliminado porque su dato izquierdo 902 es igual a valor nulo.
La Figura 9c muestra que se puede realizar una transición del nivel más inferior 900 al siguiente nivel hacia arriba (nivel intermedio) 904 porque el nodo de más a la izquierda 901 en el nivel más inferior 900 ha sido eliminado y dicha eliminación no ha sido realizada en el nivel más superior (ver Figura 9b). Se muestra además que el dato izquierdo 906 del nodo de más a la izquierda 905 en el nivel intermedio 904 puede ser actualizado con valor nulo porque sus datos izquierdo y derecho 906, 907 son distintos de valor nulo.
La Figura 9d muestra que se puede iniciar una nueva iteración comenzando de nuevo desde el nivel más inferior porque el dato izquierdo 906 del nodo 905 ha sido actualizado (ver Figura 9c). Se muestra además que el dato izquierdo 909 del nodo de más a la izquierda 908 en el nivel más inferior 900 puede ser actualizado con valor nulo porque los datos izquierdo y derecho 909, 910 de dicho nodo de más a la izquierda 908 son distintos de valor nulo. Las Figuras 9e - 12h ilustran evoluciones subsiguientes del bosque sin utilizar números de referencia porque los principios subyacentes se han explicado suficientemente con referencia a las Figuras 9a - 9d. Estas evoluciones subsiguientes del bosque se describen en este documento con el fin de reflejar claramente cómo el bosque puede alcanzar una situación resultante de la eliminación de un nodo en el nivel más superior.
La Figura 9e ilustra que se puede iniciar una nueva iteración comenzando de nuevo desde el nivel más inferior porque el dato izquierdo 909 del nodo 908 ha sido actualizado con valor nulo (ver Figura 9d). También se muestra que el nodo de más a la izquierda en el nivel más inferior puede ser eliminado porque su dato izquierdo es igual a valor nulo.
La Figura 9f muestra que se puede realizar una transición del nivel más inferior al siguiente nivel hacia arriba (es decir, nivel intermedio) porque el nodo de más a la izquierda en el nivel más inferior ha sido eliminado y dicha eliminación no ha sido realizada en el nivel más superior (ver Figura 9e). Se muestra además que el nodo de más a la izquierda de dicho nivel intermedio también puede ser eliminado porque su dato izquierdo es igual a valor nulo. La Figura 9g muestra que se puede realizar una transición del nivel intermedio al siguiente nivel hacia arriba (es decir, nivel más superior) porque el nodo de más a la izquierda del nivel intermedio ha sido eliminado y dicha eliminación no se ha realizado en el nivel más superior (véase la Figura 9f). Además, se muestra que el nodo de más a la izquierda en el nivel más superior también puede ser eliminado porque su dato derecho es igual a valor nulo. La Figura 9h ilustra que se puede iniciar una nueva iteración comenzando de nuevo desde el nivel más inferior porque se ha realizado una eliminación en el nivel más superior. También se muestra que el sub-procedimiento de eliminación puede ser finalizado porque la condición de eliminación no es satisfecha por el dato izquierdo del nodo de más a la izquierda en el nivel más inferior. En este caso, la condición de eliminación puede restringir el número de unidades de datos recibidas (en el nivel más inferior) a un máximo de tres unidades de datos. Dado que el número de datos izquierdo/derecho en el nivel más inferior distintos de valor nulo es tres ('1', '2', '1'), se satisface la condición de eliminación y, por lo tanto, el sub-procedimiento de eliminación puede ser finalizado.
La Figura 10 es un diagrama de flujo que ilustra de forma esquemática un sub-procedimiento de eliminación similar al sub-procedimiento de eliminación de la Figura 8. En particular, los bloques 1000 - 1007 (de la Figura 10) pueden ser iguales o similares a los bloques 800 - 807 (de la Figura 8) respectivamente. La Figura 10 se puede diferenciar de la Figura 8 en los bloques 1008, 1009 que tienen como objetivo cambiar la modalidad bajo la cual se están eliminando los nodos. Este cambio puede provocar, por ejemplo, una transición del modo de eliminación de uno en uno (bloques 1000 - 1007) al modo de eliminación masiva (de arriba abajo) (bloque 1009).
En el bloque 1008, se puede realizar una verificación de si se ha alcanzado o superado un número máximo de nodos visitados (o inspeccionados). En el caso de que el resultado de dicha verificación sea positivo (o verdadero), el sub-procedimiento de eliminación puede pasar al bloque 1009 para cambiar la modalidad de eliminación de uno en uno a la modalidad de eliminación masiva (de arriba abajo). De lo contrario, se puede realizar una transición al bloque 1001 para continuar con la eliminación de nodos bajo la modalidad de eliminación de uno en uno. El número máximo de nodos visitados (o inspeccionados) puede ser un máximo predefinido que puede, por ejemplo, ser proporcional al número de niveles del bosque actual. Es decir, el máximo predefinido puede ser igual a, por ejemplo, N * L, en el que L es el número de niveles del bosque actual y N es un número predefinido igual o mayor que 1. En el bloque 1009, se puede realizar una eliminación masiva de arriba abajo de acuerdo a, por ejemplo, el sub­ procedimiento de eliminación que se ilustra en la Figura 11. Este cambio al modo de eliminación masiva se puede realizar cuando se estima que el modo de eliminación de uno en uno es probablemente ineficiente (por ejemplo, cuando se ha excedido el máximo predefinido de nodos inspeccionados). Este enfoque puede mejorar en general la eficiencia del sub-procedimiento de eliminación y, por lo tanto, provocar un uso más óptimo de recursos informáticos. Una vez que se ha completado la eliminación masiva de arriba abajo, se puede realizar una transición al bloque final 1007.
La Figura 11 es un diagrama de flujo que ilustra de forma esquemática otros ejemplos de eliminación de unidades de datos de una estructura de bosque que implementa una ventana deslizante en el contexto de un procedimiento tal como el que se muestra en la Figura 2 o similar. En este caso, se propone un sub-procedimiento de eliminación masiva (de arriba abajo) con el fin de, por ejemplo, compensar posibles ineficiencias anticipadas derivadas de la eliminación de uno en uno. En este enfoque concreto, el bosque se puede ver como una secuencia de agregaciones parciales (implementadas en el bosque/ventana) que pueden ser inspeccionadas de más grande a más pequeña y, finalmente, ser excluidas o no (del bosque/ventana) en función de si dicha inspección produce como resultado la satisfacción de la condición de eliminación por parte de la correspondiente agregación parcial. La exclusión de una determinada agregación parcial (en el bosque/ventana) se puede realizar eliminando todos los nodos de la estructura de sub-árbol correspondiente a dicha agregación parcial.
Según se define en otras partes de la descripción, la condición de eliminación puede corresponder a un contaje restringido de actualizaciones (o unidades de datos) existentes en la ventana, un lapso restringido de tiempo de producción de actualizaciones (o unidades de datos) en la ventana, etc.
En el bloque 1100, los nodos de más a la izquierda del bosque pueden ser inspeccionados y (si es necesario) actualizados para causar relaciones padre-hijo consistentes (según se define en otras partes de la descripción) entre cada uno de los nodos de más a la izquierda y el correspondiente nodo o nodos hijo. Esta inspección (y actualización, si es necesaria) de los nodos de más a la izquierda puede tener como objetivo, por ejemplo, corregir posibles inconsistencias padre-hijo derivadas de la anterior eliminación de uno en uno.
En el bloque 1101, se puede realizar una verificación de si la agregación correspondiente a la ventana completa satisface la condición de eliminación. La agregación correspondiente a la ventana completa puede ser vista como una primera agregación parcial en la secuencia de agregaciones parciales (de más grande a más pequeña) mencionada anteriormente. En el caso de que el resultado de dicha verificación sea positivo (o verdadero), el subprocedimiento puede pasar al bloque 1103 para eliminar todos los nodos correspondientes a dicha agregación más grande. En caso contrario, el sub-procedimiento puede pasar al bloque 1102 para pasar a la siguiente agregación parcial en la secuencia de agregaciones parciales. La agregación correspondiente a la ventana completa se puede determinar de cualquiera de las maneras que se describen en la presente divulgación. Por ejemplo, en implementaciones que incluyen el nodo de resultados actualizado de forma incremental, la agregación correspondiente a la ventana completa se puede determinar agregando los resultados parciales izquierdo y derecho del nodo de resultados.
En el bloque 1103, todos los nodos del bosque (correspondientes a la ventana completa) pueden ser eliminados ya que se ha determinado (en el bloque 1101) que la agregación correspondiente a la ventana completa satisface la condición de eliminación. Una vez que todos los nodos han sido eliminados, se puede realizar una transición al bloque final 1113 para finalizar el sub-procedimiento.
En el bloque 1102, el nivel más superior puede ser designado como el nivel actual para iniciar los correspondientes cálculos a lo largo de la secuencia de agregaciones parciales comenzando por el nivel más superior.
En el bloque 1104, se pueden agregar los datos izquierdo y derecho del nodo de más a la izquierda del nivel actual, correspondiendo dicha agregación a la siguiente agregación parcial en la secuencia de agregaciones parciales. Esta etapa puede ser vista, de este modo, como una transición a la siguiente agregación parcial correspondiente al nodo de más a la izquierda completo en el nivel actual/superior.
En el bloque 1105, se puede realizar una verificación de si dicha agregación parcial (correspondiente al nodo de más a la izquierda completo en el nivel actual) satisface la condición de eliminación. En el caso de un resultado positivo (o verdadero) de dicha verificación, el sub-procedimiento puede pasar al bloque 1106 para eliminar todos los nodos correspondientes a dicha agregación parcial. En caso contrario, el sub-procedimiento puede pasar al bloque 1109 para pasar a la siguiente agregación parcial.
En el bloque 1106, el nodo de más a la izquierda en el nivel actual (correspondiente a la agregación parcial que se ha determinado en el bloque 1104) puede ser eliminado junto con los nodos en los niveles por debajo del nivel actual que son descendientes de dicho nodo de más a la izquierda. Los nodos descendientes de un nodo particular se pueden definir como aquellos nodos incluidos en cualquier sub-árbol que cuelgue de dicho nodo particular. Esta eliminación 'masiva' de nodos puede ser o estar implementado de diferentes maneras, tal como por ejemplo marcando los nodos como eliminados para que un proceso en segundo plano pueda eliminarlos físicamente en condiciones informáticas más favorables. Por ejemplo, la ejecución del proceso en segundo plano puede ser diferido a cuando la carga de procesamiento esté por debajo de un umbral, o el proceso en segundo plano puede ser ejecutado por un sistema informático auxiliar, etc. En el caso de que los nodos a eliminar estén simplemente marcados como eliminados, el sub-procedimiento propuesto puede comprender ignorar dichos nodos marcados como si no existieran en el bosque.
En el bloque 1109, se puede realizar una verificación de si los datos izquierdo y derecho del nodo de más a la izquierda en el nivel actual son distintos de valor nulo. En el caso de que el resultado de dicha verificación sea positivo (o verdadero), significa que la siguiente agregación parcial corresponde al dato izquierdo de dicho nodo de más a la izquierda y, por lo tanto, se puede realizar una transición al bloque 1110. En caso contrario, significa que no se puede determinar ninguna otra agregación parcial de dicho nodo de más a la izquierda (la agregación parcial correspondiente a la agregación de los datos izquierdo y derecho de dicho nodo de más a la izquierda ya ha sido determinada en el bloque 1104). En este caso, se puede realizar una transición al bloque 1107 para pasar al siguiente nivel hacia abajo si no se ha alcanzado el nivel más inferior.
En el bloque 1110, se puede realizar una verificación de si el dato izquierdo del nodo de más a la izquierda en el nivel actual satisface la condición de eliminación. En el caso de que el resultado de dicha verificación sea positivo (o verdadero), el sub-procedimiento puede pasar al bloque 1111 para eliminar la agregación parcial correspondiente al dato izquierdo de dicho nodo de más a la izquierda. En caso contrario, se puede realizar una transición al bloque 1107 para pasar al siguiente nivel hacia abajo si aún no se ha alcanzado el nivel más inferior.
En el bloque 1111, la agregación parcial correspondiente al dato izquierdo del nodo de más a la izquierda en el nivel actual puede ser eliminada actualizando dicho dato izquierdo con valor nulo y eliminando los nodos en los niveles por debajo del nivel actual que son descendientes de dicho dato izquierdo que ha sido actualizado con valor nulo. Los nodos descendientes de un dato particular de un determinado nodo se pueden definir como aquellos nodos incluidos en un sub-árbol que cuelga de dicho dato particular del determinado nodo. Esta eliminación 'masiva' de nodos puede ser o estar implementado de diferentes maneras según, por ejemplo, los principios comentados con respecto al bloque 1106.
En el bloque 1107, se puede realizar una verificación de si el nivel actual es el nivel más inferior. En el caso de que el resultado de dicha verificación sea positivo/verdadero (es decir, que se ha alcanzado el nivel más inferior), el sub­ procedimiento puede ser finalizado pasando al bloque final 1113. En caso contrario, el sub-procedimiento puede pasar al bloque 1108 para pasar al siguiente nivel hacia abajo en el bosque. Con este fin, en el bloque 1108 se puede designar (o establecer) como nivel actual el nivel debajo del actual. A continuación, el sub-procedimiento puede pasar al bloque 1112 para pasar a la siguiente agregación parcial en el bosque/ventana.
En el bloque 1112, se puede realizar una verificación de si la transición al siguiente nivel hacia abajo en el bosque (realizada en el bloque 1108) ha causado una transición a un nuevo nivel más superior porque las eliminaciones anteriores han eliminado el nivel más superior anterior. Esta verificación se puede realizar determinando si el nodo de más a la izquierda coincide con el nodo de más a la derecha en el nivel actual (según se indica en la figura). En el caso de que el resultado de dicha verificación sea positivo (el nivel actual es el nuevo nivel más superior), el sub­ procedimiento puede volver hacia atrás al bloque 1104 para pasar a la siguiente agregación parcial correspondiente al nodo de más a la izquierda del (nuevo) nivel más superior. En caso contrario (el nivel actual no es el nuevo nivel más superior), el sub-procedimiento puede volver hacia atrás al bloque 1109 para pasar a la siguiente agregación parcial correspondiente al nodo de más a la izquierda en el nivel distinto del nivel superior al que el bloque 1108 ha progresado hacia abajo en el bosque.
Las Figuras 12a - 12e muestran una ventana/bosque y su evolución debida a la ejecución de un sub-procedimiento de eliminación 'masiva' tal como el de la Figura 11 o similar.
La Figura 12a muestra una estructura de bosque que puede haber sido construida realizando un procedimiento según la presente divulgación. Las Figuras 12b - 12e ilustran evoluciones de dicho bosque/ventana debidas a eliminaciones masivas realizadas según el sub-procedimiento de la Figura 11 o similar.
En la Figura 12a, se asume que la agregación correspondiente a la ventana completa no satisface la condición de eliminación (bloque 1101) y, por lo tanto, se puede iniciar la primera iteración empezando por el nivel más superior (bloque 1102). A continuación, se puede realizar una transición a la siguiente agregación parcial en la ventana agregando los datos izquierdo y derecho del nodo de más a la izquierda en el nivel actual/superior: '4' '4' = '8' (bloque 1104).
A continuación, se puede determinar que dicha agregación parcial ('4' '4' = '8') satisface la condición de eliminación (bloque 1105), en cuyo caso se puede realizar una transición al bloque 1106 para eliminar todos los nodos correspondientes a dicha agregación parcial. La Figura 12b muestra una eliminación de este tipo que comprende la eliminación del nodo de más a la izquierda del nivel actual/superior <'4', '4'> y la eliminación de los nodos en niveles inferiores que son descendientes de dicho nodo de más a la izquierda (bloque 1106).
La Figura 12b muestra además que la progresión a la siguiente agregación parcial se puede realizar de la siguiente manera. Se puede verificar que el nivel actual no es el nivel más inferior (bloque 1107), en cuyo caso se puede ejecutar una transición al siguiente nivel hacia abajo en el bosque (bloque 1108). A continuación, se puede verificar que el nuevo nivel al que ha evolucionado el sub-procedimiento es el nivel más superior como resultado de las eliminaciones anteriores (bloque 1112), en cuyo caso se puede volver hacia atrás al bloque 1104 con el fin de iniciar una nueva iteración empezando de nuevo desde el nivel más superior.
La Figura 12b también muestra que, de acuerdo con las circunstancias anteriores, la siguiente agregación parcial puede corresponder a la agregación de los datos izquierdo y derecho del nodo de más a la izquierda en el nivel más superior: '2' '2' = '4' (bloque 1104), lo que se puede asumir como que no satisface la condición de eliminación (indicado de esta manera en la figura). De este modo, se puede confirmar que no se satisface la condición de eliminación (bloque 1105). A continuación, se puede confirmar que los datos izquierdo y derecho del nodo de más a la izquierda en el nivel actual/superior <'2', '2'> son distintos de valor nulo (bloque 1109).
A continuación, se puede determinar que el dato izquierdo '2' del nodo de más a la izquierda en el nivel actual/superior <'2', '2'> satisface la condición de eliminación (bloque 1110) según la suposición indicada en la Figura 12c. A continuación, dado que dicho dato izquierdo '2' satisface la condición de eliminación, puede ser actualizado con valor nulo y los nodos que son descendientes de dicho nodo de más a la izquierda <'2', '2'> en relación con su dato izquierdo '2' pueden ser eliminados (bloque 1111). La Figura 12d muestra dicha actualización del dato izquierdo '2' con valor nulo '0' y la correspondiente eliminación del nodo descendiente <'1', '1'>.
La Figura 12d también muestra una transición a la siguiente agregación parcial basada en que el nivel actual/superior no es el nivel más inferior (bloque 1107), se ha realizado una transición al siguiente nivel hacia abajo (nivel más inferior) (bloque 1108), el nivel más inferior no es el nivel más superior (bloque 1112), y los datos izquierdo y derecho del nodo de más a la izquierda en el nivel más inferior son distintos de valor nulo (bloque 1109). De acuerdo con estas circunstancias, la siguiente agregación parcial corresponde al dato izquierdo '1' del nodo de más a la izquierda en el nivel más inferior <'1', '1'>, que se supone que satisface la condición de eliminación (según se indica en la figura).
Una vez que se ha confirmado que el dato izquierdo '1' del nodo de más a la izquierda en el nivel más inferior <'1', '1'> satisface la condición de eliminación (bloque 1110), dicho dato izquierdo '1' puede ser actualizado con valor nulo '0' (bloque 1111), según se ilustra en la Figura 12e. Finalmente, como el nivel actual es el nivel más inferior (bloque 1107), el sub-procedimiento puede ser finalizado (bloque 1113).
La Figura 13 es un diagrama de flujo que ilustra de forma esquemática un sub-procedimiento de eliminación similar al sub-procedimiento de eliminación de la Figura 8. En particular, los bloques 1300 - 1307 (de la Figura 13) pueden ser iguales o similares a los bloques 800 - 807 (de la Figura 8) respectivamente. La Figura 13 se puede diferenciar de la Figura 8 en los bloques 1308 - 1311, que tienen por objeto actualizar de forma incremental un nodo de resultados que incluye resultados parciales derecho e izquierdo pre-calculados. Dichos resultados parciales derecho e izquierdo se pueden entender como agregaciones parciales correspondientes a respectivas partes derecha e izquierda del bosque cuya combinación da lugar al bosque completo. Otra diferencia entre la Figura 13 y la Figura 8 puede ser que, en la primera, el bloque 1300 incluye además la inicialización de un conjunto de nuevos nodos de más a la izquierda como conjunto vacío.
Según se ilustra en la Figura 13, se puede utilizar una pila para actualizar eficientemente el resultado parcial izquierdo del nodo de resultados. Esta pila puede haber sido actualizada previamente de acuerdo con sub­ procedimientos que se describen en la presente divulgación (véase, por ejemplo, la Figura 6 y la correspondiente descripción). La eliminación de nodos según la Figura 13 (o similar) puede permitir determinar resultados parciales izquierdo y derecho recuperándolos del nodo de resultados (bloques 205 y 206 de la Figura 2). El resultado (o agregación) final se puede determinar de este modo agregando dichos resultados parciales izquierdo y derecho recuperados (bloque 207 de la Figura 2).
En el bloque 1308, el dato más superior en la pila puede ser extraído (popped) de la pila y el sub-nodo de resultado izquierdo (en el nodo de resultados) puede ser actualizado con dicho dato más superior, una vez que se ha confirmado (en el bloque 1301) que el dato de más a la izquierda distinto de valor nulo en el nivel actual/inferior satisface la correspondiente condición de eliminación. Las diferentes formas en las que se puede actualizar la pila que se describen en la presente divulgación provocan que el dato más superior en la pila siempre coincida con la agregación parcial correspondiente a la parte izquierda del bosque (según se ha definido anteriormente) sin el dato de más a la izquierda distinto de valor nulo que se va a eliminar (ya que satisface la condición de eliminación). En otras palabras, el dato más superior en la pila corresponde al resultado parcial izquierdo actual sin incluir el dato de más a la izquierda distinto de valor nulo (en el nivel más inferior) que se va a eliminar.
Según se define en otras partes de la descripción, la condición de eliminación puede corresponder a un contaje restringido de actualizaciones (o unidades de datos) existentes en la ventana, un lapso restringido de tiempo de producción de actualizaciones (o unidades de datos) en la ventana, etc.
En el bloque 1309, una vez que el nodo de más a la izquierda del nivel actual ha sido eliminado (en el bloque 1304) y, por lo tanto, el nodo a la derecha del nodo eliminado se ha convertido en el nuevo nodo de más a la izquierda, dicho nuevo nodo de más a la izquierda puede ser incluido en el conjunto de nuevos nodos de más a la izquierda. Este conjunto puede ser o estar ordenado en orden descendente (de arriba abajo) de nivel. Este conjunto ordenado de nuevos nodos de más a la izquierda permitirá actualizar la pila (en el bloque 1310) de tal manera que el dato más superior en la pila siempre corresponde al resultado parcial izquierdo actual sin incluir el dato de más a la izquierda distinto de valor nulo en el nivel más inferior que se va a eliminar (o que se va a convertir en valor nulo). Una vez que se ha completado el bloque 1309, el sub-procedimiento puede pasar al bloque 1305.
En el bloque 1311, si se ha eliminado un solo nodo en el nivel más superior del bosque y, por lo tanto, se va a realizar una nueva iteración comenzando de nuevo desde el nivel más inferior, el sub-nodo de resultado derecho (en el nodo de resultados) puede ser actualizado con la agregación de los datos derecho e izquierdo de los nodos de más a la derecha en los niveles distintos del nivel más superior. Por lo tanto, el resultado parcial derecho es corregido con un valor consistente sólo cuando la agregación parcial correspondiente a la parte derecha del bosque (según se ha definido anteriormente) puede haber sido distorsionada, es decir, cuando se ha eliminado un solo nodo en el nivel más superior. Una vez que se ha corregido el resultado parcial derecho en el nodo de resultados, el subprocedimiento puede pasar al bloque 1310.
En el bloque 1310, una vez que el dato izquierdo del nodo de más a la izquierda en el nivel actual ha sido actualizado con valor nulo o el resultado parcial derecho ha sido corregido en el nodo de resultados, la pila puede ser actualizada en función de qué nuevos nodos de más a la izquierda han resultado en iteraciones previas. Con este fin, los nodos en el conjunto de nuevos nodos de más a la izquierda (actualizados en el bloque 1303) pueden ser procesados del primero al último en orden descendente (de arriba abajo) de nivel (según se define con referencia al bloque 1309). En particular, para cada uno de los nuevos nodos de más a la izquierda en el conjunto (del primero al último) se puede determinar una agregación del dato más superior en la pila y del dato derecho en el nuevo nodo de más a la izquierda, y dicha agregación puede ser apilada (pushed) en la pila. De este modo, se mantiene un registro de los nuevos nodos de más a la izquierda resultantes de la eliminación de los correspondientes anteriores nodos de más a la izquierda, de forma que el dato más superior en la pila siempre corresponde al resultado parcial izquierdo actual, sin incluir el dato de más a la izquierda distinto de valor nulo que se va a eliminar (o que se va a convertir en valor nulo) en el nivel más inferior. Una vez que la pila ha sido actualizada convenientemente, se puede realizar una transición al bloque 1300 con el fin de iniciar una nueva iteración empezando de nuevo desde el nivel más inferior.
Las Figuras 14a - 14c muestran una ventana con su correspondiente bosque, nodo de resultados y pila y su evolución debida a la ejecución de un sub-procedimiento de eliminación tal como el de la Figura 13 o similar. La Figura 14a ilustra una ventana inicial resultante de la ejecución de un procedimiento según la presente divulgación. Se muestra el nodo de resultados con el resultado parcial izquierdo igual a '6' y el resultado parcial derecho igual a '9'.
El resultado parcial derecho se puede haber determinado a partir de una agregación de los datos izquierdo y derecho de los nodos de más a la derecha en los niveles distintos del nivel más superior. En el caso particular que se ilustra, el resultado parcial derecho puede corresponder a una agregación de una primera agregación '1' '2' (datos izquierdo y derecho del nodo de más a la derecha en el nivel más inferior) y una segunda agregación '3' '3' (datos izquierdo y derecho del nodo de más a la derecha en el nivel intermedio). En consecuencia, el resultado parcial derecho '9' puede resultar de la agregación '1' '2' '3' '3' = '9'. Según se describe en otras partes de la divulgación, el resultado parcial derecho se puede haber determinado de forma incremental durante la inserción de unidades de datos recibidas en la ventana/bosque.
El resultado parcial izquierdo '6' se puede haber determinado a partir de una agregación del dato más superior en la pila '5' y el dato de más a la izquierda distinto de valor nulo en el nivel más inferior '1' ('1' '5' = '6'). El dato más superior en la pila '5' se puede haber determinado a partir de la agregación del dato derecho del nodo de más a la izquierda en el nivel más inferior '2' y del anterior dato más superior en la pila '3' ('5' = '2' '3'). Dicho anterior dato más superior en la pila '3' se puede haber determinado agregando el dato derecho del nodo de más a la izquierda en el nivel intermedio '3' y el dato superior inicial en la pila '0' (la pila estaba vacía en este punto, lo que implica que el dato superior era '0') ('3' = '3' '0'). En estos cálculos sólo se han considerado los nodos de más a la izquierda en los niveles más inferior e intermedios, ya que dichos nodos tienen datos izquierdo y derecho distintos de valor nulo o '0'. No se ha considerado el nodo en el nivel más superior porque dicho nodo tiene uno de los datos izquierdo y derecho diferente de valor nulo (dato izquierdo = '6' y dato derecho = '0').
La Figura 14b muestra una evolución del bosque de la anterior Figura 14a según los principios del sub­ procedimiento de eliminación según la Figura 13. En el bloque 1301 se puede verificar que el dato de más a la izquierda distinto de valor nulo (es decir, el dato izquierdo del nodo de más a la izquierda '1') en el nivel actual/inferior satisface la condición de eliminación. A continuación, en el bloque 1308, el dato más superior en la pila '5' puede ser extraído (popped) de la pila y el resultado parcial izquierdo en el nodo de resultados puede ser actualizado con dicho dato superior '5'. A continuación, en el bloque 1302, se puede verificar que el dato izquierdo del nodo de más a la izquierda en el nivel actual/inferior es distinto de valor nulo, en cuyo caso dicho dato izquierdo puede ser actualizado con valor nulo '0' en el bloque 1303. A continuación, dado que no ha surgido ningún nuevo nodo de más a la izquierda porque no se ha eliminado ningún nodo de más a la izquierda completo y, por lo tanto, el conjunto de nuevos nodos de más a la izquierda está vacío, puede no hacerse nada según el bloque 1310. Entonces se puede volver hacia atrás al bloque 1300 para iniciar una nueva iteración empezando de nuevo desde el nivel más inferior.
La Figura 14c muestra una evolución del bosque de la anterior Figura 14b según los principios del mismo sub­ procedimiento de eliminación. En el bloque 1301 se puede verificar que el dato de más a la izquierda distinto de valor nulo (es decir, el dato derecho del nodo de más a la izquierda '2') en el nivel actual/inferior satisface la condición de eliminación. A continuación, en el bloque 1308, el dato más superior en la pila '3' puede ser extraído (popped) de la pila y el resultado parcial izquierdo del nodo de resultados puede ser actualizado con dicho dato superior '3'. A continuación, en el bloque 1302, se puede verificar que el dato izquierdo del nodo de más a la izquierda en el nivel actual/inferior es igual a valor nulo, en cuyo caso dicho nodo de más a la izquierda puede ser eliminado en el bloque 1304, de modo que el siguiente nodo a la derecha del nodo eliminado pasa a ser el nuevo nodo de más a la izquierda. A continuación, dicho nuevo nodo de más a la izquierda <'1', '2'> puede ser incluido, en el bloque 1309, en el conjunto de nuevos nodos de más a la izquierda. A continuación, en el bloque 1305, se puede verificar que el nivel actual no es el nivel más superior, en cuyo caso se puede realizar una transición al siguiente nivel hacia arriba en el bloque 1306. Se puede realizar una vuelta hacia atrás al bloque 1302 con el fin de iniciar una nueva iteración en dicho siguiente nivel hacia arriba (nivel intermedio).
En el bloque 1302, se puede verificar que el dato izquierdo del nodo de más a la izquierda en el nivel actual/intermedio es distinto de valor nulo, en cuyo caso dicho dato izquierdo puede ser actualizado con valor nulo '0'. A continuación, el único elemento que ha sido incluido en el conjunto de nuevos nodos de más a la izquierda (en el bloque 1309 en la iteración anterior) puede ser procesado según el bloque 1310. En particular, se puede determinar una agregación del dato más superior en la pila (= '0' porque la pila está vacía en este punto) y el dato derecho de dicho nuevo nodo de más a la izquierda '2', y dicha agregación ('0' '2' = '2') puede ser apilada (pushed) en la pila. A continuación, se puede realizar una vuelta hacia atrás al bloque 1300 con el fin de iniciar una nueva iteración empezando de nuevo desde el nivel más inferior.
La Figura 14c muestra además que, después de varias eliminaciones como las que se han descrito anteriormente, se puede determinar la agregación final de la ventana completa ('1' '2' '1' '2' '1' '2' = '12') agregando el resultado parcial izquierdo '3' y el resultado parcial derecho '9' ('3' '9' = '12').
Aunque sólo se han descrito en este documento algunos ejemplos, son posibles otras alternativas, modificaciones, usos y/o equivalentes de los mismos. Además, también se cubren todas las posibles combinaciones de los ejemplos que se han descrito. Por lo tanto, el alcance de la presente divulgación no debería ser o estar limitado por ejemplos particulares, sino que debería ser o estar determinado únicamente por las siguientes reivindicaciones.

Claims (15)

REIVINDICACIONES
1. Un sistema informático (128) para un almacenamiento distribuido de datos estructurados en forma de bosque de árboles balanceados de uno o más nodos, incluyendo cada nodo una pluralidad de elementos de datos, y comprendiendo el bosque una pluralidad de niveles que incluyen un nivel más superior y un nivel más inferior o de hoja; en el que
los nodos en el bosque comprenden unos primeros nodos finales en un primer lado del bosque, unos segundos nodos finales en un segundo lado del bosque, y unos nodos intermedios entre los primeros y segundos nodos finales; en el que
los primeros nodos finales corresponden a nodos de más a la izquierda y los segundos nodos finales corresponden a nodos de más a la derecha, o los primeros nodos finales corresponden a nodos de más a la derecha y los segundos nodos finales corresponden a nodos de más a la izquierda; y en el que
el sistema informático comprende:
una memoria de ejecución (129) para almacenar al menos los primeros y segundos nodos finales;
un conector (131) para implementar una conexión con un sistema de almacenamiento (132) configurado para almacenar al menos algunos de los nodos intermedios que no se encuentran almacenados en la memoria de ejecución, de modo que se realiza un intercambio de nodos con el sistema de almacenamiento a través de dicha conexión;
un procesador (130) para actualizar los nodos almacenados en la memoria de ejecución según unos criterios de actualización, y para intercambiar nodos con el sistema de almacenamiento a través de la conexión según unos criterios de intercambio.
2. Un sistema informático según la reivindicación 1, en el que el sistema de almacenamiento es externo al sistema informático y está situado en un sitio remoto con respecto al sistema informático.
3. Un sistema informático según una cualquiera de las reivindicaciones 1 o 2, en el que la memoria de ejecución está configurada para almacenar además un primer número de nodos intermedios consecutivos que son vecinos del primer nodo final, y un segundo número de nodos intermedios consecutivos que son vecinos del segundo nodo final, en cada uno de aquellos niveles que superen un número predefinido de nodos.
4. Un sistema informático según una cualquiera de las reivindicaciones 1 a 3, en el que cada uno de los primeros nodos finales es un nodo raíz de un árbol en el bosque.
5. Un sistema informático según una cualquiera de las reivindicaciones 1 a 4, en el que los criterios de actualización comprenden usar una función de agregación que incluye asociatividad y un elemento neutro o valor nulo; y en el que todos los elementos de datos en todos los nodos intermedios son distintos de valor nulo.
6. Un sistema informático según la reivindicación 5, en el que cada uno de los primeros nodos finales en los niveles distintos del nivel más superior tiene todos los elementos de datos distintos de valor nulo, o tiene elementos de datos consecutivos distintos de valor nulo y elementos de datos consecutivos iguales a valor nulo, estando los elementos de datos distintos de valor nulo más lejos y los elementos de datos iguales a valor nulo más cerca con respecto al primer lado del bosque.
7. Un sistema informático según una cualquiera de las reivindicaciones 5 o 6, en el que cada uno de los segundos nodos finales en los niveles distintos del nivel más superior tiene todos los elementos de datos distintos de valor nulo, o tiene elementos de datos consecutivos distintos de valor nulo y elementos de datos consecutivos iguales a valor nulo, estando los elementos de datos distintos de valor nulo más lejos y los elementos de datos iguales a valor nulo más cerca con respecto al segundo lado del bosque.
8. Un sistema informático según una cualquiera de las reivindicaciones 5 a 7, en el que el bosque es actualizado utilizando una aplicación de streaming, estando la aplicación de streaming basada en un stream de datos que proporciona unidades de datos a agregar en una ventana deslizante; y en el que los elementos de datos distintos de valor nulo en los nodos del nivel más inferior corresponden a unidades de datos recibidas procedentes del stream de datos, y una agregación de dichos elementos de datos distintos de valor nulo corresponde a una agregación final de la ventana deslizante.
9. Un sistema informático según la reivindicación 8, en el que los elementos de datos distintos de valor nulo en nodos de niveles no inferiores corresponden a agregaciones parciales de la ventana deslizante.
10. Un sistema informático según la reivindicación 9, en el que los elementos de datos distintos de valor nulo en nodos intermedios corresponden a agregaciones parciales que están incluidas en agregaciones parciales correspondientes a elementos de datos distintos de valor nulo en nodos finales; y en el que la agregación de al menos algunos de los elementos de datos distintos de valor nulo en nodos finales corresponde a la agregación final de la ventana deslizante.
11. Un sistema para almacenamiento distribuido de datos estructurados en forma de bosque de árboles balanceados, comprendiendo el sistema el sistema informático (128) según una cualquiera de las reivindicaciones 1 a 10, y un sistema de almacenamiento (132) que incluye un conector (134) y una memoria (133) para almacenar al menos algunos de los nodos intermedios que no se encuentran almacenados en el sistema informático, en el que el sistema informático y el sistema de almacenamiento son conectables entre sí a través de una conexión entre el conector (131) del sistema informático y el conector del sistema de almacenamiento.
12. Un procedimiento de actualización de datos distribuidos estructurados en forma de bosque de árboles balanceados de uno o más nodos, incluyendo cada nodo una pluralidad de elementos de datos, y comprendiendo el bosque una pluralidad de niveles que incluyen un nivel más superior y un nivel más inferior o de hoja; en el que los nodos en el bosque comprenden unos primeros nodos finales en un primer lado del bosque, unos segundos nodos finales en un segundo lado del bosque, y unos nodos intermedios entre los primeros y segundos nodos finales; en el que
los primeros nodos finales corresponden a nodos de más a la izquierda y los segundos nodos finales corresponden a nodos de más a la derecha, o los primeros nodos finales corresponden a nodos de más a la derecha y los segundos nodos finales corresponden a nodos de más a la izquierda; y en el que el procedimiento comprende:
almacenar, por parte de un procesador de un sistema informático, al menos los primeros y segundos nodos finales en una memoria de ejecución del sistema informático;
actualizar, por parte del procesador, los nodos almacenados en la memoria de ejecución según unos criterios de actualización;
intercambiar, por parte del procesador, nodos con un sistema de almacenamiento a través de una conexión según unos criterios de intercambio, estando el sistema de almacenamiento configurado para almacenar al menos algunos de los nodos intermedios que no se encuentran almacenados en la memoria de ejecución, y estando implementada la conexión a través de un conector del sistema informático.
13. Un procedimiento según la reivindicación 12, en el que el bosque es actualizado utilizando una aplicación de streaming, estando la aplicación de streaming basada en un stream de datos que proporciona unidades de datos a agregar en una ventana deslizante.
14. Un procedimiento según la reivindicación 13, en el que la actualización de los nodos almacenados en la memoria comprende insertar, por parte del procesador, una unidad de datos recibida en el bosque actualizando los primeros nodos finales con correspondientes agregaciones parciales resultantes de dicha inserción.
15. Un procedimiento según una cualquiera de las reivindicaciones 13 o 14, en el que la actualización de los nodos almacenados en la memoria de ejecución comprende eliminar, por parte del procesador, una o más unidades de datos insertadas anteriormente actualizando los segundos nodos finales con correspondientes agregaciones parciales resultantes de dicha eliminación.
ES17745124T 2017-04-12 2017-05-30 Estructuras de datos distribuidas para la agregación de ventanas deslizantes o aplicaciones similares Active ES2922820T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP17382202 2017-04-12
PCT/EP2017/063054 WO2018188765A1 (en) 2017-04-12 2017-05-30 Distributed data structures for sliding window aggregation or similar applications

Publications (1)

Publication Number Publication Date
ES2922820T3 true ES2922820T3 (es) 2022-09-20

Family

ID=58664626

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17745124T Active ES2922820T3 (es) 2017-04-12 2017-05-30 Estructuras de datos distribuidas para la agregación de ventanas deslizantes o aplicaciones similares

Country Status (4)

Country Link
US (1) US20200183590A1 (es)
EP (1) EP3610387B1 (es)
ES (1) ES2922820T3 (es)
WO (1) WO2018188765A1 (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112231137B (zh) * 2020-12-14 2021-03-30 广东睿江云计算股份有限公司 一种分布式存储数据的重平衡方法及其系统
US11546263B1 (en) 2021-08-06 2023-01-03 Nec Corporation Delayed propagations for sliding-window aggregations over out-of-order streams

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2012332245A1 (en) * 2011-11-04 2014-06-26 BigML, Inc. Method and apparatus for visualizing and interacting with decision trees
US9058347B2 (en) * 2012-08-30 2015-06-16 Facebook, Inc. Prospective search of objects using K-D forest
US10162550B2 (en) * 2014-10-15 2018-12-25 Nec Corporation Large-scale, dynamic graph storage and processing system
US11232085B2 (en) * 2016-01-07 2022-01-25 Amazon Technologies, Inc. Outlier detection for streaming data
US11055351B1 (en) * 2017-04-17 2021-07-06 The Curators Of The University Of Missouri Frequent pattern mining on a frequent hierarchical pattern tree
US11507577B2 (en) * 2020-05-28 2022-11-22 Microsoft Technology Licensing, Llc Optimizing aggregates over correlated windows in a stream-query system

Also Published As

Publication number Publication date
US20200183590A1 (en) 2020-06-11
WO2018188765A1 (en) 2018-10-18
EP3610387A1 (en) 2020-02-19
EP3610387B1 (en) 2022-04-13

Similar Documents

Publication Publication Date Title
JP6916403B2 (ja) データへの論理的妥当性検査規則の指定および適用
Chikhi et al. Space-efficient and exact de Bruijn graph representation based on a Bloom filter
US10268777B2 (en) Data backup in a graph processing system
ES2922820T3 (es) Estructuras de datos distribuidas para la agregación de ventanas deslizantes o aplicaciones similares
US10204174B2 (en) Efficient method for subgraph pattern matching
US20220014214A1 (en) Decoding Signals By Guessing Noise
Huber The ASTM E57 file format for 3D imaging data exchange
WO2020076580A1 (en) Key-value store tree data block spill with compaction
US20160335278A1 (en) Method, system and computer program product for replicating file system objects from a source file system to a target file system and for de-cloning snapshot-files in a file system
US9378155B2 (en) Method for processing and verifying remote dynamic data, system using the same, and computer-readable medium
JP2015521767A5 (es)
ES2893200T3 (es) Red, procedimiento y producto de programa informático para organizar y procesar datos
US20140122422A1 (en) Data synchronization
CN104408034A (zh) 一种面向文本大数据的中文分词方法
KR20160011212A (ko) 데이터 운영을 위한 메모리 및 스토리지 공간 관리
WO2014117337A1 (zh) 数据更新方法及装置和产品
WO2017088507A1 (zh) 一种更新错误检测和纠正ecc码的方法及装置
US10275480B1 (en) Immediately-consistent lock-free indexing for distributed applications
CN110568993B (zh) 一种数据更新方法及相关装置
CN104794567A (zh) 一种基于HBase的传染病数据管理方法
US9165020B2 (en) String substitution apparatus, string substitution method and storage medium
CN102594334A (zh) 一种流水线型fpga回读帧ecc电路
US10965315B2 (en) Data compression method
Kumar et al. The degree constrained k-cardinality minimum spanning tree problem: a lexi-search algorithm
JP2011257877A (ja) 情報検索装置、情報検索方法、及びプログラム