ES2555275T3 - Máquina virtual de software para aceleración de procesamiento de datos transaccionales - Google Patents
Máquina virtual de software para aceleración de procesamiento de datos transaccionales Download PDFInfo
- Publication number
- ES2555275T3 ES2555275T3 ES12732904.3T ES12732904T ES2555275T3 ES 2555275 T3 ES2555275 T3 ES 2555275T3 ES 12732904 T ES12732904 T ES 12732904T ES 2555275 T3 ES2555275 T3 ES 2555275T3
- Authority
- ES
- Spain
- Prior art keywords
- data
- execution
- task
- sub
- tasks
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Un método que comprende: ejecutar una pluralidad de máquinas virtuales (20) que operan cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las máquinas virtuales se ejecuta en uno diferente de una pluralidad de núcleos de ejecución (52) de un procesador hardware multi-núcleo (24) de un dispositivo informático (13); asociar uno diferente de los núcleos de ejecución con cada una de una pluralidad de particiones de memoria (51), en el que cada una de las particiones de memoria almacena datos para una base de datos en memoria (27); y ejecutar una pluralidad de tareas con las máquinas virtuales, en el que la pluralidad de tareas descomponen una transacción entrante para la base de datos en memoria en sub-transacciones, desplegar las sub-transacciones a los núcleos de ejecución asociados con las respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecutar concurrentemente las sub-transacciones de la transacción entrante en los respectivos núcleos de ejecución a los que se despliegan las sub-transacciones.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Maquina virtual de software para aceleracion de procesamiento de datos transaccionales Campo tecnico
La invencion se refiere a sistemas informaticos.
Antecedentes
El crecimiento explosivo en el volumen de datos global, la omnipresencia de los dispositivos que se conectan a las redes, la reduccion de las barreras de entrada para creacion y comparticion de contenido de usuario, la digitalizacion de muchas funciones anteriormente fuera de llnea (banca, recetas medicas, etc.), la aparicion de sistemas en red virtualizados y fuera del sitio (nubes), entre otros factores, han contribuido a la aparicion de la era de los “grandes volumenes de datos” (Big Data). Esto presenta desaflos para los sistemas, como procesamiento de aplicaciones que se enfrentan a rendimientos y requisitos de volumen masivo extremo para entregar o distribuir datos procesados a cualquier numero de puntos de destino. Estos sistemas pueden ser ademas escalables para mantener el ritmo con el crecimiento continuo de los grandes volumenes de datos y posibilitan la interactividad para internet de gran audiencia omnipresente y aplicaciones en la nube.
La utilization de procesadores multi-nucleo ha aumentado drasticamente en la industria informatica. En general, el termino “procesador” se refiere a la unidad de hardware que lee y ejecuta instrucciones de programa. Historicamente, los procesadores utilizaban originalmente un unico “nucleo”, que se refiere a la portion del procesador que lee y ejecuta una secuencia de instrucciones. Un procesador multi-nucleo se refiere a una unica unidad de hardware en la que dos o mas “nucleos” de procesamiento independientes estan integrados en un unico paquete. Recientemente, se han hecho disponibles sistemas informaticos que tienen mas de 128 a 256 nucleos de procesamiento. Tales plataformas informaticas multi-nucleo presentan desaflos sobre las tecnicas de programacion tradicional.
El documento US2009/013325 A1 se refiere a un metodo de asignacion de recursos, un programa de asignacion de recursos y un aparato de asignacion de recursos.
El documento US2009/064156 A1 se refiere a un producto de programa informatico y un metodo para dimensionar la capacidad de entornos virtualizados.
El documento US2009/327669 A1 se refiere a un aparato de procesamiento de information, metodo de intercambio de programa y medio de almacenamiento.
Sumario
Se definen aspectos de la invencion en las reivindicaciones adjuntas.
En general, esta divulgation se refiere a una maquina virtual de software que proporciona aceleracion de datos transaccionales de alto rendimiento optimizada para plataformas informaticas multi-nucleo. La maquina virtual utiliza un motor de paralelado subyacente que busca maximizar las eficacias de las plataformas informaticas multi-nucleo para proporcionar una maquina virtual de alto rendimiento (latencia mas baja) altamente escalable.
En algunas realizaciones, el motor de paralelizacion subyacente de la maquina virtual de software proporciona auto- organizacion en su capacidad para paralelizar y almacenar datos relevantes para procesamiento de transaction a particiones de datos, cada una asociada con diferentes unidades de ejecucion para la maquina virtual de software. Ademas, las tareas que procesan de manera colectiva transacciones y datos transaccionales correspondientes proporcionan auto-ajuste en su capacidad para determinar de manera autonoma y migrar entre unidades de ejecucion que procesan las tareas. Como resultado, la maquina virtual de software puede emplear multiples unidades de delegation de transaccion distribuidas y as! evitar tanto un administrador de transaccion centralizado para gestionar organization de datos como delegacion transaccional y los cuellos de botella intrlnsecos asociados con tal administration centralizada.
Estas tecnicas pueden ser utiles en sistemas requeridos para tratar las necesidades particulares de aceleracion de datos dinamica e interactiva para aplicaciones web de gran audiencia y nubes de “grandes volumenes de datos”. En particular, un sistema que implementa las tecnicas descritas puede agregar datos transaccionales para gestionar de manera eficaz la entrada de datos masivos que surgen de muchas fuentes y se reciben mediante el sistema, as! como desagregar datos transaccionales para entregar datos procesados para seleccionar destinos. Por ejemplo, una caracterlstica de comunicaciones de datos unica es la capacidad de la plataforma para enviar interactivamente datos seleccionados de difusion de envlo a dispositivos individuales (usuarios) y crear sesiones de difusion privadas interactivas (canales) en un flujo de datos de difusion en masa homogeneo. Las tecnicas de la plataforma pueden posibilitar tambien la aceleracion de la transaccion y aplicacion de mensajerla proporcionadas por el cliente en un sistema que opera una cache de base de datos en memoria escalable, con extension de tiempo de ejecucion indefinida en tiempo real bajo demanda integrada para almacenamiento secundario. Un sistema de este tipo puede aprovechar las tecnicas de la plataforma para escalar la cache mas alla de llmites en memoria flsica y, cuando se
5
10
15
20
25
30
35
40
45
50
55
60
65
requiera, integrar como parte de los ilmites de memoria de maquina virtual una extension automatica y uso de dispositivos de memoria flsicamente externa (por ejemplo, discos duros). La maquina virtual de software descrita en este punto, en otras palabras, soporta un movimiento desde 'arquitecturas de informacion estaticas' que tienen dificultades para soportar o crear valor desde grandes volumenes de datos a un modelo de arquitectura dinamica. Con baja latencia, el procesamiento escalable junto con complejidad reducida y eficacia de costes aumentada, las tecnicas descritas tratan especlficamente las condiciones del procesamiento de grandes volumenes de datos para proporcionar la capacidad para consumir y procesar concurrentemente volumenes de transacciones masivas a partir de grandes numeros de productores de datos junto con la capacidad para enviar datos procesados a billones de consumidores de datos de una manera interactiva.
En un ejemplo, un dispositivo comprende un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion y una pluralidad de maquinas virtuales que opera cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las maquinas virtuales se ejecuta en uno diferente de los nucleos de ejecucion. El dispositivo comprende tambien una base de datos en memoria que comprende datos almacenados en una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion. El dispositivo comprende tambien una pluralidad de tareas que se ejecutan en las maquinas virtuales para descomponer una transaccion entrante para la base de datos en memoria en sub- transacciones, desplegar las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecutar concurrentemente las sub-transacciones de la transaccion entrante en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
En otro ejemplo, un metodo comprende ejecutar una pluralidad de maquinas virtuales que operan cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las maquinas virtuales se ejecuta en uno diferente de una pluralidad de nucleos de ejecucion de un procesador hardware multi-nucleo de un dispositivo informatico. El metodo comprende tambien asociar uno diferente de los nucleos de ejecucion con cada una de una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria almacena datos para una base de datos en memoria. El metodo comprende ademas ejecutar una pluralidad de tareas con las maquinas virtuales, en el que la pluralidad de tareas descomponen una transaccion entrante para la base de datos en memoria en sub-transacciones, desplegar las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecutar concurrentemente las sub- transacciones de la transaccion entrante en los respectivos nucleos de ejecucion a los que se despliegan las sub- transacciones.
En otro ejemplo, un dispositivo de almacenamiento legible por ordenador comprende instrucciones que, cuando se ejecutan, provocan que un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion ejecute una pluralidad de maquinas virtuales que opera cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las maquinas virtuales se ejecuta en uno diferente de una pluralidad de nucleos de ejecucion de un procesador hardware multi-nucleo de un dispositivo informatico. Las instrucciones, cuando se ejecutan, provocan tambien que el procesador hardware multi-nucleo asocie uno diferente de los nucleos de ejecucion con cada una de una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria almacena datos para una base de datos en memoria. Las instrucciones, cuando se ejecutan, provocan ademas que el procesador hardware multi-nucleo ejecute una pluralidad de tareas con las maquinas virtuales, en el que la pluralidad de tareas descomponen una transaccion entrante para la base de datos en memoria en sub- transacciones, desplegar las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecutar concurrentemente las sub-transacciones de la transaccion entrante en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
Los detalles de una o mas realizaciones de la invencion se exponen en los dibujos adjuntos y en la descripcion a continuacion. Otras caracterlsticas, objetos y ventajas de la invencion seran evidentes a partir de la descripcion y dibujos y a partir de las reivindicaciones.
Breve descripcion de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un sistema de ejemplo que utiliza las tecnicas descritas en el presente documento para proporcionar aceleracion de datos transaccionales de alto rendimiento.
La Figura 2 es un diagrama de bloques que ilustra una realizacion de ejemplo de un acelerador de datos transaccionales que proporciona aceleracion de datos transaccionales de alto rendimiento de acuerdo con las tecnicas descritas en esta divulgacion.
La Figura 3 es un diagrama de bloques que ilustra un caso de ejemplo de un motor de paralelizacion que descompone transacciones o eventos entrantes para procesamiento mediante tareas autonomas que se ejecuta cada una independientemente en un nucleo separado de una plataforma informatica multi-nucleo de la manera descrita en esta divulgacion.
La Figura 4 es un diagrama de bloques que ilustra tareas que se ejecutan en procesadores virtuales para modificar concurrentemente estructuras de datos almacenadas en cache que usan las tecnicas de esta divulgacion.
La Figura 5 es un diagrama de bloques que ilustra procesadores virtuales de ejemplo en mas detalle.
5
10
15
20
25
30
35
40
45
50
55
60
65
La Figura 6 es un diagrama de bloques de un sistema que realiza multiplexacion por division en el tiempo de tareas de acuerdo con las tecnicas descritas en el presente documento.
Las Figuras 7A-7B son diagramas de bloques que ilustran tareas de ejemplo que soportan la operacion paralelizada de los aceleradores de datos transaccionales de la Figura 1.
La Figura 8 es un diagrama de bloques que ilustra un acelerador de datos transaccionales de ejemplo que escribe concurrentemente a multiples objetos de datos en paralelo de acuerdo con las tecnicas descritas en el presente documento.
La Figura 9 es un diagrama de bloques que ilustra un acelerador de datos transaccionales 190 de ejemplo que incluye multiples maquinas de agrupacion para escribir estructuras de datos parciales de acuerdo con las tecnicas descritas en el presente documento.
La Figura 10 ilustra un sistema de ejemplo en el que se usan instancias del acelerador de datos transaccionales que estan acorde con tecnicas descritas en el presente documento como bloques de creacion para formar una estructura en niveles para enviar interactivamente datos seleccionados a un gran numero de clientes individuales (usuarios) y crear sesiones de difusion privadas interactivas (canales) en un flujo de datos de difusion en masa homogeneo.
La Figura 11 ilustra un sistema de ejemplo en el que se usan instancias de un acelerador de datos transaccionales que estan acorde con tecnicas descritas en el presente documento como bloques de creacion para formar una estructura en niveles para recibir datos desde un gran numero de fuentes de datos individuales (usuarios).
La Figura 12 es un diagrama de bloques que ilustra un sistema de ejemplo que utiliza las tecnicas descritas en el presente documento para proporcionar aceleracion de datos transaccionales de alto rendimiento para usuarios que tanto originan como consumen datos.
Description detallada
La Figura 1 es un diagrama de bloques que ilustra un sistema de ejemplo que utiliza las tecnicas descritas en el presente documento para proporcionar aceleracion de datos transaccionales de alto rendimiento. En el sistema de ejemplo 10 de la Figura 1, un conjunto de aceleradores de datos transaccionales 13A-13N (colectivamente, “aceleradores de datos transaccionales 13”) se organizan para formar una agrupacion 11 de aceleradores de datos. Los aceleradores de datos transaccionales operan para introducir y procesar continuamente grandes cantidades de transacciones de datos desde fuentes de datos 12 y entregar los datos procesados a las fuentes de datos 16. Las fuentes de datos 12 y el consumidor de datos 16 pueden ser cualquiera que origine o consuma datos, tal como sistemas, aplicaciones o bases de datos.
Como se describe en el presente documento, cada uno de los aceleradores de datos transaccionales 13 incluye un motor de paralelizacion que proporciona un entorno de operacion multi-nucleo masivamente paralelo para que una maquina virtual introduzca y procese transaccionalmente los datos introducidos. La maquina virtual de software proporciona aceleracion de datos transaccionales de alto rendimiento optimizados para las plataformas informaticas multi-nucleo subyacentes de los aceleradores de datos transaccionales 13. Es decir, el motor de paralelizacion proporciona una plataforma de base en la que la introduction y procesamiento de datos pueden paralelizarse de una manera que es altamente escalable y optimizada para ejecucion independiente a traves de un numero arbitrario de nucleos de ejecucion de multiples dispositivos informaticos agrupados. Las transacciones de datos entrantes recibidas desde fuentes de datos 12 se descomponen mediante los motores de paralelizacion en operaciones que pueden ejecutarse independientemente en los nucleos individuales de las plataformas informaticas multi-nucleo subyacentes de los aceleradores de datos transaccionales 13. Las maquinas virtuales operan en una base de datos en memoria organizada de manera que permite al motor de paralelizacion de cada uno de los aceleradores ejecutar operaciones transaccionales para insertar, borrar, actualizar y consultar datos desde la base de datos en memoria en paralelo a traves de los nucleos del entorno de procesamiento multi-nucleo subyacente.
Ademas, durante operacion, el motor de paralelizacion de la maquina virtual de software que se ejecuta en cada uno de los aceleradores de datos transaccionales 13 puede auto-organizar dinamicamente el uso de memoria para escalar la base de datos en memoria mas alla de los llmites en memoria flsicos. De esta manera, las maquinas virtuales de software de los aceleradores de datos transaccionales 13 pueden proporcionar una extension automatica y uso de dispositivos de memoria flsicamente externos (por ejemplo, discos duros) cuando se procesan los datos de transaction introducidos. Esto permite a las maquinas virtuales aprovechar dinamicamente el almacenamiento virtual para la base de datos en memoria segun sea necesario con el procesamiento continuo de las transacciones de entrada en paralelo en el entorno informatico multi-nucleo.
Ademas, las maquinas virtuales ejecutadas mediante los aceleradores de datos transaccionales 13 incluyen caracterlsticas de comunicacion paralelizadas que permiten a los aceleradores de datos transaccionales enviar interactivamente datos seleccionados a los consumidores de datos 16. Por ejemplo, los consumidores de datos 16 pueden ser dispositivos individuales, y las caracterlsticas de comunicacion paralelizadas de los aceleradores de datos transaccionales 13 pueden crear canales interactivos en un flujo de datos de difusion en masa para enviar grandes cantidades de datos solicitados individualmente a altos volumenes en los consumidores de datos 16.
5
10
15
20
25
30
35
40
45
50
55
60
65
De esta manera, los aceleradores de datos transaccionales 13 ejecutan maquinas virtuales que tienen motores de paralelizacion subyacentes que buscan maximizar las eficacias de las plataformas informaticas multi-nucleo para proporcionar aceleracion de transaccion de datos de alto rendimiento (latencia mas baja) altamente escalable. Ademas, la maquina virtual puede observarse como una maquina virtual en memoria con una capacidad para auto- organizar en su estado operacional y auto-buscar, en tiempo real, llmites de funcionamiento de memoria disponibles para optimizar automaticamente el rendimiento maximo disponible para aceleracion de procesamiento de datos y entrega de contenido de cantidades masivas de datos.
Las maquinas virtuales paralelizadas descritas en el presente documento permiten que los datos transaccionales desde las fuentes de datos 12 se determinen dinamicamente al vuelo cuando se dirigen a los consumidores de datos 16 para operaciones de procesamiento adicionales o presentation a usuarios de la forma mas apropiada y usable. Ademas, las maquinas virtuales paralelizadas de los aceleradores de datos transaccionales 13 pueden operar en el flujo de datos en tiempo real sin requerir necesariamente que se escriban los datos en disco y se determinen en su totalidad. Como tal, las maquinas virtuales paralelizadas pueden acelerar la velocidad de procesamiento y la relevancia de los datos transaccionales presentados a los consumidores de datos 16.
Las maquinas virtuales de procesamiento paralelo de los aceleradores de software 13 pueden usarse para aumentar las infraestructuras y aplicaciones de procesamiento de datos existentes en aplicaciones en la nube, moviles y sociales y entornos informaticos empresariales para entregar aceleracion de datos altamente escalable de baja latencia con aumento de rendimiento y reduction de costes de operation.
La Figura 2 es un diagrama de bloques que ilustra una realization de ejemplo de un acelerador 13. En el ejemplo ilustrado, el acelerador 13 incluye una maquina virtual 20 que esta disenada especlficamente para acelerar y proporcionar procesamiento personalizable para grandes cantidades de datos desde una a muchas fuentes de datos 12. El acelerador 13 se implementa tlpicamente en una plataforma informatica, tal como un servidor de gama alta, que tiene una plataforma informatica multi-nucleo 24. La plataforma informatica 24 puede incluir cualquier numero de procesadores y cualquier numero de nucleos hardware desde, por ejemplo, cuatro a miles.
En el ejemplo de la Figura 2, el acelerador 13 incluye una capa de abstraction de plataforma 25 que presenta cierta funcionalidad del nucleo del sistema operativo subyacente 27 para el procesador virtual 20, tal como gestion de memoria y E/S de hardware. En un ejemplo, el procesador virtual 20 puede ejecutarse en un espacio de proceso global proporcionado mediante el nucleo del sistema operativo 27. El nucleo del sistema operativo 27 puede ser, por ejemplo, un Linux, Distribution de Software Berkeley (BSD), otro nucleo variante de Unix o un nucleo de sistema operativo Windows, disponible de Microsoft Corp.
El motor de introduction de datos 26 del procesador virtual 20 opera para “introducir” datos transaccionales entrantes. El motor de introduccion de datos 26 puede recibir datos de miles a millones de conexiones de entrada concurrentes, cada dato de flujo continuo hacia dentro sin necesidad de solicitarsele nueva information. Los datos pueden introducirse desde unas pocas tuberlas “gruesas” o a traves de miles de conexiones desde dispositivos o sensores individuales. Los tipos de datos a procesarse pueden ser estructurados, no estructurados o ambos. Por ejemplo, el motor de introduccion de datos 26 puede incluir uno o mas adaptadores de datos para recibir y procesar datos con formato, por ejemplo, XML y datos con formato CSV.
A medida que los datos entrantes se “introducen” en el sistema mediante el motor de introduccion de datos 26, el motor de aceleracion de base de datos 28 opera en la base de datos en memoria 27. El motor de aceleracion de base de datos 28 proporciona un motor de procesamiento de datos altamente escalable que tiene responsabilidad principal de coordination de actividades entre el motor de introduccion de datos 26, las aplicaciones de cliente 28 y el motor de entrega de contenido 30. En algunos ejemplos, el motor de aceleracion de base de datos 28 expone una API basada en SQL convencional mediante la que el motor de introduccion de datos 26, las aplicaciones de cliente 28 y el motor de entrega de contenido 30 interactuan con la base de datos en memoria 27 y se ejecutan bajo el control del motor de paralelizacion 22 de manera que tiene lugar procesamiento a extremadamente baja latencia. En otras palabras, el motor de aceleracion de base de datos 28 puede proporcionar una vista al vuelo accesible por SQL en datos entrantes segun se introducen y almacenan en la base de datos en memoria 27. En general, el motor de aceleracion de base de datos 28 utiliza el motor de paralelizacion 22 para descomponer transacciones o eventos entrantes en bloques detallados de operaciones que se despliegan a continuation al nucleo de ejecucion de hardware mas cercano y mas disponible relevante para los datos requeridos para procesamiento. El motor de aceleracion de base de datos 28 posibilita la descomposicion, procesamiento, comprobaciones de concurrencia y re- ensamblaje de transacciones y eventos en resultados calculados.
El motor de entrega de contenido 30 puede emitir datos a uno, varios o muchos destinos, es decir, los consumidores de datos 16. Es decir, el motor de entrega de contenido 30 proporciona la capacidad de que los datos procesados se 'envlen' (entreguen) desde la base de datos en memoria 20 como un flujo de datos dirigido a consumidores de datos 16, que pueden ser otros sistemas, aplicaciones o bases de datos. Por ejemplo, en algunas realizaciones, el motor de entrega de contenido puede configurarse para entregar datos mediante un flujo dirigido unico a otro sistema informatico o almacen de datos. Ademas, el motor de entrega de contenido 30 puede proporcionar una entrega de
5
10
15
20
25
30
35
40
45
50
55
60
65
datos bidireccional interactiva y un motor de comunicaciones para difundir interactiva y bi-direccionalmente datos a grandes audiencias o dispositivos, es decir, los consumidores de datos 16.
En algunas realizaciones, el motor de introduccion de datos 26 y el motor de entrega de contenido 30 pueden soportar capacidades “seleccionar-convertir” descritas en el presente documento que posibilitan a una fuente de datos 12 o a un consumidor de datos 16 (o ambos) adaptar el contenido que se envla o recibe. Esto puede tomar la forma de canales de datos privados, es decir, flujos de datos interactivos y personalizados unicos para cada fuente o consumidor. Cada conexion puede ser una conexion abierta continua, de manera que los consumidores de datos 16 no necesitan interrogar datos cambiados. El motor de introduccion de datos 26 y el motor de entrega de contenido pueden soportar millones de conexiones continuas abiertas a fuentes de datos 12 y consumidores de datos 16.
El motor de paralelizacion 22 del procesador virtual 20 proporciona un entorno de ejecucion abstracto que utiliza arquitecturas de procesadores y placas madre multi-nucleo para formar una plataforma paralela, escalable de baja latencia, altamente integrada para la ejecucion del motor de introduccion de datos 26, del motor de aceleracion de base de datos 28, del gestor de almacenamiento virtual 29 y del motor de entrega de contenido 30. Es decir, el motor de paralelizacion 22 proporciona una plataforma de ejecucion optimizada para sistemas multi-nucleo y de muchos nucleos para proporcionar concurrencia en tiempo real, gestion de memoria y capacidades de gestion de tareas con paralelismo detallado en una base por nucleo. Ademas, el motor de paralelizacion 22 asegura uso optimo de las caches de instrucciones y de datos (por ejemplo, caches L1, L2 y L3) mientras que implementa paralelismo detallado descomponiendo todo el procesamiento en tareas que pueden ejecutarse independientemente en nucleos individuales y minimizando el requisito de estructuras de bloqueo concurrente. Esto permite al motor de introduccion de datos 26, al motor de aceleracion de base de datos 28, al gestor de almacenamiento virtual 29 y al motor de entrega de contenido 30 operar en la maquina virtual 20 con un alto grado de ejecucion paralela en la plataforma informatica multi-nucleo 24. De esta manera, el motor de paralelizacion 22 puede observarse como un sistema operativo multi-nucleo masivamente paralelo que proporciona un procesador virtual (maquina virtual 20) para procesar los datos introducidos.
El gestor de almacenamiento virtual 29 de la maquina virtual de software 20 proporciona auto-organizacion y permite a la maquina virtual escalar mas alla de sus llmites en memoria flsica y, cuando se requiera, integrar el uso de dispositivos de memoria flsicamente externos (por ejemplo, discos duros). Esto permite a la base de datos en memoria 27 poner en cola a la memoria externa mientras realiza las transacciones para expandir su espacio de memoria para utilizar el almacenamiento persistente 23. Por ejemplo, el gestor de almacenamiento virtual 29 puede poner en cola temporalmente datos transaccionales si los datos no se ajustan en los llmites de memoria flsica y enviar datos fuera para almacenamiento y calculo. Ademas, todos estos servicios para gestion de almacenamiento virtual estan paralelizados en la maquina virtual 20 y se ejecutan mediante el motor de paralelizacion para ejecucion en la plataforma informatica multi-nucleo 24.
Ademas, el gestor de almacenamiento virtual 29 gestiona el almacenamiento persistente 23 para permitir la recuperacion de un fallo o para que los usuarios cierren el sistema y lo recuperen sin perdidas de datos asociadas. La implementacion de persistencia en disco garantiza que no hay perdidas de transaccion en el caso de un fallo. Como se explica en mayor detalle a continuacion, las copias de la base de datos en memoria 27 pueden escribirse a ficheros de punto de comprobacion en un intervalo de tiempo configurable. Ademas, en algunos casos, las transacciones pueden grabarse en ficheros de registro diario y la asignacion de la transaccion unicamente tiene lugar despues de que se escriben las entradas en los ficheros de registro diario. Para recuperarse de un fallo de sistema, el subsistema de persistencia del gestor de almacenamiento virtual 29 puede aplicar el ultimo fichero de punto de comprobacion y a continuacion aplicar todas las entradas de registro diario desde el ultimo punto de comprobacion para recrear la base de datos en memoria 27. De esta manera, la persistencia puede implementarse para que sea compatible con ACID (atomicidad, coherencia, aislamiento, durabilidad).
La Figura 3 es un diagrama de bloques que ilustra un caso de ejemplo del motor de paralelizacion 22 de la Figura 2, que descompone transacciones entrantes o eventos para procesar mediante tareas autonomas cada una ejecutandose independientemente en un nucleo separado de un caso de ejemplo de la plataforma informatica multi- nucleo 24 de la manera descrita en el presente documento. En este ejemplo, la plataforma informatica multi-nucleo 24 incluye los nucleos de procesamiento 52A-52N (“nucleos 52”) que incluyen cada uno una unidad de ejecucion independiente para realizar instrucciones que se ajustan a una arquitectura de conjunto de instrucciones para el nucleo. Los nucleos 52 representan un numero natural arbitrario de nucleos y cada nucleo esta asociado con un Indice. Por ejemplo, el nucleo 52A puede asociarse con el Indice 1, el nucleo 52B con el Indice 2 y as! sucesivamente. En un ejemplo, los nucleos 52 representan 256 nucleos (es decir, N = 256). Los nucleos 52 pueden implementarse cada uno como circuitos integrados separados (IC) o pueden combinarse en uno o mas procesadores multi-nucleo (o procesadores de “muchos nucleos”) que se implementan cada uno usando un unico IC (es decir, un chip multiprocesador).
Los subconjuntos de los nucleos 52 combinados en un procesador multi-nucleo pueden compartir componentes de procesador mientras que cada nucleo del subconjunto mantiene al menos una unidad de ejecucion independiente para realizar instrucciones sustancialmente de manera independiente de los otros nucleos del subconjunto. Por ejemplo, los nucleos 52A, 52B pueden compartir una cache de nivel 3 (L3) y una unidad de gestion de memoria
5
10
15
20
25
30
35
40
45
50
55
60
65
(MMU) para un procesador multi-nucleo que incluye los nucleos. Sin embargo, los nucleos 52A, 52B en este ejemplo incluyen cada uno una unidad de ejecucion separada y caches de nivel 1 (L1)/nivel 2 (L2) separadas. Como alternativa, los nucleos 52A, 52B pueden compartir caches L2/L3 y una MMU del procesador multi-nucleo. En algunos casos, la plataforma informatica multi-nucleo 24 puede representar una agrupacion de placas madre separadas o de tipo cuchilla (blade) de procesamiento (en lo sucesivo, “maquinas de agrupacion”) insertadas en uno o mas chasis. Cada maquina de agrupacion en tales casos puede incluir uno o mas procesadores multi-nucleo teniendo cada uno un subconjunto de nucleos 52.
Los datos de la base de datos relacional en memoria 27 se almacenan en uno o mas medios de almacenamiento legibles por ordenador que incluye las particiones 51A-51N (“particiones 51”) localizada cada una en una localizacion flsica separada y asociada cada una con uno respectivo de los nucleos 52. El medio de almacenamiento legible por ordenador que almacena la base de datos relacional en memoria puede presentar una arquitectura de acceso de memoria no uniforme (NUMA). Es decir, los nucleos 52 pueden no tener igual tiempo de acceso a memoria para cada una de las particiones 51. En algunos casos, cada una de las particiones 51 asociadas con respectivos nucleos 52 representan la particion de la base de datos relacional en memoria 27 que tiene un tiempo de acceso a memoria que es menor o igual que el tiempo de acceso a memoria a cualquier otra de las particiones del nucleo. En otras palabras, los nucleos 52 pueden usar respectivas particiones 51 que ofrecen latencia de memoria mas baja para que los nucleos reduzcan la latencia de memoria global.
Cada una de las particiones 51 comprende medios de almacenamiento legibles por ordenador, tal como medios legibles por ordenador no transitorios que incluyen una memoria tal como memoria de acceso aleatorio (RAM) (incluyendo diversas formas de RAM dinamica (DRAM), por ejemplo, SDRAM DDR2, o RAM estatica (sRaM)), memoria Flash, memoria de contenido direccionable (CAM), CAM ternaria (TCAM), u otra forma de medio de almacenamiento fijo o extralble que puede usarse para llevar o almacenar instrucciones deseadas y datos de la base de datos relacional en memoria 27 y que puede accederse mediante los nucleos 52.
En algunos casos, las particiones 51 pueden representar cada una particiones de un espacio de direcciones flsico para un medio de almacenamiento legible por ordenador que se comparte entre uno o mas nucleos 52 (es decir, una memoria compartida). Por ejemplo, los nucleos 52A pueden conectarse mediante un bus de memoria (no mostrado) a uno o mas paquetes DRAm, modulos y/o chips (tampoco mostrados) que presentan un espacio de direcciones flsico accesible mediante el procesador multi-nucleo y almacenar datos para la particion 51A. Mientras la particion 51A puede ofrecer el tiempo de acceso a memoria mas bajo al nucleo 52A que cualquiera de las particiones 51, una o mas de las otras particiones 51 puede ser directamente accesible al nucleo 52A. En algunos casos, las particiones 51 pueden tambien, o como alternativa, representar cada una una cache de los nucleos correspondientes 52. Por ejemplo, la particion 51A puede comprender una cache en chip (por ejemplo, una cache L1/L2/L3 o una combinacion de las mismas) para el nucleo 52A.
Las particiones 51 almacenan porciones no solapantes de objetos de bases de datos descentralizadas para la base de datos relacional en memoria 27. Tales objetos pueden incluir tablas relacionales o Indices almacenados y gestionados usando estructuras de datos subyacentes tales como, por ejemplo, arboles (o “ensayos”) de objetos de datos, ficheros planos, zona de variables dinamicas, contenedores de troceo y arboles B+. Como se describe en detalle a continuacion, el motor de paralelizacion 22 distribuye una estructura de datos subyacente separada para respectivos objetos de base de datos a cada una de las particiones 51 y asigna tambien datos para que se gestionen mediante las estructuras de datos subyacentes para objetos de base de datos a una diferente de las particiones 51, paralelizando de manera eficaz los objetos de la base de datos entre las particiones. Puesto que cada uno de los nucleos 52 lee y escribe desde una diferente de las particiones 51, las particiones 51 no se someten a corruption debido a la operation concurrente de multiples nucleos 52. Como resultado, las tareas que se ejecutan en los nucleos 52 pueden evitar bloquear las particiones 51 en muchas circunstancias.
La interfaz de cliente 41 del motor de paralelizacion 22 presenta una interfaz mediante la que los clientes pueden emitir solicitudes al acelerador 13. En algunos aspectos, la interfaz de cliente 41 implementa los conectores (sockets) de capa de transporte (por ejemplo, Protocolo de Control de Transmision (TCP)/Protocolo de Internet (IP) o Protocolo de Datagramas de Usuario (UDP)/IP) para recibir y devolver datos desde/a clientes que invocan la interfaz.
El motor de paralelizacion 22 descompone la transaction entrante 40 en sub-transacciones detalladas 42A-42N (“sub-transacciones 42”) y distribuye las sub-transacciones a multiples tareas de ejecucion que se ejecutan en el uno de los nucleos 52 que esta asociado logicamente con la una de las particiones 51 relevante a los datos para las respectivas sub-transacciones 42. En algunos casos, la una relevante de las particiones 51 es la particion que almacena datos para devolverse en una transaccion de tipo consulta 40. En algunos casos, la una relevante de las particiones 51 es la particion que almacena, para un objeto de Indice de base de datos, una estructura de datos subyacente que es para almacenar los datos para una transaccion de tipo insertar 40 que hace referencia al objeto de Indice de base de datos.
El motor de paralelizacion 22 puede determinar automaticamente un numero de nucleos 52 del acelerador 13 sin requerir configuration de software por un administrador. Tras una determination del numero de nucleos 52, el motor
5
10
15
20
25
30
35
40
45
50
55
60
65
de paralelizacion crea una correspondiente de las particiones 51 para cada uno de los nucleos 52. Esta caracterlstica puede permitir despliegue paralelo para un numero arbitrario de nucleos 52, de nuevo, sin requerir reconfiguracion del software subyacente.
La transaction 40 es una unidad de transaction, es decir, una unidad de funcionamiento auto-contenida recibida y realizada mediante el acelerador 13 para alterar un estado de la base de datos relacional en memoria 27. La transaccion 40 puede ser compatible con ACID para proporcionar aislamiento entre las transacciones para ejecucion concurrente y para proporcionar retroceso en el caso de fallo. La transaccion 40 puede incluir una cadena de solicitud que se ajusta, por ejemplo, a una sentencia de lenguaje declarativo, un lenguaje de consulta o programa de lenguaje de programacion de consultas, un programa de lenguaje de programacion funcional o programa de lenguaje de reglas que especifica la respectiva unidad de funcionamiento para realizarse mediante el acelerador 13. La transaccion 40 contiene una o mas subunidades de funcionamiento que pueden realizarse mediante una unidad de ejecucion independiente como sub-transacciones individuales 42 de la transaccion padre atomica 40. Las sub- transacciones 42 pueden incluir, con respecto a la base de datos relacional en memoria 27; leer, escribir, manipular y borrar datos; crear y gestionar objetos de base de datos; crear y gestionar metadatos; y operaciones aritmeticas y de manipulation de cadenas.
La tarea de compilador 44 (“compilador 44”) recibe la transaccion 40 y descompone las transacciones a sub- transacciones 42 usando la gramatica de transaccion 47 (“gramatica 47”), que describe el lenguaje particular de transacciones entrantes, incluyendo la transaccion 40, en combination con el esquema de base de datos 45 para la base de datos relacional en memoria 27 y la biblioteca de etapas 49. En un ejemplo, la gramatica 47 incluye un conjunto de una o mas reglas de sustitucion teniendo cada una variables para coincidir datos en el esquema de base de datos 45 que describen la organization de la base de datos relacional en memoria 27. El esquema de la base de datos 45 puede comprender un diccionario de datos. Cada una de las reglas de sustitucion de la gramatica 47 hace referencia a variables para reglas de sustitucion adicionales en la gramatica 47 o etapas en la biblioteca de etapas 49. El compilador 44 analiza la transaccion 40 para generar cadenas de solicitud en testigo, y a continuation el compilador 44 aplica la gramatica 47 a cada cadena de solicitud en testigo en vista del esquema de la base de datos
45 para producir, para la transaccion, una o mas series de etapas almacenadas mediante la biblioteca de etapas 49. Cada serie de etapas constituye una tarea separada que, cuando se ejecutan en serie mediante una tarea de ejecucion, realizan una de las sub-transacciones 42. De esta manera, el compilador 44 descompone la transaccion 40 a sub-transacciones 42 para distribucion a y ejecucion mediante multiples nucleos 52.
La biblioteca de etapas 49 comprende un diccionario que mapea grupos de instrucciones de etapas ejecutables mediante los nucleos 52 a claves de etapa referenciadas mediante la gramatica 47. Cada grupo de instrucciones de etapa puede incluir instrucciones ejecutables por maquina pre-compiladas para los nucleos 52. Para ejecutar una serie de etapas (es decir, una tarea) cada una identificada mediante una clave de etapa, una unidad de ejecucion mapea las claves de etapa para las etapas a la biblioteca de etapas 49 para obtener las instrucciones de etapa mapeadas correspondientes, a continuacion ejecuta las instrucciones de etapa mapeadas en una base de etapa a etapa. Cada una de las tareas 44, 46, y las tareas de ejecucion subordinadas 48A-48N (ilustradas como “sub- ejecucion” 48A-48N) representan series respectivas de etapas para las sub-transacciones 42 correspondientes.
Habiendo descompuesto la transaccion 40 en sub-transacciones 42, el compilador 44 provoca la tarea de ejecucion
46 para gestionar la ejecucion de las sub-transacciones y devolver cualquier respuesta requerida para la transaccion 40. De esta manera, el compilador 44 genera un plan de ejecucion y provoca la tarea de ejecucion 46 para realizar el plan de ejecucion. La tarea de ejecucion 46 provoca las tareas de ejecucion subordinadas 48 para ejecutar sub- transacciones 42 correspondientes. En algunos casos, la transaccion 40 puede representar multiples transacciones de base de datos separadas. En tales casos, el compilador 44 puede producir una tarea de ejecucion separada para gestionar cada transaccion o reusar la tarea de ejecucion 46 para gestionar las transacciones.
Las sub-transacciones 42 pueden cada una hacer referencia a diferentes datos almacenados mediante la base de datos relacional en memoria 27 en particiones separadas 51. Por ejemplo, la transaccion 40 puede comprender una solicitud de consulta para filas de una tabla de base de datos que tienen valores de campo que coinciden con multiples criterios, por ejemplo, una sentencia de SQL SELECT con un apartado WHERE, donde la tabla de la base de datos tiene un Indice correspondiente definido para el campo. Como otro ejemplo, la transaccion 40 puede comprender una solicitud para anadir una fila a una tabla de la base de datos que tiene multiples Indices definidos, por ejemplo, una sentencia de SQL INSERT, o para actualizar con un nuevo valor de campo todas las filas de la tabla de la base de datos que coinciden con uno o mas criterios, por ejemplo, una sentencia de SQL UPDATE. Como otro ejemplo, la transaccion 40 puede comprender una solicitud para devolver una suma de todos los valores para un campo de fila de una tabla de la base de datos. La tarea de ejecucion 46 produce tareas de ejecucion subordinadas 48 para sub-transacciones 42 y asigna las tareas a diferentes nucleos 52 basandose en los datos relacionados. La tarea de ejecucion 46 puede proporcionar un puntero de memoria a si misma para posibilitar que las tareas de ejecucion subordinadas 48 devuelvan datos resultantes o information de estado. Cualquiera de las tareas de ejecucion subordinadas 48 pueden a su vez producir tareas de ejecucion subordinadas adicionales en una descomposicion recursiva de las sub-transacciones 42.
5
10
15
20
25
30
35
40
45
50
55
60
65
La tarea de ejecucion 46 introduce datos para una sub-transaccion 42 a un algoritmo de asignacion, tal como una funcion de troceo, que emite un indice u otro identificador que identifica uno de los nucleos 52. Para la solicitud para anadir un ejemplo de fila, anteriormente, la tarea de ejecucion 46 puede introducir al algoritmo de asignacion los datos de fila completos o un subconjunto de los datos de fila, tal como los datos de fila para campos para los que se definen indices para la tabla de la base de datos. El algoritmo de asignacion puede ser, por ejemplo, un MD5, SHA- 1, o una operacion a nivel de bits aplicada a los datos de entrada y el modulo del numero de los nucleos 52, o cualquier otra funcion que produzca un valor en un intervalo del numero de nucleos cuando se proporcionan datos de entrada arbitrarios. Para los ejemplos de solicitud de consulta y sentencia de actualizacion, anteriormente, la tarea de ejecucion 46 puede trocear los criterios para la solicitud de consulta y a continuacion calcular el modulo de la salida del troceo del numero de nucleos. El indice de nucleo emitido mediante el algoritmo de asignacion, datos de objeto de base de datos proporcionados para las sub-transacciones 42, determina la ejecucion de uno de los nucleos 52 de las respectivas tareas de ejecucion subordinadas 48 para las sub-transacciones cuando se producen mediante la tarea de ejecucion 46. En el ejemplo ilustrado, el nucleo 52A que tiene el indice 1 ejecuta la sub- transaccion 42A puesto que los datos relacionados con la sub-transaccion 42A provoca que el algoritmo de asignacion emita el indice 1. El nucleo 52B que tiene el indice 2 ejecuta las sub-transacciones 42B puesto que los datos relacionados con la sub-transaccion 42B provocan que el algoritmo de asignacion emita el indice 2, y asi sucesivamente. De esta manera, el algoritmo de asignacion asocia datos con diferentes particiones 51 y tambien con los nucleos 52 que acceden a las respectivas particiones cuando delegan las sub-transacciones 48 de acuerdo con el algoritmo de asignacion. Para el ejemplo de la suma de todos los valores, anteriormente, la tarea de ejecucion 46 produce una de las sub-transacciones 42 para cada nucleo 52. Cada una de las sub-transacciones provoca respectivas tareas de ejecucion sub-ordinadas 48 para calcular, una suma parcial de datos para la tabla de la base de datos almacenada mediante la una asociada de las particiones 51.
Cada uno de los nucleos 52 opera en una diferente de las particiones 51. Dirigiendo las tareas de ejecucion subordinadas 48 a diferentes nucleos 52 para ejecucion, la tarea de ejecucion 46 produce datos relacionados con las respectivas sub-transacciones 42 para las tareas de ejecucion subordinadas 48 para almacenarse mediante diferentes particiones conocidas 51. En el ejemplo ilustrado, puesto que el nucleo 52B asociado logicamente con la particion 51B ejecuta la tarea de ejecucion subordinada 48B, la particion 51B almacena datos relacionados con la sub-transaccion 42B. Las tecnicas por lo tanto paralelizan eficazmente las transacciones asi como asignan tareas de ejecucion a los nucleos 52 que ofrecen un tiempo de acceso a memoria mas bajo a las particiones 51 que almacenan los datos paralelizados relacionados con las respectivas tareas de ejecucion. Las tareas de ejecucion subordinadas 48 pueden migrar entre los nucleos 52 cuando una correspondiente de las sub-transacciones 42 hace referencia a datos almacenados mediante multiples particiones 51. De esta manera, las tareas se ejecutan mas cercanas, en latencia de memoria, a los datos requeridos por las tareas.
Cada una de las tareas de ejecucion subordinadas 48 comprende una serie de etapas. Para ejecutar las etapas, las tareas de ejecucion subordinadas 48 pueden mapear las claves de etapa para las etapas a instrucciones de etapa correspondientes en la biblioteca de etapas 49 y dirigir los nucleos 52 para ejecutar las instrucciones de etapa. Cada una de las tareas de ejecucion subordinadas 48 se ejecuta en uno diferente de los nucleos 52. Las tareas de ejecucion subordinadas 48 pueden ejecutarse por lo tanto sustancialmente en paralelo a pesar de realizar, en combinacion, una unica transaction 40. Como resultado, el motor de paralelizacion 22 puede conseguir una mejora sustancial en velocidad de procesamiento de transaccion que escala a un numero arbitrario de nucleos 52 y al nivel de paralelizacion intrinseco en la transaccion 40. Ademas, el motor de paralelizacion 22 consigue tal paralelizacion en un unico sistema con una base de datos relacional en memoria 27 consolidada que puede accederse independientemente mediante multiples nucleos 52 del sistema, en lugar de en un sistema distribuido que divide una base de datos entre multiples servidores de bases de datos y por lo tanto requiere un servidor de equilibrio de carga separado o un controlador para equilibrar los datos de la base de datos entre las multiples particiones.
Las tareas de ejecucion subordinadas 48 pueden proporcionar respectivos valores de retorno a la tarea de ejecucion 46 referenciados mediante un puntero de memoria a la tarea de ejecucion 46 referenciada con las tareas de ejecucion subordinadas. Los valores de retorno pueden incluir, por ejemplo, datos solicitados, datos parciales (por ejemplo, una suma parcial), y valores de estado de ejecucion (por ejemplo, satisfactorio, fallo). La tarea de ejecucion 46 genera una cadena de respuesta para la transaccion 40 usando los valores de retorno y emite la cadena de respuesta a uno o mas clientes solicitantes mediante la interfaz de cliente 41, o la tarea de ejecucion 46 agrega los valores de retorno para procesamiento adicional con otra tarea en el motor de paralelizacion 22.
Aunque se han descrito con respecto a operaciones realizadas en una base de datos en memoria, las tecnicas de esta divulgation se aplican a otras aplicaciones que pueden beneficiarse del procesamiento paralelizado de transacciones entrantes. Por ejemplo, la transaccion 40 puede representar una unidad de datos de paquetes (PDU) que tiene una pluralidad de datos de campo que deben procesarse individualmente. Estos datos de campo pueden descomponerse mediante el compilador 44 en un numero de sub-transacciones para ejecucion mediante las respectivas tareas de sub-ejecucion 48. En algunos casos, la transaccion 40 puede representar un fragmento de codigo que se ajusta a un lenguaje de programacion, tal como C/C++ o Java. En tales casos, el compilador 44 puede ejecutar un compilador para que el lenguaje de programacion produzca dinamicamente codigo maquina para ejecucion mediante las tareas de sub-ejecucion 48 directamente en los respectivos nucleos 52 para procesar transacciones de entrada (por ejemplo, paquetes). De esta manera, el motor de paralelizacion 22 puede alterar
5
10
15
20
25
30
35
40
45
50
55
60
65
dinamicamente el programa de ejecucion de acuerdo con los fragmentos de codigo recibidos para soportar procesamiento paralelizado flexible de datos de entrada/salida (por ejemplo, PDU).
La Figura 4 es un diagrama de bloques que ilustra una vista conceptual en la que un procesador virtual 20 puede observarse como una pluralidad de procesadores virtuales cooperativos 84 que se ejecutan en respectivos nucleos de la plataforma informatica multi-nucleo 24. Como se muestra en el ejemplo de la Figura 4, cada uno de los procesadores virtuales 84 ejecuta tareas 82 en paralelo para modificar concurrentemente estructuras de datos almacenadas en cache usando las tecnicas de esta divulgacion y realiza la diversa funcionalidad externa e interna del acelerador 13. Cada uno de los procesadores virtuales 84 proporciona entornos de operacion pseudo- independientes para planificar y gestionar la ejecucion de un conjunto correspondiente de tareas 82A-82N a traves de respectivos nucleos de una plataforma informatica multi-nucleo 24.
Los procesadores virtuales 84 pueden ofrecer un entorno de ejecucion independiente de plataforma uniforme para gestion de procesador virtual; planificacion de tareas; compilation y ejecucion de sentencias; procesamiento de transaction de base de datos; registro diario; equilibrio de carga de procesador virtual; persistencia, recuperation y replication de base de datos; introduction y salida de datos; y acciones definidas por el usuario. Los procesadores virtuales 84 pueden implementar el entorno de ejecucion ofreciendo una arquitectura de conjunto de instrucciones virtual (ISA) que es uniforme para cada uno de los procesadores virtuales. Los procesadores virtuales 84 reciben instrucciones para ejecutar tareas y traducir las instrucciones a llamadas de biblioteca a nivel de nucleo y/o a instrucciones que se ajustan a la ISA nativa proporcionada mediante los respectivos nucleos. De esta manera, los procesadores virtuales proporcionan un conjunto de maquinas virtuales completamente paralelizadas con las que ejecutar las tareas 82.
En algunas realizaciones, una pluralidad de nucleos 52 soporta una unica instancia de un nucleo y un proceso para proporcionar un procesador virtual 20. Por ejemplo, los nucleos 52A, 52B pueden ejecutar subprocesos para un unico proceso. En tales realizaciones, los nucleos 52 que cooperan para proporcionar un procesador virtual tienen acceso a un espacio de direcciones flsico o virtual unico proporcionado mediante el procesador. Tales procesadores virtuales pueden denominarse tambien como maquinas virtuales de proceso. Como resultado, las tareas que se ejecutan en los nucleos cooperativos pueden pasar mensajes, migrar y producir otras tareas entre los nucleos escribiendo en y leyendo desde el espacio de direcciones comun.
Las tareas 82 incluyen un conjunto de etapas que se ajustan al entorno de programacion independiente de plataforma uniforme proporcionado mediante cada uno de los procesadores virtuales. Las etapas pueden representar una realization de ejemplo de las etapas de la biblioteca de etapas 49 descrita con respecto a la Figura 3. Es decir, los procesadores virtuales 84 pueden traducir etapas a un conjunto de instrucciones ejecutables por maquina mediante los nucleos 52. Como resultado, cada una de las tareas 82 puede migrar sin interrupciones y ejecutarse en cualquiera de los procesadores virtuales 84 sin requerir volver a compilar a una nueva ISA o traduction a un nuevo entorno de programacion.
Las caches 92 de los respectivos nucleos 52 almacenan datos asociados con el respectivo nucleo y pueden representar realizaciones de ejemplo de las particiones 51 de la Figura 3. Cada una de las caches 92 incluye una de las estructuras parciales 94A-94N (“estructuras parciales 94”) que almacenan en cache datos para una estructura de datos colectiva que representa un objeto de base de datos, tal como el Indice 93 definido para la tabla 98 de la base de datos relacional en memoria 27. En otras palabras, cada una de las estructuras parciales 94 almacena en cache un subconjunto no solapante de los datos para el Indice 93. Las estructuras parciales 94 y el Indice 93 pueden incluir, por ejemplo, tablas, listas vinculadas y arboles B+. De acuerdo con las tecnicas de esta divulgacion, las estructuras parciales 94 almacenan en cache datos respectivos para el Indice 93 cuando los datos, cuando se introducen a un algoritmo de asignacion ejecutado mediante uno de los procesadores virtuales 84, dan como resultado un valor de Indice asociado con uno de los nucleos 52 que comprende la estructura parcial en su cache. Las estructuras parciales 94 pueden incluir subconjuntos de datos almacenados y gestionados mediante cualquier objeto de base de datos que pueda dividirse, incluyendo tablas, Indices, filas de tablas individuales y estructuras internas. Ademas, aunque se ilustra como que residen en las caches 92, las estructuras parciales 94 pueden describirse en uno cualquiera o mas medios de almacenamiento legible por ordenador.
Por ejemplo, la estructura de datos colectiva puede ser un Indice que incluye valores de campo para el campo de Indice de base de datos que se mapean cada uno a un puntero que resuelve a una fila de la tabla 98 almacenada en la base de datos relacional en memoria 27. En este ejemplo, cada una de las estructuras parciales 94 incluye mapeos de valor-puntero de campo asignados a uno de los nucleos 52 que incluye la estructura parcial. Como resultado, las tareas 82 que se ejecutan en los procesadores virtuales 84 pueden determinar rapidamente la localization de los mapeos de valor-puntero de campo entre las estructuras parciales 94 para el Indice de la base de datos troceando datos de valor de campo. En algunos casos, los nucleos 52 pueden mantener una matriz u otra estructura de datos asociativa para el Indice 93 que mapea valores de Indice para los nucleos 52 a direcciones de memoria, en espacio de memoria, para las correspondientes estructuras parciales 94. Tras aplicar el algoritmo de asignacion para determinar un valor de Indice para buscar datos, las tareas 82 mapean el valor de Indice a la direction de memoria para una de las estructuras parciales 94 y migran al procesador virtual 84 que corresponde a uno de los nucleos 52 asociado con el valor de Indice para ejecucion. De esta manera, cada uno de los nucleos 52 esta asociado logicamente con los datos en las respectivas estructuras parciales 94, y las tecnicas pueden mejorar
5
10
15
20
25
30
35
40
45
50
55
60
65
el rendimiento de cache aumentando la probabilidad de que las estructuras parciales 94 permanezcan en la una correspondiente de las caches 92. En algunos casos, una tarea especializada gestiona la estructura de datos asociativa para las tareas de ejecucion.
En el ejemplo ilustrado, los nucleos 52 comunican para intercambiar datos, mensajes y tareas mediante el bus de sistema 98. Ademas, los nucleos 52 hacen de interfaz con la memoria de sistema 99, incluyendo la base de datos relacional en memoria 27, mediante el bus de memoria 99. Los procesadores virtuales 84 ejecutan por separado las tareas 82 en paralelo para realizar la diversa funcionalidad externa e interna del acelerador 13. Las tareas 82 pueden ser punteros que resuelven a una estructura de tarea en la memoria de sistema 99 que incluye una serie de etapas para ejecucion mediante los procesadores virtuales 84. Las tareas 82 pueden por lo tanto identificarse de manera unica mediante su direccion en el espacio de direcciones de la memoria de sistema 99. Cada una de las tareas 82 se ejecuta sustancialmente de manera independiente de cada una de las otras tareas 82. Mientras las tareas 82 pueden intercambiar datos con otras tareas, producir tareas adicionales y producirse desde otras tareas, cada una de las tareas 82 auto-determina el uno de los nucleos 52 que va a ejecutar tarea. No hay tareas o procesos de supervision para especificar una localizacion de nucleo para las tareas 82. Esta heterarqula de tareas cooperativas 82 esta por lo tanto auto-dirigida y auto-organizada, reduciendo sustancialmente el numero de ciclos de los nucleos 52 dedicados a gestion de tareas, comprobacion de coherencias y otras funciones administrativas.
Las tareas 82 pueden migrar entre los procesadores virtuales 84 y producir tareas adicionales para ejecutarse en otros procesadores virtuales 84. En el ejemplo ilustrado, la tarea 82A que se ejecuta en el procesador virtual 84A produce la tarea 82B para ejecutarse en el procesador virtual 84N enviando el mensaje 83 al procesador virtual 84N. El mensaje 83 puede especificar una serie de etapas determinadas mediante la tarea 82A para la tarea producida 82B. El mensaje 83 puede como alternativa especificar un puntero que resuelve a una estructura de tarea en la memoria de sistema 99 que incluye una serie de etapas para ejecutar como la tarea 82B. Ademas, la tarea 82A se copia posteriormente a si misma para ejecutarse en el procesador virtual 84B enviando el mensaje 85 al procesador virtual 84B. El mensaje 85 puede especificar una serie de etapas que representa una restante de la tarea 82A que requiere ejecucion o un puntero que resuelve a una estructura de tarea en la memoria de sistema 99 que incluye al menos una serie restante de etapas para ejecucion mediante el procesador virtual 84B.
La Figura 5 es un diagrama de bloques que ilustra los procesadores virtuales 84A-84N, con detalle adicional, que ejecutan multiples tareas paralelas de acuerdo con las tecnicas de esta divulgacion. Cada uno de los procesadores virtuales 84 esta asociado con una de las caches 92A-92N puesto que el procesador virtual se ejecuta en un nucleo que incluye la cache asociada. Aunque los componentes y funcionalidad de los procesadores virtuales 84 se describen como alternativa con respecto a unos individuales de los procesadores virtuales, cada uno de los procesadores virtuales 84 incluye sustancialmente componentes similares para realizar sustancialmente funcionalidad similar. En algunos casos, multiples nucleos pueden ejecutar subprocesos para un proceso que proporciona uno de los procesadores virtuales 84. En tales casos, el proceso incluye conjuntos de componentes separados para cada uno de los nucleos. Por ejemplo, un unico procesador virtual 84 en tales casos puede proporcionar cuatro instancias del conjunto de una lista de ejecucion 104, lista en espera 108, cola-cruzada 110 y tarea de indicacion de funcionamiento 102. En tales casos, el planificador 100 para el proceso se ejecuta en nucleos separados para llevar a cabo las tareas 82 en el proceso. La referencia en el presente documento a un procesador virtual puede por lo tanto como alternativa hacer referencia a un proceso virtual y a uno de los conjuntos de componentes proporcionados en el presente documento.
La lista de ejecucion 104A del procesador virtual 84A almacena una lista de tareas puestas en cola actualmente para ejecucion mediante el procesador virtual. En el ejemplo ilustrado, la lista de ejecucion 104A es una cola circular que almacena punteros de memoria que se resuelven a estructuras de tareas respectivas en el espacio de memoria para el procesador virtual 84A. La lista de ejecucion 104A, como otras estructuras de datos que soportan el procesador virtual 84A, pueden almacenarse en la cache 92A y/o en memoria principal. El planificador 100A invoca iterativamente tareas en la lista de ejecucion 104A. El planificador 100A realiza la multiplexacion por division en el tiempo con divisiones de tiempo variable que dependen de las instrucciones en las tareas. El planificador 100A puede producir subprocesos separados para ejecutar cada uno una tarea en la lista de ejecucion 104A. Como alternativa, el planificador 100A puede usar un unico subproceso que funciona para la lista de ejecucion 104A. Ademas de los subprocesos para ejecutar la lista de ejecucion 104A, el planificador 100A puede usar subprocesos adicionales para realizar tareas especializadas. El planificador 100A invoca una tarea de la lista de ejecucion 104A para ejecutar una division de tiempo, a continuacion invoca una siguiente tarea de 104A. Puesto que la lista de ejecucion 104A es una cola circular, el planificador 100A ejecuta iterativamente las tareas de la lista de ejecucion desde la cabecera de la lista a la cola de la lista a continuacion, tras finalizar la ejecucion, al menos una porcion de la tarea en la cola de la lista, ejecuta de nuevo la tarea en la cabecera de la lista.
Las tareas migran entre los procesadores virtuales 84 de manera que una tarea que se ejecuta inicialmente en uno de los procesadores virtuales 84 puede ejecutarse mas tarde en otro procesador virtual. Ademas, una tarea que se ejecuta en uno de los procesadores virtuales 84 puede producir una nueva tarea para ejecucion en otro de los procesadores virtuales. En el ejemplo ilustrado, la tarea 112 migra desde el procesador virtual 84A al procesador virtual 84B anadiendo un puntero de memoria para si misma en la cola cruzada 110B en el mensaje 114 que comprende, en este ejemplo, una operacion de escritura de memoria. Las listas de ejecucion 104 de los
5
10
15
20
25
30
35
40
45
50
55
60
65
procesadores virtuales 84 pueden accederse en cualquier momento, y, con la excepcion de las operaciones que implican tareas de indicacion de funcionamiento 102, los procesadores virtuales 84 se ejecutan independientemente en paralelo y no sincronizan su ejecucion de tareas. En algunos casos, los procesadores virtuales 84A, 84B pueden ejecutarse en maquinas de agrupacion separadas. Como resultado, ninguno de los procesadores virtuales 84A, 84B pueden acceder al espacio de memoria flsico del otro. En tales casos, el mensaje 114 puede incluir un mensaje basado en red tal como, por ejemplo, una escritura de conector, o un mensaje transversal, de panel posterior u otro de conmutacion.
Los planificadores 100 pueden migrar las tareas 82 entre los procesadores virtuales 84 debido a una arquitectura NUMA del procesador virtual 20, ejecutando los procesadores virtuales 84 en los nucleos 52 que tienen tiempos de acceso a memoria no uniformes a las caches 92. De esta manera, los planificadores 100 pueden proporcionar planificacion a nivel de NUMA para reducir la latencia global para los accesos a memoria y mejorar de esta manera el rendimiento.
Para evitar la corrupcion de las listas de ejecucion 104 debido a una adicion aslncrona de una nueva tarea, los procesadores virtuales 84 incluyen respectivas colas-cruzadas 110 que almacenan temporalmente cero o mas nuevas tareas para anadir a las listas de ejecucion 104. En operacion, la tarea 112 que se ejecuta en el procesador virtual 84A determina que puede operar mas eficazmente en el procesador virtual 84B y se migra a si misma al procesador virtual 84B bloqueando la cola cruzada 110B y enviando un puntero de memoria para la tarea 112 a la cola cruzada. Para producir una nueva tarea en el procesador virtual 84B, la tarea 112 que se ejecuta en el procesador virtual 84A puede crear una nueva estructura de datos de tarea en memoria y a continuacion enviar un puntero de memoria a la nueva estructura de datos de tarea a la cola cruzada 110B. El planificador 100B se ejecuta en el procesador virtual 84B para hacer aparecer la tarea de cabecera de la cola cruzada 110B e insertar la tarea aparecida en lista de ejecucion 104B. Utilizando colas cruzadas 110 de esta manera, los procesadores virtuales 84 pueden evitar bloquear las respectivas listas de ejecucion 104 para leer/escribir las listas de ejecucion evitando ademas colisiones debido a la ejecucion de tareas concurrentes y migracion/produccion mediante procesadores virtuales separados que se ejecutan en paralelo. En algunos casos, para reducir la posibilidad de colisiones con respecto a colas cruzadas 110A, el procesador virtual 84A puede incluir multiples colas cruzadas, por ejemplo, una cola cruzada por procesador virtual en el sistema.
En algunos casos, la tarea 112 puede migrar al procesador virtual 84B puesto que un algoritmo de asignacion ejecutado mediante la tarea determina que la tarea 112 requiere acceso a un objeto en la estructura parcial 94B de la cache 92B asociada con el procesador virtual 84B. Como se ha descrito anteriormente con respecto a la Figura 4, las estructuras parciales 94 almacenan un subconjunto de datos para un objeto de base de datos global para la base de datos relacional en memoria 27. En algunos casos, las estructuras parciales 94 pueden representar estructuras parciales alternativa o adicionalmente almacenadas en la memoria principal. Para evitar bloquear las estructuras parciales 94 durante acceso mediante las tareas que se ejecutan en los procesadores virtuales 84, el acceso a las respectivas estructuras parciales puede limitarse a tareas que se ejecutan en uno de los procesadores virtuales 84 asociado con la estructura parcial. La tarea 112 debe por lo tanto operar en el procesador virtual 84B para acceder a la estructura parcial 94B. Esta restriccion asegura que el acceso a las estructuras parciales 94 por las tareas es seguro y fiable incluso aunque las tareas eviten, en muchas circunstancias, bloquear las estructuras parciales e incluso aunque multiples diferentes tareas puedan compartir el objeto de base de datos global. Ademas, multiples tareas que se ejecutan en diferentes procesadores virtuales 84 pueden acceder al objeto de base de datos global concurrentemente accediendo por separado a diferentes estructuras parciales 94 que juntas constituyen el objeto de base de datos. Cuando, sin embargo, la tarea 112 no puede completar el acceso a uno de los recursos parciales 94 en su division de tiempo permitida, la tarea 112 puede bloquear el recurso parcial para asegurar que los datos del recurso parcial permanecen estables y coherentes para la tarea hasta su siguiente division de tiempo. Como alternativa, la tarea 112 puede bloquear unicamente un elemento almacenado mediante una de las estructuras parciales 94, en lugar de la estructura completa. De esta manera, una tarea posterior puede modificar cualquier elemento no bloqueado de la estructura parcial.
En algunos casos, las tareas de la lista de ejecucion 104A pueden requerir recursos no inmediatamente disponibles o estar esperando de otra manera la satisfaccion de una dependencia para continuar la ejecucion. Para evitar congestionar el nucleo asociado que ejecuta el procesador virtual 84A, tales tareas pueden esperar anadiendose a si mismas a la lista de espera 108A junto con un tiempo de activacion asociado. La lista de espera 108A almacena tareas en espera ordenadas por tiempo de activacion en una estructura de datos ordenada, tal como una cola, tabla, lista vinculada o estructura de datos en arbol. Cada nodo en la lista de espera 108A es por lo tanto un puntero de memoria a una estructura de tarea para una tarea en espera.
Una tarea de alarma y un temporizador de hardware para el procesador virtual 84A gestionan tareas en espera en la lista de espera 108A. La tarea de alarma programa el temporizador de hardware con un valor de tiempo de activacion para la tarea mas reciente en la lista de espera 108A. Cuando se enciende el temporizador de hardware, se desencadena la tarea de alarma y anade la tarea mas reciente en la lista de espera 108A a lista de ejecucion 104A. En algunos casos, la tarea de alarma modifica la lista de ejecucion 104A para asegurar que el planificador 100A invoca la tarea mas reciente siguiente entre las tareas en la lista de ejecucion. La tarea de alarma a continuacion reprograma el temporizador de hardware con un valor de tiempo de activacion para la siguiente tarea
5
10
15
20
25
30
35
40
45
50
55
60
65
mas reciente de acuerdo con la lista de espera 108A. El temporizador de hardware puede accionarse con un reloj de CPU que tiene una velocidad que supera 1 GHz y por lo tanto tiene periodicidad por debajo del microsegundo. Como resultado, la tarea de alarma junto con el temporizador de hardware pueden conseguir la gestion de espera de tareas detallada y el comportamiento de operacion del procesador virtual, y pueden por lo tanto mejorar la utilizacion de recursos asegurando que las tareas se activan y ejecutan en una latencia corta despues de su valor de tiempo de activacion asociado.
Los procesadores virtuales 84 ejecutan respectivas tareas de indication de funcionamiento 102A-102N (“tareas de indication de funcionamiento 102”) a una velocidad predefinida para sincronizar una position operacional de los procesadores virtuales una vez para cada periodo definido mediante la velocidad de indicacion de funcionamiento. En algunos casos, la velocidad predefinida es 1 Hz. Por ejemplo, el planificador 100A invoca tareas de la lista de ejecucion 104A y, una vez por segundo, ejecuta la tarea de indicacion de funcionamiento 102A. Para sincronizar la posicion operacional de los procesadores virtuales 84, las tareas de indicacion de funcionamiento 102 pueden acceder cada una y disminuir una variable atomica compartida entre todas las instancias de los procesadores virtuales. La variable atomica puede inicializarse con un numero de procesadores virtuales 84 (que corresponde al numero de nucleos en el sistema). Cada una de las tareas de indicacion de funcionamiento 102 prueba la variable atomica para cero. Cuando la variable atomica no es cero, las tareas de indicacion de funcionamiento esperan una senal. Cuando la variable atomica alcanza cero debido a la operacion de la tarea de indicacion de funcionamiento final para el ciclo particular, la tarea de indicacion de funcionamiento final puede inicializar una o mas tareas de nivel de usuario o senalizar cada uno de los procesadores virtuales 84 para reanudar la ejecucion de sus respectivas listas de ejecucion 104. De esta manera, la tarea de indicacion de funcionamiento final cambia la fase de todas las tareas a la indicacion de funcionamiento (es decir, el tiempo de la senal de la senal de todo el sistema) de la tarea de indicacion de funcionamiento final. Las tareas de indicacion de funcionamiento 102 proporcionan por lo tanto una ventana de tiempo en la que se conoce el estado de cada procesador virtual 84. Las tareas pueden aprovechar esta ventana de tiempo para realizar operaciones de todo el sistema.
Por ejemplo, las tareas pueden establecer un gancho de tarea (por ejemplo, un puntero de memoria a una estructura de tarea en memoria) en cada una de las tareas de indicacion de funcionamiento 102. Tras recibir una senal desde la tarea de indicacion de funcionamiento final para un ciclo, cada una de las tareas indicacion de funcionamiento espera que la senal comience la ejecucion y ejecuta la tarea enganchada. La tarea enganchada, cuando se ejecuta por lo tanto de manera simultanea mediante cada uno de los procesadores virtuales 84, proporciona una operacion de todo el sistema. En algunos casos, la tarea de indicacion de funcionamiento final para el ciclo en solitario ejecuta la tarea enganchada. Esta tecnica puede ser util para escalar memoria, realizar operaciones de escritura y lectura de punto de comprobacion de base de datos u otras tareas periodicas tales como registro diario de base de datos, registro y archivo. Las tareas pueden esperar y senalizar unas a las otras usando, por ejemplo, monitores, memoria compartida o semaforos.
Algunas tareas en las listas de ejecucion 104 no relacionan datos en las caches 92 (u otra partition de memoria) y por lo tanto pueden ejecutarse en cualquiera de los procesadores virtuales 84. Tales tareas pueden incluir una bandera en la estructura de tarea que indica que la tarea es movible. Las tareas pueden auto-modificar la bandera despues de cada etapa para indicar si debe ejecutarse una siguiente etapa para la tarea en uno particular de los procesadores virtuales 84.
Para mejorar la utilizacion y reducir la congestion de los procesadores virtuales 84, las tareas se auto-equilibran para distribuir mas equitativamente un numero de tareas para cada una de las listas de ejecucion 104 y, por lo tanto, para cada uno de los procesadores virtuales 84. En algunos casos, despues de realizar cada etapa de una tarea, una tarea determina la longitud de la respectiva lista de ejecucion 104 y las longitudes de listas de ejecucion vecinas 104. Por ejemplo, una tarea puede determinar una longitud de (es decir, un numero de tareas almacenadas mediante) la lista de ejecucion 104B y las longitudes de las listas de ejecucion 104A, 104C despues de ejecutar una etapa de una tarea. Si la tarea determina que la longitud de la lista de ejecucion 104B supera la longitud de cualquiera de las listas de ejecucion 104A, 104C en un valor umbral, la tarea se migra a si misma, si es movible, a la mas corta de las listas de ejecucion 104A, 104C. En algunos casos, las tareas tienen en cuenta incluso vecinas mas remotas, es decir, no solamente vecinas mas cercanas, cuando se realiza el re-equilibrio. De esta manera, las tareas se auto-organizan de manera autonoma de una manera equilibrada migrandose a si mismas hacia procesadores virtuales 84 ligeramente cargados (y correspondientes nucleos). Las tareas pueden determinar longitudes de listas de ejecucion vecinas, por ejemplo, intercambiando las longitudes en mensaje o leyendo un valor de memoria compartida.
La Figura 6 es un diagrama de bloques que ilustra el planificador 100A invocando multiples tareas 120A-120K (“tareas 120”) de la lista de ejecucion 104A para realizar multiplexacion por division en el tiempo de tareas de acuerdo con las tecnicas descritas en esta divulgation. La lista de ejecucion 104A en este ejemplo se implementa e ilustra como una lista vinculada circular. Por consiguiente, la tarea 120A que es la tarea de cabecera de la lista de ejecucion 104A le sucede la tarea 120B. La tarea 120K es la tarea de cola de la lista de ejecucion 104A y le sucede la tarea 120A. Cada una de las tareas 120 incluye una lista de una o mas etapas para ejecucion. Por ejemplo, la tarea 120A enumera las etapas 120A1-120A5. Una etapa es un bloque auto-contenido de una o mas instrucciones, tal como una funcion o referencia de funcion, para ejecucion mediante el procesador virtual 84. Una etapa puede
5
10
15
20
25
30
35
40
45
50
55
60
65
invocar, como un elemento de ejecucion, otras funciones definidas mediante programas que se ejecutan en el sistema.
Las etapas de las tareas 120 pueden incluir numeros variables y tipos de instrucciones y por lo tanto tienen diferentes longitudes de ejecucion. En otras palabras, el tiempo requerido para ejecutar cada una de las etapas de las tareas 120 puede diferir de etapa a etapa. Las etapas de las tareas 120 se ejecutan atomicamente, es decir, desde la primera instruccion de la etapa hasta la ultima instruccion de la etapa sin interrupcion. Despues de completar una etapa de una de las tareas 120 en la lista de ejecucion 104A, el planificador 100A invoca la siguiente etapa para la siguiente de las tareas 120 en la lista de ejecucion. De esta manera, el planificador 100A que invoca unas diferentes de las tareas 120 realiza multiplexacion por division en el tiempo “segmentando en etapas” las tareas. Es decir, en contradiccion a “segmentar en tiempo” las tareas 120 de manera que a cada tarea se proporciona un corto periodo de tiempo por el nucleo durante el que la tarea puede ejecutar hasta reemplazarse, cada una de las tareas 120 continua ejecutandose hasta que la tarea ha completado una etapa. Segmentar en etapas por lo tanto asegura la atomicidad de las etapas de las tareas 120.
Cada una de las tareas 120 mantiene un puntero de memoria, Indice de etapa u otra referencia a la siguiente etapa para ejecucion en la tarea asociada. Cuando el planificador 100A invoca una tarea, la tarea ejecuta la siguiente etapa y a continuacion se pone en espera para devolver el control al planificador 100A, que invoca la siguiente tarea en la lista de ejecucion 104A. Por ejemplo, la tarea 120K ejecuta la etapa 120C2 de la tarea 120K y a continuacion devuelve el control al planificador 100A, que invoca la tarea 120A. La tarea 120A a continuacion ejecuta la etapa 120A3. En algunos casos, un unico subproceso de ejecucion ejecuta cada una de las tareas 120 usando las tecnicas de segmentacion en etapas anteriormente descritas. Sin embargo, el unico subproceso de ejecucion puede ponerse en espera despues de cada etapa, o despues de ejecutar una etapa para la tarea de cola 120K de la lista de ejecucion, por ejemplo, para permitir que se ejecuten subprocesos para tareas no de la lista de ejecucion.
Los planificadores detallados 100 posibilitan que los procesadores virtuales 84 ejecuten multiples transacciones de complejidad y duracion variables. En general, las transacciones pueden caracterizarse como modificar una base de datos (por ejemplo, las sentencias de SQL INSERT, DELETE y UPDATE) o como consultar la base de datos (por ejemplo, una sentencia de SQL SELECT). Estas transacciones pueden caracterizarse ademas de acuerdo con su duracion de ejecucion. Por ejemplo, una transicion que actualiza una unica fila puede considerarse una transaccion de ejecucion corta, mientras una transaccion que consulta toda la base de datos y/o realiza calculos complejos/extendidos puede considerarse una transaccion de ejecucion larga. Como un ejemplo adicional mas, una transaccion de consulta basandose en SELECT FUTURE (descrito a continuacion en mayor detalle) puede considerarse una transaccion de ejecucion de manera perpetua o “continua”. Los planificadores 100 pueden permitir intercalar la ejecucion, mediante los procesadores virtuales 84, de diversas combinaciones de transacciones de ejecucion, cortas, largas y de manera continua. En combinacion con la capacidad de escalar mas alla de los llmites de memoria flsica y a un numero arbitrario de nucleos, las tecnicas pueden soportar consultas ricas y complejas en mezclas de carga de trabajo que incluyen transacciones de duracion de ejecucion variable, particularmente en el contexto de grandes numeros de transacciones recibidas desde un gran numero de conexiones de cliente.
Las Figuras 7A-7B son diagramas de bloques que ilustran tareas de ejemplo que soportan la operation paralelizada de los aceleradores de datos transaccionales 13 de la Figura 1. Aunque se ilustran tareas como que pertenecen a grupos separados, por ejemplo, las tareas de red 140, cada una de las tareas opera sustancialmente independiente de otra como se describe en el presente documento.
Las tareas de red 140 soportan hacer de interfaz con clientes y posibilitan ademas la comunicacion entre multiples maquinas de agrupacion que cooperan para implementar uno o mas aceleradores 13. En este ejemplo, los conectores son la principal interfaz de comunicacion entre maquinas de agrupacion y entre un acelerador de datos transaccionales y uno o mas clientes. Una instancia de la tarea de respuesta de conector 140A que se ejecuta en una maquina independiente o una maquina de agrupacion escucha solicitudes de conexion de conector emitidas por clientes al sistema. Tras recibir una solicitud de conexion de conector, la tarea de respuesta de conector 140A produce nuevas instancias de la tarea de lectura de conector 140B y de la tarea de escritura de conector 140C especlficas para la solicitud de conexion de conector. La nueva tarea de lectura de conector 140B y la tarea de escritura de conector 140C cooperan para completar la toma de contacto de conexion de conector y establecer una conexion de conector. La nueva tarea de lectura de conector 140B escucha solicitudes de servicio desde el cliente correspondiente. De esta manera, las tareas individuales que pueden ejecutarse en paralelo mediante multiples nucleos implementan multiples puntos de conexion paralelos con el sistema. Las tecnicas pueden posibilitar por lo tanto que un unico sistema maneje cientos de miles de conexiones concurrentes.
La tarea de finalization aslncrona 140D soporta tareas de lectura de conector 140B y tareas de escritura de conector 140C posibilitando operaciones de envlo y reception de conector aslncronas y facilitando la entrada/salida (E/S) de solicitud/respuesta de cliente de alto rendimiento. Un sistema puede producir una nueva tarea de finalizacion aslncrona 140D para cada conexion de conector. Las maquinas de agrupacion pueden hacer de interfaz entre si usando las tareas de red 140. La tarea de interconexion de anfitrion 140F gestiona conexiones de conector entre instancias de procesador virtual en dos o mas maquinas de agrupacion de una agrupacion. Una instancia de la tarea de interconexion de anfitrion 140F se ejecuta en cada una de las maquinas de agrupacion para establecer
5
10
15
20
25
30
35
40
45
50
55
60
65
conexiones de conector entre instancias de procesador virtual. La tarea de interconexion de anfitrion 140F puede, por ejemplo, crear una malla completa de conectores continuamente conectados entre todos los procesadores virtuales de las agrupaciones que residen en maquinas de agrupacion separadas. Como alternativa, la tarea de interconexion de anfitrion 140F puede establecer conexiones entre tales procesadores virtuales segun sea necesario para ejecutar solicitudes de clientes y facilitar la eficacia del sistema. Para establecer una nueva conexion de conector, la tarea de interconexion de anfitrion 140F, en este ejemplo, produce una nueva instancia de la tarea de conexion de conector 140E para la nueva conexion de conector, que a su vez produce nuevas instancias de la tarea de escritura de conector 140C y de la tarea de lectura de conector 140B.
Las tareas de ejecucion de sentencias 142 incluyen tareas que representan realizaciones de ejemplo de las tareas anteriormente descritas con respecto a la Figura 3. Especlficamente, la tarea de compilador 142A, la tarea de ejecucion de sentencia 142B y la tarea de ejecucion subordinada 142 pueden representar realizaciones de ejemplo de la tarea de compilador 44, la tarea de ejecucion 46 y cualquiera de las tareas de ejecucion subordinadas 48, respectivamente.
La tarea de arranque de sistema 146A inicializa un sistema de acuerdo con parametros configurables y gestiona cargar al menos una porcion de la base de datos relacional en memoria 27 desde el almacenamiento persistente. La tarea de cierre de sistema 146B almacena datos de sistema, incluyendo datos configurados durante la operacion del sistema, a almacenamiento persistente para restauracion posterior. Ademas, la tarea de cierre de sistema 146B puede gestionar la escritura al menos una porcion de la base de datos relacional en memoria 27 al almacenamiento persistente.
La tarea de sentencia periodica 148A puede configurarse para ejecutar periodicamente una operacion. Por ejemplo, una instancia de la tarea de sentencia periodica 148A puede configurarse para borrar periodicamente, desde una tabla de registro, sentencias previamente ejecutadas grabadas para facilitar compatibilidad con ACID. Este ejemplo es una forma de mantenimiento que agiliza el sistema eliminando datos superfluos. La tarea definida por el usuario 148B puede configurarse con instrucciones de usuario para ejecutar aplicaciones de usuario personalizadas con respecto a la base de datos relacional en memoria 27. De esta manera, los clientes tienen acceso al modelo de ejecucion interna del sistema, y las tecnicas de esta divulgacion proporcionan un sistema altamente extensible al que los clientes pueden anadir tareas personalizadas. El modelo de tareas desvelado en el presente documento posibilita a los clientes y desarrolladores aumentar de manera incremental la sofisticacion del sistema anadiendo simplemente tareas adicionales.
El motor de paralelizacion 22 proporciona una gama de servicios internos. Este incluye gestion de sesion, gestion de transaccion, control de esquema, contenedores paralelizados, bloqueo, analisis, gestion de errores y generacion de codigo maquina dinamico. Estos pueden accederse mediante un kit de herramientas u otra interfaz de programacion de aplicacion (API) para modificar la operacion del motor de paralelizacion 22.
Las tareas de mantenimiento 144 administran recursos y administran el sistema. La tarea de recogida de residuos 144D realiza la recogida de residuos para recuperar memoria ocupada por objetos que ya no se hacen referencia por ningun proceso en el sistema. La tarea de recogida de residuos 144D es responsable de eliminar finalmente datos de campos de fila de estructuras (por ejemplo, Indices) de la base de datos relacional en memoria 27 y recuperar la memoria. La tarea de ejecucion de sentencia 142B elimina logicamente una fila desde la base de datos en respuesta a sentencias de borrado entrantes. Sin embargo, una vez que una fila se ha marcado como borrada logicamente, la tarea de ejecucion de sentencia 142B inserta un puntero a la fila borrada en una lista de filas a eliminar/recuperar mediante la tarea de recogida de residuos 144D. Una tarea o tareas de recogida de residuos 144D aplican el algoritmo de asignacion a cada fila para cada Indice de la base de datos relacional en memoria 27 que hace referencia a la fila. La tarea o tareas de recogida de residuos 144D eliminan la fila de cada Indice en que esta y a continuacion borran la estructura de fila, recuperando de esta manera la memoria que ocupaba la fila.
La tarea de indicacion de funcionamiento 144B y la tarea de alarma 144E pueden representar una realizacion de ejemplo de las tareas de indicacion de funcionamiento 102 de la Figura 5. Las instancias de la tarea de alarma 144E gestionan cada una un temporizador hardware y una lista de espera de un procesador virtual de acuerdo con las tecnicas descritas con respecto a la Figura 5. La tarea de licencia 144C asegura que el sistema esta operando con una licencia valida. La tarea de estadlstica 144F mide el rendimiento y otras metricas del sistema y comunica las estadlsticas mediante una instancia de tarea de escritura de conector 140C a una entidad de gestion. Por ejemplo, una instancia de tarea de estadlstica 144F puede cronometrar etapas ejecutadas por subprocesos, monitorizar el numero de tareas en el sistema, monitorizar el rendimiento de solicitud de cliente o tiempo de respuesta, y monitorizar una tasa de llegada de solicitud de cliente. La tarea de monitor 144A comprueba periodicamente el estado de todas las otras tareas en el sistema para informar errores/advertencias y para facilitar la correccion/manejo de errores.
Las tareas de disco 150 proporcionan compatibilidad de durabilidad para la base de datos relacional en memoria 27. La tarea de escritura de registro diario 150A escribe el estado para sentencias ejecutadas al registro diario de transaccion 152, un dispositivo de almacenamiento legible por ordenador. Tras un fallo de transaccion u otro fallo operacional relacionado con la base de datos, la tarea de lectura de registro diario 150C lee el estado escrito para
5
10
15
20
25
30
35
40
45
50
55
60
65
las sentencias anteriormente ejecutadas, y la tarea de restauracion de registro diario 150B restaura, si fuera necesario, el estado a la memoria para restaurar la base de datos relacional en memoria 27 a un estado conocido. Una instancia de la tarea de sentencia periodica 148A puede determinar periodicamente entradas de registro diario obsoletas y borrar tales entradas de un registro diario de transaccion 152.
Las tareas relacionadas con puntos de comprobacion persisten y restauran porciones de la base de datos relacional en memoria 27 a/desde el punto de comprobacion de sistema 154, un dispositivo de almacenamiento legible por ordenador. La tarea de toma de punto de comprobacion 150D determina una porcion de la memoria para escribir en disco y dirige la tarea de escritura de punto de comprobacion 150E para escribir la porcion como un punto de comprobacion en disco. En el caso de un fallo relacionado con la base de datos, la tarea de restauracion de punto de comprobacion 150F determina una porcion o porciones de memoria para restaurar desde puntos de comprobacion anteriormente escritos y dirige la tarea de lectura de punto de comprobacion 150G para leer los puntos de comprobacion y reinsertar los datos de punto de comprobacion a localizaciones de memoria apropiadas. Esto posibilita a la tarea de lectura de registro diario 150C leer y almacenar unicamente aquellas transacciones aplicadas despues de la tarea de toma de punto de comprobacion 150D almacenada en el punto de comprobacion al punto de comprobacion de sistema 154.
La tarea de escritura de pagina 150H y la tarea de lectura de pagina 150I paginan datos en memoria a almacenamiento secundario representado mediante el almacen de datos 156, un dispositivo de almacenamiento legible por ordenador, para escalar memoria utilizada mediante la base de datos relacional en memoria 27. La tarea de escritura de pagina 150H identifica elementos caducados (por ejemplo, filas) de objetos de base de datos en la base de datos relacional en memoria 27 y, tras identificar elementos caducados, escribe datos para los elementos caducados en el almacen de datos store 156. Ademas, la tarea de escritura de pagina 150H borra posteriormente los elementos caducados. Cuando una tarea que se ejecuta en el sistema requiere acceso a elementos escritos en el almacen de datos 156, la tarea de lectura de pagina 1501 lee los elementos del almacen de datos e inserta los datos para los elementos, usando transacciones, a la base de datos relacional en memoria 27.
La tarea de escritura de registro 150J registra operaciones de sistema al registro de sistema 158, un dispositivo de almacenamiento legible por ordenador. Las tareas de archivo 150K identifican entradas de registro diario y/o puntos de comprobacion que se hacen obsoletos por puntos de comprobacion posteriores y escriben los datos a almacenamiento terciario representado mediante el archivo 160, un dispositivo de almacenamiento legible por ordenador.
La Figura 8 es un diagrama de bloques que ilustra un acelerador de datos transaccionales 178 de ejemplo que escribe a multiples objetos de datos en paralelo de acuerdo con las tecnicas descritas en el presente documento. El acelerador de datos transaccionales 178 incluye los nucleos 185A-185D (“nucleos 185”). Los Indices 186, 188 son cada uno un Indice para un campo diferente de un objeto de tabla (no mostrado) de la base de datos relacional en memoria 27. Por ejemplo, el objeto de tabla puede incluir dos campos, ID_EMPLEADO y NOMBRE_EMPLEADO cada uno indexado mediante uno de los Indices separados 186, 188. Cada uno de los Indices parciales 186A-186D divide y almacena datos parciales para el Indice 186 de acuerdo con un algoritmo de asignacion. De manera similar, cada uno de los Indices parciales 1188A-188D divide y almacena datos parciales para el Indice 188 de acuerdo con el algoritmo de asignacion.
El cliente 180 emite al acelerador de datos transaccionales 178 una sentencia de solicitud que hace referencia a ambos campos en los que se indexan los Indices 186, 188. Por ejemplo, la sentencia de solicitud puede ser una sentencia de SQL INSERT, DELETE o UPDATE para respectivamente insertar, borrar o actualizar una fila en/del objeto de tabla en la que estan basados los Indices 186, 188. Como otro ejemplo, la sentencia de solicitud puede ser una sentencia de SQL SELECT para obtener todas las filas que coinciden con el criterio que hace referencia a ambos campos en los que se indexan los Indices 186,188. Por lo tanto, las tecnicas pueden permitir la paralelizacion de muchos tipos diferentes de operaciones de lenguaje declarativo (por ejemplo, SQL) para no unicamente consultar sino tambien para modificar una base de datos en memoria.
La tarea de ejecucion de sentencia 182 recibe, mediante una conexion de conector y una tarea de compilador (ninguna mostrada en la Figura 8), transacciones 181 que forman un plan de ejecucion para ejecutar la sentencia de solicitud desde el cliente 180. Las transacciones 181 incluyen una primera sub-transaccion para el Indice 186 y una segunda sub-transaccion para el Indice 188. La tarea de ejecucion de sentencia 182 produce las tareas de ejecucion subordinadas 183, 184 para ejecutar la primera y segunda sub-transacciones de las transacciones 181.
Por ejemplo, en el caso del ejemplo de la sentencia de SQL INSERT, anteriormente, la tarea de ejecucion de sentencia 182 crea en primer lugar y anade la nueva fila al objeto de tabla de acuerdo con datos de fila recibidos en la sentencia de solicitud. La tarea de ejecucion de sentencia 182 a continuacion realiza un algoritmo de asignacion usando el valor de campo de la fila para el campo en el que esta basado el Indice 186 y, basandose en la salida del algoritmo de asignacion, asigna el valor de campo al nucleo 185B. La tarea de ejecucion de sentencia 182 produce la tarea de ejecucion subordinada 183 al nucleo 185B y dirige la tarea producida para insertar una fila de Indice para los nuevos datos al Indice parcial 186B. La tarea de ejecucion subordinada 183 anade la fila de Indice al Indice
5
10
15
20
25
30
35
40
45
50
55
60
65
parcial 186B con un puntero de memoria a la nueva fila anadida a la tarea de ejecucion de sentencia 182 al objeto de tabla.
Ademas, la tarea de ejecucion de sentencia 182 realiza un algoritmo de asignacion usando el valor de campo de la fila para el campo en que esta basado el Indice 188 y, basandose en la salida del algoritmo de asignacion, asigna el valor de campo al nucleo 185D. La tarea de ejecucion de sentencia 182 produce la tarea de ejecucion subordinada 184 al nucleo 185D y dirige la tarea producida para insertar una fila de Indice para el nuevo dato al Indice parcial 188D. La tarea de ejecucion subordinada 184 anade la fila de Indice al Indice parcial 188D con un puntero de memoria a la nueva fila anadida a la tarea de ejecucion de sentencia 182 al objeto de tabla. De esta manera, las tareas de ejecucion subordinadas 183, 184 pueden ejecutarse concurrentemente y la insercion de nuevas filas de Indice a los Indices 186, 188 puede tener lugar en paralelo, en lugar de en serie. En algunos casos, las transacciones 181 pueden incluir sub-transacciones que producen cada una tareas para escribir a los Indices parciales 186. Por ejemplo, las transacciones 181 pueden incluir sub-transacciones para escribir a los respectivos Indices parciales 186B, 186D. Sin embargo, las tareas de ejecucion subordinadas 183, 184 pueden ejecutarse concurrentemente para modificar simultaneamente los Indices parciales 186B, 186D para el mismo objeto de base de datos, es decir, el Indice 186. Las tareas de ejecucion subordinadas 183, 184 devuelven datos y/o information de estado a la tarea de ejecucion de sentencia 182, que devuelve un resultado 189 al cliente 180 mediante una tarea de conexion de conector (no mostrada en la Figura 8).
La Figura 9 es un diagrama de bloques que ilustra un acelerador de datos transaccionales 190 de ejemplo que incluye maquinas de agrupacion 196A-196C (“maquinas de agrupacion 196”) que presentan una interfaz unificada para un cliente y escriben en estructuras de datos parciales de acuerdo con las tecnicas descritas en el presente documento. Cada una de las maquinas de agrupacion 196 incluye un nucleo 1, nucleo 2 y nucleo 3. Por ejemplo, la maquina de agrupacion 196A incluye el nucleo 196A1, 196A2 y 196A3. Las maquinas de agrupacion 196A, 196B ejecutan respectivas tareas de conexion de conectores 195A, 195B con las que hacer de interfaz para comunicar datos e informacion de tareas. Cada nucleo en las maquinas 196 del acelerador de datos transaccionales 190 incluye una estructura de datos parciales para el objeto de datos 194 de la base de datos relacional en memoria 27. Por ejemplo, el nucleo 196A1 incluye la estructura parcial 194A1 y el nucleo 196B2 incluye la estructura parcial 194B2.
El cliente 191 emite al acelerador de datos transaccionales 190 una sentencia de solicitud que hace referencia a datos para el objeto de datos 194. La tarea de ejecucion de sentencia 193 recibe, mediante una tarea de compilador (no mostrado), la transaction 192 que forma un plan de ejecucion para ejecutar la sentencia de solicitud desde el cliente 191. La tarea de ejecucion de sentencia 193 realiza un algoritmo de asignacion agrupado, tal como una funcion de troceo de agrupacion, usando los datos para la transaccion 192. El algoritmo de asignacion agrupado emite dos Indices, un primer Indice en la dimension de maquina y un segundo Indice en la dimension de nucleo. La tarea de ejecucion de sentencia 193 de esta manera usa el algoritmo de asignacion agrupado para identificar de manera determinlstica un nucleo apropiado de las maquinas 196 para ejecutar la transaccion 192.
En el ejemplo ilustrado, el algoritmo de asignacion agrupado emite el Indice de maquina 2 y el nucleo 2 para indicar que una tarea que opera en el nucleo 196B2 deberla ejecuta la transaccion 192. Puesto que tarea de ejecucion de sentencia 193 se ejecuta en la maquina 196A que no es la misma que la maquina 196B para el nucleo 196B2, la tarea de ejecucion de sentencia 193 establece una conexion de conector entre las maquinas 196A, 196B mediante respectivas tareas de conexion de conector 195A, 195B. La tarea de ejecucion de sentencia 193 a continuation produce la tarea de ejecucion subordinada 196 usando las tareas de conexion de conector 195, y la tarea de ejecucion subordinada 196 ejecuta la transaccion 192 en la estructura parcial 194B2 asociada con el nucleo 196B2. En algunos casos, la tarea de ejecucion subordinada 196 puede devolver un resultado de transaccion 192 a la tarea de ejecucion de sentencia 193 mediante las tareas de conexion de conector 195. La tarea de ejecucion de sentencia 193 puede producir la tarea de ejecucion subordinada 196 en la maquina 196B mediante, por ejemplo, poner en serie y enviar las etapas de la tarea mediante las tareas de conexion de conector 195. Las tareas de conexion de conector 195 por lo tanto actuan en este caso como un intermediario para la tarea de ejecucion de sentencia 193.
La Figura 10 ilustra un sistema de ejemplo 200 en que se usan las instancias del acelerador 13 como bloques de creation para formar una estructura en niveles para enviar iterativamente datos seleccionados a un gran numero de clientes individuales (usuarios) 201 y crear sesiones de difusion privadas interactivas (canales) en un flujo de datos de difusion en masa homogeneo.
En el ejemplo de la Figura 10, el sistema 200 incluye una pluralidad de aceleradores de datos transaccionales 13 dispuestos en una estructura de tres niveles que tiene el nivel de nucleo 202, el nivel de distribution 204 y el nivel de extremo 206. Los consumidores de datos 16, que pueden ser en el orden de millones de dispositivos, establecen cada uno una unica consulta 207 con los aceleradores de datos transaccionales 13 del nivel de extremo 206. A su vez, los aceleradores de datos transaccionales 13 del nivel de extremo 206 establecen cada uno consultas 209 con los aceleradores de datos transaccionales 13 del nivel de distribucion 204. Es decir, los motores de introduction de datos 26 en los aceleradores de datos transaccionales 13 del nivel de extremo 206 establecen conexiones con los motores de entrega de contenido 30 de los aceleradores de datos transaccionales 13 en el nivel de distribucion 204 y proporcionan consultas agregadas 209 a los motores de entrega de contenido, donde las consultas agregadas 209 son cada una un ejemplo de una transaccion agregada. Es decir, cada motor de entrega de contenido 30 en el nivel
5
10
15
20
25
30
35
40
45
50
55
60
65
de extremo 206 de los aceleradores de datos transaccionales 13 calcula una consulta agregada 209 que representa todos los datos especificados de las consultas especificas de cliente recibidas desde los consumidores de datos 16. En otras palabras, la consulta agregada 209 calculada mediante cada motor de entrega de contenido 30 en el nivel de distribucion 204 especifica una pluralidad de ajustes de condicion que corresponden a la condition especificada por los consumidores de datos 16 con los que el motor de entrega de contenido ha establecido conexiones.
En una realization de ejemplo, el motor de aceleracion de base de datos 30 de cada acelerador 13 presenta la API basada en SQL que se ha mejorado para permitir a los consumidores de datos 16 especificar facilmente consultas continuas. Por ejemplo, en una realizacion la API basada en SQL soporta un testigo opcional future para incluirse en cualquier sentencia select emitida para indicar que la consulta definida mediante la sentencia select se ha de aplicar continuamente a nuevos datos aun no recibidos. Por ejemplo, un primer consumidor de datos 16 puede emitir una consulta como sigue:
SELECT FUTURE stock_price, daily_volume FROM stock_table WHERE stock_symbol = ’IBM’ y un segundo consumidor de datos puede emitir una consulta como sigue:
SELECT FUTURE stock_price, daily_high FROM stock_table WHERE stock_symbol = 'GE'
En este caso, ambas consultas incluyen la nueva palabra clave que provoca que el motor de aceleracion de base de datos de reception 30 indique que trate la consulta como una consulta continua en lugar de una consulta de una vez. En este caso, una consulta agregada puede calcularse desde las consultas especificas de cliente como:
SELECT FUTURE stock_price, daily_volume, daily_high FROM stock_table WHERE stock_symbol = ’GE’ or
stock_symbol= ’IBM’.
A su vez, los motores de introduction de datos 26 de los aceleradores de datos transaccionales 13 del nivel de distribucion 204 establecen conexiones y proporcionan consultas agregadas 211 a los motores de entrega de contenidos 30 del acelerador 13 en el nivel de nucleo 202. El nivel de nucleo 202 representa una agrupacion de uno o mas aceleradores de datos transaccionales 13 que operan en un flujo de datos de transaction, como se ha descrito anteriormente, desde una o mas fuentes. Si tiene lugar un cambio de datos, los datos actualizados se envian automaticamente desde el nivel de nucleo 202 a aquellos consumidores de datos 16 para los que los datos actualizados coinciden con las condiciones definidas mediante la consulta del cliente 207. En cada nivel, los motores de entrega de contenido 30 distribuyen los datos a los motores de introduccion de datos 26 para alimentation de la base de datos en memoria masivamente paralela como se describe en el presente documento hasta que la actualizada se envia a los consumidores de datos 16. Las tecnicas de paralelizacion descritas en el presente documento permiten que este proceso sea extremadamente rapido. Por ejemplo, pueden soportarse millones de consumidores de datos 16 usando el ejemplo de estructura de tres niveles del sistema 200 de manera que puede enviarse continuamente datos cambiantes en el nivel de nucleo 202 a los consumidores de datos 16 en el orden de aproximadamente un milisegundo. Esto permite que los datos procesados en el nivel de nucleo 202 se ‘envien’ (entreguen) desde la base de datos en memoria como un flujo de datos dirigido a los consumidores de datos 16. Aunque se ha descrito con respecto a tres niveles, pueden usarse otros niveles. Por ejemplo, el ejemplo con cuatro niveles, los datos podrian enviarse a billones de consumidores de datos de una manera rentable y oportuna.
La Figura 11 ilustra un sistema de ejemplo 250 en que se usan instancias del acelerador 13 como bloques de creation para formar una estructura en niveles para recibir datos desde un gran numero de fuentes de datos individuales (usuarios) 251. Las fuentes de datos 12 pueden ser dispositivos informaticos de usuario final (por ejemplo, dispositivos moviles), sensores fisicos (por ejemplo, sensores acusticos para recoger datos desde ondas de choque o sensores de control de trafico para proporcionar datos en tiempo real de trafico que se mueve a traves de un gran area metropolitana) o cualquier dispositivo que produce datos. El sistema 250 proporciona una manera elegante y rentable para consumir y procesar datos desde grandes numeros de productores de datos.
En el ejemplo de la Figura 11, el sistema 250 incluye una pluralidad de aceleradores de datos transaccionales 13 dispuestos en una estructura en tres niveles que tiene el nivel de nucleo 252, el nivel de distribucion de entrada 254 y el nivel de extremo 256. Las fuentes de datos 12, que pueden ser en el orden de millones de dispositivos, establecen cada una conexiones con y envian datos transaccionales a los aceleradores de datos transaccionales 13 del nivel de extremo 256. A su vez, los aceleradores de datos transaccionales 13 del nivel de extremo 256 establecen cada uno conexiones con y envian datos a los aceleradores de datos transaccionales 13 del nivel de distribucion de entrada 254. Es decir, los motores de entrega de contenido 30 en los aceleradores de datos transaccionales 13 del nivel de extremo 206 establecen conexiones con los motores de introduccion de datos 26 del acelerador 13 en el nivel de distribucion de entrada 254 y proporcionan datos a los motores de introduccion de datos 26. A su vez, los motores de entrega de contenido 30 de los aceleradores de datos transaccionales 13 del nivel de distribucion de entrada 254 establecen conexiones y proporcionan datos a los motores de introduccion de datos 26 de los aceleradores de datos transaccionales 13 en el nivel de nucleo 252. El nivel de nucleo 252 representa, una agrupacion de uno o mas aceleradores de datos transaccionales 13 que operan en datos de transaccion como se ha descrito anteriormente. El nivel de nucleo 252 puede procesar y emitir los datos recibidos a almacenes de datos o
5
10
15
20
25
30
35
40
45
50
55
60
65
clientes interesados que usan canales de difusion privados como se describe con respecto al sistema 200 de la Figura 10.
La Figura 12 es un diagrama de bloques que ilustra un sistema de ejemplo que utiliza las tecnicas descritas en el presente documento para proporcionar aceleracion de datos transaccionales de alto rendimiento. Los caracteres de referencia similares se usan para indicar elementos similares de la Figura 1. En el sistema de ejemplo 300 de la Figura 12, como en el sistema de ejemplo 10 de la Figura 1, un conjunto de aceleradores de datos transaccionales 13A-13N (colectivamente, “aceleradores de datos transaccionales 13”) se organizan para formar una agrupacion 11 de aceleradores de datos. Los aceleradores de datos transaccionales operan para introducir continuamente y procesar grandes cantidades de transacciones de datos desde las fuentes de datos 12 y entregar los datos procesados a las fuentes de datos 16. Las fuentes de datos 12 y el consumidor de datos 16 pueden ser cualquiera que origine o consuma datos, tales como sistemas, aplicaciones o bases de datos.
En este ejemplo, los consumidores de datos 16 responden para difundir datos entregados mediante los aceleradores de datos transaccionales 13. Las respuestas a datos de difusion desde los consumidores de datos 16 representan datos para las fuentes de datos 12, que se introducen mediante los aceleradores de datos transaccionales 13, se procesan y usan para entregar datos refinados, agregados procesados de otra manera a los consumidores de datos 16. Aunque las operaciones de los aceleradores de datos transaccionales 13 pueden ser sustancialmente similares en tanto el sistema 10 de la Figura 1 como el sistema 300 de la Figura 12, el sistema 300 implica un “bucle de realimentacion” de datos de difusion en tiempo real (o cercano a tiempo real) y respuestas de datos de difusion y por lo tanto ilustra que las tecnicas de esta divulgacion, como se implementan mediante los aceleradores de datos transaccionales 13, pueden aplicarse para acelerar la entrega interactiva de resultados de consulta activados por usuario y otras aplicaciones interactivas.
Las tecnicas descritas en esta divulgacion pueden implementarse, al menos en parte, en hardware, software, firmware o cualquier combinacion de los mismos. Por ejemplo, diversos aspectos de las tecnicas descritas pueden implementarse en uno o mas procesadores, incluyendo uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especlficos de la aplicacion (ASIC), campos de matrices de puertas programables (FPGA) o cualquier otra circuiterla logica integrada o discreta equivalente, as! como cualquier combinacion de tales componentes. El termino “procesador” o “circuiterla de procesamiento” puede referirse en general a cualquiera de la circuiterla logica anterior, en solitario o en combinacion con otra circuiterla logica, o cualquier otra circuiterla equivalente. Una unidad de control que comprende hardware puede realizar tambien una o mas de las tecnicas de esta divulgacion.
Tal hardware, software y firmware pueden implementarse en el mismo dispositivo o en dispositivos separados para soportar las diversas operaciones y funciones descritas en esta divulgacion. Ademas, cualquiera de las unidades descritas, modulos o componentes pueden implementarse juntos o por separado como dispositivos de logica discreta pero interoperables. La representacion de diferentes caracterlsticas como modulos o unidades se pretende para destacar diferentes aspectos funcionales y no implica necesariamente que tales modulos o unidades deben realizarse mediante hardware separado o componentes de software. En su lugar, la funcionalidad asociada con uno o mas modulos o unidades puede realizarse mediante hardware separado o componentes de software, o integrarse en componentes de hardware o software comunes o separados.
Las tecnicas descritas en esta divulgacion pueden realizarse o codificarse tambien en un medio legible por ordenador, tal como un medio legible por ordenador no transitorio o medio o dispositivo de almacenamiento legible por ordenador que contiene instrucciones. Las instrucciones realizadas o codificadas en un medio legible por ordenador pueden provocar que un procesador programable, u otro procesador, realice el metodo, por ejemplo, cuando se ejecutan las instrucciones. El medio de almacenamiento legible por ordenador puede incluir memoria de acceso aleatorio (RAM), memoria de solo lectura (ROM), memoria de solo lectura programable (PROM), memoria de solo lectura programable borrable (EPROM), memoria de solo lectura electronicamente programable borrable (EEPROM), memoria flash, un disco duro, un CD-ROM, un disco flexible, un casete, medio magnetico, medio optico u otro medio de almacenamiento legible por ordenador. Deberla entenderse que la expresion “medio de almacenamiento legible por ordenador” se refiere a medio de almacenamiento flsico, y no senales u ondas portadora, aunque la expresion “medio legible por ordenador” puede incluir medio transitorio tal como senales, ademas de medio de almacenamiento flsico.
En un ejemplo, un dispositivo comprende un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion y una pluralidad de maquinas virtuales que opera cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las maquinas virtuales se ejecuta en uno diferente de los nucleos de ejecucion. El dispositivo comprende tambien una base de datos en memoria que comprende datos almacenados en una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion. El dispositivo comprende tambien una pluralidad de tareas que se ejecutan en las maquinas virtuales para descomponer una transaccion entrante para la base de datos en memoria en sub- transacciones, desplegar las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecutar concurrentemente las sub-transacciones de la transaccion entrante en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
5
10
15
20
25
30
35
40
45
50
55
60
65
En otro ejemplo, un metodo comprende ejecutar una pluralidad de maquinas virtuales que operan cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las maquinas virtuales se ejecuta en uno diferente de una pluralidad de nucleos de ejecucion de un procesador hardware multi-nucleo de un dispositivo informatico. El metodo comprende tambien asociar a uno diferente de los nucleos de ejecucion con cada una de una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria almacena datos para una base de datos en memoria. El metodo comprende tambien ejecutar una pluralidad de tareas con las maquinas virtuales, en el que la pluralidad de tareas descompone una transaccion entrante para la base de datos en memoria en sub-transacciones, desplegar las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecutar concurrentemente las sub- transacciones de la transaccion entrante en los respectivos nucleos de ejecucion a los que se despliegan las sub- transacciones.
En otro ejemplo, un dispositivo de almacenamiento legible por ordenador que comprende instrucciones que, cuando se ejecutan, provocan que un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion ejecute una pluralidad de maquinas virtuales que opera cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las maquinas virtuales se ejecuta en uno diferente de la pluralidad de nucleos de ejecucion, asociar uno diferente de los nucleos de ejecucion con cada una de una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria almacena datos para una base de datos en memoria, y ejecutar una pluralidad de tareas con las maquinas virtuales, en el que la pluralidad de tareas descompone una transaccion entrante para la base de datos en memoria en sub-transacciones, desplegar las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub- transacciones, y ejecutar concurrentemente las sub-transacciones de la transaccion entrante en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
En otro ejemplo, un dispositivo comprende un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion. El dispositivo comprende tambien una base de datos en memoria que comprende datos almacenados en una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion, y un motor de entrega de contenido que configura una pluralidad de canales de datos privados para entregar cada uno datos unicos a uno correspondiente de una pluralidad de consumidores de datos. El dispositivo comprende tambien un motor de paralelizacion que despliega una pluralidad de tareas para ejecutar concurrentemente en los nucleos para realizar concurrentemente transacciones en la base de datos en memoria en respuesta a consultas desde el motor de entrega de contenido.
En otro ejemplo, un metodo comprende configurar, con un motor de entrega de contenido, una pluralidad de canales de datos privados para entregar cada uno datos unicos a uno correspondiente de una pluralidad de consumidores de datos. El metodo comprende tambien desplegar, con un motor de paralelizacion que se ejecuta en un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion, una pluralidad de tareas para ejecutar concurrentemente en los nucleos para realizar concurrentemente transacciones en una base de datos en memoria en respuesta a consultas desde el motor de entrega de contenido, en el que la base de datos en memoria comprende datos almacenados en una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion.
En otro ejemplo, un dispositivo de almacenamiento legible por ordenador comprende instrucciones que, cuando se ejecutan, provocan que un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion configure, con un motor de entrega de contenido, una pluralidad de canales de datos privados para entregar cada uno datos unicos a uno correspondiente de una pluralidad de consumidores de datos, y desplegar, con un motor de paralelizacion, una pluralidad de tareas para ejecutar concurrentemente en los nucleos para realizar concurrentemente transacciones en una base de datos en memoria en respuesta a consultas desde el motor de entrega de contenido, en el que la base de datos en memoria comprende datos almacenados en una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion.
En otro ejemplo, un dispositivo comprende un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion y una base de datos en memoria que comprende datos almacenados en una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion. El dispositivo comprende tambien un motor de introduccion de datos que establece una pluralidad de conexiones de red concurrentes a los dispositivos externos para recibir transacciones entrantes. El dispositivo comprende tambien un motor de paralelizacion que descompone transacciones entrantes para la base de datos en memoria en sub-transacciones, despliega las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecuta concurrentemente las sub-transacciones de las transacciones entrantes en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
En otro ejemplo, un metodo comprende establecer una pluralidad de conexiones de red concurrentes a dispositivos externos con un motor de introduccion de datos, y recibir transacciones entrantes con el motor de introduccion de
datos mediante las conexiones de red concurrentes. El metodo comprende tambien descomponer, con un motor de paralelizacion que se ejecuta en un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion, transacciones entrantes para una base de datos en memoria en sub-transacciones, en el que la base de datos en memoria comprende datos almacenados en una pluralidad de particiones de memoria, en el que cada una 5 de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion. El metodo comprende tambien desplegar, con el motor de paralelizacion, las sub-transacciones a los nucleos de ejecucion asociados con respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecutar concurrentemente las sub-transacciones de las transacciones entrantes en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
10
En otro ejemplo, un dispositivo de almacenamiento legible por ordenador comprende instrucciones que, cuando se ejecutan, provocan que un procesador hardware multi-nucleo que tiene una pluralidad de nucleos de ejecucion establezcan una pluralidad de conexiones de red concurrentes a dispositivos externos con un motor de introduccion de datos, recibir transacciones entrantes con el motor de introduccion de datos mediante las conexiones de red 15 concurrentes. Las instrucciones, cuando se ejecutan, producen tambien que el procesador hardware multi-nucleo descomponga, con un motor de paralelizacion, transacciones entrantes para una base de datos en memoria en sub- transacciones, en el que la base de datos en memoria comprende datos almacenados en una pluralidad de particiones de memoria, en el que cada una de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion, despliegue, con el motor de paralelizacion, las sub-transacciones a los nucleos de ejecucion 20 asociados con respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecute concurrentemente las sub-transacciones de las transacciones entrantes en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
Claims (15)
- 5101520253035404550556065REIVINDICACIONES1. Un metodo que comprende:ejecutar una pluralidad de maquinas virtuales (20) que operan cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las maquinas virtuales se ejecuta en uno diferente de una pluralidad de nucleos de ejecucion (52) de un procesador hardware multi-nucleo (24) de un dispositivo informatico (13); asociar uno diferente de los nucleos de ejecucion con cada una de una pluralidad de particiones de memoria (51), en el que cada una de las particiones de memoria almacena datos para una base de datos en memoria (27); yejecutar una pluralidad de tareas con las maquinas virtuales, en el que la pluralidad de tareas descomponen una transaccion entrante para la base de datos en memoria en sub-transacciones, desplegar las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub-transacciones, y ejecutar concurrentemente las sub-transacciones de la transaccion entrante en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
- 2. El metodo de la reivindicacion 1, que comprende ademas:aplicar, con una tarea de ejecucion de sentencia en una de las maquinas virtuales, un algoritmo de asignacion a las sub-transacciones para identificar los respectivos nucleos de ejecucion asociados con las particiones que almacenan datos para las sub-transacciones,en el que la tarea de ejecucion de sentencia produce y despliega, para cada una de las sub-transacciones, una tarea de sub-ejecucion para ejecutar la sub-transaccion en el nucleo identificado de los nucleos de ejecucion para la sub-transaccion, en el que las tareas de sub-ejecucion para las correspondientes sub-transacciones se ejecutan concurrentemente en las maquinas virtuales.
- 3. El metodo de la reivindicacion 2,en el que la tarea de ejecucion de sentencia aplica el algoritmo de asignacion a una pluralidad de datos referenciados mediante la transaccion entrante,en el que el algoritmo de asignacion identifica uno diferente de los nucleos de ejecucion para cada uno de la pluralidad de datos referenciados mediante la transaccion entrante,en el que cada una de las sub-transacciones comprende una transaccion para uno correspondiente de la pluralidad de datos referenciados mediante la transaccion entrante, y en el que la tarea de ejecucion de sentencia produce una tarea de sub-ejecucion al uno identificado de los nucleos de ejecucion para cada uno de la pluralidad de datos para ejecutar la sub-transaccion correspondiente.
- 4. El metodo de cualquiera de las reivindicaciones 2-3,en el que la tarea de ejecucion de sentencia aplica una gramatica transaccional y un esquema a la transaccion entrante para generar sub-transacciones que comprende cada una etapas de una biblioteca de etapas, en el que el esquema que describe objetos de base de datos de la base de datos en memoria, en el que la biblioteca de etapas comprende una o mas etapas especificando cada una instrucciones ejecutables por la pluralidad de nucleos, yen el que la gramatica transaccional describe un lenguaje al que se ajusta la transaccion entrante y comprende una o mas reglas de sustitucion que hacen referencia a etapas de la biblioteca de etapas.
- 5. El metodo de cualquiera de las reivindicaciones 1-4, en el que las maquinas virtuales ejecutan aslncronamente la pluralidad de tareas, comprendiendo el metodo ademas:ejecutar una tarea de indicacion de funcionamiento en cada una de las maquinas virtuales de acuerdo con un periodo definido para provocar, tras la ejecucion de la tarea de indicacion de funcionamiento, que la maquina virtual correspondiente espere para ejecutar cualquier tarea adicional hasta que la maquina virtual correspondiente reciba una senal.
- 6. El metodo de la reivindicacion 5,en el que la tarea de indicacion de funcionamiento comprende un gancho de tarea que especifica una tarea enganchada,en el que una de las maquinas virtuales ejecuta la tarea enganchada, yen el que la una de las maquinas virtuales envla la senal a las otras maquinas virtuales despues de finalizar la tarea enganchada.
- 7. El metodo de la reivindicacion 6, en el que la tarea enganchada comprende una tarea de punto de comprobacion que, cuando se ejecuta, genera y almacena un punto de comprobacion para la base de datos en memoria.
- 8. El metodo de cualquiera de las reivindicaciones 1-7,en el que cada una de las maquinas virtuales comprende un planificador para el nucleo de ejecucion correspondiente, y en el que cada uno de los planificadores mantiene una estructura de datos de lista de ejecucion510152025303540455055separada que almacena una referenda a tareas planificadas para ejecucion mediante el uno correspondiente de la pluralidad de nucleos de ejecucion.
- 9. El metodo de la reivindicacion 8, en el que cada una de las maquinas virtuales incluye una estructura de datos de cola cruzada que almacena referencias a tareas migradas a la maquina virtual mediante un planificador de una diferente de las maquinas virtuales.
- 10. El metodo de la reivindicacion 9, en el que un planificador de una primera de las maquinas virtuales pone en cola una referencia a una primera tarea a la estructura de datos de cola cruzada de una segunda de las maquinas virtuales mientras la segunda maquina virtual ejecuta simultaneamente una segunda tarea referenciada en la lista de ejecucion mantenida mediante el planificador de la segunda maquina virtual.
- 11. El metodo de cualquiera de las reivindicaciones 1-10,en el que cada una de las maquinas virtuales define una estructura de datos de lista de espera que almacena referencias a tareas en espera ordenadas mediante tiempo de espera restante para las tareas en espera, y en el que cada uno de la pluralidad de nucleos de ejecucion comprende un temporizador, comprendiendo el metodo ademas:ejecutar una tarea de alarma en cada una de las maquinas virtuales para establecer un tiempo de expiracion para el temporizador para el nucleo de ejecucion correspondiente basandose al menos en el tiempo de espera restante mas pequeno para la tarea en espera de la estructura de datos de lista de espera de la maquina virtual, en el que la expiracion del temporizador provoca que la tarea de alarma active la siguiente tarea en espera de la lista de espera.
- 12. El metodo de cualquiera de las reivindicaciones 1-11, que comprende ademas:recibir, con un motor de entrega de contenido para el dispositivo informatico, una primera transaccion que solicita primeros datos y una segunda transaccion que solicita segundos datos;calcular, con el motor de entrega de contenido, una transaccion agregada que solicita el primer dato y el segundo dato; yemitir la transaccion agregada a otro dispositivo.
- 13. El metodo de la reivindicacion 12, que comprende ademas:recibir, con el motor de entrega de contenido, una transaccion agregada que solicita primeros datos y segundos datos;dirigir el motor de paralelizacion para ejecutar una transaccion agregada para agregar el primer dato y el segundo dato; yemitir, con el motor de entrega de contenido, el primer dato y el segundo dato agregados mediante el motor de paralelizacion en respuesta a la transaccion agregada.
- 14. Un dispositivo (13) que comprende:un procesador hardware multi-nucleo (24) que tiene una pluralidad de nucleos de ejecucion (52); una pluralidad de maquinas virtuales (20) que operan cada una de acuerdo con un conjunto de instrucciones virtual, en el que cada una de las maquinas virtuales se ejecuta en uno diferente de los nucleos de ejecucion; una base de datos en memoria (27) que comprende datos almacenados en una pluralidad de particiones de memoria (51), en el que cada una de las particiones de memoria esta asociada con uno diferente de los nucleos de ejecucion; yuna pluralidad de las tareas que se ejecutan en las maquinas virtuales para descomponer una transaccion entrante para la base de datos en memoria en sub-transacciones, desplegar las sub-transacciones a los nucleos de ejecucion asociados con las respectivas particiones de memoria que almacenan datos para las sub- transacciones, y ejecutar concurrentemente las sub-transacciones de la transaccion entrante en los respectivos nucleos de ejecucion a los que se despliegan las sub-transacciones.
- 15. Un medio de almacenamiento legible por ordenador codificado con instrucciones que, cuando se ejecutan en un procesador hardware multi-nucleo (24), provocan que dicho procesador (24) realice el metodo de cualquiera de las reivindicaciones 1-13.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161497860P | 2011-06-16 | 2011-06-16 | |
| US201161497860P | 2011-06-16 | ||
| PCT/US2012/042807 WO2012174471A1 (en) | 2011-06-16 | 2012-06-15 | Software virtual machine for acceleration of transactional data processing |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2555275T3 true ES2555275T3 (es) | 2015-12-30 |
Family
ID=47354821
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES12732904.3T Active ES2555275T3 (es) | 2011-06-16 | 2012-06-15 | Máquina virtual de software para aceleración de procesamiento de datos transaccionales |
Country Status (6)
| Country | Link |
|---|---|
| US (3) | US8381224B2 (es) |
| EP (1) | EP2721489B1 (es) |
| CN (1) | CN103930875B (es) |
| AU (1) | AU2012271352B2 (es) |
| ES (1) | ES2555275T3 (es) |
| WO (1) | WO2012174471A1 (es) |
Families Citing this family (91)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DK3002888T3 (en) | 2010-06-23 | 2017-09-04 | ERICSSON TELEFON AB L M (publ) | HANDLING OF REFERENCE SIGNAL INTERFERENCE IN DEPLOYMENTS OF HETEROGENIC NETWORKS |
| US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
| US8862613B2 (en) * | 2010-07-30 | 2014-10-14 | Sap Ag | Extensibility of business process and application logic |
| US8682925B1 (en) | 2013-01-31 | 2014-03-25 | Splunk Inc. | Distributed high performance analytics store |
| US8788525B2 (en) | 2012-09-07 | 2014-07-22 | Splunk Inc. | Data model for machine data for semantic search |
| US20150019537A1 (en) | 2012-09-07 | 2015-01-15 | Splunk Inc. | Generating Reports from Unstructured Data |
| US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
| US9092747B2 (en) * | 2012-09-27 | 2015-07-28 | International Business Machines Corporation | Statement of work analysis and resource participation assessment |
| US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
| US9081597B2 (en) * | 2012-11-27 | 2015-07-14 | Red Hat Israel, Ltd. | Database change compensation after a transaction commit |
| FR3001816B1 (fr) * | 2013-02-05 | 2015-03-06 | Thales Sa | Systeme de processeur multi-utilisateurs de traitement d'informations |
| US9135126B2 (en) * | 2013-02-07 | 2015-09-15 | International Business Machines Corporation | Multi-core re-initialization failure control system |
| US20140258212A1 (en) * | 2013-03-06 | 2014-09-11 | Sap Ag | Dynamic in-memory database search |
| US20140280220A1 (en) * | 2013-03-13 | 2014-09-18 | Sas Institute Inc. | Scored storage determination |
| US9626231B2 (en) | 2013-05-13 | 2017-04-18 | Sap Se | Database dispatcher |
| US9116953B2 (en) | 2013-05-17 | 2015-08-25 | Sap Se | Calculation engine with dynamic partitioning of intermediate results |
| US20140358848A1 (en) * | 2013-05-28 | 2014-12-04 | Unisys Corporation | Interconnect partition binding api, allocation and management of application-specific partitions |
| US9063710B2 (en) * | 2013-06-21 | 2015-06-23 | Sap Se | Parallel programming of in memory database utilizing extensible skeletons |
| DE102013108579A1 (de) * | 2013-08-08 | 2015-02-12 | Fujitsu Technology Solutions Intellectual Property Gmbh | Hauptspeicherdatenbanksystem und Verfahren zum Ausführen von Abfragen unter Verwendung von unabhängigen Prozessräumen |
| US9843540B2 (en) * | 2013-08-26 | 2017-12-12 | Vmware, Inc. | Traffic and load aware dynamic queue management |
| US20150121374A1 (en) * | 2013-10-30 | 2015-04-30 | Alistair Black | Application Processing Systems and Methods |
| US9495204B2 (en) | 2014-01-06 | 2016-11-15 | International Business Machines Corporation | Constructing a logical tree topology in a parallel computer |
| US10310903B2 (en) * | 2014-01-17 | 2019-06-04 | Red Hat, Inc. | Resilient scheduling of broker jobs for asynchronous tasks in a multi-tenant platform-as-a-service (PaaS) system |
| US9842152B2 (en) | 2014-02-19 | 2017-12-12 | Snowflake Computing, Inc. | Transparent discovery of semi-structured data schema |
| EP2916511B1 (en) * | 2014-03-07 | 2020-02-12 | Airbus Opérations SAS | High assurance security gateway interconnecting different domains |
| US9477481B2 (en) | 2014-06-27 | 2016-10-25 | International Business Machines Corporation | Accurate tracking of transactional read and write sets with speculation |
| US9772944B2 (en) | 2014-06-27 | 2017-09-26 | International Business Machines Corporation | Transactional execution in a multi-processor environment that monitors memory conflicts in a shared cache |
| US9658961B2 (en) | 2014-06-27 | 2017-05-23 | International Business Machines Corporation | Speculation control for improving transaction success rate, and instruction therefor |
| US9703718B2 (en) | 2014-06-27 | 2017-07-11 | International Business Machines Corporation | Managing read tags in a transactional memory |
| US9740614B2 (en) | 2014-06-27 | 2017-08-22 | International Business Machines Corporation | Processor directly storing address range of co-processor memory accesses in a transactional memory where co-processor supplements functions of the processor |
| US10114752B2 (en) | 2014-06-27 | 2018-10-30 | International Business Machines Corporation | Detecting cache conflicts by utilizing logical address comparisons in a transactional memory |
| US9720837B2 (en) | 2014-06-27 | 2017-08-01 | International Business Machines Corporation | Allowing non-cacheable loads within a transaction |
| US10025715B2 (en) | 2014-06-27 | 2018-07-17 | International Business Machines Corporation | Conditional inclusion of data in a transactional memory read set |
| US10073784B2 (en) | 2014-06-27 | 2018-09-11 | International Business Machines Corporation | Memory performance when speculation control is enabled, and instruction therefor |
| US10013351B2 (en) | 2014-06-27 | 2018-07-03 | International Business Machines Corporation | Transactional execution processor having a co-processor accelerator, both sharing a higher level cache |
| US10331649B2 (en) * | 2014-06-29 | 2019-06-25 | Microsoft Technology Licensing, Llc | Transactional access to records on secondary storage in an in-memory database |
| US9600286B2 (en) | 2014-06-30 | 2017-03-21 | International Business Machines Corporation | Latent modification instruction for transactional execution |
| US9336047B2 (en) | 2014-06-30 | 2016-05-10 | International Business Machines Corporation | Prefetching of discontiguous storage locations in anticipation of transactional execution |
| US9710271B2 (en) | 2014-06-30 | 2017-07-18 | International Business Machines Corporation | Collecting transactional execution characteristics during transactional execution |
| US9348643B2 (en) | 2014-06-30 | 2016-05-24 | International Business Machines Corporation | Prefetching of discontiguous storage locations as part of transactional execution |
| US9448939B2 (en) | 2014-06-30 | 2016-09-20 | International Business Machines Corporation | Collecting memory operand access characteristics during transactional execution |
| US10108445B2 (en) * | 2014-09-22 | 2018-10-23 | The Boeing Company | Parallelization in virtual machine operation |
| US9678834B2 (en) * | 2014-10-20 | 2017-06-13 | Ab Initio Technology, Llc | Recovery and fault-tolerance under computational indeterminism |
| US10701151B2 (en) * | 2014-10-27 | 2020-06-30 | Netapp, Inc. | Methods and systems for accessing virtual storage servers in a clustered environment |
| US10803030B2 (en) * | 2014-11-14 | 2020-10-13 | Sap Se | Asynchronous SQL execution tool for zero downtime and migration to HANA |
| CN104506447A (zh) * | 2015-01-13 | 2015-04-08 | 武汉大学 | 一种适合深度并行数据处理的无线Mesh网路由节点装置 |
| US9619153B2 (en) | 2015-03-17 | 2017-04-11 | International Business Machines Corporation | Increase memory scalability using table-specific memory cleanup |
| US9893947B2 (en) | 2015-06-26 | 2018-02-13 | International Business Machines Corporation | Transactional orchestration of resource management and system topology in a cloud environment |
| US10049041B2 (en) * | 2015-07-30 | 2018-08-14 | EMC IP Holding Company LLC | Memory centric database architecture |
| CN106528188B (zh) * | 2015-09-09 | 2019-08-30 | 腾讯科技(深圳)有限公司 | 一种应用加速方法及装置 |
| CN105391597A (zh) * | 2015-11-06 | 2016-03-09 | 国网浙江省电力公司电力科学研究院 | 基于多服务器仿真的雪崩测试的方法、装置及系统 |
| CN105491021A (zh) * | 2015-11-24 | 2016-04-13 | 华东师范大学 | 一种Android云应用服务器及Android云应用服务器系统 |
| US9880823B1 (en) | 2016-09-14 | 2018-01-30 | International Business Machines Corporation | Method for translating multi modal execution dependency graph with data interdependencies to efficient application on homogenous big data processing platform |
| US10318348B2 (en) * | 2016-09-23 | 2019-06-11 | Imagination Technologies Limited | Task scheduling in a GPU |
| GB2554392B (en) | 2016-09-23 | 2019-10-30 | Imagination Tech Ltd | Task scheduling in a GPU |
| WO2018103565A1 (en) * | 2016-12-09 | 2018-06-14 | Zhejiang Dahua Technology Co., Ltd. | Methods and systems for data transmission |
| CN108287854B (zh) * | 2017-01-10 | 2021-06-22 | 网宿科技股份有限公司 | 一种流计算中数据持久化的方法和系统 |
| US10268524B2 (en) * | 2017-01-31 | 2019-04-23 | Moj.Io Inc. | Processing telemetry data streams based on an operating state of the data source |
| US11513828B1 (en) * | 2017-04-03 | 2022-11-29 | Parallels International Gmbh | System and method for rapid cloning of virtual machines under load balancing |
| US10296425B2 (en) | 2017-04-20 | 2019-05-21 | Bank Of America Corporation | Optimizing data processing across server clusters and data centers using checkpoint-based data replication |
| US10445295B1 (en) * | 2017-07-28 | 2019-10-15 | EMC IP Holding Company LLC | Task-based framework for synchronization of event handling between nodes in an active/active data storage system |
| CN107566460B (zh) * | 2017-08-16 | 2020-06-05 | 微梦创科网络科技(中国)有限公司 | 分布式部署计划任务的方法和系统 |
| US11080303B2 (en) | 2017-09-08 | 2021-08-03 | Bank Of America Corporation | System and method of multiprotocol publisher and subscriber services |
| US10599453B1 (en) * | 2017-09-25 | 2020-03-24 | Amazon Technologies, Inc. | Dynamic content generation with on-demand code execution |
| US10666708B1 (en) * | 2018-02-21 | 2020-05-26 | Facebook, Inc. | Systems and methods for updating web pages using static resource version pinning |
| US11609934B2 (en) * | 2018-04-24 | 2023-03-21 | Sap Se | Notification framework for document store |
| CN109445847B (zh) * | 2018-07-09 | 2021-09-17 | 北京东土科技股份有限公司 | 工业服务器微内核架构实现方法 |
| US10872004B2 (en) * | 2018-11-15 | 2020-12-22 | Intel Corporation | Workload scheduling and coherency through data assignments |
| US11308119B2 (en) * | 2018-12-03 | 2022-04-19 | International Business Machines Corporation | Replicating large statements with low latency |
| CN111324427B (zh) * | 2018-12-14 | 2023-07-28 | 深圳云天励飞技术有限公司 | 一种基于dsp的任务调度方法及装置 |
| CN109739482B (zh) * | 2018-12-28 | 2022-04-15 | 杭州东信北邮信息技术有限公司 | 一种基于动态语言的业务逻辑执行系统及方法 |
| US11204829B2 (en) * | 2019-03-26 | 2021-12-21 | Innogrit Technologies Co., Ltd. | Systems and methods for an ECC architecture with prioritized task queues |
| US11061856B2 (en) | 2019-07-03 | 2021-07-13 | Bank Of America Corporation | Data ingestion system |
| US11501295B2 (en) * | 2019-07-24 | 2022-11-15 | Advanced New Technologies Co., Ltd. | Object distribution processing |
| US11176158B2 (en) | 2019-07-31 | 2021-11-16 | International Business Machines Corporation | Intelligent use of extraction techniques |
| US11221973B2 (en) * | 2019-12-20 | 2022-01-11 | Micron Technology, Inc. | Parallel iterator for machine learning frameworks |
| JP7302885B2 (ja) * | 2019-12-30 | 2023-07-04 | ティーエムアールダブリュー ファウンデーション アイピー エスエーアールエル | 仮想世界または現実世界の多次元3dエンジンコンピューティングおよび仮想化ベースの動的負荷分散 |
| US11520796B2 (en) * | 2020-04-14 | 2022-12-06 | Google Llc | Managing real time data stream processing |
| CN113743567B (zh) * | 2020-05-28 | 2025-07-08 | 平头哥(杭州)半导体有限公司 | 一种将深度学习模型部署到加速单元的方法 |
| CN111736950B (zh) * | 2020-06-12 | 2024-02-23 | 广东浪潮大数据研究有限公司 | 一种虚拟机的加速器资源添加方法及相关装置 |
| US11500833B2 (en) * | 2020-07-10 | 2022-11-15 | International Business Machines Corporation | Archiving accelerator-only database tables |
| US11469956B2 (en) | 2020-07-22 | 2022-10-11 | Cisco Technology, Inc. | Server-management microservice storehouse for baseboard management controllers |
| US11321250B2 (en) * | 2020-07-28 | 2022-05-03 | Dell Products L.P. | Input/output device selection system |
| CN112115134A (zh) * | 2020-08-04 | 2020-12-22 | 北京金山云网络技术有限公司 | 数据存储方法、装置、电子设备及存储介质 |
| US12086620B2 (en) * | 2021-01-06 | 2024-09-10 | Kunlunxin Technology (Beijing) Company Limited | Method for virtual machine migration with artificial intelligence accelerator status validation in virtualization environment |
| CN113268269B (zh) * | 2021-06-07 | 2022-10-14 | 中科计算技术西部研究院 | 一种针对动态规划算法的加速方法、系统及装置 |
| CN114124849A (zh) * | 2021-12-03 | 2022-03-01 | 北京天融信网络安全技术有限公司 | 一种基于vhost-user的服务链实现方法及装置 |
| US11438224B1 (en) | 2022-01-14 | 2022-09-06 | Bank Of America Corporation | Systems and methods for synchronizing configurations across multiple computing clusters |
| CN114691510A (zh) * | 2022-04-02 | 2022-07-01 | 阳光电源股份有限公司 | 软件测试方法、装置、设备及计算机可读存储介质 |
| US20230350911A1 (en) * | 2022-04-28 | 2023-11-02 | Snowflake Inc. | Task configuration using a dynamic data processing statement |
| CN115934055B (zh) * | 2022-12-27 | 2025-08-15 | 深存科技(无锡)有限公司 | 面向数据库访问加速的csp架构 |
Family Cites Families (42)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0630094B2 (ja) * | 1989-03-13 | 1994-04-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセツサ・システム |
| US5590319A (en) * | 1993-12-15 | 1996-12-31 | Information Builders, Inc. | Query processor for parallel processing in homogenous and heterogenous databases |
| US6353845B1 (en) | 1998-06-25 | 2002-03-05 | International Business Machines Corporation | Computer system, program product and method for tracking asynchronous I/O with timeout support |
| US7010784B1 (en) * | 1999-09-03 | 2006-03-07 | Cadence Design Systems, Inc. | Method and system for split-compiling a hybrid language program |
| US6874138B1 (en) * | 2000-11-28 | 2005-03-29 | Hewlett-Packard Development Company, L.P. | Method and apparatus for resuming execution of a failed computer program |
| US6931395B2 (en) * | 2001-10-25 | 2005-08-16 | International Business Machines Corporation | Method and apparatus for optimizing queries in a logically partitioned computer system |
| US7346903B2 (en) * | 2003-02-04 | 2008-03-18 | Sun Microsystems, Inc. | Compiling and linking modules of a cycle-based logic design |
| US7254580B1 (en) * | 2003-07-31 | 2007-08-07 | Google Inc. | System and method for selectively searching partitions of a database |
| US20050131893A1 (en) * | 2003-12-15 | 2005-06-16 | Sap Aktiengesellschaft | Database early parallelism method and system |
| US20050273571A1 (en) * | 2004-06-02 | 2005-12-08 | Lyon Thomas L | Distributed virtual multiprocessor |
| US8126870B2 (en) * | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
| US20070124274A1 (en) | 2005-11-30 | 2007-05-31 | International Business Machines Corporation | Apparatus and method for autonomic adjustment of resources in a logical partition to improve partitioned query performance |
| GB0601566D0 (en) * | 2006-01-26 | 2006-03-08 | Codeplay Software Ltd | A parallelization system and compiler for use in such a system |
| US8126911B2 (en) | 2006-04-27 | 2012-02-28 | Intel Corporation | System and method for content-based partitioning and mining |
| US7725470B2 (en) * | 2006-08-07 | 2010-05-25 | Bea Systems, Inc. | Distributed query search using partition nodes |
| US8244718B2 (en) | 2006-08-25 | 2012-08-14 | Teradata Us, Inc. | Methods and systems for hardware acceleration of database operations and queries |
| US20080059489A1 (en) | 2006-08-30 | 2008-03-06 | International Business Machines Corporation | Method for parallel query processing with non-dedicated, heterogeneous computers that is resilient to load bursts and node failures |
| WO2008089335A2 (en) | 2007-01-17 | 2008-07-24 | Encirq Corporation | Systems and methods for a devicesql parallel query |
| JP5011006B2 (ja) | 2007-07-03 | 2012-08-29 | 株式会社日立製作所 | リソース割当方法、リソース割当プログラム、および、リソース割当装置 |
| US8108857B2 (en) * | 2007-08-29 | 2012-01-31 | International Business Machines Corporation | Computer program product and method for capacity sizing virtualized environments |
| JP5256685B2 (ja) * | 2007-10-18 | 2013-08-07 | 日本電気株式会社 | 情報処理装置 |
| US7673065B2 (en) | 2007-10-20 | 2010-03-02 | Oracle International Corporation | Support for sharing computation between aggregations in a data stream management system |
| US8176497B2 (en) | 2008-01-16 | 2012-05-08 | Dell Products, Lp | Method to dynamically provision additional computer resources to handle peak database workloads |
| US8108340B2 (en) * | 2008-03-28 | 2012-01-31 | Yahoo! Inc. | Search engine configured to minimize performance degradation under high load |
| US8402469B2 (en) * | 2008-04-08 | 2013-03-19 | Infosys Limited | Allocating resources for parallel execution of query plans |
| JP2009265963A (ja) * | 2008-04-25 | 2009-11-12 | Nec Electronics Corp | 情報処理システム及びタスクの実行制御方法 |
| US8290917B2 (en) * | 2008-06-02 | 2012-10-16 | Microsoft Corporation | Reordering of data elements in a data parallel system |
| JP4491026B2 (ja) * | 2008-06-30 | 2010-06-30 | 株式会社東芝 | 情報処理装置、プログラム処理方法及びコンピュータプログラム |
| US8683471B2 (en) | 2008-10-02 | 2014-03-25 | Mindspeed Technologies, Inc. | Highly distributed parallel processing on multi-core device |
| US8135723B2 (en) * | 2008-11-12 | 2012-03-13 | Microsoft Corporation | Leveraging low-latency memory access |
| CN101908003B (zh) * | 2009-06-05 | 2014-10-22 | Sap股份公司 | 并行化查询的多核调度 |
| US8949852B2 (en) | 2009-06-29 | 2015-02-03 | Oracle America, Inc. | Mechanism for increasing parallelization in computer programs with read-after-write dependencies associated with prefix operations |
| US8352945B2 (en) * | 2009-08-11 | 2013-01-08 | International Business Machines Corporation | System, method, and apparatus for scan-sharing for business intelligence queries in an in-memory database |
| US8166022B2 (en) | 2009-08-18 | 2012-04-24 | International Business Machines Corporation | System, method, and apparatus for parallelizing query optimization |
| US8544010B2 (en) * | 2009-09-18 | 2013-09-24 | Vmware, Inc. | Providing notification to speculatively waking up target virtual machine for an I/O event using multiple virtual machines and processors |
| US8838576B2 (en) | 2009-10-12 | 2014-09-16 | Yahoo! Inc. | Posting list intersection parallelism in query processing |
| US9251214B2 (en) | 2010-04-08 | 2016-02-02 | Microsoft Technology Licensing, Llc | In-memory database system |
| WO2011148563A1 (ja) * | 2010-05-24 | 2011-12-01 | パナソニック株式会社 | 情報処理システム |
| US20120151479A1 (en) * | 2010-12-10 | 2012-06-14 | Salesforce.Com, Inc. | Horizontal splitting of tasks within a homogenous pool of virtual machines |
| US9460176B2 (en) * | 2010-12-29 | 2016-10-04 | Sap Se | In-memory database for multi-tenancy |
| US11086850B2 (en) | 2011-04-13 | 2021-08-10 | International Business Machines Corporation | Persisting of a low latency in-memory database |
| US9507816B2 (en) * | 2011-05-24 | 2016-11-29 | Nintendo Co., Ltd. | Partitioned database model to increase the scalability of an information system |
-
2012
- 2012-06-15 CN CN201280039092.3A patent/CN103930875B/zh active Active
- 2012-06-15 EP EP12732904.3A patent/EP2721489B1/en active Active
- 2012-06-15 WO PCT/US2012/042807 patent/WO2012174471A1/en not_active Ceased
- 2012-06-15 ES ES12732904.3T patent/ES2555275T3/es active Active
- 2012-06-15 US US13/525,036 patent/US8381224B2/en active Active
- 2012-06-15 US US13/524,881 patent/US9027022B2/en active Active
- 2012-06-15 AU AU2012271352A patent/AU2012271352B2/en active Active
- 2012-06-15 US US13/524,959 patent/US8645958B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US20120324447A1 (en) | 2012-12-20 |
| AU2012271352B2 (en) | 2015-05-07 |
| US8381224B2 (en) | 2013-02-19 |
| EP2721489A1 (en) | 2014-04-23 |
| US20120324448A1 (en) | 2012-12-20 |
| US8645958B2 (en) | 2014-02-04 |
| US9027022B2 (en) | 2015-05-05 |
| WO2012174471A1 (en) | 2012-12-20 |
| AU2012271352A1 (en) | 2014-01-16 |
| CN103930875B (zh) | 2017-05-03 |
| US20120324449A1 (en) | 2012-12-20 |
| CN103930875A (zh) | 2014-07-16 |
| EP2721489B1 (en) | 2015-09-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2555275T3 (es) | Máquina virtual de software para aceleración de procesamiento de datos transaccionales | |
| Yu et al. | Following the data, not the function: Rethinking function orchestration in serverless computing | |
| US12063265B2 (en) | Efficient, automated distributed-search methods and systems | |
| Liu et al. | Cloud mapreduce: A mapreduce implementation on top of a cloud operating system | |
| US7647590B2 (en) | Parallel computing system using coordinator and master nodes for load balancing and distributing work | |
| Lannurien et al. | Serverless cloud computing: State of the art and challenges | |
| Johns | Getting Started with Hazelcast | |
| LaSalle et al. | Mpi for big data: New tricks for an old dog | |
| US20210374152A1 (en) | Label-based data representation i/o process and system | |
| Arutyunyan et al. | Decentralized and stateful serverless computing on the internet computer blockchain | |
| Yu et al. | Pheromone: Restructuring Serverless Computing With Data-Centric Function Orchestration | |
| Kalé et al. | The Charm++ Programming Model. | |
| Zhang et al. | DMR: A deterministic MapReduce for multicore systems | |
| CN116975085A (zh) | 异步数据处理方法、系统以及电子设备 | |
| Fagg et al. | HARNESS fault tolerant MPI design, usage and performance issues | |
| Kathiravelu | An elastic middleware platform for concurrent and distributed cloud and mapreduce simulations | |
| Singhal et al. | OpenFAM: Programming disaggregated memory | |
| US20230251918A1 (en) | Systems and methods for fast and scalable data-intensive computation | |
| US11983197B2 (en) | Declarative method of grouping, migrating and executing units of work for autonomous hierarchical database systems | |
| Sethia | High performance multi-agent system based simulations | |
| Nelson | Latency-Tolerant Distributed Shared Memory For Data-Intensive Applications | |
| Wadhwa | Scalable Data Management for Object-based Storage Systems [D] | |
| Gault | Improving MapReduce performance on clusters | |
| McTaggart | Hadoop/MapReduce | |
| Yancan | Towards Fine-Grained Runtime Optimization for Stream Processing |