In-memory cache for web application data

US10013501B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10013501-B2
Application numberUS-201514922574-A
CountryUS
Kind codeB2
Filing dateOct 26, 2015
Priority dateOct 26, 2015
Publication dateJul 3, 2018
Grant dateJul 3, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Techniques are disclosed relating to caching web application data. In some embodiments, a computing system maintains a multi-tenant database and an in-memory cache for the database. In some embodiments, the computing system is configured to store data in an entry in response to a store request and retrieve data in response to a read request. In various embodiments, data cached by one tenant is not visible to other tenants. The cache may be partitioned and each partition may have an assigned capacity. The computing system may be configured to evict cached data based on capacity thresholds, least-recently-used information, time-to-live information, amount of data in an entry, etc. The cache may indicate misses when requested data is not present. Various disclosed techniques may improve web application performance while maintaining privacy between tenants.

First claim

Opening claim text (preview).

What is claimed is: 1. A method, comprising: maintaining, by a computing system, a multi-tenant data store that stores data for a plurality of tenants associated with the computing system; maintaining, by the computing system, an in-memory cache for the multi-tenant data store, wherein the in-memory cache includes, for a particular tenant of the plurality of tenants: a session cache configured to store data corresponding to user sessions of users associated with the particular tenant, wherein the data stored by the session cache for ones of the user sessions is not maintained after respective ends of the ones of the user sessions; and an organization cache configured to store data for multiple different user sessions of users associated with the particular tenant; receiving, by the computing system, a store request to store data in an entry of the in-memory cache, wherein the store request includes the data and an identifier for the entry; storing, by the computing system, the data in the entry of the in-memory cache; receiving, by the computing system from a requesting user, a request to access the data, wherein the request specifies the identifier for the entry; in response to the request, retrieving, by the computing system, the data from the entry of the in-memory cache and not from the multi-tenant data store; and providing, by the computing system, the retrieved data to the requesting user. 2. The method of claim 1 , wherein the storing is performed using a field of a shared cache data structure that stores entries for multiple different tenants. 3. The method of claim 1 , wherein the in-memory cache is divided into a plurality of partitions, wherein one or more of the partitions are defined by a first tenant of the plurality of tenants, and wherein each of the partitions has a capacity threshold, the method further comprising: monitoring used capacity of the partitions; and evicting data from a first entry in one of the partitions based on the monitoring. 4. The method of claim 3 , wherein the evicting is further based on at least one of: least-recently-used (LRU) information maintained for the first entry; time-to-live information maintained for the first entry; or a size of data used by the first entry. 5. The method of claim 1 , further comprising: determining a tenant corresponding to the user who initiated the store request; and allowing only users associated with the tenant to access the data stored in the in-memory cache for the tenant. 6. The method of claim 1 , further comprising: receiving, by the computer system from a second requesting user, a second request to access second data, wherein the second request includes a second identifier; determining, by the computer system, that the second data is not stored by the in-memory cache; and transmitting, by the computer system to the second requesting user, a response to the second request that indicates a cache miss. 7. A non-transitory computer-readable medium having instructions stored thereon that are executable by a computing device to perform operations comprising: maintaining a multi-tenant data store that stores data for a plurality of tenants; maintaining an in-memory cache for the multi-tenant data store, wherein the in-memory cache includes, for a particular tenant of the plurality of tenants: a session cache configured to store data corresponding to user sessions of users associated with the particular tenant, wherein the data stored by the session cache for ones of the user sessions is not maintained after respective ends of the ones of the user sessions; and an organization cache configured to store data for multiple different user sessions of users associated with the particular tenant; receiving, from a requesting user, a store request to store data in an entry of the in-memory cache, wherein the store request includes the data and an identifier for the entry; storing the data in the entry of the in-memory cache; receiving a request to access the data, wherein the request specifies the identifier for the entry; in response to the request, retrieving the data from the entry of the in-memory cache and not from the multi-tenant data store; and providing the retrieved data to the requesting user. 8. The non-transitory computer-readable medium of claim 7 , wherein the storing is performed using a cache memory space that includes entries for different tenants of the plurality of tenants. 9. The non-transitory computer-readable medium of claim 7 , wherein the in-memory cache is distributed across multiple servers. 10. The non-transitory computer-readable medium of claim 7 , wherein the in-memory cache is divided into a plurality of partitions, wherein each of the partitions has a capacity threshold, and wherein the operations further comprise: monitoring used capacity of the partitions; and evicting data from a first entry in one of the partitions based on the monitoring and at least one of the capacity thresholds. 11. The non-transitory computer-readable medium of claim 10 , wherein the evicted first entry is selected based on two or more of: least-recently-used (LRU) information maintained for the first entry; time-to-live information maintained for the first entry; or a size of data used by the first entry. 12. The non-transitory computer-readable medium of claim 10 , wherein the operations further comprise: adjusting one of the capacity thresholds for a partition based on a payment from a tenant. 13. The non-transitory computer-readable medium of claim 7 , wherein the operations further comprise: determining that a user who initiated the store request is associated with a first tenant of the plurality of tenants; storing information indicative of the first tenant; and allowing only users associated with the first tenant to access the data stored in the in-memory cache for the first tenant. 14. The non-transitory computer-readable medium of claim 7 , wherein the in-memory cache is maintained by a provider entity that provides an application for use by users associated with one or more of the plurality of tenants, wherein the in-memory cache is used to store data generated by the application by the users associated with one or more of the plurality of tenants.

Assignees

Inventors

Classifications

  • of access to content, e.g. by caching · CPC title

  • Partitioned cache, e.g. separate instruction and operand caches · CPC title

  • for multiprocessing or multitasking · CPC title

  • Partitioned cache · CPC title

  • Multiuser, multiprocessor or multiprocessing cache systems · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10013501B2 cover?
Techniques are disclosed relating to caching web application data. In some embodiments, a computing system maintains a multi-tenant database and an in-memory cache for the database. In some embodiments, the computing system is configured to store data in an entry in response to a store request and retrieve data in response to a read request. In various embodiments, data cached by one tenant is …
Who is the assignee on this patent?
Salesforce Com Inc
What technology area does this patent fall under?
Primary CPC classification G06F16/9574. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 03 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 9 related publications on this page (citations in our corpus or others sharing the same primary CPC).