# US 2021/0240718 A1 · Per-query data ownership via ownership sequence numbers in a database system and methods for use therewith

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

- Number: US 2021/0240718 A1
- Document ID: US20210240718A1
- Status: Published application
- Kind: A1
- Application number: 17/155,616
- Filed: 2021-01-22
- Published: 2021-08-05
- Earliest claimed: 2020-01-31
- Assignees: Ocient Holdings LLC
- Applicants: Ocient Holdings LLC
- Inventors: George Kondiles; Daniel Coombs
- Web page: https://patentgrep.com/patent/US20210240718A1

## CPC

- G06F 16/24532: {of parallel queries}
- G06F 16/24568: {Data stream processing; Continuous queries}
- G06F 16/2456: {Join operations}
- G06Q 50/04: Manufacturing
- Y02P 90/30: Computing systems specially adapted for manufacturing
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- 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
- Y02P: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS

## Abstract

A method for execution by a node of a computing device includes determining a plurality of queries for concurrent execution. A plurality of sets of segments required to execute the plurality of queries is determined, and a set of virtual segments in the plurality of sets of segments is determined. A subset of the set of virtual segments is be determined by identifying ones of the set of virtual segments that are required to execute multiple ones of plurality of queries. A locally rebuilt set of rows for each of the set of virtual segments is generated by utilizing a recovery scheme. For each one of the set of virtual segments included in the subset, in response to generating the locally rebuilt set of rows, concurrent partial execution of corresponding multiple ones of the plurality of queries is facilitated.

## Claims

### Claim 1

A method for execution by a processing system of a node, comprising:
determining first data ownership information via participation in a first execution of a consensus protocol mediated with a plurality of other nodes in a storage cluster that includes the node, wherein the first data ownership information indicates a first ownership sequence number, wherein the first data ownership information further indicates the node's ownership of a first subset of a set of segments, and wherein the set of segments is in a segment group stored by the plurality of nodes in the storage cluster;
determining second data ownership information via participation in a second execution of the consensus protocol mediated with the plurality of other nodes in the storage cluster, wherein the second data ownership information indicates a second ownership sequence number that is different from the first ownership sequence number, wherein the second data ownership information further indicates the node's ownership of a second subset of the set of segments, and wherein a set difference between the first subset and the second subset is non-null;
receiving a first query for execution;
determining an ownership sequence number tag for the first query that indicates the value of the first ownership sequence number; and
facilitating execution of the first query by utilizing the first subset of the set of segments based on determining the ownership sequence number tag of the first query indicates the value of the first ownership sequence number.

### Claim 2 (depends on 1)

The method of claim 1, wherein execution of the first query is facilitated by the node during a temporal period, wherein the temporal period begins prior to determining the second data ownership information, and wherein the temporal period ends after determining the second data ownership information.

### Claim 3 (depends on 2)

The method of claim 2, the determining the ownership sequence number tag of the first query includes assigning the value of the first ownership sequence number to the ownership sequence number tag of the first query in response to receiving the first query based on determining the first data ownership information is the most recently determined data ownership information of a plurality of previously determined data ownership information.

### Claim 4 (depends on 1)

The method of claim 1, wherein the set difference between the first subset and the second subset is based on at least one of: a migration of at least one segment in the segment group or a failure of a memory drive that stores at least one segment in the segment group.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
receiving a second query request indicating a second query for execution, wherein the second query request includes an ownership sequence number tag that indicates the value of the second ownership sequence number; and
facilitating execution of the second query by utilizing the second subset of the set of segments based on determining the ownership sequence number tag of the second query indicates the value of the second ownership sequence number.

### Claim 6 (depends on 5)

The method of claim 5, wherein execution of the first query is facilitated by the node within a first temporal period, wherein execution of the second query is facilitated by the node within a second temporal period, and wherein an overlap between the first temporal period and the second temporal period is non-null.

### Claim 7 (depends on 1)

The method of claim 1, wherein the first query is received in a query request, and wherein determining the ownership sequence number tag for the first query is based on extracting the ownership sequence number tag for the first query from the query request.

### Claim 8 (depends on 1)

The method of claim 1, wherein the first query is received for execution by each of the plurality of other nodes in the storage cluster, wherein each of the plurality of other nodes determine the ownership sequence number tag for the first query that indicates the value of the first ownership sequence number, and wherein each of the plurality of other nodes utilize the first data ownership information to execute the query based on determining the ownership sequence number tag for the first query that indicates the value of the first ownership sequence number.

### Claim 9 (depends on 1)

The method of claim 1, wherein each of the plurality of other nodes determine the first data ownership information via their participation in the first execution of the consensus protocol.

### Claim 10 (depends on 1)

The method of claim 1, wherein the first data ownership information indicates a plurality of subsets of the set of segments, wherein each subset in the plurality of subsets is mutually exclusive and collectively exhaustive with respect to the set of segments, wherein first data ownership information indicates each node in the plurality of other node is mapped to ownership of exactly one of the plurality of subsets, and wherein each subset in the plurality of subsets is mapped to one of: one of the plurality of other nodes or the node.

