IP Library › Granted Patent US 12,222,828
Granted Patent B2
US 12,222,828 · App. 18/329,348 · Granted Feb 11, 2025

Share-based replication

Inventors: Loc Duc Bui (Bellevue, WA); Hitesh Madan (Seattle, WA); Nithin Mahesh (Kirkland, WA); Subramanian Muralidhar (Mercer Island, WA); Sahaj Saini (Seattle, WA); Di Wu (Newark, CA)
Assignee: Snowflake Inc.
G06F11/203G06F16/256G06F16/27
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 12,222,828
App. No.
18/329,348
Granted
Feb 11, 2025
Kind
B2
Abstract

The subject technology determines a set of share objects in a replication group. The subject technology, for each object from the set of share objects, determines a set of permissions for a set of objects of databases that has been granted to each share object from the replication group. The subject technology, for each permission from the set of permissions, determines a set of dependencies, the set of dependencies comprising a second set of objects. The subject technology generates a graph structure based at least in part on the set of share objects, the set of permissions, and the set of dependencies. The subject technology traverses at least a portion of the graph structure to determine a final set of dependencies for replication. The subject technology performs a replication process based at least in part on the final set of dependencies.

Claims (101)

1. A system comprising:

at least one hardware processor; and

a memory storing instructions that cause the at least one hardware processor to perform operations comprising:

determining a set of share objects in a replication group;

for each object from the set of share objects, determining a set of permissions for a set of objects of databases that has been granted to each share object from the replication group;

for each permission from the set of permissions, determining a set of dependencies, the set of dependencies comprising a second set of objects;

generating a graph structure based at least in part on the set of share objects, the set of permissions, and the set of dependencies,

the graph structure comprising a set of nodes corresponding to the set of share objects and the set of objects of the databases;

traversing at least a portion of the graph structure to determine a final set of dependencies for replication; and

performing a replication process based at least in part on the final set of dependencies.

2. The system of claim 1 , wherein the operations further comprise:

for each object in the second set of objects, determining a second set of dependencies, wherein generating the graph structure is further based on the second set of dependencies.

3. The system of claim 1 , wherein the set of share objects comprises a first share object and a second share object.

4. The system of claim 3 , wherein the operations further comprise:

determining that the first share object has a usage grant on a first database and a select grant of a first view of the first database.

5. The system of claim 4 , wherein the operations further comprise:

skipping a traversal of a set of child nodes of a parent node corresponding to the usage grant on the first database.

6. The system of claim 4 , wherein the operations further comprise:

determining a particular first set of dependencies based at least in part on the select grant of the first view of the first database, the particular first set of dependencies comprising a second view of the first database associated with a second schema and a second table of the first database associated with the first share object;

determining a second particular set of dependencies of the second table of the first database associated with the first share object, the second particular set of dependencies comprising a column of the second table, and a first schema of the first database;

traversing from a particular parent node associated with the second table of the first database to a particular child node associated with the first schema of the first database;

skipping a traversal from second particular parent node of the first view of the first database to the particular child node associated with the first schema of the first database; and

determining that the particular child node associated with the first schema of the first database is a particular leaf node of a final graph structure corresponding to the final set of dependencies.

7. The system of claim 6 , wherein the operations further comprise:

determining a third particular set of dependencies of the column of the second table, the third particular set of dependencies comprising a constraint of the column of second table;

traversing from a third particular parent node of the column of the second table to a second particular child node of the constraint of the column of second table; and

determining that the second particular child node of the constraint of the column of the second table is a second particular leaf node of the final graph structure based on the constraint of the column of the second table having no dependencies.

8. The system of claim 3 , wherein the operations further comprise:

determining that the second share object has a usage grant on a first database and a second usage grant of a user defined function (UDF) of the first database.

9. The system of claim 8 , wherein the operations further comprise:

determining a particular first set of dependencies based at least in part on the second usage grant of the UDF of the first database, the particular first set of dependencies comprising a second schema of the first database; and

traversing from a particular parent node of the second usage grant of the UDF of the first database to a particular child node of the second schema of the first database.

10. The system of claim 9 , wherein the operations further comprise:

skipping a traversal of a second particular child node of the second schema of the first database; and

determining that the particular child node of the second schema of the first database is a particular leaf node of a final graph structure corresponding to the final set of dependencies.

11. A method comprising:

determining a set of share objects in a replication group;

for each object from the set of share objects, determining a set of permissions for a set of objects of databases that has been granted to each share object from the replication group;

for each permission from the set of permissions, determining a set of dependencies, the set of dependencies comprising a second set of objects;

generating a graph structure based at least in part on the set of share objects, the set of permissions, and the set of dependencies,

the graph structure comprising a set of nodes corresponding to the set of share objects and the set of objects of the databases;

traversing at least a portion of the graph structure to determine a final set of dependencies for replication; and

performing a replication process based at least in part on the final set of dependencies.

12. The method of claim 11 , further comprising:

for each object in the second set of objects, determining a second set of dependencies, wherein generating the graph structure is further based on the second set of dependencies.

13. The method of claim 11 , wherein the set of share objects comprises a first share object and a second share object.

14. The method of claim 13 , further comprising:

determining that the first share object has a usage grant on a first database and a select grant of a first view of the first database.

15. The method of claim 14 , further comprising:

skipping a traversal of a set of child nodes of a parent node corresponding to the usage grant on the first database.

16. The method of claim 14 , further comprising:

determining a particular first set of dependencies based at least in part on the select grant of the first view of the first database, the particular first set of dependencies comprising a second view of the first database associated with a second schema and a second table of the first database associated with the first share object;

