IP Library Granted Patent US 10,762,067
Granted Patent B2
US 10,762,067 · App. 16/692,927 · Granted Sep 1, 2020

Incremental feature development and workload capture in database systems

Inventors: Jiaqi Yan (San Carlos, CA); Qiuye Jin (Hillsborough, CA); Shrainik Jain (Seattle, WA); Stratis Viglas (Madison, WI); Allison Lee (San Carlos, CA)
Assignee: Snowflake Inc.
G06F16/217G06F11/0772G06F11/3072G06F11/3428G06F11/3452G06F16/215G06F16/24549
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 10,762,067
App. No.
16/692,927
Granted
Sep 1, 2020
Kind
B2
Abstract

Systems, methods, and devices for incremental feature development and workload capture in database systems are disclosed. A method includes determining a workload having one or more historical client queries to be rerun for testing the feature, wherein the feature comprises procedural logic. The method further includes executing a baseline run of the workload that does not implement the feature and executing a target run of the workload while implementing the feature. The method further includes comparing the baseline run and the target run to identify whether there is a performance regression in the target run. The method further includes, in response to identifying the performance regression, rerunning the target run to identify whether the performance regression still exists.

Claims (113)

1. A system for testing a feature on a database, the system comprising:

a processor to:

determine a workload comprising one or more historical client queries to be rerun for testing the feature, wherein the feature comprises procedural logic;

execute a baseline run of the workload that does not implement the feature;

execute a target run of the workload while implementing the feature;

compare the baseline run and the target run to identify whether there is a performance regression in the target run;

in response to identifying the performance regression, rerun the target run to identify whether the performance regression still exists, wherein the target run is rerun using separate isolated resources with lower concurrency; and

flag the performance regression as a false positive in response to identifying that the performance regression no longer exists when the target run is rerun.

2. The system of claim 1 , wherein the processor to determine the workload based on a workload selection configuration comprising one or more parameters input by a user to filter out unwanted historical client queries.

3. The system of claim 1 , wherein parameters for the baseline run and parameters for the target run are identical except for a presence of the feature in the target run.

4. The system of claim 1 , wherein the processor to identify one or more errors in response to comparing the baseline run and the target run, the one or more errors comprising:

a wrong result to one or more historical client queries executed in the target run;

an internal error in the target run; or

a user error in the target run; and

wherein to rerun the target run, the processor is further to identify whether any of the one or more errors still exists; and

wherein to flag the performance regression as a false positive, the processor is further to flag any of the one or more errors as a false positive in response to identifying that any of the one or more errors no longer exists when the target run is rerun.

5. The system of claim 1 , wherein the processor is further to obfuscate results of the baseline run and the target run such that a user does not have visibility into any database data associated with the one or more historical client queries of the workload.

6. The system of claim 1 , wherein the processor to execute the baseline run and the target run on a dedicated virtual warehouse of a cloud database service that is dedicated for performance of feature testing runs.

7. The system of claim 1 , wherein the processor further to determine a version of a client's database data that existed when an historical client query of the one or more historical client queries was run by the client, and wherein the processor to execute on the version of the client's database data that existed when the historical client query of the one or more historical client queries was run by the client.

8. The system of claim 2 , wherein the one or more parameters comprises one or more of:

a query sample size;

a query initiator such as an account or user that has requested an historical client query;

a query schema;

a table or micro-partition of a database that may be accessed by a query;

a time window for an historical query to have been requested and/or executed;

a query text fragment;

a query execution configuration; or

an execution time of a query.

9. The system of claim 4 , wherein the processor is further to generate a report comprising data about the target run, wherein the report does not comprise an indication of any performance regression or error that was flagged as a false positive.

10. A method of testing a feature on a database, the method comprising:

determining a workload comprising one or more historical client queries to be rerun for testing the feature, wherein the feature comprises procedural logic;

executing a baseline run of the workload that does not implement the feature;

executing a target run of the workload while implementing the feature;

comparing the baseline run and the target run to identify whether there is a performance regression in the target run;