### Claim 11 (depends on 1)

The method of claim 1, wherein facilitating execution of the first query by utilizing the first subset of the set of segments includes utilizing only segments in the first subset of the set of segments to facilitate execution of the first query, and wherein facilitating execution of the first query by utilizing the first subset of the set of segments further includes utilizing every segment in the first subset of the set of segments to facilitate execution of the first query.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
determining at least one segment in the first subset of the set of segments is unavailable to the node;
terminating execution of the first query based on determining at least one segment in the first subset of the set of segments is unavailable to the node; and
sending a query error message indicating the termination of execution of the first query.

### Claim 13 (depends on 12)

The method of claim 12, wherein one other one of the plurality of other nodes facilitates execution of the first query utilizing a second subset of the set of segments that is distinct from the first subset of the set of segments, and wherein a final query result of the query is not generated based on the query error message.

### Claim 14 (depends on 12)

The method of claim 12, further comprising:
facilitating re-execution of the first query by determining an updated ownership sequence number tag for the first query that indicates the value of the second ownership sequence number, and by utilizing the second subset of the set of segments based on determining the updated ownership sequence number tag for the first query that indicates the value of the second ownership sequence number; and
determining re-execution of the first query is successful based on determining all of the segments in the second subset of the set of segments are available to the node.

### Claim 15 (depends on 14)

The method of claim 14, wherein the least one segment in the first subset of the set of segments is unavailable to the node during the re-execution of the first query, and wherein the re-execution of the first query is successful based on the second subset not including the at least one segment.

### Claim 16 (depends on 14)

The method of claim 14, wherein the least one segment in the first subset of the set of segments is indicated as at least one corresponding physical segment, wherein the at least one segment in the second subset of the set of segments is indicated as at least one corresponding virtual segment based on the at least one segment in the first subset of the set of segments is unavailable to the node as the at least one corresponding physical segment, and wherein re-execution of the first query includes performing a rebuilding function to utilize the at least one corresponding virtual segment.

### Claim 17 (depends on 1)

The method of claim 1, wherein the second data ownership information is determined more recently than the first data ownership information, and wherein the values of the first ownership sequence number and the second ownership sequence number indicate the second data ownership information is more recent than the first data ownership information.

### Claim 18 (depends on 1)

The method of claim 1, wherein the first data ownership information indicates that at least one of the first set of the set of segments be accessed by the node as a physical segment, and wherein the ownership information indicates that at least one of the first set of the set of segments be accessed by the node as a virtual segment.

### Claim 19

A node of a computing device comprising:
at least one processor; and
memory that stores executable instructions that, when executed by the at least one processor, cause at least one processing module of the node to:
determine first data ownership information via participation in a first execution of a consensus protocol mediated with a plurality of other nodes in a storage cluster that includes the node, wherein the first data ownership information indicates a first ownership sequence number, wherein the first data ownership information further indicates the node's ownership of a first subset of a set of segments, and wherein the set of segments is in a segment group stored by the plurality of nodes in the storage cluster;
determine second data ownership information via participation in a second execution of the consensus protocol mediated with the plurality of other nodes in the storage cluster, wherein the second data ownership information indicates a second ownership sequence number that is different from the first ownership sequence number, wherein the second data ownership information further indicates the node's ownership of a second subset of the set of segments, and wherein a set difference between the first subset and the second subset is non-null;
receive a first query for execution;
determine an ownership sequence number tag for the first query that indicates the value of the first ownership sequence number; and
facilitate execution of the first query by utilizing the first subset of the set of segments based on determining the ownership sequence number tag of the first query indicates the value of the first ownership sequence number.

### Claim 20

A non-transitory computer readable storage medium comprises:
at least one memory section that stores operational instructions that, when executed by a processing module that includes a processor and a memory, causes the processing module to:
determine first data ownership information via participation in a first execution of a consensus protocol mediated with a plurality of other nodes in a storage cluster that includes the node, wherein the first data ownership information indicates a first ownership sequence number, wherein the first data ownership information further indicates the node's ownership of a first subset of a set of segments, and wherein the set of segments is in a segment group stored by the plurality of nodes in the storage cluster;
determine second data ownership information via participation in a second execution of the consensus protocol mediated with the plurality of other nodes in the storage cluster, wherein the second data ownership information indicates a second ownership sequence number that is different from the first ownership sequence number, wherein the second data ownership information further indicates the node's ownership of a second subset of the set of segments, and wherein a set difference between the first subset and the second subset is non-null;
receive a first query for execution;
determine an ownership sequence number tag for the first query that indicates the value of the first ownership sequence number; and
facilitate execution of the first query by utilizing the first subset of the set of segments based on determining the ownership sequence number tag of the first query indicates the value of the first ownership sequence number.
