ES2988266T3 - Procesamiento de consultas de base de datos complejas - Google Patents
Procesamiento de consultas de base de datos complejas Download PDFInfo
- Publication number
- ES2988266T3 ES2988266T3 ES20703488T ES20703488T ES2988266T3 ES 2988266 T3 ES2988266 T3 ES 2988266T3 ES 20703488 T ES20703488 T ES 20703488T ES 20703488 T ES20703488 T ES 20703488T ES 2988266 T3 ES2988266 T3 ES 2988266T3
- Authority
- ES
- Spain
- Prior art keywords
- database
- query
- data
- returned
- cached data
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Se procesan múltiples consultas de base de datos que forman una solicitud de base de datos compleja. Una primera consulta y una segunda consulta se responden mediante una primera respuesta y una segunda respuesta basadas en una memoria caché que almacena datos almacenados en caché. Una tercera consulta que está relacionada con la segunda consulta se responde en función de una base de datos que almacena datos actuales correspondientes a los datos almacenados en caché. Un subconjunto seleccionado de los datos almacenados en caché devueltos con la segunda respuesta se valida mediante los datos actuales correspondientes almacenados en la base de datos. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Procesamiento de consultas de base de datos complejas
La memoria descriptiva se refiere en general a la tecnología de bases de datos, más específicamente, a un sistema y método para procesar solicitudes de base de datos complejas que incluyen una pluralidad de consultas de base de datos individuales.
Se conocen diversos sistemas para recibir consultas de base de datos de clientes y reenviar o distribuir las consultas a otro sistema de backend. Un ejemplo son los motores de procesamiento de carga que distribuyen consultas entrantes a bases de datos que están menos cargadas que otras bases de datos. Otro ejemplo son las plataformas de búsqueda, tal como se describe, p. ej., en el documento EP 2908255 A1, que responden a consultas, bien en base a una cache con resultados de búsqueda recogidos previamente, y/o de una fuente de datos primaria.
Un ejemplo de un sistema que emplea solicitudes de base de datos complejas que incluyen más de una consulta de base de datos se describe en el documento WO 2015/110133 A1. En este caso, una consulta de base de datos compleja incluye una solicitud de precios de un cliente, una respuesta de precios de vuelta al cliente, una solicitud de libro del cliente y una respuesta de libro de vuelta al cliente.
El documento US 2010/017436 A1 se refiere a técnicas para el procesamiento de consultas (es decir, extracción de información de una base de datos) que implican cadenas secuenciales de cálculos.
El documento EP 2885725 A1 describe una plataforma de caché de datos que contiene los resultados de consulta de base de datos calculados previamente calculados por una plataforma de cálculo en base a datos contenidos en la plataforma de cálculo y configurados para determinar las probabilidades de que los resultados de consulta de base de datos calculados previamente estén desactualizados.
El documento US 2015/347410 A1 se refiere a técnicas de almacenamiento en caché que almacenan en caché durante un tiempo limitado algunos de los resultados (intermedios) de una ejecución de consulta previa, con el fin de evitar un recálculo caro de los resultados de consulta.
El documento US 2009/234682 describe un gestor de caché que gestiona información de entrada en la caché de modo que la información en la caché sea correcta, actual y completa.
Existe la necesidad de disminuir los tiempos de respuesta de dichas solicitudes de base de datos complejas sin comprometer la validez de los resultados de base de datos devueltos.
A este respecto, según un aspecto, se da a conocer un método para procesar consultas de datos. El método es realizado por un sistema de base de datos que comprende una base de datos que almacena datos actuales que se actualizan continuamente y una caché que almacena datos en caché en correspondencia con al menos un subconjunto de los datos actuales almacenados en la base de datos. El método comprende, en el sistema de base de datos: en respuesta a recibir una primera consulta que comprende un primer conjunto de parámetros de búsqueda que especifican datos a recuperar, devolver un primer conjunto de datos en caché según los primeros parámetros de búsqueda de la caché; en respuesta a recibir una segunda consulta relacionada con la primera consulta, comprendiendo la segunda consulta un segundo conjunto de parámetros de búsqueda que especifican datos a recuperar e indican un subconjunto seleccionado del primer conjunto devuelto de datos en caché, devolver un segundo conjunto de datos en caché según el segundo conjunto de parámetros de búsqueda de la caché; en respuesta a recibir una tercera consulta relacionada con la segunda consulta, comprendiendo la tercera consulta un tercer conjunto de parámetros de búsqueda que especifican datos a recuperar que indican un subconjunto seleccionado del segundo conjunto devuelto de datos en caché, recuperar un tercer conjunto de datos actuales según el tercer conjunto de parámetros de búsqueda de la base de datos, validar el subconjunto seleccionado del segundo conjunto devuelto de datos en caché con los datos actuales correspondientes almacenados en la base de datos, y devolver el tercer conjunto recuperado de datos actuales según el tercer conjunto de parámetros de búsqueda y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché. Validar el subconjunto seleccionado del segundo conjunto devuelto de datos en caché con los datos actuales correspondientes almacenados en la base de datos comprende determinar si los datos actuales almacenados en la base de datos en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son idénticos al subconjunto seleccionado del segundo conjunto devuelto de datos en caché. En respuesta a determinar que los datos actuales almacenados en la base de datos en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son diferentes del subconjunto seleccionado del segundo conjunto devuelto de datos en caché, el método devuelve una diferencia determinada entre el segundo conjunto devuelto de datos en caché y los datos actuales almacenados en la base de datos en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché como el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché.
En algunas realizaciones, el sistema de base de datos comprende además un módulo de frontend para procesar al menos la segunda consulta y la tercera consulta, y el método comprende, además, en el módulo de frontend: en respuesta a recibir la segunda consulta, dirigir la segunda consulta a la caché para recuperar el segundo conjunto de datos en caché; en respuesta a recibir la tercera consulta, determinar que la tercera consulta está relacionada con la segunda solicitud anterior y dirigir la tercera consulta a la base de datos para recuperar el tercer conjunto de datos actuales y validar el subconjunto seleccionado del segundo conjunto devuelto de datos en caché.
En algunas realizaciones, el método comprende, además, en el módulo de frontend: recibir el segundo conjunto de datos en caché de la caché y enviar un mensaje de respuesta con el segundo conjunto de datos en caché a un cliente que realiza una consulta; recibir el tercer conjunto recuperado de datos actuales y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché de la base de datos y enviar un mensaje de respuesta con el tercer conjunto recuperado de datos actuales y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché al cliente que realiza la consulta.
En algunas realizaciones, el método comprende, además, en respuesta a determinar que los datos actuales almacenados en la base de datos en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son idénticos al subconjunto seleccionado del segundo conjunto devuelto de datos en caché, devolver un indicador de validez como el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché.
En algunas realizaciones, la caché y la base de datos almacenan datos sobre una infraestructura de red de comunicación que incluyen nodos de red de la red de comunicación, enlaces entre los nodos de la red de comunicación e información técnica sobre los nodos de la red de comunicación y los enlaces entre los nodos de la red de comunicación, y en donde la primera, segunda y tercera consultas son parte de una solicitud de enrutamiento de red. El primer conjunto de parámetros de búsqueda de la primera consulta especifica características de nodo de red de un nodo de red de destino potencial con el que comunicarse y el primer conjunto de datos en caché comprende información de identificación e información de características de un número de nodos de red que cumplen las características de red especificadas. El segundo conjunto de parámetros de búsqueda de la segunda consulta comprende una identificación de un nodo de red de destino seleccionado del número de nodos de red y el segundo conjunto de datos en caché comprende información de identificación e información técnica sobre un número de rutas de red directas desde el nodo de red de origen a la red de destino seleccionada a través de los enlaces entre los nodos de la red de comunicación. El tercer conjunto de parámetros de búsqueda comprende una identificación de una ruta de red directa seleccionada del número de rutas de red directas desde el nodo de red de origen a la red de destino seleccionada a través de los enlaces entre los nodos de la red de comunicación y el tercer conjunto de datos actuales comprende información de identificación e información técnica sobre un número de rutas de red inversas desde el nodo de red de destino al nodo de red de origen a través de los enlaces entre los nodos de la red de comunicación.
Según un aspecto adicional, se da a conocer un sistema de base de datos para procesar consultas de datos. El sistema de base de datos comprende una base de datos que almacena datos actuales que se actualizan continuamente, una caché que almacena datos en caché en correspondencia con al menos un subconjunto de los datos actuales almacenados en la base de datos, al menos un procesador; y al menos una memoria que contiene instrucciones que, cuando son ejecutadas por el al menos un procesador, hacen que el sistema de base de datos realice operaciones. Las operaciones comprenden: en respuesta a recibir una primera consulta que comprende un primer conjunto de parámetros de búsqueda que especifican datos a recuperar, devolver un primer conjunto de datos en caché según los primeros parámetros de búsqueda de la caché; en respuesta a recibir una segunda consulta relacionada con la primera consulta, comprendiendo la segunda consulta un segundo conjunto de parámetros de búsqueda que especifican datos a recuperar e indican un subconjunto seleccionado del primer conjunto devuelto de datos en caché, devolver un segundo conjunto de datos en caché según el segundo conjunto de parámetros de búsqueda de la caché, en respuesta a recibir una tercera consulta relacionada con la segunda consulta, comprendiendo la tercera consulta un tercer conjunto de parámetros de búsqueda que especifican datos a recuperar que indican un subconjunto seleccionado del segundo conjunto devuelto de datos en caché, recuperar un tercer conjunto de datos actuales según el tercer conjunto de parámetros de búsqueda de la base de datos, validar el subconjunto seleccionado del segundo conjunto devuelto de datos en caché con los datos actuales correspondientes almacenados en la base de datos, y devolver el tercer conjunto recuperado de datos actuales según el tercer conjunto de parámetros de búsqueda y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché. Validar el subconjunto seleccionado del segundo conjunto devuelto de datos en caché con los datos actuales correspondientes almacenados en la base de datos comprende determinar si los datos actuales almacenados en la base de datos en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son idénticos al subconjunto seleccionado del segundo conjunto devuelto de datos en caché. En respuesta a determinar que los datos actuales almacenados en la base de datos en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son diferentes del subconjunto seleccionado del segundo conjunto devuelto de datos en caché, la operación comprende: devolver una diferencia determinada entre el segundo conjunto devuelto de datos en caché y los datos actuales almacenados en la base de datos en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché como el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché.
Además, en algunas realizaciones, las operaciones comprenden uno cualquiera de los aspectos del método opcionales adicionales mencionados anteriormente.
Según otro aspecto adicional, se da a conocer un producto de programa informático que comprende instrucciones de código de programa almacenadas en un medio legible por ordenador para ejecutar el método según uno cualquiera de los aspectos mencionados anteriormente cuando dicho programa se ejecuta en un ordenador.
Se describen realizaciones con referencia a las siguientes figuras, en donde:
La Fig. 1 representa un sistema de base de datos según los aspectos presentados en la presente memoria.
La Fig. 2 muestra una secuencia de mensajes de una solicitud de base de datos compleja.
La Fig. 3 visualiza una estructura funcional de un módulo de frontend como se describe en la presente memoria.
La Fig. 4 representa una versión refinada de la secuencia de mensajes de la Fig. 2.
La Fig. 5 ilustra un caso de uso de enrutamiento de red de las metodologías descritas en la presente memoria.
La Fig. 6 muestra un conjunto interno de una máquina informática que implementa la funcionalidad descrita en la presente memoria.
Los presentes mecanismos para procesar consultas de datos se refieren a un sistema de comunicación 1 con un sistema de base de datos 2. En la Fig. 1 se muestra un ejemplo esquemático. El sistema de base de datos 2 incluye al menos una base de datos 5 que almacena datos actuales que se actualizan continuamente y una caché 4 que almacena datos almacenados en caché correspondientes a al menos un subconjunto de los datos actuales almacenados en la base de datos 5. El término "base de datos" pretende englobar cualquier tipo de sistema de almacenamiento de información estructurado, tal como bases de datos independientes estándar, tal como SQL Server® (SQL = lenguaje de consulta estructurado) o bases de datos Oracle®, así como sistemas de almacenamiento más complejos, distribuidos y/o patentados (p. ej., Cloudera® o MapR® o Hadoop de HortonWorks®, Spark, Hive, sistema de archivos distribuidos Hadoop® (HDFS) Apache, etc.), bases de datos relacionales que incluyen sistemas de gestión de bases de datos o bases de datos orientadas a objetos y similares. La base de datos 5 utiliza recursos de procesamiento y memoria para procesar y responder a consultas de base de datos y almacenar datos. La base de datos 5 puede ejecutarse mediante una o más máquinas informáticas.
La caché 4 puede implementarse como una base de datos adicional (además de la base de datos 5) en otra y/o la misma máquina o máquinas informáticas que la base de datos 5. En algunas realizaciones, la caché 4 también puede ser una caché lógica, es decir, los datos de la caché 4 se contienen en áreas respectivamente asignadas de una memoria de la máquina o máquinas de hardware que alojan la base de datos 5.
La base de datos 5 almacena datos que están generalmente actualizados y, por lo tanto, forma datos originales o válidos. Con tal fin, la base de datos 5 puede estar equipada con una interfaz para actualizar los datos almacenados en la base de datos 5. Esta interfaz puede ser la misma que la interfaz para recibir y responder a consultas de base de datos. Los datos almacenados por la base de datos 5 se mantienen actualizados continuamente, lo que significa que cualquier cambio de los datos se efectúa realmente en la base de datos 5, p. ej., en base a acontecimientos o periódicamente. Por lo tanto, la base de datos 5 es una fuente de datos original en sí, tal como una base de datos de inventario o una base de datos que contiene cualquier tipo de resultados originales y generalmente válidos, o accede a una o más fuentes de datos originales para almacenar resultados originales en forma idéntica (espejo) o procesada. Ejemplos de este último tipo son un motor de búsqueda que accede a sitios web de Internet y una plataforma de cálculo que calcula recomendaciones de viaje con precios en base a tarifas almacenadas en una base de datos de tarifas. Si la base de datos 5 genera/calcula/recoge los resultados originales accediendo a otras/más fuentes de datos originales con el fin de preparar resultados originales, la base de datos 5 proporciona resultados que reflejan de manera generalmente precisa el contenido actual de los datos de respuesta originales.
Por otro lado, la caché 4 almacena datos en caché correspondientes a al menos un subconjunto de los datos almacenados en la base de datos 5. En otras palabras, la caché 4 contiene un conjunto de resultados que se han procesado a través de la base de datos 5 o es, p. ej., un servidor que contiene un repositorio del contenido de sitios web rastreados, o la segunda plataforma 4 es, p. ej., una plataforma de búsqueda que contiene recomendaciones de viaje con precios calculados previamente, tal como se describe, p. ej., en el documento WO 2014/026753 A1.
En general, la base de datos 5 que proporciona datos de respuesta originales y la caché 4 que contiene los resultados en caché difieren entre sí en términos técnicos de la siguiente manera: la caché 4 proporciona un acceso más barato (en términos de costes de cálculo) más rápido (en términos de tiempos de respuesta) a los resultados en comparación con la base de datos 5. Esta relación entre la base de datos 5 y la caché 4 también puede expresarse de manera inversa, es decir, la base de datos 5 generalmente responde más lentamente y las respuestas de la base de datos 5 implican costes de cálculo más altos que las respuestas de la caché 4, p. ej., debido a que la base de datos 5 todavía tiene que calcular resultados en el momento de la consulta (p. ej., recuperar el contenido solicitado del sitio web de Internet original, o calcular las recomendaciones de viaje con precios solicitadas en base a tarifas contenidas en una base de datos de tarifas). Debido a que los recursos de cálculo de la base de datos 5 son limitados, el número de accesos a la base de datos 5 debe mantenerse dentro de un cierto límite. Por ejemplo, el consumo de CPU (CPU = unidad central de procesamiento) o la carga de memoria de la base de datos 5 no deberían exceder un límite determinado.
Por otro lado, sin embargo, los datos en caché almacenados en la caché 4 no están necesariamente perfectamente sincronizados con los resultados originales proporcionados por la base de datos 5. En general, los datos en caché de la caché 4 representan versiones más antiguas de resultados originales que se proporcionan por la base de datos 5 y la versión respectiva del resultado original proporcionado por la base de datos 5 podría haber cambiado desde la última actualización de los datos en caché correspondientes contenidos en la caché 4. Además, la caché 4 no almacena necesariamente resultados preparados correspondientes a todos los resultados originales existentes, es decir, podrían faltar datos en la caché 4.
Por lo tanto, surge el problema técnico de minimizar los tiempos de respuesta para las solicitudes de base de datos sin comprometer la precisión y validez de los datos devueltos.
El entorno de base de datos 1 está acoplado además a al menos uno, aunque, generalmente, una pluralidad, de clientes 6. Los clientes 6, tales como aplicaciones en terminales de usuario, recuperan resultados del entorno de base de datos 1 dirigiendo solicitudes de datos al entorno de base de datos 1 a través de una interfaz 7. Las características técnicas de la interfaz 7 dependen de la implementación particular del entorno de base de datos 1. Por ejemplo, la interfaz 7 engloba comunicación inalámbrica que incluye 2G/3G/4G (que incluye intercambio de datos móvil orientado a paquetes, así como SMS, servicio de mensajes cortos) y/o comunicación Wi-Fi en el caso de que el cliente 6 esté situado en un dispositivo de comunicaciones móvil. Alternativa o adicionalmente, la interfaz 7 usa comunicación por cable usando protocolos de red estándar empleados en redes de área local y/o redes de área amplia que incluyen Internet, tal como Ethernet, TCP/IP (protocolo de control de transmisión/protocolo de Internet), SMTP (protocolo de transferencia de correo simple) con POP3 (protocolo de oficina postal) o IMAP (protocolo de acceso de mensaje de internet), HTTP (protocolo de transferencia de hipertexto), protocolos relacionados con el servicio web, tal como SOAP (protocolo de acceso de objetos simples), etc.
En la Fig. 2 se muestra una secuencia de mensajes individuales que constituyen una solicitud de base de datos compleja. El término "solicitud de base de datos" se usa en la presente memoria como un término general para una recuperación de datos lógicos del sistema de base de datos 2. Los presentes mecanismos están específicamente relacionados con la solicitud de base de datos compleja según la cual una recuperación de datos del sistema de base de datos 2 incluye dos, tres o más consultas de base de datos individuales posteriores enviadas desde un cliente que solicita datos 6 y recibidas en el sistema de base de datos 2. Estas consultas de base de datos múltiples que constituyen una solicitud de base de datos compleja pueden ser cualquier tipo de consultas transaccionales, solicitudes de cálculos por lotes, consultas SQL y otras formas. Generalmente, en respuesta a recibir una consulta de base de datos, el sistema de base de datos 2 procesa la consulta de base de datos, busca en la caché 4 y/o la base de datos 5 y devuelve una respuesta de base de datos al cliente solicitante 6.
Más específicamente, con referencia a la Fig. 2, el sistema de base de datos 2 recibe una primera consulta 20 del cliente 6. Por ejemplo, el sistema de base de datos 2 almacena datos de viaje para su recuperación y reserva, tal como recomendaciones de viaje con precios calculados previamente, tal como se describe, p. ej., en el documento WO 2015/124275, con datos de ida y vuelta en la caché 4 y datos de ida y vuelta actuales en la base de datos 5. En este ejemplo, la primera consulta 20 solicita una lista de recomendaciones de viaje con precios desde una ubicación de origen a una ubicación de destino dentro de una determinada ventana de tiempo (p. ej., un viaje de Niza a Múnich con ida el día X y vuelta el día X+6 o X+7). Por consiguiente, la primera consulta 20 incluye un primer conjunto de parámetros de búsqueda que especifican las características de las recomendaciones de viaje con precios buscadas. En respuesta a recibir la primera consulta 20, el sistema de base de datos 2 procesa la primera consulta 20 y reconoce que esta es la primera consulta de una solicitud de base de datos compleja que debe responderse en base a la caché 4. Por lo tanto, el sistema de base de datos 2 recupera los datos especificados por el primer conjunto de parámetros de búsqueda incluidos en la primera consulta 20 de la caché y devuelve, por medio de una primera respuesta de datos en caché 24, los datos recuperados como un primer conjunto de datos en caché que están de acuerdo con los primeros parámetros de búsqueda de la caché 4. En el ejemplo mostrado, el primer conjunto devuelto de datos en caché es una lista, p. ej., de 10 recomendaciones de viaje con precios que cumplen los parámetros de búsqueda en la primera consulta 20.
Debido a que los datos en caché devueltos por la primera respuesta 24 se originan en la caché 4, existe la probabilidad de que los datos en caché estén desactualizados y, por lo tanto, sean incoherentes con los datos actuales almacenados en la base de datos 5. Por otro lado, utilizando la caché 4, la primera respuesta 24 se devuelve más rápidamente que una respuesta hipotética basada en la base de datos 5 y, por lo tanto, se reduce el tiempo de respuesta para la primera consulta 20.
El cliente 6, después de haber recibido la primera respuesta de datos en caché 24, puede presentar los datos de respuesta recibidos al usuario y el usuario puede seleccionar uno o más del primer conjunto de datos en caché. En el ejemplo mostrado, el usuario puede seleccionar una de las recomendaciones de viaje con precios. La selección también puede realizarse de manera automática sin ninguna interacción del usuario. La selección en el cliente 6 activa así la siguiente consulta de base de datos, concretamente, la segunda consulta 26.
La segunda consulta 26 comprende un segundo conjunto de parámetros de búsqueda que especifican datos a recuperar e indican un subconjunto seleccionado del primer conjunto devuelto de datos en caché. En el ejemplo mostrado, la segunda consulta 26 contiene parámetros que identifican la una o más recomendaciones de viaje con precios seleccionadas en el cliente 6 y, p. ej., constituye una consulta de disponibilidad de la ida de la recomendación de viaje con precios seleccionada. Por lo tanto, la segunda consulta 26 está relacionada con la primera consulta 20 ya que, en el ejemplo mostrado, la segunda consulta 26 se refiere a al menos un subconjunto de los datos recuperados por medio de la primera consulta 20.
En respuesta a recibir la segunda consulta 26, el sistema de base de datos 2 procesa de manera similar la segunda consulta 26, y reconoce que esta es la segunda consulta de la solicitud de base de datos compleja que debe responderse de nuevo sobre la base de la caché 4. Por lo tanto, el sistema de base de datos 2 recupera los datos especificados por el segundo conjunto de parámetros de búsqueda incluidos en la segunda consulta 26 de la caché 4 y devuelve, por medio de una segunda respuesta de datos en caché 30, los datos recuperados como un segundo conjunto de datos en caché que están de acuerdo con los segundos parámetros de búsqueda de la caché 4. En el ejemplo mostrado, el segundo conjunto devuelto de datos en caché es, p. ej., una indicación de disponibilidad sobre la ida de la recomendación de viaje con precios seleccionada, acompañada potencialmente de información adicional, tal como opciones de clase de reserva y precios asociados.
De nuevo, debido a que los datos en caché devueltos por la segunda respuesta 30 se originan en la caché 4, existe la probabilidad de que los datos en caché estén desactualizados y, por lo tanto, sean incoherentes con los datos actuales almacenados en la base de datos 5. Por otro lado, utilizando la caché 4, la segunda respuesta 30 se devuelve más rápidamente que una respuesta hipotética basada en la base de datos 5 y, por lo tanto, también se reduce el tiempo de respuesta para la segunda consulta 20.
De manera similar a la recepción de la primera respuesta 24 de datos en caché, el cliente 6 procesa la segunda respuesta de datos en caché recibida 30 y, p. ej., muestra los resultados al usuario. De nuevo, el usuario puede realizar una selección, tal como una confirmación o, si se dan varias alternativas, elegir una de las alternativas. Por ejemplo, si se indica más de una clase de reserva por la segunda respuesta de datos en caché 30, el usuario puede seleccionar una. De nuevo, la selección también puede realizarse de manera automatizada. La selección en el cliente 6 activa entonces la siguiente consulta de base de datos, es decir, la tercera consulta 32.
La tercera consulta 32 comprende un tercer conjunto de parámetros de búsqueda que especifican datos a recuperar que indican un subconjunto seleccionado del segundo conjunto devuelto de datos en caché. En el ejemplo mostrado, la tercera consulta 32 contiene parámetros que identifican la opción de clase de reserva confirmada o seleccionada en el cliente 6 y, p. ej., constituye una consulta de disponibilidad para la vuelta de la recomendación de viaje con precios seleccionada. Por lo tanto, la tercera consulta 32 está relacionada con la segunda consulta 26 (y, por lo tanto, también indirectamente con la primera consulta 20) ya que, en el ejemplo mostrado, la tercera consulta 32 se refiere a al menos un subconjunto de los datos recuperados por medio de la segunda consulta 26.
En respuesta a recibir la tercera consulta 32, el sistema de base de datos 2 procesa igualmente la tercera consulta 32 y reconoce que esta es la tercera consulta de la solicitud de base de datos compleja que debe responderse en base a la base de datos 5, es decir, en base a los datos actuales almacenados en la base de datos 5. Por lo tanto, el sistema de base de datos 2 recupera 34 los datos especificados por el tercer conjunto de parámetros de búsqueda incluidos en la tercera consulta 32 de la base de datos 5 y devuelve, por medio de una tercera respuesta 38, los datos recuperados como un tercer conjunto de datos, es decir, datos actuales de la base de datos 5, que están de acuerdo con los terceros parámetros de búsqueda. En el ejemplo mostrado, el tercer conjunto devuelto de datos actuales es, p. ej., una indicación de disponibilidad sobre la vuelta de la recomendación de viaje con precios seleccionada, acompañada potencialmente de información adicional, tal como opciones de clase de reserva y precios asociados.
Debido a que el tercer conjunto de datos devueltos por la tercera respuesta 38 se origina en la base de datos, se asegura que los datos son válidos. Esto es particularmente beneficioso si la tercera respuesta es la respuesta final de la solicitud de base de datos compleja. Por otro lado, utilizando en este caso la base de datos 5, la tercera respuesta 38 lleva más tiempo que una respuesta hipotética basada en la caché 5.
Como medida sinérgica, la recuperación del tercer conjunto de datos de la base de datos 5 está acompañada por una validación 36 del subconjunto seleccionado del segundo conjunto devuelto de datos en caché que se identifica por el tercer conjunto de parámetros de búsqueda. Con tal fin, el subconjunto seleccionado del segundo conjunto de datos en caché se compara con los datos actuales correspondientes almacenados en la base de datos 5. Si ambos conjuntos de datos son idénticos, el subconjunto seleccionado del segundo conjunto de datos en caché que se devolvió al cliente con la segunda respuesta 30 fue válido y el sistema de base de datos 2 no necesita realizar ninguna acción adicional (sin embargo, una confirmación del resultado positivo de la validación podría incluirse en la tercera respuesta 38).
Si, por otro lado, la comparación produce una diferencia entre el subconjunto seleccionado del segundo conjunto de datos en caché con los datos actuales correspondientes almacenados en la base de datos, entonces el subconjunto seleccionado del segundo conjunto de datos en caché que se devolvió al cliente con la segunda respuesta 30 fue inválido (o al menos, es inválido en el momento actual, ya que una actualización de datos puede haber ocurrido solo recientemente en el período después de que se devolvió la segunda respuesta 30) y la versión actualizada (es decir, actual) del subconjunto seleccionado del segundo conjunto de datos en caché almacenada en la base de datos 5 se recupera de la base de datos 2 y se devuelve al cliente 6 con la tercera respuesta 38 como un subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché. Devolver el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché puede efectuarse de diferentes formas, tal como devolver la versión actualizada completa (es decir, actual) del subconjunto seleccionado del segundo conjunto de datos en caché almacenada en la base de datos 5 o solo devolver la diferencia entre la versión actualizada completa del subconjunto seleccionado del segundo conjunto de datos en caché almacenada en la base de datos 5 y el subconjunto devuelto previamente del segundo conjunto de datos en caché.
De esta manera, la búsqueda de la base de datos 5 en respuesta a la recepción de la tercera consulta 32, que es comparativamente más lenta que una búsqueda de la caché 4, se utiliza no solo para garantizar la validez del tercer conjunto de datos de vuelta, sino también la validez de la parte del segundo conjunto de datos devueltos previamente basándose en la caché 4 que se seleccionó en el cliente 6 después de la transmisión de la segunda respuesta 30. En comparación con una manera alternativa que también asegura la validez de ambos conjuntos de datos de vuelta, es decir, recuperando ya los segundos datos solicitados por la segunda consulta 26 de la base de datos 5, se reduce el tiempo de respuesta total de la solicitud de base de datos compleja que comprende las tres respuestas 24, 30, 38. Además, validar 36 el subconjunto seleccionado del segundo conjunto devuelto de datos en caché que se identifica por el tercer conjunto de parámetros de búsqueda tiene una ventaja técnica adicional, ya que esta validación 36 se implementa mediante una consulta de base de datos más específica a la base de datos 5 en comparación con una consulta de base de datos hipotética para recuperar los datos de respuesta generales a la segunda consulta 26 de la base de datos 5. Esta consulta de validación más específica a la base de datos 5 ahorra así recursos de cálculo de la base de datos 5 también a este respecto.
Con referencia de nuevo a la Fig. 1, en algunas realizaciones, el sistema de base de datos 2 comprende además un módulo de frontend para procesar al menos la segunda consulta y la tercera consulta. En estas realizaciones, las consultas de base de datos emitidas por un cliente 6 son recibidas por una entidad adicional del sistema de base de datos 2, el módulo de frontend 3 (Fig. 1). En general, el módulo de frontend 3 procesa consultas de base de datos entrantes para decidir si los datos de respuesta se recuperan de la base de datos 5 y/o de la caché 4. Con tal fin, el módulo de frontend 3 funciona como una unidad intermedia que controla el flujo de datos dentro del sistema de base de datos 2 y los datos de respuesta que se devolverán al cliente solicitante 6.
Una estructura funcional interna del módulo de frontend 3 según algunas realizaciones se muestra en la Fig. 3. Las consultas de base de datos que llegan desde un cliente 6 a través de la interfaz de comunicación 7 se reciben en el módulo de entrada de consultas 10. El módulo de entrada de consultas 10 puede implementar protocolos de comunicación estandarizados a través de las capas del modelo de referencia OSI, como ya se ha enumerado a modo de ejemplo anteriormente. Entre otras cosas, el módulo de entrada de consultas 10 puede emplear mecanismos de procesamiento iniciales tales como reconocimientos y correcciones de errores, ensamblaje de paquetes, así como determinación de si se ha recibido una consulta de base de datos válida. Los mensajes no válidos pueden ser descartados ya por el módulo de entrada de consultas 10 por motivos de seguridad y rendimiento.
Las consultas de base de datos válidas se retransmiten desde el módulo de entrada de consultas 10 al módulo de procesamiento de consultas 11. El módulo de procesamiento de consultas 11 procesa las consultas recibidas a un nivel sustancial, es decir, examina las consultas recibidas para determinar si debe responderse a una consulta basándose en la caché 4 o basándose en la base de datos 5. Con tal fin, en algunas realizaciones, el módulo de procesamiento de consultas 11 comprueba si una consulta recibida es la primera, segunda, etc. consulta de una solicitud de base de datos compleja o si una consulta recibida es la tercera consulta o la consulta final de una solicitud de base de datos compleja.
Como regla general, en respuesta a la determinación de que una consulta recibida es una consulta final de una solicitud de base de datos compleja, esta consulta recibida se responde sobre la base de la base de datos 5 y las consultas recibidas previamente de la misma solicitud de base de datos compleja (más específicamente: el resultado en caché devuelto en respuesta a consultas recibidas previamente de la solicitud de base de datos compleja) pueden validarse utilizando la base de datos 5. Las consultas no finales de solicitudes de base de datos complejas se responden basándose en la cache 4. Por lo tanto, el módulo de procesamiento de consultas 11 dirige consultas no finales a la caché 4 y consultas finales a la base de datos 5.
El reconocimiento del módulo de procesamiento de consultas 11 sobre si una consulta de base de datos recibida es o no un final de una solicitud de base de datos compleja puede tomarse de diversas maneras que dependen de la implementación del protocolo de las solicitudes de base de datos complejas. Por ejemplo, las consultas de base de datos que pertenecen a una determinada consulta de base de datos compleja pueden llevar un identificador único (o pseudo-único) de la solicitud de base de datos compleja, así como un numero de consulta. En otros ejemplos, las consultas de base de datos pueden incluir un campo de tipo de consulta que indica el tipo de la consulta (p. ej., primera, segunda o tercera consulta) y el módulo de procesamiento de consultas 11 contiene datos de contexto para cada consulta recibida y procesada. En estos ejemplos, el módulo de procesamiento de consultas 11 es capaz de determinar la relación de una consulta posterior con una consulta recibida previamente y, por lo tanto, identificar la solicitud de base de datos compleja de la consulta posterior recibida, basándose en los datos de contexto almacenados y la información incluida en la consulta posterior (p. ej., el segundo conjunto de parámetros de búsqueda que indican un subconjunto seleccionado del primer conjunto devuelto de datos en caché, tal como se explicó anteriormente).
En algunas realizaciones, la interfaz 7 entre el módulo de frontend 3 y los clientes 6 puede emplear una plataforma de base de datos diferente (p. ej., lenguaje de consulta, un cierto estándar de base de datos) a la empleada internamente en el sistema de base de datos 2 por la caché 4 y/o la base de datos 5. Por ejemplo, estas últimas podrían basarse en una implementación propietaria, mientras que la interfaz externa 7 podría basarse en una implementación estandarizada. Además, incluso la caché 4 y la base de datos 5 pueden emplear diferentes tecnologías de consulta de base de datos. En tales realizaciones, dirigir consultas a la caché 4 o a la base de datos 5 mediante el módulo de procesamiento de consultas 11 también puede comprender transformar o convertir las consultas recibidas en otras formas de consultas de base de datos (que pueden denominarse consultas internas de sistema de base de datos) según la implementación de base de datos de la caché 4 y la base de datos 5. Utilizar el módulo de frontend 3 es beneficioso en tales configuraciones, ya que esto proporciona un protocolo de base de datos uniforme y, por lo tanto, simplificado, con respecto a los clientes 6 (en comparación con que los clientes 6 accedan a la base de datos 5 y la caché 4 directamente).
El módulo de procesamiento de consultas 11 también realiza la validación de resultados en caché devueltos previamente con datos actuales almacenados en la base de datos 5. Por lo tanto, en respuesta a determinar que una consulta recibida es la consulta final de una solicitud compleja pendiente, el módulo de procesamiento de consultas 11 también puede generar una consulta de validación para validar datos en caché devueltos previamente y dirige la consulta de validación a la base de datos 5. Los datos en caché devueltos previamente a validar se identifican por la consulta recibida, posiblemente en combinación con los datos de contexto almacenados. Por ejemplo, la consulta recibida puede incluir uno o más identificadores (p. ej., claves) que identifican el subconjunto seleccionado de datos en caché devueltos previamente, almacenándose estos últimos como parte de los datos de contexto.
Haciendo referencia de nuevo a la Fig. 3, las respuestas de la caché 4 y de la base de datos 5 son recibidas por un componente adicional del módulo de frontend, el módulo de procesamiento de respuestas 12. En general, el módulo de procesamiento de respuestas 12 realiza acciones inversas del módulo de procesamiento de consultas 11, tal como la conversión de respuestas de caché y base de datos a los formatos y/o flujos de mensajes empleados en la interfaz de comunicación 7 y la asociación de las respuestas con la solicitud de base de datos compleja de orden superior, p. ej., incluyendo un identificador correspondiente en la respuesta al cliente 6, tal como se mencionó anteriormente. La función de asociación puede usar también datos de contexto almacenados por el módulo de procesamiento de consultas. Además, el módulo de procesamiento de respuestas 12 también puede actualizar o aumentar los datos de contexto almacenados por el módulo de procesamiento de consultas 11, p. ej., añadiendo información sobre los datos de respuesta que van a devolverse al cliente con la respuesta actual. Con tal fin, en algunas realizaciones, el módulo de procesamiento de respuestas 12 tiene una conexión funcional al módulo de procesamiento de consultas 11. Esta conexión puede realizarse, por ejemplo, mediante un almacenamiento interno o externo con respecto al módulo de frontend 3, en donde ambos módulos 11, 12 acceden a los datos de contexto que especifican el estado actual de solicitudes de base de datos complejas pendientes. Otras entidades fuera del módulo de frontend 3 pueden acceder también a este almacenamiento de datos de contexto.
Las respuestas procesadas por el módulo 12 de procesamiento de respuestas se retransmiten entonces al módulo de salida de respuestas 13, que es responsable de enviar las respuestas al cliente solicitante 6. En general, el módulo de salida de respuestas 13 realiza acciones inversas del módulo de entrada de consultas 10, es decir, por ejemplo, recibir datos de respuesta del módulo de salida 13 e implementar protocolos de comunicación de capa OSI para enviar las respuestas de vuelta al cliente solicitante 6.
Debe observarse que, en algunas realizaciones, no todas las consultas de clientes 6 dirigidas al sistema de base de datos 2 necesitan ser procesadas por el módulo de frontend 3. Es posible la presencia de otras interfaces entre los clientes 6 y la caché 4 y/o la base de datos 5 que permiten a los clientes 6 acceder a la caché 4 y/o la base de datos 5 evitando el módulo de frontend 3, p. ej., para consultas de base de datos independientes fuera de las solicitudes de base de datos complejas. En algunas realizaciones, tales consultas de base de datos independientes que no forman parte de una solicitud de base de datos compleja también pueden procesarse por el módulo de frontend 3. En estas realizaciones, el módulo de frontend 3 es capaz de reconocer que una consulta recibida no se refiere a una solicitud de base de datos compleja y está equipado con lógica dependiendo de su uso para dirigir dicha consulta independiente a la caché 4 o a la base de datos 5 (por ejemplo, de una manera tal como se describe en el documento EP 2908255 A1).
La Fig. 4 muestra una versión refinada de la secuencia de mensajes de la Fig. 2, haciendo referencia adicionalmente a las funciones de retransmisión y procesamiento del módulo de frontend 3. Las explicaciones anteriores realizadas con referencia a la Fig. 2 también son aplicables a la Fig. 4. Sin embargo, en este nivel más específico de la Fig. 4, la secuencia comprende, además, recibir la primera consulta 20 en el módulo de frontend 3 y que el módulo de frontend 3 recupere 22 los primeros datos en caché de la caché 4. El módulo de frontend 3 también envía de vuelta la primera respuesta 24 al cliente solicitante 6, p. ej., de la manera explicada anteriormente con referencia al ejemplo de la Fig. 3.
Además, de manera similar, en respuesta a recibir la segunda consulta 26, el módulo de frontend 3 dirige la segunda consulta 26 a la caché 4 para recuperar 28 el segundo conjunto de datos en caché. De manera similar, el módulo de frontend 3 envía la segunda respuesta 30 al cliente 6. Además, en respuesta a recibir la tercera consulta 32, el módulo de frontend 3 determina que la tercera consulta 32 está relacionada con la segunda consulta previa 26 y, p. ej., que la tercera consulta es la consulta final de la solicitud de base de datos compleja que comprende al menos la segunda consulta 26 y la tercera consulta 32, y dirige la tercera consulta 32 a la base de datos 5 para recuperar 34 el tercer conjunto de datos actuales y validar 36 el subconjunto seleccionado del segundo conjunto devuelto de datos en caché. El módulo de frontend 3 envía entonces la tercera respuesta 38 con el tercer conjunto de datos actuales y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché de vuelta al cliente 6.
Las metodologías descritas anteriormente pueden emplearse para diversos usos. Una aplicación es el dominio técnico del enrutamiento de red, en donde se toma una decisión de enrutamiento mediante la solicitud de datos de enrutamiento desde un servidor de enrutamiento. En una aplicación ilustrativa de este tipo, el servidor de enrutamiento incluye la caché 4 y la base de datos 5 que almacenan datos sobre una infraestructura de red de comunicación que incluyen nodos de red de la red de comunicación, enlaces entre los nodos de la red de comunicación e información técnica sobre los nodos de la red de comunicación y los enlaces entre los nodos de la red de comunicación. La primera, segunda y tercera consultas mencionadas anteriormente son parte de una solicitud de enrutamiento de red compleja.
El primer conjunto de parámetros de búsqueda de la primera consulta especifica, por ejemplo, un nodo de red de origen y características de nodo de red de un nodo de red de destino potencial con el que comunicarse y el primer conjunto de datos en caché comprende información de identificación e información de características de un número de nodos de red que cumplen las características de red especificadas. El segundo conjunto de parámetros de búsqueda de la segunda consulta comprende una identificación de un nodo de red de destino seleccionado del número de nodos de red y el segundo conjunto de datos en caché comprende información de identificación e información técnica sobre un número de rutas de red directas desde el nodo de red de origen a la red de destino seleccionada a través de los enlaces entre los nodos de la red de comunicación. El tercer conjunto de parámetros de búsqueda comprende una identificación de una ruta de red directa seleccionada del número de rutas de red directas desde el nodo de red de origen a la red de destino seleccionada a través de los enlaces entre los nodos de la red de comunicación y el tercer conjunto de datos actuales comprende información de identificación e información técnica sobre un número de rutas de red inversas desde el nodo de red de destino al nodo de red de origen a través de los enlaces entre los nodos de la red de comunicación.
Un ejemplo más específico (y, por motivos de presentación, simplificado) de este caso de uso se ilustra en la Fig. 5. En este caso, la base de datos 5 almacena datos actuales sobre todo tipo de servidores espejo que incluyen servidores espejo que almacenan específicamente paquetes de distribución de sistema operativo Linux a los que puede accederse a través de Internet. Los servidores espejo forman el conjunto de posibles nodos de red de destino, mientras que los enrutadores y pasarelas de Internet forman nodos de red adicionales que están interconectados por enlaces de red. Los datos almacenados por la base de datos 5 pueden comprender un identificador, un nombre, una URL (localizador de recursos uniforme) y datos de calidad de servicio, tales como tasas de datos, número de subidas/descargas paralelas, etc., de los servidores espejo. La caché 4 puede almacenar una parte, una versión agregada de una parte o la totalidad de los datos actuales de la base de datos 5 y puede actualizarse periódicamente, tal como una vez al día.
Para tomar una decisión de enrutamiento para cargar y/o descargar datos de distribución Linux con respecto a un servidor espejo, el cliente 6 realiza una solicitud de base de datos compleja al sistema de base de datos 2 (en este caso: el servidor de enrutamiento) que incluye al menos tres consultas de base de datos, de manera similar a lo que se ha descrito anteriormente. Con la primera consulta 20, el cliente 6 indica un nodo de origen incluyendo su propia dirección IP 93.23.153.1 en la consulta. Además, la primera consulta 20 incluye una indicación de una característica del destino de enrutamiento, es decir, que se busca un servidor espejo de distribución Linux.
La primera consulta 20 (y las otras consultas posteriores) son procesadas y respondidas por el sistema de base de datos 2 de la manera descrita anteriormente. Más específicamente, la primera consulta 20 se responde basándose en la caché 4 y la primera respuesta 24 indica tres servidores que cumplen los parámetros de búsqueda de la primera consulta 20, p. ej., el servidor S1 de la Universidad de ChongQing, China, S2 alojado en la Universidad Técnica de Chemnitz, Alemania, y el servidor S3 ubicado con el Instituto de Tecnología de Massachusetts, en Cambridge, EE.UU. La primera respuesta 24 indica además detalles técnicos respectivos para los servidores espejo, tal como una tasa de datos (p. ej., promedio durante 24 horas) para la comunicación con el servidor.
Después de una selección en el cliente 6, uno de los servidores espejo se devuelve con la segunda consulta 26 (en el ejemplo, S2: TU Chemnitz), es decir, uno de los nodos de red de destino ha sido determinado por el cliente 6. Como se mencionó anteriormente, la selección puede ser realizada manualmente por un usuario o automáticamente, p. ej., mediante un mecanismo por defecto (en este caso: seleccionar el servidor con la tasa de datos más alta).
El sistema de base de datos 2 devuelve entonces una segunda respuesta basada en caché 30 que indica parámetros de calidad de servicio para múltiples rutas directas (FR) a través de la red, p. ej., un servicio de tasa de bits variable (VBR) con hasta 2 Mbit/s para una primera ruta directa (FR1) y un servicio de tasa de bits garantizada con una tasa de transmisión garantizada de 0,5 Mbit/s para una segunda ruta directa (FR2). De nuevo, se toma una selección de una de las rutas en el cliente y se transmite de vuelta al sistema de base de datos 2 con la tercera respuesta 32. En el ejemplo mostrado, se seleccionó la segunda ruta directa FR2.
El sistema de base de datos 2 devuelve entonces la tercera respuesta 38 en base a los datos actuales almacenados en la base de datos. Por un lado, la tercera respuesta 38 incluye una lista de rutas de vuelta con indicaciones de calidad de servicio respectivas, es decir, un servicio VBR de hasta 2,5 Mbit/s para una primera ruta de vuelta (RR1) y un servicio GBR de 0,4 Mbit/s para una segunda ruta de vuelta (RR2). Estos datos se recuperan 34 de la base de datos 5. Además, los datos de calidad de servicio para la ruta directa FR2 previamente seleccionados en el cliente 6 son validados 36 con los datos actuales almacenados en la base de datos 5. En el ejemplo de la Fig. 5, la validación 36 da como resultado que el compromiso de GBR de 0,5 Mbit/s contenido en la caché 5 ya no es válido de hecho y la GBR actual para FR2 es de 0,4 Mbit/s. Esto se incluye adicionalmente en la tercera respuesta 38 y se transmite al cliente 6.
El cliente 6 puede entonces realizar una selección de enrutamiento para cargar y/o descargar datos de distribución Linux con respecto al servidor espejo seleccionado en base al enrutamiento de red y datos de calidad de servicio recuperados del sistema de base de datos 2.
Finalmente, la Fig. 6 es una representación esquemática de un sistema informático 100 que proporciona la funcionalidad del sistema de base de datos 2 como se muestra en la Fig. 1, implementando las actividades/funciones como se describió anteriormente, que incluyen, p. ej., alojar la caché 4 y la base de datos 5. Dentro del sistema de base de datos 2, se puede ejecutar un conjunto de instrucciones 110, para hacer que el sistema informático 100 realice cualquiera de los métodos analizados en la presente memoria. El sistema de base de datos 2 incluye al menos un procesador 102 (que implementa los nodos de cálculo 6 como se explicó anteriormente), una memoria principal 104 y un dispositivo de interfaz de red 108. La memoria principal 104 incluye un espacio de usuario 104', que está asociado con aplicaciones de ejecución de usuario, y un espacio de núcleo 104", que está reservado para un sistema operativo, así como aplicaciones asociadas al sistema operativo y al hardware. Los componentes 102 a 109 del sistema informático están interconectados por un bus 101 de datos (que implementa la interfaz 8). Opcionalmente, puede incluir además una memoria estática 106, p. ej., una unidad flash y/o de estado sólido no extraíble y/o una tarjeta Micro o Mini SD extraíble, que almacena permanentemente software que permite que el sistema informático 100 ejecute funciones del sistema informático 100, y es posible la presencia de una interfaz de E/S adicional 109, tal como un lector de tarjetas e interfaces USB. Una pantalla 103 de vídeo, un módulo de control de interfaz de usuario 107 y/o un dispositivo de entrada alfanumérica 105. El dispositivo de interfaz de red 108 conecta el sistema de base de datos 2 a otras estaciones, incluyendo los clientes 6, Internet y/o cualquier otra red. El sistema informático 100 también puede representar solo una parte del sistema de base de datos 2 en el caso de que el sistema de base de datos 2 se distribuya a través de varios sistemas informáticos 100 interconectados por una red a través del dispositivo de interfaz de red 108. Un conjunto de instrucciones (es decir, software) 110 que incorpora uno cualquiera, o la totalidad, de los métodos descritos anteriormente, reside completamente, o al menos parcialmente, dentro de o en un medio legible por máquina, p. ej., la memoria principal 104 y/o el procesador 102. El software 110 puede ser transmitido o recibido además como una señal propagada 111 a través de Internet a través del dispositivo de interfaz de red 108.
En general, las rutinas ejecutadas para implementar las realizaciones de la invención, ya sea implementadas 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 denominarse en la presente descripción "código de programa informático" o simplemente "código de programa". El código de programa comprende típicamente instrucciones legibles por ordenador que residen en diversos momentos en diversos dispositivos de memoria y almacenamiento en un ordenador y que, cuando se leen y ejecutan por uno o más procesadores en un ordenador, 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 bien código fuente o bien código objeto escritos en cualquier combinación de uno o más lenguajes de programación.
Varios códigos de programa descritos en la presente memoria pueden identificarse basándose en la aplicación dentro de donde se implementa en realizaciones específicas de la invención. Sin embargo, debe apreciarse que cualquier nomenclatura de programa particular que sigue se usa simplemente por conveniencia y, por lo tanto, la invención no debería limitarse al uso únicamente en cualquier aplicación específica identificada y/o implícita en dicha nomenclatura. Además, dado el número generalmente infinito de maneras en que los programas informáticos pueden organizarse en rutinas, procedimientos, métodos, módulos, objetos y similares, así como las diversas maneras en que la funcionalidad del programa puede asignarse entre diversas capas de software que residen dentro de un ordenador típico (p. ej., sistemas operativos, bibliotecas, API, aplicaciones, miniaplicaciones, etc.), debe apreciarse que las realizaciones de la invención no se limitan a la organización y asignación específicas de la funcionalidad del programa descritas en la presente descripción.
El código de programa incorporado en cualquiera de las aplicaciones/módulos descritos en la presente descripción es capaz de distribuirse individual o colectivamente como un producto de programa en una variedad de formas diferentes. En particular, el código de programa puede distribuirse usando un medio de almacenamiento legible por ordenador que tiene instrucciones de programa legibles por ordenador en el mismo para hacer que un procesador lleve a cabo aspectos de las realizaciones de la invención.
Las instrucciones de programa legibles por ordenador almacenadas en un medio legible por ordenador pueden usarse para dirigir a un ordenador, otros tipos de aparatos de procesamiento de datos programables u otros dispositivos para funcionar de una manera particular, de manera que las instrucciones almacenadas en el medio legible por ordenador producen un artículo de fabricación que incluye instrucciones que implementan las funciones, actos y/o operaciones especificados en los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques. Las instrucciones de programa informático pueden suministrarse a uno o más procesadores de un ordenador de propósito general, un ordenador de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de manera que las instrucciones, que se ejecutan a través del uno o más procesadores, provocan que se realice una serie de cálculos para implementar las funciones, actos y/o operaciones especificados en los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques.
En ciertas realizaciones alternativas, las funciones, actos y/o operaciones especificados en los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques pueden reordenarse, procesarse en serie y/o procesarse simultáneamente según realizaciones 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 usada en la presente memoria tiene el propósito de describir realizaciones particulares solamente y no pretende ser limitativa de las realizaciones de la invención. Se entenderá además que los términos "comprende" y/o "que comprende", cuando se usan en esta memoria descriptiva, especifican la presencia de las características, números enteros, etapas, operaciones, elementos y/o componentes indicados, 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 se usen los términos "incluye", "que tiene", "tiene", "con", "compuesto de" o variantes de los mismos, se pretende que dichos términos sean inclusivos, de una manera similar al término "que comprende".
Aunque toda la invención se ha ilustrado mediante una descripción de diversas realizaciones, y aunque estas realizaciones se han descrito con detalle considerable, no es la intención restringir o limitar de ninguna manera el alcance a tal detalle. Las ventajas y modificaciones adicionales resultarán evidentes para los expertos en la técnica. La invención en sus aspectos más amplios no se limita por lo tanto a los detalles específicos, aparato y método representativos, y ejemplos ilustrativos mostrados y descritos. Por consiguiente, son posibles desviaciones de tales detalles sin apartarse del alcance del concepto general de la invención.
Claims (8)
1. Un método para procesar consultas de datos, siendo realizado el método por un sistema de base de datos (2) que comprende:
- una base de datos (5) que almacena datos actuales que se actualizan continuamente;
- una caché (4) que almacena datos en caché en correspondencia con al menos un subconjunto de los datos actuales almacenados en la base de datos (5);
comprendiendo el método, en el sistema de base de datos (2):
- en respuesta a recibir (20) una primera consulta que comprende un primer conjunto de parámetros de búsqueda que especifican datos a recuperar, devolver (24) un primer conjunto de datos en caché según los primeros parámetros de búsqueda de la caché;
- en respuesta a recibir (26) una segunda consulta relacionada con la primera consulta, comprendiendo la segunda consulta un segundo conjunto de parámetros de búsqueda que especifican datos a recuperar e indican un subconjunto seleccionado del primer conjunto devuelto de datos en caché, devolver (30) un segundo conjunto de datos en caché según el segundo conjunto de parámetros de búsqueda de la caché (4),
- en respuesta a recibir (32) una tercera consulta relacionada con la segunda consulta, comprendiendo la tercera consulta un tercer conjunto de parámetros de búsqueda que especifican datos a recuperar que indican un subconjunto seleccionado del segundo conjunto devuelto de datos en caché,
- recuperar (34) un tercer conjunto de datos actuales según el tercer conjunto de parámetros de búsqueda de la base de datos,
- validar (36) el subconjunto seleccionado del segundo conjunto devuelto de datos en caché con los datos actuales correspondientes almacenados en la base de datos, y
- devolver (38) el tercer conjunto recuperado de datos actuales según el tercer conjunto de parámetros de búsqueda y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché, - en donde validar (36) el subconjunto seleccionado del segundo conjunto devuelto de datos en caché con los datos actuales correspondientes almacenados en la base de datos (5) comprende:
- determinar si los datos actuales almacenados en la base de datos (5) en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son idénticos al subconjunto seleccionado del segundo conjunto devuelto de datos en caché,
- en donde el método comprende, además:
- en respuesta a determinar que los datos actuales almacenados en la base de datos (5) en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son diferentes del subconjunto seleccionado del segundo conjunto devuelto de datos en caché, devolver una diferencia determinada entre el segundo conjunto devuelto de datos en caché y los datos actuales almacenados en la base de datos (5) en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché como el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché.
2. El método de la reivindicación 1, en donde el sistema de base de datos (2) comprende además un módulo de frontend (3) para procesar al menos la segunda consulta y la tercera consulta, comprendiendo el método, además, en el módulo de frontend (3):
- en respuesta a recibir (26) la segunda consulta, dirigir la segunda consulta a la caché (4) para recuperar (28) el segundo conjunto de datos en caché;
- en respuesta a recibir (32) la tercera consulta, determinar que la tercera consulta está relacionada con la segunda solicitud anterior y dirigir la tercera consulta a la base de datos para recuperar (34) el tercer conjunto de datos actuales y validar (36) el subconjunto seleccionado del segundo conjunto devuelto de datos en caché.
3. El método de la reivindicación 2, que comprende, además, en el módulo de frontend (3):
- recibir (28) el segundo conjunto de datos en caché de la caché (4) y enviar (30) un mensaje de respuesta con el segundo conjunto de datos en caché a un cliente (6) que realiza una consulta;
- recibir (34) el tercer conjunto recuperado de datos actuales y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché de la base de datos y enviar (38) un mensaje de respuesta con el tercer conjunto recuperado de datos actuales y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché al cliente (6) que realiza la consulta.
4. El método de una cualquiera de las reivindicaciones 1 a 3,
en donde el método comprende, además;
- en respuesta a determinar que los datos actuales almacenados en la base de datos (5) en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son idénticos al subconjunto seleccionado del segundo conjunto devuelto de datos en caché, devolver un indicador de validez como el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché.
5. El método de una cualquiera de las reivindicaciones 1 a 4, en donde la caché (4) y la base de datos (5) almacenan datos sobre una infraestructura de red de comunicación que incluyen nodos de red de la red de comunicación, enlaces entre los nodos de la red de comunicación e información técnica sobre los nodos de la red de comunicación y los enlaces entre los nodos de la red de comunicación, y en donde la primera, segunda y tercera consultas son parte de una solicitud de enrutamiento de red, en donde
- el primer conjunto de parámetros de búsqueda de la primera consulta especifica características de nodo de red de un nodo de red de destino potencial con el que comunicarse y el primer conjunto de datos en caché comprende información de identificación e información de características de un número de nodos de red que cumplen las características de red especificadas;
- el segundo conjunto de parámetros de búsqueda de la segunda consulta comprende una identificación de un nodo de red de destino seleccionado del número de nodos de red y el segundo conjunto de datos en caché comprende información de identificación e información técnica sobre un número de rutas de red directas desde el nodo de red de origen a la red de destino seleccionada a través de los enlaces entre los nodos de la red de comunicación;
- el tercer conjunto de parámetros de búsqueda comprende una identificación de una ruta de red directa seleccionada del número de rutas de red directas desde el nodo de red de origen a la red de destino seleccionada a través de los enlaces entre los nodos de la red de comunicación y el tercer conjunto de datos actuales comprende información de identificación e información técnica sobre un número de rutas de red inversas desde el nodo de red de destino al nodo de red de origen a través de los enlaces entre los nodos de la red de comunicación.
6. Un sistema de base de datos (2) para procesar consultas de datos, que comprende:
- una base de datos (5) que almacena datos actuales que se actualizan continuamente;
- una caché (4) que almacena datos en caché en correspondencia con al menos un subconjunto de los datos actuales almacenados en la base de datos (5);
- al menos un procesador (102); y
- al menos una memoria (104) que contiene instrucciones que, cuando son ejecutadas por el al menos un procesador (102), hacen que el sistema de base de datos (2) realice operaciones que comprenden:
- en respuesta a recibir (20) una primera consulta que comprende un primer conjunto de parámetros de búsqueda que especifican datos a recuperar, devolver (24) un primer conjunto de datos en caché según los primeros parámetros de búsqueda de la caché (4);
- en respuesta a recibir (26) una segunda consulta relacionada con la primera consulta, comprendiendo la segunda consulta un segundo conjunto de parámetros de búsqueda que especifican datos a recuperar e indican un subconjunto seleccionado del primer conjunto devuelto de datos en caché, devolver (30) un segundo conjunto de datos en caché según el segundo conjunto de parámetros de búsqueda de la caché,
- en respuesta a recibir (32) una tercera consulta relacionada con la segunda consulta, comprendiendo la tercera consulta un tercer conjunto de parámetros de búsqueda que especifican datos a recuperar que indican un subconjunto seleccionado del segundo conjunto devuelto de datos en caché,
- recuperar (34) un tercer conjunto de datos actuales según el tercer conjunto de parámetros de búsqueda de la base de datos,
- validar (36) el subconjunto seleccionado del segundo conjunto devuelto de datos en caché con los datos actuales correspondientes almacenados en la base de datos, y
- devolver (38) el tercer conjunto recuperado de datos actuales según el tercer conjunto de parámetros de búsqueda y el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché,
- en donde validar (36) el subconjunto seleccionado del segundo conjunto devuelto de datos en caché con los datos actuales correspondientes almacenados en la base de datos (5) comprende:
- determinar si los datos actuales almacenados en la base de datos (5) en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son idénticos al subconjunto seleccionado del segundo conjunto devuelto de datos en caché,
- en respuesta a determinar que los datos actuales almacenados en la base de datos (5) en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché son diferentes del subconjunto seleccionado del segundo conjunto devuelto de datos en caché, devolver una diferencia determinada entre el segundo conjunto devuelto de datos en caché y los datos actuales almacenados en la base de datos (5) en correspondencia con el subconjunto seleccionado del segundo conjunto devuelto de datos en caché como el subconjunto seleccionado validado del segundo conjunto devuelto de datos en caché.
7. El sistema de base de datos (2) de la reivindicación 6, en donde las operaciones incluyen el método de una cualquiera de las reivindicaciones 2 a 5.
8. Un producto de programa informático que comprende instrucciones de código de programa almacenadas en un medio legible por ordenador para ejecutar las etapas de método según una cualquiera de las reivindicaciones 1 a 5 cuando dicho programa se ejecuta en un ordenador.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR1901483A FR3092920B1 (fr) | 2019-02-14 | 2019-02-14 | Traitement d’interrogations de base de données complexes |
| PCT/EP2020/053680 WO2020165304A1 (en) | 2019-02-14 | 2020-02-13 | Processing complex database querys |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2988266T3 true ES2988266T3 (es) | 2024-11-19 |
Family
ID=68424929
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES20703488T Active ES2988266T3 (es) | 2019-02-14 | 2020-02-13 | Procesamiento de consultas de base de datos complejas |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US11748348B2 (es) |
| EP (1) | EP3924838B1 (es) |
| CN (1) | CN113490931B (es) |
| AU (1) | AU2020220394B2 (es) |
| ES (1) | ES2988266T3 (es) |
| FR (1) | FR3092920B1 (es) |
| WO (1) | WO2020165304A1 (es) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113987322A (zh) * | 2021-11-11 | 2022-01-28 | 中国工商银行股份有限公司 | 指标数据查询方法、装置、计算机设备和计算机程序产品 |
| CN116303730B (zh) * | 2023-05-18 | 2023-08-01 | 安徽泛联信息科技有限公司 | 一种数据可视化平台用异步数据源连接系统 |
| US20250371003A1 (en) * | 2024-05-29 | 2025-12-04 | Ocient Holdings LLC | Handling different schemas in maintaining a result set cache of a database system |
| US12547618B1 (en) * | 2024-10-24 | 2026-02-10 | Snowflake Inc. | Intelligent resource management for antagonistic workloads |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP1234268A2 (en) * | 1999-11-01 | 2002-08-28 | ITA Software, Inc. | Method and apparatus for providing availability of airline seats |
| EP2146292B8 (en) * | 2008-07-18 | 2019-03-20 | QlikTech International AB | Method and apparatus for extracting information from a database |
| US9235620B2 (en) * | 2012-08-14 | 2016-01-12 | Amadeus S.A.S. | Updating cached database query results |
| ES2714676T3 (es) * | 2012-08-14 | 2019-05-29 | Amadeus Sas | Actualización de resultados de consulta de base de datos almacenados en memoria caché |
| CN104662539B (zh) * | 2012-09-27 | 2018-02-23 | 艾玛迪斯简易股份公司 | 存储并检索数据的方法和系统 |
| US9826051B2 (en) | 2014-01-21 | 2017-11-21 | Amadeus S.A.S. | Content integration framework |
| WO2015110133A1 (en) | 2014-01-21 | 2015-07-30 | Amadeus S.A.S. | Content integration framework |
| US9984165B2 (en) | 2014-02-13 | 2018-05-29 | Amadeus S.A.S. | Increasing search result validity |
| EP2908255B1 (en) | 2014-02-13 | 2018-07-25 | Amadeus S.A.S. | Increasing search result validity |
| WO2015124275A1 (en) | 2014-02-19 | 2015-08-27 | Amadeus S.A.S. | Long-term validity of pre-computed request results |
| US9582536B2 (en) | 2014-02-19 | 2017-02-28 | Amadeus S.A.S. | Long-term validity of pre-computed request results |
| US10061808B2 (en) * | 2014-06-03 | 2018-08-28 | Sap Se | Cached views |
-
2019
- 2019-02-14 FR FR1901483A patent/FR3092920B1/fr active Active
-
2020
- 2020-02-13 AU AU2020220394A patent/AU2020220394B2/en active Active
- 2020-02-13 EP EP20703488.5A patent/EP3924838B1/en active Active
- 2020-02-13 WO PCT/EP2020/053680 patent/WO2020165304A1/en not_active Ceased
- 2020-02-13 US US17/428,835 patent/US11748348B2/en active Active
- 2020-02-13 CN CN202080017149.4A patent/CN113490931B/zh active Active
- 2020-02-13 ES ES20703488T patent/ES2988266T3/es active Active
Also Published As
| Publication number | Publication date |
|---|---|
| WO2020165304A1 (en) | 2020-08-20 |
| CA3129634A1 (en) | 2020-08-20 |
| US20210382894A1 (en) | 2021-12-09 |
| CN113490931B (zh) | 2024-09-24 |
| AU2020220394A1 (en) | 2021-08-26 |
| US11748348B2 (en) | 2023-09-05 |
| CN113490931A (zh) | 2021-10-08 |
| FR3092920A1 (fr) | 2020-08-21 |
| EP3924838B1 (en) | 2024-04-24 |
| AU2020220394B2 (en) | 2024-12-05 |
| EP3924838A1 (en) | 2021-12-22 |
| FR3092920B1 (fr) | 2022-04-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2988266T3 (es) | Procesamiento de consultas de base de datos complejas | |
| ES3009759T3 (en) | System for controlling user interaction via an application with remote servers | |
| EP3669526B1 (en) | Managing subscriptions for event notifications | |
| ES2689305T3 (es) | Aumentar la validez del resultado de búsqueda | |
| ES2702654T3 (es) | Tratamiento de peticiones de datos | |
| ES2714676T3 (es) | Actualización de resultados de consulta de base de datos almacenados en memoria caché | |
| ES2882923T3 (es) | Almacenamiento de memoria caché de base de datos | |
| US20130067024A1 (en) | Distributing multi-source push notifications to multiple targets | |
| TW202105201A (zh) | 推薦使用者一或多有興趣點有關運輸服務之通訊伺服器裝置、方法及通訊系統 | |
| Pereira et al. | Benchmarking Pub/Sub IoT middleware platforms for smart services | |
| ES2608392T3 (es) | Validez a largo plazo de resultados de solicitud pre-calculados | |
| US11409724B2 (en) | Hashed balanced tree data structure | |
| EP3913483A1 (en) | Public and private api hub synchronization | |
| ES2642669T3 (es) | Método, sistema y productos de programa informático para secuenciar mensajes asíncronos en un entorno distribuido y paralelo | |
| CA3129634C (en) | Processing complex database queries | |
| US11792108B2 (en) | Dynamic auto-routing and load balancing for communication systems | |
| EP2833272A1 (en) | Processing information queries in a distributed information processing environment | |
| US20210373777A1 (en) | Leasing unordered items in namespace indices | |
| US20210373983A1 (en) | Leasing prioritized items in namespace indices | |
| US11165564B1 (en) | Scalable data management | |
| US11194660B1 (en) | Listing and protocol for namespace index | |
| ES2900101T3 (es) | Sistema y método de suministro de productos | |
| WO2015120968A1 (en) | Increasing search result validity | |
| US11469988B1 (en) | Communication analysis for dynamic auto-routing and load balancing | |
| US8042037B1 (en) | Sequencing of markup language documents |