IP Library Granted Patent US 11,200,232
Granted Patent B2
US 11,200,232 · App. 16/553,067 · Granted Dec 14, 2021

Querying a not only structured query language (NOSQL) database using structured query language (SQL) commands

Inventor: James Taylor (San Francisco, CA)
Assignee: salesforce.com, Inc.
G06F16/24534
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,200,232
App. No.
16/553,067
Granted
Dec 14, 2021
Kind
B2
Abstract

Techniques for querying a Not-Only/Non Structured Query Language (NoSQL) database using Structure Query Language (SQL) commands. A SQL query is received. The SQL query is transformed into one or more non-relational database scans having associated row key ranges. The one or more non-relational database scans are executed in parallel for each row key range. The results from the parallel scans of the non-relational database are combined. The combined results are presented as results of the SQL query.

Claims (36)

1. A method comprising:

receiving, with a Structured Query Language (SQL)-to-Non-Structured Query Language (NoSQL) agent, a SQL query, wherein the SQL query is received through a SQL application programming interface (API) at a first architectural level;

transforming, with the SQL-to-NoSQL agent, the SQL query into a set of one or more non-relational database scans having associated row key ranges and having no joins in the set utilizing a map of feature values;

sending, with the SQL-to-NoSQL agent, the set of one or more non-relational database scans having no joins with instructions for execution in parallel for each row key range to the non-relational database through a second API at a second architectural level that is lower than the first architectural level;

causing results from the set of one or more non-relational database scans to be joined;

receiving, with the SQL-to-NoSQL agent, results from the set of one or more non-relational database scans through the second API;

performing, with the SQL-to-NoSQL agent, merge sorting on the received results from the set of one or more non-relational database scans to generate combined results to provide an aggregate result to the SQL query; and

transmitting, with the SQL-to-NoSQL agent, the aggregated result as results of the SQL query through the SQL API.

2. The method of claim 1 wherein the non-relational database comprises a non-relational distributed database.

3. The method of claim 1 wherein the SQL-to-NoSQL agent operates to pass multiple NoSQL scans through multiple remote procedure calls (RPCs).

4. The method of claim 1 wherein the non-relational database is part of a multitenant database environment.

5. The method of claim 1 further comprising receiving a schema for data in the non-relational database.

6. The method of claim 5 wherein the SQL query language is used to manage the schema for the data in the non-relational database.

7. The method of claim 1 further comprising generating a query plan with a server-side component that builds a map of feature values and returns one aggregated row per query key.

8. A non-transitory computer-readable medium having stored thereon instructions that, when executed, are configurable to cause one or more processors to:

receive, with a Structured Query Language (SQL)-to-Non-Structured Query Language (NoSQL) agent, a SQL query, wherein the SQL query is received through a first application programming interface (API) at a first architectural level;

transform, with the SQL-to-NoSQL agent, the SQL query into a set of one or more non-relational database scans having associated row key ranges and having no joins in the set by building a map of feature values;

send, with the SQL-to-NoSQL agent, the set of one or more non-relational database scans having no joins with instructions for execution in parallel for each row key range to the non-relational database through a second API at a second architectural level that is lower than the first architectural level;

cause results from the set of one or more non-relational database scans to be joined;

receive, with the SQL-to-NoSQL agent, results from the set of one or more non-relational database scans through the second API;

perform, with the SQL-to-NoSQL agent, merge sorting on the received results from the set of one or more non-relational database scans to generate combined results to provide an aggregate result to the SQL query; and

transmit, with the SQL-to-NoSQL agent, the aggregated result as results of the SQL query through the first API.

9. The non-transitory computer-readable medium of claim 8 wherein the non-relational database comprises a non-relational distributed database.

10. The non-transitory computer-readable medium of claim 8 wherein the SQL-to-NoSQL agent operates to pass multiple NoSQL scans through multiple remote procedure calls (RPCs).

11. The non-transitory computer-readable medium of claim 8 wherein the non-relational database is part of a multitenant database environment.

12. The non-transitory computer-readable medium of claim 8 further comprising instructions that, when executed by the one or more processors, cause the one or more processors to receive a schema for data in the non-relational database.

13. The non-transitory computer-readable medium of claim 12 wherein the SQL query language is used to manage the schema for the data in the non-relational database.

14. The non-transitory computer-readable medium of claim 7 further comprising instructions that, when executed by the one or more processors, are configurable to cause the one or more processors to generate a query plan with a server-side component that builds a map of feature values and returns one aggregated row per query key.

15. A system comprising:

one or more interfaces to communicate with one or more user systems;

a server system having one or more hardware processors communicatively coupled with the one or more user systems via a network through the one or more interfaces, the server system to receive, with a Structured Query Language (SQL)-to-Non-Structured Query Language (NoSQL) agent, a SQL query, wherein the SQL query is received through a first application programming interface (API) at a first architectural level, to transform, with the SQL-to-NoSQL agent, the SQL query into a set of one or more non-relational database scans having associated row key ranges and having no joins in the set by building a map of feature values, to send, with the SQL-to-NoSQL agent, the set of one or more non-relational database scans having no joins with instructions for execution in parallel for each row key range to the non-relational database through a second API at a second architectural level that is lower than the first architectural level, to cause results from the set of one or more non-relational database scans to be joined, to receive, with the SQL-to-NoSQL agent, results from the set of one or more non-relational database scans through the second API, to perform, with the SQL-to-NoSQL agent, merge sorting on the received results from the set of one or more non-relational database scans to generate combined results to provide an aggregate result to the SQL query, and to transmit, with the SQL-to-NoSQL agent, the aggregated result as results of the SQL query through the first API.

16. The system of claim 15 wherein the non-relational database comprises a non-relational distributed database.

17. The system of claim 15 wherein the non-relational database is part of a multitenant database environment.

18. The system of claim 15 further to cause the one or more processors to receive a schema for data in the non-relational database.

19. The system of claim 18 wherein the SQL query language is used to manage the schema for the data in the non-relational database.

20. The system of claim 15 wherein the server system is further configurable to generate a query plan with a server-side component that builds a map of feature values and returns one aggregated row per query key.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0444 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2019
From: TAYLOR, JAMES
To: SALESFORCE.COM, INC.
Reel/Frame 050846/0540 →
Continuity (3)
Continuation 14133431 · Dec 18, 2013
Provisional Application 61739101 · Dec 19, 2012
Related Publication 20190384764A1 · Dec 19, 2019