ES2882923T3 - Almacenamiento de memoria caché de base de datos - Google Patents
Almacenamiento de memoria caché de base de datos Download PDFInfo
- Publication number
- ES2882923T3 ES2882923T3 ES19174827T ES19174827T ES2882923T3 ES 2882923 T3 ES2882923 T3 ES 2882923T3 ES 19174827 T ES19174827 T ES 19174827T ES 19174827 T ES19174827 T ES 19174827T ES 2882923 T3 ES2882923 T3 ES 2882923T3
- Authority
- ES
- Spain
- Prior art keywords
- cache
- database
- representation
- results
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
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)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Un método para procesar solicitudes de recuperación de datos para recuperar los resultados de la base de datos de una memoria caché (101) de un sistema de base de datos (100), la memoria caché (101) que almacena una representación (105) de un espacio de datos (106) de al menos una base de datos (102) del sistema de base de datos (100), el espacio de datos (106) que está formado por los datos almacenados por la al menos una base de datos (102), en donde la representación (105) comprende una serie de registros de datos, cada registro de datos que comprende una combinación de clave-valor, en donde la solicitud de recuperación de datos comprende una clave de al menos un registro de datos y el al menos un resultado preprocesado para la solicitud de recuperación de datos comprende al menos un valor del al menos un registro de datos, la representación que es una transformación y/o un subconjunto del espacio de datos para comprender al menos un resultado preprocesado para cualquier solicitud de recuperación de datos definida para la cual el espacio de datos (106) de la al menos una base de datos (102) del sistema de base de datos (100) puede generar un resultado , el método que comprende, en la memoria caché (101): inicializar la memoria caché (101) que comprende dirigir cualquier solicitud de recuperación de datos definida a la al menos una base de datos (102), almacenar al menos un resultado generado para cualquiera de las solicitudes de recuperación de datos en la representación (105) de la memoria caché (101) como un resultado preprocesado y no almacenar nada en la representación (105) para cualquiera de las solicitudes de recuperación de datos que no generan ningún resultado; en respuesta a recibir una solicitud de recuperación de datos (305) desde un dispositivo cliente (103), determinar, utilizando la representación almacenada (105), si el espacio de datos (106) de la al menos una base de datos (102) es capaz de generar al menos un resultado para la solicitud de recuperación de datos, si es afirmativo, devolver al menos un resultado preprocesado de la representación (105) almacenada por la memoria caché (101) para la solicitud de recuperación de datos al dispositivo cliente (103); de lo contrario, devolver una notificación de invalidez (702) al dispositivo cliente (103) sin hacer referencia a la al menos una base de datos (102).
Description
DESCRIPCIÓN
Almacenamiento de memoria caché de base de datos
Campo técnico
La presente invención se refiere a la tecnología de bases de datos. En particular, se relaciona con el almacenamiento en memoria caché de los resultados de las solicitudes de la base de datos.
Antecedentes
El almacenamiento en memoria caché de la base de datos almacena una selección de datos que se mantiene en un sistema de base de datos en una memoria caché. Luego, las solicitudes de la base de datos se responden desde la memoria caché para reducir los tiempos de respuesta. Por ejemplo, una selección de datos solicitados con frecuencia de la base de datos se almacena en la memoria caché. Las solicitudes de base de datos, para las cuales no se almacenan datos en la memoria caché, se procesan en el momento de la solicitud y se responden posteriormente desde la base de datos. Además, las solicitudes de base de datos para las que la base de datos no incluye ningún resultado se procesan en el momento de la solicitud utilizando los recursos de procesamiento y el tiempo del sistema de base de datos.
Un enfoque general como por ejemplo se expone por una documentación de la memoria caché de código abierto EHCACHE en http://www.ehcache.org/documentation/2.8/recipes/cachenull.html es almacenar en memoria caché valores cero cuando la base de datos no genera un resultado para una solicitud dada.
El almacenamiento en memoria caché de valores cero o NULL también se describe en el documento US 2010/0036805 A1 que se relaciona con el mantenimiento de memorias caché de valores de entrada/salida (E/S) para solicitudes de base de datos. En respuesta a la recepción de una solicitud en la base de datos, se decide según criterios predeterminados si se crea una entrada de memoria caché para devolver un resultado de la memoria caché para el evento de que la misma solicitud o una solicitud similar se reciba de nuevo posteriormente. Si no se encuentran valores coincidentes al procesar una solicitud, se devuelve un valor NULL y también se incluye en la memoria caché.
Además, el documento US2016/0042278 A1 se refiere a un ajuste predictivo de contenido en una red de entrega de contenido para actualizar el contenido almacenado en una o más memorias caché. Todos los datos de una base de datos o partes de datos solicitadas con frecuencia se almacenan en una memoria caché, reflejando el contenido de la base de datos. Dependiendo del tamaño del contenido y/o de la memoria caché, todo el contenido o partes del contenido se proporciona desde la memoria caché. La administración de memoria caché determina si el contenido está obsoleto y debe actualizarse.
El documento "Middle-Tier Database Caching for e-Business" de Qiong Luo et al. se refiere a sistemas de bases de datos relacionados con la web en los que un servidor de aplicaciones web acoplado comunicativamente por clientes basados en navegador opera utilizando una base de datos etapa final. El esquema de almacenamiento en memoria caché del servidor de aplicaciones web es el almacenamiento en memoria caché a nivel de tabla completa según el cual la memoria caché de la base de datos de nivel medio mantiene una copia completa de una tabla de la base de datos etapa final.
El libro de texto "Caching and Materialization for Web Databases" de Alexandros Labrinidis et al. describe arquitecturas del sistema de bases de datos web y aspectos del almacenamiento en memoria caché y la materialización en dichas arquitecturas.
Compendio
La invención se expone en el conjunto de reivindicaciones adjuntas.
Breve descripción de los dibujos
Los presentes mecanismos se describirán con referencia a las figuras adjuntas. Números de referencia similares generalmente indican elementos idénticos o funcionalmente similares.
La FIG. 1 es una descripción general del sistema de la base de datos, que incluye una memoria caché y una base de datos.
La FIG. 2 visualiza una implementación de ejemplo en una red de comunicación.
La FIG. 3 muestra un diagrama de secuencia que ilustra la inicialización/actualización de la memoria caché y la utilización de la memoria caché.
La FIG. 4 complementa la red de comunicaciones de la FIG. 2 con un historial de cambios.
La FIG. 5 visualiza una memoria caché que almacena dos o más resultados.
La FIG. 6 ilustra una extensión del sistema de la FIG. 1 para aprovechar las notificaciones de invalidez
La FIG. 7 muestra un diagrama de flujo que ilustra la recuperación de un resultado adicional del espacio de datos. La FIG. 8 muestra tres diagramas de secuencia que ilustran las respuestas de la memoria caché.
La FIG. 9 ilustra la aplicación del sistema de base de datos que implementa un balanceador de carga de agrupación. La FIG. 10 es una vista esquemática ejemplar de la arquitectura interna de la máquina de cálculo.
Descripción detallada
Una descripción general de un sistema de base de datos 100 que incluye una memoria caché 101 y una base de datos 102 se muestra a modo de ejemplo en la FIG. 1. El sistema de base de datos 100 incluye una máquina de cálculo 104 que incluye uno o más procesadores para generar uno o más resultados del procesamiento de datos contenidos en una o más bases de datos 102, y el espacio de datos puede generar uno o más resultados. La memoria caché 101 está dispuesta para procesar las solicitudes de la base de datos recibidas de los clientes 103. Los resultados son preprocesados por una máquina de cálculo 104 en una inicialización (así también denominada resultados preprocesados) y/o actualización de la memoria caché 101. La memoria caché 101 almacena así una representación 105 de un espacio de datos 106.
El espacio de datos 106 está definido por los datos almacenados en una o más bases de datos 102 del sistema de base de datos 100. En otras palabras, los datos almacenados por la al menos una base de datos 102 forman el espacio de datos 106. La representación 105 incluye uno o más resultados para cualquier solicitud de base de datos para la cual el espacio de datos 106 de la una o más bases de datos 102 del sistema de base de datos 100 puede generar un resultado cuando la solicitud de base de datos se procesa previamente en la máquina de cálculo 104. Los resultados almacenados en la memoria caché 101, es decir la representación 105, son una transformación de datos del espacio de datos 106, y/o un subconjunto del espacio de datos 106. A continuación se dan ejemplos no limitantes del espacio de datos 106 de la al menos una base de datos 102 y la representación 105.
En realizaciones de ejemplo, la al menos una base de datos 102 del sistema de base de datos 100 es una base de datos relacional que almacena datos del espacio de datos 106 en tablas. En otras realizaciones de ejemplo, la base de datos 102 es una base de datos no Sql (no solo Lenguaje de Consulta Estructurado) que almacena datos del espacio de datos 106 en JSON (Notación de Objetos de Secuencia de Comandos de Java) semiestructurado, XML (Lenguaje de Marcado Extensible) u otros documentos. Sin embargo, las realizaciones no se limitan a las bases de datos mencionadas a modo de ejemplo y son aplicables a cualquier tipo de sistema de base de datos que contenga cualquier tipo de datos.
Se observa que, como es habitual, una o más bases de datos 102 como se describen en la presente memoria almacenan una cantidad finita de datos. Por ejemplo, en el caso de una base de datos relacional, la cantidad finita de datos se almacena en un número dado de tablas de la base de datos. Además, como es habitual, una o más bases de datos 102 como se describen en la presente memoria emplean un número finito de tipos de operaciones de recuperación. Por ejemplo, en el caso de una base de datos SQL, la solicitud de recuperación de datos utiliza la sentencia SELECT que indica una o más tablas de base de datos y valores clave. También se pueden emplear suboperaciones más complejas como JOIN. Las solicitudes de recuperación de datos también pueden limitarse mediante la definición de valores clave admisibles o rangos de valores clave. En cualquier caso, dado que tanto la cantidad de datos como los tipos/número de operaciones de recuperación son finitos, la representación 105 del espacio de datos 106 almacenado por la memoria caché 101 de manera que pueda contener al menos un resultado preprocesado para que cualquier solicitud de recuperación de datos para la que el espacio de datos 106 puede generar un resultado sea también finita. Más adelante se dan ejemplos de casos de uso no limitativos.
En las realizaciones de ejemplo, los clientes 103 son usuarios de máquinas tales como aplicaciones, servidores y/o terminales.
En una realización de ejemplo no limitativa, el sistema de base de datos 100 está dispuesto para responder a cualquier solicitud de base de datos de los clientes 103 con respecto a la disponibilidad de rutas 201 entre servidores 202 en una red de comunicación 200 mostrada en la FIG. 2. La base de datos 102 en esta realización de ejemplo almacena todas las rutas, que son conexiones directas entre dos servidores sin servidores intermedios en el medio. El espacio de datos 106 de la base de datos 102 se da por lo tanto por la recopilación de estas rutas directas entre servidores vecinos y es capaz de generar todas las rutas disponibles entre cualquier par de servidores a saber todas las permutaciones de los servidores 202 en la red de comunicación 200 que también incluyen conexiones indirectas con servidores intermedios 202 calculadas por concatenaciones de rutas directas.
La memoria caché 101 almacena una representación 105 del espacio de datos 106, a saber, una lista de todos los pares de servidores 202 que están conectados por una ruta directa (sin servidores intermedios adicionales) o una ruta indirecta (con servidores intermedios). Los pares de servidores que no están conectados por ninguna ruta no
son parte de la representación 105 y, por lo tanto, no se almacenan en la memoria caché. En otras realizaciones, la representación 105 incluye al menos cada ruta para cada par de servidores interconectados.
La memoria caché 101 puede inicializarse (es decir, llenarse con la representación 105 derivada del espacio de datos 106) de diversas formas. Por ejemplo, la representación 105 se deriva mediante preprocesamiento, tal como dirigir las solicitudes de la base de datos a la base de datos 102 y almacenar al menos un resultado recuperado para cualquier solicitud en la memoria caché 101. Por ejemplo, todas las solicitudes de recuperación de datos que son admisibles en el sistema de base de datos 100 pueden permutarse y dirigirse a la base de datos 102 y al menos un resultado para cada solicitud se almacena en la memoria caché 101. Opcionalmente, se evitan los duplicados en la memoria caché 101 para minimizar los requisitos de memoria, es decir, si la representación 105 ya incluye al menos un resultado preprocesado para una solicitud de recuperación de datos dada dirigida a la base de datos 102 durante la fase de inicialización, no se agrega ningún resultado adicional a la memoria caché para la solicitud de recuperación de datos dada.
En el ejemplo de un sistema de base de datos de rutas de red, la inicialización mediante preprocesamiento se puede realizar recuperando para cada par de servidores si existe o no una ruta entre los dos servidores 202 respectivos. Una o más rutas 201 para cada par de servidores interconectados se procesan previamente por la máquina de cálculo 104 del sistema de base de datos 100. La al menos una ruta para cada par de servidores interconectados obtenidos del espacio de datos 106 por el preprocesamiento forman la representación 105 y se almacenan en la memoria caché 101. Cuando el preprocesamiento no genera una ruta 201 para un par de servidores, esto significa que los dos servidores 202 del par no están conectados por ninguna ruta y, por lo tanto, no se almacena ningún resultado en la memoria caché 101.
Por ejemplo, para el par de servidores (1, 2) la ruta "a" se almacena en la representación 105 de la memoria caché 101 como resultado de una ruta que conecta el servidor 1 y el servidor 2 en la red de comunicación 200. En otro ejemplo, para el par de servidores (2, 7) la ruta "e" se almacena como resultado para una ruta que conecta el servidor 2 y el servidor 7. En otro ejemplo, para el par de servidores (2, 7) las rutas "e" y "f-g" se almacenan en la representación 105 de la memoria caché 101 como resultados para las rutas que conectan el servidor 2 y el servidor 7 en la red de comunicación 200.
Por lo tanto, en esta realización de ejemplo, la memoria caché 101 almacena una ruta para cualquier solicitud de base de datos para pares de servidores 202 en la representación 105 generada en el preprocesamiento en la máquina de cálculo 104. En otras realizaciones de ejemplo, la memoria caché 101 almacena varias rutas o todas rutas para cualquier par solicitado de servidores 202 en la representación 105 generada en el preprocesamiento en la máquina de cálculo 104. En otras realizaciones de ejemplo, la memoria caché 101 almacena todas las rutas en la representación 105 de la memoria caché 101.
La memoria caché 101 está dispuesta para determinar, utilizando la representación almacenada 105, en respuesta a la recepción de una solicitud de base de datos de un cliente 103, si el espacio de datos 106 de la una o más bases de datos 102 es capaz de generar uno o más resultados para la solicitud de base de datos. Si es afirmativo, la memoria caché 101 devuelve uno o más resultados para la solicitud de base de datos almacenada en la representación 105; de lo contrario, la memoria caché 101 devuelve una notificación de invalidez, porque el espacio de datos 106 no puede generar un resultado para esta solicitud de base de datos.
En el ejemplo de realización de la FIG. 2, en respuesta a recibir una solicitud de base de datos de un cliente 103 para una ruta entre el servidor 1 y el servidor 3 en la red de comunicación 200, la memoria caché devuelve la ruta "ab" como resultado de la solicitud de base de datos. En otra realización de ejemplo, la memoria caché devuelve las rutas "a-b", "a-e-h-i-d-c" y "a-f-g-h-i-d-c" como resultados para la solicitud de base de datos del cliente 103. En otra realización de ejemplo, hay una desconexión en las rutas "b" e "i", de manera que la red de comunicaciones se divide en dos subredes desconectadas. La primera subred incluye los servidores 1, 2, 6, 7, 8 y la segunda subred incluye los servidores 3, 4, 5. Como consecuencia, no hay ninguna ruta disponible entre el servidor 1 en la primera subred y el servidor 3 en la segunda subred. En respuesta a recibir una solicitud de base de datos de un cliente 103 para una ruta entre el servidor 1 y el servidor 3, la memoria caché 101 devuelve una notificación de invalidez, dado que la representación 105 de la memoria caché 101 no almacena una ruta para una conexión entre el servidor 1 y el servidor. 3, porque el espacio de datos 106 no puede generar una ruta 202 entre el servidor 1 y el servidor 3.
En alguna realización de ejemplo de la FIG. 2, los resultados incluyen, además de la ruta, parámetros, por ejemplo, políticas para la disponibilidad del resultado bajo condiciones dadas. Un resultado de una ruta de red incluye, por ejemplo, un parámetro que indica que la ruta o una o más subrutas del resultado solo se utilizan unidireccionalmente, por ejemplo, la ruta b en la FIG. 2, solo sirve la comunicación en la dirección del servidor 2 al servidor 3 pero no al revés. Entonces, el único resultado disponible para una conexión entre el servidor 2 y el servidor 3 es la propia ruta b. La ruta e-h-i-d-c-b está indicada por el parámetro unidireccional de b como no disponible porque está dirigida de c a b, lo cual no se soporta. Tanto la ruta b de resultados como la e-h-i-d-c-b pueden almacenarse en la memoria caché 101, pero van acompañadas del parámetro que indica si la ruta en el resultado respectivo está disponible. En otro ejemplo, una ruta de red solo está disponible en franjas horarias específicas. Por ejemplo, si los servidores 3, 4 y 5 pertenecen a otra agrupación de red, los servidores 1, 2, 6, 7 y 8 solo se comparten durante la noche para soportar el procesamiento mediante recursos adicionales, las rutas b e i
están restringidas a la comunicación con el servidor solo de 10 p.m. a 6 a.m. Por lo tanto, todos los resultados que incluyen las rutas b y/o i como ruta o subruta incluyen un parámetro de tiempo que indica cuándo está disponible/no disponible el resultado respectivo. Otros parámetros dependientes del tiempo son, por ejemplo, un tiempo máximo permitido para que un mensaje se envíe desde un servidor de origen a un servidor de destino y/o por un tiempo definido para procesar un mensaje en un servidor intermedio en una ruta compuesta, antes de que se envíe al siguiente servidor para su procesamiento adicional. En un tercer ejemplo, el parámetro de un resultado indica quién está calificado para solicitar el resultado, de manera que el resultado solo está disponible para fuentes específicas de la solicitud o usuarios. Si otra fuente distinta a la indicada en los parámetros de un resultado intenta solicitar el resultado de la memoria caché 101, el resultado no está disponible.
Los sistemas y métodos en el documento US 2010/0036805 A1 y US2016/0042278 A1 procesan una solicitud de la base de datos en respuesta a recibir la solicitud de la base de datos por primera vez y luego utilizan una memoria caché para responder a la solicitud de la base de datos desde la memoria caché cuando la solicitud se reciba de nuevo. En respuesta a recibir una solicitud de base de datos por primera vez, el sistema no tiene información sobre la disponibilidad de un resultado para esta solicitud de base de datos. Por lo tanto, una solicitud de base de datos recibida por primera vez se procesa en el momento de la solicitud de base de datos, aunque al final no se genera ningún resultado, dado que la solicitud de base de datos no era válida. Cuando el procesamiento de una solicitud de base de datos recibida por primera vez no genera un resultado, algunos de los sistemas conocidos almacenan un NULL en la memoria caché, para evitar que el sistema procese una solicitud de base de datos previamente procesada no generando un resultado de nuevo en el momento de la solicitud de base de datos. Por el contrario, la memoria caché 101 descrita en la presente memoria ya incluye uno o más resultados para cualquier solicitud de base de datos para la que el espacio de datos 106 de las bases de datos 102 del sistema de base de datos 100 puede generar un resultado.
Con ello, la memoria caché 101 es capaz de responder de forma autónoma a cualquier solicitud de base de datos sin necesidad de consultar la base de datos 102 del sistema de base de datos 100. Aunque la base de datos 102 puede almacenar más resultados que la memoria caché 101 para una solicitud de recuperación de datos dada, la memoria caché 101 puede devolver al menos un resultado preprocesado para la solicitud de recuperación de datos. Si la memoria caché 101 no incluye ningún resultado preprocesado para una solicitud de recuperación de datos dada, por lo tanto, ya es seguro en la memoria caché 101 que la base de datos 102 tampoco contiene ningún resultado. Por lo tanto, una ventaja es que el sistema de base de datos 100 ahorra cualquier carga de procesamiento causada generalmente en solicitudes de base de datos no válidas relacionadas con datos no almacenados en memoria caché, por ejemplo, búsquedas imposibles que no generan un resultado.
En algunas realizaciones, los dos siguientes mecanismos mostrados en la FIG. 3 se refieren a inicializar y/o actualizar la representación 105 en la memoria caché 101 por un lado y utilizar la memoria caché 101 para responder a las solicitudes de la base de datos desde la memoria caché 101 por otro lado. Para inicializar o actualizar 302 de la representación 105 de la memoria caché 101, el primer mecanismo, por ejemplo, genera cualquier solicitud de base de datos definida en la base de datos 102 del sistema de base de datos 100 por una máquina de cálculo 104. Uno o más resultados generados para cualquier solicitud de base de datos se almacenan en la representación 105 de la memoria caché 101. Cuando no se genera ningún resultado al procesar una solicitud de base de datos no se almacena nada en la representación 105 de la memoria caché 101 para esta solicitud de base de datos. El mismo proceso se repite para reinicializar la memoria caché 101 o para realizar una actualización completa de la memoria caché 101.
En otras realizaciones, la inicialización se realiza mediante un proceso de transformación dado que mapea los datos del espacio de datos 106 con los datos que forman la representación 105 sin dirigir una permutación de las solicitudes de la base de datos a la base de datos 102. Por ejemplo, la memoria caché 101 puede almacenar vistas materializadas de los datos almacenados en la base de datos 102 y las solicitudes de recuperación de datos recuperan las vistas de la memoria caché 101.
Separado de la inicialización o actualización de los resultados 300 en la máquina de cálculo 104, las solicitudes de la base de datos se responden 301 desde la memoria caché 101. Las solicitudes de la base de datos 305 de los clientes 103 se reciben en la memoria caché 101. Si uno o más resultados para la solicitud de la base de datos se almacenan en la representación 105 de la memoria caché 101, la memoria caché 101 responde 306 a la solicitud de la base de datos devolviendo uno o más de los resultados al cliente 103. De lo contrario, la memoria caché responde 306 devolviendo una notificación de invalidez.
En algunas realizaciones, la representación 105 de la memoria caché 101 incluye varios registros de datos. Cada registro de datos incluye una combinación clave-valor. La solicitud de la base de datos incluye una clave de uno o más registros de datos y el uno o más resultados para la solicitud de la base de datos incluyen uno o más valores del uno o más registros de datos.
En algunas realizaciones, la combinación clave-valor representa una ruta de conexión entre un nodo de origen y un nodo de destino en una red de comunicación. La clave especifica el nodo de origen y el nodo de destino en la red de comunicación y el valor es una o más rutas desde el nodo de origen al nodo de destino. El nodo de origen está conectado directamente o a través de uno o más nodos intermedios al nodo de destino.
En realizaciones de ejemplo, un nodo de origen y/o de destino así como nodos intermedios en la red de comunicación 200 de la FIG. 2 son servidores 202 conectados por red de área local (LAN), red de área local inalámbrica (WLAN) y/o red de área amplia (WAN). Sin embargo, el tipo de conexión en la red de comunicación 200 no está restringido a servidores o tipos especiales de redes. Los servidores 202 constituyen una red de comunicación 200 en la que los servidores 202 trabajan posteriormente o en paralelo en tareas comunes, intercambian datos o procesan solicitudes de bases de datos operativas. Para comunicarse con otro servidor, está disponible una consulta al sistema de base de datos 100 para determinar si hay alguna ruta al otro servidor y/o qué ruta.
En la realización de ejemplo de la FIG. 2, la representación 105 de la memoria caché 101 almacena para cada par de servidores en la red de comunicación 200 una o más rutas 201 mediante un par clave-valor. El par clave-valor incluye como clave el par de servidores que incluye una permutación de un servidor de origen y un servidor de destino de todos los servidores 202 en la red de comunicación 200, y como valor una o más rutas 201 entre el servidor de origen y de destino 202.
Por ejemplo, para un par de servidores (2, 3), las rutas 201 disponibles en la red de comunicación que interconectan el servidor de origen 2 con el servidor de destino 3 son "b", "e-h-i-d-c", "f-g-h-i-d-c'\ Como resultado, para el par de servidores (2, 3), un par clave-valor < (2, 3), (b) > se almacena, por ejemplo, en la representación 105 de la memoria caché 101. En otro ejemplo, se almacena el par clave-valor < (2, 3), (b, e-h-i-d-c) > o < (2, 3), (b, f-g-h-i-d-c) >, donde la memoria caché 101 está configurada para almacenar dos rutas 201, cuando estén disponibles para cada par de servidores. En otro ejemplo más en el que la memoria caché 101 está configurada para almacenar todas las rutas 201 disponibles para cualquier par de servidores, el par clave-valor < (2, 3), (b, e-h-i-d-c, f-g-h-i-d-c) > se almacena en la representación 105. En un ejemplo en el que las subrutas b e i están interrumpidas y no hay una ruta 201 disponible entre el servidor de origen 2 y el servidor de destino 3, la memoria caché 101 no almacena un par clavevalor para el par de servidores (2, 3).
En sistemas de espejo conocidos tales como el documento US2016/0042278 A1 que almacenan todas las partes de los datos incluidos en la base de datos y con ello reflejan el contenido de la base de datos, la memoria caché consume tantos recursos de almacenamiento como la propia base de datos. Además, el tiempo de procesamiento para generar un resultado no se guarda en esos sistemas conocidos, sino que solo se cambia de procesamiento la solicitud de la base de datos en el momento de la solicitud en la base de datos para procesar la solicitud de la base de datos en la memoria caché. Para el cliente, esto no ahorra tiempos de respuesta, ni para solicitudes de base de datos válidas que generan un resultado ni para resultados no válidos que no generan un resultado en el momento de la solicitud. La memoria caché 101 que almacena resultados preprocesados para cualquier solicitud de base de datos válida como un par clave-valor no solo responde directamente a cualquier solicitud de base de datos instantáneamente como se explicó anteriormente, sino que almacena estos resultados de una manera más eficiente en términos de memoria y tiempo de respuesta que los sistemas de espejo. Además, las solicitudes no válidas se responden instantáneamente mediante una notificación de invalidez. Con ello, cualquier solicitud se responde directamente desde la memoria caché 101.
En algunas realizaciones, la representación 105 almacenada en la memoria caché 101 incluye para una o más solicitudes de base de datos menos resultados que los que puede generar el espacio de datos 106 de una o más bases de datos 102 del sistema de base de datos 100. Los menos resultados forman un subespacio de resultados. El subespacio de resultados se da en base a una probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo. En la medida en que hay una solicitud de base de datos para la cual el espacio de datos 106 de la al menos una base de datos 102 puede generar más de un resultado, un subconjunto de estos resultados múltiples, pero no todos los resultados se almacenan en la memoria caché 101. Cuando el espacio de datos 106 solo puede generar un resultado, este resultado se almacena en la representación 105 de la memoria caché 101. Cuando no se envía ningún resultado, no se almacena nada en la representación 105 de la memoria caché 101 para la solicitud de la base de datos.
El criterio de selección para elegir un subconjunto de menos resultados que el número de resultados que son generados por el espacio de datos 106 es la probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo. La probabilidad puede almacenarse en forma de un indicador asociado con los datos en la base de datos 102 y/o los resultados preprocesados en la memoria caché 101. Esta probabilidad se obtiene, por ejemplo, evaluando un historial de frecuencias de cambio de resultados en la representación 105 de la memoria cache. Se generan uno o más resultados al preprocesar cualquier solicitud de base de datos en la base de datos 102 del sistema de base de datos 100, incluido el espacio de datos 106 en una inicialización de la memoria caché 101 o también cuando se actualiza la memoria caché 101. Las actualizaciones de la memoria caché 101 pueden realizarse en intervalos o al detectar cambios monitorizando el espacio de datos 106. Sin embargo, el proceso de actualización no está restringido a esos ejemplos. Las actualizaciones desencadenan un recálculo de resultados para almacenar en la representación 105 de la memoria caché 101. Los resultados se obtienen procesando solicitudes de base de datos individuales en la base de datos 102 nuevamente o como un recálculo completo de cualquier solicitud de base de datos. Sobre la base de un historial de actualización, se obtienen las probabilidades de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo.
En la FIG. 4, la red de comunicación 200 de la FIG. 2 es un suplemento con un historial 400 de cambios debidos a interrupciones en subrutas de la red de comunicación 200 dentro de dos días. El historial de cambios puede almacenarse en la base de datos 102 del sistema de base de datos 100, puede agregarse mediante una monitorización interna o externa, o implementarse de cualquier otra forma adecuada. A partir del historial 400 de interrupciones, la probabilidad de que una ruta entre un servidor de origen O y un servidor de destino D siga estando sin cambios se determina suponiendo que una ruta 201 que no se interrumpió en el pasado tiene una probabilidad más alta de seguir estando sin cambios y tampoco se interrumpe en el futuro. Procesando una actualización el 6 de diciembre para las rutas entre el servidor de origen O y el servidor de destino D sin tener en cuenta un historial, 400 genera tres rutas r1: a-b-c-d, r2: a-e-h-i y r3: a-f-g-h-i.
Teniendo en cuenta un historial 401 de un día en el pasado x1, el historial revela que el 5 de diciembre la ruta r1 no tuvo interrupciones, la ruta r2 tuvo 2 interrupciones, a saber, en la subruta e, presentando 2 interrupciones el 5 de diciembre y la ruta r3 tuvo 3 interrupciones, a saber, en la subruta f, presentando 2 interrupciones y en la subruta g, presentando 1 interrupción el 5 de diciembre. Por lo tanto, teniendo en cuenta un historial de un día 401 en el pasado, la ruta que tiene la mayor probabilidad de seguir estando sin cambios en el futuro es r1. Por lo tanto, la ruta r1: a-b-c-d se elige y se almacena en la representación 105 de la memoria caché 101.
En otro ejemplo, se tiene en cuenta un historial de dos días 402 en el pasado x2, es decir, el 4 y el 5 de diciembre. En este ejemplo, resulta que la ruta r3 tiene la mayor probabilidad de seguir estando sin cambios en el futuro. Por tanto, la ruta r3 se elegirá y almacenará en la representación 105 de la memoria caché 101.
Sin embargo, la determinación de la probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo no está restringida al método de este ejemplo.
En contraste con el documento US2010/0036805A1 donde los datos almacenados en la memoria caché se actualizan cada vez cuando cambian los datos correspondientes en la base de datos, la ventaja de elegir los resultados para almacenar en la memoria caché 101 por la validez de los resultados almacenados en la representación 105 es que la memoria caché 101 conserva de manera óptima la consistencia del resultado almacenado con los resultados emitidos por el espacio de datos 106 de la base de datos 102 en el sistema de base de datos 100. El número de actualizaciones disminuye en relación al tiempo durante el cual un resultado almacenado en la memoria caché sigue siendo válido. Con ello, el número de actualizaciones de la memoria caché 101 se minimiza, ahorrando recursos del sistema para tales actualizaciones.
En algunas realizaciones, la representación 105 almacenada en la memoria caché 101 incluye dos o más resultados para solicitudes de base de datos que se emiten al preprocesar la solicitud de base de datos en el espacio de datos 106 de una o más bases de datos 102 del sistema de base de datos 100. Devolver el uno o más resultados para la solicitud de base de datos de la memoria caché 101 incluye devolver uno o más de los dos o más resultados que tienen el indicador que indica la mayor probabilidad de seguir siendo válido a lo largo del tiempo.
En una realización de ejemplo, todos los dos o más resultados almacenados en la memoria caché 101 se devuelven en respuesta a la recepción de una solicitud de base de datos para dicha solicitud de base de datos. En otra realización de ejemplo, primero solo el resultado con la mayor validez es devuelto por la memoria caché 101. Se devuelve un resultado adicional, si está disponible, cuando se recibe una solicitud de base de datos adicional del cliente 103, solicitando una o más alternativas al primer resultado devuelto. En realizaciones de ejemplo, la memoria caché 101 almacena la probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo junto con el resultado respectivo. En respuesta a la recepción de una solicitud de base de datos por un cliente 103, la memoria caché 101 devuelve el resultado con la mayor probabilidad.
En otras realizaciones de ejemplo, la memoria caché almacena los dos o más resultados en una lista ordenada, de manera que la posición de un resultado en la lista indica la relación de la probabilidad en el orden de la probabilidad más alta primero. Con ello, no se utiliza memoria adicional para almacenar la probabilidad en sí misma. En respuesta a la recepción de una solicitud de base de datos por un cliente 103, la memoria caché 101 devuelve uno o más de los primeros elementos de la lista ordenada. Con ello, se devuelven los resultados con la mayor validez. En la FIG. 5, todos los resultados generados al procesar cualquier solicitud de base de datos en conexiones entre servidores 202 para todos los pares de servidores en la red de comunicación 200 en la FIG. 4 se muestran en una tabla 500. En esta realización de ejemplo, la memoria caché 101 almacena en la representación 105 dos de los resultados generados, si están disponibles. Los resultados, almacenados en la memoria caché 101 se eligen por la mayor probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo, a saber, teniendo la mayor validez de todos los resultados generados para cada uno de los pares de servidores. La memoria caché 101 almacena las rutas 501 generadas y elegidas para cualquier par de servidores 502 en una lista ordenada 501 en la representación 105.
En la realización de ejemplo de la FIG. 5, la representación 105 de la memoria caché 101 almacena para el par de servidores (1, 2) el único resultado generado al procesar la solicitud de la base de datos para una conexión entre el servidor 1 y el servidor 2 en el espacio de datos 106, que es la ruta "a". Para el par de servidores (1, 3), el espacio de datos 106 genera al procesar cuatro posibles rutas s1 a s4 mostradas en la línea dos, columna cuatro de la tabla
500. El número de interrupciones 400 se muestra en la red de comunicación 200 en la FIG. 4. Para el par de servidores (1,3), por ejemplo, el número de interrupciones se muestra determinado por un historial de un día x1 y un historial de dos días x2 en la TAB. 1.
En este ejemplo, la representación 105 almacena los dos resultados que tienen la mayor validez para cada uno de los pares de servidores. Con ello, para el par de servidores (1, 3) con un historial de un día x1, la memoria caché 101 almacena s1 como primer resultado, lo que indica que el par de servidores (1, 3) tiene la mayor probabilidad y s3 como un segundo resultado, que indica que el par de servidores (1, 3) tiene una probabilidad menor que s1 pero una probabilidad mayor que cualquier otro resultado para el par de servidores (1, 3) generado desde el espacio de datos 106. Con un historial de dos días x2, la memoria caché 101 almacena por las mismas razones s1 como primer resultado y s4 como segundo resultado.
Sin embargo, de la misma manera también se almacenan más de dos rutas generadas desde el espacio de datos 106 en la representación 105 de la memoria caché 101, si está disponible. Para el par de servidores (1, 2), la representación 105 de la memoria caché 101 solo almacena la ruta "a" como primer resultado y no como segundo resultado. Si no se genera ningún resultado en el procesamiento, no se almacena nada para el par de servidores en la memoria caché 101. Por lo tanto, la memoria caché 101 puede responder a cualquier solicitud de base de datos sobre la disponibilidad de rutas 201 entre dos servidores 202 respectivos. Además, la memoria caché 101 de la realización de ejemplo está configurada para devolver un resultado alternativo, si está disponible, en el orden de mayor validez.
En algunas realizaciones, en respuesta a devolver una notificación de invalidez a una solicitud de base de datos recibida, se acumula el número de apariciones de la solicitud de base de datos recibida para las que se devuelve una notificación de invalidez. El sistema gestionado por el sistema de base de datos 100 se optimiza luego o bien mediante la resolución de problemas identificados o bien mediante reestructuración. Por lo tanto, para la red de comunicación de la FIG. 2, la red de comunicación se optimiza incluyendo una nueva ruta, en respuesta a la determinación de que el número de apariciones de notificaciones de invalidez excede un umbral predefinido, donde las notificaciones de invalidez indican una ruta omitida para la cual las solicitudes de base de datos se reciben de varios clientes 103.
En una realización de ejemplo, se recibe una solicitud de base de datos en la memoria caché desde un cliente 103 a la memoria caché 101. La representación de la memoria caché 105 no tiene ningún resultado para la solicitud de base de datos disponible. Para aprovechar las notificaciones de invalidez devueltas en respuesta a la solicitud de base de datos recibida, el sistema de base de datos 100 de la FIG. 1 se amplía mediante un análisis adicional de tales solicitudes de base de datos como se muestra en la FIG. 6. En respuesta a devolver una notificación de invalidez al cliente, se almacena 601 la solicitud de base de datos recibida para la que no está disponible ningún resultado en la representación 105 de la memoria caché 101. Cuando la misma solicitud de base de datos se recibe repetidamente de un cliente 103, y se devuelve de nuevo una notificación de invalidez para esta solicitud de base de datos, se acumula el número de apariciones de esta solicitud. La solicitud de la base de datos, así como la acumulación correspondiente, se almacena, por ejemplo, en otra memoria caché 600. En otras realizaciones de ejemplo, la solicitud de la base de datos con la acumulación correspondiente se almacena en la misma memoria caché 101 que la representación 105. En algunas realizaciones de ejemplo, la acumulación de apariciones de la solicitud de base de datos para la que se devuelve una notificación de invalidez se almacena para todos los clientes 103 en común. En otras realizaciones de ejemplo, la acumulación de notificaciones de invalidez devueltas a la solicitud de base de datos se almacena para cada cliente 103 por separado. Sin embargo, las realizaciones no se limitan a almacenar solicitudes de base de datos y su correspondiente acumulación de notificaciones de invalidez de esta manera.
Por ejemplo, la solicitud de base de datos req 003 en la FIG. 6 ya se recibió en la memoria caché 101 y antes se devolvió una notificación de invalidez para # no válido = 5 veces 601. Ahora, se recibe de nuevo la req 003. La representación 105 de la memoria caché 101 todavía no tiene ningún resultado disponible (N/A). Se devuelve una notificación de invalidez al cliente 103 y la acumulación almacenada 601 de notificaciones de invalidez para la req 003 se incrementa en uno, produciendo la req 003: # no válido = 6.
Un umbral 602 para # no válido se predetermina por un administrador o automáticamente por una función de umbral. Además, el umbral 602 se establece, en algunas realizaciones de ejemplo, para todas las solicitudes de base de
datos almacenadas con su acumulación en común correspondiente. En otras realizaciones de ejemplo, el umbral 602 se establece para cada una de las solicitudes de la base de datos por separado. En otras realizaciones de ejemplo, el umbral 602 se establece para grupos de solicitudes de base de datos. Sin embargo, el establecimiento del umbral no se limita a estos métodos.
Cuando el número de apariciones # no válido para una o más solicitudes de base de datos almacenadas 601 para las cuales se han devuelto notificaciones de invalidez excede el umbral predeterminado 602, se genera un informe y/o una alerta para esas solicitudes y se envía a un optimizador 604. El optimizador 604 por ejemplo, es un administrador que evalúa solicitudes recibidas con frecuencia para las que se devolvió una notificación de invalidez. Sobre la base de la evaluación se realiza una optimización para el sistema de base de datos 100. En otro ejemplo, el administrador evalúa el informe con respecto a los problemas de resolución de problemas del espacio de datos. En otro ejemplo, el optimizador 604 es un agente de software que evalúa el informe y/o que realiza automáticamente ajustes de optimización en el sistema de base de datos 100. La funcionalidad y el tipo de optimizador 604 no están restringidos a estos ejemplos.
Por ejemplo, con respecto a la red de comunicaciones de la FIG. 4 la memoria caché 101 recibe repetidamente una solicitud de base de datos de un cliente 103 para una ruta de comunicación desde el servidor 2 al servidor 6 el 5 de diciembre. La solicitud de la base de datos se recibe repetidamente durante el tiempo en el que las subrutas e, f y g se interrumpen de manera que el servidor 6 no está disponible desde el servidor 2 en el momento de recibir repetidamente la solicitud de la base de datos. Cada vez que se recibe la solicitud de la base de datos, se devuelve una notificación de invalidez al cliente 103 y el número de apariciones de devolución de una notificación de invalidez para esta solicitud de la base de datos se acumula en una memoria caché separada 600. Cuando se recibe la solicitud de la base de datos por cuarta vez y se devuelve una notificación de invalidez al cliente 103, el número de apariciones excede un umbral predeterminado, que se estableció, por ejemplo, en tres. Un informe, que incluye al menos la solicitud de la base de datos y el número de apariciones, se envía como alerta a un agente de software que monitoriza la red de comunicaciones. En respuesta a esta alerta, el agente de software advierte el problema de no disponibilidad del servidor 6 en la red y proporciona acciones de resolución de problemas.
En otro ejemplo, la memoria caché recibe con frecuencia solicitudes de base de datos en rutas que incluyen un servidor 9 como servidor de destino, que actualmente no está disponible en la red de comunicación 200 en la FIG. 2 hasta ahora. El servidor 9 es un destino popular para muchos clientes 103. Dado que el servidor 9 no está conectado a la red de comunicación 200, la memoria caché 101 devuelve notificaciones de invalidez para todas las solicitudes de base de datos, incluido el servidor 9 como destino. Cuando el número de apariciones de notificaciones de invalidez para esas solicitudes de base de datos (que son potencialmente diferentes, pero todas incluyen el servidor 9 como destino), se generan y se envían una o más alertas y/o informes, por ejemplo, a una herramienta de análisis. La herramienta de análisis sobre la evaluación del uno o más informes resume que existe el requisito de que muchos clientes 103 se conectan al servidor 9 para estar disponibles en la red de comunicación. Entonces, la red de comunicación puede optimizarse con respecto a los requisitos de los clientes 103.
Por lo tanto, acumular apariciones de notificaciones de invalidez para solicitudes de base de datos y reportar y/o alertar cuando el número de apariciones excede un umbral predeterminado, permite una optimización y/o resolución de problemas del sistema de base de datos 100 o la configuración del sistema subyacente para la cual se almacenan los resultados en la memoria caché 101. También permite adaptar el sistema de base de datos 100 con respecto a los requisitos (potencialmente cambiantes) de los clientes 103 desde los que se reciben las solicitudes de la base de datos.
En algunas realizaciones, la memoria caché 101 está dispuesta para recuperar uno o más resultados adicionales generados desde el espacio de datos 106 de la base de datos 102 del sistema de base de datos 100, en donde el uno o más resultados adicionales se devuelven además del resultado devuelto por la representación 105 de la memoria caché 101.
En una realización de ejemplo, la memoria caché 101 en respuesta a la recepción de una solicitud de base de datos de un cliente 103, recupera adicionalmente un resultado generado desde el espacio de datos 106 de la base de datos 102 del sistema de base de datos 100 para la solicitud de base de datos recibida. En la realización de ejemplo de utilización de la memoria caché 101 en una aplicación para una red de comunicación 200 de la FIG. 2, se recibe una solicitud de base de datos de un cliente 103 en la memoria caché 101, solicitando una ruta disponible para el par de servidores (1,4). La memoria caché 101 en esta realización de ejemplo almacena un resultado para cualquier par de servidores, si está disponible. Para el par de servidores (1, 4), almacena el par clave-valor < (1, 4), a-b-c >. En respuesta a recibir la solicitud de la base de datos del cliente 103, la memoria caché 101 recupera un resultado adicional "a-e-h-i-d" generado desde el espacio de datos 106 y devuelve ambos pares clave-valor < (1,4), abc > y < (1,4), a-e-h-i-d>.
La ventaja de esta realización de la memoria caché 101, además de evitar la carga de solicitudes de base de datos no válidas, es, por un lado, responder a cualquier solicitud de base de datos válida desde la representación 105 de la memoria caché 101 de una manera eficiente de almacenamiento y, por otro lado, proporcionar resultados alternativos para una solicitud de base de datos cuando se desee, con ello solo se consume tiempo de procesamiento cuando se solicitan resultados alternativos.
En algunas realizaciones, la representación 105 de la memoria caché 101 se actualiza con al menos un resultado recuperado adicionalmente.
En una realización de ejemplo, la memoria caché 101 recupera uno o más resultados adicionales del espacio de datos 106 de la base de datos 102 según el diagrama de flujo mostrado en la FIG. 7. Esto ocurre, por ejemplo, en una situación en la que una solicitud exige más resultados que los almacenados en la memoria caché 101 o una solicitud de seguimiento exige resultados adicionales además del al menos un resultado de la memoria caché 101 en respuesta a una primera solicitud. En respuesta a recibir una solicitud de base de datos 700, la memoria caché 101 busca 701, si un resultado para la solicitud de base de datos está disponible en la representación 105 de la memoria caché 101. Si esto es falso, porque no se almacena ningún resultado o hay un parámetro que indica que el resultado no está disponible para la solicitud actual como, por ejemplo, se explica para el ejemplo de red de la FIG.
2, la memoria caché 101 devuelve una notificación de invalidez 702. Esta ruta general, como se explicó anteriormente, está indicada por flechas discontinuas en la FIG. 7 de 701 a 702 a FIN y de 703 a FIN. Si un resultado está disponible en la representación 105, el resultado se devuelve 703, como en el ejemplo general. En esta realización de ejemplo, la memoria caché 101 evalúa, si la solicitud actual o de seguimiento solicita un resultado suplementario 704 de la base de datos 102 para el resultado ya devuelto, en respuesta a una primera solicitud. Si se exigen uno o más resultados suplementarios, la memoria caché 101 intenta recuperar uno o más resultados suplementarios 704 del espacio de datos 106 de la base de datos 102. La opción para recuperar un resultado suplementario 704 de la base de datos 102 se indica mediante líneas continuas en la FIG. 7.
Existen diferentes posibilidades para recuperar uno o más resultados suplementarios 704 de la base de datos 102. Por ejemplo, además del resultado devuelto 703 de la memoria caché 101, la solicitud actual o solicitud de seguimiento exige todos los resultados disponibles de la base de datos 102, por ejemplo, la memoria caché 101 devuelve el resultado con la mayor probabilidad de seguir estando sin cambios a lo largo del tiempo, pero la fuente de la solicitud decide según sus propios criterios divergentes, cuál es el mejor para su propósito, y el resultado ya devuelto no se ajusta bien a esos criterios individuales, la selección de un mejor resultado se decide según los propios criterios y, con ello, necesita todos los resultados. En otro ejemplo, se exigen uno o más resultados suplementarios más allá del resultado ya devuelto 703 desde la memoria caché. En un tercer ejemplo, se recuperan uno o más resultados suplementarios 704 de la base de datos 102 para verificar la validez de los resultados almacenados en memoria caché. La recuperación de un resultado complementario no se limita a estos ejemplos. Sin embargo, la recuperación de un resultado suplementario de la base de datos 102 exigido por la solicitud actual o de seguimiento incluye la opción para una reconciliación 705 de la memoria caché 101, que mantiene, actualiza o elimina los resultados actuales de la memoria caché 101 y/o sus parámetros, por ejemplo, indicando disponibilidad. Los detalles sobre esta reconciliación 705 de la memoria caché 101 se explican en el curso posterior de la descripción cuando se trata de actualizaciones de la memoria caché.
En la realización de ejemplo de implementación de la memoria caché 101 para la red de comunicación 200 de la FIG. 4, se recibe una solicitud de base de datos de un cliente 103 en la memoria caché 101 el 5 de diciembre, solicitando una ruta disponible para el par de servidores (1, 5). La memoria caché 101 almacena la ruta más válida generada desde la última actualización de la memoria caché 101 como un par clave-valor < (1, 5), a-e-h-i >. Habiendo almacenado este resultado 701, la memoria caché 101 intenta recuperar un resultado adicional 703 generado desde el espacio de datos 106. Se genera un resultado adicional desde el espacio de datos 106. Al procesar la solicitud de la base de datos en la base de datos 102, se genera una nueva ruta "a-b-c-d" dado que el espacio de datos 106 ha cambiado desde la última actualización, y la ruta con la mayor probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo ahora está asociada con la nueva ruta 201, generada adicionalmente desde el espacio de datos 106. Las probabilidades de las rutas "a-e-h-i" y "a-b-c-d" se comparan 706, y dado que la nueva ruta "a-b-c-d" tiene la mayor probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo, el para valor-clave <( 1,5), a-e-h-i> anteriormente almacenado en la memoria caché 101 se reemplaza 608 por el par clavevalor <(1, 5), a-b-c-d> que incluye la nueva ruta como valor. El par clave-valor reemplazado entonces se devuelve 607 al cliente 103.
El efecto técnico de esta realización en contraste con el sistema y los métodos del documento US 2010/0036805 y US2016/0042278A1 es que aún se evita cualquier carga en el sistema de base de datos durante el tiempo de solicitud para solicitudes de base de datos no válidas, dado que las solicitudes de base de datos no válidas aún se responden directamente desde la memoria caché 101 mediante una notificación de invalidez 702. Y por otro lado, para cada solicitud de base de datos válida la memoria caché puede devolver uno o más resultados. Cuando los resultados almacenados en la memoria caché 101 se generan mediante una transformación de datos del espacio de datos 106, una búsqueda de datos en el espacio de datos 106 o una selección de resultados transformados y/o buscados del espacio de datos 106. Sin embargo, las solicitudes de base de datos válidas se prueban y se actualizan parcialmente en respuesta a recibir una solicitud de base de datos en la memoria caché 101. Como consecuencia, se asegura que el resultado devuelto es el resultado más válido en el momento de la solicitud entre todos los resultados generados al procesar la solicitud de base de datos.
Resumiendo las realizaciones de ejemplo mencionadas anteriormente, la memoria caché 101 devuelve resultados de la representación 105 según la configuración de la memoria caché 101. Sin embargo, la configuración de la memoria caché 101 con respecto a la devolución de resultados no se limita a esos ejemplos. Según un ejemplo A en
la FIG. 8 en respuesta a recibir una solicitud de base de datos 800a de un cliente 103, la memoria caché 101 devuelve un resultado 781a si se almacena en la representación 105. De lo contrario, la memoria caché 101 devuelve una notificación de invalidez.
Según un ejemplo B en la FIG. 8a, la representación 105 de la memoria caché 101 almacena más de un resultado generado y una indicación de una probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo. En respuesta a recibir una solicitud de base de datos 800b de un cliente 103, la memoria caché 101 devuelve el resultado 801 b más válido.
Según un ejemplo C, la representación 105 de la memoria caché 101 almacena uno o más resultados para cualquier solicitud de base de datos generada en el procesamiento. En respuesta a recibir una solicitud de base de datos 800c, la memoria caché 101 que almacena un resultado para esta solicitud de base de datos en la representación 105 recupera un resultado adicional 802 generado desde el espacio de datos 106. Los resultados recuperados adicionalmente 803 generados desde el espacio de datos 106 se utilizan opcionalmente para reconciliar el resultado almacenado en la representación 105 de la memoria caché 101 y/o devolver alternativas 801c además del resultado almacenado en la representación 105 al cliente 103. En cualquiera de estos ejemplos, la memoria caché 101 devuelve directamente una notificación de invalidez en respuesta a recibir una solicitud de base de datos, si no se almacena ningún resultado en la memoria caché 101 para la solicitud de base de datos. Con ello, cualquier carga de procesamiento utilizada por solicitudes de base de datos no válidas en el sistema de base de datos 100 se evita en el momento de la solicitud de base de datos independientemente de la forma en que la memoria caché 101 responde a las solicitudes de base de datos válidas.
En algunas realizaciones, la memoria caché 101 almacena dos o más representaciones, en donde cada representación 105 incluye uno o más resultados para cualquier solicitud de base de datos para la cual el espacio de datos 106 de las bases de datos 102, diferente al espacio de datos 106 de las bases de datos 102 de otras representaciones, es capaz de generar un resultado.
En una realización de ejemplo, el sistema de base de datos 100 incluye una pluralidad de bases de datos 102 de diferentes inquilinos. Los inquilinos están utilizando el sistema de base de datos 100 mediante solicitudes de base de datos de sus respectivos clientes 103. En algunas realizaciones de ejemplo, la base de datos solicita a los clientes 103, solicitando resultados procesados en los espacios de datos 102 de sus respectivos inquilinos. En otras realizaciones de ejemplo, la base de datos solicita resultados de los clientes 103 como una combinación de resultados de procesamiento en el espacio de datos 106 de diferentes inquilinos. Por ejemplo, en un entorno en la nube, que incluye una pluralidad de servidores de diferentes proveedores (inquilinos), los clientes 103 desean utilizar recursos de servidores de diferentes proveedores.
En algunas realizaciones, la representación 105 de la memoria caché 101 incluye uno o más resultados predichos para cualquier solicitud de base de datos, prediciendo los resultados generados al procesar cualquier solicitud de base de datos mediante la evaluación de un historial de resultados.
En una realización de ejemplo, a partir del historial de perturbaciones 400 en la red de comunicación 200, se calcula previamente un pronóstico para cada día del mes siguiente. La representación 105 de la memoria caché 101 tiene entonces una granularidad de tiempo que muestra para cada día del mes siguiente los resultados predichos y una probabilidad predicha de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo. A partir del número predicho de perturbaciones, se calcula una probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo, para cada uno de los resultados almacenados para cada día. Una solicitud de base de datos recibida en la memoria caché 101 incluye entonces una fecha para la que se devuelve el resultado solicitado desde la representación 105 de la memoria caché 101.
En algunas realizaciones, la memoria caché 101 se actualiza en base a las probabilidades de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo.
En una realización de ejemplo, el sistema de base de datos 100 se implementa mediante un balanceador de carga de agrupación 900 mostrado en la FIG. 9 que incluye una memoria caché 101 que almacena en la representación 105 para cualquier agrupación de servidores 901 uno o más servidores 902 disponibles para recibir tareas. Para distribuir tareas, la memoria caché 101 recibe una solicitud de base de datos del balanceador de carga 900 solicitando una agrupación de servidores 901 que incluye un servidor 902 al que luego se distribuye una tarea. El balanceador de carga de agrupación 900 almacena para cada agrupación de servidores 901 la utilización 903 de los respectivos servidores 902 incluidos en las respectivas agrupaciones de servidores 901. El balanceador de carga de agrupación 900 distribuye una tarea a una agrupación de servidores 901 y/o a un servidor respectivo 902 en la misma, si la agrupación de servidores 901 incluye un servidor 902 que exhibe una utilización 903 del 50% o menos. La memoria caché 101 se inicializa determinando mediante una máquina de procesamiento 104 en el espacio de datos 106 todos los servidores 902 en las respectivas agrupaciones de servidores 901 que exhiben una utilización 903 del 50% o menos. El procesamiento genera 904 para la agrupación de servidores A los resultados 4 y 5, para la agrupación de servidores B el único resultado 3 y para la agrupación de servidores C los resultados 2, 3 y 4. La
memoria caché 101 almacena solo un servidor para cualquier agrupación de servidores 901 generada en el procesamiento.
Una probabilidad de que un servidor 902 en la respectiva agrupación de servidores 901 esté disponible para recibir tareas distribuidas desde el balanceador de carga de agrupación 900 a lo largo del tiempo es mayor que la probabilidad para otro servidor donde la utilización del servidor es menor que la utilización del otro servidor. Por ejemplo, el servidor 5 de la agrupación de servidores A con una utilización del 35% tiene una mayor probabilidad de estar disponible para recibir una tarea, dado que la carga de trabajo del servidor 5 es menor que el servidor 4 de la agrupación A con una utilización del 45%. El servidor 4 de la agrupación de servidores A está a punto de pasar una utilización del 50% y, con ello, ya no está disponible para recibir tareas en este ejemplo.
La utilización del servidor 5 puede cambiar del 35% al 40% o más. Siempre que no exceda la utilización del servidor 4, la probabilidad de estar disponible para recibir una tarea es aún mayor que la probabilidad de estar disponible para recibir una tarea que para el servidor 4. Con ello, los datos almacenados en el espacio de datos 106 del balanceador de carga de agrupación 900 puede cambiar, pero los resultados generados para la agrupación de servidores A, que son los servidores 4 y 5, siguen estando. Por otro lado, las utilizaciones también pueden disminuir sin cambiar los resultados generados y, con ello, sin influir en la decisión de distribuir una tarea a un servidor 902 respectivo en la agrupación de servidores A. La decisión de distribuir se toma sobre los resultados procesados, por ejemplo, cuando el servidor 4 aumenta la utilización por encima del 50% sin generar un resultado, o cuando el servidor 4 disminuye la utilización por debajo del 35% y, con ello, se le da preferencia por encima del servidor 5, cuando se elige un resultado para almacenar en la memoria caché 101. Por lo tanto, al procesar los resultados en la máquina de cálculo 104, la memoria caché 101 almacena el resultado con la mayor probabilidad de que el resultado generado en el procesamiento sigan estando sin cambios en lugar de almacenar el resultado con la mayor probabilidad de que los datos del espacio de datos 106 el resultado esté relacionado con cambios.
Así, en el ejemplo de la FIG. 9 descrito anteriormente, la memoria caché 101 almacena para el servidor 4 de la agrupación de servidores A con una utilización del 35%, para el servidor 3 de la agrupación de servidores B con una utilización del 30% y para el servidor 2 de la agrupación de servidores C con una utilización del 25%.
La memoria caché 101 recibe una solicitud de base de datos del balanceador de carga de agrupación 900 para proporcionar un servidor 902 de la agrupación de servidores B que está disponible para recibir una tarea. La memoria caché 101 devuelve el servidor 3, dado que este es el servidor con la mayor probabilidad de seguir estando disponible a lo largo del tiempo, con la menor utilización 903. Luego, el balanceador de carga de agrupación 900 distribuye la tarea al servidor 3 en la agrupación de servidores B.
En otro ejemplo, cada grupo de servidores 901 incluye un balanceador de carga propio adicional que controla la distribución de tareas dentro de la respectiva agrupación de servidores 901. El balanceador de carga de agrupación 900 almacena en el espacio de datos 106 la utilización 903 de todos los servidores 902 en las respectivas agrupaciones de servidores 901 Al inicializar la memoria caché 101, la memoria caché 101 almacena para cada agrupación de servidores 901 la utilización 903 de un servidor 902 que tiene la menor utilización 903 entre todos los servidores 902 de la respectiva agrupación de servidores 903. En otro ejemplo, se almacena la media de todas las utilizaciones 903 de los servidores 902 en cada una de las agrupaciones de servidores 901. Con ello, la memoria caché 101 almacena para la agrupación de servidores A una utilización media del 59%, para la agrupación de servidores B una utilización media del 61% y para la agrupación de servidores C una utilización media del 54%.
La memoria caché 101 recibe una solicitud de base de datos del balanceador de carga de agrupación 900 para proporcionar una agrupación de servidores 901 que haya almacenado la menor utilización 903 entre todas las utilizaciones almacenadas para las agrupaciones de servidores 901. La memoria caché 101 devuelve la agrupación de servidores C con una utilización almacenada del 25% o la agrupación de servidores C con una utilización media almacenada del 54%. El balanceador de carga de agrupación 900 luego distribuye la tarea a la agrupación de servidores C, donde el balanceador de carga incluido adicionalmente en la agrupación de servidores C distribuye además la tarea a uno o más de los servidores 902 de la agrupación de servidores C.
En otro ejemplo, la agrupación de servidores C se ve afectada por una avería o ya no está conectada al balanceador de carga de agrupación 900. En respuesta a una avería o una pérdida de conexión, la memoria caché 101 realiza una actualización. Por lo tanto, debido a esta actualización de la memoria caché 101, no se almacena ningún resultado en la memoria caché 101 para la agrupación de servidores C. Alternativamente, el resultado ya almacenado en la representación 105 de la memoria caché 101 para la agrupación de servidores C se actualiza con un parámetro que define una conexión a la agrupación de servidores C no estará disponible hasta nuevo aviso o un período de tiempo respectivo. La memoria caché 101 recibe una solicitud de base de datos del balanceador de carga de agrupación 900 para proporcionar un servidor 902 de la agrupación de servidores C que está disponible para recibir una tarea. Luego, la memoria caché 101 devuelve una notificación de invalidez dado que el balanceador de carga de agrupación 900 no puede distribuir ninguna tarea a la agrupación de servidores C. En un ejemplo donde la memoria caché recibe una solicitud de base de datos del balanceador de carga de agrupación 900 para proporcionar una agrupación de servidores 901 que haya almacenado la menor utilización 903 entre toda la utilización almacenada para las agrupaciones de servidores 901. La memoria caché 101 devuelve la agrupación de servidores A donde se almacena una utilización media del 59% en la memoria caché 101 para la agrupación de
servidores A. O la memoria caché 101 devuelve la agrupación de servidores B donde una utilización del 30% del servidor 902 que tiene la menor utilización en la agrupación de servidores 901 se almacenó en la memoria caché 101.
En esta realización, la actualización de la memoria caché 101 tiene en cuenta los resultados generados que no se relacionan directamente con los datos del espacio de datos 106 de la base de datos 102, sino que se refieren a una agregación de datos en el espacio de datos 106.
Como ya se mencionó, una inicialización y/o actualización de la memoria caché 300 como se muestra en la FIG. 3 es un mecanismo, que en general está separado del mecanismo para responder a las solicitudes 301. Sin embargo, la actualización de la memoria caché puede realizarse de cualquier manera adecuada. Por lo tanto, el mecanismo de actualización no se limita a las realizaciones descritas en la presente memoria.
En algunas realizaciones, actualizar la memoria caché 101 incluye reemplazar un primer resultado de la representación 105 por un segundo resultado para la misma solicitud de base de datos en respuesta a la determinación de que el segundo resultado tiene mayor probabilidad de seguir siendo válido a lo largo del tiempo que el primer resultado.
En algunas realizaciones, la actualización de la memoria caché 101 incluye la sustitución de un valor del resultado. En algunas realizaciones, actualizar la memoria caché 101 incluye eliminar un resultado almacenado de la representación 105 de la memoria caché 101, donde la actualización de la memoria caché 101 produce que un resultado almacenado por la representación de la memoria caché ya no exista en el espacio de datos 106 de las bases de datos 106. En algunas realizaciones, actualizar la memoria caché 101 incluye actualizar uno o parámetros del resultado, por ejemplo definir bajo qué condiciones está disponible el resultado.
En algunas realizaciones de ejemplo, la representación 105 de la memoria caché 101 se actualiza al reconocer que el espacio de datos 106 de la base de datos 102 en el sistema de base de datos 100 ha cambiado. Entonces, los resultados y/o sus parámetros en la representación 105 de la memoria caché 101 que se ven afectados por el cambio son recalculados por la máquina de cálculo 104 en el momento de reconocer el cambio. Al generar más de un resultado para una solicitud de base de datos recalculada, el que tiene la mayor probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo se elige para ser almacenado en la representación 105 de la memoria caché 101 en una actualización. Cuando la memoria caché 101 almacena más de un resultado en la representación 105, de nuevo se eligen los resultados con la mayor probabilidad.
En algunas realizaciones de ejemplo, la memoria caché 101 se actualiza de forma periódica programada. Con ello, cualquier solicitud de base de datos, para la cual los datos en el espacio de datos 106 relacionados con los resultados de las solicitudes de la base de datos han cambiado desde la última actualización programada, se recalculan, para determinar si los resultados generados o sus parámetros también han cambiado. En algunas otras realizaciones de ejemplo, el total de cualquier solicitud de base de datos se recalcula para actualizar toda la representación 105 de la memoria caché 101. Por ejemplo, se introduce un nuevo servidor 9 en la red de comunicación 200 de la FIG. 2. La representación 105 de la memoria caché 101 almacena para cualquier permutación de los servidores 202, a saber, cualquier par de servidores, uno o más resultados generados. Como consecuencia, una actualización desencadenada al agregar un nuevo servidor provoca un recálculo completo de la representación 105 de la memoria caché 101 teniendo en cuenta también todos los nuevos pares de servidores, incluido el servidor 9 recién introducido. Cuando se genera más de un resultado en el recalculo de resultados para cualquier solicitud de base de datos, se eligen uno o más resultados para ser almacenados en la memoria caché 101 en el orden de la mayor probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo.
En otras realizaciones de ejemplo, la representación 105 de la memoria caché 101 se actualiza cuando se solicita la recuperación 704 de uno o más resultados suplementarios de la base de datos 102 como se muestra en la FIG. 7. En general, la memoria caché 101 se actualiza en un mecanismo 300 separado de un mecanismo 301 que responde a las solicitudes. Como ya se mencionó, una solicitud es respondida directa y adecuadamente desde la memoria caché 101 mediante el resultado almacenado 703 o una notificación de invalidez 702 (equivalente a la FIG. 3, 306). Cuando una solicitud o una solicitud de seguimiento exige uno o más resultados suplementarios al resultado devuelto desde la memoria caché 101, existe una opción adicional para una reconciliación 705 de la memoria caché 101 combinando los dos mecanismos 300, 301, en general separados.
Como ya se mencionó, existen diferentes posibilidades para recuperar uno o más resultados suplementarios de la base de datos 102 y con ello, existen diferentes posibilidades para una reconciliación 705 de la memoria caché, dependiendo de los resultados suplementarios recuperados de la base de datos 102. Si la solicitud actual o una solicitud de seguimiento exige además del resultado ya devuelto de la memoria caché 101 todos los resultados que están actualmente disponibles en la base de datos 102 una conciliación de la memoria caché 101 incluye agregar al menos un resultado suplementario recuperado para la solicitud en la memoria caché 101 y con ello o bien ampliar los resultados de la solicitud almacenada en la representación 105 y/o bien reemplazar los resultados de la solicitud almacenada en la representación 105.
Para seleccionar, qué resultados de todos los resultados suplementarios se almacenan para una actualización de la memoria caché 101, la probabilidad de permanecer sin cambios a lo largo del tiempo se compara con los resultados ya almacenados en la memoria caché 101. Cuando la probabilidad de los resultados suplementarios es la misma o es menor que la probabilidad de los resultados ya almacenados en la memoria caché 101, no se realiza ninguna actualización. Cuando la probabilidad de los resultados suplementarios es mayor que los resultados ya almacenados en la memoria caché 101, los resultados almacenados se reemplazan por los resultados suplementarios con esta mayor probabilidad de seguir estando sin cambios a lo largo del tiempo. Si la recuperación de la base de datos 102 indica que actualmente no hay ningún resultado disponible en absoluto para la solicitud, por ejemplo, en la FIG. 2 un servidor se ha eliminado por completo de la red y ya no hay ninguna ruta a este servidor disponible en absoluto, la memoria caché 101 se actualiza eliminando todos los resultados de la solicitud de la memoria caché 101. En algunos otros ejemplos, los resultados y su probabilidad de seguir estando sin cambios a lo largo del tiempo son iguales a los resultados suplementarios recuperados de la base de datos 102, pero los parámetros han cambiado. Luego, se actualizan los parámetros de los resultados. Los resultados suplementarios recuperados, ya sea que se agreguen o no a la memoria caché en 705, se devuelven 703. Como ya se explicó antes, la conciliación de la se eligen caché solo es una opción adicional para recuperar resultados suplementarios de la base de datos, pero no está restringida a ser realizada cuando los resultados suplementarios son exigidos por una solicitud actual o de seguimiento.
En otro ejemplo, la solicitud actual o de seguimiento exige recuperar uno o más resultados suplementarios de la base de datos 102 más allá del uno o más resultados ya almacenados en la representación 105 de la memoria caché 101. Con ello, la memoria caché 101 recupera en cualquier caso un diferente o ningún resultado que el que ya está almacenado en la representación 105. Luego, la probabilidad de seguir estando sin cambios a lo largo del tiempo para el resultado diferente se compara con la probabilidad del resultado ya almacenado en la memoria caché 101. Cuando la probabilidad del resultado suplementario es igual o menor que la probabilidad del resultado que ya está almacenada en la representación 105 de la memoria caché 101, el resultado no se actualiza. De lo contrario, el resultado ya almacenado en la memoria caché 101 que tiene la menor probabilidad de seguir estando sin cambios es reemplazado por el resultado suplementario que tiene una mayor probabilidad de seguir estando sin cambios en una reconciliación de la memoria caché 101. También pueden actualizarse los cambios en los parámetros de un resultado. Si no se recupera ningún resultado suplementario de la base de datos 102, en este ejemplo, esto solo significa que la base de datos no genera resultados adicionales más allá de los resultados ya almacenados en la memoria caché 101. Dado que es indistinguible para la memoria caché 101 si no hay ningún resultado en absoluto para que la solicitud se recupere más de la base de datos 102, o si solo no hay un resultado suplementario, esto significa que tampoco es distinguible para la memoria caché 101 si el resultado ya almacenado puede eliminarse mediante una actualización. Por lo tanto, en este ejemplo, la memoria caché 101 mantiene o reemplaza los resultados almacenados en la memoria caché 101 y/o los parámetros de los resultados, pero no elimina los resultados de la memoria caché 101 en la reconciliación de la memoria caché 101.
En otro ejemplo, la solicitud actual o de seguimiento exige recuperar uno o más resultados suplementarios 704 para verificar la validez del resultado devuelto 703. Esta es, por ejemplo, una opción en situaciones en las que la memoria caché se actualiza periódicamente para desencadenar una actualización intermedia solo con respecto a la solicitud actual. Una reconciliación de la memoria caché 101 utilizando uno o más resultados suplementarios recuperados de la base de datos 102 mantiene entonces el resultado en la memoria caché 101, cuando los resultados suplementarios tienen una probabilidad igual o menor de seguir estando sin cambios. La reconciliación actualiza la memoria caché 101, cuando la probabilidad de los resultados suplementarios es mayor. La reconciliación elimina los resultados almacenados en la memoria caché 101, cuando no se recuperan resultados suplementarios de la base de datos 102. La reconciliación actualiza los parámetros de los resultados que han cambiado mientras tanto.
La actualización de la memoria caché 101 en base a la probabilidad de que los resultados en la representación 105 de la memoria caché 101 sigan siendo válidos a lo largo del tiempo proporciona que, en respuesta a recibir una solicitud de base de datos de un cliente 103, se devuelvan al cliente 103 resultados fiables que sean coherentes con una alta probabilidad con resultados generados desde el espacio de datos 106 de la base de datos 102 en el sistema de base de datos 100. Además, esto minimiza el número de actualizaciones de la memoria caché 101 como ya se explicó antes.
La FIG. 10 es una representación esquemática del componente interno de una máquina de cálculo 104. La máquina de cálculo 104 incluye un conjunto de instrucciones para hacer que la máquina de cálculo 104 realice cualquiera de las metodologías discutidas en la presente memoria cuando se ejecute por la máquina de cálculo 104. La máquina de cálculo 104 incluye uno o más procesadores 1001, una memoria principal 1002 y un dispositivo de interfaz de red 1003 que se comunican entre sí a través de un bus 1004. Opcionalmente, la máquina de cálculo 104 puede incluir además una memoria estática 1005 y una unidad de disco. Se pueden proporcionar una pantalla de video, un dispositivo de entrada alfanumérico y un dispositivo de control del cursor como ejemplos de la interfaz de usuario 1006. El dispositivo de interfaz de red 1003 conecta la máquina de cálculo 104 al menos a los clientes 103 así como a las bases de datos 102 del sistema de base de datos 100.
En realizaciones en las que la máquina de cálculo 104 también aloja la memoria caché 101, la memoria caché 101 puede mantenerse en la memoria principal 101. Un conjunto de instrucciones ejecutables por ordenador (es decir, código de programa de ordenador) que incorpora una o todas las metodologías descritas anteriormente, reside
completamente, o al menos parcialmente, en o sobre un medio legible por máquina, por ejemplo, la memoria principal 1002 (mostrada como procesamiento de solicitudes de base de datos de entidades funcionales 1007 que incluye la funcionalidad para recibir y procesar solicitudes de base de datos, incluida la operación de determinación y la funcionalidad de actualización de caché 1008 y/o el uno o más procesadores 1001 y/o en la memoria estática 1005. Las instrucciones pueden ser transmitidas o recibidas además como una señal propagada a través de Internet a través del dispositivo de interfaz de red 1003. Una operación básica de la máquina de cálculo 104 incluyendo la interfaz de usuario y la comunicación de red están controladas por un sistema operativo que también se encuentra en la memoria principal 1005, el uno o más procesadores 1001 y/o la memoria estática 1005.
En general, las rutinas ejecutadas para implementar las realizaciones de la invención, si se implementan 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 ser referidas en la presente memoria como "código de programa de ordenador" o simplemente "código de programa". El código del 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 son leídas y ejecutadas por uno o más procesadores en un ordenador, hacen que el ordenador realice las operaciones necesarias para ejecutar las 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 escrito en cualquier combinación de uno o más lenguajes de programación.
Se pueden identificar varios códigos de programa descritos en la presente memoria en base a la aplicación dentro de la cual 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 debe limitarse a su 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 formas en que los programas de ordenador pueden organizarse en rutinas, procedimientos, métodos, módulos, objetos y similares, así como las diversas formas en las que la funcionalidad del programa puede asignarse entre varias capas de software que son residente dentro de un ordenador típico (por ejemplo, sistemas operativos, bibliotecas, API, aplicaciones, mini aplicaciones, 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 descrita en la presente memoria.
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 de programa puede distribuirse utilizando 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.
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 memoria de acceso aleatorio (RAM), memoria de solo lectura (ROM), memoria de solo lectura programable y borrable (EPROM), memoria de solo lectura programable y borrable eléctricamente (EEPROM), memoria flash u otra tecnología de memoria de estado sólido, memoria de solo lectura de disco compacto portátil (CD-ROM) u otro almacenamiento óptico, casetes magnéticos, cinta magnética, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que pueda usarse para almacenar la información deseada y que puede ser leído por un ordenador. Un medio de almacenamiento legible por ordenador no debe 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 programa legibles por ordenador se pueden descargar a un ordenador, otro tipo de aparato de procesamiento de datos programable u otro dispositivo desde un medio de almacenamiento legible por ordenador o a un ordenador externo o dispositivo de almacenamiento externo a través de una red.
Las instrucciones de programas legibles por ordenador almacenadas en un medio legible por ordenador pueden usarse para dirigir un ordenador, otros tipos de aparatos de procesamiento de datos programables u otros dispositivos para que funcionen de una manera particular, de manera que las instrucciones almacenadas en el medio legible por ordenador produzcan un artículo de fabricación que incluya instrucciones que implementen las funciones, actos y/o operaciones especificadas en los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques. Las instrucciones de programa de ordenador se pueden proporcionar 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 de uno o más procesadores, hagan que una serie de cálculos se realicen para implementar las funciones, actos y/u operaciones especificadas en los diagramas de flujo y/o diagramas de secuencia.
La terminología utilizada en la presente memoria tiene el propósito de describir realizaciones particulares únicamente y no pretende ser una limitación 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 especificación, especifican la presencia de características, números enteros, pasos, operaciones, elementos y/o componentes declarados, pero no excluyen la presencia o adición de una o más de otras características, números enteros, pasos, 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 o bien en la descripción detallada o bien en las reivindicaciones, se pretende que tales términos sean inclusivos de una manera similar al término "que comprende".
Claims (12)
1. Un método para procesar solicitudes de recuperación de datos para recuperar los resultados de la base de datos de una memoria caché (101) de un sistema de base de datos (100), la memoria caché (101) que almacena una representación (105) de un espacio de datos (106) de al menos una base de datos (102) del sistema de base de datos (100), el espacio de datos (106) que está formado por los datos almacenados por la al menos una base de datos (102), en donde la representación (105) comprende una serie de registros de datos, cada registro de datos que comprende una combinación de clave-valor, en donde la solicitud de recuperación de datos comprende una clave de al menos un registro de datos y el al menos un resultado preprocesado para la solicitud de recuperación de datos comprende al menos un valor del al menos un registro de datos, la representación que es una transformación y/o un subconjunto del espacio de datos para comprender al menos un resultado preprocesado para cualquier solicitud de recuperación de datos definida para la cual el espacio de datos (106) de la al menos una base de datos (102) del sistema de base de datos (100) puede generar un resultado , el método que comprende, en la memoria caché (101):
inicializar la memoria caché (101) que comprende dirigir cualquier solicitud de recuperación de datos definida a la al menos una base de datos (102), almacenar al menos un resultado generado para cualquiera de las solicitudes de recuperación de datos en la representación (105) de la memoria caché (101) como un resultado preprocesado y no almacenar nada en la representación (105) para cualquiera de las solicitudes de recuperación de datos que no generan ningún resultado;
en respuesta a recibir una solicitud de recuperación de datos (305) desde un dispositivo cliente (103), determinar, utilizando la representación almacenada (105), si el espacio de datos (106) de la al menos una base de datos (102) es capaz de generar al menos un resultado para la solicitud de recuperación de datos,
si es afirmativo, devolver al menos un resultado preprocesado de la representación (105) almacenada por la memoria caché (101) para la solicitud de recuperación de datos al dispositivo cliente (103);
de lo contrario, devolver una notificación de invalidez (702) al dispositivo cliente (103) sin hacer referencia a la al menos una base de datos (102).
2. El método según la reivindicación 1, en donde la combinación clave-valor representa una ruta de conexión entre un nodo de origen y un nodo de destino en una red de comunicación (200),
en donde la clave especifica el nodo de origen y el nodo de destino en la red de comunicación (200) y el valor es al menos una ruta desde el nodo de origen al nodo de destino,
en donde el nodo de origen está conectado directamente o a través de al menos un nodo intermedio al nodo de destino.
3. El método según la reivindicación 2, que comprende además:
en respuesta a devolver una notificación de invalidez (702) a la solicitud de recuperación de datos recibida (305), acumular una serie de apariciones de la solicitud de recuperación de datos para las cuales se devuelve una notificación de invalidez; y
optimizar la red de comunicación en respuesta a la determinación de que el número acumulado de apariciones excede un umbral predefinido.
4. El método según una cualquiera de las reivindicaciones 1 a 3, en donde la representación (105) comprende menos resultados preprocesados para la solicitud de recuperación de datos recibidos que el espacio de datos (106) de la al menos una base de datos (102) del sistema de base de datos (100) es capaz de generar para la solicitud de recuperación de datos recibida, los menos resultados preprocesados que forman un subespacio de resultados, en donde el subespacio de resultados se basa en una probabilidad de que los resultados preprocesados en la representación de la memoria caché (101) sigan siendo válidos a lo largo del tiempo, los resultados preprocesados en la representación (105) de la memoria caché (101) que están asociados con un indicador que indica la probabilidad de que sigan siendo válidos a lo largo del tiempo.
5. El método según la reivindicación 4, en donde la representación (105) comprende al menos dos resultados preprocesados para la solicitud de recuperación de datos, en donde devolver el al menos un resultado preprocesado para la solicitud de recuperación de datos desde la representación (105) de la memoria caché (101) comprende devolver al menos uno de los al menos dos resultados preprocesados que tienen el indicador que indica la mayor probabilidad de seguir siendo válido a lo largo del tiempo.
6. Un método según la reivindicación 4 o la reivindicación 5, que comprende además:
actualizar la memoria caché (101) en base a la probabilidad de que los resultados preprocesados en la representación (105) de la memoria caché (101) sigan siendo válidos a lo largo del tiempo dado por el indicador.
7. El método según una cualquiera de las reivindicaciones 1 a 6, que comprende además:
recuperar uno o más resultados adicionales (704) de la al menos una base de datos del sistema de base de datos (100),
devolver uno o más resultados adicionales (704) además del resultado devuelto desde la representación (105) de la memoria caché (101).
8. El método según la reivindicación 7, que actualiza la representación de la memoria caché (101) con uno o más resultados adicionales (704).
9. El método según la reivindicación 6, en donde la actualización de la memoria caché (101) comprende además: reemplazar un primer resultado preprocesado de la representación (105) por un segundo resultado preprocesado para la misma solicitud de recuperación de datos en respuesta a la determinación de que el indicador del segundo resultado preprocesado indica una mayor probabilidad de seguir siendo válido a lo largo del tiempo que el indicador del primer resultado preprocesado.
10. Una memoria caché (101) para procesar solicitudes de recuperación de datos dispuesta para ejecutar el método de cualquiera de las reivindicaciones 1 a 9.
11. Un sistema de base de datos (100) que comprende una memoria caché (101) dispuesta para ejecutar el método de cualquiera de las reivindicaciones 1 a 9.
12. Un programa de ordenador para procesar solicitudes de recuperación de datos utilizando una memoria caché (101) que comprende instrucciones de código almacenadas en un medio de almacenamiento legible por ordenador para ejecutar el método según cualquiera de las reivindicaciones 1 a 9, cuando dicho programa se ejecuta en un ordenador.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR1854120A FR3081238A1 (fr) | 2018-05-17 | 2018-05-17 | Mise en memoire cache de base de donnees |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2882923T3 true ES2882923T3 (es) | 2021-12-03 |
Family
ID=63557567
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19174827T Active ES2882923T3 (es) | 2018-05-17 | 2019-05-16 | Almacenamiento de memoria caché de base de datos |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US11157501B2 (es) |
| EP (1) | EP3570184B1 (es) |
| CN (1) | CN110502534B (es) |
| ES (1) | ES2882923T3 (es) |
| FR (1) | FR3081238A1 (es) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11568314B2 (en) * | 2020-02-11 | 2023-01-31 | Microsoft Technology Licensing, Llc | Data-driven online score caching for machine learning |
| CN111858612B (zh) * | 2020-07-28 | 2023-04-18 | 平安科技(深圳)有限公司 | 基于图数据库的数据加速访问方法、装置及存储介质 |
| US11921717B2 (en) * | 2020-09-14 | 2024-03-05 | Oracle International Corporation | Predicting future quiet periods for materialized views |
| US11803485B2 (en) * | 2021-03-11 | 2023-10-31 | International Business Machines Corporation | Microservice system with global context cache |
| US12602325B2 (en) | 2023-06-15 | 2026-04-14 | Sap Se | Caching strategy determination and injection |
| CN117667964B (zh) * | 2024-01-26 | 2024-06-14 | 阿里云计算有限公司 | 数据处理方法、装置、设备、数据库及计算机程序产品 |
| US20250292015A1 (en) * | 2024-03-15 | 2025-09-18 | Cisco Technology, Inc. | Generative artificial intelligence response caching using prompt processing units |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040052239A1 (en) | 2002-08-29 | 2004-03-18 | Nesbitt David W. | Automated route determination |
| US11048765B1 (en) * | 2008-06-25 | 2021-06-29 | Richard Paiz | Search engine optimizer |
| US20100036805A1 (en) | 2008-08-05 | 2010-02-11 | International Business Machines Corporation | System Maintainable and Reusable I/O Value Caches |
| WO2011160687A1 (en) | 2010-06-23 | 2011-12-29 | Tomtom International B.V. | System and method of optimizing and dynamically updating route information |
| US10430736B2 (en) | 2012-05-25 | 2019-10-01 | Conduent Business Services, Llc | System and method for estimating a dynamic origin-destination matrix |
| CN104662539B (zh) * | 2012-09-27 | 2018-02-23 | 艾玛迪斯简易股份公司 | 存储并检索数据的方法和系统 |
| TWI526968B (zh) * | 2014-02-07 | 2016-03-21 | Data Caching Method with High Transitivity and Correctness | |
| ES2608392T3 (es) | 2014-02-19 | 2017-04-10 | Amadeus S.A.S. | Validez a largo plazo de resultados de solicitud pre-calculados |
| US20160042278A1 (en) * | 2014-08-06 | 2016-02-11 | International Business Machines Corporation | Predictive adjustment of resource refresh in a content delivery network |
| CN106484691B (zh) * | 2015-08-24 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 移动终端的数据存储方法和装置 |
| US10909118B2 (en) * | 2016-02-04 | 2021-02-02 | Salesforce.Com, Inc. | Cache optimization for missing data |
| GB201615748D0 (en) * | 2016-09-15 | 2016-11-02 | Gb Gas Holdings Ltd | System for importing data into a data repository |
-
2018
- 2018-05-17 FR FR1854120A patent/FR3081238A1/fr active Pending
-
2019
- 2019-05-10 US US16/409,318 patent/US11157501B2/en active Active
- 2019-05-16 EP EP19174827.6A patent/EP3570184B1/en active Active
- 2019-05-16 ES ES19174827T patent/ES2882923T3/es active Active
- 2019-05-17 CN CN201910414308.3A patent/CN110502534B/zh active Active
Also Published As
| Publication number | Publication date |
|---|---|
| FR3081238A1 (fr) | 2019-11-22 |
| EP3570184A1 (en) | 2019-11-20 |
| US11157501B2 (en) | 2021-10-26 |
| EP3570184B1 (en) | 2021-04-21 |
| US20190354528A1 (en) | 2019-11-21 |
| CN110502534B (zh) | 2022-07-26 |
| CN110502534A (zh) | 2019-11-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2882923T3 (es) | Almacenamiento de memoria caché de base de datos | |
| US9892210B2 (en) | Partial graph incremental update in a social network | |
| US9971823B2 (en) | Dynamic replica failure detection and healing | |
| US20190102469A1 (en) | Smart priority system for enterprise alerts | |
| US20160335342A1 (en) | Determining and extracting changed data from a data source | |
| ES2991404T3 (es) | Manejo de peticiones de datos | |
| US10891849B1 (en) | System for suppressing false service outage alerts | |
| US20130067025A1 (en) | Target subscription for a notification distribution system | |
| US20110161288A1 (en) | Method and system for data update synchronization by two-phase commit | |
| US11283638B1 (en) | Determining the status of a node based on a distributed system | |
| JP2018503154A (ja) | データベースセキュリティ | |
| US9998865B2 (en) | Method for performing distributed geographic event processing and geographic event processing system | |
| US10477359B2 (en) | Publishing messages based on geographic area | |
| US11099921B2 (en) | Predictive system resource allocation | |
| CN111044062A (zh) | 路径规划、推荐方法和装置 | |
| US11455309B2 (en) | Partition key adjustment based on query workload | |
| Magdy et al. | Mars: Real-time spatio-temporal queries on microblogs | |
| US20140040195A1 (en) | Offline Web Application System | |
| US11108784B2 (en) | Permission aggregator | |
| US11838379B2 (en) | Tailoring notification posting based on device activity status | |
| US10783147B2 (en) | Query result flow control in a network switch | |
| US12088681B2 (en) | Synchronization of notification actions across multiple enrolled devices | |
| Melvin et al. | AWARE: Evaluating PriorityFresh Caching for Offline Emergency Warning Systems | |
| CN118151836A (zh) | 一种缓存数据的写入方法和装置以及读取方法和装置 | |
| WO2025017672A9 (en) | A system and method for processing a query |
