IP Library Granted Patent US 10,241,960
Granted Patent B2
US 10,241,960 · App. 15/155,010 · Granted Mar 26, 2019

Historical data replay utilizing a computer system

Inventors: David R. Kent, IV (Colorado Springs, CO); Ryan Caudy (New York, NY); Charles Wright (Cortlandt Manor, NY); Oleg Vydrov (Oakland, CA); Radu Teodorescu (New York, NY)
Assignee: Deephaven Data Labs LLC
G06F16/2358G06F3/0481G06F3/0482G06F3/0483G06F3/0485G06F3/04847G06F3/04895G06F3/0605G06F3/067G06F3/0656G06F8/30G06F8/41G06F8/427G06F8/60G06F11/1451G06F11/1464G06F11/1469G06F12/0261G06F12/084G06F12/1483G06F15/17331G06F16/162G06F16/215G06F16/22G06F16/221G06F16/2228G06F16/2237G06F16/2246G06F16/2264G06F16/2272G06F16/2282G06F16/23G06F16/2365G06F16/2372G06F16/2379G06F16/245G06F16/248G06F16/2428G06F16/2455G06F16/2456G06F16/2457G06F16/24534G06F16/24535G06F16/24537G06F16/24539G06F16/24553G06F16/24575G06F16/254G06F16/27G06F16/278G06F16/285G06F16/907G06F16/9024G06F16/951G06F16/9535G06F16/9566G06F16/9574G06F17/2235G06F17/24G06F17/245G06F17/246G06F17/276G06F17/2715G06F17/30117G06F17/30283G06F17/30303G06F17/30312G06F17/30315G06F17/30321G06F17/30324G06F17/30327G06F17/30333G06F17/30336G06F17/30339G06F17/30345G06F17/30368G06F17/30371G06F17/30374G06F17/30377G06F17/30398G06F17/30424G06F17/30448G06F17/30451G06F17/30454G06F17/30457G06F17/30477G06F17/30483G06F17/30498G06F17/30522G06F17/30528G06F17/30554G06F17/30563G06F17/30584G06F17/30598G06F17/30864G06F17/30867G06F17/30887G06F17/30902G06F17/30958G06F17/30997G06F21/00G06F21/6209H04L12/18H04L51/046H04L51/12H04L61/2069H04L63/101H04L63/102H04L67/1002H04L67/141H04L67/28H04L67/2833H04L67/2842H04L67/34H04L67/42H04L69/16G06F16/2291G06F17/30342G06F17/40G06F2201/805G06F2201/84G06F2212/1052G06F2212/154G06F2212/163G06F2212/60H04L67/2847
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,241,960
App. No.
15/155,010
Granted
Mar 26, 2019
Kind
B2
Abstract

Described are methods, systems and computer readable media for simulated replay of data using a computer system.

Claims (124)

1. A computer system for using a production environment to execute query programs in a simulated mode, the system comprising:

one or more processors;

computer readable storage coupled to the one or more processors, the computer readable storage having stored thereon instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including:

establishing a digital connection between a query processor and a query client device;

receiving real-time data and storing historical data in the production environment;

receiving at the query processor, a first query program with one or more first configuration instructions from the query client device;

the query processor determining from the one or more first configuration instructions from the query client device that a real-time mode is to be used when executing the first query program;

the query processor executing, in the real-time mode, the first query program in the production environment using production system code;

receiving at the query processor, a second query program with one or more second configuration instructions from the query client device;

the query processor parsing the one or more second configuration instructions;

the query processor determining from the one or more second configuration instructions from the query client device that a simulation mode is to be used when executing the second query program;

the query processor extracting a simulation period from the one or more second configuration instructions;

the query processor determining from the one or more second configuration instructions a simulation clock cycle and a clock cycle speed; and

while the system receives new real-time data and stores new historical data in the production environment, the query processor switching modes and executing, in the simulation mode, the second query program in the production environment using the same production system code used to execute the first query program in the real-time mode, the executing the second query program comprising:

preventing the second query program from accessing the new real-time data;

generating an update propagation graph (UPG) based on the second query program, the UPG having a plurality of nodes each corresponding to one of a plurality of data objects referenced by the second query program, the UPG having a structure representing the dependencies between the plurality of data objects in the second query program;

requesting real-time data simulated from the historical data stored in the production environment; and

for each clock cycle for the simulation period:

starting a simulated clock cycle;

