# US 2018/0322162 A1 · Query dispatch and execution architecture

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

- Number: US 2018/0322162 A1
- Document ID: US20180322162A1
- Status: Published application
- Kind: A1
- Application number: 16/036,187
- Filed: 2018-07-16
- Published: 2018-11-08
- Earliest claimed: 2015-05-14
- Assignees: Illumon LLC
- Applicants: Illumon LLC
- Inventors: David R. Kent, IV; Ryan Caudy; Charles Wright; Nathaniel J. Dorfman; Radu Teodorescu
- Web page: https://patentgrep.com/patent/US20180322162A1

## 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 providing a query dispatch and execution architecture.

## Claims

### Claim at position 1

1-20. (canceled)

### Claim 21

A computer data system having a query dispatch and execution architecture, 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:
sending a request for a remote query processor from a client computer to a remote query dispatcher executing on a query server computer, wherein the request includes parameters for configuring the remote query processor or an operating environment for the remote query processor;
attempting, at the remote query dispatcher, to allocate an operating environment for the remote query processor and to start execution of the remote query processor on the query server computer;
when the remote query processor is started, performing operations including:
providing zero or more client classes to the remote query processor;
registering the remote query processor with the remote query dispatcher;
providing the client computer with an address assignment of the remote query processor or of a proxy machine;
connecting from the client computer to the remote query processor;
transmitting a database query from the client computer to the remote query processor, the database query referencing a table in a database; and
receiving at the client computer a response to the database query from the remote query processor;
receiving, at the remote query dispatcher, a second request for a second remote query processor, wherein the second request includes second parameters for configuring the second remote query processor and an operating environment for the second remote query processor, the second parameters including one or more override classes or one or more alternative classpaths;
attempting, at the remote query dispatcher, to allocate a second operating environment for the second remote query processor and to start execution of the second remote query processor on the query server computer, the remote query dispatcher specifying the one or more override classes or the one or more alternative classpaths to be used when starting the second remote query processor such that the second remote query processor runs a different code version than that run by the remote query processor.

### Claim 22 (depends on 21)

The system of claim 21, wherein the client is another remote query processor.

### Claim 23 (depends on 21)

The system of claim 21, wherein the zero or more client classes comprise one or more client classes, and the one or more client classes contain Java bytecode and the remote query processor includes a Java Virtual Machine instance.

### Claim 24 (depends on 21)

The system of claim 21, wherein the operations further include:
determining whether the remote query dispatcher rejects the request for a remote query processor from the client; and
when the remote query dispatcher rejects the request, providing an indication of the rejection to the client.

### Claim 25 (depends on 21)

The system of claim 21, wherein the operations further include:
determining whether the attempting to start a remote query processor was successful; and
when the attempting was not successful, repeating the attempting a limited number of times.

### Claim 26 (depends on 21)

The system of claim 21, wherein the operations further include periodically providing a liveness indication from the remote query processor to the remote query dispatcher.

### Claim 27

A method for improving performance of a computer data system through control of a query dispatch and execution architecture, the method comprising:
sending a request for a remote query processor from a client computer to a remote query dispatcher executing on a query server computer, wherein the request includes parameters for configuring the remote query processor;
attempting, at the remote query dispatcher, to allocate an operating environment for the remote query processor and to start execution of the remote query processor on the query server computer;
when the remote query processor is started, performing operations including:
providing zero or more client classes to the remote query processor;
transmitting a database query to the remote query processor, the database query referencing a table in a database; and
receiving a response to the database query from the remote query processor;
receiving, at the remote query dispatcher, a second request for a second remote query processor, wherein the second request includes second parameters for configuring the second remote query processor, the second parameters including one or more override classes or one or more alternative classpaths; and
attempting, at the remote query dispatcher, to allocate a second operating environment for the second remote query processor, the remote query dispatcher specifying the one or more override classes or one or more override classes to be used when starting the second remote query processor.

### Claim 28 (depends on 27)

The method of claim 27 wherein the transmitting and receiving are repeated.

### Claim 29 (depends on 27)

The method of claim 27, wherein the zero or more client classes comprise one or more client classes, and the one or more client classes contain bytecode and the remote query processor includes a virtual machine instance.

### Claim 30 (depends on 27)

The method of claim 27, further comprising:
determining whether the remote query dispatcher rejects the request for a remote query processor from the client; and
when the remote query dispatcher rejects the request, providing an indication of the rejection to the client.

### Claim 31 (depends on 27)

The method of claim 27, further comprising:
determining whether attempting to start a remote query processor was successful; and
when the attempting was not successful, repeating the attempting a limited number of times.

### Claim 32 (depends on 27)

The method of claim 27, further comprising periodically providing a liveness indication from the remote query processor to the remote query dispatcher.

### Claim 33

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:
attempting, at a remote query dispatcher, to allocate an operating environment for a remote query processor and to start execution of a remote query processor on a query server computer;
when the remote query processor is started, performing operations including:
providing zero or more client classes to the remote query processor;
transmitting a database query to the remote query processor, the database query referencing a table in a database; and
receiving a response to the database query from the remote query processor;
receiving, at the remote query dispatcher, a second request for a second remote query processor, wherein the second request includes one or more override classes or one or more alternative classpaths; and
attempting, at the remote query dispatcher, to allocate a second operating environment for the second remote query processor, the remote query dispatcher specifying the one or more override classes or one or more override classes to be used when starting the second remote query processor such that the second remote query processor runs a different code version than that run by the remote query processor.

### Claim 34 (depends on 33)

The nontransitory computer readable medium of claim 33, wherein the transmitting and receiving are repeated.

### Claim 35 (depends on 33)

The nontransitory computer readable medium of claim 33, wherein the zero or more client classes comprise one or more client classes, and the one or more client classes contain bytecode and the remote query processor includes a virtual machine instance.

### Claim 36 (depends on 33)

The nontransitory computer readable medium of claim 33, wherein the operations further include:
determining whether the remote query dispatcher rejects the request for a remote query processor from the client; and
when the remote query dispatcher rejects the request, providing an indication of the rejection to the client.

### Claim 37 (depends on 33)

The nontransitory computer readable medium of claim 33, wherein the operations further include:
determining whether attempting to start a remote query processor was successful; and
when the attempting was not successful, repeating the attempting a limited number of times.

### Claim 38 (depends on 33)

The nontransitory computer readable medium of claim 33, wherein the operations further include periodically providing a liveness indication from the remote query processor to the remote query dispatcher.

### Claim 39 (depends on 21)

The system of claim 21, wherein each remote query dispatcher and remote query processor monitors a liveness indication from each other connected component.

### Claim 40 (depends on 27)

The method of claim 27, wherein each remote query dispatcher and remote query processor monitors a liveness indication from each other connected component.

### Claim 41 (depends on 21)

The system of claim 21, wherein the request parameters include a maximum amount of memory of the query server computer to be used by the remote query processor.

### Claim 42 (depends on 27)

The method of claim 27, wherein the request parameters include a maximum amount of memory of the query server computer to be used by the remote query processor.

### Claim 43 (depends on 27)

The method of claim 27, wherein the request parameters include an environment variable to be set on the remote query processor.

### Claim 44 (depends on 33)

The nontransitory computer readable medium of claim 33, wherein the request parameters include an environment variable to be set on the remote query processor.
