IP Library Granted Patent US 9,792,348
Granted Patent B2
US 9,792,348 · App. 11/538,377 · Granted Oct 17, 2017

Overlay dataset

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,792,348
App. No.
11/538,377
Granted
Oct 17, 2017
Kind
B2
Abstract

Overlay datasets provide an efficient, flexible and scalable mechanism to represent the logical replication of one or more prior defined datasets. Only changes made to an entity in an overlay dataset's underlying dataset are replicated into the overlay dataset (such changes do not affect the underlying dataset). Read operations directed to the overlay dataset will find entities in the overlay dataset if they exist and in the underlying dataset(s) if no overlay-specific entity exists. Accordingly, overlay datasets provide an efficient mechanism for making changes to an existing dataset without suffering the high processing time and storage overhead associated with prior art copying and versioning techniques. Overlay datasets also provide a natural mechanism to keep two or more datasets in synchronization because changes to a base or underlying dataset's entities are “visible” in its associated overlay dataset (unless the entity has been modified in the overlay dataset).

Claims (149)

1. A computer-implemented method comprising:

creating an overlay dataset that references an underlying base dataset included in a plurality of base datasets, the overlay dataset and the plurality of base datasets being collections of data included in a database, the underlying base dataset including a plurality of entities, the creating of the overlay dataset including:

setting a dataset type attribute included in a dataset object associated with the overlay dataset to an overlay dataset value, the overlay dataset value identifying a dataset as an overlay dataset; and

setting a source dataset identifier included in the dataset object associated with the overlay dataset to a value for an identifier for the underlying base dataset;

receiving a request for access to a first entity, the request designating the overlay dataset;

accessing the overlay dataset to determine whether the first entity is included in the overlay dataset;

responsive to the accessing of the overlay dataset:

determining that the first entity is not included in the overlay dataset; and

determining that the dataset type attribute is set to the overlay dataset value;

accessing the underlying base dataset by reading through the overlay dataset to determine whether the first entity is included in the underlying base dataset, the accessing using the value for the identifier for the underlying base dataset;

determining, responsive to the accessing of the underlying base dataset, that the first entity is one of the plurality of entities included in the underlying base dataset;

retrieving the first entity from the underlying base dataset, the retrieving comprising reading through the overlay dataset to the underlying base dataset; and

returning the first entity retrieved from the underlying base dataset in response to the request for access to the first entity that designated the overlay dataset.

2. The method of claim 1 , further comprising:

receiving a request for access to a second entity, the request designating the overlay dataset;

accessing the overlay dataset to determine whether the second entity is included in the overlay dataset;

determining, responsive to the accessing of the overlay dataset, that the second entity is included in the overlay dataset;

retrieving the second entity from the overlay dataset; and

returning the second entity retrieved from the overlay dataset in response to the request for access to the second entity that designated the overlay dataset.

3. The method of claim 2 ,

wherein the second entity included in the overlay dataset is a copy of a second entity included in the underlying base dataset,

wherein the second entity included in the underlying base dataset includes a plurality of attributes, and

wherein the second entity included in the overlay dataset includes replications of all of the plurality of attributes of the second entity included in the underlying base dataset with a modification applied to at least one of the replicated attributes.

4. The method of claim 2 ,

wherein the second entity included in the overlay dataset is a copy of a second entity included in the underlying base dataset,

wherein the second entity included in the underlying base dataset includes a plurality of attributes, and

wherein the second entity included in the overlay dataset includes replications of a subset of the plurality of attributes of the second entity included in the underlying base dataset with a modification applied to each of the replicated attributes included in the subset.

5. The method of claim 1 , further comprising:

receiving a request to create a second entity, the request designating the overlay dataset;

and

creating the second entity in the overlay dataset and not creating the second entity in the underlying base dataset.

6. The method of claim 1 , further comprising:

receiving a request for access to a second entity included in the underlying base dataset, the request designating the overlay dataset;

accessing the overlay dataset to determine whether the second entity is included in the overlay dataset;

determining, responsive to the accessing of the overlay dataset, that the overlay dataset includes a modified copy of the second entity, the modified copy of the second entity marking the second entity as deleted; and

