ES2876434T3 - Sistemas y métodos de coherencia mixta en sistemas informáticos - Google Patents
Sistemas y métodos de coherencia mixta en sistemas informáticos Download PDFInfo
- Publication number
- ES2876434T3 ES2876434T3 ES17748168T ES17748168T ES2876434T3 ES 2876434 T3 ES2876434 T3 ES 2876434T3 ES 17748168 T ES17748168 T ES 17748168T ES 17748168 T ES17748168 T ES 17748168T ES 2876434 T3 ES2876434 T3 ES 2876434T3
- Authority
- ES
- Spain
- Prior art keywords
- data
- interrelated
- group
- data units
- operations
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Un sistema informático distribuido (210, 310) que comprende: recursos informáticos compartidos (212, 312) que son simultáneamente accesibles por dispositivos de usuario (250, 350) a través de una red de comunicaciones (290, 390), incluyendo los recursos informáticos compartidos (212, 312) dispositivos de procesamiento y uno o más dispositivos de almacenamiento de datos (216, 316); almacenando el uno o más dispositivos de almacenamiento de datos (216, 316) datos que incluyen unidades de datos interrelacionadas a consumir por una aplicación de consumo (104) que incluye una interfaz de usuario accesible por los dispositivos de usuario (250, 350) a través de la red de comunicaciones (290, 390) para facilitar una interacción simultánea con los datos por al menos dos de los dispositivos de usuario (250, 350), las unidades de datos interrelacionadas comprenden uno o más artículos de datos (110a-n, 120a-n, 130a-n) dependientes de o que se refieren entre sí, de tal forma que cambios en uno de los artículos de datos (110a-n, 120a-n, 130a-n) requieren que se actualicen otros artículos de datos para mantener la integridad de los artículos de datos (110a-n, 120a-n, 130a-n); uno o más de los dispositivos de procesamiento ejecutan un motor (150) para identificar dependencias entre las unidades de datos interrelacionadas almacenadas en el uno o más dispositivos de almacenamiento de datos (216, 316), siendo un gráfico de dependencias generado y mantenido, que incluye un gráfico acíclico dirigido implícito o explícito (600) o estructura equivalente para correlacionar dependencias de datos entre las unidades de datos de datos interrelacionados, en el gráfico acíclico (600) los vértices (610) representan interrelaciones de unidades de datos y bordes (620), el uno o más de los dispositivos de procesamiento asocian las unidades de datos interrelacionadas con grupos determinando si la aplicación de consumo (104) está configurada para presentar simultáneamente las unidades de datos interrelacionadas a uno o más de los dispositivos de usuario (250, 350) a través de la interfaz de usuario, incluyendo los grupos al menos un primer grupo y un segundo grupo en los que los grupos corresponden a límites (700-730), separar los artículos de datos (110a-n, 120a-n, 130a-n) en límites (700-730) garantiza que artículos de datos que pueden visualizarse simultáneamente están dentro del mismo límite y que cambios dentro de cualquiera de los artículos de datos (110a-n, 120a-n, 130a-n) dentro del mismo límite se propagan dentro del límite como una única transacción ACI mientras artículos de datos en otro límite que se ven afectados por cambios en el límite se procesan de forma asíncrona como transacciones ACI separadas por el motor de datos (150); en donde, en respuesta a una modificación de una primera unidad de datos asociada con el primer grupo, el uno o más de los dispositivos de procesamiento realizan una serie de operaciones que (i) restringen el acceso a un primer conjunto de ubicaciones de memoria en las que se almacenan las unidades de datos interrelacionadas asociadas con el primer grupo para evitar la lectura o escritura de las ubicaciones de memoria, (ii) actualizan atómicamente el estado de las unidades de datos interrelacionadas en el primer grupo de un primer estado fiable a un segundo estado fiable, y (iii) sobrescriben el al menos un subconjunto del primer conjunto de ubicaciones de memoria para almacenar el segundo estado fiable, a lo largo de la serie de operaciones un segundo conjunto de ubicaciones de memoria de las unidades de datos interrelacionadas asociadas con el segundo grupo permanece sin restricciones.
Description
DESCRIPCIÓN
Sistemas y métodos de coherencia mixta en sistemas informáticos
Solicitudes relacionadas
La presente solicitud reivindica prioridad a la Solicitud No Provisional de Estados Unido con N.° de Serie 15/014.384 del 3 de febrero de 2016.
Antecedentes
Cantidades abrumadoras de datos se han puesto a disposición en forma electrónica. En algunos casos uno o más elementos de datos en un conjunto o conjuntos de datos pueden depender de o referenciar otros elementos de datos de tal forma que cambios en un único elemento de datos puede provocar una reacción en cadena que requiere cientos, miles o incluso millones de otros elementos de datos que pueden, directa o indirectamente, depender de o referirse al único elemento de datos a actualizar que no está completo hasta que los elementos de datos afectados se actualicen basándose en el cambio en el único elemento de datos. Como resultado, la propagación de cambios en través de un conjunto de datos interrelacionados puede requerir enormes recursos informáticos, tanto en potencia de procesamiento como en capacidad de memoria física, para intentar garantizar que todos los elementos de datos reflejan cambios hechos a los elementos de datos de los que dependen. El uso del conjunto o conjuntos de datos interrelacionados en cualquier momento dado mientras los elementos de datos afectados se están actualizando puede resultar en incoherencias de datos, estados de datos no fiables, contiendas de acceso de datos y/u otras cuestiones/problemas relacionados con la operación/función de uno o más dispositivos informáticos.
La publicación US6009405A se refiere a asegurar la atomicidad para una colección de artículos de trabajo transaccionales en un sistema de gestión de flujos de trabajo. Una ejecución de transacción por ordenador con un sistema de gestión de flujos de trabajo (WFMS) ejecuta un modelo de proceso que consta de una red de actividades potencialmente distribuidas que incluye artículos de trabajo transaccionales. Una metodología por ordenador define, controla y procesa una colección de artículos de trabajo transaccionales que asegura la atomicidad de la colección de artículos de trabajo transaccionales. La colección de artículos de trabajo transaccionales posee un alcance de compromiso separado que no está influenciado por un alcance de compromiso implementado potencialmente dentro de dichos artículos de trabajo transaccionales. El WFMS se habilita para inferir detalles del modelo de proceso de colecciones de artículos de trabajo transaccionales que pueden procesarse en el sentido de transacciones globales con un alcance de compromiso común. Los artículos de trabajo transaccionales con un alcance de compromiso común se combinan en esferas atómicas. La colección de artículos de trabajo transaccionales constituyen una esfera atómica común en una realización alternativa.
La solicitud US2016/026673 A1 proporciona un sistema, métodos y aparato para asegurar la coherencia de datos derivados, en relación con datos primarios, en un sistema de almacenamiento de datos distribuido. Los datos primarios y los datos derivados se almacenan en y/o gestionan por componentes separados del sistema de almacenamiento de datos, tal como diferentes motores de almacenamiento. Los datos primarios se escriben y actualizan según se especifica en peticiones de escritura, que pueden ser consultas dirigidas al motor de almacenamiento primario. Los resultados de las escrituras de datos primarios se entregan directamente al motor de almacenamiento derivado. Si falla una actualización a datos derivados, se produce un registro; si la actualización tiene éxito, cualquier escritura fallida registrada en los mismos datos se elimina. El motor de almacenamiento derivado también recibe resultados de escritura a través de un flujo de captura de cambios de eventos que afectan a los datos primarios, y puede usar estas copias de resultados de escritura para reparar actualizaciones fallidas y eliminar fallos de los registros de escritura fallida.
Sumario
La invención se define en las reivindicaciones adjuntas. Realizaciones ilustrativas de la presente divulgación se refieren a sistemas, métodos y medios legibles por ordenador no transitorios que consiguen una coherencia final de datos interrelacionados en un sistema informático basándose en una relación entre los datos interrelacionados (por ejemplo, dependencias entre datos interrelacionados) y una configuración de una aplicación programada para consumir los datos interrelacionados.
Las realizaciones ilustrativas pueden utilizar uno o más gráficos de dependencia implícitos o explícitos, tales como un gráfico acíclico dirigido implícito o explícito que corresponde a los datos interrelacionados y las dependencias entre los datos interrelacionados. Subconjuntos de los datos interrelacionados pueden asociarse con uno o más grupos o límites en los gráficos de dependencia basándose en una configuración de aplicaciones programadas para consumir los datos interrelacionados y/o basándose en las dependencias entre los datos interrelacionados.
En las realizaciones ilustrativas, pueden realizarse transacciones atómicas, coherentes y aisladas (ACI) de forma asíncrona sobre una base de límite a límite en respuesta a eventos para actualizar unidades de los datos interrelacionados en respuesta a cambios en otras unidades de datos interrelacionadas de las que dependen las
unidades de datos interrelacionadas. Para minimizar el efecto de una coherencia final a un usuario de los datos interrelacionados, las realizaciones ilustrativas pueden definir los grupos o límites basándose en cómo presenta la aplicación de consumo los datos interrelacionados a los usuarios.
Las realizaciones ilustrativas de la presente divulgación pueden reducir ventajosamente contiendas de datos en sistemas informáticos, asignar eficientemente recursos físicos que incluyen recursos de procesador y recursos de memoria basándose en los límites de ejecución, habilitar la ejecución en paralelo y asíncrona de transacciones ACI, reducir tiempos de transacciones ACI y/o habilitar el escalado en un entorno informático distribuido a medida que aumenta la cantidad de datos. Por ejemplo, las realizaciones ilustrativas de la presente divulgación pueden asignar ventajosamente recursos informáticos, tanto en potencia de procesamiento como capacidad de memoria física, basándose en los grupos o límites y en respuesta al efecto de propagación de cambios en datos interrelacionados en uno o más conjuntos de datos mientras evita que datos afectados en un grupo o límite sean accedidos o vistos hasta que se hayan completado y almacenado los cambios en los datos dentro del límite.
De acuerdo con realizaciones de la presente divulgación, se divulga un sistema informático distribuido. El sistema informático distribuido incluye recursos informáticos compartidos que son simultáneamente accesibles por dispositivos de usuario a través de una red de comunicaciones. Los recursos informáticos compartidos incluyen dispositivos de procesamiento (por ejemplo, de servidores) y uno o más dispositivos de almacenamiento de datos. El uno o más dispositivos de almacenamiento de datos almacenan datos que incluyen unidades de datos interrelacionadas a consumir por una aplicación de consumo que incluye una interfaz de usuario accesible por los dispositivos de usuario a través de la red de comunicaciones para facilitar una interacción simultánea con los datos por al menos dos de los dispositivos de usuario. Uno o más de los dispositivos de procesamiento pueden ejecutar un motor para identificar dependencias entre las unidades de datos interrelacionadas almacenadas en el uno o más dispositivos de almacenamiento de datos, y asociar las unidades de datos interrelacionadas con grupos basándose en una configuración de la aplicación de consumo. Los grupos pueden incluir al menos un primer grupo y un segundo grupo. En respuesta a una modificación de una primera unidad de datos asociada con el primer grupo, uno o más de los dispositivos de procesamiento realizan una serie de operaciones que (i) restringen acceso a un primer conjunto de ubicaciones de memoria en las que se almacenan las unidades de datos interrelacionadas asociadas con el primer grupo (por ejemplo, bloquean el primer conjunto de ubicaciones de memoria) para evitar la lectura o escritura de las ubicaciones de memoria y (ii) actualizan atómicamente el estado de las unidades de datos interrelacionadas en el primer grupo de un primer estado fiable a un segundo estado fiable. El uno o más de los dispositivos de procesamiento sobrescriben y eliminan restricciones (por ejemplo, desbloquean) del primer conjunto de ubicaciones de memoria tras la finalización de la serie de operaciones.
De acuerdo con realizaciones, se divulga un método implementado por ordenador. El método incluye identificar dependencias entre datos interrelacionados almacenados en ubicaciones de memoria en uno o más dispositivos de almacenamiento de datos y asociar subconjuntos de los datos interrelacionados con grupos basándose en una configuración de una aplicación programada para consumir los datos interrelacionados. Los grupos incluyen al menos un primer grupo y un segundo grupo. El método también incluye modificar una primera unidad de los datos interrelacionados almacenados en una primera ubicación de memoria, en el que la primera unidad está asociada con el primer grupo. En respuesta a la modificación de la primera unidad almacenada en la primera ubicación de memoria, el método incluye adicionalmente asignar uno o más dispositivos de procesamiento para realizar una serie de operaciones que (i) restringen el acceso a un primer conjunto de las ubicaciones de memoria en las que se almacena un primer subconjunto de los datos interrelacionados que corresponden al primer grupo (por ejemplo, bloquean el primer conjunto de ubicaciones de memoria) para evitar la lectura o escritura del primer conjunto de ubicaciones de memoria, (ii) actualizan atómicamente un estado de los datos interrelacionados en el primer grupo de un primer estado fiable a un segundo estado fiable, y (iii) sobrescriben el al menos un subconjunto del primer conjunto de ubicaciones de memoria para almacenar el segundo estado fiable.
De acuerdo con realizaciones de la presente divulgación, el uno o más de los dispositivos de procesamiento pueden asociar las unidades de datos interrelacionadas entre sí a través de un gráfico acíclico dirigido implícito basándose en las dependencias y los grupos corresponden a límites dentro del gráfico acíclico dirigido implícito. El uno o más dispositivos de procesamiento pueden mantener una coherencia final del estado de los datos interrelacionados basándose en los límites. El gráfico acíclico dirigido implícito puede modificarse por el uno o más dispositivos de procesamiento en respuesta a cambios en las dependencias entre las unidades de datos interrelacionadas, y al menos uno de los límites puede modificarse por el uno o más dispositivos de procesamiento basándose en al menos uno de los cambios en las dependencias entre las unidades de datos interrelacionadas o cambios en la aplicación de consumo.
De acuerdo con realizaciones de la presente divulgación, el uno o más dispositivos de procesamiento pueden asociar las unidades de datos interrelacionadas con los grupos determinando si la aplicación de consumo está configurada para presentar simultáneamente las unidades de datos interrelacionadas a uno o más de los dispositivos de usuario a través de la interfaz de usuario.
Cuando la modificación de la primera unidad de datos puede afectar únicamente a las unidades de datos asociadas con el primer grupo, un segundo conjunto de ubicaciones de memoria de las unidades de datos interrelacionadas
asociadas con el segundo grupo puede permanecer sin restricciones (por ejemplo, desbloqueado) a lo largo de la serie de operaciones. Cuando la modificación de la primera unidad de datos afecta a las unidades de datos asociadas con el primer y segundo grupos, un segundo conjunto de ubicaciones de memoria de las unidades de datos interrelacionadas asociadas con el segundo grupo puede permanecer sin restricciones (por ejemplo, desbloqueado) y tiene un estado no fiable para al menos una porción de una duración de la serie de operaciones. En respuesta a un evento generado por el uno o más dispositivos de procesamiento durante la serie de operaciones, el uno o más dispositivos de procesamiento pueden realizar una serie separada de operaciones que restringen (por ejemplo, bloquean) el segundo conjunto de ubicaciones de memoria en las que se almacenan las unidades de datos interrelacionadas asociadas con el segundo grupo para evitar la lectura o escritura del segundo conjunto de ubicaciones de memoria y actualizar atómicamente el estado de las unidades de datos interrelacionadas asociadas con el segundo grupo del estado no fiable al segundo estado fiable. El evento puede corresponder a la modificación de otra unidad de datos asociada con el primer grupo del que depende directamente al menos una de las unidades de datos asociadas con el segundo grupo de datos. Al menos una porción de la serie de operaciones y la serie separada de operaciones se realizan como operaciones en paralelo por el uno o más de los dispositivos de procesamiento. Un primero de los dispositivos de procesamiento puede asignarse para realizar la serie de operaciones y un segundo de los dispositivos de procesamiento puede asignarse para realizar la serie separada de operaciones.
De acuerdo con realizaciones de la presente divulgación, se divulga un método implementado por ordenador, en las que el método incluye utilizar un sistema informático distribuido que incluye recursos informáticos compartidos que son simultáneamente accesibles por terminales de usuario a través de una red de comunicaciones, incluyendo los recursos informáticos compartidos dispositivos de procesamiento y dispositivos de almacenamiento de datos. El método también incluye identificar dependencias entre datos interrelacionados almacenados en los dispositivos de almacenamiento de datos y asociar los datos interrelacionados con grupos basándose en una configuración de una aplicación configurada para consumir los datos interrelacionados, incluyendo los grupos al menos un primer grupo y un segundo grupo. En respuesta a un evento que corresponde a la recepción de un cambio en un elemento de datos seleccionado de los datos interrelacionados asociados con el primer grupo a través de la aplicación, el método también incluye asignar un primer conjunto de los dispositivos de procesamiento para modificar los datos asociados con el primer grupo como una transacción atómica, coherente y aislada (ACI) basándose en las dependencias entre los datos interrelacionados en el primer grupo. En respuesta a un evento posterior que corresponde a una propagación de cambios en los datos interrelacionados desde el primer grupo al segundo grupo como resultado de la transacción ACI, el método incluye adicionalmente asignar un segundo conjunto de dispositivos de procesamiento para modificar los datos interrelacionados asociados con el segundo grupo como una nueva transacción ACI basándose en el cambio en al menos una porción de los datos interrelacionados en el primer grupo. La nueva transacción ACI puede realizarse de forma asíncrona con respecto a la transacción ACI.
Se concibe cualquier combinación y/o permutación de las realizaciones. Otros objetos y características serán evidentes a partir de la siguiente descripción detallada considerada en conjunto con los dibujos adjuntos. Debe apreciarse, sin embargo, que los dibujos se diseñan como una ilustración únicamente y no como una definición de los límites de la presente divulgación.
Breve descripción de los dibujos
Las realizaciones ilustrativas de la presente divulgación se entenderán a partir de la siguiente descripción detallada cuando se lean con las figuras adjuntas. En los dibujos, números de referencia similares se refieren a partes similares a lo largo de todas las diversas vistas de las realizaciones no limitantes y no exhaustivas.
La Figura 1 es un diagrama de datos de un entorno para proporcionar un servicio escalable, multipropietario y multiusuario para facilitar una coherencia mixta de datos interrelacionados en un sistema informático de acuerdo con realizaciones de la presente divulgación.
La Figura 2 es un diagrama de bloques de un entorno informático distribuido dentro del cual pueden implementarse las realizaciones de la presente divulgación.
La Figura 3 es un diagrama de bloques de otro entorno informático distribuido dentro del cual pueden implementarse las realizaciones de la presente divulgación.
La Figura 4 es un diagrama de bloques de un dispositivo informático ilustrativo para implementar uno o más servidores de acuerdo con realizaciones de la presente divulgación.
La Figura 5 es un diagrama de bloques de un dispositivo informático ilustrativo para implementar uno o más dispositivos de usuario de acuerdo con realizaciones de la presente divulgación.
La Figura 6 es un ejemplo ilustrativo de una representación gráfica de un gráfico acíclico dirigido que puede formarse implícita o explícitamente de acuerdo con realizaciones de la presente divulgación.
La Figura 7 es un ejemplo ilustrativo de límites que puede formarse dentro del gráfico acíclico dirigido mostrado en
la Figura 6 de acuerdo con realizaciones de la presente divulgación.
La Figura 8 es un ejemplo ilustrativo de una propagación de cambios en datos interrelacionados en uno o más conjuntos de datos de acuerdo con realizaciones de la presente divulgación.
La Figura 9 muestra un diagrama de tiempo ilustrativo para ilustrar una realización ilustrativa de las operaciones descritas con referencia a la Figura 8.
La Figura 10 muestra otro diagrama de tiempo ilustrativo para ilustrar una realización ilustrativa de operaciones descritas con referencia a la Figura 8.
Las Figuras 11A-D ilustran una presentación ilustrativa de una estructura de datos de ejemplo que se representan simultáneamente en al menos dos dispositivos de usuario de acuerdo con realizaciones de la presente divulgación.
Las Figuras 12A-E ilustran un escenario ilustrativo en el que se presenta una estructura de datos de ejemplo a un usuario en respuesta a la ejecución de una aplicación de consumo de acuerdo con realizaciones de la presente divulgación.
La Figura 13 es un diagrama de flujo que ilustra un proceso ilustrativo para mantener una coherencia final de datos interrelacionados de acuerdo con realizaciones de la presente divulgación.
La Figura 14 es un diagrama de flujo que ilustra otro proceso ilustrativo para mantener una coherencia final de datos interrelacionados de acuerdo con realizaciones de la presente divulgación.
La Figura 15 es un diagrama de flujo que ilustra un proceso ilustrativo implementado por recursos compartidos en un sistema informático distribuido para implementar realizaciones de la presente divulgación.
Descripción detallada
Realizaciones ilustrativas de la presente divulgación se refieren a sistemas, métodos y medios legibles por ordenador no transitorios que consiguen una coherencia final de datos interrelacionados en un sistema informático basándose en una relación entre los datos interrelacionados y una configuración de una aplicación programada para consumir los datos interrelacionados. Realizaciones ilustrativas pueden proporcionar la asignación de recursos en un sistema informático distribuido para la ejecución de un servicio escalable, multipropietario y multiusuario que facilita interacciones con uno o más conjuntos de datos interrelacionados.
En realizaciones ilustrativas, un estado de los datos interrelacionados puede mantenerse en memoria o memoria caché y uno o más gráficos de dependencia pueden derivarse implícita o explícitamente basándose en el estado para rastrear la relación entre los datos interrelacionados. Los subconjuntos de los datos interrelacionados del uno o más conjuntos de datos pueden asociarse con uno o más grupos o límites usando un esquema de límites que puede determinar los grupos o límites basándose en una configuración de aplicaciones programadas para consumir los datos interrelacionados y/o basándose en las dependencias entre los datos interrelacionados. El gráfico de dependencias puede incluir un gráfico acíclico dirigido implícito o explícito o estructura equivalente para correlacionar dependencias de datos entre los datos interrelacionados. Los límites pueden definirse dinámicamente con respecto al gráfico o gráficos y pueden designarse en respuesta a la aplicación de consumo siendo especificada o utilizada por uno o más usuarios y/o los datos interrelacionados especificados o utilizados por uno o más usuarios.
Realizaciones ilustrativas de la presente divulgación pueden utilizar los grupos o límites para generar y realizar transacciones sobre una base de límite a límite, en la que cada transacción puede utilizar las propiedades de atomicidad, coherencia y aislamiento. Esta partición de transacciones puede usarse para conseguir una ejecución escalable, en paralelo y adaptativa de transacciones dentro de y a través de límites. Los grupos o límites pueden denominarse en este documento como límites ACI, en donde A indica atomicidad, C indica coherencia e I indica aislamiento, porque los datos interrelacionados asociados con cada grupo o límite pueden adherirse de forma separada e independiente a las propiedades de atomicidad, coherencia y aislamiento. La atomicidad proporciona que cualquier cambio en datos dentro de un límite efectúa cambios en todos los datos afectados dentro del límite en una transacción atómica. Es decir, o bien se cambian todos los datos afectados o bien no se cambia ninguno de los datos afectados dentro de un límite dado. Debe adherirse a un modelo de coherencia fuerte dentro de un límite de tal forma que todas las lecturas y actualizaciones a valores dentro de un límite deben adherirse a un modelo de coherencia de linealizabilidad. Esto prohíbe que se produzcan lecturas antiguas dentro de un límite dado y asegura que los datos interrelacionados dentro de un límite cambian de un estado fiable a otro estado fiable para una transacción dada. Los principios de aislamiento garantizan que todas las lecturas y escrituras en ubicaciones de memoria en las que se almacenan los datos interrelacionados dentro de un límite parecen haber sucedido en aislamiento y prohíbe que se produzcan lecturas y escrituras contra grupos o límites parcialmente procesados.
Separando un gráfico en grupos o límites, las realizaciones ilustrativas de la presente divulgación pueden relajar las propiedades de atomicidad, coherencia y/o aislamiento en áreas del gráfico en las que no se necesitan atomicidad,
coherencia y/o aislamiento y pueden implementar las propiedades de atomicidad, coherencia y/o aislamiento en áreas del gráfico en las que se necesitan. Por ejemplo, la atomicidad, coherencia y/o aislamiento pueden relajarse a través de la ejecución de límites para permitir que las realizaciones ilustrativas de la presente divulgación se implementen con un diseño escalable y adaptativo. Debido a que los datos están interrelacionados y que las dependencias de datos pueden transcender los grupos o límites, las transacciones de límite a límite basadas en evento pueden permitir temporalmente que algunos grupos o límite tengan un estado no fiable o datos imprecisos. Sin embargo, tales datos se actualizan finalmente mediante las realizaciones ilustrativas de la presente divulgación para garantizar una coherencia final. Para minimizar el efecto de esta coherencia final a un usuario de los datos interrelacionados, las realizaciones ilustrativas pueden definir los grupos o límites basándose en cómo presenta la aplicación de consumo los datos interrelacionados a los usuarios.
Una coherencia final de datos en diferentes límites de ejecución permite la falta de atomicidad, y falta de aislamiento entre eventos inter límite, que puede volverse cada vez más importante a medida que el tamaño del gráfico crece a cientos de miles o millones de células/vértices. Como resultado, las realizaciones ilustrativas de la presente divulgación pueden reducir ventajosamente contiendas de datos en sistemas informáticos, asignar eficientemente recursos físicos que incluyen recursos de procesador y recursos de memoria basándose en los límites de ejecución, habilitar la ejecución en paralelo y asíncrona de transacciones, y/o habilitar el escalado en un entorno informático distribuido a medida que aumenta la cantidad de datos. Por ejemplo, las realizaciones ilustrativas de la presente divulgación pueden asignar ventajosamente recursos informáticos, tanto en potencia de procesamiento como capacidad de memoria física, basándose en los grupos o límites y en respuesta al efecto de propagación de cambios en datos interrelacionados en uno o más conjuntos de datos mientras evita que datos afectados en un grupo o límite sean accedidos o vistos hasta que se hayan completado y almacenado los cambios en los datos dentro del límite.
La Figura 1 muestra un diagrama de bloques de un entorno informático 100 dentro del cual pueden implementarse las realizaciones de la presente divulgación para conseguir coherencia de datos final a través de datos interrelacionados, reducir contiendas de acceso a datos, asignar automáticamente recurso informático físico, y/o habilitar el escalado de recursos informáticos físicos, mientras proporciona un entorno multiusuario y multipropietario (es decir, una única instancia del motor puede servir a múltiples usuarios) que soporta uso simultáneo de los datos interrelacionados. Como se muestra en el entorno 100, uno o más usuarios 102 pueden interactuar con una o más instancias de una o más aplicaciones de consumo 104 para acceder y utilizar artículos de datos 110a-n, 120a-n y 130an, que forman los conjuntos de datos 115, 125 y 135, respectivamente. Uno o más de los artículos de datos 110an, 120a-n y/o 130a-n pueden depender de o referirse entre sí, de tal forma que cambios en uno de los artículos de datos requiere que se actualice otros artículos de datos para mantener la integridad de los artículos de datos. En algunas realizaciones, cada uno de los artículos de datos 110a-n, 120a-n y 130a-n puede incluir elementos de datos 112a-n, 122a-n y 132a-n, respectivamente, en las que los elementos de datos pueden depender de o referirse entre sí, de tal forma que una actualización a un elemento de datos puede requerir que se actualicen otros elementos de datos. Como un ejemplo no limitante, los conjuntos de datos 115, 125 y 135 pueden representar repositorios, los artículos de datos pueden representan estructuras de datos, tales como archivos de ordenador (por ejemplo, en uno o más formatos de archivo, tales como archivos de texto, archivos de hoja de cálculo, archivos de presentación/diapositivas, archivos de formato de documento portátil, archivos de lenguaje de marcas extensible, archivos de base de datos, archivos ejecutables, archivos de código objeto, archivos de diseño asistido por ordenador, etc.), y los elementos de datos 112a-n, 122an y 132a-n pueden representar campos, células, etiquetas y/o cualquier otro elemento de datos adecuado. En realizaciones ilustrativas, cada uno de los artículos de datos y/o elementos de datos puede denominarse en este documento como unidades de datos. Como se describe en este documento, pueden configurarse una o más instancias de un motor de datos 150 en el entorno informático 100 para garantizar coherencia de datos final de los elementos de datos 112a-n, 122a-n y 132a-n; los artículos de datos 110a-n, 120a-n y 130a-n; y los conjuntos de datos 115, 125 y 135.
Las aplicaciones de consumo 104 pueden ser cualquier aplicación programada para leer los elementos de datos y/o artículos de datos de la memoria, escribir los elementos de datos y/o artículos de datos en la memoria, representar los elementos de datos y/o artículos de datos en una interfaz gráfica de usuario basándose en un formato y/o estructura asociados con los elementos de datos y/o los artículos de datos. En algunas realizaciones, los elementos de datos y/o artículos de datos pueden representarse en una interfaz gráfica de usuario de las aplicaciones de consumo 104 basándose en el formateado, estructura y/o restricciones aplicadas a los elementos de datos y/o artículos de datos por las aplicaciones 104. Por ejemplo, la una o más aplicaciones pueden ser editores de texto o aplicaciones de procesamiento de texto (por ejemplo, tales como Microsoft Word o cualquier otro editor de texto o aplicación de procesador de texto adecuados), aplicaciones de hoja de cálculo (por ejemplo, tales como Microsoft Excel o cualquier otra aplicación de hoja de cálculo adecuada), aplicaciones de desarrollo de código (por ejemplo, Microsoft Visual C++), visualizadores/editores de formato de documento portátil (PDF) (por ejemplo, tales como los proporcionados por Adobe Systems, Inc. o Nitro Software, Inc.), aplicaciones fiscales y contables (por ejemplo, tales como, las de Thomson Reuters o Intuit, Inc.), sistemas de gestión de bases de datos (por ejemplo, tales como los proporcionados por Microsoft u Oracle) y/o cualquier otra aplicación adecuada.
El motor de datos 150 puede interactuar con las aplicaciones de consumo 104 para mantener la coherencia de datos de uno o más elementos de datos interrelacionados en los artículos o elementos de datos y a través de uno o más de los conjuntos de datos 115, 125 y 135, reducir contiendas de acceso a datos en ubicación de memoria física en la que
se almacenan los artículos o elementos de datos, asignar automáticamente recursos informáticos físicos (por ejemplo, unidades de procesamiento y/o memoria), y/o habilitar el escalado de recursos informáticos físicos (por ejemplo, añadiendo recursos adicionales según se necesiten), mientras proporciona un servicio multiusuario y multiservicio que soporta un uso simultáneo de los datos interrelacionados. En realizaciones ilustrativas, el motor de datos 150 puede estar desprovisto de una interfaz de usuario y se llama o responde a peticiones de las aplicaciones 104 como un servicio. El motor de datos 150 puede ser un motor accionado por evento (por ejemplo, un cambio en el estado de un artículo o elemento de datos puede desencadenar una transacción para cambiar en los estados de artículos o elementos de datos que dependen, directa o indirectamente, de los artículo o elemento de datos), escalable, con estado, distribuido con capacidad de generar y ejecutar cálculos para un gran número (por ejemplo, millones) de elementos de datos. El motor de datos 150 puede mantener un estado 152 de los artículos de datos en los conjuntos de datos 115, 125 y 135. El motor de datos 150 puede almacenar el estado 152 en memoria (por ejemplo, memoria caché) a través de varios servidores y puede escalar horizontalmente para añadir servidores adicionales según sea necesario para mantener el estado 152.
Como se muestra en la Figura 1, el motor de datos 150 puede incluir un evaluador 156 para actualizar y/o modificar uno o más de los artículos o elementos de datos en uno o más de los conjuntos de datos 115, 125 y 135 en respuesta a cambios en el estado 152 de una o más unidades de datos (por ejemplo, artículos de datos y/o elementos de datos) por las aplicaciones 104, por ejemplo, basándose en una interacción entre los usuarios 102 y las aplicaciones 104. El evaluador 156 puede actualizar el estado 152 de las unidades modificadas de artículos o elementos de datos y puede actualizar el estado de artículos o elementos de datos dependientes, como se describe en este documento, basándose en un esquema de límites 154 usado por el motor de datos 150. Por ejemplo, un usuario que interactúa con los artículo de datos 110a a través de una interfaz gráfica de usuario proporcionada por una de las aplicaciones de consumo 104 puede cambiar datos asociados con los artículo de datos 110a y, en respuesta a este cambio y/o ser llamado por la aplicación o aplicaciones de consumo 104, el motor de datos 150 puede actualizar el estado 152 y ejecutar el evaluador 156 para evaluar el cambio y su propagación a través del artículo de datos 110a así como a través de los otros artículos de datos basándose en el esquema de límites y las dependencias de datos capturadas a través del esquema de límites 154. En algunas realizaciones, el evaluador 156 puede incluir un motor de cálculo para calcular cambios en uno o más elementos de datos en uno o más artículos de datos. El motor de cálculo puede utilizar operaciones, tales como suma, resta, promedio, total, divisiones de cadena, etc.
El motor 150 puede usar el esquema de límites 154 para deducir uno o más gráficos de dependencia implícitos o explícitos 158 basándose en dependencias de datos, formatos y/o estructuras para los elementos de datos 112a-n, 122a-n y 132a-n y/o los artículos de datos 110a-n, 120a-n y 130an de los conjuntos de datos 115, 125 y 135, respectivamente, así como a través de unos diferentes de los conjuntos de datos 115, 125 y 135; y/o puede implementar el esquema de límites 154 basándose en formateado, estructura, restricciones y/o parámetros aplicados a los artículos de datos por las aplicaciones de consumo 104 que acceden y/o presentan los artículos de datos a los usuarios 102. Por ejemplo, en realizaciones ilustrativas, las dependencias entre elementos de datos y/o artículos de datos pueden formar un gráfico acíclico dirigido implícito o explícito, en el que los artículos de datos y/o elementos de datos pueden corresponder a vértices/campos y las dependencias entre los artículos de datos y/o elementos de datos pueden corresponder a bordes dirigidos entre los vértices/campos.
El motor de datos 150 puede utilizar los gráficos acíclicos dirigidos para actualizar un estado de los artículos de datos y/o elementos de datos en respuesta a un cambio en un estado de un artículo de datos y/o elemento de datos modificado del que dependen los artículos de datos y/o elemento de datos. En algunas realizaciones, los artículos o elementos de datos que corresponden a los vértices/campos pueden contener una o más expresiones y/o uno o más valores literales, que puede ser nulo, en los que las expresiones pueden ser una composición de funciones que incluyen parámetros/variables y/o literales. Los parámetros/variables pueden ser otras funciones, una referencia a otro artículo o elemento de datos (por ejemplo, otro vértice/campo) o un valor literal. Las funciones realizan cálculos contra sus parámetros y valores de retorno. Las funciones básicas incluyen, pero sin limitación, suma, resta, promedio, total, divisiones de cadena, etc. Un cambio en un valor de datos asociado con un vértice/campo puede desencadenar que otros vértices/campos que se refieren al vértice/campo cambien sus valor de datos, que puede desencadenar que otros vértices/campos cambien sus valores, que puede resultar en una reacción en cadena que se propaga a través de los datos interrelacionados dentro de y a través de uno o más de los conjuntos de datos 115, 125 y 135. En realizaciones ilustrativas, el motor de datos 150 puede habilitar la manipulación de usuario simultánea de los artículos o elementos de datos compartiendo los gráficos acíclicos dirigidos entre usuarios en un entorno multiusuario.
Los gráficos 158 pueden segmentarse o dividirse en grupos o límites 160 basándose en la aplicación de consumo 104 utilizada para consumir los artículos o elementos de datos y/o las dependencias de los artículos o elementos de datos. Por ejemplo, la estructura o formato en el que se almacenan los artículos o elementos de datos y/o el formateado, estructura, restricciones y/o parámetros aplicados a los artículos de datos o elementos de datos por las aplicaciones de consumo 104 (por ejemplo, una configuración de la aplicación de consumo) puede afectar a los grupos o límites dentro del gráfico o gráficos 158. En realizaciones ilustrativas, en respuesta a cambios en las dependencias entre los artículos o elementos de datos, y/o cambios en la aplicación de consumo usada para consumir los artículos o elementos de datos, el motor de datos 150 puede cambiar los grupos o límites 160 en el gráfico o gráficos 158 de tal forma que los grupos o límites 160 pueden formarse dinámicamente. Una operación del motor de datos 150 y la asignación de recursos informáticos físicos pueden determinarse basándose en los grupos o límites 160. Por ejemplo,
el motor de datos 150 puede utilizar atomicidad, un modelo de coherencia fuerte y principios de aislamiento sobre una base de límite a límite para conseguir una ejecución escalable, en paralelo y adaptativa de eventos dentro de y a través de límites de ejecución 160.
El motor de datos 150 puede realizar una transacción ACI que utiliza las propiedades de atomicidad, coherencia y aislamiento para cambios intra límite. Es decir, en respuesta a cualquier cambio en un artículo o elemento de datos dentro de un límite, el motor de datos 150 actualiza todos los artículos o elementos de datos dentro del límite que dependen del artículo o elemento de datos cambiado o el motor 150 evita la actualización de cualquier artículo o elemento de datos dentro del límite. Los artículos o elementos de datos fuera del límite que dependen del artículo o elemento de datos cambiado se excluyen de la transacción ACI.
La transacción ACI puede utilizar un modelo de coherencia de linealizabilidad para cambios intra límite, de tal forma que, en respuesta a cualquier cambio en un artículo o elemento de datos dentro de un límite, el motor de datos 150 actualiza todos los artículos o elementos de datos dentro del límite que dependen del artículo o elemento de datos cambiado de una manera que prohíbe que se produzcan lecturas antiguas dentro del límite y asegura que los artículos o elementos de datos dentro del límite pasan de un estado fiable a otro. Sin embargo, para los artículos o elementos de datos fuera del límite que también dependen del artículo o elemento de datos cambiado, el motor de datos 150 puede relajar las propiedades de coherencia para facilitar una coherencia final. Por ejemplo, el motor de datos 150 puede procesar cambios dentro de un límite como una transacción atómica, coherente y aislada. Si los cambios en el límite afectan a artículos o elementos de datos en otro límite, el motor de datos 150 puede procesar cambios en el otro límite como una transacción atómica, coherente y aislada separada y distinta de tal forma que las transacciones se producen de forma asíncrona entre sí y una transacción no está restringida por las propiedades de las propiedades transacción.
La transacción ACI puede utilizar los principios de aislamiento para cambios intra límite. Es decir, en respuesta a cualquier cambio en un artículo o elemento de datos dentro de un límite, el motor de datos 150 asegura que todas las lecturas y escrituras en las ubicaciones de memoria en las que se almacenan los artículos o elementos de datos dentro de un límite aparecen en la aplicación de consumo y/o un usuario como que han sucedido en aislamiento y prohíbe que se produzcan lecturas y escrituras de las ubicaciones de memoria contra límites de ejecución parcialmente procesados.
Separando los gráficos 158 o estructuras equivalentes en grupos o límites 160, y utilizando las propiedades de atomicidad, linealizabilidad coherencia y aislamiento dentro de grupos o límites, el motor de datos 160 puede actualizar artículos o elementos de datos dentro de un límite como una transacción atómica, coherente y aislada (ACI) (es decir, una serie de operaciones realizadas por el motor de datos 150 que utilizan atomicidad, un modelo de coherencia de linealizabilidad y aislamiento para actualizar todos los elementos de datos o artículos de datos afectados dentro de un límite) y puede actualizar los artículos o elementos de datos afectados en otros límites de ejecución de forma asíncrona con respecto a la transacción ACI que se realiza para el límite. Generar y realizar transacciones ACI sobre una base de límite a límite permite que el motor de datos 150 relaje las propiedades de atomicidad, coherencia y aislamiento en áreas de los gráficos en los que estas propiedades proporcionan poco o ningún beneficio y puede tener un impacto negativo en la asignación y uso de recursos, mientras que la aplicación de estas propiedades en áreas de los gráficos que pueden beneficiarse de estas propiedades para facilitar un diseño escalable, con eficiencia de recursos y adaptativo. Adicionalmente, la actualización de artículos o elementos de datos afectados basándose en los límites de ejecución 160 puede proporcionar una coherencia final a través de grupos o límites, que puede resultar en menos contiendas de acceso a datos, falta de atomicidad y falta de aislamiento para eventos que desencadenan cambios en artículos o elementos de datos que abarcan uno o más de los límites de ejecución 160.
El motor de datos 150 puede cambiar dinámicamente los gráficos 158 basándose en cambios en las aplicaciones de consumo 104 y cambios en las dependencias de los artículos o elementos de datos representados por los vértices/campos en el gráfico. Por ejemplo, la aplicación de consumo 104 puede aplicar formateado, estructura, restricciones y/o parámetros a los artículos de datos o elementos de datos que consume, y el formateado, estructura, restricciones y/o parámetros (por ejemplo, una configuración de la aplicación de consumo) pueden afectar a una estructura del gráfico 158 y/o pueden afectar a las ubicaciones, cantidad y tamaño de los límites de ejecución 160 dentro de los gráficos. Los cambios en valores de los artículos o elementos de datos pueden alterar adicionalmente la propia estructura de gráfico. Por ejemplo, cuando se añade un artículo o elemento de datos que incluye una expresión que contiene una función con parámetros que hacen referencia a otros artículos o elementos de datos a un conjunto de datos, puede añadirse un vértice/campo al gráfico para reflejar la adición.
Como un ejemplo no limitante de una aplicación de las realizaciones de la presente divulgación, el entorno 100 puede configurarse para facilitar la finalización de un conjunto de formularios fiscales para una tramitación fiscal del IRS 1040, en el que los formularios se almacenan como archivos de ordenador (por ejemplo, archivos XML, archivos HTML, archivos PDF, etc.) a través de uno o más dispositivos de almacenamiento de datos. Cada uno de los formularios puede incluir uno o más campos que pueden rellenarse con o definirse por expresiones o valores literales. En el presente ejemplo, cada uno de los formularios puede corresponder a artículos de datos y cada uno de los campos dentro de los formularios puede corresponder a elementos de datos. Los formularios pueden definirse para crear dependencias entre ciertos campos dentro de un formulario o a través de uno o más formularios, por ejemplo, uno o
más campos pueden hacer referencia a uno o más otros campos. Es decir, un campo en un formulario puede depender de o hacer referencia a otro campo en el formulario y/o puede depender de o hacer referencia a uno o más campos en uno o más formularios diferentes. Por ejemplo, la línea 26 del formulario 1040 hace referencia a la línea 5 del formulario 3903. El motor de datos 150 puede mantener el estado de los formularios y campos y puede reconocer las dependencias entre los formularios y campos para definir un gráfico acíclico dirigido implícito para los formularios y campos.
Para separar el gráfico en límites, el motor de datos 150 puede determinar si una aplicación fiscal (por ejemplo, una de las aplicaciones 104) está configurada para visualizar simultáneamente ciertos formularios a un usuario que incluyen datos interrelacionados. Cuando la aplicación está configurada de tal forma que formularios que incluyen datos interrelacionados nunca se visualizan simultáneamente a un usuario, el motor de datos 150 puede determinar que los formularios pueden agruparse en límites diferentes y separados. Por otra parte, cuando la aplicación está configurada para visualizar simultáneamente formularios dados a un usuario, el motor de datos 150 puede agrupar los formularios dados dentro del mismo límite. Separar los formularios en límites de esta manera puede garantizar que formularios que pueden visualizarse simultáneamente (e incluir datos relacionados) están dentro del mismo límite y que cambios dentro de cualquiera de los formularios dentro del mismo límite se propagan dentro del límite como una única transacción ACI (es decir, una serie de operaciones restringidas por el motor de datos 150 de acuerdo con las propiedades de atomicidad, coherencia y aislamiento), mientras que formularios en otro límite que se ven afectados por cambios en el límite se procesan de forma asíncrona como transacciones ACI separadas por el motor de datos 150.
Continuando con el ejemplo anterior, un cambio en la línea 1 en el formulario 3903 de la tramitación fiscal del IRS 1040 en la aplicación fiscal puede ser un evento que desencadenará finalmente un cambio en un valor para la línea 26 del formulario 1040, en el que los formularios 3903 y 1040 nunca se visualizan simultáneamente por la aplicación fiscal y, por lo tanto, pueden residir en diferentes límites. El motor de datos 150 puede procesar este evento de límites cruzados (es decir, el desencadenamiento de un cambio en la línea 26 del formulario 1040 basándose en un cambio en el formulario 3903) de forma asíncrona a partir de la transacción que procesa los cambios en los campos dentro del formulario 3903, proporcionando una coherencia final a través de límites. Esta coherencia final conseguida por las realizaciones del motor de datos 150 puede volverse cada vez más importante a medida que aumenta la cantidad de formularios/campos o más generalmente a medida que aumenta la cantidad de artículos o elementos de datos (por ejemplo, el tamaño del gráfico crece) a cientos de miles o millones de formularios/campos.
Mientras el ejemplo anterior describe una aplicación del entorno a formularios fiscales, las realizaciones ilustrativas de la presente divulgación pueden implementarse de diversas maneras. Como se describe en este documento, el motor de datos 150 puede ejecutarse como un servicio que se llama o solicita de otra manera por una aplicación de consumo y puede operarse como un servicio independiente y distinto que es agnóstico al tipo de aplicaciones de consumo que pueden utilizar el servicio. Es decir, instancias o manifestaciones del motor de datos 150 pueden usarse simultáneamente por diversas aplicaciones de consumo, estando cada una dirigida a diferentes conjuntos y tipos de datos interrelacionados, y el motor de datos 150 puede implicar un gráfico para cada una de las diversas aplicaciones y establecer diferentes límites dentro de cada uno de los gráficos basándose en las dependencias entre los datos interrelacionados y la aplicación de consumo usada para consumir los datos interrelacionados. Definiendo el gráfico y los límites dentro del gráfico basándose en los datos y/o la aplicación de consumo, las realizaciones ilustrativas del motor de datos 150 proporcionan un servicio dinámico y flexible que puede utilizarse por cualquier aplicación que consume datos interrelacionados.
La Figura 2 muestra un entorno informático distribuido dentro del cual pueden implementarse las realizaciones de la presente divulgación. Como se muestra en la Figura 2, el entorno 200 puede incluir un sistema informático distribuido 210 que incluye recursos informáticos compartidos 212, tales como los servidores 214 y los dispositivos de almacenamiento de datos (duraderos) 216, que pueden acoplarse operativamente entre sí. Por ejemplo, dos o más de los recursos informáticos compartidos 212 pueden conectarse directamente entre sí o pueden conectarse entre sí a través de uno o más otros dispositivos de red, tal como conmutadores, encaminadores, concentradores y similares. Cada uno de los servidores 214 puede incluir al menos un dispositivo de procesamiento y cada uno de los dispositivos de almacenamiento de datos 216 puede incluir una memoria para almacenar unidades de datos interrelacionadas 218 (por ejemplo, artículos o elementos de datos) en uno o más conjuntos de datos, como se describe en este documento. Un servidor ilustrativo se representa en la Figura 4.
Uno cualquiera de los servidores 214 puede implementar instancias de la aplicación o aplicaciones de consumo 104 y/o el motor 150 o porciones del mismo. En algunas realizaciones, uno o más de los servidores 214 pueden ser un recurso informático especializado para implementar la aplicación o aplicaciones de consumo 104 y/o el motor 150. En algunas realizaciones, uno o más de los servidores 214 pueden agruparse dinámicamente para implementar colectivamente las realizaciones de la aplicación o aplicaciones de consumo 104 y/o el motor 150. En algunas realizaciones, uno o más servidores pueden implementar dinámicamente diferentes instancias de la aplicación o aplicaciones de consumo 104 y/o el motor 150.
El sistema informático distribuido 210 puede facilitar un entorno multiusuario y multipropietario que puede accederse simultáneamente por los dispositivos de usuario 250. Por ejemplo, los dispositivos de usuario 250 pueden acoplarse
operativamente a uno o más de los servidores 214 y/o los dispositivos de almacenamiento de datos 216 a través de una red de comunicación 290, que puede ser la Internet, una red de área extensa (WAN), red de área local (LAN) y/u otra red de comunicación adecuada. Los dispositivos de usuario 250 pueden ejecutar aplicaciones de lado de cliente 252 para acceder al sistema informático distribuido 210 a través de la red de comunicaciones 290. La aplicación o aplicaciones de lado de cliente 252 pueden incluir, por ejemplo, un explorador web y/o una aplicación específica (por ejemplo, una aplicación móvil). Un dispositivo de usuario de ilustrativo se representa en la Figura 5.
En realizaciones ilustrativas, los dispositivos de usuario 250 pueden iniciar comunicación con el sistema informático distribuido 210 a través de las aplicaciones de lado de cliente 252 para establecer sesiones de comunicación con el sistema informático distribuido 210 que permite que cada uno de los dispositivos de usuario 250 utilice la aplicación o aplicaciones de consumo 104 para acceder a, ver y modificar las unidades de datos interrelacionadas 218 (por ejemplo, artículos o elementos de datos) almacenadas por los dispositivos de almacenamiento de datos 216, como se describe en este documento. Por ejemplo, en respuesta al dispositivo de usuario 250a que accede al sistema informático distribuido 210, el servidor 214a puede lanzar una instancia de la aplicación de consumo 104, que a su vez puede llamar o solicitar el motor 150, una instancia del cual puede lanzarse en el servidor 214b o colectivamente a través de un grupo de los servidores 214. En realizaciones que utilizan multipropiedad, si una instancia del motor 150 ya se ha lanzado, la instancia puede procesar cambios en datos para múltiples usuarios.
Tras ser lanzado, el motor 150 puede identificar el estado actual de las unidades de datos interrelacionadas almacenadas en ubicaciones de memoria de uno o más de los dispositivos de almacenamiento de datos 216, identificar dependencias entre las unidades de datos interrelacionadas, por ejemplo, para asociar las unidades de datos interrelacionadas con vértices/campos de un gráfico acíclico dirigido implícito o explícito, y separar las unidades de datos interrelacionadas en grupos basándose en las dependencias entre las unidades de datos interrelacionadas y/o una configuración de la aplicación de consumo 104 que llama o solicita el motor 150. Por ejemplo, el servidor 214b puede leer las unidades de datos interrelacionadas de los dispositivos de almacenamiento de datos 216 y puede almacenar el estado actual de las unidades de datos interrelacionadas en uno o más dispositivos de memoria a través de uno o más de los servidores 214 para crear una memoria caché del estado. Basándose en el estado almacenado en memoria caché, el servidor 214b puede extraer las dependencias entre las unidades de datos interrelacionadas para formar el gráfico acíclico dirigido implícito o explícito. El servidor 214b puede separar el gráfico acíclico dirigido en límites basándose en las dependencias entre las unidades de datos interrelacionadas y/o si la aplicación de consumo está configurada para visualizar simultáneamente las unidades de datos interrelacionadas a uno o más usuarios.
Debido a que el gráfico acíclico dirigido se basa en las dependencias entre las unidades de datos interrelacionadas y los límites se basan en las dependencias entre las unidades de datos interrelacionadas y/o una configuración de la aplicación de consumo 104, el gráfico y los límites para un conjunto de datos dado pueden cambiarse por el motor 150 dinámicamente a medida que cambian las unidades de datos interrelacionadas y/o a medida que cambia la aplicación de consumo. El motor 150 puede implementarse sin discontinuidades para diferentes conjuntos de datos que se consumen por diferentes tipos de aplicación (es decir, el motor 150 es independiente de y agnóstico al tipo de datos interrelacionados y el tipo de aplicación que consume los datos interrelacionados). Esto permite los datos interrelacionados específicos y aplicación que consume los datos interrelacionados para dictar el formulario del gráfico y la ubicación de los límites dentro del gráfico.
Por ejemplo, usuarios, a través de los dispositivos de usuario 250, pueden actualizar un conjunto de datos interrelacionados al sistema informático distribuido, y uno o más de los servidores 214 pueden almacenar las unidades de datos (por ejemplo, artículos o elementos de datos) en el conjunto a través de los dispositivos de almacenamiento de datos (es decir, en ubicaciones de memoria de los dispositivos de almacenamiento de datos 216) y especificar una aplicación de consumo particular que consumirá el conjunto de datos. El motor de datos 150 puede asociar las unidades de datos en el conjunto con uno o más vértices/campos de un gráfico acíclico dirigido implícito (por ejemplo, cada vértice/campo puede incluir un valor) que tiene bordes dirigidos que corresponden a las dependencias entre los vértices/campos y puede designar límites para porciones del gráfico acíclico dirigido de tal forma que cada límite incluye un subconjunto del conjunto de datos basándose en cómo se usará y/o presentará la aplicación que consume el conjunto de datos el conjunto de datos en una o más interfaces gráficas de usuario. Cada valor del uno o más vértices/campos puede importarse en el motor 150 desde sus respectivas ubicaciones de memoria para generar un estado actual para el conjunto de datos que puede almacenarse en memoria caché en la memoria de uno o más de los servidores 214.
Un usuario puede interactuar posteriormente con la aplicación de consumo, por ejemplo, a través de la aplicación de lado de cliente para modificar una de las unidades de datos en el conjunto. En respuesta a la modificación a la unidad de datos, la aplicación de consumo 104 puede llamar o solicitar que el motor 150 actualice la unidad de datos almacenados en el dispositivo o dispositivos de almacenamiento de datos basándose en la modificación, que puede importarse al motor 150 desde la aplicación de consumo. El motor 150 puede determinar dentro de qué límite reside la unidad de datos modificada y puede identificar las dependencias entre otras unidades de datos en el límite y la unidad de datos modificada, y puede entrar en una transacción ACI (una serie de operaciones que utilizan las propiedades de atomicidad, coherencia y aislamiento) para actualizar la unidad de datos modificada y cada una de las otras unidades de datos en el límite que dependen, directa o indirectamente, de la unidad de datos modificada.
Por ejemplo, el servidor o servidores que realizan la transacción ACI pueden restringir el acceso a las ubicaciones de memoria en los dispositivos de almacenamiento de datos que almacenan las unidades de datos afectadas dentro del límite o que almacenan cada una de las unidades de datos asociadas con el límite. Restringir el acceso a las ubicaciones de memoria puede evitar el acceso simultáneo a la ubicación de almacenamiento de las unidades de datos afectadas hasta que se completa la transacción ACI y puede evitar que la aplicación de consumo actualice la interfaz de usuario para visualizar un estado no fiable intermedio de las unidades de datos dentro del límite a usuarios. Como un ejemplo no limitante, el servidor o servidores pueden restringir el acceso a ubicaciones de memoria afectadas bloqueando las ubicaciones de memoria afectadas para evitar que se produzcan lecturas o escrituras con respecto a las ubicaciones de memoria bloqueadas. Como otro ejemplo no limitante, el servidor o servidores pueden restringir el acceso a las ubicaciones de memoria creando una copia del contenido/valores de ubicaciones de memoria afectadas a otras ubicaciones de memoria y pueden redirigir las lecturas y escrituras (por ejemplo, a través de punteros) a las otras ubicaciones de memoria. En algunas realizaciones, el servidor o servidores que procesan los cambios en los datos almacenados en las ubicaciones de memoria afectadas pueden sobrescribirse a medida que los cambios de procesados. En algunas realizaciones, los cambios pueden almacenarse en una memoria caché u otras ubicaciones de almacenamiento especificadas y los cambios pueden escribirse en las ubicaciones de memoria afectadas copiando los datos actualizados desde la memoria caché u otra ubicación de almacenamiento especificada a las ubicaciones de memoria afectadas. Antes de que pueda completarse la transacción ACI, el servidor que realiza la transacción ACI puede requerir que todas las unidades de datos afectadas se actualicen satisfactoriamente. El servidor o servidores que realizan la transacción ACI pueden actualizar el estado de las unidades de datos que dependen de cada unidad de datos anteriormente actualizada dentro del límite, por ejemplo, realizando una serie de cálculos para generar nuevos valores para las unidades de datos afectadas dentro del límite. El estado actualizado puede almacenarse en la memoria caché hasta que se completa la transacción ACI. Tras la finalización de la transacción ACI, el servidor o servidores que realizan la transacción ACI puede sobrescribir las ubicaciones de memoria en los dispositivos de almacenamiento de datos que corresponden a las unidades de datos afectadas basándose en el estado actualizado, en cuyo momento el servidor o servidores que realizan la transacción ACI pueden eliminar restricciones (por ejemplo, desbloquear) de las ubicaciones de memoria para permitir que la aplicación de consumo actualice la interfaz de usuario para reflejar cualquier unidad de datos modificada que se representa por la interfaz de usuario para permitir que los usuarios que ven las unidades de datos afectadas vean las unidades de datos modificadas.
Mientras el servidor o servidores que realizan la transacción ACI aplican atomicidad, coherencia y aislamiento a las unidades de datos durante la transacción ACI para un límite dado, el servidor o servidores que realizan la transacción ACI no extienden la atomicidad, coherencia y requisitos de aislamiento de la transacción ACI a unidades de datos fuera del límite; limitando de este modo la restricción (por ejemplo, bloqueo) de las ubicaciones de memoria y el tamaño de la transacción basándose en el límite. Esto puede reducir ventajosamente la probabilidad de contiendas de acceso a datos, facilitar una asignación eficiente de recursos informáticos que incluyen recursos de procesador y recursos de memoria basándose en los límites de ejecución y/o habilitar el escalado en el sistema informático distribuido 210 a medida que aumenta la cantidad de datos. T ras la finalización de la transacción, el motor 150 puede ejecutarse por el servidor o servidores para actualizar uno o más vértices/campos en el gráfico acíclico dirigido para reflejar las unidades de datos actualizadas y ajustar los límites si los cambios en las unidades de datos efectúan los límites.
Cuando las unidades de datos en otro límite dependen, directa o indirectamente, de una o más de las unidades de datos modificadas en el límite, el motor 150 puede ejecutarse para iniciar otra transacción ACI separada para actualizar las unidades de datos que dependen, directa o indirectamente, de las unidades de datos modificadas asociadas con el límite, que puede realizarse de forma asíncrona de la transacción ACI realizada para actualizar artículos de datos dentro del límite. Realizando las transacciones ACI basándose en los límites dentro del gráfico, en lugar de realizar una única transacción para actualizar todos los datos afectados en un conjunto de datos, que puede resultar en que se restrinjan un gran número de ubicaciones de memoria que (por ejemplo, bloquean) y que se requiera un gran número de recursos para actualizar los datos, las realizaciones ilustrativas del motor 150 pueden ejecutarse para generar transacciones ACI separadas para cada límite, en la que cada transacción puede realizarse de forma asíncrona entre sí. Como resultado, pueden restringirse (por ejemplo, bloquearse) menos ubicaciones de memoria en cualquier momento dado, puede reducirse una duración de tiempo en el que restringe (por ejemplo, bloquea) cada ubicación de memoria, y puede conseguirse una asignación eficiente de recursos informáticos; proporcionando de este modo menos contiendas para recursos de memoria y/o de procesador.
En realizaciones ilustrativas, en respuesta a la recepción de un cambio en los datos en un primero de los grupos/subconjuntos de datos dentro de un límite, el motor 150 puede asignar un primer conjunto de los dispositivos de procesamiento que incluye uno o más dispositivos de procesamiento para modificar los datos en el primero de los grupos como una transacción atómica, coherente y aislada basándose en las dependencias entre los datos. Cuando las dependencias entre los datos se extienden a grupos/subconjuntos de datos en otros límites, el motor 150 puede asignar conjuntos adicionales de dispositivos de procesamiento que incluyen uno o más dispositivos de procesamiento para cada límite para modificar los datos en los otros grupos/subconjuntos de datos como transacciones atómicas, coherentes, asilados independientes y distintas basándose en los cambios hechos en los datos en el primer grupo de los que dependen los datos en el segundo grupo. El motor 150 puede realizar las nuevas transacciones atómicas, coherentes y aisladas de forma asíncrona de la transacción y puede realizar las nuevas transacciones en paralelo usando diferentes recursos informáticos.
La Figura 3 muestra un entorno informático distribuido 300 dentro del cual pueden implementarse las realizaciones de la presente divulgación. Como se muestra en la Figura 3, el entorno 300 puede incluir un sistema informático distribuido 310 que incluye recursos informáticos compartidos 312, tales como los servidores 314 y los dispositivos de almacenamiento de datos (duraderos) 316, que pueden acoplarse operativamente entre sí. Por ejemplo, dos o más de los recursos informáticos compartidos 312 pueden conectarse directamente entre sí o pueden conectarse entre sí a través de uno o más otros dispositivos de red, tal como conmutadores, encaminadores, concentradores y similares. Cada uno de los servidores 314 puede incluir al menos un dispositivo de procesamiento y cada uno de los dispositivos de almacenamiento de datos 316 puede incluir una memoria para almacenar unidades de datos 318 (por ejemplo, artículos y/o elementos de datos) en uno o más conjuntos de datos, como se describe en este documento. Uno cualquiera de los servidores 314 puede implementar instancias del motor 150 o porciones del mismo. En algunas realizaciones, uno o más de los servidores 214 pueden ser un recurso informático especializado para implementar el motor 150. En algunas realizaciones, uno o más de los servidores 214 pueden agruparse dinámicamente para implementar colectivamente las realizaciones del motor 150. En algunas realizaciones, uno o más servidores pueden implementar dinámicamente diferentes instancias del motor 150.
El sistema informático distribuido 310 puede facilitar un entorno multiusuario y multipropietario que puede accederse simultáneamente por los dispositivos de usuario 350. Por ejemplo, los dispositivos de usuario 350 pueden acoplarse operativamente a uno o más de los servidores 314 y/o los dispositivos de almacenamiento de datos 316 a través de una red de comunicación 390, que puede ser la Internet, una red de área extensa (WAN), red de área local (LAN) y/u otra red de comunicación adecuada. Los dispositivos de usuario 350 pueden ejecutar instancias de la aplicación o aplicaciones de consumo 104 para acceder al sistema informático distribuido 210 a través de la red de comunicaciones 290.
En realizaciones ilustrativas, los dispositivos de usuario 350 pueden iniciar una comunicación con el sistema informático distribuido 310 a través de la aplicación o aplicaciones de consumo 104 para establecer sesiones de comunicación con el sistema informático distribuido 310 que permite que cada uno de los dispositivos de usuario 350 acceda, vea y modifique las unidades de datos (por ejemplo, artículos o elementos de datos) almacenadas por los dispositivos de almacenamiento de datos 316, como se describe en este documento. Por ejemplo, en respuesta al dispositivo de usuario 352a que accede al sistema informático distribuido 310, la aplicación de consumo 104 puede llamar o solicitar el motor 150, una instancia del cual puede lanzarse en el servidor 314a o colectivamente a través de un grupo de los servidores 314. En realizaciones que utilizan multipropiedad, si una instancia del motor 150 ya se ha lanzado, la instancia puede procesar cambios en datos para múltiples usuarios. El servidor o servidores que ejecutan el motor 150 puede identificar el estado actual de las unidades de datos almacenadas en ubicaciones de memoria de uno o más de los dispositivos de almacenamiento de datos 316, identificar dependencias entre las unidades de datos, por ejemplo, para asociar las unidades de datos con vértices/campos de un gráfico acíclico dirigido implícito o explícito, y separar las unidades de datos en grupos basándose en las dependencias entre las unidades de datos y/o una configuración de la aplicación de consumo 104 que llamó o solicitó el motor 150.
Un usuario puede interactuar con la aplicación de consumo 104 para modificar una de las unidades de datos en el conjunto de datos. En respuesta a la modificación a la unidad de datos, la aplicación de consumo 104 puede llamar o solicitar que el motor 150 actualice el estado de las unidades de datos en los dispositivos de almacenamiento de datos basándose en la modificación. El motor 150 puede determinar dentro de qué límite reside la unidad de datos modificada y puede identificar las dependencias de las unidades de datos dentro del límite que incluye la unidad de datos modificada y puede entrar en una transacción ACI para actualizar la unidad de datos modificada y cada una de las otras unidades de datos dentro del límite que dependen, directa o indirectamente, del artículo o elemento de datos modificado, como se describe en este documento (por ejemplo, con respecto a las Figuras 1 y 2). Pueden realizarse transacciones ACI adicionales de forma asíncrona a la transacción ACI y entre sí para cada uno de los otros límites que incluyen unidades de datos que dependen, directa o indirectamente, de la unidad de datos modificada, como se describe en este documento.
La Figura 4 es un diagrama de bloques de un dispositivo informático 400 ilustrativo para implementar uno o más de los servidores de acuerdo con realizaciones de la presente divulgación. En la presente realización, el dispositivo informático 400 está configurado como un servidor que se programa y/o configura para ejecutar una o más de las operaciones y/o funciones para realizaciones del entorno descrito en este documento (por ejemplo, la aplicación o aplicaciones 104 y/o el motor 150) y para facilitar comunicación con los dispositivos de usuario descritos en este documento (por ejemplo, el dispositivo o dispositivos de usuario 250 y 350). El dispositivo informático 400 incluye uno o más medios legibles por ordenador no transitorios para almacenar una o más instrucciones ejecutables por ordenador o software para implementar realizaciones ilustrativas. Los medios legibles por ordenador no transitorios pueden incluir, pero sin limitación, uno o más tipos de memoria de hardware, medios tangibles no transitorios (por ejemplo, uno o más discos de almacenamiento magnético, uno o más discos ópticos, una o más unidades flash) y similares. Por ejemplo, la memoria 406 incluida en el dispositivo informático 400 puede almacenar instrucciones legibles por ordenador y ejecutables por ordenador o software para implementar realizaciones ilustrativas de los componentes/módulos o porciones de los mismos descritos en este documento según se implementan, por ejemplo, por los servidores 214 y/o 314, y/o puede proporcionar una memoria caché para mantener el estado de las unidades de datos almacenadas por uno o más dispositivos de almacenamiento de datos acoplados operativamente al
dispositivo informático 400. El dispositivo informático 400 también incluye un procesador configurable y/o programare 402 y núcleo asociado 404, y opcionalmente, uno o más procesador o procesadores configurables y/o programables adicionales 402' y núcleo o núcleos asociados 404' (por ejemplo, en el caso de sistemas informáticos que tienen múltiples procesadores/núcleos), para ejecutar instrucciones legibles por ordenador y ejecutables por ordenador o software almacenado en la memoria 406 y otros programas para controlar hardware de sistema. Cada uno del procesador 402 y del procesador o procesadores 402' puede ser un procesador de un solo núcleo o procesador de múltiples núcleos (404 y 404').
La virtualización puede emplearse en el dispositivo informático 400 de modo que la infraestructura y recursos en el dispositivo informático pueden compartirse dinámicamente. Pueden proporcionarse una o más máquinas virtuales 414 para tratar un proceso que se ejecuta en múltiples procesadores de modo que el proceso parece estar usando únicamente un recurso informático en lugar de múltiples recursos informáticos. También pueden usarse múltiples máquinas virtuales con un procesador.
La memoria 406 puede incluir una memoria de sistema informático o memoria de acceso aleatorio, tal como DRAM, SRAM, EDO RAM y similares. La memoria 406 también puede incluir otros tipos de memoria o combinaciones de las mismas.
El dispositivo informático 400 puede incluir o acoplarse operativamente a uno o más dispositivos de almacenamiento de datos 424, tales como un disco duro, CD-ROM, unidad flash de almacenamiento masivo u otro medio legible por ordenador, para almacenar datos (por ejemplo, artículos o elementos de datos descritos en este documento) e instrucciones legibles por ordenador y/o software que pueden ejecutarse por el dispositivo de procesamiento 402 para implementar realizaciones ilustrativas de los componentes/módulos descritos en este documento con referencia a los servidores 214 y/o 314.
El dispositivo informático 400 puede incluir una interfaz de red 412 configurada para interactuar a través de uno o más dispositivos de red 420 con una o más redes, por ejemplo, Red de Área Local (LAN), Red de Área Extensa (WAN) o la Internet a través de una diversidad de conexiones que incluyen, pero sin limitación a, líneas telefónicas estándar, enlaces LAN o WAN (por ejemplo, 802.11, T1, T3, 56kb, X.25), conexiones de banda ancha (por ejemplo, ISDN, Retransmisión de Tramas, ATM), conexiones inalámbricas (incluyendo a través de estaciones base celulares), red de área de controlador (CAN) o alguna combinación de cualquiera o todos los anteriores. La interfaz de red 412 puede incluir un adaptador de red incorporado, tarjeta de interfaz de red, tarjeta de red PCMCIA, adaptador de red de bus de tarjeta, adaptador de red inalámbrica, adaptador de red de USB, módem o cualquier otro dispositivo adecuado para interactuar con el dispositivo informático 400 a cualquier tipo de red con capacidad de comunicación y de realizar las operaciones descritas en este documento. Mientras el dispositivo informático 400 representado en la Figura 4 se implementa como un servidor, las realizaciones ilustrativas del dispositivo informático 400 pueden ser cualquier sistema informático, tal como una estación de trabajo, ordenador de sobremesa u otra forma de dispositivo informático o de telecomunicaciones que es capaz de comunicarse con otros dispositivos o bien por comunicación inalámbrica o bien por comunicación por cable y que tiene suficiente potencia de procesador y capacidad de memoria para realizar las operaciones descritas en este documento.
El dispositivo informático 400 puede ejecutar cualquier aplicación de servidor 416, tal como cualquiera de las versiones de aplicaciones de servidor que incluyen cualquier aplicación de servidor basada en Unix, aplicación de servidor basada en Linux, cualquier aplicación de servidor propietaria o cualquier otra aplicación de servidor capaz de ejecutarse en el dispositivo informático 400 y realizar las operaciones descritas en este documento. Un ejemplo de una aplicación de servidor que puede ejecutarse en el dispositivo informático incluye la aplicación de servidor Apache.
La Figura 5 es un diagrama de bloques de un dispositivo informático 500 ilustrativo para implementar uno o más de los dispositivos de usuario (por ejemplo, el dispositivo de usuario 250 y/o 350) de acuerdo con realizaciones de la presente divulgación. En la presente realización, el dispositivo informático 500 está configurado como un dispositivo de lado de cliente que se programa y/o configura para ejecutar una o más de las operaciones y/o funciones para realizaciones del entorno descrito en este documento (por ejemplo, las aplicaciones de lado de cliente 252 y/o las aplicaciones de consumo 104) y para facilitar la comunicación con los servidores descritos en este documento (por ejemplo, los servidores 214 y 216). El dispositivo informático 500 incluye uno o más medios legibles por ordenador no transitorios para almacenar una o más instrucciones ejecutables por ordenador o software para implementar realizaciones ilustrativas de la aplicación descrita en este documento (por ejemplo, las realizaciones de las aplicaciones de lado de cliente 252 y/o las aplicaciones de consumo 104). Los medios legibles por ordenador no transitorios pueden incluir, pero sin limitación, uno o más tipos de memoria de hardware, medios tangibles no transitorios (por ejemplo, uno o más discos de almacenamiento magnético, uno o más discos ópticos, una o más unidades flash) y similares. Por ejemplo, la memoria 506 incluida en el dispositivo informático 500 puede almacenar instrucciones legibles por ordenador y ejecutables por ordenador, código o software para implementar realizaciones ilustrativas de las aplicaciones de lado de cliente 252 y/o las aplicaciones de consumo 104 o porciones de las mismas.
El dispositivo informático 500 también incluye un procesador configurable y/o programable 502 y núcleo asociado 504, y opcionalmente, uno o más procesador o procesadores configurables y/o programables adicionales 502' y núcleo o núcleos asociados 504' (por ejemplo, en el caso de sistemas informáticos que tienen múltiples procesadores/núcleos),
para ejecutar instrucciones legibles por ordenador y ejecutables por ordenador, código o software almacenado en la memoria 506 y otros programas para controlar hardware de sistema. Cada uno del procesador 502 y del procesador o procesadores 502' puede ser un procesador de un solo núcleo o procesador de múltiples núcleos (504 y 504').
La virtualización puede emplearse en el dispositivo informático 500 de modo que la infraestructura y recursos en el dispositivo informático pueden compartirse dinámicamente. Puede proporcionarse una máquina virtual 514 para tratar un proceso que se ejecuta en múltiples procesadores de modo que el proceso parece estar usando únicamente un recurso informático en lugar de múltiples recursos informáticos. También pueden usarse múltiples máquinas virtuales con un procesador.
La memoria 506 puede incluir una memoria de sistema informático o memoria de acceso aleatorio, tal como DRAM, SRAM, MRAM, EDO RAM y similares. La memoria 506 también puede incluir otros tipos de memoria o combinaciones de las mismas.
Un usuario puede interactuar con el dispositivo informático 500 a través de un dispositivo de visualización visual 518, tal como un monitor de ordenador, que puede acoplarse operativamente, indirecta o directamente, al dispositivo informático 500 para visualizar una o más de interfaces gráficas de usuario que pueden proporcionarse por las aplicaciones de lado de cliente 252 y/o las aplicaciones de consumo 104 de acuerdo con realizaciones ilustrativas. El dispositivo informático 500 puede incluir otros dispositivos de E/S para recibir una entrada desde un usuario, por ejemplo, un teclado o cualquier interfaz táctil multipunto 508 adecuada y un dispositivo apuntador 510 (por ejemplo, un ratón). El teclado 508 y el dispositivo apuntador 510 pueden acoplarse al dispositivo de visualización visual 518. El dispositivo informático 500 puede incluir otros periféricos de E/S adecuados.
El dispositivo informático 500 también puede incluir o acoplarse operativamente a uno o más dispositivos de almacenamiento 524, tal como un disco duro, CD-ROM u otro medio legible por ordenador, para almacenar datos e instrucciones legibles por ordenador, código ejecutable y/o software que implementan realizaciones ilustrativas de una aplicación 526 o porciones de la misma así como procesos asociados descritos en este documento.
El dispositivo informático 500 puede incluir una interfaz de red 512 configurada para interactuar a través de uno o más dispositivos de red 520 con una o más redes, por ejemplo, Red de Área Local (LAN), Red de Área Extensa (WAN) o la Internet a través de una diversidad de conexiones que incluyen, pero sin limitación a, líneas telefónicas estándar, enlaces LAN o WAN (por ejemplo, 802.11, T1, T3, 56kb, X.25), conexiones de banda ancha (por ejemplo, ISDN, Retransmisión de Tramas, ATM), conexiones inalámbricas, red de área de controlador (CAN) o alguna combinación de cualquiera o todos los anteriores. La interfaz de red 512 puede incluir un adaptador de red incorporado, tarjeta de interfaz de red, tarjeta de red PCMCIA, adaptador de red de bus de tarjeta, adaptador de red inalámbrica, adaptador de red de USB, módem o cualquier otro dispositivo adecuado para interactuar con el dispositivo informático 500 a cualquier tipo de red con capacidad de comunicación y de realizar las operaciones descritas en este documento. Además, el dispositivo informático 500 puede ser cualquier sistema informático, tal como una estación de trabajo, ordenador de sobremesa, servidor, portátil, ordenador de bolsillo, ordenador de tableta (por ejemplo, el ordenador de tableta iPad™), dispositivo informático o de comunicación móvil (por ejemplo, el dispositivo de comunicación iPhone™), terminal de punto de venta, dispositivos corporativos internos u otra forma de dispositivo informático o de telecomunicaciones que es capaz de comunicación y que tiene suficiente potencia de procesador y capacidad de memoria para realizar los procesos y/u operaciones descritas en este documento.
El dispositivo informático 500 puede ejecutar cualquier sistema operativo 516, tal como cualquiera de las versiones de los sistemas operativos Microsoft® Windows®, las diferentes versiones de los sistemas operativos Unix y Linux, cualquier versión de MacOS® para los ordenadores Macintosh, cualquier sistema operativo embebido, cualquier sistema operativo en tiempo real, cualquier sistema operativo de código abierto, cualquier sistema operativo propietario o cualquier otro sistema operativo con capacidad de ejecutarse en el dispositivo informático y realizar los procesos y/u operaciones descritas en este documento. En realizaciones ilustrativas, el sistema operativo 516 puede ejecutarse en modo nativo y modo emulado. En una realización ilustrativa, el sistema operativo 516 puede ejecutarse es una o más instancias de máquina en la nube.
La Figura 6 es un ejemplo ilustrativo de una representación gráfica de un gráfico acíclico dirigido 600 que puede formarse implícita o explícitamente por realizaciones ilustrativas de la presente divulgación. Como se muestra en la Figura 6, el gráfico 600 puede incluir vértices 610 y bordes dirigidos 620, en el que los vértices 610 corresponden a unidades de datos (por ejemplo, artículos o elementos de datos) que incluyen valores literales y/o expresiones y los bordes 620 corresponden a dependencias entre las unidades de datos representadas por los vértices 610. Como se describe en este documento, las realizaciones del motor descrito en este documento pueden formar el gráfico identificando las dependencias entre las unidades de datos. La dirección de los bordes 620 puede indicar la relación entre los nodos. Por ejemplo, el borde 621 entre los vértices 611 y 612 indica que el vértice 612 representa una unidad de datos que depende de la unidad de datos representada por el vértice 611 de tal forma que un cambio en la unidad de datos representada por el vértice 611 desencadena un cambio en la unidad de datos representada por el vértice 612.
Los vértices 610 y bordes 620 pueden formar trayectorias que pueden seguirse por el motor 150 cuando se actualizan
los datos de acuerdo con el gráfico 600. Por ejemplo, el vértice 611 no depende de ninguno de los otros vértices 610 en el gráfico 600 y, por lo tanto, forma un punto de inicio de una trayectoria. Un único borde 621 se extiende desde el vértice 611 hasta el vértice 612. En el caso en el que un usuario modifica la unidad de datos representada por el vértice 611, el motor puede seguir la trayectoria al vértice 612 a través del borde 621 para actualizar la unidad de datos representada por el vértice 612 basándose en la unidad modificada de datos representados por el vértice 611. Posteriormente, el motor puede continuar actualizando la siguiente unidad de datos en la trayectoria representada por el vértice 613, que se conecta al vértice 612 por el borde 622, basándose en la unidad actualizada de datos representados por el vértice 612. Finalmente, la unidad de datos representada por el vértice 614, que se conecta al vértice 613 por el borde 623, puede actualizarse basándose en la unidad actualizada de datos representados por el vértice 613. Ya que ningún otro vértice en el gráfico depende del vértice 614, el nodo 614 representa el extremo de la trayectoria entre los vértices 611 y 614. Debido a que el gráfico 600 es un gráfico acíclico dirigido, el gráfico 600 no incluye ninguna trayectoria que forma un bucle (por ejemplo, un vértice no puede estar presente más de una vez en ninguna trayectoria dada).
La Figura 7 es un ejemplo ilustrativo de límites que pueden formarse dentro del gráfico acíclico dirigido 600 de acuerdo con realizaciones ilustrativas de la presente divulgación. Como se muestra en la Figura 7, los límites 700, 710, 720 y 730 pueden formarse para abarcar grupos/subconjuntos de los vértices 610 basándose en la aplicación que consume las unidades de datos representadas por los vértices 610 y/o una dependencia entre las unidades de datos. Por ejemplo, los límites 700, 710, 720 y 730 pueden formarse basándose en una configuración de la aplicación de consumo, tal como cómo presenta la aplicación de consumo las unidades de datos a usuarios a través de la interfaz de usuario.
El límite 700 puede representar un grupo/subconjunto de datos autocontenido, por ejemplo, los vértices 610 en el límite 700 no dependen de ningún otro vértice y ningún otro vértice fuera del límite 700 depende de ninguno de los vértices dentro del límite 700. Cada uno de los límites 710, 720 y 730 puede ser dependiente de y/o depender de vértices de otros límites. Como un ejemplo, el borde 751 puede cruzar del límite 710 al límite 720 para conectar los vértices 711 y 721 que indican que la unidad de datos representada por el vértice 721 depende de la unidad de datos representada por el vértice 711. Como otro ejemplo, el borde 752 puede cruzar desde el límite 730 al límite 710 para conectar los vértices 731 y 712 que indican que la unidad de datos representada por el vértice 712 depende de la unidad de datos representada por el vértice 731. Como otro ejemplo, cada uno de los bordes 753-755 puede cruzar entre los límites 720 y 730 para conectar vértices en los límites 720 y 730 para indicar que las unidades de datos dependen de o son dependientes de otras unidades de datos (por ejemplo, el vértice 722 depende del vértice 732; el vértice 723 depende del vértice 733; y el vértice 734 depende del vértice 724).
La Figura 8 es un ejemplo ilustrativo de una propagación de cambios en unidades de datos en un conjunto de datos representados por ejemplo como el gráfico acíclico dirigido 600 con los límites 700, 710, 720 y 730 de acuerdo con las realizaciones ilustrativas de la presente divulgación. Como se muestra en la Figura 8, un usuario a través de la aplicación de consumo puede cambiar la unidad de datos representada por el vértice A (por ejemplo, puede cambiar un valor de la unidad de datos). En respuesta a este evento, en lugar de implementar una única transacción ACI para unidades de datos afectadas en el gráfico 600, las realizaciones del motor pueden asignar uno o más dispositivos de procesamiento y dispositivos de memoria desde los recursos informáticos compartidos para realizar una serie de transacciones ACI independientes y asíncronas para actualizar las unidades de datos afectadas dentro del gráfico basándose en los límites 700, 710, 720 y 730, en el que cada transacción ACI puede iniciarse en respuesta a eventos separados y distintos (en momentos diferentes) que resultan de la propagación de cambios en las unidades de datos representadas por los vértices en el gráfico 600. Por ejemplo, una primera transacción en la serie puede desencadenarse en respuesta a un primer evento que corresponde al cambio en la unidad de datos representada por el vértice A, mientras que otras transacciones a C i en el gráfico 600 pueden desencadenarse por otros eventos relacionados con el primer evento tal como la propagación de cambios en las unidades de datos a través de los límites 700, 710, 720 y 730 basándose en las dependencias entre las unidades de datos.
Para realizar la primera transacción ACI en respuesta al cambio en la unidad de datos representada por el vértice A, el motor puede asignar un primer conjunto de recursos informáticos compartidos que incluyen uno o más dispositivos de procesamiento y dispositivos de memoria. La primera transacción ACI puede incluir una serie de operaciones para actualizar la unidad de datos incluidos en vértice A y para actualizar cada unidad de datos que depende, directa o indirectamente, de la unidad de datos representada por el vértice A, que en el presente ejemplo incluyen los vértices B-H. Como se muestra en la Figura 8, tres trayectorias (vértices A-D; vértices A-C y E-G; y vértices A-C y H) se definen basándose en las dependencias entre las unidades de datos representadas por los vértices A-H. Como parte de la transacción ACI asociada con límite 730, el uno o más dispositivos de procesamiento que ejecutan la primera transacción ACI pueden bloquear ubicaciones de memoria en los dispositivos de memoria en los que se almacenan las unidades de datos representadas por los vértices A-H, mientras que las ubicaciones de memoria representadas por otros vértices en el gráfico permanecen desbloqueadas. Como alternativa, las realizaciones ilustrativas de la presente divulgación pueden bloquear ubicaciones de memoria en las que se almacenan cada una de las unidades de datos representadas por los vértices dentro del límite 730.
Una vez que se bloquean las ubicaciones de memoria, el uno o más dispositivos de procesamiento que realizan la primera transacción ACI pueden actualizar la unidad de datos representada por el vértice A, pueden actualizar
posteriormente la unidad de datos representada por el vértice B basándose en el cambio en la unidad de datos representada por el vértice A, y pueden actualizar posteriormente la unidad de datos representada por vértice C basándose en los cambios en la unidad de datos representada por el vértice B. Continuando siguiendo tres trayectorias basándose en las dependencias representada por los bordes entre los vértices, el dispositivo de procesamiento que realiza la primera transacción ACI puede actualizar las unidades de datos representadas por los vértices D, E-G y H en paralelo o secuencialmente. Cuando no hay cambios adicionales a hacer en las unidades de datos durante la primera transacción ACI, el uno o más dispositivos de procesamiento pueden completar la transacción y desbloquear las ubicaciones de memoria que se bloquearon durante la primera transacción ACI.
Como se muestra en la Figura 8, las unidades de datos representadas por los vértices P y O en el límite 720 dependen de las unidades de datos representadas por vértices D y H, respectivamente, y la unidad de datos representada por vértice I depende de la unidad de datos representada por vértice G. Por lo tanto, cuando las unidades de datos representadas por los vértices D, H y G cambian (por ejemplo, como parte de la primera transacción ACI), las unidades de datos representadas por los vértices P, O e I, respectivamente, tienen que actualizarse para mantener datos fiables y coherentes en el sistema. La propagación de cambios en través de los límites (por ejemplo, desde el límite 730 al 720 y desde el límite 730 al 710) puede representar eventos que desencadenan la realización de nuevas transacciones ACI en la serie.
Como un ejemplo, en respuesta a los cambios en las unidades de datos representadas por vértices D y H, el motor puede asignar un segundo conjunto de recursos informáticos compartidos que incluyen uno o más dispositivos de procesamiento y dispositivos de memoria para realizar una segunda transacción ACI. La segunda transacción ACI puede incluir una serie de operaciones para actualizar las unidades de datos incluidas en vértices P y O y para actualizar cada unidad de datos que depende, directa o indirectamente, de las unidades de datos representadas por los vértices P y O, que en el presente ejemplo incluyen vértices Q y R. Como parte de la segunda transacción ACI asociada dentro de límite 720, el uno o más dispositivos de procesamiento que ejecutan la segunda transacción ACI pueden bloquear ubicaciones de memoria en los dispositivos de memoria en los que se almacenan las unidades de datos representadas por los vértices O-R. Como alternativa, las realizaciones ilustrativas de la presente divulgación pueden bloquear ubicaciones de memoria en las que se almacenan cada una de las unidades de datos representadas por los vértices dentro del límite 720. Cuando no hay cambios adicionales a hacer en las unidades de datos durante la segunda transacción ACI, el uno o más dispositivos de procesamiento pueden completar la transacción y desbloquear las ubicaciones de memoria que se bloquearon durante la segunda transacción ACI.
Como otro ejemplo, en respuesta a los cambios en las unidades de datos representadas por el vértice G, el motor puede asignar un tercer conjunto de recursos informáticos compartidos que incluyen uno o más dispositivos de procesamiento y dispositivos de memoria para realizar una tercera transacción ACI. La tercera transacción ACI puede incluir una serie de operaciones para actualizar las unidades de datos incluidas en el vértice I y para actualizar cada unidad de datos que depende, directa o indirectamente, de las unidades de datos representadas por el vértice I, que en el presente ejemplo incluyen vértices J-L. Como parte de la tercera transacción a C i asociada dentro de límite 710, el uno o más dispositivos de procesamiento que ejecutan la tercera transacción ACI puede bloquear ubicaciones de memoria en los dispositivos de memoria en la que se almacenan las unidades de datos representadas por vértices I-L. Como alternativa, el uno o más dispositivos de procesamiento pueden bloquear ubicaciones de memoria en las que se almacenan cada una de las unidades de datos representadas por los vértices dentro de límite 710. Cuando no hay cambios adicionales a hacer en las unidades de datos durante la tercera transacción ACI, el uno o más dispositivos de procesamiento pueden completar la transacción y desbloquear las ubicaciones de memoria que se bloquearon durante la tercera transacción ACI.
La propagación continuada de cambios que resultan de la modificación inicial de la unidad de datos representada por el vértice A puede continuar a través del gráfico que resulta en la generación de eventos adicionales que desencadenan transacciones ACI adicionales en la serie de transacciones ACI. Como un ejemplo, durante la segunda transacción ACI para el límite 720, la unidad de datos representada por vértice R puede actualizarse, que puede desencadenar un cambio en la unidad de datos representada por el vértice S en el límite 730, resultando en la generación de una cuarta transacción ACI. La cuarta transacción ACI puede incluir una serie de operaciones para actualizar las unidades de datos incluidas en el vértice S y para actualizar cada unidad de datos que depende, directa o indirectamente, de las unidades de datos representadas por el vértice S, que en el presente ejemplo incluye el vértice T. Como parte de la cuarta transacción ACI asociada con límite 730, el uno o más dispositivos de procesamiento que ejecutan la cuarta transacción ACI pueden bloquear ubicaciones de memoria en los dispositivos de memoria en los que se almacenan las unidades de datos representadas por vértices S y T. Como alternativa, las realizaciones ilustrativas de la presente divulgación pueden bloquear ubicaciones de memoria en las que se almacenan cada una de las unidades de datos representadas por los vértices dentro del límite 730. Cuando no hay cambios adicionales a hacer en las unidades de datos durante la cuarta transacción ACI, el uno o más dispositivos de procesamiento pueden completar la transacción y desbloquear las ubicaciones de memoria que se bloquearon durante la cuarta transacción ACI.
Como otro ejemplo, durante la tercera transacción ACI, la unidad de datos representada por el vértice L puede actualizarse, que puede desencadenar un cambio en la unidad de datos representada por el vértice M en el límite 720, resultando en la generación de una quinta transacción ACI. La quinta transacción ACI puede incluir una serie de
operaciones para actualizar las unidades de datos incluidas en el vértice M y para actualizar cada unidad de datos que depende, directa o indirectamente, de las unidades de datos representadas por el vértice M, que en el presente ejemplo incluye los vértices N y U. Como parte de la quinta transacción ACI asociada con límite 720, el uno o más dispositivos de procesamiento que ejecutan la quinta transacción ACI pueden bloquear ubicaciones de memoria en los dispositivos de memoria en los que se almacenan las unidades de datos representadas por vértices M, N y U. Como alternativa, las realizaciones ilustrativas de la presente divulgación pueden bloquear ubicaciones de memoria en las que se almacenan cada una de las unidades de datos representadas por los vértices dentro del límite 720. Cuando no hay cambios adicionales a hacer en las unidades de datos durante la quinta transacción ACI, el uno o más dispositivos de procesamiento pueden completar la transacción y desbloquear las ubicaciones de memoria que se desbloquearon durante la quinta transacción ACI.
En realizaciones ilustrativas, el motor puede controlar una operación de los recursos compartidos para asignar la primera a quinta transacciones ACI a los dispositivos de procesamiento y también puede controlar cuándo se realizan la primera a quinta transacciones ACI. Por ejemplo, una o más de las transacciones ACI pueden realizarse en paralelo, simultáneamente o consecutivamente. La realización de las transacciones ACI puede planificarse basándose en si las ubicaciones de memoria que almacena unidades de datos a cambiar se han bloqueado por uno o más dispositivos de procesamiento que ya están realizando una transacción ACI. En algunas realizaciones, una o más de las transacciones ACI pueden ponerse en cola cuando una transacción ACI que ya se está realizando ha bloqueado la ubicación de memoria que necesita accederse por la una o más transacciones ACI.
Mientras las ubicaciones de memoria se han descrito como que están bloqueadas y/o desbloqueadas en realizaciones ilustrativas (por ejemplo, como se describe en las Figuras 8-13), las realizaciones ilustrativas pueden restringir el acceso a las ubicaciones de memoria usando una o más técnicas que mantienen la coherencia de linealizabilidad. Como un ejemplo, el acceso a las ubicaciones de memoria puede restringirse creando una copia de los datos almacenados en las ubicaciones de memoria y almacenando los datos copiados en ubicaciones de datos especificadas o una memoria caché. Usando este enfoque, todas las lecturas a las ubicaciones de memoria pueden redirigirse a las ubicaciones de memoria o memorias caché especificadas en las que se almacenan los datos copiados, mientras que las escrituras pueden producirse en las ubicaciones de memoria en las que se almacenan los datos originales. Una vez que se completan las escrituras, como una etapa final en la transacción, los datos copiados pueden eliminarse, y las lecturas posteriores pueden dirigirse de nuevo a las ubicaciones de memoria en las que se almacenan los datos originales (ahora modificados) para ver y/o usar los datos modificados que se escribieron. Este enfoque puede mantener la coherencia de linealizabilidad y puede permitir lecturas simultáneas y una única escritura a ejecutar simultáneamente. En algunas realizaciones, las lecturas pueden redirigirse a las ubicaciones de memoria o memoria caché especificadas por apuntadores. Los apuntadores pueden ser estáticos (por ejemplo, el mismo) para cada transacción o pueden generarse dinámicamente para cada transacción. En algunas realizaciones, los apuntadores pueden crearse por uno o más procesadores durante una transacción y pueden borrarse cuando se completa la transacción.
La Figura 9 muestra un diagrama de tiempo 900 ilustrativo para ilustrar una realización ilustrativa de la primera a quinta transacción ACI descrita con referencia a la Figura 8. Como se muestra en la Figura 9, el eje t corresponde a tiempo, la línea 902 corresponde a la primera transacción ACI, la línea 904 corresponde a la segunda transacción ACI, la línea 906 corresponde a la tercera transacción, la línea 908 corresponde a la cuarta transacción ACI y la línea 910 corresponde a la quinta transacción ACI. La línea 912 corresponde al tiempo total (ti-fe) requerido para completar la actualización de todas las unidades de datos afectadas en el conjunto de datos.
Como se muestra en la Figura 9, las primeras transacciones ACI para el límite 730 pueden comenzar en el momento ti, y pueden completarse en el momento t4. Durante la pendencia, y como resultado, de la primera transacción ACI, pueden producirse eventos en los momentos t 2 y t3, en los que pueden comenzar la segunda y tercera transacciones ACI, respectivamente. Debido a que la primera, segunda y tercera transacciones ACI se producen en límites separados, las ubicaciones de memoria bloqueadas por la primera, segunda y tercera transacciones no se solapan (por ejemplo, cada transacción bloquea ubicaciones de memoria distintas) y la primera, segunda y tercera transacciones ACI pueden producirse en paralelo. Por ejemplo, el motor puede asignar un primer dispositivo de procesamiento de un primer servidor para realizar la primera transacción a Ci, asignación de un segundo dispositivo de procesamiento de un segundo servidor para realizar la segunda transacción ACI, y puede asignar un tercer dispositivo de procesamiento de un tercer servidor para realizar la tercera transacción ACI. Cuando se completa la primera transacción ACI en el momento t4, el primer dispositivo de procesamiento puede desbloquear las ubicaciones de memoria que se desbloquearon para la primera transacción ACI.
Durante la pendencia, y como resultado, de la segunda transacción ACI (mostrada como la línea 904), puede producirse un evento en el momento t5, en el que puede comenzar la cuarta transacción ACI. En el momento t5, la tercera transacción ACI también puede aún estar pendiente, pero la primera transacción ACI se ha completado. Debido a que la segunda, tercera y cuarta transacciones ACI se producen en límites separados, y la primera transacción ACI ya se ha completado, las ubicaciones de memoria requeridas para completar la cuarta transacción no están bloqueadas por ninguna otra transacción pendiente y la segunda, tercera y cuarta transacciones ACI pueden producirse en paralelo. Por ejemplo, el segundo dispositivo de procesamiento del segundo servidor continúa realizando la segunda transacción ACI, el tercer dispositivo de procesamiento del tercer servidor continúa realizando la tercera
transacción ACI, y el motor puede asignar el primer procesador del primer servidor para procesar la cuarta transacción.
Durante la pendencia, y como resultado, la tercera transacción ACI (mostrada como la línea 906), puede producirse un evento en el momento t6, durante el que se genera la quinta transacción ACI. En el presente ejemplo, las realizaciones del motor pueden configurarse de tal forma que todas las ubicaciones de memoria dentro de un límite dado se bloquean cuando se realiza una transacción en el límite dado. En el momento t6, la segunda transacción ACI está aún pendiente. Debido a que la segunda y quinta transacciones ACI se realizan para el mismo límite (es decir, el límite 720), la quinta transacción ACI puede ponerse en cola por el motor hasta que se haya completado la segunda transacción ACI, que se produce en el momento t7. Por ejemplo, la quinta ACI puede comenzar en el momento t8 después de que se ha completado la segunda transacción ACI y la ubicación de memoria bloqueada por la segunda transacción ACI se desbloquea. En realizaciones alternativas, en las que se bloquean únicamente aquellas ubicaciones de memoria que corresponden a las unidades de datos a actualizar durante una transacción dada, la quinta transacción ACI puede comenzar cuando el evento se produce en t6, y mientras la segunda transacción ACI está pendiente, porque la segunda y quinta transacciones ACI no actualizan las mismas unidades de datos (es decir, no actualizan las mismas ubicaciones de memoria). La tercera, cuarta y quinta transacciones pueden completarse en los momentos tg, t 10 y tu, respectivamente.
La Figura 10 muestra otro diagrama de tiempo ilustrativo 1000 para ilustrar una realización ilustrativa de la primera a quinta transacciones ACI descritas con referencia a la Figura 8. Como se muestra en la Figura 10, el eje t corresponde a tiempo, la línea 1002 corresponde a la primera transacción ACI, la línea 1004 corresponde a la segunda transacción ACI, la línea 1006 corresponde a la tercera transacción, la línea 1008 corresponde a la cuarta transacción ACI y la línea 1010 corresponde a la quinta transacción ACI. La línea 1012 corresponde al tiempo total (t 1 -tg) requerido para completar la actualización de todas las unidades de datos afectadas en el conjunto de datos.
Como se muestra en la Figura 10, la primera transacción ACI para el límite 730 puede comenzar en el momento t 1 , y puede completarse en el momento t 2 . Tras la finalización de la primera transacción ACI, y como resultado de la primera transacción ACI, pueden generarse eventos que resultan en el comienzo de la segunda y tercera transacciones ACI (por ejemplo, en el momento t3). En el presente ejemplo, debido a que la segunda y tercera transacciones ACI se producen en límites separados, las ubicaciones de memoria bloqueadas por la segunda y tercera transacciones no se solapan (por ejemplo, cada transacción bloquea ubicaciones de memoria distintas) y la segunda y tercera transacciones ACI pueden producirse en paralelo. Por ejemplo, el motor puede asignar un primer dispositivo de procesamiento de un primer servidor para realizar la segunda transacción ACI, y puede asignar un segundo dispositivo de procesamiento de un segundo servidor para realizar la tercera transacción ACI.
Tras la finalización de la segunda transacción ACI en el momento t4, puede generarse un evento que resulta en el comienzo de la cuarta transacción ACI en el momento t5, y tras la finalización de la tercera transacción ACI en el momento t6, puede generarse un evento que resulta en el comienzo de la quinta transacción ACI en el momento t7. La tercera y cuarta transacciones ACI pueden producirse en paralelo porque la tercera y cuarta transacciones ACI se producen en límites separados, las ubicaciones de memoria bloqueadas por la tercera y cuarta transacciones no se solapan (por ejemplo, cada transacción bloquea ubicaciones de memoria distintas). Análogamente, la cuarta y quinta transacciones ACI pueden producirse en paralelo porque la cuarta y quinta transacciones ACI se producen en límites separados, las ubicaciones de memoria bloqueadas por la cuarta y quinta transacciones no se solapan (por ejemplo, cada transacción bloquea ubicaciones de memoria distintas). La cuarta y quinta transacciones ACI pueden completarse en los momentos t8 y tg.
Las Figuras 11A-D ilustran una presentación ilustrativa de un formulario 1100 (por ejemplo, como una interfaz gráfica de usuario) en respuesta a la ejecución de aplicación de consumo, en la que el formulario 1100 (por ejemplo, una instancia del formulario) se está representado simultáneamente en al menos dos dispositivos de usuario 1150 y 1152 a través de una red de comunicaciones de acuerdo con realizaciones de la presente divulgación. En el presente ejemplo no limitante, el formulario 1100 puede incluir los campos 1101-1104 que incluyen datos, en el que el formulario 1100 puede representar un elemento de datos de un conjunto de artículos de datos, y los datos en los campos 1101 1104 pueden representar elementos de datos. Los usuarios 1151 y 1153 pueden interactuar con el formulario 1100 para ver y modificar los elementos de datos en el formulario 1100.
Los elementos de datos en uno o más de los campos 1101-1104 pueden hacer referencia a otros campos en el formulario 1100 y/o pueden hacer referencia a otros campos en otros formularios en el conjunto de formularios. Por ejemplo, el elemento de datos en el campo 1102 puede hacer referencia o depender del elemento de datos en el campo 1101, el elemento de datos en el campo 1103 puede hacer referencia o depender del elemento de datos en el campo 1102 y el elemento de datos en el campo 1104 puede hacer referencia o depender del elemento de datos en el campo 1103. En el presente ejemplo, los términos en los paréntesis en los campos 1102-1104 pueden definir la relación entre los campos 1101-1104 así como la expresión que puede usarse por el motor cuando se determina el valor de datos a incluir en los campos 1102-1104. El formulario 1100 y los campos 1101-1104 pueden asociarse con o agruparse en un límite de un gráfico acíclico dirigido implícito por el motor, de tal forma que cambios en los elementos de datos en cualquiera de los campos pueden ser un evento que desencadena una transacción ACI dentro del límite.
Para continuar el ejemplo, haciendo referencia a la Figura 11B, el usuario 1151 puede cambiar el elemento de datos
en el campo 1101 de "10" como se muestra en la Figura 11A a "5". Por ejemplo, el dispositivo de usuario 1150 puede ejecutar una aplicación de lado de cliente, tal como un explorador web, que facilita la comunicación con un servidor que aloja la aplicación de consumo y la representación del formulario 1100 en el explorador web para su modificación basándose en la interacción del usuario 1151 con el dispositivo de usuario 1150. Como se describe en este documento, la aplicación de consumo puede llamar o solicitar que el motor de datos actualice los estados de los elementos de datos en memoria. La modificación del elemento de datos en el campo 1101 puede ser un evento que desencadena que el motor inicie una transacción ACI para actualizar campos dentro del límite que incluye el campo 1101. Para iniciar la transacción ACI, el motor asigna uno o más dispositivos de procesamiento y dispositivos de memoria, y bloquea las ubicaciones de memoria asociadas con al menos los elementos de datos que dependen del elemento de datos que se modifican en el campo 1101. Como resultado de la iniciación de la transacción ACI, la instancia del formulario 1101 que se representa en el explorador web del dispositivo de usuario 1152 no se modifica para mostrar el cambio en el campo 1101 de forma que el usuario 1153 sigue sin ser consciente de la modificación.
A medida que el uno o más dispositivos de procesamiento asignados ejecutan el motor (o instancias del mismo) para realizar la transacción ACI, pueden producirse una o más operaciones intermedias para modificar los elementos de datos en los campos 1102-1104. Por ejemplo, con referencia a la Figura 11C, el uno o más dispositivos de procesamiento que ejecutan el motor pueden realizar una serie de cálculos para recalcular los valores asociados con los elementos de datos en los campos 1101-1104 basándose en su dependencia, directa o indirectamente, del elemento de datos en el campo 1101. Mientras estas operaciones intermedias se están realizando por el dispositivo de procesamiento, ninguna instancia del formulario 1100 que se está viendo por el usuario 1151 o 1153 se actualiza para mostrar modificaciones a los elementos de datos en los campos 1101-1104 de tal forma que las instancias del formulario 1100 que se visualizan a los usuarios 1151 y 1153 permanecen iguales como se muestra en la Figura 11C. En su lugar, los elementos de datos se están modificando en memoria (por ejemplo, a través de lecturas y escrituras de datos). Cuando se completa la transacción ACI y se desbloquean las ubicaciones de memoria, en cuyo momento ambas instancias del formulario 1100 se actualizan para mostrar todos los cambios al formulario 1100, como se muestra en la Figura 11D.
Las Figuras 12A-D ilustran un escenario ilustrativo en el que un formulario 1200 (por ejemplo, como una interfaz gráfica de usuario) se presenta a un usuario 1251 de un dispositivo de usuario 1250 en respuesta a la ejecución de aplicación de consumo. En el presente ejemplo no limitante, el formulario 1200 puede incluir los campos 1201-1205 que incluyen datos, en el que el formulario 1200 puede representar un (primer) artículo de datos de un conjunto de artículos de datos, y los datos en los campos 1201-1205 pueden representar elementos de datos. El usuario 1251 puede interactuar con el formulario 1200 para ver y modificar los elementos de datos en el formulario 1200.
Los elementos de datos en uno o más de los campos 1201-1205 pueden hacer referencia a otros campos en el formulario 1200 y pueden hacer referencia a elementos de datos asociados con los campos 1221-1224 en un formulario 1220 en el conjunto de formularios. Por ejemplo, el elemento de datos en el campo 1202 puede hacer referencia o depender del elemento de datos en el campo 1201, el elemento de datos en el campo 1203 puede hacer referencia o depender del elemento de datos en el campo 1202 y el elemento de datos en el campo 1205 puede hacer referencia o depender del elemento de datos en el campo 1204. El elemento de datos en el campo 1204 del formulario 1200 puede hacer referencia o depender del elemento de datos en el campo 9. Análogamente, el elemento de datos asociado con el campo 1221 del formulario 1220 puede hacer referencia o depender del elemento de datos asociado con el campo 1202 del formulario 1200. En el presente ejemplo, los términos en los paréntesis en los campos 1202 1205, 1221-1222 y 1224 pueden definir la relación entre los campos 1201-1205 y 1221-1224 así como la expresión que puede usarse por el motor cuando se determina el valor de datos a incluir en los campos 1102-1105, 1221-1222 y 1224. La aplicación de consumo puede programarse de tal forma que formularios 1200 y 1220 nunca se visualizan simultáneamente a un usuario. Basándose en esto, el motor puede determinar que los formularios 1200 y 1220 (y sus respectivos campos) pueden estar en límites separados y distintos de un gráfico acíclico dirigido implícito. Por ejemplo, el formulario 1200 y los campos 1201-1205 pueden asociarse con o agruparse en un primer límite de un gráfico acíclico dirigido implícito por el motor y el formulario 1220 y los campos 1221-1224 pueden agruparse en un segundo límite.
Para continuar el ejemplo, haciendo referencia a la Figura 12B, el usuario 1251 puede cambiar el elemento de datos en el campo 1201 de "10" como se muestra en la Figura 12A a "5" como se muestra en la Figura 12B. Por ejemplo, el dispositivo de usuario 1150 puede ejecutar una aplicación de lado de cliente, tal como un explorador web, que facilita la comunicación con un servidor que aloja la aplicación de consumo y la presentación del formulario 1200 en el explorador web para la modificación basándose en la interacción del usuario 1251 con el dispositivo de usuario 1250. Como se describe en este documento, la aplicación de consumo puede llamar o solicitar que el motor de datos actualice los estados de los elementos de datos en memoria. La modificación del elemento de datos en el campo 1201 puede ser un evento que desencadena que el motor inicie una primera transacción ACI para actualizar campos dentro del primer límite basándose en la modificación a el elemento de datos en el campo 1201. Para iniciar la primera transacción ACI, el motor asigna uno o más dispositivos de procesamiento y dispositivos de memoria, y bloquea las ubicaciones de memoria asociadas con al menos los elementos de datos que dependen del elemento de datos que se modifican en el campo 1201.
A medida que el uno o más dispositivos de procesamiento asignados ejecutan el motor (o instancias del mismo) para realizar la primera transacción ACI, pueden producirse una o más operaciones intermedias para modificar los
elementos de datos en los campos 1202-1203. Por ejemplo, con referencia a la Figura 12C, el uno o más dispositivos de procesamiento que ejecutan el motor pueden realizar una serie de cálculos para recalcular los valores asociados con los elementos de datos en los campos 1202-1203 basándose en su dependencia, directa o indirectamente, del elemento de datos en el campo 1201. Mientras estas operaciones intermedias se están realizando por el dispositivo de procesamiento, el formulario 1200 que se está viendo por el usuario 1251 no se actualiza para mostrar las modificaciones intermedias a los elementos de datos en los campos 1202-1203 de tal forma que el formulario 1200 que se visualiza al usuario 1251 permanece igual como se muestra en la Figura 12B. En su lugar, los elementos de datos se están modificando en memoria (por ejemplo, a través de lecturas y escrituras de datos). Debido a que el elemento de datos asociado con el campo 1221 del formulario 1220 se refiere a o depende del elemento de datos en el campo 1202 del formulario 1200, la modificación del elemento de datos asociado con el campo 1202 puede ser un evento que desencadena una segunda transacción ACI (por ejemplo, un evento de límites cruzados). En respuesta al evento, el motor puede asignar uno o más dispositivos de procesamiento y dispositivos de memoria para realizar una segunda transacción ACI, y bloquea las ubicaciones de memoria asociadas con al menos los elementos de datos que dependen del elemento de datos que se modifican en el campo 1221. La segunda transacción ACI puede realizarse de forma asíncrona desde y en paralelo a la primera transacción ACI. Después de que el uno o más dispositivos de procesamiento completan la primera transacción ACI, y mientras la segunda transacción ACI está pendiente, el uno o más dispositivos de procesamiento que realizaron la primera transacción puede desbloquear las ubicaciones de memoria asociadas con la primera transacción ACI, en cuyo momento el formulario 1200 que se está viendo por el usuario 1251 puede actualizarse para mostrar todos los cambios al formulario 1200 que resultan de la primera transacción a C i, como se muestra en la Figura 12D.
El uno o más dispositivos de procesamiento asignados a la segunda transacción ACI puede continuar realizando la segunda transacción ACI hasta su finalización. En el curso de la realización de la segunda transacción ACI, el uno o más dispositivos de procesamiento pueden modificar el elemento de datos en el campo 1224, que puede generar un evento de límites cruzados porque el elemento de datos asociado con el campo 1204 en el formulario 1200 se refiere a o depende del elemento de datos asociado con el campo 1224 en el formulario 1220. En respuesta a este evento, el motor puede asignar uno o más dispositivos de procesamiento y dispositivos de memoria para realizar una tercera transacción ACI para actualizar datos asociados con el campo 1204 en el formulario 1200 así como cualquier otro elemento de datos que hacen referencia o dependen del elemento de datos en el campo 1204 (por ejemplo, el elemento de datos asociado con el campo 1205). Mientras el uno o más dispositivos de procesamiento que realizan la tercera transacción ACI están realizando operaciones intermedias (por ejemplo, recalcular los elementos de datos asociados con los campos 1204 y 1205), el formulario 1200 que se está viendo por el usuario 1251 no se actualiza. En su lugar, los elementos de datos se están modificando en memoria (por ejemplo, a través de lecturas y escrituras de datos). Tras la finalización de la tercera transacción ACI, el uno o más dispositivos de procesamiento asignados a la tercera transacción ACI puede lanzar las ubicaciones de memoria bloqueadas para la tercera transacción ACI, en cuyo momento el formulario 1200 que se está viendo por el usuario 1251 puede actualizarse para mostrar todos los cambios al formulario 1200 que resultan de la tercera transacción ACI, como se muestra en la Figura 12E.
La Figura 13 es un diagrama de flujo que ilustra un proceso ilustrativo 1300 para mantener coherencia de datos interrelacionados de acuerdo con realizaciones de la presente divulgación. En realizaciones ilustrativas, el proceso 1300 puede implementarse de acuerdo con las Figuras 1-12 de la presente divulgación. En la etapa 1302, dependencias entre datos interrelacionados almacenados en ubicaciones de memoria en uno o más dispositivos de almacenamiento de datos pueden identificarse por uno o más procesamientos que ejecutan el motor. Por ejemplo, uno o más conjuntos de datos interrelacionados pueden almacenarse en los dispositivos de almacenamiento de datos como unidades de datos (por ejemplo, artículos y/o elementos de datos) y el uno o más dispositivos de procesamiento pueden acceder a las ubicaciones de memoria para determinar cuál de las unidades de datos se referencian por o hacen referencia a otras unidades de los datos. Para determinar si la unidad de datos hace referencia a otra unidad de datos, el uno o más dispositivos de procesamiento pueden evaluar una definición para los datos, que pueden incluir valores literales y/o una o más expresiones que pueden incluir variables y/o valores literales y funciones. En algunos casos, las variables en la expresión pueden referirse o apuntar a otra unidad de datos. Basándose en esta referencia, el uno o más dispositivos de procesamiento pueden determinar que la unidad de datos que incluye la referencia a otra unidad de datos depende de la otra unidad de datos. El uno o más dispositivos de procesamiento pueden ejecutar el motor para rastrear estas dependencias, que pueden usarse para asociar las unidades de datos interrelacionadas entre sí a través de un gráfico acíclico dirigido implícito o explícito.
En la etapa 1304, subconjuntos de los datos pueden asociarse con grupos (por ejemplo, un primer grupo, un segundo grupo, un tercer grupo, un cuarto grupo y así sucesivamente) por el uno o más procesamientos basándose en una configuración de la aplicación de consumo y las dependencias entre los datos interrelacionados a consumir por la aplicación de consumo. En realizaciones ilustrativas, los grupos pueden corresponder a límites dentro del gráfico acíclico dirigido implícito y el uno o más dispositivos de procesamiento pueden mantener una coherencia del estado de los datos interrelacionados basándose en los límites (por ejemplo, sobre una base de límite a límite).
El uno o más procesadores que ejecutan el motor pueden asociar las unidades de datos interrelacionadas con los grupos y/o límites basándose en información proporcionada por o extraída de la aplicación de consumo. Como un ejemplo, el uno o más procesadores pueden determinar si la aplicación de consumo está configurada para presentar simultáneamente unidades de datos interrelacionadas a uno o más de los dispositivos de usuario a través de la interfaz
de usuario de la aplicación de consumo.
En la etapa 1306, una primera unidad de los datos interrelacionados almacenados en una primera ubicación de memoria y asociados con el primer grupo y/o límite puede modificarse por el uno o más dispositivos de procesamiento. Como un ejemplo, la aplicación de consumo que se ejecuta por un servidor puede recibir una modificación de la primera unidad de datos interrelacionada de un usuario a través de un dispositivo de usuario a través de una red de comunicaciones, y el dispositivo de consumo puede llamar o solicitar que el motor actualice la primera unidad de datos basándose en la modificación. En respuesta a la modificación de la primera unidad de datos almacenados en la primera ubicación de memoria, en la etapa 1308, uno o más de dispositivos de procesamiento pueden asignarse para realizar una serie de operaciones (por ejemplo, una transacción ACI) que bloquean las ubicaciones de memoria para las unidades de datos interrelacionadas asociadas con el primer grupo o límite (por ejemplo, un primer conjunto de ubicaciones de memoria) para evitar la lectura o escritura de las ubicaciones de memoria, actualizar atómicamente un estado de las unidades de datos interrelacionadas en el primer grupo de un primer estado fiable a un segundo estado fiable, y sobrescribir al menos un subconjunto de las ubicaciones de memoria para almacenar el segundo estado fiable. T ras la finalización de la serie de operaciones (por ejemplo, una vez que las ubicaciones de memoria se sobrescriben), el uno o más dispositivos de procesamiento pueden desbloquear las ubicaciones de memoria. Cuando la modificación de la primera unidad de datos únicamente afecta a las unidades de datos asociadas con el primer grupo, las ubicaciones de memoria de las unidades de datos interrelacionadas que se han asociado con otros grupos pueden permanecer desbloqueadas a lo largo de la serie de operaciones. Desbloqueando únicamente la ubicación de memoria dentro de un grupo afectado, el uno o dispositivos de procesamiento que ejecutan el motor pueden mitigar contiendas de datos que se producirían de otra manera si estas ubicaciones de memoria también estuvieran bloqueadas.
En el caso en el que la modificación de la primera unidad de datos afecta a unidades de datos asociadas con el primer así como otros grupos (por ejemplo, el segundo grupo), las ubicaciones de memoria de las unidades de datos asociadas con los otros grupos pueden permanecer desbloqueadas y tienen un estado no fiable para al menos una porción de una duración de la serie de operaciones. Como un ejemplo, durante la realización de la serie de operaciones para las unidades de datos en el primer grupo, el uno o más dispositivos de procesamiento pueden generar un evento que inicia una nueva serie de operaciones para actualizar el estado de las unidades de datos en los otros grupos (por ejemplo, el evento puede corresponder a una modificación final de una unidad de datos en el primer grupo del que depende directamente una unidad de datos en el segundo grupo).
Uno o más dispositivos de procesamiento, que pueden ser los mismos que el uno o más dispositivos de procesamiento que se asignaron para realizar la serie de operaciones asociadas con el primer grupo o pueden ser uno o más diferentes dispositivos de procesamiento, pueden asignarse para realizar una nueva y separada serie de operaciones para cada uno de los otros grupos para los que se generó un evento. Por ejemplo, cuando se genera un evento para el segundo grupo basándose en la realización de la serie de operaciones para el primer grupo, uno o más dispositivos de procesamiento pueden asignarse para realizar una nueva y separada serie de operaciones asociadas con el segundo grupo que bloquean las ubicaciones de memoria para las unidades de datos interrelacionadas asociadas con el segundo grupo para evitar la lectura o escritura de las ubicaciones de memoria y actualizar atómicamente el estado de las unidades de datos interrelacionadas asociadas con el segundo grupo del estado no fiable a un estado fiable. En realizaciones ilustrativas, al menos una porción de la serie de operaciones asociadas con el primer grupo y la nueva y separada serie de operaciones asociadas con el segundo grupo pueden realizarse como operaciones en paralelo. En realizaciones ilustrativas, puede asignarse un dispositivo de procesamiento diferente para realizar una serie de operaciones diferente (por ejemplo, un primer dispositivo de procesamiento puede asignarse para procesar la serie de operaciones asociadas con el primer grupo y un segundo dispositivo de procesamiento puede asignarse para realizar una serie de operaciones asociadas con el segundo grupo).
La Figura 14 es un diagrama de flujo que ilustra otro proceso 1400 ilustrativo para mantener coherencia de datos interrelacionados de acuerdo con realizaciones de la presente divulgación. En realizaciones ilustrativas, el proceso 1400 puede implementarse de acuerdo con las Figuras 1-12 de la presente divulgación. En la etapa 1402, un conjunto de datos que incluye uno o más artículos de datos puede recibirse por un sistema informático distribuido que incluye recursos informáticos compartidos. Los recursos informáticos compartidos pueden incluir servidores que tienen uno o más dispositivos de procesamiento y dispositivos de almacenamiento de datos formados de uno o más dispositivos de memoria. En la etapa 1404, el conjunto de datos recibido puede almacenarse a través de los dispositivos de memoria. En la etapa 1406, cada uno del uno o más artículos de datos del conjunto de datos puede asociarse con uno o más vértices/campos de un gráfico acíclico dirigido implícito de tal forma que cada vértice/campo puede incluir un valor definido, que puede ser nulo, un valor literal o una expresión. En la etapa 1408, pueden designarse uno o más límites dentro del gráfico acíclico dirigido, en el que cada límite se asocia con un subconjunto de los artículos de datos en el conjunto de datos.
En la etapa 1410, cada valor definido del uno o más campos puede importarse en el motor, que puede configurarse para realizar cálculos. En la etapa 1412, un primer cálculo puede realizarse usando el motor y uno o más valores definidos de uno o más de los límites. En la etapa 1414, uno o más de los valores definidos puede modificarse basándose en los cálculos, y en la etapa 1416, cada uno de los valores definidos modificados puede almacenarse en los dispositivos de memoria para sobrescribir un valor definido dado con un correspondiente valor definido modificado. En la etapa 1418, los vértices/campos en el gráfico acíclico dirigido pueden actualizarse con un valor definido para
cada uno de los uno o más valores definidos modificados. En la etapa 1420, cada uno de los uno o más valores definidos modificados puede importarse en el motor, y en la etapa 1422, pueden realizarse cálculos adicionales usando el motor y el uno o más valores definidos modificados de un límite dado.
La Figura 15 es un diagrama de flujo que ilustra un proceso 1500 ilustrativo implementado por recursos compartidos en un sistema informático distribuido para implementar realizaciones de la presente divulgación. En realizaciones ilustrativas, el proceso 1500 puede implementarse de acuerdo con las Figuras 1-12 de la presente divulgación. En la etapa 1502, puede utilizarse un sistema informático distribuido que incluye recursos informáticos compartidos que son simultáneamente accesibles por terminales de usuario a través de una red de comunicaciones. Los recursos informáticos compartidos pueden incluir dispositivos de procesamiento (por ejemplo, de servidores) y dispositivos de almacenamiento de datos. En la etapa 1504, las dependencias entre datos almacenados en los dispositivos de almacenamiento de datos pueden identificarse como se describe en este documento, y en la etapa 1506, los datos pueden asociarse con grupos (por ejemplo, primer y segundo grupos) basándose en una configuración de una aplicación que consumen los datos y/o las dependencias entre los datos.
En respuesta a un evento que corresponde a la recepción de un cambio en un elemento de datos seleccionado de los datos en el primer grupo a través de la aplicación, en la etapa 1508, puede asignarse un primer conjunto de los dispositivos de procesamiento para modificar los datos en el primer grupo como una transacción atómica, coherente y aislada (ACI) basándose en las dependencias entre los datos en el primero de los grupos. En respuesta a un evento posterior que corresponde a una propagación de cambios en los datos desde el primer grupo al segundo grupo como resultado de la transacción ACI, en la etapa 1510, asignar un segundo conjunto de dispositivos de procesamiento para modificar los datos en el segundo grupo como una nueva transacción ACI basándose en el cambio en al menos una porción de los datos en el primer grupo. En realizaciones ilustrativas, la nueva transacción ACI se realiza de forma asíncrona a partir de la transacción a C i.
La descripción anterior de las realizaciones específicas de la materia objeto divulgada en este documento se ha presentado para propósitos de ilustración y descripción y no pretende limitar el alcance de la materia objeto expuesta en este documento. Se concibe cualquier combinación y/o permutación de realizaciones descritas en este documento. Se contempla completamente que otras diversas realizaciones, modificaciones y aplicaciones serán evidentes para los expertos en la materia a partir de la descripción anterior y dibujos adjuntos. Por lo tanto, tales otras realizaciones, modificaciones y aplicaciones se conciben para pertenecer al alcance de las siguientes reivindicaciones adjuntas. Además, los expertos en la materia apreciarán que las realizaciones, modificaciones y aplicaciones que se han descrito en este documento están en el contexto de un entorno particular, y la materia objeto expuesta en este documento no se limita al mismo, sino que puede aplicarse beneficiosamente en cualquier número de otras maneras, entornos y propósitos. Por consiguiente, las reivindicaciones expuestas anteriormente deberían interpretarse en vista del alcance total de las características y técnicas novedosas según se divulgan en este documento.
Claims (18)
1. Un sistema informático distribuido (210, 310) que comprende:
recursos informáticos compartidos (212, 312) que son simultáneamente accesibles por dispositivos de usuario (250, 350) a través de una red de comunicaciones (290, 390), incluyendo los recursos informáticos compartidos (212, 312) dispositivos de procesamiento y uno o más dispositivos de almacenamiento de datos (216, 316);
almacenando el uno o más dispositivos de almacenamiento de datos (216, 316) datos que incluyen unidades de datos interrelacionadas a consumir por una aplicación de consumo (104) que incluye una interfaz de usuario accesible por los dispositivos de usuario (250, 350) a través de la red de comunicaciones (290, 390) para facilitar una interacción simultánea con los datos por al menos dos de los dispositivos de usuario (250, 350), las unidades de datos interrelacionadas comprenden uno o más artículos de datos (110a-n, 120a-n, 130a-n) dependientes de o que se refieren entre sí, de tal forma que cambios en uno de los artículos de datos (110a-n, 120a-n, 130a-n) requieren que se actualicen otros artículos de datos para mantener la integridad de los artículos de datos (110a-n, 120a-n, 130a-n);
uno o más de los dispositivos de procesamiento ejecutan un motor (150) para identificar dependencias entre las unidades de datos interrelacionadas almacenadas en el uno o más dispositivos de almacenamiento de datos (216, 316), siendo un gráfico de dependencias generado y mantenido, que incluye un gráfico acíclico dirigido implícito o explícito (600) o estructura equivalente para correlacionar dependencias de datos entre las unidades de datos de datos interrelacionados, en el gráfico acíclico (600) los vértices (610) representan interrelaciones de unidades de datos y bordes (620),
el uno o más de los dispositivos de procesamiento asocian las unidades de datos interrelacionadas con grupos determinando si la aplicación de consumo (104) está configurada para presentar simultáneamente las unidades de datos interrelacionadas a uno o más de los dispositivos de usuario (250, 350) a través de la interfaz de usuario, incluyendo los grupos al menos un primer grupo y un segundo grupo en los que los grupos corresponden a límites (700-730), separar los artículos de datos (110a-n, 120a-n, 130a-n) en límites (700-730) garantiza que artículos de datos que pueden visualizarse simultáneamente están dentro del mismo límite y que cambios dentro de cualquiera de los artículos de datos (110a-n, 120a-n, 130a-n) dentro del mismo límite se propagan dentro del límite como una única transacción ACI mientras artículos de datos en otro límite que se ven afectados por cambios en el límite se procesan de forma asíncrona como transacciones ACI separadas por el motor de datos (150);
en donde, en respuesta a una modificación de una primera unidad de datos asociada con el primer grupo, el uno o más de los dispositivos de procesamiento realizan una serie de operaciones que (i) restringen el acceso a un primer conjunto de ubicaciones de memoria en las que se almacenan las unidades de datos interrelacionadas asociadas con el primer grupo para evitar la lectura o escritura de las ubicaciones de memoria, (ii) actualizan atómicamente el estado de las unidades de datos interrelacionadas en el primer grupo de un primer estado fiable a un segundo estado fiable, y (iii) sobrescriben el al menos un subconjunto del primer conjunto de ubicaciones de memoria para almacenar el segundo estado fiable, a lo largo de la serie de operaciones un segundo conjunto de ubicaciones de memoria de las unidades de datos interrelacionadas asociadas con el segundo grupo permanece sin restricciones.
2. El sistema de la reivindicación 1, en donde el uno o más de los dispositivos de procesamiento asocian las unidades de datos interrelacionadas entre sí a través del gráfico acíclico dirigido implícito (600) basándose en las dependencias y modifican el gráfico acíclico dirigido implícito (600) en respuesta a cambios en las dependencias entre las unidades de datos interrelacionadas.
3. El sistema de la reivindicación 1, en donde el uno o más de los dispositivos de procesamiento asocian las unidades de datos interrelacionadas entre sí a través del gráfico acíclico dirigido implícito (600) basándose en las dependencias y los grupos corresponden a límites (700-730) dentro del gráfico acíclico dirigido implícito (600), manteniendo el uno o más de los dispositivos de procesamiento una coherencia del estado de los datos interrelacionados basándose en los límites (700-730).
4. El sistema de la reivindicación 3, en donde el uno o más de los dispositivos de procesamiento modifican al menos uno de los límites (700-730) basándose en al menos uno de los cambios en las dependencias entre las unidades de datos interrelacionadas o cambios en la aplicación de consumo (104).
5. El sistema de la reivindicación 1, en donde el uno o más de los dispositivos de procesamiento bloquean el primer conjunto de ubicaciones de memoria para evitar la lectura o escritura de las ubicaciones de memoria en respuesta a una modificación de la primera unidad de datos asociada con el primer grupo,
en donde la modificación de la primera unidad de datos únicamente afecta a las unidades de datos asociadas con el primer grupo, y el uno o más de los dispositivos de procesamiento sobrescriben y desbloquean el primer conjunto de ubicaciones de memoria tras la finalización de la serie de operaciones, el segundo conjunto de ubicaciones de memoria de las unidades de datos interrelacionadas asociadas con el segundo grupo permanece desbloqueado a lo largo de la serie de operaciones.
6. El sistema de la reivindicación 1, en donde la modificación de la primera unidad de datos afecta a las unidades de datos asociadas con el primer y segundo grupos, y el segundo conjunto de ubicaciones de memoria de las unidades
de datos interrelacionadas asociadas con el segundo grupo permanece sin restricciones y tiene un estado no fiable para al menos una porción de una duración de la serie de operaciones, y
en donde, en respuesta a un evento generado por el uno o más dispositivos de procesamiento durante la serie de operaciones, el uno o más dispositivos de procesamiento realizan una serie separada de operaciones que bloquean el segundo conjunto de ubicaciones de memoria en las que se almacenan las unidades de datos interrelacionadas asociadas con el segundo grupo para evitar la lectura o escritura del segundo conjunto de ubicaciones de memoria y actualizar atómicamente el estado de las unidades de datos interrelacionadas asociadas con el segundo grupo del estado no fiable al segundo estado fiable.
7. El sistema de la reivindicación 6, en donde (i) al menos una porción de la serie de operaciones y la serie separada de operaciones se realizan como operaciones en paralelo por el uno o más de los dispositivos de procesamiento, (ii) un primero de los dispositivos de procesamiento se asigna para realizar la serie de operaciones y un segundo de los dispositivos de procesamiento se asigna para realizar la serie separada de operaciones, o (iii) el evento corresponde a una modificación de otra unidad de datos asociada con el primer grupo del que depende directamente al menos una de las unidades de datos asociadas con el segundo grupo de datos.
8. Un método implementado en ordenador a realizar en recursos informáticos compartidos (212, 312) que son simultáneamente accesibles por dispositivos de usuario (250, 350) a través de una red de comunicaciones (290, 390), incluyendo los recursos informáticos compartidos (212, 312) dispositivos de procesamiento y uno o más dispositivos de almacenamiento de datos (216, 316);
almacenando el uno o más dispositivos de almacenamiento de datos (216, 316) datos que incluyen unidades de datos interrelacionadas a consumir por una aplicación de consumo (104) que incluye una interfaz de usuario accesible por los dispositivos de usuario (250, 350) a través de la red de comunicaciones (290, 390) para facilitar una interacción simultánea con los datos por al menos dos de los dispositivos de usuario (250, 350), las unidades de datos interrelacionadas comprenden uno o más artículos de datos (110a-n, 120a-n, 130a-n) dependientes de o que se refieren entre sí, de tal forma que cambios en uno de los artículos de datos (110a-n, 120a-n, 130a-n) requiere que se actualicen otros artículos de datos para mantener la integridad de los artículos de datos (110a-n, 120a-n, 130a-n), comprendiendo el método:
identificar dependencias entre datos interrelacionados almacenados en ubicaciones de memoria en uno o más dispositivos de almacenamiento de datos (216, 316), siendo un gráfico de dependencias generado y mantenido, que incluye un gráfico acíclico dirigido implícito o explícito (600) o estructura equivalente para correlacionar dependencias de datos entre las unidades de datos de datos interrelacionados, en el gráfico acíclico (600) los vértices (610) representan interrelaciones de unidades de datos y bordes (620), el uno o más de los dispositivos de procesamiento asocian las unidades de datos interrelacionadas con grupos determinando si la aplicación de consumo (104) está configurada para presentar simultáneamente las unidades de datos interrelacionadas a uno o más de los dispositivos de usuario (250, 350) a través de la interfaz de usuario;
asociar subconjuntos de los datos interrelacionados con los grupos basándose en una configuración de una aplicación programada para consumir los datos interrelacionados, incluyendo los grupos al menos un primer grupo y un segundo grupo en los que los grupos corresponden a límites (700-730), separar los artículos de datos (110an, 120a-n, 130a-n) en límites (700-730) garantiza que artículos de datos que pueden visualizarse simultáneamente están dentro del mismo límite y que cambios dentro de cualquiera de los artículos de datos (110a-n, 120a-n, 130an) dentro del mismo límite se propagan dentro del límite como una única transacción ACI mientras artículos de datos en otro límite que se ven afectados por cambios en el límite se procesan de forma asíncrona como transacciones ACI separadas por el motor de datos (150);
modificar una primera unidad de los datos interrelacionados almacenados en una primera ubicación de memoria, la primera unidad asociada con el primer grupo;
en respuesta a la modificación de la primera unidad almacenada en la primera ubicación de memoria, asignar uno o más dispositivos de procesamiento para realizar una serie de operaciones que (i) restringen el acceso a un primer conjunto de las ubicaciones de memoria en las que se almacena un primer subconjunto de los datos interrelacionados que corresponden al primer grupo para evitar la lectura o escritura del primer conjunto de ubicaciones de memoria, (ii) actualizan atómicamente un estado de los datos interrelacionados en el primer grupo de un primer estado fiable a un segundo estado fiable, y (iii) sobrescriben el al menos un subconjunto del primer conjunto de ubicaciones de memoria para almacenar el segundo estado fiable, a lo largo de la serie de operaciones un segundo conjunto de ubicaciones de memoria de las unidades de datos interrelacionadas asociadas con el segundo grupo permanece sin restricciones.
9. El método de la reivindicación 8, que comprende adicionalmente asociar los datos interrelacionados entre sí a través del gráfico acíclico dirigido implícito (600) basándose en las dependencias.
10. El método de la reivindicación 9, que comprende adicionalmente modificar el gráfico acíclico dirigido implícito (600) en respuesta a cambios en las dependencias entre las unidades de datos interrelacionadas.
11. El método de la reivindicación 9, en donde los grupos corresponden a límites (700-730) dentro del gráfico acíclico dirigido implícito (600), y el método comprende adicionalmente:
mantener una coherencia del estado de los datos interrelacionados basándose en los límites (700-730).
12. El método de la reivindicación 11, que comprende adicionalmente modificar al menos uno de los límites (700-730) basándose en al menos uno de los cambios en las dependencias entre las unidades de datos interrelacionadas o cambios en la aplicación de consumo (104).
13. El método de la reivindicación 8, en donde asociar las unidades de datos interrelacionadas con los grupos comprende: determinar si la aplicación de consumo (104) está configurada para presentar simultáneamente las unidades de datos interrelacionadas a uno o más de los dispositivos de usuario (250, 350) a través de la interfaz de usuario.
14. El método de la reivindicación 8, en donde la modificación de la primera unidad únicamente afecta al primer subconjunto de los datos interrelacionados asociados con el primer grupo, y el método comprende adicionalmente:
bloquear, por el uno o más dispositivos de procesamiento, el primer conjunto de las ubicaciones de memoria en respuesta a la modificación de la primera unidad almacenada en la primera ubicación de memoria; desbloquear el primer conjunto de ubicación de memoria tras la finalización de la serie de operaciones, en donde un segundo conjunto de ubicaciones de memoria en las que se almacena un segundo subconjunto de los datos interrelacionados asociados con el segundo grupo permanece desbloqueado a lo largo de la serie de operaciones.
15. El método de la reivindicación 8, en donde la modificación de la primera unidad afecta al primer subconjunto de datos interrelacionados asociados con el primer grupo y un segundo subconjunto de los datos interrelacionados asociados con el segundo grupo, y un segundo conjunto de ubicaciones de memoria en las que se almacena el segundo subconjunto de los datos interrelacionados asociados con el segundo grupo permanece sin restricciones y tiene un estado no fiable para al menos una porción de una duración de la serie de operaciones.
16. El método de la reivindicación 15, en donde, en respuesta a un evento generado por el uno o más dispositivos de procesamiento durante la serie de operaciones, el método comprende adicionalmente
asignar el uno o más dispositivos de procesamiento para realizar una serie separada de operaciones que bloquean el segundo conjunto de ubicaciones de memoria en las que se almacena el segundo subconjunto de los datos interrelacionados asociados con el segundo grupo para evitar la lectura o escritura del segundo conjunto de ubicaciones de memoria y actualizar atómicamente el estado del segundo subconjunto de los datos interrelacionados asociados con el segundo grupo del estado no fiable al segundo estado fiable.
17. El método de la reivindicación 16, comprende además:
realizar al menos una porción de la serie de operaciones y la serie separada de operaciones como operaciones en paralelo,
en donde asignar el uno o más dispositivos de procesamiento para realizar una serie de operaciones comprende asignar un primero de los dispositivos de procesamiento para realizar la serie de operaciones, y asignar el uno o más dispositivos de procesamiento para realizar una serie separada de operaciones comprende asignar un segundo de los dispositivos de procesamiento para realizar la serie separada de operaciones,
en donde el evento corresponde a una modificación de otra unidad de los datos interrelacionados asociados con el primer grupo del que depende directamente al menos una unidad de los datos interrelacionados asociados con el segundo grupo.
18. Un producto de programa informático que comprende instrucciones que, cuando el programa se ejecuta por un ordenador, provocan que el ordenador efectúe las etapas del método de al menos una de las reivindicaciones 8 a 17.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/014,384 US10783135B2 (en) | 2016-02-03 | 2016-02-03 | Systems and methods for mixed consistency in computing systems |
| PCT/US2017/016247 WO2017136572A1 (en) | 2016-02-03 | 2017-02-02 | Systems and methods for mixed consistency in computing systems |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2876434T3 true ES2876434T3 (es) | 2021-11-12 |
Family
ID=59386193
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES17748168T Active ES2876434T3 (es) | 2016-02-03 | 2017-02-02 | Sistemas y métodos de coherencia mixta en sistemas informáticos |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US10783135B2 (es) |
| EP (1) | EP3411799B1 (es) |
| AU (1) | AU2017215342B2 (es) |
| CA (1) | CA3012826A1 (es) |
| ES (1) | ES2876434T3 (es) |
| NZ (1) | NZ744667A (es) |
| WO (1) | WO2017136572A1 (es) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230127722A1 (en) * | 2022-05-17 | 2023-04-27 | Intel Corporation | Programmable transport protocol architecture |
Family Cites Families (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5710894A (en) * | 1995-04-04 | 1998-01-20 | Apple Computer, Inc. | Dynamic classes and graphical user interface for same |
| DE69719269T2 (de) | 1996-08-01 | 2003-10-30 | International Business Machines Corp., Armonk | Absicherung der Unteilbarkeit für eine Ansammlung von transaktionellen Arbeitsschritten in einem Arbeitsflussverwaltungssystem |
| GB0022189D0 (en) * | 2000-09-11 | 2000-10-25 | Univ Loughborough | Method and apparatus for analytical problem solving |
| US7689560B2 (en) | 2000-10-13 | 2010-03-30 | Miosoft Corporation | Persistent data storage techniques |
| US7945652B2 (en) * | 2002-08-06 | 2011-05-17 | Sheng (Ted) Tai Tsao | Display multi-layers list item in web-browser with supporting of concurrent multi-users |
| US7747648B1 (en) * | 2005-02-14 | 2010-06-29 | Yahoo! Inc. | World modeling using a relationship network with communication channels to entities |
| US8046737B2 (en) * | 2005-04-29 | 2011-10-25 | Microsoft Corporation | XML application framework |
| US8037453B1 (en) * | 2006-09-13 | 2011-10-11 | Urbancode, Inc. | System and method for continuous software configuration, test and build management |
| US8291005B2 (en) | 2008-01-07 | 2012-10-16 | International Business Machines Corporation | Providing consistency in processing data streams |
| US7921330B2 (en) * | 2008-02-29 | 2011-04-05 | Red Hat, Inc. | Data migration manager |
| US8843435B1 (en) * | 2009-03-12 | 2014-09-23 | Pegasystems Inc. | Techniques for dynamic data processing |
| US20130124545A1 (en) * | 2011-11-15 | 2013-05-16 | Business Objects Software Limited | System and method implementing a text analysis repository |
| US8813172B2 (en) * | 2011-12-16 | 2014-08-19 | Microsoft Corporation | Protection of data in a mixed use device |
| US8798010B2 (en) | 2012-01-31 | 2014-08-05 | Lsi Corporation | Table-based resource mapping for downlink control channels in a wireless system base station |
| US20150172412A1 (en) | 2012-07-06 | 2015-06-18 | Cornell University | Managing dependencies between operations in a distributed system |
| WO2014078481A1 (en) * | 2012-11-15 | 2014-05-22 | Violin Memory Inc. | Memorty array with atomic test and set |
| US9576071B2 (en) * | 2013-09-12 | 2017-02-21 | Dropbox, Inc. | Graph-based data models for partitioned data |
| US8978010B1 (en) * | 2013-12-18 | 2015-03-10 | Sap Ag | Pruning compilation dependency graphs |
| US20160026673A1 (en) | 2014-07-25 | 2016-01-28 | Linkedin Corporation | Ensuring consistency of derived data in a distributed storage system |
| US20160259841A1 (en) * | 2015-03-04 | 2016-09-08 | Tegu LLC | Research Analysis System |
-
2016
- 2016-02-03 US US15/014,384 patent/US10783135B2/en active Active
-
2017
- 2017-02-02 CA CA3012826A patent/CA3012826A1/en active Pending
- 2017-02-02 WO PCT/US2017/016247 patent/WO2017136572A1/en not_active Ceased
- 2017-02-02 AU AU2017215342A patent/AU2017215342B2/en active Active
- 2017-02-02 ES ES17748168T patent/ES2876434T3/es active Active
- 2017-02-02 EP EP17748168.6A patent/EP3411799B1/en active Active
- 2017-02-02 NZ NZ744667A patent/NZ744667A/en unknown
Also Published As
| Publication number | Publication date |
|---|---|
| EP3411799A1 (en) | 2018-12-12 |
| CA3012826A1 (en) | 2017-08-10 |
| US20170220608A1 (en) | 2017-08-03 |
| US10783135B2 (en) | 2020-09-22 |
| WO2017136572A1 (en) | 2017-08-10 |
| EP3411799B1 (en) | 2021-04-28 |
| EP3411799A4 (en) | 2019-07-31 |
| NZ744667A (en) | 2023-11-24 |
| AU2017215342A1 (en) | 2018-08-16 |
| AU2017215342B2 (en) | 2022-03-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12346303B2 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
| Gunarathne et al. | Scalable parallel computing on clouds using Twister4Azure iterative MapReduce | |
| US10255108B2 (en) | Parallel execution of blockchain transactions | |
| US8694647B2 (en) | Read-only operations processing in a paxos replication system | |
| Gibson-Robinson et al. | FDR3: a parallel refinement checker for CSP | |
| US8719845B2 (en) | Sharing and synchronization of objects | |
| US9772911B2 (en) | Pooling work across multiple transactions for reducing contention in operational analytics systems | |
| US10970311B2 (en) | Scalable snapshot isolation on non-transactional NoSQL | |
| Humbetov | Data-intensive computing with map-reduce and hadoop | |
| Srinivasa et al. | Guide to high performance distributed computing | |
| US9411844B2 (en) | Methods and systems for managing distributed concurrent data updates of business objects | |
| US10127270B1 (en) | Transaction processing using a key-value store | |
| US12332846B1 (en) | Data deduplication using modulus reduction arrays | |
| Anjos et al. | BIGhybrid: a simulator for MapReduce applications in hybrid distributed infrastructures validated with the Grid5000 experimental platform | |
| AU2017215342B2 (en) | Systems and methods for mixed consistency in computing systems | |
| US11681672B2 (en) | Virtual database resource usage | |
| US9195457B1 (en) | Interactive application programming interface documentation | |
| US20210350015A1 (en) | Secure data replication in distributed data storage environments | |
| US12430339B2 (en) | Pipelined execution of database queries processing streaming data | |
| US20250278262A1 (en) | System and method for machine learning model deployment | |
| McTaggart | Hadoop/MapReduce | |
| US12579138B1 (en) | Compiled query execution and debugging | |
| Krishna et al. | Improving the performance of read operations in distributed file system | |
| Dinan et al. | One-Sided Append: A New Communication Paradigm For PGAS Models | |
| Carvalho | Generic replication of software transactional memory |