# US 10,320,933 B2 · Caching for data store clients

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,320,933 B2
- Document ID: US10320933B2
- Status: Granted
- Kind: B2
- Application number: 16/014,404
- Filed: 2018-06-21
- Published: 2018-10-18
- Granted: 2019-06-11
- Earliest claimed: 2015-12-31
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Arun Iyengar
- Web page: https://patentgrep.com/patent/US10320933B2

## CPC

- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F 12/0813: with a network or matrix configuration
- G06F 16/172: Caching, prefetching or hoarding of files
- G06F 21/602: {Providing cryptographic facilities or services}
- H04L 43/0811: by checking connectivity
- H04L 43/0852: Delays
- H04L 43/16: Threshold monitoring
- H04L 67/565: Conversion or adaptation of application format or content (adding application control or application functional data H04L67/561)
- H04L 67/5651: Reducing the amount or size of exchanged application data
- G06F 2212/154: Networked environment
- G06F 2212/62: Details of cache specific to multiprocessor cache arrangements
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods, systems and computer program products for enhanced storage clients. An interface for using a storage service is provided. The interface for each storage service of a plurality of storage services can be implemented within a storage client. A cache can be integrated within the storage client for reducing a number of accesses to a storage service of the plurality of storage services. A compression method in the storage client can reduce a size of data objects. An encryption method in the storage client can preserve data privacy. An application can select at least one storage service of the plurality of storage services and use the at least one storage service via the storage client.

## Claims

### Claim 1

A computer-implemented method comprising:
providing an interface for using a storage service;
implementing the interface within a storage client, the interface implemented for each of a plurality of storage services;
integrating a cache within the storage client for reducing a number of accesses to a storage service of the plurality of storage services;
associating an object expiration time with at least one object stored in the cache;
keeping the at least one object in the cache after the object expiration time has passed;
selecting, by an application, through the interface via the storage client at least one storage service in the plurality of storage services and using the at least one storage service via the interface within the storage client;
monitoring a latency for data accesses from the storage client to the at least one storage service of the plurality of storage services;
increasing an amount of caching in response to determining based on the monitored latency for data accesses that the latency is increasing; and
decreasing the amount of caching in response to determining based on the monitored latency for data accesses that the latency is decreasing.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising:
the storage client contacting a storage service to determine if the at least one object is current;
in response to determining that the at least one object is current, the storage client updating the expiration time with a new expiration time provided by the storage service; and
in response to determining that the at least one object is not current, updating the cache with a new version of the at least one object provided by the storage service.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, further comprising:
in response to the at least one storage service being unresponsive or responding too slowly, the application using the cache to allow the application to continue without communicating with the at least one storage service.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
providing a compression method in the storage client to reduce a size of data objects.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, further comprising:
varying a frequency of compressing data from a computer program based on assessing costs and benefits of compressing the data.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, further comprising:
storing a data object in the at least one storage service;
for each of a plurality of updates to the data object, storing a delta corresponding to each of the plurality of updates in the at least one storage service, wherein the delta encodes a difference between a new version of the data object and a previous version of the data object; and
storing a complete updated version of the data object in the at least one storage service in response to at least one of: (1) a number of deltas from the previous version of the data object exceeds a first threshold; (2) a total size of deltas from the previous version of the data object exceeds a second threshold; or (3) the client determines that a cost of determining an updated version of the data object by applying deltas to the previous version exceeds a third threshold.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, further comprising:
providing an encryption method in the storage client to preserve data privacy.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the cache further comprises one of an in-process cache or a remote process cache.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, wherein the cache further comprises one of Redis or memcached.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the interface further comprises a key-value interface.

### Claim 11

An information processing system comprising:
a storage client comprising an integrated cache for reducing a number of accesses to a storage service of a plurality of storage services;
a memory; and
a processor communicatively coupled to the memory and to the storage client, wherein the processor, responsive to executing computer instructions, performs operations comprising:
providing an interface for using a storage service via the storage client;
implementing the interface within the storage client, the interface implemented for each of a plurality of storage services;
associating an object expiration time with at least one object stored in the cache;
keeping the at least one object in the cache after the object expiration time has passed;
selecting, by an application, through the interface via the storage client at least one storage service in the plurality of storage services and using the at least one storage service via the interface within the storage client;
monitoring a latency for data accesses from the storage client to the at least one storage service of the plurality of storage services;
increasing an amount of caching in response to determining based on the monitored latency for data accesses that the latency is increasing; and
decreasing the amount of caching in response to determining based on the monitored latency for data accesses that the latency is decreasing.

### Claim 12 (depends on 11)

The information processing system of claim 11, wherein the processor, responsive to executing the computer instructions, performs operations comprising:
the storage client contacting a storage service to determine if the at least one object is current;
in response to determining that the at least one object is current, the storage client updating the expiration time with a new expiration time provided by the storage service; and
in response to determining that the at least one object is not current, updating the cache with a new version of the at least one object provided by the storage service.

### Claim 13 (depends on 11)

The information processing system of claim 11, wherein the processor, responsive to executing the computer instructions, performs operations comprising:
storing a data object in the at least one storage service;
for each of a plurality of updates to the data object, storing a delta corresponding to each of the plurality of updates in the at least one storage service, wherein the delta encodes a difference between a new version of the data object and a previous version of the data object; and
storing a complete updated version of the data object in the at least one storage service in response to at least one of: (1) a number of deltas from the previous version of the data object exceeds a first threshold; (2) a total size of deltas from the previous version of the data object exceeds a second threshold; or (3) the client determines that a cost of determining an updated version of the data object by applying deltas to the previous version exceeds a third threshold.

### Claim 14

A non-transitory computer readable storage medium, comprising computer instructions which, responsive to being executed by a processor cause the processor to perform operations, the processor being in an information processing system comprised of a memory communicatively coupled with the processor, and a storage client comprising an integrated cache for reducing a number of accesses to a storage service of a plurality of storage services, and wherein the processor, responsive to executing the computer instructions, performs operations comprising:
providing an interface for using a storage service via the storage client;
implementing the interface for each of a plurality of storage services;
associating an object expiration time with at least one object stored in the cache;
keeping the at least one object in the cache after the object expiration time has passed;
selecting, by an application, through the interface via the storage client at least one storage service in the plurality of storage services and using the at least one storage service via the interface within the storage client;
monitoring a latency for data accesses from the storage client to the at least one storage service of the plurality of storage services;
increasing an amount of caching in response to determining based on the monitored latency for data accesses that the latency is increasing; and
decreasing the amount of caching in response to determining based on the monitored latency for data accesses that the latency is decreasing.

### Claim 15 (depends on 14)

The computer readable storage medium of claim 14, wherein the processor, responsive to executing the computer instructions, performs operations comprising:
the storage client contacting a storage service to determine if the at least one object is current;
in response to determining that the at least one object is current, the storage client updating the expiration time with a new expiration time provided by the storage service; and
in response to determining that the at least one object is not current, updating the cache with a new version of the at least one object provided by the storage service.

### Claim 16 (depends on 14)

The computer readable storage medium of claim 14, wherein the processor, responsive to executing the computer instructions, performs operations comprising:
providing a compression method in the storage client to reduce a size of data objects; and
varying a frequency of compressing data from a computer program based on assessing costs and benefits of compressing the data.