in response to identifying the performance regression, rerunning the target run to identify whether the performance regression still exists, wherein the target run is rerun using separate isolated resources with lower concurrency; and

flagging the performance regression as a false positive in response to identifying that the performance regression no longer exists when the target run is rerun.

11. The method of claim 10 , wherein determining the workload comprises determining based on a workload selection configuration comprising one or more parameters input by a user to filter out unwanted historical client queries.

12. The method of claim 10 , wherein parameters for the baseline run and parameters for the target run are identical except for a presence of the feature in the target run.

13. The method of claim 10 , further comprising identifying one or more errors in response to comparing the baseline run and the target run, the one or more errors comprising:

a wrong result to one or more historical client queries executed in the target run;

an internal error in the target run; or

a user error in the target run; and

wherein rerunning the target run comprises identify whether any of the one or more errors still exists; and

wherein flagging the performance regression as a false positive comprises flagging any of the one or more errors as a false positive in response to identifying that any of the one or more errors no longer exists when the target run is rerun.

14. The method of claim 10 , further comprising obfuscating results of the baseline run and the target run such that a user does not have visibility into any database data associated with the one or more historical client queries of the workload.

15. The method of claim 10 , further comprising executing the baseline run and the target run on a dedicated virtual warehouse of a cloud database service that is dedicated for performance of feature testing runs.

16. The method of claim 10 , further comprising determining a version of a client's database data that existed when an historical client query of the one or more historical client queries was run by the client, and wherein the baseline run and the target run are executed on the version of the client's database data that existed when the historical client query of the one or more historical client queries was run by the client.

17. The method of claim 11 , wherein the one or more parameters comprises one or more of:

a query sample size;

a query initiator such as an account or user that has requested an historical client query;

a query schema;

a table or micro-partition of a database;

a time window for an historical query to have been requested and/or executed;

a query text fragment; or

a query execution configuration.

18. The method of claim 13 , further comprising generating a report comprising data about the target run, wherein the report does not comprise an indication of any performance regression or error that was flagged as a false positive.

19. A non-transitory computer readable storage media, programmable to execute instructions that, when executed, cause a processor to:

determine a workload comprising one or more historical client queries to be rerun for testing the feature, wherein the feature comprises procedural logic;

execute a baseline run of the workload that does not implement the feature;

execute a target run of the workload while implementing the feature;

compare the baseline run and the target run to identify whether there is a performance regression in the target run;

in response to identifying the performance regression, rerun the target run to identify whether the performance regression still exists, wherein the target run is rerun using separate isolated resources with lower concurrency; and

flag the performance regression as a false positive in response to identifying that the performance regression no longer exists when the target run is rerun.

20. The non-transitory computer readable storage media of claim 19 , wherein the processor to determine the workload based on a workload selection configuration comprising one or more parameters input by a user to filter out unwanted historical client queries, wherein the one or more parameters comprises one or more of:

a query sample size;

a query initiator such as an account or user that has requested an historical client query;

a query schema;

a table or micro-partition of a database that may be accessed by a query;

a time window for an historical query to have been requested and/or executed;

a query text fragment;

a query execution configuration; or

an execution time of a query.

21. The non-transitory computer readable storage media of claim 19 , wherein the processor to identify one or more errors in response to comparing the baseline run and the target run, the one or more errors comprising:

a wrong result to one or more historical client queries executed in the target run;

an internal error in the target run; or

a user error in the target run; and

wherein to rerun the target run, the processor is further to identify whether any of the one or more errors still exists; and

wherein to flag the performance regression as a false positive, the processor is further to flag any of the one or more errors as a false positive in response to identifying that any of the one or more errors no longer exists when the target run is rerun.

22. The non-transitory computer readable storage media of claim 19 , wherein the processor is further to obfuscate results of the baseline run and the target run such that a user does not have visibility into any database data associated with the one or more historical client queries of the workload.

23. The non-transitory computer readable storage media of claim 19 , wherein the processor to execute the baseline run and the target run on a dedicated virtual warehouse of a cloud database service that is dedicated for performance of feature testing runs.

