IP Library › Granted Patent US 11,928,110
Granted Patent B2
US 11,928,110 · App. 18/051,483 · Granted Mar 12, 2024

Multiple environments and functions in a distributed database

Inventors: Srilakshmi Chintala (Seattle, WA); Chong Han (Bellevue, WA); Albert L. Hu (Seattle, WA); Nitya Kumar Sharma (Bellevue, WA); Igor Zinkovsky (Redmond, WA)
Assignee: Snowflake Inc.
G06F16/2448G06F16/248G06F16/27G06F8/433
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,928,110
App. No.
18/051,483
Granted
Mar 12, 2024
Kind
B2
Abstract

A database dependency resolver system can identify different dependencies of a user application and integrate the identified dependencies in different execution environments of a distributed database system. The different execution environments can manage different versions of a given programming language, or other types of computational architectures (e.g., different CPU types). A database user can provide a database statement (e.g., query) that activates the different dependencies in the different environments to generate results data.

Claims (77)

1. A method comprising:

storing a user application on a database system;

identifying, by at least one hardware processor, a plurality of package dependencies of the user application from a repository of packages, the plurality of package dependencies including one or more software packages used by an application, and comprising a first package dependency and a second package dependency;

receiving, from a user of the database system, a database statement that includes a first portion using the first package dependency and a second portion using the second package dependency;

in response to the database statement, retrieving the first package dependency and the second package dependency from the repository of the packages;

in response to retrieving the first package dependency, generating a first execution environment that comprises the first package dependency;

assigning a first repository number to the first execution environment upon generation of the first execution environment, the first repository number identifying a state of the first package dependency;

in response to retrieving the second package dependency, generating a second execution environment that comprises the second package dependency;

assigning a second repository number to the second execution environment upon generation of the second execution environment, the second repository number identifying a state of the second package dependency;

enabling the user of the database system to use the first repository number to recreate the first execution environment and to use the second repository number to recreate the second execution environment; and

based on the database statement, generating results data using a recreated first execution environment and a recreated second execution environment.

2. The method of claim 1 , wherein generating the results data using the first execution environment and the second execution environment comprises:

generating a first output by implementing the first portion of the database statement in the first execution environment; and

generating a second output by implementing the second portion of the database statement in the second execution environment.

3. The method of claim 2 , wherein generating the results data using the first execution environment and the second execution environment further comprises:

generating the results data based on the first output and the second output.

4. The method of claim 2 , wherein the second output is generated based on the first output.

5. The method of claim 1 , wherein identifying the plurality of package dependencies of the user application comprises:

generating a configuration file that specifies the plurality of package dependencies of the user application.

6. The method of claim 5 , further comprising:

accessing the plurality of package dependencies from the repository of the packages based on the configuration file.

7. The method of claim 1 , wherein the first execution environment is configured for a first version of a programming language and the second execution environment is configured for a second version of the programming language.

8. The method of claim 7 , wherein the programming language is Python.

9. The method of claim 1 , wherein the first execution environment is configured for a first programming language and the second execution environment is configured for a second programming language.

10. The method of claim 1 , wherein the first execution environment is configured for a first computing architecture and the second execution environment is configured for a second computing architecture.

11. A system comprising:

one or more computer processors; and

one or more computer-readable mediums storing instructions that, when executed by the one or more computer processors, cause the system to perform operations comprising:

storing a user application on a distributed database system;

identifying a plurality of package dependencies of the user application from a repository of packages, the plurality of package dependencies including one or more software packages used by an application, and comprising a first package dependency and a second package dependency;

receiving, from a user of the database system, a database statement that includes a first portion using the first package dependency and a second portion using the second package dependency;

in response to the database statement, retrieving the first package dependency and the second package dependency from the repository of the packages;

in response to retrieving the first package dependency, generating a first execution environment that comprises the first package dependency;

assigning a first repository number to the first execution environment upon generation of the first execution environment, the first repository number identifying a state of the first package dependency;

in response to retrieving the second package dependency, generating a second execution environment that comprises the second package dependency;

assigning a second repository number to the second execution environment upon generation of the second execution environment, the second repository number identifying a state of the second package dependency;