not retrieving the second entity from the underlying base dataset based on the modified copy of the second entity included in the overlay dataset being marked as deleted.

7. The method of claim 1 , wherein the database is an object-oriented database, and wherein an entity is an object.

8. The method of claim 1 , wherein the database is a relational database, and wherein an entity is a record.

9. The method of claim 1 , wherein the database is a configuration management database, and wherein an entity is a configuration item.

10. The method of claim 1 , wherein the overlay dataset includes fewer than the plurality of entities included in the underlying base dataset.

11. The method of claim 1 , wherein the overlay dataset, when created, includes no instances, elements, or records.

12. The method of claim 1 , further comprising:

modifying the first entity retrieved from the underlying base dataset, the modifying comprising copying the first entity into the overlay dataset.

13. The method of claim 12 , further comprising:

subsequent to modifying the first entity, receiving a request for another access to the first entity, the request designating the overlay dataset;

determining, responsive to the other access designating the overlay dataset, that the first entity is included in the overlay dataset; and

retrieving the first entity from the overlay dataset based on determining that the first entity is included in the overlay dataset.

14. The method of claim 12 , wherein modifying the first entity comprises modifying at least one of a value associated with the first entity, an attribute associated with the first entity, and a relationship associated with the first entity with respect to the underlying base dataset.

15. The method of claim 1 , further comprising:

modifying the first entity included in the underlying base dataset; and wherein retrieving the first entity from the underlying base dataset comprises reading through the overlay dataset to the underlying base dataset to retrieve the modified first entity.

16. A non-transitory machine-readable medium having instructions stored thereon that, when executed by a processor, cause a computing device to:

create an overlay dataset that references an underlying base dataset included in a plurality of base datasets, the overlay dataset and the plurality of base datasets being collections of data included in a database, the underlying base dataset including a plurality of entities, the creating of the overlay dataset including:

setting a dataset type attribute included in a dataset object associated with the overlay dataset to an overlay dataset value, the overlay dataset value identifying a dataset as an overlay dataset; and

setting a source dataset identifier included in the dataset object associated with the overlay dataset to a value for an identifier for the underlying base dataset;

receive a request for access to a first entity, the request designating the overlay dataset;

access the overlay dataset to determine whether the first entity is included in the overlay dataset;

responsive to the accessing of the overlay dataset:

determine that the first entity is not included in the overlay dataset; and

determine that the dataset type attribute is set to the overlay dataset value;

access the underlying base dataset by reading through the overlay dataset to determine whether the first entity is included in the underlying base dataset, the accessing using the value for the identifier for the underlying base dataset;

determine, responsive to the accessing of the underlying base dataset, that the first entity is one of the plurality of entities included in the underlying base dataset; and

retrieve the first entity from the underlying base dataset, the retrieving comprising reading through the overlay dataset to the underlying base dataset; and

return the first entity retrieved from the underlying base dataset in response to the request for access to the first entity that designated the overlay dataset.

17. The non-transitory machine-readable medium of claim 16 , wherein the instructions, when executed by the processor, further cause the computing device to:

receive a request for access to a second entity, the request designating the overlay dataset;

access the overlay dataset to determine whether the second entity is included in the overlay dataset;

determine, responsive to the accessing of the overlay dataset, that the second entity is included in the overlay dataset;

retrieve the second entity from the overlay dataset; and

return the second entity retrieved from the overlay dataset in response to the request for access to the second entity that designated the overlay dataset.

18. The non-transitory machine-readable medium of claim 17 , wherein the second entity included in the overlay dataset is a copy of a second entity included in the underlying base dataset

wherein the second entity included in the underlying base dataset includes a plurality of attributes, and

wherein the second entity included in the overlay dataset includes replications of all of the plurality of attributes of the second entity included in the underlying base dataset with a modification applied to at least one of the replicated attributes.

19. The non-transitory machine-readable medium of claim 17 ,

wherein the second entity included in the overlay dataset is a copy of a second entity included in the underlying base dataset,

wherein the second entity included in the underlying base dataset includes a plurality of attributes, and

