IP Library Granted Patent US 10,817,536
Granted Patent B2
US 10,817,536 · App. 16/778,817 · Granted Oct 27, 2020

Transferring connections in a multiple deployment database

Inventors: Eric Robinson (San Mateo, CA); Benoit Dageville (San Mateo, CA); Shigeyuki Takeda (San Mateo, CA); Kristopher Wagner (San Mateo, CA)
Assignee: Snowflake Inc.
G06F16/27G06F16/21G06F16/2379H04L61/1511H04L67/10
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,817,536
App. No.
16/778,817
Granted
Oct 27, 2020
Kind
B2
Abstract

Systems, methods, and devices for transitioning a client connection for a database from a first deployment of the database to a second deployment of the database. A method includes maintaining the client connection between a client and the first deployment such that database traffic occurs at the first deployment. The method includes generating a unique identification that references a first connection object of the first deployment and a second connection object of a second deployment. The method includes receiving a notification that the first deployment is unavailable and providing an external connection group unique identification to the second deployment for the second deployment to determine whether the client should be connected to the second deployment. The method includes receiving a uniform resource locator from the second deployment if the client should be connected to the second deployment.

Claims (103)

1. A system comprising:

at least one processor;

a memory device including instructions, which when executed by the at least one processor, cause the at least one processor to perform operations comprising:

maintaining a client connection between a client device and a first deployment of a database, including causing traffic to be directed from the client device to the first deployment, wherein the traffic comprises updates to database data;

generating a unique identification that references a first connection object of the first deployment and a second connection object of a second deployment of the database;

receiving a notification that the first deployment is unavailable, the notification that the first deployment is unavailable comprises an indication of one or more of:

an error at the first deployment,

a scheduled downtime for the first deployment,

a power outage at the first deployment,

an unexpected downtime at the first deployment, or

a scheduled transition to discontinue the client connection between the client device and the first deployment;

providing an external connection group unique identification to the second deployment for the second deployment to determine whether the client is to be connected to the second deployment; and

receiving a uniform resource locator from the second deployment when the client device is to be connected to the second deployment, the uniform resource locator being provided to the client device for connecting to the second deployment.

2. The system of claim 1 , wherein providing the external connection group unique identification to the second deployment further comprises performing a lookup with the external connection group unique identification.

3. The system of claim 2 , further comprising providing an indication of transitioning to the second deployment when the lookup is true, wherein the indication at least includes the uniform resource locator from the second deployment.

4. The system of claim 1 , wherein the memory device includes further instructions, which when executed by the at least one processor, cause the at least one processor to perform further operations comprising:

maintaining the client connection between the client device and the second deployment in response to receiving the uniform resource locator from the second deployment, wherein maintaining the client connection between the client device and the second deployment comprises:

causing traffic to be directed from the client device to the second deployment, or

causing updates to database data to first be executed on the second deployment such that the updates may be propagated to the first deployment and one or more additional secondary deployments after being executed at the second deployment.

5. The system of claim 1 , wherein the first deployment and the second deployment comprise one or more of:

serviced by different computing resources,

located in different geographic regions,

serviced by different cloud-based database providers,

configured to store different database data associated with the client device, or

configured to store different database data associated with different client devices.

6. The system of claim 1 , wherein

the error at the first deployment is based on an invalid connection that is received from the first deployment, or

the error at the first deployment is based on an error code that is received from the first deployment.

7. The system of claim 1 , wherein providing the external connection group unique identification to the second deployment further includes:

providing the external connection group unique identification to one or more additional deployments to determine which of the second deployment or the one or more additional deployments matches the external connection group unique identification and is to be connected to the client device, and wherein only one of the second deployment or the one or more additional deployments matches the external connection group unique identification.

8. The system of claim 1 , wherein the memory device includes further instructions, which when executed by the at least one processor, cause the at least one processor to perform further operations comprising:

transitioning the client connection from the first deployment to the second deployment such that database traffic is executed at the second deployment, wherein transitioning the client connection is in response to receiving the uniform resource locator from the second deployment.

9. The system of claim 1 , further comprising:

executing updates to database data at an applicable primary deployment based on the client connection; and

propagating the updates to one or more secondary deployments such that the one or more secondary deployments comprise an up-to-date version of the database data and take over as a new primary deployment when the applicable primary deployment becomes unavailable.

10. A method comprising:

maintaining a client connection between a client device and a first deployment of a database, including causing traffic to be directed from the client device to the first deployment, wherein the traffic comprises updates to database data;

generating a unique identification that references a first connection object of the first deployment and a second connection object of a second deployment of the database;

receiving a notification that the first deployment is unavailable, the notification that the first deployment is unavailable based on an invalid connection between the client device and the first deployment, wherein the first deployment is unavailable based on:

an error at the first deployment,

a scheduled downtime for the first deployment,

a power outage at the first deployment,

an unexpected downtime at the first deployment, or

a scheduled transition to discontinue the client connection between the client device and the first deployment;

providing an external connection group unique identification to the second deployment for the second deployment to determine whether the client is to be connected to the second deployment; and

receiving a uniform resource locator from the second deployment when the client device is to be connected to the second deployment, the uniform resource locator being provided to the client device for connecting to the second deployment.

11. The method of claim 10 , wherein providing the external connection group unique identification to the second deployment further comprises performing a lookup with the external connection group unique identification.

12. The method of claim 11 , further comprising providing an indication of transitioning to the second deployment when the lookup is true, wherein the indication at least includes the uniform resource locator from the second deployment.

13. The method of claim 10 , further comprising, in response to receiving the uniform resource locator from the second deployment, transitioning the client connection from the first deployment to the second deployment such that database traffic is executed at the second deployment.

14. The method of claim 10 , wherein providing the external connection group unique identification to the second deployment comprises sending a REST (Representational State Transfer) request from the client device to the second deployment.

15. The method of claim 10 , wherein receiving the notification that the first deployment is unavailable comprises receiving an error code from the first deployment, and wherein the method further comprises:

in response to receiving the error code, sending a retry request to the first deployment;

receiving a new error code from the first deployment; and

in response to receiving the new error code from the first deployment, providing the external connection group unique identification to the second deployment.

16. The method of claim 10 , wherein maintaining the client connection between the client device and the first deployment includes pointing the client device to the first deployment and causing traffic to be directed to the first deployment, wherein the traffic comprises one or more of updates to database data or queries on the database data.

17. The method of claim 10 , further comprising:

maintaining the client connection between the client device and the second deployment in response to receiving the uniform resource locator from the second deployment, wherein maintaining the client connection between the client device and the second deployment comprises:

pointing the client device to the second deployment,

causing traffic to be directed to the second deployment, or

causing updates to database data to first be executed on the second deployment such that the updates may be propagated to the first deployment and one or more additional secondary deployments after being executed at the second deployment.

18. The method of claim 10 , further comprising:

performing a lookup with the external connection group unique identification;

providing an indication of transitioning to the second deployment when the lookup is true, wherein the indication at least includes the uniform resource locator from the second deployment.

19. The method of claim 10 , further comprising:

executing updates to database data at an applicable primary deployment based on the client connection; and

propagating the updates to one or more secondary deployments such that the one or more secondary deployments comprise an up-to-date version of the database data and take over as a new primary deployment when the applicable primary deployment becomes unavailable.

20. The method of claim 10 , wherein providing the external connection group unique identification to the second deployment further includes:

providing the external connection group unique identification to one or more additional deployments to determine which of the second deployment or the one or more additional deployments matches the external connection group unique identification and is to be connected to the client device, and wherein only one of the second deployment or the one or more additional deployments matches the external connection group unique identification.

21. A non-transitory computer-readable medium comprising instructions, which when executed by at least one processor, cause the at least one processor to perform operations comprising:

maintaining a client connection between a client device and a first deployment of a database, including causing traffic to be directed from the client device to the first deployment, wherein the traffic comprises updates to database data;

generating a unique identification that references a first connection object of the first deployment and a second connection object of a second deployment of the database;

