IP Library Granted Patent US 10,191,848
Granted Patent B2
US 10,191,848 · App. 15/913,744 · Granted Jan 29, 2019

System and method for caching time series data

Inventor: Arvind Jayaprakash (Bangalore, IN)
Assignee: InMobi PTE Ltd.
G06F12/0862G06F12/0866G06F2212/465G06F2212/466G06F2212/602G06F2212/6024
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,191,848
App. No.
15/913,744
Granted
Jan 29, 2019
Kind
B2
Abstract

The present invention provides a method and system for caching time series data. A computer system for caching time series data is disclosed. The computer system comprises one or more processors, at least one cache, and a computer readable storage medium. The computer readable storage medium contains instructions that, when executed by the one or more processors, causes the one or more processors to perform a set of steps comprising fetching the time series data from a time series data source, calculating one or more expiry timestamps, grouping the plurality of time series datum in to one or more time data chunks based on the one or more expiry timestamps, and storing a copy of the time series data and the one or more expiry timestamps in the at least one cache.

Claims (80)

1. A computer system for caching time series data, the computer system comprising:

one or more processors;

at least one cache; and

a non-transitory computer readable storage medium,

wherein the non-transitory computer readable storage medium includes instructions that, when executed by the one or more processors, cause the one or more processors to perform a set of steps comprising:

receiving a request for the time series data;

fetching the time series data from a time series data source, wherein the time series data comprises a plurality of time series datum and a fetch timestamp;

calculating one or more expiry timestamps, wherein each expiry timestamp from the one or more expiry timestamps is calculated using a composite function of the fetch timestamp of the time series data and a recording time associated with a time series datum, such that the expiry timestamp is inversely proportional to the recording time associated with the time series datum so that newer time series data expires on or before older time series data, and the expiry time stamp is directly proportional to the fetch timestamp of the time series data;

grouping the plurality of time series datum in to one or more time data chunks based on the one or more expiry timestamps, wherein each time data chunk from the one or more time data chunks comprises a distinct set of time series datum from the time series data;

determining the validity of the one or more time data chunks of the time series data based on the one or more expiry timestamps;

storing a copy of the time series data and the one or more expiry timestamps in the at least one cache;

serving the requests from one of a group consisting of the time series data source and the at least one cache, based on the validity of the one or more time data chunks of the time series data; and

utilizing the one or more expiry timestamps to respond to requests for the time series data.

2. The computer system as claimed in claim 1 , wherein the non-transitory computer readable storage medium includes further instructions that, when executed by the one or more processors, cause the one or more processors to perform a set of steps comprising:

decomposing the request into one or more sub requests based on the one or more time data chunks of the time series data; and

serving the one or more sub requests from one of the group consisting of the time series data source and the at least one cache, based on the validity of the one or more time data chunks of the time series data.

3. The computer system as claimed in claim 2 , wherein the instructions that when executed by the one or more processors are configured to determine the validity of the one or more time data chunks by comparing an associated expiry timestamp with a request timestamp associated with the request.

4. The computer system as claimed in claim 1 , wherein the composite function is a monotonically decreasing function with a predetermined upper limit.

5. The computer system as claimed in claim 1 , wherein the at least one cache is a browser cache.

6. A computer implemented method for caching time series data, the computer implemented method comprising:

receiving a request for the time series data;

fetching, by one or more processors, the time series data from a time series data source, wherein the time series data comprises a plurality of time series datum and a fetch timestamp;

calculating, by the one or more processors, one or more expiry timestamps, wherein each expiry timestamp from the one or more expiry timestamps is calculated using a composite function of the fetch timestamp of the time series data and a recording time associated with a time series datum, such that the expiry timestamp is inversely proportional to the recording time associated with the time series datum so that newer time series data expires on or before older time series data, and the expiry time stamp is directly proportional to the fetch timestamp of the time series data;

grouping, by the one or more processors, the plurality of time series datum in to one or more time data chunks based on the one or more expiry timestamps, wherein each time data chunk from the one or more time data chunks comprises a distinct set of time series datum from the time series data;

determining, by the one or more processors, the validity of the one or more time data chunks of the time series data based on the one or more expiry timestamps;

storing, by the one or more processors, a copy of the time series data and the one or more expiry timestamps in at least one cache;

serving, by the one or more processors, the requests from one of a group consisting of the time series data source and the at least one cache, based on the validity of the one or more time data chunks of the time series data; and

utilizing the one or more expiry timestamps to respond to requests for the time series data.

7. The computer implemented method as claimed in claim 6 , further comprising:

decomposing, by the one or more processors, the request into one or more sub requests based on the one or more time data chunks of the time series data;