wherein the second entity included in the overlay dataset includes replications of a subset of the plurality of attributes of the second entity included in the underlying base dataset with a modification applied to each of the replicated attributes included in the subset.

20. The non-transitory machine-readable medium of claim 16 , wherein the instructions, when executed by the processor, further cause the computing device to:

receive a request to create a second entity, the request designating the overlay dataset; and

create the second entity in the overlay dataset and not create the second entity in the underlying base dataset.

21. The non-transitory machine-readable medium of claim 16 , wherein the instructions, when executed by the processor, further cause the computing device to:

receive a request for access to a second entity included in the underlying base dataset, the request designating the overlay dataset;

access the overlay dataset to determine whether the second entity is included in the overlay dataset;

determine, responsive to the accessing of the overlay dataset, that the overlay dataset includes a modified copy of the second entity, the modified copy of the second entity marking the second entity as deleted; and

not retrieve the second entity from the underlying base dataset based on the modified copy of the second entity included in the overlay dataset being marked as deleted.

22. The non-transitory machine-readable medium of claim 16 , wherein the database is an object-oriented database, and wherein an entity is an object.

23. The non-transitory machine-readable medium of claim 16 , wherein the database is a relational database, and wherein an entity is a record.

24. The non-transitory machine-readable medium of claim 16 , wherein the database is a configuration management database, and wherein an entity is a configuration item.

25. The non-transitory machine-readable medium of claim 16 , wherein the overlay dataset includes fewer than the plurality of entities included in the underlying base dataset.

26. The non-transitory machine-readable medium of claim 16 , wherein the overlay dataset, when created, includes no instances, elements, or records.

27. The non-transitory machine-readable medium of claim 16 , wherein the instructions, when executed by the processor, further cause the computing device to:

modify the first entity retrieved from the underlying base dataset, the modifying comprising copying the first entity into the overlay dataset.

28. The non-transitory machine-readable medium of claim 27 , wherein the instructions, when executed by the processor, further cause the computing device to:

subsequent to modifying the first entity, receive a request for another access to the first entity, the request designating the overlay dataset;

determine, responsive to the other access designating the overlay dataset, that the first entity is included in the overlay dataset; and

retrieve the first entity from the overlay dataset based on determining that the first entity is included in the overlay dataset.

29. The non-transitory machine-readable medium of claim 27 , wherein modifying the first entity comprises modifying at least one of a value associated with the first entity, an attribute associated with the first entity, and a relationship associated with the first entity with respect to the underlying base dataset.

30. The non-transitory machine-readable medium of claim 16 , wherein the instructions, when executed by the processor, further cause the computing device to:

modify the first entity included in the underlying base dataset; and wherein retrieving the first entity from the underlying base dataset comprises reading through the overlay dataset to the underlying base dataset to retrieve the modified first entity.

31. A system comprising:

at least one memory including instructions on a computing device; and

at least one processor on the computing device, wherein the processor is operably coupled to the at least one memory and is arranged and configured to execute the instructions that, when executed, cause the processor to implement:

creating an overlay dataset that references an underlying base dataset included in a plurality of base datasets, the overlay dataset and the plurality of base datasets being collections of data included in a database, the underlying base dataset including a plurality of entities, the creating of the overlay dataset including:

setting a dataset type attribute included in a dataset object associated with the overlay dataset to an overlay dataset value, the overlay dataset value identifying a dataset as an overlay dataset; and

setting a source dataset identifier included in the dataset object associated with the overlay dataset to a value for an identifier for the underlying base dataset;

receiving a request for access to a first entity, the request designating the overlay dataset;

accessing the overlay dataset to determine whether the first entity is included in the overlay dataset;

responsive to the accessing of the overlay dataset:

determining that the first entity is not included in the overlay dataset; and

determining that the dataset type attribute is set to the overlay dataset value;

accessing the underlying base dataset by reading through the overlay dataset to determine whether the first entity is included in the underlying base dataset, the accessing using the value for the identifier for the underlying base dataset;

determining, responsive to the accessing of the underlying base dataset, that the first entity is one of the plurality of entities included in the underlying base dataset; and