determining a second particular set of dependencies of the second table of the first database associated with the first share object, the second particular set of dependencies comprising a column of the second table, and a first schema of the first database;

traversing from a particular parent node associated with the second table of the first database to a particular child node associated with the first schema of the first database;

skipping a traversal from second particular parent node of the first view of the first database to the particular child node associated with the first schema of the first database; and

determining that the particular child node associated with the first schema of the first database is a particular leaf node of a final graph structure corresponding to the final set of dependencies.

17. The method of claim 16 , further comprising:

determining a third particular set of dependencies of the column of the second table, the third particular set of dependencies comprising a constraint of the column of second table;

traversing from a third particular parent node of the column of the second table to a second particular child node of the constraint of the column of second table; and

determining that the second particular child node of the constraint of the column of the second table is a second particular leaf node of the final graph structure based on the constraint of the column of the second table having no dependencies.

18. The method of claim 13 , further comprising:

determining that the second share object has a usage grant on a first database and a second usage grant of a user defined function (UDF) of the first database.

19. The method of claim 18 , further comprising:

determining a particular first set of dependencies based at least in part on the second usage grant of the UDF of the first database, the particular first set of dependencies comprising a second schema of the first database; and

traversing from a particular parent node of the second usage grant of the UDF of the first database to a particular child node of the second schema of the first database.

20. The method of claim 19 , further comprising:

skipping a traversal of a second particular child node of the second schema of the first database; and

determining that the particular child node of the second schema of the first database is a particular leaf node of a final graph structure corresponding to the final set of dependencies.

21. A non-transitory computer-storage medium comprising instructions that, when executed by one or more processors of a machine, configure the machine to perform operations comprising:

determining a set of share objects in a replication group;

for each object from the set of share objects, determining a set of permissions for a set of objects of databases that has been granted to each share object from the replication group;

for each permission from the set of permissions, determining a set of dependencies, the set of dependencies comprising a second set of objects;

generating a graph structure based at least in part on the set of share objects, the set of permissions, and the set of dependencies,

the graph structure comprising a set of nodes corresponding to the set of share objects and the set of objects of the databases;

traversing at least a portion of the graph structure to determine a final set of dependencies for replication; and

performing a replication process based at least in part on the final set of dependencies.

22. The non-transitory computer-storage medium of claim 21 , wherein the operations further comprise:

for each object in the second set of objects, determining a second set of dependencies, wherein generating the graph structure is further based on the second set of dependencies.

23. The non-transitory computer-storage medium of claim 21 , wherein the set of share objects comprises a first share object and a second share object.

24. The non-transitory computer-storage medium of claim 23 , wherein the operations further comprise:

determining that the first share object has a usage grant on a first database and a select grant of a first view of the first database.

25. The non-transitory computer-storage medium of claim 24 , wherein the operations further comprise:

skipping a traversal of a set of child nodes of a parent node corresponding to the usage grant on the first database.

26. The non-transitory computer-storage medium of claim 24 , wherein the operations further comprise:

determining a particular first set of dependencies based at least in part on the select grant of the first view of the first database, the particular first set of dependencies comprising a second view of the first database associated with a second schema and a second table of the first database associated with the first share object;

determining a second particular set of dependencies of the second table of the first database associated with the first share object, the second particular set of dependencies comprising a column of the second table, and a first schema of the first database;

traversing from a particular parent node associated with the second table of the first database to a particular child node associated with the first schema of the first database;

skipping a traversal from second particular parent node of the first view of the first database to the particular child node associated with the first schema of the first database; and

determining that the particular child node associated with the first schema of the first database is a particular leaf node of a final graph structure corresponding to the final set of dependencies.

27. The non-transitory computer-storage medium of claim 26 , wherein the operations further comprise:

determining a third particular set of dependencies of the column of the second table, the third particular set of dependencies comprising a constraint of the column of second table;

traversing from a third particular parent node of the column of the second table to a second particular child node of the constraint of the column of second table; and

determining that the second particular child node of the constraint of the column of the second table is a second particular leaf node of the final graph structure based on the constraint of the column of the second table having no dependencies.

28. The non-transitory computer-storage medium of claim 23 , wherein the operations further comprise:

determining that the second share object has a usage grant on a first database and a second usage grant of a user defined function (UDF) of the first database.

29. The non-transitory computer-storage medium of claim 28 , wherein the operations further comprise:

determining a particular first set of dependencies based at least in part on the second usage grant of the UDF of the first database, the particular first set of dependencies comprising a second schema of the first database; and

traversing from a particular parent node of the second usage grant of the UDF of the first database to a particular child node of the second schema of the first database.

30. The non-transitory computer-storage medium of claim 29 , wherein the operations further comprise:

skipping a traversal of a second particular child node of the second schema of the first database; and

determining that the particular child node of the second schema of the first database is a particular leaf node of a final graph structure corresponding to the final set of dependencies.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2023
From: BUI, LOC DUC; MADAN, HITESH; MAHESH, NITHIN; MURALIDHAR, SUBRAMANIAN; SAINI, SAHAJ; WU, DI
To: SNOWFLAKE INC.
Reel/Frame 065150/0279 →
Continuity (2)
Provisional Application 63385514 · Nov 30, 2022
Related Publication 20240176711A1 · May 30, 2024
References Cited (2)
US 20100057745A1 · Li · 2010 [cited by examiner]
US 20100082538A1 · Rentsch · 2010 [cited by examiner]
Cited By (1)
US 12,537,799