enabling the user of the database system to use the first repository number to recreate the first execution environment and to use the second repository number to recreate the second execution environment and

based on the database statement, generating results data using a recreated first execution environment and a recreated second execution environment.

12. The system of claim 11 , wherein generating the results data using the first execution environment and the second execution environment comprises:

generating a first output by implementing the first portion of the database statement in the first execution environment; and

generating a second output by implementing the second portion of the database statement in the second execution environment.

13. The system of claim 12 , wherein generating the results data using the first execution environment and the second execution environment further comprises:

generating the results data based on the first output and the second output.

14. The system of claim 12 , wherein the second output is generated based on the first output.

15. The system of claim 11 , wherein identifying the plurality of package dependencies of the user application comprises:

generating a configuration file that specifies the plurality of package dependencies of the user application.

16. The system of claim 15 , the operations further comprising:

accessing the plurality of package dependencies from the repository of the packages based on the configuration file.

17. The system of claim 11 , wherein the first execution environment is configured for a first version of a programming language and the second execution environment is configured for a second version of the programming language.

18. The system of claim 17 , wherein the programming language is Python.

19. The system of claim 11 , wherein the first execution environment is configured for a first programming language and the second execution environment is configured for a second programming language.

20. The system of claim 11 , wherein the first execution environment is configured for a first computing architecture and the second execution environment is configured for a second computing architecture.

21. A computer-storage medium storing instructions that, when executed by one or more computer processors of one or more computing devices, cause the one or more computing devices to perform operations comprising:

storing a user application on a database system;

identifying a plurality of package dependencies of the user application from a repository of packages, the plurality of package dependencies including one or more software packages used by an application, and comprising a first package dependency and a second package dependency;

receiving, from a user of the database system, a database statement that includes a first portion using the first package dependency and a second portion using the second package dependency;

in response to the database statement, retrieving the first package dependency and the second package dependency from the repository of the packages;

in response to retrieving the first package dependency, generating a first execution environment that comprises the first package dependency;

assigning a first repository number to the first execution environment upon generation of the first execution environment, the first repository number identifying a state of the first package dependency;

in response to retrieving the second package dependency, generating a second execution environment that comprises the second package dependency;

assigning a second repository number to the second execution environment upon generation of the second execution environment, the second repository number identifying a state of the second package dependency;

enabling the user of the database system to use the first repository number to recreate the first execution environment and to use the second repository number to recreate the second execution environment; and

based on the database statement, generating results data using a recreated first execution environment and a recreated second execution environment.

22. The computer-storage medium of claim 21 , wherein generating the results data using the first execution environment and the second execution environment comprises:

generating a first output by implementing the first portion of the database statement in the first execution environment; and

generating a second output by implementing the second portion of the database statement in the second execution environment.

23. The computer-storage medium of claim 22 , wherein generating the results data using the first execution environment and the second execution environment further comprises:

generating the results data based on the first output and the second output.

24. The computer-storage medium of claim 22 , wherein the second output is generated based on the first output.

25. The computer-storage medium of claim 21 , wherein identifying the plurality of package dependencies of the user application comprises:

generating a configuration file that specifies the plurality of package dependencies of the user application.

26. The computer-storage medium of claim 25 , the operations further comprising:

accessing the plurality of package dependencies from the repository of the packages based on the configuration file.

27. The computer-storage medium of claim 21 , wherein the first execution environment is configured for a first version of a programming language and the second execution environment is configured for a second version of the programming language.

28. The computer-storage medium of claim 27 , wherein the programming language is Python.

29. The computer-storage medium of claim 21 , wherein the first execution environment is configured for a first programming language and the second execution environment is configured for a second programming language.

30. The computer-storage medium of claim 21 , wherein the first execution environment is configured for a first computing architecture and the second execution environment is configured for a second computing architecture.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 11, 2023
From: CHINTALA, SRILAKSHMI; HAN, CHONG; HU, ALBERT L.; SHARMA, NITYA KUMAR; ZINKOVSKY, IGOR
To: SNOWFLAKE INC.
Reel/Frame 062338/0095 →
Continuity (2)
Provisional Application 63268583 · Feb 25, 2022
Related Publication 20230273918A1 · Aug 31, 2023
Cited By (1)
US 12,724,761