# US 11,113,305 B1 · Modeling of a non-relational database as a normalized relational database

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,113,305 B1
- Document ID: US11113305B1
- Status: Granted
- Kind: B1
- Application number: 16/036,219
- Filed: 2018-07-16
- Granted: 2021-09-07
- Earliest claimed: 2013-11-07
- Assignees: Progress Software Corporation
- Applicants: Progress Software Corporation
- Inventors: Robert Scott Bradley
- Web page: https://patentgrep.com/patent/US11113305B1

## CPC

- G06F 16/258: {Data format conversion from or to a database}
- G06F 16/212: {with details for data modelling support}
- G06F 16/221: {Column-oriented storage; Management thereof}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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, catalogue information representing a child table, the parent table and child table both represented as relational tables.

## Claims

### Claim 1

A method comprising:
receiving, using one or more processors, a relational query from a client;
obtaining, using the one or more processors, a relational model of a column-oriented, non-relational database, wherein the column-oriented, non-relational database includes a first column having a first type and a second column having a second type, and wherein the relational model includes catalog information representing a parent table including the first column having the first type and catalogue information representing a child table including the second column having the second type, wherein the parent table and child table are both represented as relational tables; and
translating, using the one or more processors, the relational query into a non-relational query using the relational model.

### Claim 2 (depends on 1)

The method of claim 1 comprising:
sending the non-relational query to the non-relational database;
receiving, using the one or more processors, a non-relational response from the non-relational database;
translating the non-relational response into a relational response; and
sending the relational response to the client.

### Claim 3 (depends on 1)

The method of claim 1, wherein the first type is static in that all rows of the non-relational database share the first column, and the second type is dynamic in that less than an entirety of rows in the non-relational database share the second column.

### Claim 4 (depends on 1)

The method of claim 1, wherein the second column is identified as having the second type based on a sub-type.

### Claim 5 (depends on 1)

The method of claim 1, wherein the second type is dynamic and wherein the dynamic type is associated with a plurality of sub-types.

### Claim 6 (depends on 1)

The method of claim 1, wherein the second type is one or more of a set, a list, and a map.

### Claim 7 (depends on 1)

The method of claim 1, wherein the relational model of the non-relational database is generated based on a division of the column-oriented, non-relational database based on column type, the column-oriented.

### Claim 8 (depends on 7)

The method of claim 7, wherein the division of the column-oriented, non-relational database based on column type is a virtual division.

### Claim 9 (depends on 7)

The method of claim 7, wherein the relational model of the column-oriented, non-relational database is a normalized relational model.

### Claim 10

A system comprising:
a processor; and
a memory storing instructions that, when executed by the one or more processors, cause the system to perform steps comprising:
receive a relational query from a client;
obtain a relational model of a column-oriented, non-relational database, wherein the column-oriented, non-relational database includes a first column having a first type and a second column having a second type, and wherein the relational model includes catalog information representing a parent table including the first column having the first type and catalogue information representing a child table including the second column having the second type, wherein the parent table and child table are both represented as relational tables; and
translate the relational query into a non-relational query using the relational model.

### Claim 11 (depends on 10)

The system of claim 10, the instructions, when executed, further causing the system to perform steps comprising:
send the non-relational query to the non-relational database;
receive a non-relational response from the non-relational database;
translate the non-relational response into a relational response; and
send the relational response to the client.

### Claim 12 (depends on 10)

The system of claim 10, wherein the first type is static in that all rows of the non-relational database share the first column, and the second type is dynamic in that less than an entirety of rows in the non-relational database share the second column.

### Claim 13 (depends on 10)

The system of claim 10, wherein the second column is identified as having the second type based on a sub-type.

### Claim 14 (depends on 10)

The system of claim 10, wherein the second type is dynamic and wherein the dynamic type is associated with a plurality of sub-types.

### Claim 15 (depends on 10)

The system of claim 10, wherein the second type is one or more of a set, a list, and a map.

### Claim 16 (depends on 10)

The system of claim 10, wherein the relational model of the non-relational database is generated based on a division of the column-oriented, non-relational database based on column type, the column-oriented.

### Claim 17 (depends on 16)

The system of claim 16, wherein the division of the column-oriented, non-relational database based on column type is a virtual division.

### Claim 18 (depends on 16)

The system of claim 16, wherein the relational model of the column-oriented, non-relational database is a normalized relational model.
