IP Library › Granted Patent US 11,899,525
Granted Patent B2
US 11,899,525 · App. 17/678,167 · Granted Feb 13, 2024

Reproduction of graph data during query evaluation

Inventors: Jan-Ove Almli Karlberg (Tromsø, NO); Anders Tungeland Gjerdrum (Tromsø, NO); Tor Kreutzer (Tromsø, NO)
Assignee: Microsoft Technology Licensing, LLC
G06F11/0709G06F16/215G06F16/2358G06F16/278G06F16/9024
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 11,899,525
App. No.
17/678,167
Granted
Feb 13, 2024
Kind
B2
Abstract

Techniques of reproduction of graph data during query time are disclosed herein. One example technique includes receiving, at a query processor, a query having a set of predicates to be evaluated on data in a graph. Upon receiving the query, the example technique includes evaluating the set of predicates based on data in the first or second partition of the graph and recording a sequence of query states of the first or second partition whose data is used to evaluate each of the set of predicates. Subsequently, the example technique includes constructing a set of snapshots of the data in the first or second partition based on the recorded query states and reevaluating the set of predicates on the constructed set of snapshots of the data in the first or second partition to troubleshoot the detected query error when the set of predicates were previously evaluated.

Claims (90)

1. A method for reproduction of graph data in a distributed computing system having multiple servers hosting a query processor configured to query a graph having a first partition interconnected to a second partition, the method comprising:

receiving, at the query processor in the distributed computing system, a query to be evaluated on data in the graph; and

in response to receiving the query, with the query processor,

converting the received query into a set of predicates for evaluation;

evaluating each of the set of predicates based on data in the first or second partition of the graph, where evaluating the set of predicates includes detecting a query error, the query error caused by at least one of logic corruption, missing data, duplicate data or other data inconsistency in the first or second partition of the graph;

recording a sequence of query states of the first or second partition whose data is used to sequentially evaluate the each of the set of predicates by:

detecting for evaluation one of the set of predicates on the data in the first or second partition;

upon detecting that one of the set of predicates is to be evaluated on the data in the first or second partition, recording information of presence and relationship of data items in the first or second partition; and

anonymizing the recorded information of the presence and relationship of the data items in the first or second partition as one of the query states; and

subsequently, upon detecting a query error during evaluation of the set of predicates,

constructing a set of snapshots of the data in the first or second partition of the graph based on the recorded sequence of query states; and

reevaluating the set of predicates on the constructed set of snapshots of the data in the first or second partition to troubleshoot the detected query error when the set of predicates were previously evaluated.

2. The method of claim 1 , wherein:

the first partition is located in a first geographical location;

the second partition is located in a second geographical location; and

evaluating the each of the set of predicates includes evaluating the each of the set of predicates on the data in the first or second partition in the first or second geographical location, respectively.

3. The method of claim 1 , wherein:

the first partition is located in a first geographical location and contains first data;

the second partition is located in a second geographical location and contains second data different than the first data in the first partition; and

evaluating the each of the set of predicates includes evaluating the each of the set of predicates on the first or second data of the first or second partition in the first or second geographical location, respectively.

4. The method of claim 1 , wherein recording the sequence of query states of the first or second partition includes:

detecting evaluation of one of the set of predicates on the data in the first or second partition; and

upon detecting that one of the set of predicates is to be evaluated on the data in the first or second partition, recording information of presence and relationship of data items in the first or second partition as one of the query states.

5. The method of claim 1 , wherein recording the sequence of query states of the first or second partition further includes:

upon detecting that one of the set of predicates is to be evaluated on the data in the first or second partition, recording information of presence and relationship of data items in the first or second partition as one of the query states; and

storing the one of the query states according to a chronological order of evaluating the set of predicates.

6. The method of claim 1 , wherein:

evaluating the each of the set of predicates based on the data in the first or second partition of the graph includes detecting that a data item is missing from the first or second partition when evaluating one of the set of predicates; and

recording the sequence of query states of the first or second partition includes recording information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated.

7. The method of claim 1 , wherein:

evaluating the each of the set of predicates based on the data in the first or second partition of the graph includes detecting that a data item is missing from the first or second partition when evaluating one of the set of predicates;

recording the sequence of query states of the first or second partition includes recording information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated; and

constructing the set of snapshots includes constructing one of the snapshots to reflect that the data item is missing from the first or second partition even though a copy of the data item is reintroduced to the first or second partition subsequent to the query error being detected.

8. The method of claim 1 , wherein:

evaluating the each of the set of predicates based on the data in the first or second partition of the graph includes detecting that a data item is missing from the first or second partition when evaluating one of the set of predicates;

recording the sequence of query states of the first or second partition includes recording information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated; and

reevaluating the set of predicates on the constructed set of snapshots of the data in the first or second partition includes identifying that the data item missing from the first or second partition caused the detected query error even though a copy of the data item is reintroduced to the first or second partition subsequent to the query error being detected.

9. A computing device, comprising:

a processor; and

a memory containing instructions executable by the processor to cause the computing device to provide a query processor and to:

receive, at the query processor, a query to be evaluated on data in a graph; and

upon receiving the query, with the query processor,

convert the received query into a set of predicates for evaluation;

evaluate each of the set of predicates based on data in a first or second partition of the graph while recording a sequence of query states of the first or second partition whose data is used to sequentially evaluate the each of the set of predicates, where evaluating the set of predicates includes detecting a query error, the query error caused by at least one of logic corruption, missing data, duplicate data or other data inconsistency in the first or second partition of the graph and recording the sequence of query states of the first or second partition whose data is used to sequentially evaluate the each of the set of predicate includes:

detecting for evaluation one of the set of predicates on the data in the first or second partition;

upon detecting that one of the set of predicates is to be evaluated on the data in the first or second partition, recording information of presence and relationship of data items in the first or second partition; and

anonymizing the recorded information of the presence and relationship of the data items in the first or second partition as one of the query states; and

subsequently, upon detecting a query error during evaluation of the set of predicates,

construct a set of snapshots of the data in the first or second partition of the graph based on the recorded sequence of query states; and

reevaluate the set of predicates on the constructed set of snapshots of the data in the first or second partition to troubleshoot the detected query error when the set of predicates were previously evaluated.

10. The computing device of claim 9 , wherein:

the first partition is located in a first geographical location and contains first data;

the second partition is located in a second geographical location and contains second data different than the first data in the first partition; and

to evaluate the each of the set of predicates includes to evaluate the each of the set of predicates on the first or second data of the first or second partition in the first or second geographical location, respectively.

11. The computing device of claim 9 , wherein to record the sequence of query states of the first or second partition further includes to:

upon detecting that one of the set of predicates is to be evaluated on the data in the first or second partition, record information of presence and relationship of data items in the first or second partition as one of the query states; and

anonymize the recorded information of the presence and relationship of the data items in the first or second partition as one of the query states.

12. The computing device of claim 9 , wherein:

to evaluate the each of the set of predicates based on the data in the first or second partition of the graph includes to detect that a data item is missing from the first or second partition when evaluating one of the set of predicates; and

to record the sequence of query states of the first or second partition includes to record information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated.

13. The computing device of claim 9 , wherein:

to evaluate the each of the set of predicates based on the data in the first or second partition of the graph includes to detect that a data item is missing from the first or second partition when evaluating one of the set of predicates;

to record the sequence of query states of the first or second partition includes to record information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated; and

to construct the set of snapshots includes to construct one of the snapshots to reflect that the data item is missing from the first or second partition even though a copy of the data item is reintroduced to the first or second partition subsequent to the query error being detected.

14. The computing device of claim 9 , wherein:

to evaluate the each of the set of predicates based on the data in the first or second partition of the graph includes to detect that a data item is missing from the first or second partition when evaluating one of the set of predicates;

to record the sequence of query states of the first or second partition includes to record information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated; and

to reevaluate the set of predicates on the constructed set of snapshots of the data in the first or second partition includes to identify that the data item missing from the first or second partition caused the detected query error even though a copy of the data item is reintroduced to the first or second partition subsequent to the query error being detected.

15. A method for reproduction of graph data in a distributed computing system having multiple servers hosting a query processor configured to query a graph having a first partition interconnected to a second partition, the method comprising:

receiving, at the query processor in the distributed computing system, a query to be evaluated on data in the graph, the query includes a set of predicates for evaluation;

upon receiving the query, with the query processor,

evaluating the set of predicates based on data in the first or second partition of the graph, where evaluating the set of predicates includes detecting a query error, the query error caused by at least one of logic corruption, missing data, duplicate data or other data inconsistency in the first or second partition of the graph;

recording a sequence of query states of the first or second partition whose data is used to evaluate each of the set of predicates by:

detecting for evaluation one of the set of predicates on the data in the first or second partition;

upon detecting that one of the set of predicates is to be evaluated on the data in the first or second partition, recording information of presence and relationship of data items in the first or second partition; and

anonymizing the recorded information of the presence and relationship of the data items in the first or second partition as one of the query states; and

subsequent to evaluating the set of predicates and recording the sequence of query states,

constructing a set of snapshots of the data in the first or second partition of the graph based on the recorded sequence of query states; and

reevaluating the set of predicates on the constructed set of snapshots of the data in the first or second partition to troubleshoot the detected query error when the set of predicates were previously evaluated.

16. The method of claim 15 , wherein:

evaluating the each of the set of predicates based on the data in the first or second partition of the graph includes detecting that a data item is missing from the first or second partition when evaluating one of the set of predicates; and

recording the sequence of query states of the first or second partition includes recording information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated.

17. The method of claim 15 , wherein:

evaluating the each of the set of predicates based on the data in the first or second partition of the graph includes detecting that a data item is missing from the first or second partition when evaluating one of the set of predicates;

recording the sequence of query states of the first or second partition includes recording information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated; and

constructing the set of snapshots includes constructing one of the snapshots to reflect that the data item is missing from the first or second partition even though a copy of the data item is reintroduced to the first or second partition subsequent to the query error being detected.

18. The method of claim 15 , wherein:

evaluating the each of the set of predicates based on the data in the first or second partition of the graph includes detecting that a data item is missing from the first or second partition when evaluating one of the set of predicates;

recording the sequence of query states of the first or second partition includes recording information of presence and relationship of multiple data items in the first or second partition as one of the query states, the recorded information reflecting that the data item is missing from the first or second partition when the one of the predicates is evaluated; and

reevaluating the set of predicates on the constructed set of snapshots of the data in the first or second partition includes identifying that the data item missing from the first or second partition caused the detected query error even though a copy of the data item is reintroduced to the first or second partition subsequent to the query error being detected.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2022
From: KARLBERG, JAN-OVE ALMLI; GJERDRUM, ANDERS TUNGELAND; KREUTZER, TOR
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 059073/0025 →
Continuity (1)
Related Publication 20230267025A1 · Aug 24, 2023