determining data changes in the clock cycle;

applying the data changes according to an order determined by the UPG; and

updating dynamic simulated real-time action system dynamic tables.

2. The system of claim 1 , the operations further comprising:

requesting, by the one or more processors, non-action system generated historical data; and

creating, by the one or more processors, anti-look-ahead bias historical filters.

3. The system of claim 2 , the processing further comprising:

applying, by the query processor, the anti-look-ahead bias historical data filters to the requested non-action system generated real-time data simulated from historical data.

4. The system of claim 1 , the operations further comprising:

when a simulated real-time action system does not exist, constructing, by the one or more processors, a simulated real-time action system;

the query processor connecting to the simulated real-time action system; and

generating, by the one or more processor, simulated real-time action system data.

5. The system of claim 1 , wherein the requesting real-time data simulated from historical data includes the query processor sorting the data prior to use by sequence ID or by time stamp for only the current clock cycle.

6. The system of claim 1 , wherein the first query program is different than the second query program.

7. The system of claim 1 , wherein the one or more first configuration instructions are different than the one or more second configuration instructions.

8. The system of claim 1 ,

wherein the real-time data are simulated from historical data by reading a copy of underlying historical data and applying, after the reading, one or more changes to the read copy of underlying historical data; and

wherein the underlying historical data are unchanged by the reading and the applying.

9. The system of claim 1 , wherein the historical data includes data that were never available in a real-time environment.

10. A method for using a computer system in a production environment to execute query programs in a simulated mode, the method comprising:

establishing a digital connection between a query processor and a query client device;

the computer system receiving real-time data and storing historical data in the production environment;

receiving at the query processor, a first query program with one or more first configuration instructions from the query client device;

the query processor determining from the one or more first configuration instructions from the query client device that a real-time mode is to be used when executing the first query program;

the query processor executing, in the real-time mode, the first query program in the production environment using production system code;

receiving at the query processor, a second query program with one or more second configuration instructions from the query client device;

the query processor parsing the one or more second configuration instructions;

the query processor determining from the one or more second configuration instructions from the query client device that a simulation mode is to be used when executing the second query program;

the query processor extracting a simulation period from the one or more second configuration instructions; and

while the system receives new real-time data and stores new historical data in the production environment, the query processor switching modes and executing, in the simulation mode, the second query program in the production environment using the same production system code used to execute the first query program in the real-time mode, the executing the second query program comprising:

preventing the second query program from accessing the new real-time data; and

requesting real-time data simulated from the historical data stored in the production environment.

11. The method of claim 10 , further comprising:

requesting non-action system generated historical data; and

creating anti-look-ahead bias historical filters.

12. The method of claim 11 , further comprising:

applying the anti-look-ahead bias historical data filters to the requested non-action system generated real-time data simulated from historical data.

13. The method of claim 10 , further comprising:

when a simulated real-time action system does not exist, constructing a simulated real-time action system;

the query processor connecting to the simulated real-time action system; and

generating simulated real-time action system data.

14. The method of claim 13 , further comprising replacing the simulated real-time action system with a second simulated real-time action system.

15. The method of claim 10 , further comprising:

the query processor determining from the parsing of the one or more second configuration instructions, a simulation clock cycle and a clock cycle speed;

for each clock cycle for the simulation period, the query processor:

starting a simulated clock cycle;

determining any data changes in the clock cycle;

applying the data changes to an update propagation graph; and

updating dynamic simulated real-time action system dynamic tables.

16. The method of claim 10 , wherein real-time data simulated from historical data includes sorting the data by sequence ID or by time stamp for only the current clock cycle prior to use.

17. The method of claim 10 ,

wherein the real-time data are simulated from historical data by reading a copy of underlying historical data and applying, after the reading, one or more changes to the read copy of underlying historical data; and

wherein the underlying historical data are unchanged by the reading and the applying.

18. The method of claim 10 , wherein the historical data includes data that were never available in a real-time environment.

19. The method of claim 10 , further comprising:

generating an update propagation graph (UPG) based on the second query program, the UPG having a plurality of nodes each corresponding to one of a plurality of data objects referenced by the second query program, the UPG having a structure representing the dependencies between the plurality of data objects in the second query program;

the query processor determining from the parsing of the one or more second configuration instructions a simulation clock cycle and a clock cycle speed; and

for each clock cycle for the simulation period:

starting a simulated clock cycle;

