IP Library Granted Patent US 10,452,649
Granted Patent B2
US 10,452,649 · App. 15/154,996 · Granted Oct 22, 2019

Computer data distribution architecture

Inventors: David R. Kent, IV (Colorado Springs, CO); Ryan Caudy (New York, NY); Charles Wright (Cortlandt Manor, NY); Radu Teodorescu (New York, NY)
Assignee: Deephaven Data Labs LLC
G06F16/242G06F3/0481G06F3/0482G06F3/0483G06F3/0485G06F3/04847G06F3/04895G06F3/0605G06F3/067G06F3/0656G06F8/30G06F8/41G06F8/427G06F8/60G06F11/1451G06F11/1464G06F11/1469G06F12/0261G06F12/084G06F12/1483G06F15/17331G06F16/113G06F16/144G06F16/162G06F16/215G06F16/22G06F16/221G06F16/2228G06F16/2237G06F16/2246G06F16/2255G06F16/2264G06F16/2272G06F16/2282G06F16/23G06F16/2308G06F16/2358G06F16/2365G06F16/2372G06F16/2379G06F16/245G06F16/248G06F16/2428G06F16/2453G06F16/2455G06F16/2456G06F16/2457G06F16/24534G06F16/24535G06F16/24537G06F16/24539G06F16/24553G06F16/24575G06F16/254G06F16/27G06F16/278G06F16/285G06F16/907G06F16/9024G06F16/951G06F16/9535G06F16/9566G06F16/9574G06F17/2235G06F17/24G06F17/245G06F17/246G06F17/276G06F17/2715G06F21/00G06F21/6209H04L12/18H04L51/046H04L51/12H04L61/2069H04L63/101H04L63/102H04L67/1002H04L67/141H04L67/28H04L67/2833H04L67/2842H04L67/34H04L67/42H04L69/16G06F16/2291G06F17/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,452,649
App. No.
15/154,996
Granted
Oct 22, 2019
Kind
B2
Abstract

Described are methods, systems and computer readable media for computer data distribution architecture.

Claims (92)

1. A computer database system with a plurality of memory devices optimized for ordered data and read-dominated workloads, 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:

storing at a first data server computer first data in a first memory device in a first column-oriented configuration;

storing at a second data server computer second data in a second memory device in a second column-oriented configuration;

storing at a third data server computer the third data in a third memory device in a third column-oriented configuration;

executing, at a query server computer, a database query, the query server computer comprising a query server memory device and being coupled to the first, second, and third data server computers, the executing comprising:

providing a table data cache proxy operable to optimize performance of computer data access to the first, second, and third data server computers by:

requesting a latest table state from two or more of the first, second, and third data server computers;

filtering the latest table state to generate a complete, non-duplicative composite table state that includes one of data or metadata from the two or more of the first, second, and third data server computers, wherein the non-duplicative composite table state includes table locations, and wherein the table data cache proxy is operable to filter table locations to be distributed to one or more remote query processors to interleave table locations from the first, second, and third data server computers and distribute subsequent data access across the first, second, and third data server computers; and

providing, from the table data cache proxy a single, non-composite service for table location;

accessing a table comprising first and second columns, one or more first rows, and one or more second rows, wherein a given location for the table is provided by the single, non-composite service;

storing one or more first location identifiers indicating where column data of the first column is stored and one or more second location identifiers indicating where column data of the second column is stored,

the one or more first location identifiers indicating that data of the one or more first rows of the first column is stored in the first memory device of the first data server computer,

the one or more second location identifiers indicating that data of the one or more first rows of the second column is stored in the second memory device of the second data server computer and that data of the one or more second rows of the second column is stored in the third memory device of the third data server computer; and

storing a table index comprising, for each location identifier of the one or more first location identifiers and the one or more second location identifiers, an index identifier indicating a valid portion of the data at the location indicated by the location identifier, wherein the valid portion of the data includes data corresponding to the rows of the table and excludes data not corresponding to the rows of the table, such that data corresponding to a combination of the first or second location identifiers and the index identifier comprises the table,

