IP Library Granted Patent US 9,886,483
Granted Patent B1
US 9,886,483 · App. 13/098,298 · Granted Feb 6, 2018

System for providing structured query language access to non-relational data stores

Inventors: Guy Anthony Harrison (Aspendale Gardens, AU); Gregory John Cottman (Wantirna South, AU); Timothy Harold Jarvis (Blackburn North, AU); Kieron Spencer Briggs (Brunswick East, AU); Ben Kersten (Hawthorne, AU); Johny Mattsson (Collingwood, AU)
Assignee: Quest Software Inc.
G06F17/30466G06F17/30445G06F17/30498
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 9,886,483
App. No.
13/098,298
Filed
Apr 29, 2011
Granted
Feb 6, 2018
Kind
B1
Examiner
TRAN, BAO G
Art Unit
2158
USPC
707/714
Abstract

Systems and methods for providing structured query language (SQL) access to non-relational data stores are described. SQL access can be provided to a non-relational data store in one embodiment by mapping storage attributes of the data store to one or more virtual relational tables. The virtual tables can include a schema representation of data stored in a non-relational data store without actually including the data in the virtual tables. In some embodiments, these systems and methods therefore advantageously merge certain benefits of relational database architectures with the scalability benefits of certain non-relational data store architectures. Certain features of the systems and methods described herein can also be used with existing relational databases. For example, the systems and methods described herein can perform join or similar operations between a relational table in one data store and a data object in another data store.

Claims (56)

1. A system for providing structured query language access to a data object, the system comprising a computer processor interoperably coupled to memory, wherein the computer processor is operable to execute:

a mapping module configured to:

identify storage attributes of a data object stored within a data store, the data object being incompatible with a subset of structured query language (SQL),

analyze the storage attributes to determine whether the storage attributes comprise any static attributes and any repeating attributes,

in response to identifying a static attribute in the storage attributes, creating a first virtual table comprising a column having a first relational attribute that is based at least partly on the static attribute; and

in response to identifying repeating data in the storage attributes, generating a second virtual table related to the first virtual table, the second virtual table comprising a column having a second relational attribute that is derived from the repeating data, wherein the second virtual table logically represents data stored in the data object without storing a copy of the data in the data object; and

a proxy layer configured to:

receive a request to execute a selected SQL command on one or both of the first and second virtual tables,

determine the data store to be capable of performing join operations;

in response to the determination, split the SQL command into a first SQL join command to be applied to the data store and a second SQL join command to be applied to a second data store comprising a second data object,

in response to receiving the request to execute the selected SQL command, send a first instruction to the data store to cause the data store to perform a join operation on the data object responsive to the first SQL join command,

receive first results from the join operation performed by the data store,

send a second instruction to the second data store to cause the second data store to return second results, and

apply the second SQL join command to the first results and the second results.

2. The system of claim 1 , wherein the computer processor is further operable to execute a query translator, wherein the query translator is configured to send said instruction from the proxy layer to the data store by making an application programming interface (API) call to the data store.

3. The system of claim 1 , wherein the mapping module is further configured to map a second data object of the data store to a third virtual table.

4. The system of claim 2 , wherein one or both of the mapping module and the query translator are included in a plug-in to a database management system (DBMS).

5. The system of claim 1 , wherein the system comprises a plurality of computing devices.

6. A method of providing structured query language access to a data object, the method comprising:

identifying storage attributes of a data object stored within a non-relational data store;

analyzing the storage attributes by a computer system comprising computer hardware to determine whether the storage attributes comprise any static attributes and any repeating data;

in response to identifying a static attribute of the storage attributes, programmatically creating a first virtual table comprising a first column that is based at least partly on the static attribute; and

in response to identifying repeating data of the storage attributes, programmatically generating a second virtual table related to the first virtual table, the second virtual table comprising a second column that is derived from the repeating data;

receiving a request to execute a selected SQL command on one or both of the first and second virtual tables;

determining the data store to be capable of performing join operations;

in response to the determining, splitting the selected SQL command into a first SQL join command to be applied to the data store and a second SQL join command to be applied to a second data store comprising a second data object;

