IP Library › Granted Patent US 10,949,402
Granted Patent B1
US 10,949,402 · App. 16/900,840 · Granted Mar 16, 2021

Share replication between remote deployments

Inventors: Pui Kei Johnston Chu (San Mateo, CA); Benoit Dageville (Foster City, CA); Shreyas Narendra Desai (Bellevue, WA); German Alberto Gil Echeverri (San Francisco, CA); Prasanna Krishnan (Palo Alto, CA); Vishnu Dutt Paladugu (Seattle, WA); Bowen Zhang (Newark, CA)
Assignee: Snowflake Inc.
G06F16/1844G06F9/546G06F16/128G06F16/1734G06F16/1827
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,949,402
App. No.
16/900,840
Granted
Mar 16, 2021
Kind
B1
Abstract

Provided herein are systems and methods for an efficient method of replicating share objects to remote deployments. For example, the method may comprise modifying a share object of a first account of a data exchange into a global object wherein the share object includes grant metadata indicating share grants to a set of objects of a database. The method may further comprise creating, in a second account of the data exchange, a local replica of the share object on the remote deployment based on the global object, wherein the second account is located in a remote deployment. The set of objects of the database may be replicated to a local database replica on the remote deployment and the share grants may be replicated to the local replica of the share object.

Claims (71)

1. A method comprising:

modifying, by a processing device, a share object of a first account to generate a global representation of the share object located in a region associated with a second account, the first account residing in a first deployment and wherein the share object includes share grants to a set of objects of a database;

creating, in the second account, a local replica of the share object based on the global representation of the share object, wherein the second account resides in a second deployment remote from the first deployment;

replicating the set of objects of the database to a local database replica on the second deployment; and

refreshing the share grants to the local replica of the share object.

2. The method of claim 1 , further comprising:

performing a subsequent refresh of the share grants to the local replica of the share object; and

performing a subsequent replication of the set of objects of the database to the local database replica, wherein one or more of the share grants and the set of objects are modified.

3. The method of claim 2 , wherein in response to determining that one or more of the set of objects are not present in the local database replica during the subsequent refresh:

refreshing share grants associated with objects that are present in the local database replica to the local replica of the share object; and

creating a log file indicating:

the one or more objects that are not present in the local database replica; and

share grants associated with the one or more objects that are not present in the local database replica.

4. The method of claim 1 , wherein refreshing the share grants to the local replica of the share object comprises:

receiving a share refresh message;

serializing the share grants of the share object;

storing the serialized share grants into a snapshot message, wherein the snapshot message includes information to deserialize the serialized share grants; and

transmitting the snapshot message to the second deployment.

5. The method of claim 4 , wherein refreshing the share grants to the local replica of the share object further comprises:

de-serializing the snapshot message based on the information to deserialize the serialized share grants; and

applying the share grants to the local replica of the share object.

6. The method of claim 1 , wherein creating the local replica comprises:

establishing a secure connection between the first account and the second account; and

establishing a remote execution context in the second account, wherein the first account may create the local replica in the second account using the remote execution context.

7. A system comprising:

a memory; and

a processing device, operatively coupled to the memory, the processing device to:

modify a share object of a first account to generate a global representation of the share object located in a region associated with a second account, the first account residing in a first deployment and wherein the share object includes share grants to a set of objects of a database;

create, in the second account, a local replica of the share object based on the global representation of the share object, wherein the second account resides in a second deployment that is remote from the first deployment;

replicate the set of objects of the database to a local database replica on the second deployment; and

refresh the share grants to the local replica of the share object.

8. The system of claim 7 , wherein to create the local replica, the processing device is to:

establish a secure connection between the first account and the second account; and

establish a remote execution context in the second account, wherein the first account may create the local replica in the second account using the remote execution context.

9. The system of claim 7 , wherein the processing device is further to:

perform a subsequent refresh of the share grants to the local replica of the share object; and

perform a subsequent replication of the set of objects of the database to the local database replica, wherein one or more of the share grants and the set of objects are modified.

10. The system of claim 9 , wherein in response to determining that one or more of the set of objects are not present in the local database replica during the subsequent refresh, the processing device is to:

refresh share grants associated with objects that are present in the local database replica to the local replica of the share object; and

create a log file indicating:

the one or more objects that are not present in the local database replica; and

share grants associated with the one or more objects that are not present in the local database replica.

11. The system of claim 7 , wherein to refresh the share grants to the local replica of the share object, the processing device is to:

receive a share refresh message;

serialize the share grants of the share object;

store the serialized share grants into a snapshot message, wherein the snapshot message includes information to deserialize the serialized share grants; and

transmit the snapshot message to the second deployment.

12. The system of claim 11 , wherein to refresh the share grants to the local replica of the share object, the processing device is further to:

deserialize the snapshot message based on the information to deserialize the serialized share grants; and

apply the share grants to the local replica of the share object.

13. A non-transitory computer readable storage medium having instructions stored thereon which, when executed by a processing device, cause the processing device to:

modify, by the processing device, a share object of a first account to generate a global representation of the share object located in a region associated with a second account, the first account residing in a first deployment and wherein the share object includes share grants to a set of objects of a database;

create, in the second account, a local replica of the share object based on the global representation of the share object, wherein the second account resides in a second deployment that is remote from the first deployment;

replicate the set of objects of the database to a local database replica on the second deployment; and

refresh the share grants to the local replica of the share object.

14. The non-transitory computer readable storage medium of claim 13 , wherein to refresh the share grants to the local replica of the share object, the processing device is to:

receive a share refresh message;

serialize the share grants of the share object;

store the serialized share grants into a snapshot message, wherein the snapshot message includes information to deserialize the serialized share grants; and

transmit the snapshot message to the second deployment.

15. The non-transitory computer readable storage medium of claim 14 , wherein to refresh the share grants to the local replica of the share object, the processing device is further to:

deserialize the snapshot message based on the information to deserialize the serialized share grants; and

apply the share grants to the local replica of the share object.

16. The non-transitory computer readable storage medium of claim 13 , wherein the processing device is further to:

perform a subsequent refresh of the share grants to the local replica of the share object; and

perform a subsequent replication of the set of objects of the database to the local database replica, wherein one or more of the share grants and the set of objects are modified.

17. The non-transitory computer readable storage medium of claim 16 , wherein in response to determining that one or more of the set of objects are not present in the local database replica during the subsequent refresh, the processing device is to:

refresh share grants associated with objects that are present in the local database replica to the local replica of the share object; and

create a log file indicating:

the one or more objects that are not present in the local database replica; and

share grants associated with the one or more objects that are not present in the local database replica.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2020
From: CHU, PUI KEI JOHNSTON; DAGEVILLE, BENOIT; DESAI, SHREYAS NARENDRA; GIL ECHEVERRI, GERMAN ALBERTO; KRISHNAN, PRASANNA; PALADUGU, VISHNU DUTT; ZHANG, BOWEN
To: SNOWFLAKE INC.
Reel/Frame 053353/0184 →
Continuity (1)
Provisional Application 63030267 · May 26, 2020
Cited By (2)
US 12,235,868 US 12,277,093