Server supporting a consistent client-side cache
First Claim
Patent Images
1. A computer implemented method for a database server to interact with a client supported by a client-side cache, comprising:
- using a computer system which comprises at least one processor to perform a process, the process comprising;
maintaining a series of state identifiers that reflect a state of a database that comprises a first table and a second table on the database server and are updated according to database transaction commits;
determining, at the database server, whether one or more database queries are cacheworthy in a client-side cache based at least in part upon one or more criteria, wherein the one or more database queries are requested by a client for execution on the first table, and the client-side cache resides in memory of and is accessible by a client computing system of the client;
in response to a determination that the one or more database queries are cacheworthy, registering the one or more database queries as one or more registered database queries at the database server with respect to at least the first table;
generating one or more result sets by executing the one or more database queries on the first table, wherein the one or more database queries refer to the first table but not the second table to make at least one first change to the first table on the database server;
transmitting the one or more result sets to the client-side cache on the client computing system based at least in part upon the determination that the one or more database queries are cacheworthy, wherein network roundtrips are eliminated for repeated retrievals of the one or more result sets from servers;
in response to the at least one first change to the first table, executing a trigger that automatically performs one or more additional database transactions that make at least one second change to the second table in the database, wherein the one or more database queries are directly directed to the first table but not the second table;
determining, at the database server, an updated state identifier for the series by changing a current state identifier in the series into the updated state identifier based at least in part on the one or more additional database transactions;
receiving a message or a request from the client computing system, the message or request including a snapshot identification associated with the client;
determining cache invalidation at least by identifying at least one registered database query of the one or more registered database queries and by incorporating information about the at least one registered database query into the cache invalidation based in part or in whole upon comparing the snapshot identification associated with the client against the updated state identifier for the series; and
transmitting the cache invalidation and the updated state identifier in response to the message or the request to the client computing system to update the client-side cache.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, system, and computer program product is disclosed for interacting with a client supported by a client-side cache. Embodiments of a method, a system, and a computer program product are disclosed that retrieve a first snapshot, indicating a state of the database after a last database request by the client, associated with the client, determine any number of invalid cached results for the client based on the first snapshot, and transmit the any number of invalid cached results and a second snapshot, an update for the first snapshot.
-
Citations
36 Claims
-
1. A computer implemented method for a database server to interact with a client supported by a client-side cache, comprising:
-
using a computer system which comprises at least one processor to perform a process, the process comprising; maintaining a series of state identifiers that reflect a state of a database that comprises a first table and a second table on the database server and are updated according to database transaction commits; determining, at the database server, whether one or more database queries are cacheworthy in a client-side cache based at least in part upon one or more criteria, wherein the one or more database queries are requested by a client for execution on the first table, and the client-side cache resides in memory of and is accessible by a client computing system of the client; in response to a determination that the one or more database queries are cacheworthy, registering the one or more database queries as one or more registered database queries at the database server with respect to at least the first table; generating one or more result sets by executing the one or more database queries on the first table, wherein the one or more database queries refer to the first table but not the second table to make at least one first change to the first table on the database server; transmitting the one or more result sets to the client-side cache on the client computing system based at least in part upon the determination that the one or more database queries are cacheworthy, wherein network roundtrips are eliminated for repeated retrievals of the one or more result sets from servers; in response to the at least one first change to the first table, executing a trigger that automatically performs one or more additional database transactions that make at least one second change to the second table in the database, wherein the one or more database queries are directly directed to the first table but not the second table; determining, at the database server, an updated state identifier for the series by changing a current state identifier in the series into the updated state identifier based at least in part on the one or more additional database transactions; receiving a message or a request from the client computing system, the message or request including a snapshot identification associated with the client; determining cache invalidation at least by identifying at least one registered database query of the one or more registered database queries and by incorporating information about the at least one registered database query into the cache invalidation based in part or in whole upon comparing the snapshot identification associated with the client against the updated state identifier for the series; and transmitting the cache invalidation and the updated state identifier in response to the message or the request to the client computing system to update the client-side cache. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computer implemented method for a database interface supporting a client cache, comprising:
-
using a computer system which comprises at least one processor to perform a process, the process comprising; determining, at the database server, whether one or more database queries are cacheworthy in a client-side cache based at least in part upon one or more criteria, wherein the one or more database queries are requested by a client for execution on a first table in a database on a database server, and the client-side cache resides in memory of and is accessible by a client computing system of the client; in response to a determination that the one or more database queries are cacheworthy, registering the one or more database queries as one or more registered database queries at the database server with respect to at least the first table; generating one or more result sets at least by executing the one or more database queries on the first table, wherein the database further comprises a second table, and the one or more database queries refer to the first table but not the second table to make at least one first change to the first table on the database server; maintaining the one or more result sets in the client-side cache at least by transmitting the one or more result sets to the client computing system based at least in part upon the determination that the one or more database queries are cacheworthy, wherein network roundtrips are eliminated for repeated retrievals of the one or more result sets from servers, the one or more database queries are directly directed to the first table but not the second table in the database, the one or more result sets are associated with a first system commit identifier in a series of system commit identifiers, and the series of system commit identifiers reflect a respective state of the database on the database server and are updated by the database server according to database transaction commits; in response to the at least one first change to the first table, executing a trigger that automatically executes one or more additional database transactions that make at least one second change to the second table in the database; determining and transmitting an updated system commit identifier from the database server to the client computing system based at least in part upon execution of the one or more additional database transactions; receiving a message or a request from the client after the execution of the one or more additional database transactions, the message or the request including a snapshot identification associated with the client; determining cache invalidation based at least in part upon the execution of the one or more additional database transactions at least by identifying at least one registered database query of the one or more registered database queries and by incorporating information about the at least one registered database query into the cache invalidation based in part or in whole upon comparing the snapshot identification associated with the client against the updated system commit identifier; and determining at least one result set of the one or more result sets in the client-side cache to be invalid or dirty based at least in part upon the cache invalidation. - View Dependent Claims (16, 17, 18, 19, 20)
-
-
21. A database management system that interacts with a client supported by a client-side cache, comprising:
-
a database server which comprises at least one processor to maintain a series of state identifiers that reflect a state of a database on the database server and are updated according to database transaction commits, the database comprising a first table and a second table; the database server further configured to determine whether one or more database queries are cacheworthy in a client-side cache based at least in part upon one or more criteria, wherein the one or more database queries are requested by a client for execution on the first table, and the client-side cache resides in memory of and is accessible by a client computing system of the client; in response to a determination that the one or more database queries are cacheworthy, the database server further configured to the one or more database queries as one or more registered database queries at the database server with respect to at least the first table; the database server further configured to one or more result sets by executing the one or more database queries on the first table, wherein the one or more database queries refer to the first table but not the second table to make at least one first change to the first table on the database server; the database server comprising the at least one processor further configured to transmit the one or more result sets to the client-side cache on the client computing system based at least in part upon the determination that the one or more database queries are cacheworthy, wherein network roundtrips are eliminated for repeated retrievals of the one or more result sets from servers; in response to the at least one first change to the first table, the database server further configured to execute a trigger that automatically performs one or more additional database transactions that make at least one second change to the second table in the database, wherein the one or more database queries are directly directed to the first table but not the second table; the database server further configured to; determine an updated state identifier for the series by changing a current state identifier in the series into the updated state identifier based at least in part on the one or more additional database transactions at the database transactions; receive a message or a request from the client computing system, the message or the request including a snapshot identification associated with the client, and determine cache invalidation at least by identifying at least one registered database query of the one or more registered database queries and by incorporating information about the at least one registered database query into the cache invalidation based in part or in whole upon comparing the snapshot identification associated with the client against the updated state identifier for the series; and the database server further configured to transmit the cache invalidation and the updated state identifier in response to the message or the request to the client to update the client-side cache.
-
-
22. A computer program product comprising a non-transitory computer readable storage medium having stored thereupon a sequence of instructions which, when executed by a processor, causes the processor to perform a method for a database server to interact with a client supported by a client-side cache, the method comprising:
-
using a computer system which comprises at least one processor that is to perform a process, the process comprising; maintaining a series of state identifiers that reflect a state of a database that comprises a first table and a second table on the database server and are updated according to database transaction commits; determining, at the database server, whether one or more database queries are cacheworthy in a client-side cache based at least in part upon one or more criteria, wherein the one or more database queries are requested by a client for execution on the first table, and the client-side cache resides in memory of and is accessible by a client computing system of the client; in response to a determination that the one or more database queries are cacheworthy, registering the one or more database queries as one or more registered database queries at the database server with respect to at least the first table; generating one or more result sets by executing the one or more database queries on the first table, wherein the one or more database queries refer to the first table but not the second table to make at least one first change to the first table on the database server; transmitting the one or more result sets to the client-side cache on the client computing system based at least in part upon the determination that the one or more database queries are cacheworthy, wherein network roundtrips are eliminated for repeated retrievals of the one or more result sets from servers; in response to the at least one first change to the first table, executing a trigger that automatically performs one or more additional database transactions that make at least one second change to the second table in the database, wherein the one or more database queries are directly directed to the first table but not the second table; determining, at the database server an updated state identifier for the series by changing a current state identifier in the series into the updated state identifier based at least in part on the one or more additional database transactions; receiving a message or a request from the client computing system, the message including a snapshot identification associated with the client; determining cache invalidation at least by identifying at least one registered database query of the one or more registered database queries and by incorporating information about the at least one registered database query into the cache invalidation based in part or in whole upon comparing the snapshot identification associated with the client against the updated state identifier for the series; and transmitting the cache invalidation and the updated state identifier in response to the message or the request to the client computing system to update the client-side cache. - View Dependent Claims (23, 24, 25, 26)
-
-
27. A computer program product comprising a non-transitory computer readable storage medium having stored thereupon a sequence of instructions which, when executed by a processor, causes the processor to perform a method for a database interface supporting a client cache, the method comprising:
-
using a computer system which comprises at least one processor to performs a process, the process comprising; determining, at the database server, whether one or more database queries are cacheworthy in a client-side cache based at least in part upon one or more criteria, wherein the one or more database queries are requested by a client for execution on a first table in a database on a database server, and the client-side cache resides in memory of and is accessible by a client computing system of the client; in response to a determination that the one or more database queries are cacheworthy, registering the one or more database queries as one or more registered database queries at the database server with respect to at least the first table; generating one or more result sets at least by executing the one or more database queries on the first table, wherein the database further comprises a second table, and the one or more database queries refer to the first table but not the second table to make at least one first change to the first table on the database server; maintaining one or more result sets in a client-side cache at least by transmitting the one or more result sets to the client computing system based at least in part upon the determination that the one or more database queries are cacheworthy, wherein network roundtrips are eliminated for repeated retrievals of the one or more result sets from servers, the one or more database queries are directly directed to the first table but not the second table in the database, the one or more result sets are associated with a first system commit identifier in a series of system commit identifiers, and the series of system commit identifiers reflect a respective state of the database on the database server and are updated by the database server according to database transaction commits; in response to the at least one first change to the first table, executing a trigger that automatically executes one or more additional database transactions that make at least one second change to the second table in the database; determining and transmitting an updated system commit identifier from the database server to the client computing system based at least in part upon execution of the one or more additional database transactions; receiving a message or a request from the client, the message or the request including a snapshot identification associated with the client; determining cache invalidation based at least in part upon the execution of the one or more additional database transactions at least by identifying at least one registered database query of the one or more registered database queries and by incorporating information about the at least one registered database query into the cache invalidation based in part or in whole upon comparing the snapshot identification associated with the client against the updated system commit identifier; and determining at least one result set of the one or more result sets in the client cache to be invalid or dirty based at least in part upon the cache invalidation. - View Dependent Claims (28, 29, 30, 31)
-
-
32. A system for a database interface supporting a client cache, comprising:
-
a computer system which comprises at least one processor to; determine, at a database server, whether one or more database queries are cacheworthy in a client-side cache based at least in part upon one or more criteria, wherein the one or more database queries are requested by a client for execution on a first table in a database on a database server, and the client-side cache resides in memory of and is accessible by a client computing system of the client; in response to a determination that the one or more database queries are cacheworthy, register the one or more database queries as one or more registered database queries at the database server with respect to at least the first table; generate one or more result sets at least by executing the one or more database queries on the first table, wherein the database further comprises a second table, and the one or more database queries refer to the first table but not the second table to make at least one first change to the first table on the database server; maintain the one or more result sets in the client-side cache at least by transmitting the one or more result sets to the client computing system based at least in part upon the determination that the one or more database queries are cacheworthy wherein network roundtrips are eliminated for repeated retrievals of the one or more result sets from servers, the one or more database queries are directly directed to the first table but not the second table in the database, the one or more result sets are associated with a first system commit identifier in a series of system commit identifiers, and the series of system commit identifiers reflect a respective state of the database on the database server and are updated by the database server according to database transaction commits; in response to the at least one first change to the first table, execute a trigger that automatically executes one or more additional database transactions that make at least one second change to the second table in the database; determining and transmit an updated system commit identifier from the database server to the client computing system based at least in part upon execution of the one or more additional database transactions; receive a message or a request from the client, the message or the request including a snapshot identification associated with the client; determine cache invalidation based at least in part upon the execution of the one or more additional database transactions at least by identifying at least one registered database query of the one or more registered database queries and by incorporating information about the at least one registered database query into the cache invalidation based in part or in whole upon comparing the snapshot identification associated with the client against the updated system commit identifier; and determine at least one result set of one or more result sets in the client cache to be invalid or dirty based at least in part upon the cache invalidation. - View Dependent Claims (33, 34, 35, 36)
-
Specification