A data aggregation service is configured to minimize the number of service calls made to network services. The data aggregation service might be configured to cache objects returned in response to service calls to network services in a shared data object. A hash of the input values in the service calls to the network services may be utilized to determine whether an object referenced by the cache can be utilized instead of making another service call. The data aggregation service might also be configured to utilize change tracking to determine when calls are to be made to dependent services. The data aggregation service might also be configured to utilize data-specific time to live (“TTL”) values, to allow network services to specify the data they are interested in at a granular level, and/or to perform automated optimization of TTL values. Other optimizations might also be implemented by the data aggregation service.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A computer-implemented method performed by one or more processors, the computer-implemented method comprising: making a first network service call to a network service, the first network service call comprising a first set of input values; receiving a response to the network service call, the response comprising at least one object; storing the at least one object in a shared data object; storing a pointer to the at least one object, a hash of the first set of input values, a time that the first network service call was made, and a time to live (“TTL”) value for the at least one object in a cache; determining whether a second network service call comprising a second set of input values is to be made to the network service by computing a hash of the second set of input values, determining whether the hash of the first set of input values matches the hash of the second set of input values, and determining whether the TTL value has expired based on the time that the first network service call was made and the TTL value; and performing the second network service call if the hash of the first set of input values does not match the hash of the second set of input values or if the TTL value has expired.
2. The computer-implemented method of claim 1 , further comprising: storing a unique transaction identifier (ID) for the first network service call in the cache; storing the unique transaction ID for the first network service call in the shared data object; and performing the second network service call if the unique transaction ID stored in the cache does not match the unique transaction ID stored in the shared data object.
3. The computer-implemented method of claim 1 , wherein the response to the network service call further comprises the TTL value for the at least one object.
4. The computer-implemented method of claim 1 , further comprising: maintaining data indicating whether the shared data object has changed following the first network service call to the network service; and determining whether to perform the second service call based, at least in part, on the data indicating whether the shared data object has changed.
5. The computer-implemented method of claim 1 , wherein the network service is further configured to provide filtering data identifying one or more objects in the shared data object or one more or more fields in one or more objects in the shared data object.
6. The computer-implemented method of claim 5 , further comprising determining whether to perform the second service call based, at least in part, upon a determination as to whether the one or more objects or fields identified in the filtering data have changed following the first network service call to the network service.
7. The computer-implemented method of claim 1 , further comprising optimizing the TTL value based upon cache hit data or cache miss data and a service level agreement value.
8. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by the computer, cause the computer to: maintain a cache storing a pointer to an object in a shared data object, a first hash of a first set of input values provided in a first network service call to a network service that generated the object, and a time to live (TTL) for the object; compute a second hash of a second set of input values associated with a second network service call; determine whether the first hash matches the second hash; determine whether the TTL for the object has elapsed; and perform the second network service call to the network service if the first hash does not match the second hash or if the TTL for the object has not elapsed.
9. The non-transitory computer-readable storage medium of claim 8 , having further computer-executable instructions stored thereupon to: store an identifier (ID) for the first network service call in the cache; store the ID in the shared data object; and perform the second network service call to the network service if the ID stored in the cache does not match the ID stored in the shared data object.
10. The non-transitory computer-readable storage medium of claim 8 , wherein the network service provides the TTL.
11. The non-transitory computer-readable storage medium of claim 8 , having further computer-executable instructions stored thereupon to: maintain data indicating whether the shared data object has changed following the first network service call; and determine whether to perform the second network service call to the network service based, at least in part, on the data indicating whether the shared data object has changed.
12. The non-transitory computer-readable storage medium of claim 8 , wherein the network service is further configured to specify a granularity indicating all or a subset of the one or more objects of the shared data object that are to be provided to the network service with the second network service call.
13. The non-transitory computer-readable storage medium of claim 12 , having further computer-executable instructions stored thereupon to determine whether to perform the second service call based, at least in part, upon a determination as to whether the one or more objects or fields identified in filtering data have changed following the first network service call to the network service.
14. The non-transitory computer-readable storage medium of claim 8 , having further computer-executable instructions stored thereupon to generate cache hit data or cache miss data for use in optimizing the TTL.
15. An apparatus, comprising: at least one processor; and a non-transitory computer-readable storage medium having computer-executable instructions stored thereon which, when executed on the at least one processor, cause the apparatus to maintain a cache storing a pointer to an object in a shared data object and a transformed set of first input values, the first input values provided in a first network service call to a network service that generated the object, compute a transformed set of second input values, the second input values associated with a second network service call, determine whether the transformed set of first input values matches the transformed set of second input values, and perform the second network service call to the network service if the transformed set of first input values does not match the transformed set of second input values.
16. The apparatus of claim 15 , wherein the cache further stores a time to live (TTL) value for the object that is received from the network service, and wherein the second network service call is performed if the TTL for the object has elapsed.
17. The apparatus of claim 15 , wherein a unique identifier (ID) for the first network service call is stored in the cache, wherein the unique ID is stored in the shared data object, and wherein the second network service call is performed if the unique ID stored in the cache does not match the unique ID stored in the shared data object.
18. The apparatus of claim 15 , wherein the non-transitory computer-readable storage medium has further computer-executable instructions stored thereupon to: maintain data indicating whether the shared data object has changed following the first network service call; and determine whether to perform the second network service call to the network service based, at least in part, on the data indicating whether the shared data object has changed.
19. The apparatus of claim 15 , wherein the network service is further configured to provide filtering data identifying one or more objects or one or more fields within the shared data object, and wherein the non-transitory computer-readable storage medium has further computer-executable instructions stored thereupon to determine whether to perform the second service call based, at least in part, upon a determination as to whether the one or more objects or fields identified in the filtering data have changed following the first network service call to the network service.
20. The apparatus of claim 15 , wherein the non-transitory computer-readable storage medium has further computer-executable instructions stored thereupon to generate cache hit data or cache miss data for optimizing a TTL value.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
March 2, 2015
May 16, 2017
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.