serving, by the one or more processors, the one or more sub requests from one of the group consisting of the time series data source and the at least one cache, based on the validity of the one or more time data chunks of the time series data.

8. The computer implemented method as claimed in claim 7 , wherein determining the validity of the one or more time data chunks comprises comparing an associated expiry timestamp with a request timestamp associated with the request.

9. The computer implemented method as claimed in claim 6 , wherein the composite function is a monotonically decreasing function with a predetermined upper limit.

10. A computer implemented method for serving time series data, the computer implemented method comprising:

receiving, by one or more processors, a request for the time series data;

calculating, by the one or more processors, one or more expiry timestamps, wherein each expiry timestamp from the one or more expiry timestamps is calculated using a composite function of current time and a recording time associated with a time series datum, such that the expiry timestamp is inversely proportional to the recording time associated with the time series datum so that newer time series data expires on or before older time series data, and the expiry time stamp is directly proportional to the current time

decomposing, by the one or more processors, the request into one or more sub requests based on the one or more expiry timestamps; and

determining, by the one or more processors, the validity of the one or more time data chunks of the time series data based on the one or more expiry timestamps; and

serving, by the one or more processors, the one or more sub requests from one of a group consisting of the time series data source and the at least one cache, based on the one or more expiry timestamps.

11. The computer implemented method in claim 10 , wherein the instructions that when executed by the one or more processors are configured to determine the validity of the one or more time data chunks by comparing an associated expiry timestamp with a request timestamp associated with the request.

12. The computer implemented method in claim 10 , wherein the composite function is a monotonically decreasing function with a predetermined upper limit.

13. The computer system as claimed in claim 1 , wherein the non-transitory computer readable storage medium includes further instructions wherein, when executed by the one or more processors cause the one or more processors to perform calculating one or more expiry timestamps by:

Texpiry=Fcomposite(Trecord, Tfetch)

