IP Library Granted Patent US 9,471,654
Granted Patent B1
US 9,471,654 · App. 14/074,549 · Granted Oct 18, 2016

Modeling of a non-relational database as a normalized relational database

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,471,654
App. No.
14/074,549
Filed
Nov 7, 2013
Granted
Oct 18, 2016
Kind
B1
Art Unit
2168
USPC
707/740
Abstract

A system and method are disclosed for modeling a non-relational database as a normalized relational database. In one embodiment, the system identifies a column having a first type in a column-oriented, non-relational database; determines whether the column-oriented, non-relational database includes at least one column having a second type and identifies the one or more columns having the second type; virtually divides the column-oriented, non-relational database based on column type; and generates a normalized, relational model based on the virtual division of the column-oriented, non-relational database, the normalized, relational model including catalog information representing a parent table including the column having the first type and, when the column-oriented, non-relational database includes at least one column having the second type, catalog information representing a child table, the parent table and child table both represented as relational tables.

Claims (57)

1. A computer-implemented method comprising:

identifying, using one or more processors, a column having a first type in a column-oriented, non-relational database;

determining, using one or more processors, whether the column-oriented, non-relational database includes at least one column having a second type;

responsive to determining that column-oriented, non-relational database includes at least one column having the second type, identifying, using one or more processors, the one or more columns having the second type;

virtually dividing, using one or more processors, the column-oriented, non-relational database based on column type; and

generating, using one or more processors, a normalized, relational model of the column-oriented, non-relational database based on the virtual division of the column-oriented, non-relational database, the normalized, relational model including catalog information representing a parent table including the column having the first type and, when the column-oriented, non-relational database includes at least one column having the second type, catalogue information representing a child table, the parent table and child table both represented as relational tables.

2. The computer-implemented method of claim 1 , wherein the catalogue information representing the parent table includes each column in the column-oriented, non-relational database having the first type.

3. The computer-implemented method of claim 1 , wherein the column-oriented, non-relational database is a Cassandra database and uses Cassandra Query Language version 2.

4. The computer-implemented method of claim 1 , wherein the column-oriented, non-relational database is a Cassandra database and uses Cassandra Query Language version 3.

5. The computer-implemented method of claim 1 , wherein the one or more identified columns having the second type are represented as a separate child table in the normalized, relational model.

6. The computer-implemented method of claim 1 , wherein the non-relational database table includes a plurality of columns having the second type and the relation model includes catalogue information representing at least two child tables including a first child table including a first set of the plurality of columns having the second type and a second child table including a second set of the plurality of columns having the second type.

7. The computer-implemented method of claim 1 , further comprising:

receiving a relational query from a driver;

retrieving the normalized, relational model of the column-oriented, non-relational database;

mapping the relational query to associated fields and query language for the column-oriented, non-relational database using the normalized, relational model of the column-oriented, non-relational database;

generating a non-relational query; and

sending the non-relational query to the column-oriented, non-relational database.

8. The computer-implemented method of claim 7 , wherein the driver is one of a Java Database Connectivity driver and an Open Database Connectivity driver.

9. The computer-implemented method of claim 1 , further comprising:

receiving a non-relational response from the column-oriented, non-relational database;

retrieving the normalized, relational model of the column-oriented, non-relational database;

mapping the non-relational response to associated fields and query language for a driver that uses a relational query language using the normalized, relational model of the column-oriented, non-relational database;

generating a relational response; and

sending the relational response to the driver that uses the relational language.

10. The computer-implemented method of claim 9 , wherein the driver that uses the relational language is one of a Java Database Connectivity driver and an Open Database Connectivity driver.

11. 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 column having a first type in a column-oriented, non-relational database;

determine whether the column-oriented, non-relational database includes at least one column having a second type;

responsive to determining that column-oriented, non-relational database includes at least one column having the second type, identifying, using one or more processors, the one or more columns having the second type;

virtually divide the column-oriented, non-relational database based on column type; and

generate a normalized, relational model of the column-oriented, non-relational database based on the virtual division of the column-oriented, non-relational database, the normalized, relational model including catalog information representing a parent table including the column having the first type and, when the column-oriented, non-relational database includes at least one column having the second type, catalogue information representing a child table, the parent table and child table both represented as relational tables.

12. A system comprising:

a processor;

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

identify a column having a first type in a column-oriented, non-relational database;

determine whether the column-oriented, non-relational database includes at least one column having a second type;

responsive to determining that column-oriented, non-relational database includes at least one column having the second type, identifying, using one or more processors, the one or more columns having the second type;

virtually divide the column-oriented, non-relational database based on column type; and

generate a normalized, relational model of the column-oriented, non-relational database based on the virtual division of the column-oriented, non-relational database, the normalized, relational model including catalog information representing a parent table including the column having the first type and, when the column-oriented, non-relational database includes at least one column having the second type, catalogue information representing a child table, the parent table and child table both represented as relational tables.

13. The system of claim 12 , wherein the catalogue information representing the parent table includes each column in the column-oriented, non-relational database having the first type.

14. The system of claim 12 , wherein the column-oriented, non-relational database is a Cassandra database and uses Cassandra Query Language version 2.

15. The system of claim 12 , wherein the column-oriented, non-relational database is a Cassandra database and uses Cassandra Query Language version 3.

16. The system of claim 12 , wherein the one or more identified columns having the second type are represented as a separate child table in the normalized, relational model.

17. The system of claim 12 , wherein the non-relational database table includes a plurality of columns having the second type and the relation model includes catalogue information representing at least two child tables including a first child table including a first set of the plurality of columns having the second type and a second child table including a second set of the plurality of columns having the second type.

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

receive a relational query from a driver;

retrieve the normalized, relational model of the column-oriented, non-relational database;

map the relational query to associated fields and query language for the column-oriented, non-relational database using the normalized, relational model of the column-oriented, non-relational database;

generate a non-relational query; and

send the non-relational query to the column-oriented, non-relational database.

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

receive a non-relational response from the column-oriented, non-relational database;

retrieve the normalized, relational model of the column-oriented, non-relational database;

map the non-relational response to associated fields and query language for a driver that uses a relational query language using the normalized, relational model of the column-oriented, non-relational database;

generate a relational response; and

send the relational response to the driver that uses the relational language.

20. The system of claim 12 , wherein the system includes one of a Java Database Connectivity driver and an Open Database Connectivity driver.

Assignments (7)
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 →
SECURITY INTEREST Recorded Apr 30, 2019
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., ADMINISTRATIVE AGENT
Reel/Frame 049031/0684 →
SECURITY INTEREST Recorded Dec 18, 2017
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 044889/0325 →
SECURITY INTEREST Recorded Dec 2, 2014
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 034504/0178 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2013
From: BRADLEY, ROBERT SCOTT
To: PROGRESS SOFTWARE CORPORATION
Reel/Frame 031695/0117 →