ES2927620T3 - Mantenimiento de la coherencia de datos entre nodos informáticos de una arquitectura informática distribuida - Google Patents

Mantenimiento de la coherencia de datos entre nodos informáticos de una arquitectura informática distribuida Download PDF

Info

Publication number
ES2927620T3
ES2927620T3 ES20189846T ES20189846T ES2927620T3 ES 2927620 T3 ES2927620 T3 ES 2927620T3 ES 20189846 T ES20189846 T ES 20189846T ES 20189846 T ES20189846 T ES 20189846T ES 2927620 T3 ES2927620 T3 ES 2927620T3
Authority
ES
Spain
Prior art keywords
data
replication
dsr
engine
data set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES20189846T
Other languages
English (en)
Inventor
Philippe Francois Georges Gentric
Devaux Yannick Guiraud
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amadeus SAS filed Critical Amadeus SAS
Application granted granted Critical
Publication of ES2927620T3 publication Critical patent/ES2927620T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

La presente invención se refiere a un método y un sistema para mantener la consistencia de los datos entre los conjuntos de datos almacenados en una base de datos principal de un nodo informático principal y los conjuntos de datos correspondientes almacenados en una base de datos de replicación de al menos un nodo informático de replicación. Cada vez que se recibe una versión actualizada de un conjunto de datos almacenados, el nodo informático maestro se configura para actualizar un conjunto de datos correspondiente almacenado en la base de datos maestra y transmitir datos de replicación relacionados con la versión actualizada del conjunto de datos al menos un equipo informático de replicación. nodo para la replicación. Los datos de replicación comprenden un vector de bits que almacena valores de datos extraídos de campos de datos del conjunto de datos clasificados como campos de datos volátiles. Los valores de datos almacenados en el vector de bits que representan los cambios en el conjunto de datos que se van a replicar en el al menos un nodo de replicación. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Mantenimiento de la coherencia de datos entre nodos informáticos de una arquitectura informática distribuida La presente invención se refiere a un método y un sistema para el mantenimiento de la coherencia de los datos a través de una pluralidad de nodos informáticos de una arquitectura informática distribuida. Más específicamente, la presente invención se refiere a un método para el mantenimiento de la coherencia de los datos entre los conjuntos de datos almacenados en una base de datos principal de un nodo informático principal y los conjuntos de datos correspondientes almacenados en una base de datos de replicación de al menos un nodo informático de replicación. En los últimos años, la distribución de servicios/aplicaciones a través de una plataforma informática en la nube se ha generalizado. La principal ventaja de la informática en la nube es que abstrae la mayoría de las preocupaciones relacionadas con los recursos físicos de hardware y/o software, lo que habilita a los usuarios para concentrarse en su negocio principal en lugar de centrarse en el mantenimiento y el despliegue de los centros de datos. El modelo de informática en la nube se basa en proporcionar a un usuario acceso a recursos informáticos físicos mediante el pago por uso, en el que el usuario paga por los recursos informáticos asignados a uno o más servidores de aplicaciones para ejecutar los servicios/aplicaciones requeridos en la plataforma de informática en la nube. A medida que cambia la demanda de servicios/aplicaciones operados en la nube, los recursos físicos subyacentes se pueden escalar dinámicamente para satisfacer las necesidades informáticas de los servicios/aplicaciones en la nube en un momento dado.
Una plataforma de informática en la nube generalmente se distribuye entre una pluralidad de nodos de informática, por ejemplo, centros de datos. Cada nodo informático puede configurarse para ejecutar al menos parte de un servicio y/o aplicación solicitada por un cliente, lo que puede implicar la manipulación de grandes cantidades de datos, por ejemplo, clasificar, unir, combinar y similares para generar una respuesta a la consulta de un cliente. Para muchas aplicaciones en la nube, es posible que sea necesario realizar la manipulación de datos en cada nodo informático para generar una respuesta rápida a la consulta del cliente. La realización de la manipulación de datos en cada nodo informático puede requerir el uso de datos nuevos, que son datos que reflejan los últimos cambios, con el fin de garantizar que la respuesta enviada al cliente refleje las últimas actualizaciones de datos. Por ejemplo, al calcular la disponibilidad de vuelos en respuesta a la consulta de búsqueda de viajes de un cliente, es importante que los datos relacionados con el cálculo se hayan actualizado con los últimos cambios, garantizando así, la precisión de los resultados enviados al cliente.
Los enfoques actuales para mantener la frescura de los datos en una arquitectura distribuida varían ampliamente. Un método bien conocido para mantener la frescura y la coherencia de los datos es el enfoque de fuerza, que consiste en tomar una instantánea de todo el conjunto de datos que se ha de replicar, dividirlo en bloques y transmitirlo para su replicación a los diferentes nodos de replicación. Sin embargo, tal enfoque implica la replicación completa del conjunto de datos, lo que aumentaría la cantidad de datos transmitidos a través de la red y la latencia en la replicación de los datos a los nodos de replicación correspondientes. Por lo tanto, una optimización para actualizaciones periódicas consiste en detectar qué bloques han cambiado y solo transmitir estos.
Otro enfoque para replicar datos entre nodos se conoce como replicación de base de datos principal múltiple, que aprovecha el registro de eventos de cambio de base de datos para identificar y transmitir cambios de datos entre nodos informáticos en una arquitectura distribuida. Cada cambio detectado se transmite como un mensaje a los otros nodos informáticos para su replicación. Sin embargo, el mensaje transmitido tiene una gran sobrecarga ya que contiene, además del cambio de base de datos, la clave del elemento modificado, así como el formato (tipo) de la información transmitida, de manera que el nodo informático de recepción pueda procesar cada cambio individual, lo que lleva a una mala eficiencia de transmisión de la red.
Otro enfoque para la replicación de datos se conoce como los enfoques optimizados de latencia del centro de datos INTRA que implican un esquema de serialización como el búfer de protocolo de Google. Estos esquemas apuntan a transmitir agrupaciones con gran probabilidad extremadamente grandes (grandes datos de terabytes) de estructuras de datos exactamente idénticas (todos los paquetes tienen el mismo formato) a través de procesos y máquinas de centro de datos INTRA. Sin embargo, estos esquemas de serialización son menos flexibles cuando se trata de conjuntos de datos que contienen campos de datos de diferente tamaño.
El documento US 6.098.078 da a conocer la comparación de vectores de versión para actualizar bases de datos. Por lo tanto, existe la necesidad de identificar una solución para replicar datos en diferentes nodos informáticos, que sea flexible en relación con el formato de datos y el tamaño de los datos a replicar, y una red eficiente en términos de latencia y costes de transmisión.
Un objeto de la presente invención es proporcionar una solución que supere las desventajas de las soluciones de la técnica anterior. Más específicamente, el objetivo de la presente invención es proporcionar una solución para replicar datos entre nodos informáticos de manera flexible y eficiente en términos de red.
El objeto de la presente invención se logra según la invención con el sistema y el método que muestran las características técnicas de los aspectos siguientes.
Según un primer aspecto de la presente invención, se proporciona un método para mantener la coherencia de los datos entre los conjuntos de datos almacenados en una base de datos principal de un nodo informático principal y los conjuntos de datos correspondientes almacenados en una base de datos de replicación de al menos un nodo informático de replicación, en donde cada vez que se recibe una versión actualizada de un conjunto de datos almacenado, el nodo informático principal se configura para actualizar un conjunto de datos correspondiente almacenado en la base de datos principal y transmitir datos de replicación relacionados con la versión actualizada del conjunto de datos a al menos uno nodo informático de replicación para la replicación, comprendiendo cada conjunto de datos una pluralidad de campos de datos dispuestos en un diseño predeterminado definido según una estructura de representación del conjunto de datos (DSR), que se almacena junto con cada conjunto de datos en las bases de datos principal y de replicación, comprendiendo el método:
el procesamiento en el nodo informático principal por medio de un módulo de procesamiento principal de una versión actualizada de un conjunto de datos almacenado, comprendiendo la etapa de procesamiento:
la recepción por medio de un motor de recepción de datos, de la versión actualizada de un conjunto de datos almacenado en la base de datos principal;
el procesamiento de la versión actualizada del conjunto de datos por medio de un motor de procesamiento para generar la estructura DSR actualizada;
el análisis de la estructura DSR actualizada por medio de un motor de análisis para extraer los campos de datos de la versión actualizada del conjunto de datos;
la clasificación por medio de un motor de clasificación de los campos de datos extraídos en campos de datos estables, que comprenden valores de datos que cambian a una primera tasa de frecuencia, y campos de datos volátiles, que comprenden valores de datos que cambian a una segunda tasa de frecuencia, que es más alta que la primera tasa de frecuencia,
la generación por medio de un motor de vector de bits, de un vector de bits que almacene los valores de datos extraídos de los campos de datos volátiles;
la preparación por medio de un motor de preparación de datos de los datos a replicar en al menos un nodo informático de replicación, comprendiendo los datos de replicación el vector de bits generado; y
la transmisión por medio de un motor de transmisión de datos de los datos de replicación a al menos un nodo informático de replicación; y
la replicación en el al menos un nodo informático de replicación por medio de un módulo de replicación de los datos de replicación, comprendiendo la etapa de replicación:
la recepción por medio de un motor de recepción de datos de replicación de los datos de replicación;
el procesamiento por medio de un motor de procesamiento de replicación de los datos de replicación para extraer los valores de datos a replicar;
la selección por medio de un motor de selección DSR de una estructura DSR de replicación correspondiente a los datos de replicación; y
la replicación por medio de un motor de replicación, basado en la estructura DSR de replicación seleccionada, de valores de datos extraídos de los datos de replicación en el conjunto de datos de replicación correspondiente. Se ha encontrado que en la mayoría de los casos, cuando un conjunto de datos comprende tanto campos de datos estables como campos de datos volátiles, los valores de datos de los campos de datos volátiles cambiarían más rápido que los valores de datos de los campos de datos estables. Como resultado, en muchos casos puede ser más económico, en términos de costes de transmisión de datos de red, transmitir solamente los valores de datos del conjunto de datos que puede haber cambiado en comparación con una versión anterior, en lugar de todo el conjunto de datos. Esta técnica requiere que se identifique correctamente el tipo de cada campo de datos en el conjunto de datos, ya sean estables o volátiles. La identificación de los tipos de campos de datos se puede realizar generando una estructura DSR, que proporciona información sobre el diseño de los campos de datos en el conjunto de datos. La información en la estructura DSR puede ser utilizada por un motor de clasificación para clasificar los campos de datos en estables o volátiles. El motor de clasificación puede utilizar una variedad de técnicas de procesamiento de datos, por ejemplo, aprendizaje automático, combinado con datos históricos para determinar la velocidad a la que los valores de datos de cada campo de datos en el conjunto de datos cambian con el tiempo y, por consiguiente, clasificar los campos de datos en campos de datos volátiles o estables. Los valores de datos de los campos de datos volátiles cambiarían a un ritmo mayor que los valores de datos de los campos estables. Los valores de datos de los campos de datos volátiles se extraen y almacenan en un vector de bits. El vector de bits está incluido, o al menos parcialmente incluido, en los datos de replicación que se han de transmitir a al menos un nodo informático de replicación. En cada nodo informático de replicación, se procesan los datos de replicación, que pueden incluir el vector de bits y/u otra información, y se extraen los valores de datos a replicar. Para cada dato de replicación, se identifica el conjunto de datos correspondiente y, con el uso de la estructura DSR de replicación, los valores de datos extraídos de los datos de replicación se replican en los campos de datos correspondientes. En el contexto de la presente invención, el conjunto de datos DSR se puede utilizar como clave de serialización/deserialización para los datos de replicación, por ejemplo, los valores de datos almacenados en la estructura de vector de bits. Una de las ventajas del enfoque de replicación propuesto es que al transmitir, al menos en la mayoría de los casos, solamente los cambios ocurridos en los campos de datos volátiles en lugar de todo el conjunto de datos, es posible reducir la cantidad de datos transmitidos a través de la red, reduciendo así el coste de la red asociada, mientras se mantiene la coherencia y la actualización de los datos entre el nodo informático principal y el al menos un nodo informático de replicación. En los casos donde haya cambios en la estructura de DSR, por ejemplo, eliminación/inserción de campos de datos en el conjunto de datos, y/o cambios en los campos de datos estables, puede ser necesario transmitir el conjunto de datos completo y la estructura DSR correspondiente para la replicación en el al menos un nodo informático de replicación.
Según las realizaciones, el vector de bits se genera concatenando los valores de datos de los campos de datos volátiles. Los valores de datos concatenados se vinculan entre sí en una cadena de datos que forma el vector de bits, reduciendo así el tamaño de los datos que se han de transmitir a través de la red. Además, la concatenación de los valores de datos de los campos volátiles puede dar como resultado una compresión más eficiente del vector de bits, lo que puede reducir aún más el tamaño de los datos que se han de transmitir a través de la red.
Según las realizaciones, cada campo de datos volátiles almacena un valor de datos de un tamaño de datos predeterminado representado por un número de bits. La estructura DSR comprende información sobre el tamaño de los datos de cada campo de datos volátiles y/o estables. El tamaño de datos de cada campo de datos volátiles puede utilizarse para calcular la longitud máxima del vector de bits. Además, el tamaño de los datos se puede utilizar como un marcador de identificación para identificar los valores de los datos correspondientes a los diferentes campos de datos volátiles.
Según las realizaciones, el vector de bits está configurado para almacenar en serie los bits que representan el valor de datos de cada campo de datos volátiles. El vector de bits está configurado para almacenar los bits que representan el valor de datos de cada campo de datos en serie, es decir, un bit tras otro, lo que puede mejorar aún más la compresión, ya que no requiere ningún formateo y reduce los costes de transmisión de la red.
Según las realizaciones, el vector de bits está configurado para almacenar los valores de datos de los campos de datos volátiles en el orden definido en la estructura DSR para el conjunto de datos correspondiente. Como tal, la estructura DSR para cada conjunto de datos se puede utilizar como una clave de serialización en el nodo informático principal al generar el vector de bits y/o los datos de replicación, y/o como clave de deserialización al replicar los datos extraídos de los datos de replicación en el al menos un nodo informático. Debido a que la estructura DSR se almacena junto con el conjunto de datos correspondiente en el nodo principal y al menos un nodo informático de replicación, no es necesario transmitirla junto con los datos de replicación. Como resultado, el enfoque de replicación propuesto puede contribuir aún más a la reducción de los datos que se han de transmitir a través de la red.
Según las realizaciones, los datos de replicación se comprimen por medio de un motor de compresión del motor de transmisión de datos antes de que se transmitan a al menos un nodo informático de replicación, donde se descomprimen mediante un motor de descompresión del motor de recepción de datos. La compresión reduce el tamaño de los datos a transmitir, reduciendo así el coste de red asociado.
Según las realizaciones, el motor de compresión está configurado para seleccionar un método de compresión de una base de datos de compresión, el método de compresión aplicado a los datos de replicación se codifica y transmite a al menos un nodo de replicación, donde se utiliza por el motor de descompresión para seleccionar un método de descompresión correspondiente de una base de datos de descompresión para descomprimir los datos de replicación. De esta forma, el motor de compresión puede seleccionar el mejor método de compresión para reducir el tamaño de los datos de replicación, reduciendo así el coste de transmisión de la red. El método de compresión puede codificarse en el mensaje de replicación, por ejemplo, el encabezado del mensaje, de manera que el motor de descompresión sea capaz de identificar el método de descompresión correspondiente al método de compresión aplicado. De esta forma, se garantiza que la compresión y descompresión de la replicación se realiza sin pérdida de información. Las bases de datos de compresión y descompresión pueden ser mantenidas por un usuario y actualizadas regularmente. Cada método de compresión y descompresión puede seleccionarse dependiendo de criterios tales como el tamaño de los datos a replicar, las limitaciones de la red y similares.
Los datos a transmitir se comprimen mediante un algoritmo de compresión de codificación de longitud de ejecución (RLE). El algoritmo de compresión RLE está configurado para codificar una secuencia de bits idénticos en el vector de bits como un número que representa la longitud de la secuencia. En algunos casos, se puede utilizar un símbolo predeterminado para indicar un bit que se puede omitir o que no ha cambiado. El uso de símbolos y la representación numérica de la longitud de la secuencia de bits en el vector de bits puede aumentar la eficiencia del algoritmo de compresión.
Según las realizaciones, los datos de replicación consisten en el vector de bits, o el vector de bits y la estructura DSR. Dependiendo del número de cambios detectados entre la estructura DSR anterior y la estructura DSR actualizada, puede ser útil transmitir solamente el vector de bits o el vector de bits y la estructura DSR actualizada. En el nodo de replicación, el vector de bits y/o la estructura DSR actualizada se almacenan en la base de datos de replicación asociada con el conjunto de datos correspondiente. El nodo de replicación puede configurarse para replicar una pluralidad de conjuntos de datos. Cada uno de la pluralidad de conjuntos de datos puede almacenarse en una base de datos de replicación correspondiente. Los datos de replicación pueden contener información adicional que identifique el conjunto de datos asociado con los datos de replicación. Por ejemplo, se pueden insertar bits adicionales en el vector de bits que especifican el conjunto de datos correspondiente en el nodo de replicación.
Según las realizaciones, en donde el vector de bits generado se codifica como una diferencia de un vector de bits generado para una versión anterior del conjunto de datos correspondiente. La compresión y descompresión garantizan que se reduzca el tamaño de los datos transmitidos a través de la red, reduciendo así, los costes de transmisión de red asociados.
Según las realizaciones, la etapa de generación de un vector de bits comprende la comparación de la estructura DSR actualizada con la estructura DSR del conjunto de datos almacenado en la base de datos principal para identificar diferencias en el diseño de los campos de datos en el conjunto de datos actualizado, y en donde cuando se detecta una diferencia en el diseño del conjunto de datos, la estructura DSR actualizada completa y/o el conjunto de datos actualizado completo se incluyen en los datos de replicación. Con el tiempo, la estructura del conjunto de datos puede cambiar o caducar. Además, con el tiempo, los valores de datos de los campos de datos estables también pueden cambiar. Por lo tanto, cuando se detectan cambios, al menos la estructura DSR del conjunto de datos actualizado se transmite junto con el vector de bits a al menos un nodo informático de replicación. El conjunto de datos actualizado completo también se puede transmitir para la replicación en el al menos un nodo informático de replicación, por ejemplo, cuando se detecta un cambio en los valores de datos de los campos de datos estables o se ha producido un cambio en el diseño debido a la adición o eliminación de campos de datos. En el nodo de replicación, la estructura DSR transmitida reemplazaría la estructura DSR almacenada en la base de datos de replicación para el conjunto de datos correspondiente. En el caso de que todo el conjunto de datos actualizado se transmita con los datos de replicación, entonces el conjunto de datos transmitido reemplazaría el conjunto de datos correspondiente almacenado en la base de datos de replicación del al menos un nodo informático de replicación.
Según las realizaciones, en donde la etapa de selección de la estructura DSR de replicación en al menos un nodo informático de replicación comprende la determinación de si los datos de replicación comprenden una estructura DSR actualizada, en donde cuando se transmite una estructura DSR actualizada, a continuación, se selecciona como la estructura DSR de replicación, de lo contrario, la estructura DSR del conjunto de datos de replicación almacenado se selecciona como la estructura DSR de replicación. Como se ha descrito anteriormente en el tiempo extra, la estructura DSR almacenada en la base de datos de replicación de al menos un nodo informático de replicación caducaría y/o cambiaría, por lo tanto, es importante que cuando se transmita una estructura DSR actualizada como parte de los datos de replicación, reemplace la estructura DSR correspondiente, y a continuación, seleccionada para hacer corresponder los valores de datos extraídos de la base de datos de replicación a los campos de datos correctos del conjunto de datos correspondiente almacenado en la base de datos de replicación. De esta forma, se puede garantizar que los valores extraídos estén asociados con la versión más actualizada de la estructura DSR para el conjunto de datos correspondiente.
Según las realizaciones, en donde la etapa de transmisión comprende la división de los datos de replicación en paquetes de datos, que se transmiten de forma independiente a al menos un nodo informático de replicación donde son recopilados y procesados por un motor de reconstrucción de datos del motor de recepción de datos para reconstruir los datos de replicación. Al dividir los datos de replicación en paquetes de datos, es posible transmitir los paquetes de datos en paralelo, aumentando así la velocidad a la que se transmiten los datos desde el nodo informático principal al nodo informático de replicación como mínimo. Además, puede ser necesario dividir el vector de bits en paquetes de datos más pequeños para satisfacer el ancho de banda de la red de comunicaciones de transmisión. Por ejemplo, en el caso donde el tamaño del vector de bits sea mayor que la unidad de transmisión máxima (MTU) aceptable de la red de comunicaciones.
Según las realizaciones, en donde el primer valor de datos de cada paquete de datos define un valor de desplazamiento asociado con la posición de los paquetes de datos en los datos de replicación. El primer valor de datos de un paquete de datos puede ser indicativo del desplazamiento del paquete de datos en los datos transmitidos. Según las realizaciones, el valor de desplazamiento puede ser indicativo del número de bits de datos que separan el primer bit del vector de bits y/o los datos de replicación del primer bit de cada paquete de datos. Por ejemplo, si el vector de bits en los datos de replicación contiene mil bits, y el vector de bits se divide en cinco paquetes de datos de doscientos bits cada uno, entonces el valor de desplazamiento del primer paquete indicaría que hay cero bits de separación, el valor de desplazamiento del segundo paquete indicaría que hay ciento noventa y nueve bits que separan el primer bit del vector de bits del primer bit del segundo paquete de datos, el valor de desplazamiento del tercer paquete de datos indicaría que hay trescientos noventa y nueve bits que separan el primer bit del vector de bits del primer bit del tercer paquete de datos, el valor de desplazamiento del cuarto paquete de datos indicaría que hay quinientos noventa y nueve bits que separan el primer bit del vector de bits del primer bit del cuarto paquete de datos, y el valor de desplazamiento del quinto paquete de datos indicaría que hay setecientos noventa y nueve bits que separan el primer bit del vector de bits del primer bit del quinto paquete de datos. El valor de desplazamiento puede ser utilizado por el motor de recepción de datos en el al menos un nodo informático de replicación para ensamblar los paquetes de datos a fin de reconstruir los datos de replicación transmitidos.
Según las realizaciones, en donde la estructura DSR generada para cada conjunto de datos correspondiente comprende al menos un campo de datos de marcador de posición para acomodar cambios en la estructura DSR, el campo de datos de marcador de posición comprende un bit de validez, el valor del bit de validez es indicativo de si el campo de datos de marcador de posición contiene un valor de datos, cuyo valor de datos se clasifica como un valor de datos volátiles. Los campos de datos del marcador de posición se pueden utilizar para acomodar cambios en el conjunto de datos, por ejemplo, adición o eliminación de un campo de datos volátiles. Cada campo de datos de marcador de posición comprende un bit de validez. El valor del bit de validez indica si el campo de datos de marcador de posición contiene un valor de datos. Por ejemplo, en una estructura DSR que contiene cinco campos de datos de marcador de posición, si hay una inserción de un campo de datos volátiles en el conjunto de datos, entonces se puede seleccionar uno de los campos de datos de marcador de posición para acomodar el cambio en la estructura DSR, es decir, la inserción del nuevo campo de datos volátiles, y el valor del bit de validez correspondiente se cambiaría de "falso", indicando que los campos de datos de marcador de posición no están en uso, a "verdadero", indicando el campo de datos de marcador de posición está en uso y contiene un valor de datos volátiles, mientras que el valor del bit de validez de los cuatro campos de datos del marcador de posición restantes seguiría siendo "falso". Además, en el caso de una eliminación de un campo de datos volátiles de una estructura DSR donde todos los campos de datos de marcador de posición están en uso y sus bits de validez correspondientes se establecen a "verdadero", el cambio en la estructura DSR, es decir, la eliminación de un campo de datos volátiles, se puede acomodar fijando el bit de validez de uno de los campos de datos de marcador de posición a "falso", indicando que el campo de datos de marcador de posición correspondiente no está en uso. De esta forma, puede ser posible prolongar la esperanza de vida de la estructura DSR, siempre que los registros contenidos en los conjuntos de datos actualizados sigan la misma estructura de datos predefinida y el número de campos de datos volátiles agregados no exceda el número de marcadores de posición aprovisionados. La adición de campos de datos de marcadores de posición en la DSR puede reducir aún más los costes de transmisión de datos porque la estructura DSR actualizada solamente se transmite cuando los cambios superan la cantidad de campos de datos de marcadores de posición. En ciertos casos, solamente se puede requerir un número limitado de marcadores de posición, por ejemplo, cuatro o cinco, dependiendo del tipo de conjunto de datos. Siempre que los cambios en el conjunto de datos excedan el número de campos de datos de marcador de posición, la estructura DSR almacenada, en los nodos informáticos principales y de replicación, se reemplaza con la estructura DSR actualizada. La estructura DSR debe reemplazarse cada vez que se produce un cambio estructural en el conjunto de datos, por ejemplo, cambio de la estructura de datos predefinida. Se ha de observar que es posible que todos los campos del conjunto de datos se definan en la estructura DSR como campos de datos de marcador de posición. Dependiendo de la aplicación y el conjunto de datos correspondiente, el diseñador o desarrollador de la aplicación puede decidir a) cuántos "marcadores de posición vacíos", con el bit de validez establecido a "falso" son deseables para acomodar futuras inserciones, b) qué campos deberían ser "marcadores de posición completos", con el bit de validez establecido a "verdadero", y si alguno de ellos se han de eliminar para acomodar las eliminaciones de campos de datos en la estructura DSR.
Según un segundo aspecto de la presente invención, se puede proporcionar un motor de aceleración de coherencia para mantener la coherencia de los datos entre conjuntos de datos almacenados en una base de datos principal de un nodo informático principal y una base de datos de replicación de al menos un nodo informático de replicación de una arquitectura informática distribuida, en donde cada vez que se recibe una versión actualizada de un conjunto de datos almacenado, el nodo informático principal se configura para actualizar un conjunto de datos correspondiente almacenado en la base de datos principal y transmitir los datos de replicación relacionados con la versión actualizada del conjunto de datos a al menos un nodo informático de replicación para la replicación, comprendiendo cada conjunto de datos una pluralidad de campos de datos dispuestos en un diseño definido según una estructura de representación de conjunto de datos (DSR) correspondiente, que se almacena junto con el conjunto de datos correspondiente en la base de datos principal y de replicación, el motor de aceleración de coherencia que comprende:
un módulo de procesamiento principal configurado para procesar en el nodo informático principal un conjunto de datos almacenado, comprendiendo el módulo de procesamiento principal:
un motor de recepción de datos configurado para recibir una versión actualizada de un conjunto de datos almacenados correspondiente a un conjunto de datos almacenado en la base de datos principal;
un motor de procesamiento configurado para procesar la versión actualizada del conjunto de datos para generar su estructura DSR actualizada asociada;
un motor de análisis configurado para analizar la estructura DSR actualizada para extraer los campos de datos de la versión actualizada del conjunto de datos;
un motor de clasificación configurado para clasificar los campos de datos extraídos en campos de datos estables, que comprenden valores de datos que cambian a una primera tasa de frecuencia, y campos de datos volátiles, que comprenden valores de datos que cambian a una segunda tasa de frecuencia, que es más rápida que la primera tasa de frecuencia,
un motor de vector de bits configurado para generar un vector de bits que almacena los valores de datos extraídos de los campos de datos volátiles;
un motor de preparación de datos configurado para preparar los datos a replicar, comprendiendo los datos de replicación el vector de bits generado; y
motor de transmisión de datos configurado para transmitir los datos de replicación a al menos un nodo informático de replicación; y
un módulo de replicación configurado para replicar en al menos un nodo informático de replicación los datos de replicación, comprendiendo el módulo de replicación:
un motor de recepción de datos de replicación configurado para recibir los datos de replicación;
un motor de procesamiento de replicación configurado para procesar los datos de replicación para extraer los valores de datos a replicar;
un motor de selección DSR configurado para seleccionar una estructura DSR de replicación correspondiente a los datos de replicación; y
un motor de replicación configurado para replicar, según la estructura DSR de replicación seleccionada, los valores de datos de replicación extraídos en el conjunto de datos de replicación correspondiente almacenado en una base de datos de replicación.
Según el segundo aspecto, el vector de bits se genera concatenando los valores de datos de los campos de datos volátiles.
Según el segundo aspecto, cada campo de datos volátiles almacena un valor de datos de un tamaño de datos predeterminado representado por un número de bits.
Según el segundo aspecto, la estructura DSR comprende el tamaño de datos de cada campo de datos volátiles. Según el segundo aspecto, el vector de bits está configurado para almacenar en serie los bits que envían el valor de datos de cada campo de datos volátiles.
Según el segundo aspecto, el vector de bits está configurado para almacenar los valores de datos de los campos de datos volátiles en el orden definido en la estructura DSR para el conjunto de datos correspondiente.
Según el segundo aspecto, el motor de compresión está configurado para comprimir los datos de replicación antes de que se transmitan a al menos un nodo informático de replicación, donde son descomprimidos por un motor de descompresión del motor de recepción de datos.
Según el segundo aspecto, el motor de compresión está configurado para seleccionar un método de compresión de una base de datos de compresión, el método de compresión aplicado a los datos de replicación se codifica y transmite a al menos un nodo de replicación, donde es utilizado por el motor de descompresión para seleccionar un método de descompresión correspondiente de una base de datos de descompresión para descomprimir los datos de replicación. De esta forma, el motor de compresión puede seleccionar el mejor método de compresión para reducir el tamaño de los datos de replicación, reduciendo así el coste de transmisión de la red.
Según el segundo aspecto, el motor de compresión comprime los datos a transmitir con un algoritmo de compresión de codificación de longitud de ejecución (RLE).
Según el segundo aspecto, los datos de replicación consisten en el vector de bits, o el vector de bits y la estructura DSR.
Según el segundo aspecto, el motor de vector de bits está configurado para codificar el vector de bits generado a diferencia de una versión anterior del vector de bits para el conjunto de datos almacenado en la base de datos principal.
Según el segundo aspecto, el motor de vector de bits está configurado para generar el vector de bits comparando la estructura DSR actualizada con la estructura DSR del conjunto de datos almacenado en la base de datos principal para identificar diferencias en el diseño de los campos de datos en el conjunto de datos actualizado, y en donde cuando se detecta una diferencia en el diseño del conjunto de datos, la estructura DSR actualizada completa y/o el conjunto de datos actualizado completo se incluye en los datos de replicación.
Según el segundo aspecto, en donde el motor de selección DSR está configurado para seleccionar la estructura DSR de replicación correspondiente determinando si los datos de replicación comprenden una estructura DSR actualizada, en donde cuando se transmite una estructura DSR actualizada, a continuación, se selecciona como la estructura DSR de replicación, de lo contrario, la estructura DSR del conjunto de datos de replicación almacenado se selecciona como la estructura DSR de replicación.
Según el segundo aspecto, en donde el motor de transmisión de datos está configurado para dividir los datos de replicación en paquetes de datos, que se transmiten de forma independiente a al menos un nodo informático de replicación donde son recopilados y procesados por un motor de reconstrucción de datos del motor de recepción de datos para reconstruir los datos de replicación.
Según el segundo aspecto, el primer valor de datos de cada paquete de datos define un valor de desplazamiento asociado con la posición de los paquetes de datos en los datos de replicación.
Según el segundo aspecto, el valor de desplazamiento es indicativo del número de bits que separan el primer bit del vector de bits del primer bit de cada paquete de datos.
Según el segundo aspecto, el motor de procesamiento está configurado para generar una estructura DSR para cada conjunto de datos correspondiente que comprende al menos un campo de datos de marcador de posición para acomodar cambios en la estructura DSR, el campo de datos de marcador de posición comprende un bit de validez, el valor del bit de validez es indicativo de si el campo de datos de marcador de posición contiene un valor de datos, cuyo valor de datos se clasifica como un valor de datos volátiles.
Los siguientes dibujos se proporcionan como ejemplo para explicar aún más y describir varios aspectos de la invención.
La Fig. 1 muestra un ejemplo de un sistema de almacenamiento de datos distribuido según las realizaciones de la presente invención.
La Fig. 2 muestra un ejemplo de un nodo informático principal según las realizaciones de la presente invención. La Fig. 3 muestra un ejemplo de un módulo de procesamiento principal según las realizaciones de la presente invención.
La Fig. 4 muestra un ejemplo de un nodo informático de replicación según las realizaciones de la presente invención. La Fig. 5 muestra un ejemplo de un módulo de replicación según las realizaciones de la presente invención.
La Fig. 6 muestra un ejemplo de una estructura de representación de conjunto de datos (DSR) según las realizaciones de la presente invención.
La Fig. 7 muestra un ejemplo de un vector de bits que almacena valores de datos extraídos de los campos de datos volátiles de la estructura DSR que se muestra en la figura 6, según las realizaciones de la presente invención.
La Fig. 8 muestra un ejemplo de una estructura DSR que contiene bits de validez y su representación correspondiente en el vector de bits según las realizaciones de la presente invención.
La Fig. 9 muestra un ejemplo de creación de paquetes de datos con un valor de desplazamiento a partir de un conjunto de datos según las realizaciones de la presente invención.
La Fig. 10 muestra los resultados de la simulación que comparan el rendimiento del enfoque propuesto con las soluciones existentes.
La Fig. 11 muestra resultados de simulación adicionales que comparan el rendimiento del enfoque propuesto con las soluciones existentes.
La presente invención se ilustrará utilizando las realizaciones ejemplificadas que se muestran en las figs. 1 a 11, que se describirán con más detalle a continuación. Debería observarse que cualquier referencia hecha a las dimensiones es solamente indicativa y no restringe la invención de ninguna manera. Si bien esta invención se ha mostrado y descrito con referencia a ciertas realizaciones ilustradas de la misma, los expertos en la técnica comprenderán que se pueden realizar varios cambios en la forma y los detalles sin desviarse del alcance de la invención abarcado por las reivindicaciones adjuntas. Además, mientras que la invención se ha descrito con referencia a un sistema particular y/o un método para mantener la coherencia de los datos entre los conjuntos de datos almacenados en una base de datos principal de un nodo informático principal y los conjuntos de datos correspondientes almacenados en una base de datos de replicación de, al menos, un nodo informático de replicación, los expertos en la técnica deberían comprender que se pueden realizar cambios en la forma y los detalles para facilitar otros tipos de métodos y/o sistemas en campos relacionados sin desviarse del alcance de la invención abarcado por las reivindicaciones adjuntas.
La Figura 1 muestra un ejemplo de un sistema de almacenamiento de datos distribuido según las realizaciones de la presente invención. El sistema de almacenamiento distribuido puede estar provisto de un nodo 300 informático principal configurado para manejar y almacenar datos recibidos de una pluralidad de fuentes 100 de datos a través de una primera red 200 de comunicaciones. El nodo 300 informático principal puede implementarse mediante una serie de servidores informáticos de un primer centro de datos. Cada fuente 100 de datos puede configurarse para comunicar al nodo 300 informático principal un tipo específico de datos estructurados en un formato de datos predeterminado. Por ejemplo, cada fuente 100 de datos puede representar un sistema de línea aérea diferente, comunicando cada uno al nodo 300 informático principal al menos un conjunto de datos que contiene información relacionada con el horario de vuelo de la línea aérea, disponibilidad, rutas, tipos de aeronaves, aeropuertos, red de líneas aéreas afiliadas, y otra información similar. Los conjuntos de datos comunicados por cada fuente 100 de datos pueden ser válidos solamente durante un período específico de tipo y así, pueden contener un límite de tiempo de caducidad. El nodo 300 informático principal puede configurarse para comunicar los conjuntos de datos recibidos de las fuentes 100 de datos a los nodos 500 informáticos de replicación a través de una segunda red 400 de comunicaciones, donde los conjuntos de datos se procesan y almacenan. Cada nodo 500 informático de replicación puede implementarse mediante varios servidores informáticos de un centro de datos, que pueden estar ubicados en una ubicación geográfica diferente del nodo 300 informático principal y los otros nodos 500 informáticos de replicación. Por ejemplo, el nodo 300 informático principal puede implementarse en un centro de datos ubicado en Europa, uno de los nodos 500 informáticos de replicación puede implementarse en un centro de datos ubicado en América del Norte, mientras que otro nodo 500 informático de replicación puede implementarse en un centro de datos ubicado en Asia. Los datos almacenados en cada nodo 500 informático de replicación pueden ser accedidos por una pluralidad de clientes. La ubicación de cada nodo 500 informático de replicación puede decidirse según la rapidez con la que los clientes pueden acceder a los datos relevantes. Por ejemplo, para un agente de viajes ubicado en América del Norte, sería más rápido acceder a los datos almacenados en un nodo 500 informático de replicación ubicado en la misma región geográfica, en comparación con acceder a los datos almacenados en un nodo 500 informático de replicación ubicado en Europa o Asia. Por lo tanto, es importante que los datos almacenados en cada nodo 500 informático de replicación se actualice regularmente para reflejar con precisión las últimas actualizaciones de datos recibidas en el nodo 300 informático principal desde las diferentes fuentes 100 de datos. Por ejemplo, en la industria de viajes, es importante que la disponibilidad de asientos de un vuelo específico se refleje con precisión en todos los nodos 500 informáticos de replicación. De lo contrario, existe el riesgo de que se realice una reserva no válida en un vuelo ya completamente reservado, que solamente se descubriría en una etapa posterior. Actualmente, el enfoque principal para mantener la frescura y la coherencia de los datos, entre los conjuntos de datos almacenados en un nodo 500 informático principal y los conjuntos de datos correspondientes almacenados en un nodo 300 informático de replicación, es transmitir periódicamente para la replicación los conjuntos de datos completos desde el nodo 300 informático principal hasta todos los nodos 500 informáticos de replicación. Aunque el enfoque existente garantiza la frescura y la coherencia de los datos en diferentes nodos informáticos, tiene un alto coste de comunicación de red asociado, debido a la gran cantidad de datos que se han de transmitir sobre la red. Sin embargo, cuando se actualizan conjuntos de datos almacenados, no siempre es necesario transmitir los conjuntos de datos actualizados completos a los nodos informáticos de replicación. En la mayoría de los casos, cada conjunto de datos contendría campos de datos que almacenan valores de datos que son altamente volátiles y están obligados a cambiar a un ritmo más rápido en comparación con los valores de datos almacenados en otros campos de datos del mismo conjunto de datos. Por lo tanto, en la mayoría de los casos, es suficiente transmitir solamente los valores de los conjuntos de datos que han cambiado en comparación con las versiones anteriores, y solamente transmitir los conjuntos de datos actualizados completos cuando hay una diferencia fundamental, por ejemplo, en la estructura de datos, tipos de datos y similares. Se ha demostrado que al transmitir los valores de datos que se han cambiado en lugar de conjuntos de datos completos actualizados, se reducen drásticamente los requisitos de ancho de banda de comunicación para mantener la frescura y la coherencia de los datos almacenados en diferentes nodos informáticos a lo largo del tiempo. Como resultado, debido a la reducción de los requisitos de ancho de banda de comunicación, habría una reducción asociada en el coste de comunicación de la red. Esto se logra proporcionando un motor de aceleración de coherencia y un método asociado para mantener la coherencia de los datos en diferentes nodos informáticos.
La Figura 2 muestra un ejemplo de un nodo 300 informático principal según las realizaciones de la presente invención. El nodo 300 informático principal está provisto de un almacenamiento 310 principal configurado para almacenar los conjuntos de datos recibidos de las diferentes fuentes 100 de datos en varias bases de datos principales, junto con su correspondiente estructura de representación de conjunto de datos (DSR), que define para cada conjunto de datos el diseño y/o la estructura de sus campos de datos representativos. El nodo 300 informático principal puede estar provisto de un módulo de procesamiento principal, que forma parte del motor de aceleración de coherencia. El módulo 320 de procesamiento principal está configurado para procesar cada conjunto de datos actualizado recibido de las diferentes fuentes 100 de datos para determinar los cambios realizados en los valores de datos y la estructura de los campos de datos en comparación con las versiones anteriores correspondientes de cada conjunto de datos almacenado en el almacenamiento 310 principal, que se comunican con al menos un nodo 500 informático de replicación para la replicación. El módulo 320 de procesamiento principal actualiza los conjuntos de datos almacenados con las actualizaciones de datos correspondientes.
La Figura 3 muestra una arquitectura ejemplificada para el módulo 310 de procesamiento principal. Como se muestra, se puede proporcionar un motor 321 de recepción de datos para recibir conjuntos de datos actualizados de las diferentes fuentes 100 de datos y para identificar el conjunto de datos almacenado correspondiente en las bases de datos 310 de almacenamiento principal. Cada conjunto de datos actualizado se reenvía, a continuación, a un motor 322 de procesamiento, donde se procesa para generar su estructura de representación de conjunto de datos (DSR) actualizada. Cada estructura DSR actualizada se analiza, a continuación, por un motor 323 de análisis para extraer los campos de datos de la correspondiente versión actualizada del conjunto de datos. Los campos de datos extraídos se clasifican, a continuación, por medio de un motor 324 de clasificación en campos de datos estables, que comprenden valores de datos que cambian a una primera tasa de frecuencia, y campos de datos volátiles, que comprenden valores de datos que cambian a una segunda tasa de frecuencia, que es superior a la primera tasa de frecuencia. El motor 324 de clasificación puede utilizar una variedad de técnicas de procesamiento de datos, por ejemplo, aprendizaje automático, combinado con datos históricos para determinar la velocidad a la que los valores de datos de cada campo de datos en el conjunto de datos cambian con el tiempo y, por consiguiente, clasificar los campos de datos en campos de datos volátiles o estables. Una vez que se han clasificado los campos de datos, se utiliza un motor 325 de vector de bits para extraer los valores de datos de los campos de datos volátiles de cada conjunto de datos actualizado y, por consiguiente, generar un vector de bits correspondiente que almacena los valores de datos volátiles extraídos. Para cada conjunto de datos, el vector de bits puede generarse concatenando los valores de datos de los campos de datos volátiles del conjunto de datos actualizado. En el vector de bits, los bits de datos que representan los valores de datos de cada campo de datos volátiles se almacenan en serie, es decir, un bit de datos tras otro. Los valores de datos pueden ordenarse en el vector de bits según el orden en que se presentan los campos de datos volátiles en la estructura DSR correspondiente a cada conjunto de datos actualizado y procesado. El vector de bits generado puede almacenarse junto con el conjunto de datos actualizado correspondiente en el almacenamiento 310 principal. El vector de bits generado puede codificarse como una diferencia de un vector de bits generado para una versión anterior del conjunto de datos correspondiente. Una vez que se ha creado el vector de bits para un conjunto de datos actualizado, se puede utilizar un motor 326 de preparación de datos para preparar los datos que se han de replicar en al menos un nodo 500 informático de replicación. Los datos de replicación pueden contener al menos un vector de bits generado junto con otra información. El motor 325 de vector de bits puede configurarse para comparar la estructura DSR generada del conjunto de datos actualizado con la estructura DSR del conjunto de datos correspondiente almacenado en la base de datos principal para identificar diferencias en la estructura de datos. En el caso de que se detecten diferencias en la estructura de datos, por ejemplo, adición o eliminación de campos de datos, entonces el motor 326 de preparación de datos está configurado para incluir, además del vector de bits, en los datos de replicación la estructura DSR actualizada y/o el conjunto de datos actualizado completo, para la replicación a al menos un nodo informático de replicación. La versión anterior del vector de bits se puede almacenar en el almacenamiento 310 principal junto con la versión anterior correspondiente del conjunto de datos y/o la estructura DSR. Una vez que los datos de replicación están listos, se reenvían a un motor 327 de transmisión de datos que está configurado para transmitir mediante una red de comunicación 400 los datos de replicación a al menos un nodo 500 informático de replicación. Los datos de replicación se pueden comprimir por medio de un motor de compresión, que puede ser parte del motor de transmisión de datos antes de que se transmita a al menos un nodo informático de replicación, donde es descomprimido por un motor de descompresión del motor de recepción de datos. Puede utilizarse cualquier algoritmo de compresión de datos conocido para la compresión de los datos de replicación. Por ejemplo, puede utilizarse el algoritmo de compresión de codificación de longitud de ejecución (RLE), que está configurado para codificar una secuencia de bits idénticos en el vector de bits como un número que representa la longitud de la secuencia. En algunos casos, se puede utilizar un símbolo predeterminado generado por el algoritmo RLE para indicar un bit que se puede omitir o que no ha cambiado. El uso de símbolos y la representación numérica de la longitud de la secuencia de bits en el vector de bits puede aumentar la eficacia del algoritmo de compresión. Se pueden utilizar otros algoritmos de compresión, tales como Bzip2, Gzip, ZLIB, algoritmos de compresión de diccionario en banda y fuera de banda. Compresión clásica, por ejemplo, gzip, bzip2 funciona creando un diccionario de las subcadenas más comunes en el archivo comprimido y, a continuación, codificando cada una con la cantidad mínima de bits. El diccionario de datos está dentro del archivo comprimido; así, cuando viaja por la red, el diccionario de datos se denomina "en banda". Por otro lado, la compresión de diccionarios fuera de banda consiste en:
- procesar una gran cantidad de datos de referencia para extraer el (estadísticamente mejor) diccionario de datos
- congelar el diccionario (con un ID/fecha) y enviarlo a todas las partes (codificadores y decodificadores) "de una vez por todas" (o al menos, no cambiarlo con demasiada frecuencia...)
Esto ahorra el ancho de banda de la red al enviar el diccionario con cada archivo de datos. Algunos ejemplos de fuera de banda incluyen Zstandard, y RFC 3284 especifica VCDIFF, un formato de compresión (para transacciones HTTP) que utiliza una "tabla de códigos" predeterminada pero permite el uso de tablas de códigos específicas de la aplicación.
La Figura 4 muestra un ejemplo de un nodo 500 informático de replicación según las realizaciones de la presente invención. Cada nodo 500 informático de replicación puede estar provisto de un almacenamiento 510 de replicación para almacenar los conjuntos de datos de replicación y las estructuras DSR asociadas correspondientes a los conjuntos de datos y la información asociada almacenada en el almacenamiento 310 principal. El almacenamiento 510 de replicación puede configurarse para almacenar sustancialmente la misma información que la almacenada en el almacenamiento 310 principal. El nodo 500 informático de replicación está provisto además de un módulo 520 de replicación configurado para recibir y replicar los datos de replicación en el almacenamiento 510 de replicación.
La Figura 5 muestra una arquitectura ejemplificada para el módulo 520 de replicación. El módulo 520 de replicación está provisto de un motor 521 de recepción de datos de replicación configurado para recibir los datos de replicación.
El motor 521 de recepción de datos de replicación también puede identificar el conjunto de datos de replicación en el almacenamiento 510 de replicación correspondiente a los datos de replicación transmitidos. Se proporciona un motor 522 de procesamiento de replicación para procesar los datos de replicación para extraer los valores de datos a replicar. Se proporciona un motor 523 de selección DSR para seleccionar la estructura DSR de replicación que se ha de utilizar en la asignación de los valores de datos extraídos a los campos de datos del conjunto de datos de replicación correspondiente. El motor 523 de selección DSR está configurado para determinar si los datos de replicación comprenden una estructura DSR actualizada. En el caso de que se transmita una estructura DSR actualizada junto con los datos de replicación, por ejemplo, cuando la estructura DSR almacenada ha cambiado o ha caducado, la DSR actualizada se selecciona como la estructura DSR de replicación; de lo contrario, la estructura DSR del conjunto de datos de replicación almacenado correspondiente se selecciona como la estructura DSR de replicación. Una vez que se ha seleccionado la DSR de replicación correspondiente, se proporciona un motor 524 de replicación para replicar los valores de datos extraídos de los datos de replicación en el conjunto de datos de replicación correspondiente.
La Figura 6 muestra un ejemplo de una estructura DSR generada a partir de un conjunto de datos recibido de una fuente 100 de datos según las realizaciones de la presente invención. Como se muestra, la estructura DSR puede identificar los registros de datos de diferentes niveles, el tipo de campos de datos, por ejemplo, volátiles o estables, el tamaño de los valores de datos almacenados en al menos los campos de datos volátiles, por ejemplo, expresado por el número de bits, y otra información relevante. Por ejemplo, en el contexto de la industria de viajes, el conjunto de datos puede representar las diferentes recomendaciones de viaje recibidas en respuesta a una consulta de una aerolínea. El registro de datos de nivel 1 puede representar la recomendación de viaje, el registro de datos de nivel 2 puede representar la solución de viaje propuesta, el registro de datos de nivel 3 puede representar las diferentes opciones de ruta de vuelo para la solución de viaje propuesta y los campos de datos volátiles pueden representar la disponibilidad de asientos. Se espera que la disponibilidad de asientos en este ejemplo cambie más rápido, a medida que más clientes reserven la solución de viaje propuesta, en comparación con las opciones de ruta de vuelo, que se determinan con mucha antelación.
La Figura 7 muestra un ejemplo de un vector de bits generado basado en una estructura DSR según las realizaciones de la presente invención. El vector de bits, también conocido como agrupación de bits, mapa de bits, conjunto de bits o cadena de bits, es una estructura de datos de agrupación que almacena bits de forma compacta. Se puede utilizar para implementar una estructura de datos de conjunto simple. Un vector de bits es efectivo para explotar el paralelismo a nivel de bits en el hardware para realizar operaciones rápidamente. Una agrupación de bits ofrece un almacenamiento denso para bits "aleatorios", es decir, donde cada bit tiene la misma probabilidad de ser 0 o 1, y cada uno es independiente. Sin embargo, la mayoría de los datos no son aleatorios, por lo que es posible almacenarlos de forma más compacta. Por ejemplo, los datos de una imagen de fax típica no son aleatorios y se pueden comprimir. La codificación de longitud de ejecución se utiliza comúnmente para comprimir estos flujos largos. Como se muestra en la figura 7, el valor de datos de cada campo de datos volátiles está representado en el vector de bits por el número de bits indicado en la estructura DSR. Por ejemplo, el campo de datos volátiles #1 está representado por tres bits, mientras que el campo de datos volátiles #2 está representado por dos bits. Los valores de datos se representan en el vector de bits en el orden identificado por la DSR, por lo que primero está el campo de datos volátiles #1, después el campo de datos volátiles #2 y el último es el campo de datos volátiles #2233456. Como se muestra en la figura 8, la estructura DSR puede estar provista de campos de datos adicionales 610, denominados bits de validez, que se utilizan para acomodar cambios en el conjunto de datos, por ejemplo, adición de un registro de datos. Los bits 610 de datos de validez se consideran campos de datos volátiles y se incluyen en el vector de bits.
Según las realizaciones de la presente invención, el vector de bits y/o todos los datos de replicación pueden dividirse en paquetes de datos, que pueden tener el mismo tamaño de datos o uno diferente. La figura 9 muestra un ejemplo de un paquete 640 de datos de vector de bits generado para la correspondiente sección 630 de datos de destino de un conjunto de datos 620. Cada paquete 640 de datos puede transmitirse de forma independiente a al menos un nodo 500 informático de replicación donde todos los paquetes 640 de datos son recopilados y procesados por un motor de reconstrucción de datos del motor 521 de recepción de datos de replicación para reconstruir los datos de replicación. Al dividir los datos de replicación en paquetes 640 de datos, es posible transmitir los paquetes de datos en paralelo, aumentando así la velocidad a la que se transmiten los datos desde el nodo informático principal al nodo informático de replicación como mínimo. Puede ser necesario dividir adicionalmente el vector de bits y/o los datos de replicación en paquetes de datos más pequeños para satisfacer el ancho de banda de la red de comunicaciones de transmisión. Por ejemplo, en el caso de que el tamaño del vector de bits sea mayor que el ancho de banda aceptable de la red de comunicaciones. Cada paquete 640 de datos puede estar provisto de un valor de desplazamiento, que puede ser indicativo del número de bits que separan el primer bit del vector de bits 620 de datos volátiles del primer bit de cada paquete 640 de datos. El valor de desplazamiento de cada paquete 640 de datos indica el orden en el que se han de ensamblar los paquetes de datos para reconstruir el vector de bits y/o los datos de replicación.
Las Figuras 10 y 11 muestran los resultados de una simulación para comparar el rendimiento entre el enfoque de replicación actual (etiquetado como "ECA" para acelerador de coherencia eventual) y 2 técnicas de replicación de bases de datos "clásicas". El primero está etiquetado como "bloques modificados". Consiste en transmitir bloques cuando han cambiado. En esta simulación, el tamaño de bloque es de 10000 bytes (que se acerca a los tamaños de bloque predeterminados que se encuentran en los productos existentes). El segundo método comparado está etiquetado como "registro de cambios" y consiste en transmitir el registro de cambios de la base de datos. Suponemos que los únicos cambios son actualizaciones (sin inserción, sin eliminación). Aquí, el tamaño de la base de datos simulada es de 10 millones de bytes, es decir, 1000 bloques, pero los resultados se escalan a cualquier tamaño. Simulamos campos definidos por una clave de ocho bytes y un campo de datos de un bit (volátil). Para ambos métodos comparados, para ser justos, se aplica el mismo método de compresión, es decir, el zstd.
En la Figura 10, el indicador de rendimiento elegido es "bits enviados/bits cambiados", cuanto más pequeños, mejor, que caracterizan la capacidad de transmitir la menor cantidad posible de bits (enviados) para replicar una determinada cantidad de cambio medido en bits (cambiados). (registro de) enviado/cambiado se traza con el eje horizontal que representa el (registro de) el porcentaje de bits volátiles cambiados. La curva superior (círculos) muestra el rendimiento de la transmisión de bloques cambiados. La curva horizontal (cruces) muestra el rendimiento de la transmisión del registro de cambios. Estas curvas se encuentran a la derecha para el 100% de los bits cambiados porque ambos métodos comparados transmiten, a continuación, los datos completos (comprimidos). Obsérvese también que la curva del registro de cambios es horizontal porque, por definición de un registro de cambios, la cantidad de datos enviados es proporcional a la cantidad de cambios. La curva inferior (rombos) muestra el rendimiento del método propuesto (etiquetado como "ECA"). Muestra claramente la ventaja de rendimiento. (El punto en la parte inferior derecha se debe a que la simulación supone que transmitimos solamente un byte para señalar "todos los bits han cambiado". En la práctica, "todos los bits se han invertido" no es realista para la mayoría de las aplicaciones. Por ejemplo, con una distribución de cambio uniforme, la cantidad asintótica ("máxima") de cambio es del 50% debido a los bits que se han invertido un número par de veces y, por lo tanto, "no han cambiado" en comparación con el estado inicial).
La Figura 11 representa para la misma simulación la tasa de bits de la red requerida como una función de la "latencia" asumiendo una base de datos que sufre una tasa de cambio constante del 1 por ciento de los bits volátiles por segundo. (una tasa de cambio constante puede no ser realista pero es útil como veremos ahora). En el mundo real, el operador del sistema siempre se enfrenta a una disyuntiva: tiene que decidir cuánto tiempo esperar antes de transmitir actualizaciones. Intuitivamente, si los datos se transmiten con mayor frecuencia, el coste de la red aumenta. Con una tasa de cambio constante, "a menudo" es un tiempo: es el tiempo hasta que se observa una cierta cantidad o cambio. Llamamos a este tiempo "latencia" ya que es el tiempo mínimo que el lado de recepción tiene que esperar para que los datos se actualicen (hay que añadir el tiempo de transmisión de la red, por supuesto). En la figura 11, los puntos más a la derecha corresponden a una latencia de un minuto, los más a la izquierda a un milisegundo. Del mismo modo, el rendimiento de ECA (curva inferior, rombos) es claramente superior en todo el rango de latencias.
En general, las rutinas ejecutadas para implementar las realizaciones de la invención, ya sea que se implementen como parte de un sistema operativo o una aplicación, componente, programa, objeto, módulo o secuencia de instrucciones específicos, o incluso un subconjunto de los mismos, pueden mencionarse en la presente memoria como "código de programa informático" o simplemente "código de programa". El código de programa generalmente comprende instrucciones legibles por ordenador que residen en varios momentos en varios dispositivos de memoria y almacenamiento en un ordenador y que, cuando uno o más procesadores en un ordenador leen y ejecutan, hacen que el ordenador realice las operaciones necesarias para ejecutar operaciones y /o elementos que incorporan los diversos aspectos de las realizaciones de la invención. Las instrucciones de programa legibles por ordenador para llevar a cabo operaciones de las realizaciones de la invención pueden ser, por ejemplo, lenguaje ensamblador o código fuente o código objeto escrito en cualquier combinación de uno o más lenguajes de programación.
El código de programa incorporado en cualquiera de las aplicaciones/módulos descritos en la presente memoria puede distribuirse individual o colectivamente como un producto de programa en una variedad de formas diferentes. En particular, el código del programa puede distribuirse utilizando el medio de almacenamiento legible por ordenador que tiene las instrucciones del programa legibles por ordenador para hacer que un procesador lleve a cabo aspectos de las realizaciones de la invención.
Los medios de almacenamiento legibles por ordenador, que son inherentemente no transitorios, pueden incluir medios tangibles volátiles y no volátiles, extraíbles y no extraíbles implementados en cualquier método o tecnología para el almacenamiento de información, tales como instrucciones legibles por ordenador, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento legibles por ordenador pueden incluir además RAM, ROM, memoria de solo lectura programable borrable (EPROM), memoria de solo lectura programable borrable eléctricamente (EEPROM), memoria flash u otra tecnología de memoria de estado robusta, memoria de solo lectura de disco compacto portátil (CD-ROM), u otro almacenamiento óptico, casetes magnéticos, cintas magnéticas, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que pueda utilizarse para almacenar la información deseada y que pueda ser leído por un ordenador. Un medio de almacenamiento legible por ordenador no debería interpretarse como señales transitorias per se (por ejemplo, ondas de radio u otras ondas electromagnéticas que se propagan, ondas electromagnéticas que se propagan a través de un medio de transmisión, tal como una guía de ondas, o señales eléctricas transmitidas a través de un cable). Las instrucciones de programas legibles por ordenador pueden descargarse a un ordenador, a otro tipo de aparato de procesamiento de datos programable o a otro dispositivo desde un medio de almacenamiento legible por ordenador u otro ordenador externo o un dispositivo de almacenamiento externo mediante una red.
Las instrucciones de programas legibles por ordenador almacenadas en un medio legible por ordenador pueden utilizarse para dirigir un ordenador, otros tipos de aparatos de procesamiento de datos programables u otros dispositivos para que funcionen de una manera particular, de tal manera que las instrucciones almacenadas en el medio legible por ordenador produzcan un artículo de fabricación, que incluye las instrucciones que implementan las funciones/actos especificados en los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques. Las instrucciones del programa informático pueden proporcionarse a uno o más procesadores de un ordenador de propósito general, un ordenador de propósito particular u otro aparato de procesamiento de datos programable para producir una máquina, de tal manera que las instrucciones, que se ejecutan mediante uno o más procesadores, provoquen un serie de cálculos a realizar para implementar las funciones y/o actos especificados en los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques.
En ciertas realizaciones alternativas, las funciones y/o actos especificados en los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques pueden reordenarse, procesarse en serie y/o procesarse simultáneamente sin desviarse del alcance de la invención. Además, cualquiera de los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques puede incluir más o menos bloques que los ilustrados según las realizaciones de la invención. La terminología utilizada en la presente memoria tiene el propósito de describir realizaciones particulares únicamente y no pretende ser limitativa de las realizaciones de la invención. Se comprenderá además que los términos "comprende" y/o "que comprende", cuando se utilizan en esta especificación, especifican la presencia de características, números enteros, etapas, operaciones, elementos y/o componentes establecidos, pero no excluyen la presencia o adición de una o más características, números enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos. Además, en la medida en que los términos "incluye", "que tiene", "tiene", "con", "compuesto por" o variantes de los mismos se utilizan en la descripción detallada o en las reivindicaciones, tales términos pretenden ser inclusivos de manera similar al término "que comprende".
Si bien una descripción de varias realizaciones ha ilustrado todas las invenciones y si bien estas realizaciones se han descrito con un detalle considerable, los solicitantes no tienen la intención de restringir o limitar de ninguna manera el alcance a tal detalle.