in response to receiving the request to execute the selected SQL command, sending a first instruction to the data store to cause the data store to perform a join operation on the data object responsive to the first SQL join command;

receiving first results from the join operation performed by the data store;

sending a second instruction to the second data store to cause the second data store to return second results; and

applying the second SQL join command to the first results and the second results.

7. The method of claim 6 , wherein said identifying the repeating data further comprises identifying a variable number of entries in records of the data object.

8. The method of claim 6 , wherein said identifying the repeating data comprises identifying dynamic data in column names of the data object.

9. The method of claim 6 , wherein said identifying the repeating data comprises identifying one or more of the following in the data object: a column family, a supercolumn, and a nested document.

10. The method of claim 6 , wherein the first virtual table comprises a mapping from the static attribute to the first column without including actual data stored in the data object.

11. The method of claim 6 , wherein the second virtual table comprises a mapping from the repeating data to the second column without including actual data stored in the data object.

12. The method of claim 6 , wherein the data store comprises a distributed database.

13. The method of claim 6 , wherein the data store comprises one of the following: a document store, a column-oriented data store, and a key-value store.

14. The method of claim 6 , further comprising providing a user interface comprising functionality for a user to adjust a data type of the first or second column.

15. The method of claim 6 , further comprising providing a user interface comprising functionality for the user to adjust a constraint on the first or second column.

16. Non-transitory physical computer storage comprising computer-executable instructions that direct a computing system to implement a method of providing structured query language access to a data object, the method comprising:

identifying attributes of a data object stored within a data store, the data object being incompatible with a subset of structured query language (SQL); and

mapping the attributes to a relational schema to thereby enable SQL queries to be performed with respect to the data object by at least performing one or more of the following:

moving repeating data of the data object to a subtable having a relational association with a parent table created from static data of the data object, and

projecting the data object from a higher dimensionality to a lower dimensionality;

receiving a request to execute a selected SQL command on the data;

determining the data store to be capable of performing join operations;

in response to the determining, splitting the selected SQL command into a first SQL join command to be applied to the data store and a second SQL join command to be applied to a second data store comprising a second data object;

in response to receiving the request to execute the selected SQL command, sending a first instruction to the data store to cause the data store to perform a join operation on the data object responsive to the first SQL join command;

receiving first results from the join operation performed by the data store;

sending a second instruction to the second data store to cause the second data store to return second results; and

applying the second SQL join command to the first results and the second results.

17. The non-transitory physical computer storage of claim 16 , wherein the attributes of the data object comprise dimensions of a cube data store.

18. The non-transitory physical computer storage of claim 17 , wherein said projecting the data object comprises creating one or more of the following columns: a level column, a slice column, and a cross-join column, thereby enabling one or more of a level, slice, and cross-join to be selected from the cube data store.

19. The non-transitory physical computer storage of claim 17 , further comprising passing cube selection criteria in the SQL command directly to the cube data store, bypassing a SQL engine.

20. The non-transitory physical computer storage of claim 16 , wherein said mapping comprises at least partially normalizing the data object.

21. The non-transitory physical computer storage of claim 16 , in combination with a computer system comprising computer hardware.

Assignments (28)
RELEASE OF SECURITY INTEREST Recorded Nov 19, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073606/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 18, 2025
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073613/0326 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0649 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0001 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 058952/0279 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: GOLDMAN SACHS BANK USA
Reel/Frame 058945/0778 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Dec 6, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044719/0565 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CHANGE OF NAME Recorded Oct 12, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044204/0736 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
CHANGE OF NAME Recorded Aug 19, 2013
From: QUEST SOFTWARE, INC.
To: DELL SOFTWARE INC.
Reel/Frame 031035/0914 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2011
From: HARRISON, GUY ANTHONY; COTTMAN, GREGORY JOHN; JARVIS, TIMOTHY HAROLD; BRIGGS, KIERON SPENCER; KERSTEN, BEN; MATTSSON, JOHNY
To: QUEST SOFTWARE, INC.
Reel/Frame 026594/0211 →
Continuity (1)
Provisional Application 61329354 · Apr 29, 2010