IP Library Granted Patent US 10,572,549
Granted Patent B2
US 10,572,549 · App. 15/153,412 · Granted Feb 25, 2020

Networked database connectivity

Inventor: Chaithanya Kanumolu (Narendra Nagar, IN)
Assignee: salesforce.com, inc.
G06F16/951H04L63/029H04L63/0263H04L63/102
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,572,549
App. No.
15/153,412
Granted
Feb 25, 2020
Kind
B2
Abstract

Databases that reside on a private network behind a firewall may be difficult to access from a cloud platform on the Internet. Techniques disclosed herein allow an Internet system to communicate with multiple different databases behind multiple different firewalls, however. A client-side private computer system, from behind a firewall, transmits a series of database request status inquires to a server system (not behind the firewall). These status inquiries may be sent as HTTP long poll messages. When the server wishes to query a database on the private network, it responds to one of the database request status inquiries. Because the client-side computer initiated communication, the server response is allowed to pass through the firewall when it might otherwise be blocked. Employing such techniques in parallel allows a server to interact with multiple firewalled databases without the difficulties and inconvenience of attempting a VPN connection.

Claims (44)

1. A non-transitory computer-readable medium having stored thereon computer instructions that are capable of causing a server computer system to perform operations comprising:

receiving, from a private computer system located behind a firewall of a private network, a database request status inquiry, wherein the firewall is operable to prevent unsolicited requests that are initiated by the server computer system from reaching the private computer system, and wherein the database request status inquiry initiates a connection between the private computer system and the server computer system that allows the server computer system to send information to the private computer system on behalf of one of a plurality of client computer systems coupled to the server computer system;

maintaining the connection for a specified duration of time;

during the specified duration of time:

receiving, over a wide-area network, a data request from a particular one of the plurality of client computer systems;

in response to determining that the data request is requesting access to the private computer system, sending, to the private computer system via the firewall, a response to the database request status inquiry, wherein the response includes a database query that is based on the data request received from the particular client computer system;

receiving, from the private computer system via the firewall, a database communications response that includes data generated based on information contained in the database query; and

transmitting a response to the data request that includes information from the database communications response.

2. The non-transitory computer-readable medium of claim 1 , wherein the database query corresponds to a database connection protocol used by a database connected to the private computer system.

3. The non-transitory computer-readable medium of claim 1 , wherein receiving the database request status inquiry comprises receiving a HTTP request.

4. The non-transitory computer-readable medium of claim 1 , wherein the operations further comprise generating the response to the data request, wherein the response to the data request is transmitted via HTTP.

5. The non-transitory computer-readable medium of claim 1 , wherein the operations further comprise:

receiving a plurality of data requests from one or more client computer systems;

receiving a plurality of series of database request status inquiries from a respective plurality of private computer systems located behind a plurality of firewalls of a plurality of private networks; and

in response to different database request status inquiries of the plurality of series of database request status inquiries, transmitting a plurality of database queries to different ones of the plurality of firewalls.

6. The non-transitory computer-readable medium of claim 1 , wherein the database request status inquiry indicates the specified duration of time for which the connection can be maintained.

7. The non-transitory computer-readable medium of claim 1 , wherein the operations further comprise:

receiving another database request status inquiry from the private computer system in response to the specified duration of time elapsing.

8. The non-transitory computer-readable medium of claim 1 , wherein the response to the database request status inquiry is sent on a same network port from which the database request status inquiry is received.

9. The non-transitory computer-readable medium of claim 1 , wherein the operations further comprise:

receiving a second database request status inquiry from the private computer system, wherein the database request status inquiry enables access to data stored in a first database managed by the private computer system, and wherein the second database request status inquiry enables access to data stored in a second database managed by the private computer system.

10. A method, comprising:

receiving, by a server computer system from a private computer system located behind a firewall of a private network, a database request status inquiry, wherein the firewall is operable to prevent unsolicited requests that are initiated by the server computer system from reaching the private computer system, and wherein the database request status inquiry initiates a connection between the server computer system and the private computer system that allows the server computer system to send information to the private computer system on behalf of one of a plurality of client computer systems coupled to the server computer system;

maintaining, by the server computer system, the connection for a specified duration of time;

during the specified duration of time:

receiving, by the server computer system over a wide-area network, a data request from a particular one of the plurality of client computer systems;

in response to determining that the data request is requesting access to the private computer system, the server computer system transmitting, to the private computer system via the firewall, a response to the database request status inquiry, wherein the response includes a database query that is based on the data request received from the particular client computer system;

receiving, by the server computer system via the firewall from the private computer system, a database communications response that includes data generated based on information contained in the database query; and

transmitting, by the server computer system, a response to the data request that includes information from the database communications response.

11. The method of claim 10 , wherein at least a portion of the database query transmitted to the private computer system is encrypted, but wherein transmitting the database query is performed without the use of a virtual private network (VPN) connection to the private network.

12. The method of claim 10 , further comprising the server computer system providing user authorization information that is associated with the data request to the private computer system via the firewall, wherein the received database communications response is based on the user authorization information.

13. The method of claim 10 , further comprising building the database query, prior to the transmitting, in the format of an HTTP PUT or HTTP POST transmission.

14. The method of claim 10 , wherein the database query is configured to be executable as a Java Database Connectivity (JDBC) request by the private computer system.

15. The method of claim 10 , wherein the database query is transmitted via a same communication port of the firewall as was used to transmit the database request status inquiry.

16. A non-transitory computer-readable medium having computer instructions stored thereon that are capable of being executed to cause a private computer system that is located behind a firewall of a private network to perform operations comprising:

transmitting, via the firewall, a database request status inquiry to a server computer system on a different network, wherein the firewall is operable to prevent unsolicited requests that are initiated by the server computer system from reaching the private computer system, wherein the database request status inquiry initiates a connection between the private computer system and the server computer system that allows the server computer system to send information through the firewall to the private computer system on behalf of one of a plurality of client computer systems coupled to the server computer system, and wherein the server computer system is operable to maintain the connection for a specified duration of time;

during the specified duration of time, receiving, in response to the database request status inquiry, a database query from the server computer system, wherein the server computer system is operable to generate the database query based on a data request received from a particular one of the plurality of client computer systems during the specified duration of time;

transmitting, to a database, a structured database command based on the database query;

receiving, from the database in response to the structured database command, reply information;

building a database communications response that includes data from the reply information; and

transmitting, to the server computer system, the database communications response wherein the server computer system is operable to transmit a response to the data request that includes information from the database communications response.

17. The non-transitory computer-readable medium of claim 16 , wherein the operations further comprise generating the structured database command based on command input specifications for the database.

18. The non-transitory computer-readable medium of claim 16 , wherein the operations further comprise allowing the server computer system to make database queries, through the firewall, to a plurality of databases on the private network that are accessible to the private computer system.

19. The non-transitory computer-readable medium of claim 16 , wherein the operations further comprise determining, based on the received database query, which of a plurality of databases on the private network that the database query is directed to.

Assignments (2)
CHANGE OF NAME Recorded Nov 21, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069431/0007 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2016
From: KANUMOLU, CHAITHANYA
To: SALESFORCE.COM, INC.
Reel/Frame 038569/0533 →
Priority Claims (1)
IN 201641002846 · Jan 27, 2016 · national
Continuity (1)
Related Publication 20170214749A1 · Jul 27, 2017
Cited By (1)
US 12,591,699