Fcomposite (Trecord, Tfetch)={

if (Tfetch−Trecord)<t1, then Texpiry should be Tfetch+t2;

else if t1<=(Tfetch−Trecord)<t3, then Texpiry should be Tfetch+t4;

else if t3 (Tfetch−Trecord)<t5, then Texpiry should be Tfetch+t6; and

else, Texpiry should be Tfetch+t5;

wherein “Texpiry” represents each of the expiry timestamps, “Trecord” represents the recording time associated with the time series datum, “Tfetch” represents the fetch timestamp, and “Fcomposite” represents the composite function, and t1, t2, t3, t4, and t5 represent predetermined times, and t1<t3<t5 and t2<t4<t6.

14. The computer implemented method as claimed in claim 6 , wherein the non-transitory computer readable storage medium includes further instructions wherein, when executed by the one or more processors cause the one or more processors to perform calculating one or more expiry timestamps by:

Texpiry=Fcomposite(Trecord, Tfetch)

Fcomposite (Trecord, Tfetch)=

if (Tfetch−Trecord)<t1, then Texpiry should be Tfetch+t2;

else if t1<=(Tfetch−Trecord)<t3, then Texpiry should be Tfetch+t4;

else if t3<=(Tfetch−Trecord)<t5, then Texpiry should be Tfetch+t6; and

else, Texpiry should be Tfetch+t5;

wherein “Texpiry” represents each of the expiry timestamps, “Trecord” represents the recording time associated with the time series datum, “Tfetch” represents the fetch timestamp, and “Fcomposite” represents the composite function, and t1, t2, t3, t4, and t5 represent predetermined times, and t1<t3<t5 and t2<t4<t6.

15. A non-transitory, computer program product comprising instructions stored therein that, when executed by the one or more processors, cause the one or more processors to perform a set of steps comprising:

receiving a request for the time series data;

fetching the time series data from a time series data source, wherein the time series data comprises a plurality of time series datum and a fetch timestamp;

calculating one or more expiry timestamps, wherein each expiry timestamp from the one or more expiry timestamps is calculated using a composite function of the fetch timestamp of the time series data and a recording time associated with a time series datum, such that the expiry timestamp is inversely proportional to the recording time associated with the time series datum so that newer time series data expires on or before older time series data, and the expiry time stamp is directly proportional to the fetch timestamp of the time series data;

grouping the plurality of time series datum in to one or more time data chunks based on the one or more expiry timestamps, wherein each time data chunk from the one or more time data chunks comprises a distinct set of time series datum from the time series data;

determining the validity of the one or more time data chunks of the time series data based on the one or more expiry timestamps;

storing a copy of the time series data and the one or more expiry timestamps in the at least one cache;

serving the requests from one of a group consisting of the time series data source and the at least one cache, based on the validity of the one or more time data chunks of the time series data; and

utilizing the one or more expiry timestamps to respond to requests for the time series data.

16. The non-transitory, computer program product as claimed in claim 15 , wherein the instructions when executed by the one or more processors, cause the one or more processors to perform a set of steps comprising:

decomposing the request into one or more sub requests based on the one or more time data chunks of the time series data; and

serving the one or more sub requests from one of the group consisting of the time series data source and the at least one cache, based on the validity of the one or more time data chunks of the time series data.

17. The non-transitory, computer program product as claimed in claim 16 , wherein the instructions that when executed by the one or more processors are configured to determine the validity of the one or more time data chunks by comparing an associated expiry timestamp with a request timestamp associated with the request.

18. The non-transitory, computer program product as claimed in claim 15 , wherein the composite function is a monotonically decreasing function with a predetermined upper limit.

19. The non-transitory, computer program product as claimed in claim 15 , wherein the at least one cache is a browser cache.

20. The non-transitory, computer program product as claimed in claim 15 , wherein the instructions when executed by the one or more processors cause the one or more processors to perform calculating one or more expiry timestamps by:

Texpiry=Fcomposite(Trecord, Tfetch)

Fcomposite (Trecord, Tfetch)=

if (Tfetch−Trecord)<t1, then Texpiry should be Tfetch+t2;

else if t1<=(Tfetch−Trecord)<t3, then Texpiry should be Tfetch+t4;

else if t3<=(Tfetch−Trecord)<t5, then Texpiry should be Tfetch+t6; and

else, Texpiry should be Tfetch+t5;

wherein “Texpiry” represents each of the expiry timestamps, “Trecord” represents the recording time associated with the time series datum, “Tfetch” represents the fetch timestamp, and “Fcomposite” represents the composite function, and t1, t2, t3, t4, and t5 represent predetermined times, and t1<t3<t5 and t2<t4<t6.

Assignments (10)
SECURITY INTEREST Recorded Apr 1, 2026
From: INMOBI TECHNOLOGY SERVICES PTE. LTD.
To: MADISON PACIFIC TRUST LIMITED
Reel/Frame 074244/0228 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2026
From: INMOBI PTE LTD.
To: INMOBI TECHNOLOGY SERVICES PTE. LTD.
Reel/Frame 074233/0395 →
RELEASE OF SECURITY INTEREST Recorded Dec 31, 2025
From: MARS GROWTH CAPITAL PRE-UNICORN FUND, L.P.
To: INMOBI PTE LTD.; INMOBI HOLDINGS PTE LTD.
Reel/Frame 073343/0448 →
RELEASE OF SECURITY INTEREST Recorded Dec 31, 2025
From: MARS GROWTH CAPITAL PRE-UNICORN FUND, L.P.
To: INMOBI PTE LTD.; INMOBI HOLDINGS PTE LTD.
Reel/Frame 073343/0481 →
SECURITY INTEREST Recorded Dec 31, 2025
From: INMOBI PTE LTD.
To: MADISON PACIFIC TRUST LIMITED
Reel/Frame 073343/0572 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE PROPERTY TYPE FOR NUMBERS 10725921, 11244354, 11455274, AND 11330398 FROM APPLICATION NUMBERS TO PATENT NUMBERS PREVIOUSLY RECORDED ON REEL 68126 FRAME 833. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Aug 5, 2024
From: INMOBI PTE. LTD.; INMOBI HOLDINGS PTE. LTD.
To: MARS GROWTH CAPITAL PRE-UNICORN FUND, L.P.
Reel/Frame 068309/0178 →
SECURITY INTEREST Recorded Jul 30, 2024
From: INMOBI PTE. LTD.; INMOBI HOLDINGS PTE. LTD.
To: MARS GROWTH CAPITAL PRE-UNICORN FUND, L.P.
Reel/Frame 068126/0833 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL 53147/FRAME 0341 Recorded Jul 30, 2024
From: CRESTLINE DIRECT FINANCE, L.P.
To: INMOBI PTE. LTD.
Reel/Frame 068202/0824 →
SECURITY INTEREST Recorded Jul 8, 2020
From: INMOBI PTE. LTD.
To: CRESTLINE DIRECT FINANCE, L.P., AS COLLATERAL AGENT FOR THE RATABLE BENEFIT OF THE SECURED PARTIES
Reel/Frame 053147/0341 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2018
From: JAYAPRAKASH, ARVIND
To: INMOBI PTE. LTD.
Reel/Frame 045125/0853 →
Priority Claims (1)
IN 896/CHE/2014 · Feb 24, 2014 · national
Continuity (2)
Continuation 14628463 · Feb 23, 2015
Related Publication 20180260327A1 · Sep 13, 2018