24. The non-transitory computer readable storage media of claim 21 , wherein the processor is further to generate a report comprising data about the target run, wherein the report does not comprise an indication of any performance regression or error that was flagged as a false positive.

25. A system for testing a feature on a database, the system comprising:

a processor to:

determine a workload comprising one or more historical client queries to be rerun for testing the feature, wherein the feature comprises procedural logic, wherein the processor to determine the workload based on a workload selection configuration comprising one or more parameters input by a user to filter out unwanted historical client queries, wherein to determine the workload, the processor to:

deduplicate historical client queries that satisfy the workload selection configuration to determine a grouping of historical client queries;

prune the grouping of historical client queries to eliminate queries that consume more than a threshold amount of resources to execute; and

select a subset of the pruned grouping of historical client queries to determine a diverse sample by applying an algorithm to map the pruned grouping of historical client queries to a high dimensional vector space execute a baseline run of the workload that does not implement the feature;

execute a target run of the workload while implementing the feature;

compare the baseline run and the target run to identify whether there is a performance regression in the target run; and

in response to identifying the performance regression, rerun the target run to identify whether the performance regression still exists.

26. The system of claim 25 , wherein the one or more parameters comprises one or more of:

a query sample size;

a query initiator such as an account or user that has requested an historical client query;

a query schema;

a table or micro-partition of a database that may be accessed by a query;

a time window for an historical query to have been requested and/or executed;

a query text fragment;

a query execution configuration; or

an execution time of a query.

27. The system of claim 25 , wherein parameters for the baseline run and parameters for the target run are identical except for a presence of the feature in the target run.

28. The system of claim 25 , wherein the processor is further to obfuscate results of the baseline run and the target run such that a user does not have visibility into any database data associated with the one or more historical client queries of the workload.

29. The system of claim 25 , wherein the processor further to determine a version of a client's database data that existed when an historical client query of the one or more historical client queries was run by the client, and wherein the processor to execute on the version of the client's database data that existed when the historical client query of the one or more historical client queries was run by the client.

30. A method of testing a feature on a database, the method comprising:

determining a workload comprising one or more historical client queries to be rerun for testing the feature, wherein the feature comprises procedural logic, wherein determining the workload comprises determining based on a workload selection configuration comprising one or more parameters input by a user to filter out unwanted historical client queries; and wherein determining the workload further comprises:

deduplicating historical client queries that satisfy the workload selection configuration to determine a grouping of historical client queries;

pruning the grouping of historical client queries to eliminate queries that consume more than a threshold amount of resources to execute; and

selecting a subset of the pruned grouping of historical client queries to determine a diverse sample, wherein the selecting comprises applying an algorithm to map the pruned grouping of historical client queries to a high dimensional vector space;

executing a baseline run of the workload that does not implement the feature;

executing a target run of the workload while implementing the feature;

comparing the baseline run and the target run to identify whether there is a performance regression in the target run;

in response to identifying the performance regression, rerunning the target run to identify whether the performance regression still exists.

31. The method of claim 30 , further comprising obfuscating results of the baseline run and the target run such that a user does not have visibility into any database data associated with the one or more historical client queries of the workload.

32. The method of claim 30 , further comprising determining a version of a client's database data that existed when an historical client query of the one or more historical client queries was run by the client, and wherein the baseline run and the target run are executed on the version of the client's database data that existed when the historical client query of the one or more historical client queries was run by the client.

Assignments (2)
CHANGE OF NAME Recorded Dec 6, 2019
From: SNOWFLAKE COMPUTING, INC.
To: SNOWFLAKE INC.
Reel/Frame 051219/0345 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2019
From: YAN, JIAQI; JIN, QIUYE; JAIN, SHRAINIK; LEE, ALLISON; VIGLAS, STRATIS
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 051092/0596 →
Continuity (3)
Continuation 16359452 · Mar 20, 2019
Provisional Application 62646817 · Mar 22, 2018
Related Publication 20200089665A1 · Mar 19, 2020