IP Library Granted Patent US 11,588,883
Granted Patent B2
US 11,588,883 · App. 16/693,195 · Granted Feb 21, 2023

Method and system for workload management for data management systems

Inventors: Florian Michael Waas (San Francisco, CA); Mohamed Soliman (Foster City, CA); Zhongxian Gu (Sunnyvale, CA); Lyublena Rosenova Antova (Sunnyvale, CA); Tuan Anh Cao (San Francisco, CA); Entong Shen (Foster City, CA); Michael Alexander Duller (San Francisco, CA)
Assignee: DATOMETRY, INC.
H04L67/1001H04L47/70H04L67/141
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,588,883
App. No.
16/693,195
Granted
Feb 21, 2023
Kind
B2
Abstract

A system for controlling access to a downstream database management system (DMS) is provided. The system comprises an interface to maintain client connections with a plurality of upstream clients; a pooling component to establish a dynamic pool, and to selectively route each client connection to a pool; within each pool maintaining a queue comprising client database requests associated with particular client connections; and selectively granting access to the client database requests within each queue to at least one downstream DMS.

Claims (36)

1. A method for sharing a limited number of database connections with a larger number of clients, the method comprising:

at a pooling component: maintaining a plurality of incoming connections to a plurality of databases to process queries from a plurality of N clients, wherein N is a number;

defining a plurality of M queuing pools, each queuing pool associated with at least one database and providing one or more outgoing connections to the associated database, wherein:

M is a number smaller than N; and

each queuing pool is characterized by a number of concurrent connections an instance of the pool permits to the associated database;

selecting a queuing pool to store queries for each incoming connection from the plurality of clients, wherein at least one queuing pool is used to store queries from at least two different clients, said queuing pools used to reduce a number of connections to the plurality of databases by requiring the databases to have connections with the smaller number of M queuing pools rather than the larger number of N clients;

forwarding queries from the queuing pools to the databases associated with the queuing pools; and

providing responses to the clients based on responses that the databases provide to the forwarded queries.

2. The method of claim 1 further comprising:

storing requests that are for a particular database and that are received from two different clients through two different incoming connections in a particular queuing pool; and

forwarding the stored requests through two concurrent outgoing connections to the particular database for processing.

3. The method of claim 2 further comprising trace monitoring each incoming connection to identify two or more of: a time when a request was received, time spent waiting for admission to a pool, a transcript of the request, a time when first data pursuant to the client database request is received, and a time when a client database request is completed.

4. The method of claim 1 , wherein at least one particular queuing pool is associated with two or more databases.

5. The method of claim 4 further comprising performing a load balancing operation at the particular queuing pool to distribute queries for a plurality of incoming connections from a plurality of clients among the two or more databases.

6. The method of claim 1 , wherein the pooling component routes each incoming client connection to a queuing pool based on a policy that associates each queuing pool with a set of criteria to match to the incoming connections.

7. The method of claim 1 , wherein each queuing pool limits a number of concurrent connections permitted to the pool's associated database.

8. The method of claim 1 , wherein each queuing pool limits a number of connection requests that can be waitlisted within the queue.

9. The method of claim 1 further comprising providing a control module configured to allow administrators to configure each pool.

10. The method of claim 1 , wherein at least one particular queuing pool limits a number of concurrent connections to its associated database to a maximum number, wherein a number of incoming connections assigned to the particular queuing pool is greater than the maximum number, wherein a number of concurrent outgoing connections from the particular queuing pool to the associated database is smaller than the maximum number.

11. A non-transitory machine readable medium storing a program which when executed on set of processing units of a host computer shares a limited number of database connections with a larger number of clients, the program comprising a set of instructions for:

maintaining a plurality of incoming connections to a plurality of databases to process queries from a plurality of N clients, wherein N is a number;

defining a plurality of M queuing pools, each queuing pool associated with at least one database and providing one or more outgoing connections to the associated database, wherein:

M is a number smaller than N; and

each queuing pool is characterized by a number of concurrent connections an instance of the pool permits to the associated database;

selecting a queuing pool to store queries for each incoming connection from the plurality of clients, wherein at least one queuing pool is used to store queries from at least two different clients, said queuing pools used to reduce a number of connections to the plurality of databases by requiring the databases to have connections with the smaller number of M queuing pools rather than the larger number of N clients;

forwarding queries from the queuing pools to the databases associated with the queuing pools; and

providing responses to the clients based on responses that the databases provide to the forwarded queries.

12. The non-transitory machine readable medium of claim 11 , wherein the program further comprises sets of instructions for:

storing requests that are for a particular database and that are received from two different clients through two different incoming connections in a particular queuing pool; and

forwarding the stored requests through two concurrent outgoing connections to the particular database for processing.

13. The non-transitory machine readable medium of claim 12 , wherein the program further comprises a set of instructions for trace monitoring each incoming connection to identify two or more of: a time when a request was received, time spent waiting for admission to a pool, a transcript of the request, a time when first data pursuant to the client database request is received, and a time when a client database request is completed.

14. The non-transitory machine readable medium of claim 11 , wherein the program further comprises a set of instructions for routing each incoming client connection to a queuing pool based on a policy that associates each queuing pool with a set of criteria to match to the incoming connections.

15. The non-transitory machine readable medium of claim 11 , wherein each queuing pool limits a number of concurrent connections permitted to the pool's associated database.

16. The non-transitory machine readable medium of claim 11 , wherein each queuing pool limits a number of connection requests that can be waitlisted within the queue.

17. The non-transitory machine readable medium of claim 11 , wherein the program further comprises a set of instructions for providing a control module configured to allow administrators to configure each pool.

18. The non-transitory machine readable medium of claim 11 , wherein at least one particular queuing pool limits a number of concurrent connections to its associated database to a maximum number, wherein a number of incoming connections assigned to the particular queuing pool is greater than the maximum number, wherein a number of concurrent outgoing connections from the particular queuing pool to the associated database is smaller than the maximum number.

Assignments (1)
CONFIRMATORY ASSIGNMENT Recorded Feb 26, 2026
From: DATOMETRY, INC.
To: SNOWFLAKE INC.
Reel/Frame 074957/0656 →
Continuity (3)
Continuation 15250887 · Aug 29, 2016
Provisional Application 62210896 · Aug 27, 2015
Related Publication 20200169600A1 · May 28, 2020