# US 11,113,043 B2 · Split front end for flexible back end cluster processing

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

- Number: US 11,113,043 B2
- Document ID: US11113043B2
- Status: Granted
- Kind: B2
- Application number: 16/864,074
- Filed: 2020-04-30
- Published: 2020-09-24
- Granted: 2021-09-07
- Earliest claimed: 2018-08-31
- Assignees: Databricks, Inc.
- Applicants: Databricks Inc.
- Inventors: Srinath Shankar; Eric Keng-Hao Liang; Gregory George Owen
- Web page: https://patentgrep.com/patent/US11113043B2

## CPC

- G06F 8/20: Software design
- G06F 8/47: {Retargetable compilers}
- G06F 8/427: {Parsing}
- G06F 8/54: Link editing before load time
- G06F 8/70: Software maintenance or management
- G06F 11/0706: {the processing taking place on a specific hardware platform or in a specific software environment}
- G06F 11/0757: {by exceeding a time limit, i.e. time-out, e.g. watchdogs}
- G06F 11/3698: Environments for analysis, debugging or testing of software
- G06F 16/23: Updating
- G06F 16/907: Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F 21/62: Protecting access to data via a platform, e.g. using keys or access control rules
- G06F 11/1482: using middleware or operating system [OS] functionalities
- G06F 11/1497: Time redundant execution of software on a single processing unit
- G06F 2201/865: Monitoring of software
- G06F 2221/2141: Access rights, e.g. capability lists, access control lists, access tables, access matrices
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system for code development and execution includes a client interface and a client processor. The client interface is configured to receive user code for execution and receive an indication of a server that will perform the execution. The client processor is configured to parse the user code to identify one or more data items referred to during the execution. The client processor is also configured to provide the server with an inquiry for metadata regarding the one or more data items, receive the metadata regarding the one or more data items, determine a logical plan based at least in part on the metadata regarding the one or more data items; and provide the logical plan to the server for execution.

## Claims

### Claim 1

A system for code development and execution, comprising:
a client interface adapted to:
receive user code to be executed; and
receive an indication of a server that will perform the execution; and
a client processor adapted to:
parse the user code to determine one or more data items referred to during the execution;
provide the server with an inquiry for metadata regarding the one or more data items;
receive the metadata regarding the one or more data items;
determine a logical plan based at least in part on the metadata regarding the one or more data items;
provide the logical plan to the server to be executed;
receive a second server indication of a second server that will perform a second execution;
receive an error message, a general message, or a status message, wherein the error message comprises a server unavailable message or a version compatibility error message; and
in response to a server unavailable error message:
indicate server unavailability to a user, automatically switch to a different server; and
prompt for a manual switch to the different server.

### Claim 2 (depends on 1)

The system of claim 1, wherein parsing the user code is used to determine a preliminary logical plan and wherein the logical plan is also based at least in part on the preliminary logical plan.

### Claim 3 (depends on 1)

The system of claim 1, wherein the logical plan is updated by the server prior to execution on the server.

### Claim 4 (depends on 1)

The system of claim 1, wherein the logical plan is compiled prior to being provided to the server to be executed.

### Claim 5 (depends on 1)

The system of claim 1, wherein the client processor is additionally adapted to receive execution results from the server.

### Claim 6 (depends on 1)

The system of claim 1, wherein the client processor is additionally adapted to monitor execution of the logical plan on the server.

### Claim 7 (depends on 6)

The system of claim 6, wherein monitoring execution of the logical plan comprises: requesting intermediate execution results, receiving intermediate execution results, requesting execution metadata, receiving execution metadata, receiving server load, and/or receiving timeout metadata or execution time metadata.

### Claim 8 (depends on 6)

The system of claim 6, wherein the client processor is additionally adapted to store intermediate execution results or execution metadata on a client storage device or other accessible storage device.

### Claim 9 (depends on 1)

The system of claim 1, wherein the client processor is additionally adapted to provide user defined functions to the server.

### Claim 10 (depends on 1)

The system of claim 1, wherein the client processor is additionally adapted to provide library information for executing the logical plan to the server.

### Claim 11 (depends on 1)

The system of claim 1, wherein the client processor is additionally adapted to, in response to a version compatibility error message:
determine whether the logical plan can be executed; and
in response to a determination that the logical plan cannot be executed, indicate the logical plan is not compatible with a server version; and indicate to update the server.

### Claim 12 (depends on 1)

The system of claim 1, wherein the client process is additionally adapted to check security, wherein security comprises a user permission to access a client, a user permission to execute on the server, a user permission to access table metadata via a server query, or a user permission to access a server data item.

### Claim 13 (depends on 12)

The system of claim 12, wherein the second execution executes the logical plan anew.

### Claim 14 (depends on 12)

The system of claim 12, wherein the second execution executes the logical plan based at least in part on intermediate execution results.

### Claim 15 (depends on 1)

The system of claim 1, wherein metadata comprises one or more of file metadata, table metadata, directory metadata, or configuration information.

### Claim 16 (depends on 15)

The system of claim 15, wherein the directory metadata comprises files in a directory, sizes of files in a directory, date created, directory name, user who created file or who owns file, and/or permission information.

### Claim 17 (depends on 15)

The system of claim 15, wherein file metadata comprises file size, file owner, file creation date, file permissions, file name, and/or file deletion information.

### Claim 18 (depends on 15)

The system of claim 15, wherein table metadata comprises table schema, a table column, a table column label, a table column type, a table row, a table row label, a table create time, partition columns, permission information, table statistics, and/or column statistics.

### Claim 19 (depends on 15)

The system of claim 15, wherein the configuration information comprises configuration settings on how to process data, configuration of case sensitivity of table, configuration for resolving data, and/or configuration for ordering of joins.

### Claim 20 (depends on 1)

The system of claim 1, wherein the client processor is additionally adapted to provide metadata transformation operations to the server, wherein metadata transformation operations comprise adding columns to a table, deleting columns from the table, adding a file, deleting the file, performing a statistics collection operation, and/or updating metadata.

### Claim 21 (depends on 1)

The system of claim 1, wherein the inquiry for metadata regarding the one or more data items comprises an inquiry for all available metadata.

### Claim 22

A method for code development and execution, comprising:
receiving user code to be executed;
receiving an indication of a server that will perform the execution;
parsing, using a processor, the user code to one or more data items referred to during the execution;
providing the server with an inquiry for metadata regarding the one or more data items;
receiving the metadata regarding the one or more data items;
determining a logical plan based at least in part on the metadata regarding the one or more data items;
providing the logical plan to the server to be executed;
receiving a second server indication of a second server that will perform a second execution;
receiving an error message, a general message, or a status message, wherein the error message comprises a server unavailable message or a version compatibility error message; and
in response to a server unavailable error message:
indicating server unavailability to a user, automatically switch to a different server; and
prompting for a manual switch to the different server.

### Claim 23

A computer program product for code development and execution, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
receiving user code to be executed;
receiving an indication of a server that will perform the execution;
parsing the user code to determine one or more data items referred to during the execution;
providing the server with an inquiry for metadata regarding the one or more data items;
receiving the metadata regarding the one or more data items;
determining a logical plan based at least in part on the metadata regarding the one or more data items;
providing the logical plan to the server to be executed;
receiving a second server indication of a second server that will perform a second execution;
receiving an error message, a general message, or a status message, wherein the error message comprises a server unavailable message or a version compatibility error message; and
in response to a server unavailable error message:
indicating server unavailability to a user, automatically switch to a different server; and
prompting for a manual switch to the different server.