wherein the first memory device, the second memory device, and the third memory device are all different from each other, and

wherein the first memory device includes shared memory and the second memory device is faster than the third memory device.

2. The system of claim 1 , wherein the executing further comprises:

requesting one or more blocks of data of the first column from the first data server; and

requesting one or more blocks of data of the second column from the second or third data server computers.

3. The system of claim 1 , wherein the executing further comprises:

requesting one or more blocks of data of the second column from the second data server computer; and

requesting one or more blocks of data of the second column from the third data server computers.

4. The system of claim 1 , wherein the executing further comprises:

requesting one or more blocks of data of the one or more first rows from the first or second data server computers; and

requesting one or more blocks of data of the one or more second rows from the third data server computer.

5. The system of claim 1 , wherein the executing further comprises:

requesting one or more blocks of data of the one or more first rows from the first data server computer; and

requesting one or more blocks of data of the one or more first rows from the second data server computer.

6. The system of claim 1 , wherein the first memory device is a transitory memory device and the second memory device is a persistent memory device.

7. The system of claim 1 , wherein the one or more first location identifiers indicate that data of the one or more second rows of the first column is stored in the query server memory device of the query server computer.

8. A method optimized for ordered data and read-dominated workloads of a computer data system with a plurality of memory devices, the method comprising:

storing at a first data server computer first data in a first memory device in a first column-oriented configuration;

storing at a second data server computer second data in a second memory device in a second column-oriented configuration;

storing at a third data server computer the third data in a third memory device in a third column-oriented configuration;

executing, at a query server computer, a database query, the query server computer comprising a query server memory device and being coupled to the first, second, and third data server computers, the executing comprising:

providing a table data cache proxy operable to optimize performance of computer data access to the first, second, and third data server computers by:

requesting a latest table state from two or more of the first, second, and third data server computers;

filtering the latest table state to generate a complete, non-duplicative composite table state that includes one of data or metadata from the two or more of the first, second, and third data server computers, wherein the non-duplicative composite table state includes table locations, and wherein the table data cache proxy is operable to filter table locations to be distributed to one or more remote query processors to interleave table locations from the first, second, and third data server computers and distribute subsequent data access across the first, second, and third data server computers; and

providing, from the table data cache proxy a single, non-composite service for table location;

accessing a table comprising first and second columns, one or more first rows, and one or more second rows, wherein a given location for the table is provided by the single, non-composite service,

storing one or more first location identifiers indicating where column data of the first column is stored and one or more second location identifiers indicating where column data of the second column is stored,

the one or more first location identifiers indicating that data of the one or more first rows of the first column is stored in the first memory device of the first data server computer,

the one or more second location identifiers indicating that data of the one or more first rows of the second column is stored in the second memory of the second data server computer and that data of the one or more second rows of the second column is stored in the third memory of the third data server computer, and

storing a table index comprising, for each location identifier of the one or more first location identifiers and the one or more second location identifiers, an index identifier indicating a valid portion of the data at the location indicated by the location identifier, wherein the valid portion of the data includes data corresponding to the rows of the table and excludes data not corresponding to the rows of the table, such that data corresponding to a combination of the first or second location identifiers and the index identifier comprises the table, and

wherein the first memory device includes shared memory and the second memory device is faster than the third memory device.

9. The method of claim 8 , wherein the executing further comprises:

requesting one or more blocks of data of the first column from the first data server computer; and

requesting one or more blocks of data of the second column from the second or third data server computer.

10. The method of claim 8 , wherein the executing further comprises:

requesting one or more blocks of data of the second column from the second data server computer; and

requesting one or more blocks of data of the second column from the third data server computer.

11. The method of claim 8 , wherein the executing further comprises:

requesting one or more blocks of data of the one or more first rows from the first or second data server computers; and

requesting one or more blocks of data of the one or more second rows from the third data server computer.

12. The method of claim 8 , wherein the executing further comprises:

requesting one or more blocks of data of the one or more first rows from the first data server computer; and

requesting one or more blocks of data of the one or more first rows from the second data server computer.

13. The method of claim 8 , wherein the first memory device is a transitory memory device and the second memory device is a persistent memory device.

14. The method of claim 8 , wherein the first memory device, the second memory device, and the third memory device are all different from each other.

15. The method of claim 8 , wherein the one or more first location identifiers indicate that data of the one or more second rows of the first column is stored in the query server memory device of the query server computer.

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

storing at a first data server first data in a first memory device in a first column-oriented configuration;

storing at a second data server second data in a second memory device in a second column-oriented configuration;

storing at a third data server the third data in a third memory device in a third column-oriented configuration;

executing, at a query server, a database query, the query server comprising a query server memory device and being coupled to the first, second, and third data servers, the executing comprising:

providing a table data cache proxy operable to optimize performance of computer data access to the first, second, and third data server computers by:

requesting a latest table state from two or more of the first, second, and third data server computers;

filtering the latest table state to generate a complete, non-duplicative composite table state that includes one of data or metadata from the two or more of the first, second, and third data server computers, wherein the non-duplicative composite table state includes table locations, and wherein the table data cache proxy is operable to filter table locations to be distributed to one or more remote query processors to interleave table locations from the first, second, and third data server computers and distribute subsequent data access across the first, second, and third data server computers; and

providing, from the table data cache proxy a single, non-composite service for table location;

accessing a table comprising first and second columns, one or more first rows, and one or more second rows, wherein a given location for the table is provided by the single, non-composite service,

storing one or more first location identifiers indicating where column data of the first column is stored and one or more second location identifiers indicating where column data of the second column is stored,

the one or more first location identifiers indicating that data of the one or more first rows of the first column is stored in the first memory device of the first data server,

the one or more second location identifiers indicating that data of the one or more first rows of the second column is stored in the second memory device of the second data server and that data of the one or more second rows of the second column is stored in the third memory device of the third data server, and

storing a table index comprising, for each location identifier of the one or more first location identifiers and the one or more second location identifiers, an index identifier indicating a valid portion of the data at the location indicated by the location identifier, wherein the valid portion of the data includes data corresponding to the rows of the table and excludes data not corresponding to the rows of the table, such that data corresponding to a combination of the first or second location identifiers and the index identifier comprises the table, and

wherein the first memory device includes shared memory and the second memory device is faster than the third memory device.

17. The computer readable medium of claim 16 , wherein the executing further comprises:

requesting one or more blocks of data of the first column from the first data server; and

requesting one or more blocks of data of the second column from the second or third data server.

18. The computer readable medium of claim 16 , wherein the executing further comprises:

requesting one or more blocks of data of the second column from the second data server; and

requesting one or more blocks of data of the second column from the third data server.

19. The computer readable medium of claim 16 , wherein the executing further comprises:

requesting one or more blocks of data of the one or more first rows from the first or second data server; and

requesting one or more blocks of data of the one or more second rows from the third data server.

20. The computer readable medium of claim 16 , wherein the executing further comprises:

requesting one or more blocks of data of the one or more first rows from the first data server; and

requesting one or more blocks of data of the one or more first rows from the second data server.

21. The computer readable medium of claim 16 , wherein the first memory device is a transitory memory device and the second memory device is a persistent memory device.

22. The computer readable medium of claim 16 , wherein the first memory device, the second memory device, and the third memory device are all different from each other.

23. The computer readable medium of claim 15 , wherein the one or more first location identifiers indicating that data of the one or more second rows of the first column is stored in the query server memory device of the query server.

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 20160335317A1 · Nov 17, 2016