IP Library Granted Patent US 10,061,831
Granted Patent B2
US 10,061,831 · App. 15/056,108 · Granted Aug 28, 2018

Reference partitioning for database objects

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 10,061,831
App. No.
15/056,108
Granted
Aug 28, 2018
Kind
B2
Abstract

In one general aspect, a computer-implemented system for reference partitioning database objects by a reference field includes at least one hardware processor, at least one database environment, the database environment supporting triggers and partitioning, at least one application program, and memory storing a reference field metadata framework. The reference field metadata framework identifies classes in a hierarchy of database objects, identifies at least one class as a root of the hierarchy, identifies, for each non-root class, a reference inheritance function for the class, and identifies, for each parent class-child class pair in the hierarchy, a relation-join query, the relation-join query being a join between tables in the database environment onto which the parent class and child class are persisted. The memory also stores triggers that use the framework to maintain values for the reference field for non-root database objects.

Claims (74)

1. A computer-implemented method comprising:

receiving, from an application program, a new value for a field of a root database object, the root database object being an object in a database partitioned based on values of the field, each database object being a row in a table and the database objects being organized in a hierarchy, wherein the database supports triggers but lacks support for reference partitioning;

updating the value of the field for the root object, thereby causing a table row associated with the root object to change partitions in the database;

locating a first database object that is a child of the root object in the hierarchy;

applying an inheritance function associated with a class of the child object to determine a value of the field for the first database object;

responsive to the determined value differing from a current value of the field for the first database object, changing the current value to the determined value and moving a table row for the first database object to a partition associated with the determined value; and

repeating the locating, applying, and changing for all children of the root object.

2. The computer-implemented method of claim 1 , wherein the first database object has at least two parent objects in the hierarchy and applying the inheritance function includes:

determining the parent objects using a parent retrieval query associated with the class of the first database object; and

determining a value for the field for the determined parent objects that are not the root database object.

3. The computer-implemented method of claim 1 , wherein the inheritance function is stored as an attribute of the class in a metadata table.

4. The computer-implemented method of claim 1 , wherein the field represents a combination of at least two columns.

5. The computer-implemented method of claim 1 , wherein the field is a column in a table supporting the respective database object.

6. The computer-implemented method of claim 1 , wherein the field is a column of the table storing the respective database object.

7. The computer-implemented method of claim 1 , wherein responsive to the application program updating a foreign key of a second database object, the method further comprises:

applying an inheritance function associated with a class of the second database object to determine a value of the field for the second database object;

setting a current value of the field for the second database object to the determined value;

locating a third database object that is a child of the second database object in the hierarchy;

applying an inheritance function associated with a class of the third database object to determine a value of the field for the third database object;

responsive to the determined value for the third database object differing from a current value for the third database object, changing the current value to the determined value and moving a table row for the third database object to a partition associated with the determined value; and

repeating the locating, applying, and changing for all children of the second database object.

8. The computer-implemented method of claim 1 , wherein responsive to the application program inserting a second database object into the hierarchy, the second database object being a non-root object for the hierarchy, the method further comprises:

applying an inheritance function associated with a class of the second database object to determine a value of the field for the second database object,

wherein a table row for the second database object is stored in a partition associated with the determined value of the field for the second database object.

9. The computer-implemented method of claim 1 , wherein the hierarchy is cyclic and the first database object has at least two parent objects in the hierarchy and applying the inheritance function includes:

determining the parent objects using a parent retrieval query associated with the class of the first database object; and

determining a value for the field for the determined parent objects that are not the root database object.

10. A system for reference partitioning database objects by values in a reference field, the system comprising:

at least one hardware processor;

at least one database environment, the database environment supporting triggers and partitioning;

at least one application program; and

memory storing:

a reference field metadata framework that:

identifies classes in a hierarchy of database objects,

identifies at least one class as a root of the hierarchy,

identifies, for each non-root class, a reference field inheritance function for the class, and

identifies, for each parent class-child class pair in the hierarchy, a relation-join query, the relation-join query being a join between tables in the database environment onto which the parent class and child class are persisted, and

triggers that use the framework to maintain values for the reference field for non-root database objects, including at least a first trigger invoked after a reference field of a database object in a root class is changed, a second trigger invoked responsive to a non-root database object being inserted, and a third trigger invoked responsive to a non-root database object having a change in parent.

