IP Library Granted Patent US 12,461,939
Granted Patent B2
US 12,461,939 · App. 18/931,781 · Granted Nov 4, 2025

Directing requests to databases based on client account association

Inventors: Benoit Dageville (Foster City, CA); Eric Robinson (Sammamish, WA); Martin Hentschel (San Mateo, CA)
Assignee: Snowflake Inc.
G06F16/273G06F16/245H04L67/1097
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,461,939
App. No.
18/931,781
Filed
Oct 30, 2024
Granted
Nov 4, 2025
Kind
B2
Examiner
WU, YICUN
Art Unit
2153
USPC
707/615
Abstract

Systems of methods of directing requests to databases based on client account association is disclosed. A method includes determining a first client account associated with a first request to perform a first transaction. The method includes determining a second client account associated with a second request to perform a second transaction. The method includes selecting, for the first request, a primary deployment that stores a first dataset responsive to determining the first client account associated with the first request. The method includes selecting, for the second request, a secondary deployment that stores a second dataset that includes the first dataset responsive to determining the second client account associated with the second request. The method includes executing, while the primary deployment and the secondary deployment are both available, the first transaction on the first dataset at the primary deployment and the second transaction on the second dataset at the secondary deployment.

Claims (77)

1 . A system comprising:

a cache memory to store datasets; and

a processor, operatively coupled with the cache memory, to:

determine a first client account associated with a first request to perform a first transaction;

determine a second client account associated with a second request to perform a second transaction;

select, for the first request, a primary deployment that stores a first dataset responsive to determining the first client account associated with the first request;

select, for the second request, a secondary deployment that stores a second dataset that comprises the first dataset responsive to determining the second client account associated with the second request; and

execute, while the primary deployment and the secondary deployment are both available, the first transaction on the first dataset at the primary deployment and the second transaction on the second dataset at the secondary deployment.

2 . The system of claim 1 , wherein the processor to:

propagate the second transaction on the second dataset to the primary deployment; and

execute queries on the second dataset at the primary deployment.

3 . The system of claim 1 , wherein the processor to:

determine that the first dataset stored in the primary deployment is unavailable.

4 . The system of claim 3 , wherein to determine that the first dataset stored in the primary deployment is unavailable, the processor to:

determine that a power outage has occurred at the primary deployment, or

determine that an error resulting in improper modification or deletion of the first dataset at the primary deployment has occurred.

5 . The system of claim 3 , wherein to determine that the first dataset stored in the primary deployment is unavailable, the processor to:

determine that a data center outage has occurred at the primary deployment.

6 . The system of claim 3 , wherein to determine that the first dataset stored in the primary deployment is unavailable, the processor to:

determine that a cloud provider of the primary deployment has experienced an outage.

7 . The system of claim 3 , wherein to determine that the first dataset stored in the primary deployment is unavailable, the processor to:

determine that an error has occurred at the primary deployment.

8 . The system of claim 3 , wherein to determine that the first dataset stored in the primary deployment is unavailable, the processor to:

determine that the primary deployment is undergoing scheduled downtime.

9 . The system of claim 1 , wherein the first dataset stored on the primary deployment is an encrypted version of the first dataset that is generated based on a first encryption key and the second dataset stored on the secondary deployment is an encrypted version of the second dataset that is generated based on a second encryption key.

10 . The system of claim 1 , wherein the processor to:

copy the first dataset stored in the primary deployment to a first region of the secondary deployment to cause the secondary deployment to copy the first dataset to a second region of the secondary deployment.

11 . A method, comprising:

determining a first client account associated with a first request to perform a first transaction;

determining a second client account associated with a second request to perform a second transaction;

selecting, for the first request, a primary deployment that stores a first dataset responsive to determining the first client account associated with the first request;

selecting, for the second request, a secondary deployment that stores a second dataset that comprises the first dataset responsive to determining the second client account associated with the second request; and

executing, while the primary deployment and the secondary deployment are both available, the first transaction on the first dataset at the primary deployment and the second transaction on the second dataset at the secondary deployment.

12 . The method of claim 11 , further comprising:

propagating the second transaction on the second dataset to the primary deployment; and

executing queries on the second dataset at the primary deployment.

13 . The method of claim 11 , further comprising:

determining that the first dataset stored in the primary deployment is unavailable.

14 . The method of claim 13 , wherein determining that the first dataset stored in the primary deployment is unavailable further comprises:

determining that a power outage has occurred at the primary deployment; or

determining that an error resulting in improper modification or deletion of the first dataset at the primary deployment has occurred.

15 . The method of claim 13 , wherein determining that the first dataset stored in the primary deployment is unavailable further comprises:

determining that a data center outage has occurred at the primary deployment.

16 . The method of claim 13 , wherein determining that the first dataset stored in the primary deployment is unavailable further comprises:

determining that a cloud provider of the primary deployment has experienced an outage.

17 . The method of claim 13 , wherein determining that the first dataset stored in the primary deployment is unavailable further comprises:

determining that an error has occurred at the primary deployment.

18 . The method of claim 13 , wherein determining that the first dataset stored in the primary deployment is unavailable further comprises:

determining that the primary deployment is undergoing scheduled downtime.

19 . The method of claim 11 , wherein the first dataset stored on the primary deployment is an encrypted version of the first dataset that is generated based on a first encryption key and the second dataset stored on the secondary deployment is an encrypted version of the second dataset that is generated based on a second encryption key.

20 . The method of claim 11 , further comprising:

copying the first dataset stored in the primary deployment to a first region of the secondary deployment to cause the secondary deployment to copy the first dataset to a second region of the secondary deployment.

21 . A non-transitory computer readable storage media comprising instructions that, when executed by a processor, cause the processor to:

determine a first client account associated with a first request to perform a first transaction;

determine a second client account associated with a second request to perform a second transaction;

select, for the first request, a primary deployment that stores a first dataset responsive to determining the first client account associated with the first request;

select, for the second request, a secondary deployment that stores a second dataset that comprises the first dataset responsive to determining the second client account associated with the second request; and

execute, while the primary deployment and the secondary deployment are both available, the first transaction on the first dataset at the primary deployment and the second transaction on the second dataset at the secondary deployment.

22 . The non-transitory computer readable storage media of claim 21 , wherein the processor to:

propagate the second transaction on the second dataset to the primary deployment; and

execute queries on the second dataset at the primary deployment.

23 . The non-transitory computer readable storage media of claim 21 , wherein the processor to:

determine that the first dataset in the primary deployment is unavailable.

24 . The non-transitory computer readable storage media of claim 23 , wherein to determine that the first dataset in the primary deployment is unavailable, the processor to:

determine that a power outage has occurred at the primary deployment, or

determine that an error resulting in improper modification or deletion of the first dataset at the primary deployment has occurred.

25 . The non-transitory computer readable storage media of claim 23 , wherein to determine that the first dataset in the primary deployment is unavailable, the processor to:

determine that a data center outage has occurred at the primary deployment.

26 . The non-transitory computer readable storage media of claim 23 , wherein to determine that the first dataset in the primary deployment is unavailable, the processor to:

determine that a cloud provider of the primary deployment has experienced an outage.

27 . The non-transitory computer readable storage media of claim 23 , wherein to determine that the first dataset in the primary deployment is unavailable, the processor to:

determine that an error has occurred at the primary deployment.

28 . The non-transitory computer readable storage media of claim 23 , wherein to determine that the first dataset in the primary deployment is unavailable, the processor to:

determine that the primary deployment is undergoing scheduled downtime.

29 . The non-transitory computer readable storage media of claim 21 , wherein the first dataset stored on the primary deployment is an encrypted version of the first dataset that is generated based on a first encryption key and the second dataset stored on the secondary deployment is an encrypted version of the second dataset that is generated based on a second encryption key.

30 . The non-transitory computer readable storage media of claim 21 , wherein the processor to:

copy the first dataset stored in the primary deployment to a first region of the secondary deployment to cause the secondary deployment to copy the first dataset to a second region of the secondary deployment.

Assignments (2)
CHANGE OF NAME Recorded Feb 21, 2025
From: SNOWFLAKE COMPUTING, INC.
To: SNOWFLAKE INC.
Reel/Frame 070610/0341 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2024
From: DAGEVILLE, BENOIT; ROBINSON, ERIC; HENTSCHEL, MARTIN
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 069300/0793 →
Continuity (6)
Continuation 18123108 · Mar 17, 2023
Continuation 17703804 · Mar 24, 2022
Continuation 17491392 · Sep 30, 2021
Continuation 16392258 · Apr 23, 2019
Provisional Application 62694656 · Jul 6, 2018
Related Publication 20250053576A1 · Feb 13, 2025
References Cited (16)
US 7353231B1 · Eslambolchi et al. · 2008 [cited by applicant]
US 7827136B1 · Wang et al. · 2010 [cited by applicant]
US 10503427B2 · Botes · 2019 [cited by examiner]
US 10817540B2 · Cruanes et al. · 2020 [cited by applicant]
US 10992530B2 · Redkina et al. · 2021 [cited by applicant]
US 20140032981A1 · Ahmed et al. · 2014 [cited by applicant]
US 20160196320A1 · Borowiec et al. · 2016 [cited by applicant]
US 20160246865A1 · Bourbonnais et al. · 2016 [cited by applicant]
US 20180067822A1 · Mcalister et al. · 2018 [cited by applicant]
US 20190102071A1 · Redkina et al. · 2019 [cited by applicant]
US 20200012659A1 · Dageville et al. · 2020 [cited by applicant]
US 20200104310A1 · Dageville et al. · 2020 [cited by applicant]
Non-Final Office Action Correspondence of U.S. Appl. No. 16/700,958 mailed Mar. 7, 2024, 9 pages. [cited by applicant]
Extended European Search Report of Application No. 23197819.8 mailed Jan. 3, 2024, 14 pages. [cited by applicant]
European Patent Office, European Search Report mailed on Feb. 1, 2021, for European Application No. 19830937.9. [cited by applicant]
Korean Intellectual Property Office, Notice of Preliminary Rejection mailed on Dec. 14, 2020, for Korean Patent Application No. 10-2020-7021622. [cited by applicant]