receiving a notification that the first deployment is unavailable, the notification that the first deployment is unavailable based on an invalid connection between the client device and the first deployment, wherein the first deployment is unavailable based on:

an error at the first deployment,

a scheduled downtime for the first deployment,

a power outage at the first deployment,

an unexpected downtime at the first deployment, or

a scheduled transition to discontinue the client connection between the client device and the first deployment;

providing an external connection group unique identification to the second deployment for the second deployment to determine whether the client is to be connected to the second deployment; and

receiving a uniform resource locator from the second deployment when the client device is to be connected to the second deployment, the uniform resource locator being provided to the client device for connecting to the second deployment.

22. The non-transitory computer-readable medium of claim 21 , wherein providing the external connection group unique identification to the second deployment further comprises performing a lookup with the external connection group unique identification.

23. The non-transitory computer-readable medium of claim 22 , wherein the non-transitory computer-readable medium comprises further instructions, which when executed by the at least one processor, further cause the at least one processor to perform further operations comprising:

providing an indication of transitioning to the second deployment when the lookup is true, wherein the indication at least includes the uniform resource locator from the second deployment.

24. The non-transitory computer-readable medium of claim 21 , wherein the non-transitory computer-readable medium comprises further instructions, which when executed by the at least one processor, further cause the at least one processor to perform further operations comprising:

in response to receiving the uniform resource locator from the second deployment, transitioning the client connection from the first deployment to the second deployment such that database traffic is executed at the second deployment.

25. The non-transitory computer-readable medium of claim 21 , wherein receiving the notification that the first deployment is unavailable comprises receiving an error code from the first deployment, and wherein the non-transitory computer-readable medium comprises further instructions, which when executed by the at least one processor, further cause the at least one processor to perform further operations comprising:

in response to receiving the error code, sending a retry request to the first deployment;

receiving a new error code from the first deployment; and

in response to receiving the new error code from the first deployment, providing the external connection group unique identification to the second deployment.

26. The non-transitory computer-readable medium of claim 21 , wherein determining whether the client device is to be connected to the second deployment comprises the second deployment performing a lookup with the external connection group unique identification, wherein:

the client connection is transitioned to the second deployment when the lookup is true; and

the client connection is not transitioned to the second deployment when the lookup is false.

27. The non-transitory computer-readable medium of claim 21 , wherein providing the external connection group unique identification to the second deployment comprises sending a REST (Representational State Transfer) request from the client device to the second deployment.

28. A method comprising:

maintaining a client connection between a client device and a first deployment of a database, including causing traffic to be directed from the client device to the first deployment, wherein the traffic comprises updates to database data;

generating a unique identification that references a first connection object of the first deployment and a second connection object of a second deployment of the database;

receiving a notification that the first deployment is unavailable, the notification that the first deployment is unavailable comprises an indication of one or more of:

an error at the first deployment,

a scheduled downtime for the first deployment,

a power outage at the first deployment,

an unexpected downtime at the first deployment, or

a scheduled transition to discontinue the client connection between the client device and the first deployment;

providing an external connection group unique identification to the second deployment for the second deployment to determine whether the client is to be connected to the second deployment; and

receiving a uniform resource locator from the second deployment when the client device is to be connected to the second deployment, the uniform resource locator being provided to the client device for connecting to the second deployment.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 053761 FRAME: 0893. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Aug 12, 2021
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 057181/0738 →
CHANGE OF NAME Recorded Sep 14, 2020
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 053761/0893 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE'S NAME PREVIOUSLY RECORDED AT REEL: 053600 FRAME: 0446. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Sep 14, 2020
From: ROBINSON, ERIC; DAGEVILLE, BENOIT; TAKEDA, SHIGEYUKI; WAGNER, KRISTOPHER
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 053769/0125 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2020
From: ROBINSON, ERIC; DAGEVILLE, BENOIT; TAKEDA, SHIGEYUKI; WAGNER, KRISTOPHER
To: SNOWFLAKE INC.
Reel/Frame 053600/0446 →
Continuity (2)
Continuation 16357822 · Mar 19, 2019
Related Publication 20200301943A1 · Sep 24, 2020