IP Library Granted Patent US 11,397,710
Granted Patent B1
US 11,397,710 · App. 16/691,155 · Granted Jul 26, 2022

Schema tool for non-relational databases

Inventors: Broderick Messmer (Raleigh, NC); Justin Moore (Clayton, NC); Philip Prudich (Cary, NC)
Assignee: Progress Software Corporation
G06F16/211
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,397,710
App. No.
16/691,155
Granted
Jul 26, 2022
Kind
B1
Abstract

A system and method for defining a relational schema for a non-relational database are disclosed. In one embodiment, the system identifies a non-relational database; obtains a data structure of the non-relational database; determines a relational schema type; generates a relational schema based on the determined schema type; determines whether the relational schema includes a plurality of relational tables; and responsive to determining that the relational schema includes a plurality of relational tables, defines a relation between at least two of the relational tables in the relational schema.

Claims (47)

1. A computer-implemented method comprising:

identifying, using one or more processors, a non-relational database including a nested object;

obtaining, using one or more processors, a data structure of the non-relational database;

identifying, using the one or more processors, the nested object; and

generating, using the one or more processors, a virtual, relational schema that includes a first virtual, relational table and a second virtual, relational table and, at least partially, normalizes the nested object within a non-relational database to the second virtual, relational table, wherein generating the virtual, relational schema includes:

generating a mapping of the data structure of the non-relational database to the first virtual, relational table and the second virtual, relational table, and

defining a relation between the first virtual, relational table and the second virtual, relational table so that the virtual, relational schema is usable to obtain data, stored in the non-relational database, from the non-relational database responsive to a relational query.

2. The computer-implemented method of claim 1 , wherein the nested object includes an array.

3. The computer-implemented method of claim 1 , wherein the nested object includes an array, and the nested object is at least partially normalized based on a characteristic of the array.

4. The computer-implemented method of claim 1 , wherein the nested object includes an array, and the array has a number of elements that varies between a first instance and a second instance.

5. The computer-implemented method of claim 1 , wherein the method further comprises:

receiving user input; and

modifying the virtual, relational schema based on the user input.

6. The computer-implemented method of claim 1 , wherein the method further comprises:

receiving a relational query requesting modification of data, the data stored in the non-relational database; and

translating, using the virtual, relational schema, the relational query into a query for the non-relational database, the query instructing the non-relational database to modify the data stored in the non-relational database.

7. The computer-implemented method of claim 1 , wherein the method further comprises:

translating, using the virtual, relational schema, a relational query into a query for the non-relational database; and

translating, using the virtual, relational schema, a first result from the non-relational database into a second result, the second result using a relational language.

8. The computer-implemented method of claim 1 , wherein the virtual, relational schema is stored as a JavaScript Object Notation (JSON) file.

9. The computer-implemented method of claim 1 , wherein the non-relational database is a MongoDB database.

10. A computer program product comprising a non-transitory computer usable medium including a computer readable program, wherein the computer readable program when executed on a computing device causes the computing device to:

identify a non-relational database including a nested object;

obtain a data structure of the non-relational database;

identify the nested object; and

generate a virtual, relational schema that includes a first virtual, relational table and a second virtual, relational table, and at least partially, normalizes the nested object to the second virtual, relational table, wherein generating the virtual, relational schema includes generating a mapping of the data structure of the non-relational database to the first virtual, relational table and the second virtual, relational table and defining a relation between the first virtual, relational table and the second virtual, relational table so that the virtual, relational schema is usable to obtain data, stored in the non-relational database, from the non-relational database responsive to a relational query.

11. A system comprising:

a processor;

a memory storing instructions that, when executed, cause the system to:

identify a non-relational database including a nested object;

obtain a data structure of the non-relational database;

identify the nested object; and

generate a virtual, relational schema that includes a first virtual, relational table and a second virtual, relational table, and at least partially, normalizes the nested object to the second virtual, relational table, wherein generating the virtual, relational schema includes generating a mapping of the data structure of the non-relational database to the first virtual, relational table and the second virtual, relational table and defining a relation between the first virtual, relational table and the second virtual, relational table so that the virtual, relational schema is usable to obtain data, stored in the non-relational database, from the non-relational database responsive to a relational query.

12. The system of claim 11 , wherein the nested object includes an array.

13. The system of claim 11 , wherein the nested object includes an array, and the nested object is at least partially normalized based on a characteristic of the array.

14. The system of claim 11 , wherein the nested object includes an array, and the array has a number of elements that varies between a first instance and a second instance.

15. The system of claim 11 , the memory further storing instructions that, when executed cause the system to:

receive user input; and

modify the virtual, relational schema based on the user input.

16. The system of claim 11 , the memory further storing instructions that, when executed cause the system to:

receive a relational query requesting modification of data, the data stored in the non-relational database; and

translate, using the virtual, relational schema, the relational query into a query for the non-relational database, the query instructing the non-relational database to modify the data stored in the non-relational database.

17. The system of claim 11 , the memory further storing instructions that, when executed cause the system to:

translate, using the virtual, relational schema, a relational query into a query for the non-relational database; and

translate, using the virtual, relational schema, a first result from the non-relational database into a second result, the second result using a relational language.

18. The system of claim 11 , wherein the virtual, relational schema is stored as a JavaScript Object Notation (JSON) file.

19. The system of claim 11 , wherein the non-relational database is a MongoDB database.

Assignments (4)
SECURITY INTEREST Recorded Jul 21, 2025
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 072094/0790 →
SECURITY INTEREST Recorded Mar 7, 2024
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 066762/0833 →
SECURITY INTEREST Recorded Jan 25, 2022
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058840/0099 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2019
From: MESSMER, BRODERICK; MOORE, JUSTIN; PRUDICH, PHILIP
To: PROGRESS SOFTWARE CORPORATION
Reel/Frame 051091/0672 →
Continuity (1)
Continuation 14085557 · Nov 20, 2013