Claims (17)

REIVINDICACIONES
1. Un método para mantener la coherencia de los datos entre los conjuntos de datos almacenados en una base de datos principal de un nodo (300) informático principal y los conjuntos de datos correspondientes almacenados en una base de datos de replicación de al menos un nodo (500) informático de replicación,
en donde cada vez que se recibe una versión actualizada de un conjunto de datos almacenado, el nodo informático principal se configura para actualizar un conjunto de datos correspondiente almacenado en la base de datos principal y transmitir datos de replicación relacionados con la versión actualizada del conjunto de datos a al menos un nodo informático de replicación para la replicación, comprendiendo cada conjunto de datos una pluralidad de campos de datos dispuestos en un diseño predeterminado definido según una estructura de representación del conjunto de datos (DSR), que se almacena junto con cada conjunto de datos en las bases de datos principal y de replicación, comprendiendo el método:
el procesamiento en el nodo informático principal por medio de un módulo (320) de procesamiento principal de una versión actualizada de un conjunto de datos almacenado, comprendiendo la etapa de procesamiento:
la recepción por medio de un motor (321) de recepción de datos de la versión actualizada de un conjunto de datos almacenado en la base de datos principal;
el procesamiento de la versión actualizada del conjunto de datos por medio de un motor (322) de procesamiento para generar la estructura DSR actualizada;
el análisis de la estructura DSR actualizada por medio de un motor (323) de análisis para extraer los campos de datos de la versión actualizada del conjunto de datos;
la clasificación por medio de un motor (324) de clasificación de los campos de datos extraídos en campos de datos estables, que comprenden valores de datos que cambian a una primera tasa de frecuencia, y campos de datos volátiles, que comprenden valores de datos que cambian a una segunda tasa de frecuencia, que es superior a la primera tasa de frecuencia,
la generación por medio de un motor (325) de vector de bits, de un vector de bits que almacena los valores de datos extraídos de los campos de datos volátiles;
la preparación por medio de un motor (326) de preparación de datos de los datos a replicar en al menos un nodo informático de replicación, comprendiendo los datos de replicación el vector de bits generado; y
la transmisión por medio de un motor (327) de transmisión de datos de los datos de replicación a al menos un nodo informático de replicación; y
la replicación en el al menos un nodo informático de replicación por medio de un módulo (520) de replicación de los datos de replicación, comprendiendo la etapa de replicación:
la recepción por medio de un motor (521) de recepción de datos de replicación de los datos de replicación;
el procesamiento por medio de un motor (522) de procesamiento de replicación de los datos de replicación para extraer los valores de datos a replicar;
la selección por medio de un motor (523) de selección DSR de una estructura DSR de replicación correspondiente a los datos de replicación; y
la replicación por medio de un motor (524) de replicación, basado en la estructura DSR de replicación seleccionada, de valores de datos extraídos de los datos de replicación en el conjunto de datos de replicación correspondiente.
2. - El método de la reivindicación 1, en donde el vector de bits se genera concatenando los valores de datos de los campos de datos volátiles.
3. - El método de la reivindicación 1 o 2, en donde cada campo de datos volátiles almacena un valor de datos de un tamaño de datos predeterminado representado en formato binario.
4. - El método de la reivindicación 3, en donde el tamaño de los datos de cada campo de datos volátiles se identifica en la estructura DSR.
5. - El método de la reivindicación 3 o 4, en donde el vector de bits está configurado para almacenar en serie los bits que representan el valor de datos de cada campo de datos volátiles.
6. - El método de cualquiera de las reivindicaciones anteriores, en donde el vector de bits está configurado para almacenar los valores de datos de los campos de datos volátiles en el orden definido en la estructura DSR para el conjunto de datos correspondiente.
7. - El método de cualquiera de las reivindicaciones anteriores, en donde los datos de replicación se comprimen por medio de un motor de compresión del motor de transmisión de datos antes de que se transmitan a al menos un nodo informático de replicación, donde se descomprimen mediante un motor de descompresión del motor de recepción de datos.
8. - El método de la reivindicación 7, en donde el motor de compresión está configurado para seleccionar un método de compresión de una base de datos de compresión, el método de compresión aplicado a los datos de replicación se codifica y transmite a al menos un nodo de replicación, donde es utilizado por el motor de descompresión para seleccionar un método de descompresión correspondiente de una base de datos de descompresión para descomprimir los datos de replicación.
9. - El método según cualquiera de las reivindicaciones anteriores, en donde los datos de replicación consisten en el vector de bits, o el vector de bits y la estructura DSR.
10. - El método según cualquiera de las reivindicaciones anteriores, en donde el vector de bits generado se codifica como una diferencia de un vector de bits generado para una versión anterior del conjunto de datos correspondiente.
11. - El método según cualquiera de las reivindicaciones anteriores, en donde la etapa de generación de un vector de bits comprende la comparación de la estructura DSR actualizada con la estructura DSR del conjunto de datos almacenado en la base de datos principal para identificar las diferencias en el diseño de los campos de datos en el conjunto de datos actualizado, y en donde cuando se detecta una diferencia en el diseño del conjunto de datos, la estructura DSR actualizada completa y/o el conjunto de datos actualizado completo se incluyen en los datos de replicación.
12. - El método según la reivindicación 11, en donde la etapa de selección de la estructura DSR de replicación en al menos un nodo informático de replicación comprende la determinación de si los datos de replicación comprenden una estructura DSR actualizada, en donde cuando se transmite una estructura DSR actualizada, a continuación, se selecciona como la estructura DSR de replicación, de lo contrario, la estructura DSR del conjunto de datos de replicación almacenado se selecciona como la estructura DSR de replicación.
13. - El método de cualquiera de las reivindicaciones anteriores, en donde la etapa de transmisión comprende la división de los datos de replicación en paquetes de datos, que se transmiten de forma independiente a al menos un nodo informático de replicación donde son recopilados y procesados por un motor de reconstrucción de datos del motor de recepción de datos para reconstruir los datos de replicación.
14. - El método de la reivindicación 13, en donde el primer valor de datos de cada paquete de datos define un valor de desplazamiento asociado con el orden de secuencia de los paquetes de datos en los datos de replicación.
15. - El método de la reivindicación 14, en donde el valor de desplazamiento es indicativo del número de bits que separan el primer bit de los datos de replicación del primer bit de cada paquete de datos.
16. - El método de cualquiera de las reivindicaciones anteriores, en donde la estructura de DSR generada para cada conjunto de datos correspondiente comprende al menos un campo de datos de marcador de posición para acomodar cambios en la estructura DSR, el campo de datos de marcador de posición comprende un bit de validez, el valor del bit de validez es indicativo de si el campo de datos de marcador de posición contiene un valor de datos, cuyo valor de datos se clasifica como un valor de datos volátiles.
17. - un motor de aceleración de coherencia para mantener la coherencia de los datos entre conjuntos de datos almacenados en una base de datos principal de un nodo (300) informático principal y una base de datos de replicación de al menos un nodo (500) informático de replicación de una arquitectura informática distribuida, en donde cada vez que se recibe una versión actualizada de un conjunto de datos almacenado, el nodo informático principal se configura para actualizar un conjunto de datos correspondiente almacenado en la base de datos principal y transmitir datos de replicación relacionados con la versión actualizada del conjunto de datos a al menos un nodo informático de replicación para replicación, comprendiendo cada conjunto de datos una pluralidad de campos de datos dispuestos en un diseño definido según una estructura de representación de conjunto de datos (DSR) correspondiente, que se almacena junto con el conjunto de datos correspondiente en las bases de datos principales y de replicación, comprendiendo el motor de aceleración de coherencia:
un módulo (320) de procesamiento principal configurado para procesar en el nodo informático principal un conjunto de datos almacenado, comprendiendo el módulo de procesamiento principal:
un motor (321) de recepción de datos configurado para recibir una versión actualizada de un conjunto de datos almacenado correspondiente a un conjunto de datos almacenado en la base de datos principal;
un motor (322) de procesamiento configurado para procesar la versión actualizada del conjunto de datos para generar su estructura DSR actualizada asociada;
un motor (323) de análisis configurado para analizar la estructura DSR actualizada para extraer los campos de datos de la versión actualizada del conjunto de datos;
un motor (324) de clasificación configurado para clasificar los campos de datos extraídos en campos de datos estables, que comprenden valores de datos que cambian a una primera tasa de frecuencia, y campos de datos volátiles, que comprenden valores de datos que cambian a una segunda tasa de frecuencia, que es más rápida que la primera tasa de frecuencia,
un motor (325) de vector de bits configurado para generar un vector de bits que almacena los valores de datos extraídos de los campos de datos volátiles;
un motor (326) de preparación de datos configurado para preparar los datos a replicar, comprendiendo los datos de replicación el vector de bits generado; y
un motor (327) de transmisión de datos configurado para transmitir los datos de replicación a al menos un nodo informático de replicación; y
un módulo (520) de replicación configurado para replicar en al menos un nodo informático de replicación los datos de replicación, comprendiendo el módulo de replicación:
un motor (521) de recepción de datos de replicación configurado para recibir los datos de replicación;
un motor (522) de procesamiento de replicación configurado para procesar los datos de replicación para extraer los valores de datos a replicar;
un motor (523) de selección DSR configurado para seleccionar una estructura DSR de replicación correspondiente a los datos de replicación; y
un motor (524) de replicación configurado para replicar, basándose en la estructura DSR de replicación seleccionada, los valores de datos de replicación extraídos en el conjunto de datos de replicación correspondiente almacenado en una base de datos de replicación.
ES20189846T 2019-08-06 2020-08-06 Mantenimiento de la coherencia de datos entre nodos informáticos de una arquitectura informática distribuida Active ES2927620T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1909019A FR3099834B1 (fr) 2019-08-06 2019-08-06 Maintien de la cohérence des données entre des nœuds de calcul d’une architecture informatique distribuée

