# US 2019/0377731 A1 · Computer data distribution architecture

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

- Number: US 2019/0377731 A1
- Document ID: US20190377731A1
- Status: Published application
- Kind: A1
- Application number: 16/547,360
- Filed: 2019-08-21
- Published: 2019-12-12
- Earliest claimed: 2015-05-14
- Assignees: Deephaven Data Labs LLC
- Applicants: Deephaven Data Labs LLC
- Inventors: David R. Kent, IV; Ryan Caudy; Charles Wright; Radu Teodorescu
- Web page: https://patentgrep.com/patent/US20190377731A1

## CPC

- G06F 16/24561: {Intermediate data storage techniques for performance improvement}
- G06F 3/0481: based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F 3/0482: Interaction with lists of selectable items, e.g. menus
- G06F 3/0483: Interaction with page-structured environments, e.g. book metaphor
- G06F 3/04847: Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
- G06F 3/0485: Scrolling or panning
- G06F 3/04895: Guidance during keyboard input operation, e.g. prompting
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 8/30: Creation or generation of source code
- G06F 8/41: Compilation
- G06F 8/427: {Parsing}
- G06F 8/60: Software deployment
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1464: {for networked environments}
- G06F 11/1469: {Backup restoration techniques}
- G06F 12/0261: {using reference counting}
- G06F 12/084: with a shared cache
- G06F 12/1483: {using an access-table, e.g. matrix or list}
- G06F 15/17331: {Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]}
- G06F 16/113: {Details of archiving (lifecycle management in storage systems G06F3/0649; point-in-time backing up or restoration of persistent data G06F11/1446)}
- G06F 16/144: {Query formulation}
- G06F 16/162: {Delete operations (erasing in storage systems G06F3/0652)}
- G06F 16/215: Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
- G06F 16/22: Indexing; Data structures therefor; Storage structures
- G06F 16/221: {Column-oriented storage; Management thereof}
- G06F 16/2228: {Indexing structures}
- G06F 16/2237: {Vectors, bitmaps or matrices}
- G06F 16/2246: {Trees, e.g. B+trees}
- G06F 16/2255: {Hash tables}
- G06F 16/2264: {Multidimensional index structures}
- G06F 16/2272: {Management thereof}
- G06F 16/2282: {Tablespace storage structures; Management thereof}
- G06F 16/23: Updating
- G06F 16/2308: {Concurrency control (transaction processing G06F9/466)}
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 16/2372: {Updates performed during offline database operations}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/242: Query formulation
- G06F 16/2428: {Query predicate definition using graphical user interfaces, including menus and forms (G06F16/2423 takes precedence)}
- G06F 16/245: Query processing
- G06F 16/2453: Query optimisation
- G06F 16/24534: {Query rewriting; Transformation}
- G06F 16/24535: {of sub-queries or views}
- G06F 16/24537: {of operators}
- G06F 16/24539: {using cached or materialised query results}
- G06F 16/2455: Query execution
- G06F 16/24553: {of query operations}
- G06F 16/2456: {Join operations}
- G06F 16/2457: with adaptation to user needs
- G06F 16/24575: {using context}
- G06F 16/248: Presentation of query results
- G06F 16/254: {Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/278: {Data partitioning, e.g. horizontal or vertical partitioning}
- G06F 16/285: {Clustering or classification}
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06F 16/907: Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F 16/951: Indexing; Web crawling techniques
- G06F 16/9535: Search customisation based on user profiles and personalisation
- G06F 16/9538: Presentation of query results
- G06F 16/9566: {URL specific, e.g. using aliases, detecting broken or misspelled links}
- G06F 16/9574: {of access to content, e.g. by caching}
- G06F 21/00: Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F 21/6209: {to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself}
- G06F 40/117: Tagging; Marking up (details of markup languages G06F40/143); Designating a block; Setting of attributes (style sheets, e.g. eXtensible Stylesheet Language Transformation [XSLT], G06F40/154)
- G06F 40/134: Hyperlinking
- G06F 40/166: Editing, e.g. inserting or deleting
- G06F 40/174: Form filling; Merging
- G06F 40/177: of tables; using ruled lines
- G06F 40/18: of spreadsheets (form-filling G06F40/174)
- G06F 40/183: Tabulation, i.e. one-dimensional [1D] positioning
- G06F 40/216: using statistical methods
- G06F 40/274: Converting codes to words; Guess-ahead of partial word inputs
- H04L 12/18: for broadcast or conference {, e.g. multicast}
- H04L 51/046: Interoperability with other network applications or services
- H04L 51/212: using filtering or selective blocking
- H04L 61/5069: for group communication, multicast communication or broadcast communication
- H04L 63/101: {Access control lists [ACL]}
- H04L 63/102: {Entity profiles}
- H04L 67/01: Protocols
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 67/141: Setup of application sessions (admission control or resource allocation in data switching networks H04L47/70)
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 67/56: Provisioning of proxy services (store-and-forward switching systems in data switching networks H04L12/54)
- H04L 67/566: Grouping or aggregating service requests, e.g. for unified processing
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 69/16: Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- G06F 16/2291: {User-Defined Types; Storage management thereof}
- G06F 17/40: Data acquisition and logging (for input to computer G06F3/00)
- G06F 2201/805: Real-time
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F 2212/1052: Security improvement
- G06F 2212/154: Networked environment
- G06F 2212/163: Server or database system
- G06F 2212/60: Details of cache memory
- G06Q 40/04: Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
- H04L 67/5681: Pre-fetching or pre-delivering data based on network characteristics
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR

## Abstract

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

## Claims

### Claim at position 1

1-23. (canceled)

### Claim 24

A computer database system with a plurality of memory devices optimized for ordered data and read-dominated workloads, the computer database 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:
executing, at a query server computer, a database query, the query server computer comprising a query server memory device and being coupled to a plurality of data server computers, the executing comprising:
providing a table data cache proxy operable to optimize performance of computer data access to the plurality of data server computers by:
requesting a latest table state from two or more of the plurality of 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 plurality of 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 plurality of data server computers and distribute subsequent data access across the plurality of 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; 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.

### Claim 25 (depends on 24)

The computer database system of claim 24, wherein the one or more first location identifiers indicate that data of the one or more first rows of the first column is stored in a first memory device of a first data server computer of the plurality of data server computers.

### Claim 26 (depends on 25)

The computer database system of claim 25, wherein the one or more second location identifiers indicate that data of the one or more first rows of the second column is stored in a second memory device of a second data server computer of the plurality of data server computers and that data of the one or more second rows of the second column is stored in a third memory device of a third data server computer of the plurality of data server computers.

### Claim 27 (depends on 24)

The computer database system of claim 24, wherein a 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 location identifiers, the second location identifiers, and an index identifier comprises the table.

### Claim 28 (depends on 26)

The computer database system of claim 26, 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.

### Claim 29 (depends on 24)

The computer database system of claim 24, wherein a first index identifier and a second index identifier indicate a valid portion of the data at a respective location indicated by a corresponding location identifier.

### Claim 30

A method optimized for ordered data and read-dominated workloads of a computer data system with a plurality of memory devices, the method comprising:
executing, at a query server computer, a database query, the query server computer comprising a query server memory device and being coupled to a plurality of data server computers, the executing comprising:
providing a table data cache proxy operable to optimize performance of computer data access to the plurality of data server computers by:
requesting a latest table state from two or more of the plurality of 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 plurality of 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 plurality of data server computers and distribute subsequent data access across the plurality of 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; 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.

### Claim 31 (depends on 30)

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

### Claim 32 (depends on 31)

The method of claim 31, wherein the one or more second location identifiers indicate that data of the one or more first rows of the second column is stored in a second memory device of a second data server computer of the plurality of data server computers and that data of the one or more second rows of the second column is stored in a third memory device of a third data server computer of the plurality of data server computers.

### Claim 33 (depends on 30)

The method of claim 30, wherein a 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 location identifiers, the second location identifiers, and an index identifier comprises the table.

### Claim 34 (depends on 32)

The method of claim 32, 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.

### Claim 35 (depends on 30)

The method of claim 30, wherein a first index identifier and a second index identifier indicate a valid portion of the data at a respective location indicated by a corresponding location identifier.

### Claim 36

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:
executing, at a query server computer, a database query, the query server computer comprising a query server memory device and being coupled to a plurality of data server computers, the executing comprising:
providing a table data cache proxy operable to optimize performance of computer data access to the plurality of data server computers by:
requesting a latest table state from two or more of the plurality of 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 plurality of 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; 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.

### Claim 37 (depends on 36)

The nontransitory computer readable medium of claim 36, wherein the one or more first location identifiers indicate that data of the one or more first rows of the first column is stored in a first memory device of a first data server computer.

### Claim 38 (depends on 37)

The nontransitory computer readable medium of claim 37, wherein the one or more second location identifiers indicate that data of the one or more first rows of the second column is stored in a second memory device of a second data server computer of the plurality of data server computers and that data of the one or more second rows of the second column is stored in a third memory device of a third data server computer of the plurality of data server computers.

### Claim 39 (depends on 38)

The nontransitory computer readable medium of claim 38, 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 or the second data server computer; and
requesting one or more blocks of data of the one or more second rows from the third data server computer.

### Claim 40 (depends on 36)

The nontransitory computer readable medium of claim 36, 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 plurality of data server computers and distribute subsequent data access across the plurality of data server computers.

### Claim 41 (depends on 38)

The nontransitory computer readable medium of claim 38, wherein first data is stored in the first data server computer in a first memory device in a first column-oriented configuration, wherein second data is stored in the second data server computer in a second memory device in a second column-oriented configuration, and wherein third data is stored in the third data server computer in a third memory device in a third column-oriented configuration.

### Claim 42 (depends on 41)

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

### Claim 43 (depends on 38)

The nontransitory computer readable medium of claim 38, wherein a first index identifier and a second index identifier indicate a valid portion of the data at a respective location indicated by a corresponding location identifier.