11. The system of claim 10 , wherein the first trigger uses the reference field metadata framework to:

traverse the hierarchy from the database object in the root class downwards, avoiding cycles; and

set a value for the reference field of each child database object reached in the traversal according to the reference field inheritance function for a class of the child database object, wherein the child database object is assigned to a partition according to its value for the reference field.

12. The system of claim 10 , wherein the second trigger uses the reference field metadata framework to:

determine a value for the reference field of each parent database object of the inserted non-root database object;

apply the reference field inheritance function for the class of the inserted non-root database object to determine a value for the reference field of the non-root database object; and

assign the non-root database object to a partition according to the determined value.

13. The system of claim 10 , wherein the third trigger uses the reference field metadata framework to:

determine a value for the reference field of each parent database object of the non-root database object;

apply the reference field inheritance function for the class of the non-root database object to determine a value for the reference field of the non-root database object, wherein the database object is assigned to a partition according to the value;

assign the non-root database object to a partition according to the determined value;

traverse the hierarchy from the non-root database object downwards, avoiding cycles; and

set a lifecycle state of each object reached in the traversal according to the reference field inheritance function for a class of the object reached in the traversal.

14. The system of claim 10 , wherein the system includes at least two database environments from different vendors, each database environment supporting triggers and partitioning.

15. The system of claim 10 , wherein the framework further includes a hierarchy traversal query for at least some of the classes and a parent retrieval query for at least some of the classes.

16. The system of claim 15 , wherein the hierarchy traversal query for a first class is generated prior to the triggers being invoked and is associated with the first class and stored in the framework, and the generation of the hierarchy traversal query for the first class includes:

using a hierarchical query, avoiding cycles, find the parent class-child class pairs where the first class is the parent;

construct a union query of the relation-join queries for each parent class-child class pair found, the union query returning a result set of identifiers for the parent class and the child class; and

using an outer hierarchical query, avoiding cycles, to reach database objects in the tables identified in the union query using the result set of the union query.

17. The system of claim 15 , wherein the parent retrieval query for a first class is generated prior to the triggers being invoked and is associated with first class and stored in the framework, and the generation of the parent retrieval query for the first class includes:

using a hierarchical query, avoiding cycles, find the parent class-child class pairs where the first class is the child;

constructing a union query of the relation-join queries for each parent class-child class pair found, the union query returning a result set of identifiers for the parent class and the child class; and

using an outer hierarchical query, avoiding cycles, to reach database objects in the tables identified in the union query using the result set of the union query.

18. A system for reference partitioning database objects by values in a reference field, the system comprising:

at least one hardware processor;

at least one database environment, the database environment supporting triggers and partitioning and being partitioned based on values of a reference field;

at least one application program; and

memory storing:

a reference field metadata framework that that defines classes of database objects in a hierarchy, parent-child relationships between classes, wherein each database object is a row in a table of the database environment, and

instructions that, when executed by the at least one hardware processor, cause the system to perform operations including:

receiving, from the application program, a new value for a foreign key of a child database object, the child database object being a child of a parent object in the hierarchy,

applying an inheritance function associated with a class of the child object to determine a value of the reference field for the child database object,

changing, responsive to the determined value differing from a current value of the reference field for the child database object, the current value to the determined value and moving a table row for the child database object to a partition associated with the determined value, and

repeating the applying and changing for any children of the child database object in the hierarchy.

19. The system of claim 18 , wherein the reference field metadata framework also stores, for each parent-child relationship, a join query and wherein repeating the applying and changing includes executing a hierarchical query generated at least by a union of join queries for parent-child relationships related to the class of the child object.

20. The system of claim 18 , wherein the reference field metadata framework also stores, for each parent-child relationship, a join query and wherein applying the inheritance function includes using the join query for the class of the child database object.

Assignments (16)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Sep 10, 2019
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 050327/0634 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE FOR THE SECOND INVENTOR PREVIOUSLY RECORDED ON REEL 040455 FRAME 0520. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 13, 2018
From: MILOUSHEFF, ZACK; ASHHAR, KALPA
To: BMC SOFTWARE, INC.
Reel/Frame 046550/0939 →
SECURITY INTEREST Recorded Jul 27, 2017
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043351/0189 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2016
From: MILOUSHEFF, ZACH; ASHHAR, KALPA
To: BMC SOFTWARE, INC.
Reel/Frame 040455/0520 →