Publications (1)

Publication Number Publication Date
ES2927620T3 true ES2927620T3 (es) 2022-11-08

Family

ID=69024338

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20189846T Active ES2927620T3 (es) 2019-08-06 2020-08-06 Mantenimiento de la coherencia de datos entre nodos informáticos de una arquitectura informática distribuida

Country Status (4)

Country Link
US (2) US11386074B2 (es)
EP (2) EP3772692B1 (es)
ES (1) ES2927620T3 (es)
FR (1) FR3099834B1 (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11144570B2 (en) * 2018-01-26 2021-10-12 Vmware, Inc. Data ingestion by distributed-computing systems
US11252233B1 (en) * 2020-09-25 2022-02-15 Intuit Inc. Achieving strong consistency in an eventually consistent distributed system
US11500898B2 (en) * 2020-11-25 2022-11-15 Sap Se Intelligent master data replication
US11546422B2 (en) * 2021-01-08 2023-01-03 Capital One Services, Llc Dynamic management of locations of modules of a platform hosted by a distributed system
US11330053B1 (en) * 2021-02-18 2022-05-10 Oracle International Corporation Making eventual consistency cache updates deterministic
US11775555B2 (en) * 2021-12-21 2023-10-03 Amadeus S.A.S. Devices, system and method for synchronizing changes, deletions or additions to fields at databases
EP4202719A1 (en) * 2021-12-21 2023-06-28 Amadeus S.A.S. Devices, system and method for synchronizing changes, deletions or additions to fields at databases

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098078A (en) * 1995-12-29 2000-08-01 Lucent Technologies Inc. Maintaining consistency of database replicas
US5765171A (en) * 1995-12-29 1998-06-09 Lucent Technologies Inc. Maintaining consistency of database replicas
US7415473B2 (en) * 2004-09-30 2008-08-19 Sap Ag Multi-dimensional set object
US20080294701A1 (en) * 2007-05-21 2008-11-27 Microsoft Corporation Item-set knowledge for partial replica synchronization
WO2013001535A2 (en) * 2011-06-27 2013-01-03 Jethrodata Ltd. System, method and data structure for fast loading, storing and access to huge data sets in real time
US20160328432A1 (en) * 2015-05-06 2016-11-10 Squigglee LLC System and method for management of time series data sets

Also Published As

Publication number Publication date
US20220300482A1 (en) 2022-09-22
US20210042292A1 (en) 2021-02-11
FR3099834A1 (fr) 2021-02-12
US11748335B2 (en) 2023-09-05
FR3099834B1 (fr) 2021-09-10
US11386074B2 (en) 2022-07-12
EP4095710A1 (en) 2022-11-30
EP3772692B1 (en) 2022-07-20
EP3772692A1 (en) 2021-02-10
EP4095710B1 (en) 2023-12-27

Similar Documents

Publication Publication Date Title
ES2927620T3 (es) Mantenimiento de la coherencia de datos entre nodos informáticos de una arquitectura informática distribuida
CN110506272B (zh) 用于访问以访问单元结构化的生物信息数据的方法和装置
CN101707884B (zh) 播种复制
US7613787B2 (en) Efficient algorithm for finding candidate objects for remote differential compression
US10972125B2 (en) Storage access interface to an encoded storage system
CN102170455B (zh) 用于在本地装置和远程装置间更新对象的方法和系统
JP5826114B2 (ja) データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム
US10680645B2 (en) System and method for data storage, transfer, synchronization, and security using codeword probability estimation
CN105027071A (zh) 管理对存储数据单元的操作
US20230042018A1 (en) Multi-context entropy coding for compression of graphs
US11762557B2 (en) System and method for data compaction and encryption of anonymized datasets
JP7362481B2 (ja) ゲノムシーケンスデータをコード化する方法、コード化されたゲノムデータをデコード化する方法、ゲノムシーケンスデータをコード化するためのゲノムエンコーダ、ゲノムデータをデコードするためのゲノムデコーダ、及びコンピュータ読み取り可能な記録媒体
JP6949970B2 (ja) バイオインフォマティクスデータを送信する方法及びシステム
CN102611716B (zh) 一种传输媒体文件的方法、装置及系统
Doblander et al. Shared dictionary compression in publish/subscribe systems
CA3039690A1 (en) Method and apparatus for compact representation of bioinformatics data
CN106657384B (zh) 使用多维化技术大幅降低通信数据传输量的方法
US20170048303A1 (en) On the fly statistical delta differencing engine
US12007951B2 (en) Devices, system and method for synchronizing changes, deletions or additions to fields at databases
EP4202719A1 (en) Devices, system and method for synchronizing changes, deletions or additions to fields at databases
US11775555B2 (en) Devices, system and method for synchronizing changes, deletions or additions to fields at databases
CN113407577B (zh) 一种kafka数据的查询方法、装置及计算机可读存储介质
US20230359581A1 (en) Routing data between processing units indentified by a sequentially ordered list of a packet prefix
US20170337204A1 (en) Differencing engine for moving pictures
CN112995340B (zh) 一种基于区块链的去中心化文件系统再平衡方法