determining data changes in the clock cycle;

applying the data changes according to an order determined by the UPG; and

updating dynamic simulated real-time action system dynamic tables.

20. The method of claim 10 , wherein the first query program is different than the second query program.

21. A nontransitory computer readable medium having stored thereon software instructions that, when executed by one or more processors of a computer system, cause the one or more processors to perform operations including:

establishing a digital connection between a query processor and a query client device;

the computer system receiving real-time data and storing historical data in a production environment;

receiving at the query processor, a first query program with one or more first configuration instructions from the query client device;

the query processor determining from the one or more first configuration instructions from the query client device that a real-time mode is to be used when executing the first query program;

the query processor executing, in the real-time mode, the first query program in the production environment using production system code;

receiving at the query processor, a second query program with one or more second configuration instructions from the query client device;

the query processor parsing the one or more second configuration instructions;

the query processor determining from the one or more second configuration instructions from the query client device that a simulation mode is to be used when executing the second query program;

the query processor extracting a simulation period from the one or more second configuration instructions; and

while the computer system receives new real-time data and stores new historical data in the production environment, the query processor switching modes and executing, in the simulation mode, the second query program in the production environment using the same production system code used to execute the first query program in the real-time mode, the executing the second query program comprising:

preventing the second query program from accessing the new real-time data; and

requesting real-time data simulated from the historical data stored in the production environment.

22. The nontransitory computer readable medium of claim 21 , the operations further comprising:

requesting non-action system generated historical data; and

creating anti-look-ahead bias historical filters.

23. The nontransitory computer readable medium of claim 22 , the operations further comprising:

applying the anti-look-ahead bias historical data filters to the requested non-action system generated real-time data simulated from historical data.

24. The nontransitory computer readable medium of claim 21 , the operations further comprising:

when a simulated real-time action system does not exist, constructing, by the one or more processors, a simulated real-time action system;

the query processor connecting to the simulated real-time action system; and

generating simulated real-time action system data.

25. The nontransitory computer readable medium of claim 21 , the operations further comprising:

the query processor determining from the parsing of the one or more second configuration instructions, a simulation clock cycle and a clock cycle speed;

for each clock cycle for the simulation period, the query processor:

starting a simulated clock cycle;

determining any data changes in the clock cycle;

applying the data changes to an update propagation graph; and

updating dynamic simulated real-time action system dynamic tables.

26. The nontransitory computer readable medium of claim 21 ,

wherein the real-time data are simulated from historical data by reading a copy of underlying historical data and applying, after the reading, one or more changes to the read copy of underlying historical data; and

wherein the underlying historical data are unchanged by the reading and the applying.

27. The nontransitory computer readable medium of claim 21 , wherein the historical data includes data that were never available in a real-time environment.

28. The nontransitory computer readable medium of claim 21 , the operations further including:

generating an update propagation graph (UPG) based on the second query program, the UPG having a plurality of nodes each corresponding to one of a plurality of data objects referenced by the second query program, the UPG having a structure representing the dependencies between the plurality of data objects in the second query program;

the query processor determining from the parsing of the one or more second configuration instructions a simulation clock cycle and a clock cycle speed; and

for each clock cycle for the simulation period:

starting a simulated clock cycle;

determining data changes in the clock cycle;

applying the data changes according to an order determined by the UPG; and

updating dynamic simulated real-time action system dynamic tables.

29. The nontransitory computer readable medium of claim 21 , wherein the first query program is different than the second query program.

Assignments (3)
CHANGE OF NAME Recorded Sep 5, 2018
From: ILLUMON LLC
To: DEEPHAVEN DATA LABS LLC
Reel/Frame 047017/0500 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2017
From: RIES, BRIAN; FERRETTI-SMYTHE, JUAN CRISTIAN; WRIGHT, CHARLES; VYDROV, OLEG; CAUDY, RYAN; KENT, DAVID R., IV; DORFMAN, NATHANIEL J.; TEODORESCU, RADU; ZELDIS, MARK; BRONNIMANN, HERVE; BASRALIAN, RAFFI
To: ILLUMON LLC
Reel/Frame 044557/0029 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2017
From: WALLEYE SOFTWARE, LLC
To: ILLUMON LLC
Reel/Frame 043722/0092 →
Continuity (2)
Provisional Application 62161813 · May 14, 2015
Related Publication 20160335361A1 · Nov 17, 2016