retrieving the first entity from the underlying base dataset, the retrieving comprising reading through the overlay dataset to the underlying base dataset; and

returning the first entity retrieved from the underlying base dataset in response to the request for access to the first entity that designated the overlay dataset.

32. The system of claim 31 , wherein the processor is further configured to execute the instructions that, when executed, cause the processor to implement:

receiving a request for access to a second entity, the request designating the overlay dataset;

accessing the overlay dataset to determine whether the second entity is included in the overlay dataset;

determining, responsive to the accessing of the overlay dataset, that the second entity is included in the overlay dataset;

retrieving the second entity from the overlay dataset; and

returning the second entity retrieved from the overlay dataset in response to the request for access to the second entity that designated the overlay dataset.

33. The system of claim 32 ,

wherein the second entity included in the overlay dataset is a copy of a second entity included in the underlying base dataset,

wherein the second entity included in the underlying base dataset includes a plurality of attributes, and

wherein the second entity included in the overlay dataset includes replications of all of the plurality of attributes of the second entity included in the underlying base dataset with a modification applied to at least one of the replicated attributes.

34. The system of claim 32 ,

wherein the second entity included in the overlay dataset is a copy of a second entity included in the underlying base dataset,

wherein the second entity included in the underlying base dataset includes a plurality of attributes, and

wherein the second entity included in the overlay dataset includes replications of a subset of the plurality of attributes of the second entity included in the underlying base dataset with a modification applied to each of the replicated attributes included in the subset.

35. The system of claim 31 , wherein the processor is further configured to execute the instructions that, when executed, cause the processor to implement:

receiving a request to create a second entity, the request designating the overlay dataset; and

creating the second entity in the overlay dataset and not creating the second entity in the underlying base dataset.

36. The system of claim 31 , wherein the processor is further configured to execute the instructions that, when executed, cause the processor to implement:

receiving a request for access to a second entity included in the underlying base dataset, the request designating the overlay dataset;

accessing the overlay dataset to determine whether the second entity is included in the overlay dataset;

determining, responsive to the accessing of the overlay dataset, that the overlay dataset includes a modified copy of the second entity, the modified copy of the second entity marking the second entity as deleted; and

not retrieving the second entity from the underlying base dataset based on the modified copy of the second entity included in the overlay dataset being marked as deleted.

37. The system of claim 31 , wherein the database is an object-oriented database, and wherein an entity is an object.

38. The system of claim 31 , wherein the database is a relational database, and wherein an entity is a record.

39. The system of claim 31 , wherein the database is a configuration management database, and wherein an entity is a configuration item.

40. The system of claim 31 , wherein the overlay dataset includes fewer than the plurality of entities included in the underlying base dataset.

41. The system of claim 31 , wherein the overlay dataset, when created, includes no instances, elements, or records.

42. The system of claim 31 , wherein the processor is further configured to execute the instructions that, when executed, cause the processor to implement:

modifying the first entity retrieved from the underlying base dataset, the modifying comprising copying the first entity into the overlay dataset.

43. The system of claim 42 , wherein the processor is further configured to execute the instructions that, when executed, cause the processor to implement:

subsequent to modifying the first entity, receiving a request for another access to the first entity, the request designating the overlay dataset;

determining, responsive to the other access designating the overlay dataset, that the first entity is included in the overlay dataset; and

retrieving the first entity from the overlay dataset based on determining that the first entity is included in the overlay dataset.

44. The system of claim 42 , wherein modifying the first entity comprises modifying at least one of a value associated with the first entity, an attribute associated with the first entity, and a relationship associated with the first entity with respect to the underlying base dataset.

45. The system of claim 31 , wherein the processor is further configured to execute the instructions that, when executed, cause the processor to implement:

modifying the first entity included in the underlying base dataset; and wherein retrieving the first entity from the underlying base dataset comprises reading through the overlay dataset to the underlying base dataset to retrieve the modified first entity.

Assignments (15)
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 (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 →
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 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2017
From: CHEN, JIANI
To: BMC SOFTWARE
Reel/Frame 042924/0954 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2006
From: MUELLER, DOUG
To: BMC SOFTWARE, INC.
Reel/Frame 018342/0856 →