Data extensibility using external database tables
First Claim
1. A data processing system, comprising:
- a first database maintained by a first party;
a second database maintained by a second party different from and unrelated to the first party, wherein the second party is at least one of a manufacturer or vendor of a software product comprising an extensible data model defining the second database and wherein the first party is a purchaser of the software product;
a work queue operable to specify data to be added to the second database;
an extract, transform, and load module operable to write data from the first database to the work queue;
a data import module operable to import data from the work queue to the second database, wherein the first party is not privileged to write the data directly to the second database, wherein the data in the first database is semantically incompatible with the second database, and wherein the data import module transforms the data written to the work queue to a semantically compatible form for the second database;
a specification to extend a second database maintained by a second party, the specification being provided by the first party and defining tables and columns to be inserted in, deleted from, and/or updated in a data model defining to the second database;
a modifier operable to modify the data model to reflect the specification and to create the work queue corresponding to the modification;
an identity resolution service operable to maintain a table of entity identifiers, hints, and corresponding natural keys, a hint indicating when a surrogate key is valid for use; and
a key identifier operable to generate new surrogate keys, send new surrogate keys to the identity resolution service along with a corresponding hint that a new surrogate key is available, and use the hint to map from an entity identifier to a corresponding surrogate key.
25 Assignments
0 Petitions
Accused Products
Abstract
In one embodiment, a data processing system includes a first database 304 maintained by a first party (such as a customer); a second database 324, 328 maintained by a second party (such as a vendor) different from the first party; a work queue 316 to specify data to be added to the second database; an extract, transform and load module 308 to write data from the first database to the work queue; and a data import module operable 320 to import data from the work queue to the second database. In the system, the first party is not privileged to write the data directly to the second database but is privileged to write the data to the work queue. The import module transforms the data written to the work queue to a form semantically compatible with the second database.
371 Citations
20 Claims
-
1. A data processing system, comprising:
-
a first database maintained by a first party; a second database maintained by a second party different from and unrelated to the first party, wherein the second party is at least one of a manufacturer or vendor of a software product comprising an extensible data model defining the second database and wherein the first party is a purchaser of the software product; a work queue operable to specify data to be added to the second database; an extract, transform, and load module operable to write data from the first database to the work queue; a data import module operable to import data from the work queue to the second database, wherein the first party is not privileged to write the data directly to the second database, wherein the data in the first database is semantically incompatible with the second database, and wherein the data import module transforms the data written to the work queue to a semantically compatible form for the second database; a specification to extend a second database maintained by a second party, the specification being provided by the first party and defining tables and columns to be inserted in, deleted from, and/or updated in a data model defining to the second database; a modifier operable to modify the data model to reflect the specification and to create the work queue corresponding to the modification; an identity resolution service operable to maintain a table of entity identifiers, hints, and corresponding natural keys, a hint indicating when a surrogate key is valid for use; and a key identifier operable to generate new surrogate keys, send new surrogate keys to the identity resolution service along with a corresponding hint that a new surrogate key is available, and use the hint to map from an entity identifier to a corresponding surrogate key. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method, comprising:
-
(a) receiving from a first party a set of specifications defining an extension to a second database maintained by a second party; (b) modifying, by a modifier, the second database as set forth in the set of specifications, wherein the modification comprises an addition of a custom table and further comprising; (b1) providing a work queue corresponding to the modification; (b2) receiving, by the work queue, first data from a first database; (b3) normalizing, by a semantics module, the first data to form second data, wherein the first data is semantically compatible with the first database and semantically incompatible with the second database and wherein the second data is semantically incompatible with the first database and semantically compatible with the second database; (b4) writing, by a data import module, the second data to the at least one of a custom table, and a custom column in a table; (b5) maintaining, by an identity resolution service, a table of entity identifiers, hints, and corresponding natural keys, a hint indicating when a surrogate key is valid for use; and (b6) generating, by a key identifier, new surrogate keys; (b7) sending, by the key identifier, new surrogate keys to the identity resolution service along with a corresponding hint that a new surrogate key is available; and (b8) using the hint to map from an entity identifier to a corresponding surrogate key. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer readable medium comprising processor executable instructions stored on a tangible medium, the instructions to perform the following steps:
-
(a) receiving from a first party a set of specifications defining an extension to a second database maintained by a second party; (b) modifying, by a modifier, a data model defining the second database as set forth in the sets of specifications, wherein the modifications comprise a plurality of the following; (b1) addition of custom facts to an existing fact table in the second database; (b2) addition of custom facts to a new table that parallels an existing fact table in the second database; (b3) addition of custom attributes to existing dimension table in the second database; (b4) addition of custom attributes to a new table that parallels an existing dimension table in the second database; and (b5) addition of a custom table; (c) providing a respective work queue for each of the modifications, each work queue comprising a different key associated with the corresponding modification (d) receiving, by a selected work queue, first data from a first database; (e) normalizing, by a semantics module, the first data to form second data wherein the second data is associated with a selected key, wherein the first data is semantically compatible with the first database and semantically incompatible with the second database, and wherein the second data is semantically incompatible with the first database and semantically compatible with the second database; (f) determining, from the selected key and by a data import module, an existing record in the second database; (g) comparing, by the data import module, an attribute of the existing record with an attribute of the second data; (h) determining, by the data import module, whether the attribute has changed; (i) in response to the determining step (h), applying, by the data import module, the following rules; (i1) when there is no attribute change, not making any change to the second database; (i2) when there is an attribute change and the changed attribute is a type 2 attribute, generating a surrogate key and corresponding hint for the second data and inserting a new record containing the generated surrogate key and new attribute value into the second database; and (i3) when there is an attribute change and the changed attribute is a type 1 attribute, updating an existing row of an existing table.
-
-
20. A method, comprising:
-
(a) receiving from a first party a plurality of sets of specifications defining an extension to a second database maintained by a second party; (b) modifying, by a modifier, a data model defining the second database as set forth in the sets of specifications, wherein the modifications comprise a plurality of the following; (b1) addition of custom facts to an existing fact table in the second database; (b2) addition of custom facts to a new table that parallels an existing fact table in the second database; (b3) addition of custom attributes to existing dimension table in the second database; (b4) addition of custom attributes to a new table that parallels an existing dimension table in the second database; and (b5) addition of a custom table; (c) providing a respective work queue for each of the modifications, each work queue comprising a different key associated with the corresponding modification; (d) receiving, by a selected work queue, first data from a first database; (e) normalizing, by a semantics module, the first data to form second data wherein the second data is associated with a selected key, wherein the first data is semantically compatible with the first database and semantically incompatible with the second database, and wherein the second data is semantically incompatible with the first database and semantically compatible with the second database; (f) determining, from the selected key and by a data import module, an existing record in the second database; (g) comparing, by the data import module, an attribute of the existing record with an attribute of the second data; (h) determining, by the data import module, whether the attribute has changed; (i) in response to the determining step (h), applying, by the data import module, the following rules; (i1) when there is no attribute change, not making any change to the second database; (i2) when there is an attribute change and the changed attribute is a type 2 attribute, generating a surrogate key and corresponding hint for the second data and inserting a new record containing the generated surrogate key and new attribute value into the second database; and (i3) when there is an attribute change and the changed attribute is a type 1 attribute, updating an existing row of an existing table.
-
Specification