Techniques for managing data in a data processing system using data entities and inheritance - Patents.com
Patent Information
- Application Number
- JP2023536412
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-01-31
- Filing Date
- 2022-01-28
- Publication Date
- 2025-02-05
- Estimated Expiration
- 2042-01-28
AI Technical Summary
Conventional data processing systems are inefficient in storing and accessing large numbers of data entity instances due to repetitive data writing and separate access requirements, and lack flexibility in managing inheritance relationships between attributes.
Implementing inheritance techniques that allow attributes of data entity instances to inherit values from other instances, with the option to override these values as needed, enhancing efficiency and flexibility in data storage and access.
Enables efficient storage and retrieval of attribute values for millions of data entity instances, optimizing computing resources and memory usage while maintaining flexibility in attribute management.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority under 35 U.S.C. § 119(e) to U.S. Provisional Patent Application No. 63 / 143,894, entitled “Techniques for Managing Data in a Data Processing System Using Data Entities and Inheritance,” filed January 31, 2021, which is incorporated by reference in its entirety.
[0002] Field Aspects of the present disclosure relate to techniques for managing data in a data processing system using data entities and data entity instances. In particular, aspects of the present disclosure relate to efficient storage and access of data entity instances using inheritance. [Background technology]
[0003] background Modern data processing systems manage vast amounts of data (e.g., millions, billions, or trillions of data records) and how that data is accessed (e.g., created, updated, read, or deleted). The data managed by a data processing system may be of any suitable type. For example, data managed by a data processing system may include transactions, documents, tables, files, or any other suitable type of data. As another example, data managed by a data processing system may include "metadata," which is data that contains information about other data (e.g., stored in the same data processing system and / or in another data processing system). For example, a data processing system may store metadata about credit card transaction data stored in a table in a credit card company's database. Non-limiting examples of such metadata include the size of the table in memory, when the table was created, when the table was last updated, the number of rows and / or columns in the table, where the table is stored, and information indicative of who is authorized to read, update, delete, or perform any other suitable action on the data table. Summary of the Invention [Means for solving the problem]
[0004] overview Some embodiments provide a method, executed by a data processing system, for accessing data according to an inheritance relationship between attributes of data entities, where such inheritance may be overridden. The method includes receiving, using at least one computer hardware processor of the data processing system, a request to access a first attribute value of a particular instance of a first data entity, where the first data entity includes a plurality of attributes including the first attribute, the particular instance including zero or more values for the plurality of attributes of the first data entity, and the first attribute of the particular instance is configured to inherit its value from a second attribute of another instance of a second data entity different from the first data entity; and determining whether the first attribute of the particular instance is configured to override the value inherited from the second attribute. and when it is determined that the first attribute is configured to override the value inherited from the second attribute, accessing an override value for overriding the value inherited from the second attribute, generating a first response to the request that includes information indicating the override value as the first attribute value, and outputting the first response; and when it is determined that the first attribute is not configured to override the value inherited from the second attribute, accessing the value inherited from the second attribute, generating a second response to the request that includes information indicating the value inherited from the second attribute as the first attribute value, and outputting the second response.
[0005] Some embodiments provide a non-transitory, temporary computer-readable medium storing instructions that, when executed by a data processing system, cause the data processing system to perform a method of accessing data according to an inheritance relationship between attributes of data entities, where such inheritance may be overridden. The method includes receiving, by the data processing system, a request to access a first attribute value of a particular instance of a first data entity, where the first data entity includes a plurality of attributes including the first attribute, the particular instance including zero or more values for the plurality of attributes of the first data entity, and the first attribute of the particular instance is configured to inherit its value from a second attribute of another instance of a second data entity different from the first data entity; determining whether the first attribute of the particular instance is configured to override the value inherited from the second attribute; and When it is determined that the first attribute is configured to override the value inherited from the second attribute, the method includes accessing an override value for overriding the value inherited from the second attribute, generating a first response to the request that includes information indicating the override value as the first attribute value, and outputting the first response; and when it is determined that the first attribute is not configured to override the value inherited from the second attribute, accessing the value inherited from the second attribute, generating a second response to the request that includes information indicating the value inherited from the second attribute as the first attribute value, and outputting the second response.
[0006] Some embodiments provide a data processing system for accessing data according to an inheritance relationship between attributes of data entities, where such inheritance may be overridden. The data processing system includes at least one computer hardware processor and at least one non-transitory computer readable medium storing instructions that, when executed by the at least one computer hardware processor, include receiving a request to access a first attribute value of a particular instance of a first data entity, where the first data entity includes a plurality of attributes including the first attribute, the particular instance including zero or more values for the plurality of attributes of the first data entity, and the first attribute of the particular instance is configured to inherit its value from a second attribute of another instance of a second data entity different from the first data entity; and overriding the first attribute of the particular instance by overriding the inherited value from the second attribute. and when it is determined that the first attribute is not configured to override the value inherited from the second attribute, accessing an override value for overriding the value inherited from the second attribute, generating a first response to the request that includes information indicating the override value as the first attribute value, and outputting the first response.
[0007] In some embodiments, the first data entity includes information indicating (i) that the first attribute inherits its value from the second attribute, and (ii) whether the first attribute is configurable to override the inherited value.
[0008] In some embodiments, the data processing system includes at least one data store configured to store instances of data entities, the instances of the data entities including the particular instance and other instances, and the request includes an executable query, in some embodiments, the executable query includes an executable Structured Query Language (SQL) query.
[0009] In some embodiments, a particular instance includes multiple attribute values, at least some of which are each inherited from a respective instance of a different data entity.
[0010] In some embodiments, the second attribute of the other instance is configured to inherit its value from a third attribute of an instance of a third data entity that is different from the second data entity and the first data entity.
[0011] In some embodiments, accessing the value inherited from the second attribute includes determining whether the second attribute of the other instance is configured to override the value inherited from the third attribute, and when it is determined that the second attribute of the other instance is configured to override the value inherited from the third attribute, accessing another override value for overriding the value inherited from the third attribute as the value inherited from the second attribute, and when it is determined that the second attribute of the other instance is not configured to override the value inherited from the third attribute, accessing the value inherited by the second attribute from the third attribute.
[0012] In some embodiments, the outputting includes generating a graphical user interface (GUI) that displays the first attribute value and information indicating whether the first attribute value is inherited.
[0013] In some embodiments, the particular instance includes values for each of a first plurality of attributes including a first attribute, the first plurality of attributes being configured to inherit their values from a second plurality of attributes of each of the other instances, and the request includes a request to access values of the first plurality of attributes, and the method includes grouping the first plurality of attributes into a single group and generating a single executable query for the single group in accordance with the request, the single executable query, when executed by the data processing system, causes the data processing system to generate a response to the request.
[0014] In some embodiments, grouping the first plurality of attributes into a single group includes grouping the first plurality of attributes into a single group using grouping criteria, in some embodiments the grouping criteria is grouping attributes that inherit values from a common instance into a single group.
[0015] In some embodiments, the data processing system includes at least one data store configured to store information defining relationships between a plurality of data entity instances.
[0016] In some embodiments, the data processing system manages data, where the data managed by the data processing system includes information describing data stored in a distributed database of a distributed network of computing systems. In some embodiments, the data processing system is configured to store each of a plurality of data sets stored by the distributed database of the distributed computing system and / or an instance of each of a plurality of software applications configured to be executed by the distributed computing system.
[0017] In some embodiments, the method further includes generating a first portion of a graphical user interface (GUI) indicating the first attribute value, setting the first attribute value indicated by the GUI to the second attribute value, and displaying the GUI.
[0018] In some embodiments, the method further includes determining whether the first attribute is configurable to override its inherited value, and generating a second portion of the GUI indicating that the first attribute is configurable to override its inherited value when the first attribute is determined to be configurable to override its inherited value. In some embodiments, generating the second portion of the GUI includes allowing a user to specify, through the second portion of the GUI, an override value for overriding the inherited value from the second attribute. In some embodiments, the method further includes generating a second portion of the GUI indicating that the first attribute is not configurable to override its inherited value when the first attribute is determined to not be configurable to override its inherited value.
[0019] In some embodiments, the method further includes preventing overriding of the inherited value from the second attribute of other instances.
[0020] In some embodiments, the method further includes generating a GUI that enables a user to configure the first data entity such that the first attribute inherits its value from the second attribute.
[0021] In some embodiments, the method further includes generating a GUI that displays information indicative of a source of the first attribute value. In some embodiments, the GUI is configured to display the information indicative of the source of the first attribute value in response to a mouse over event. In some embodiments, the information indicative of the source of the first attribute value indicates that the source is a second attribute of another instance or that the source is an override value.
[0022] Some embodiments provide a method for accessing data according to inheritance relationships between attributes of data entities, the method including, using at least one computer hardware processor of the data processing system, performing the following: receiving a request to access a first attribute value of a particular instance of a first data entity, the first data entity including a plurality of attributes including the first attribute, and the particular instance including zero or more values of the plurality of attributes of the first data entity; determining that the first attribute of the particular instance is configured to inherit its value from a second attribute of another instance of a second data entity different from the first data entity; accessing the inherited value from the second attribute; generating a response to the request including information indicating the value inherited from the second attribute as the first attribute value; and outputting the generated response.
[0023] Some embodiments provide a non-transitory computer-readable medium storing instructions that, when executed by a data processing system, cause the data processing system to perform a method of accessing data according to inheritance relationships between attributes of data entities, the method including receiving, by the data processing system, a request to access a first attribute value of a particular instance of a first data entity, the first data entity including a plurality of attributes including the first attribute, and the particular instance including zero or more values of the plurality of attributes of the first data entity, determining that the first attribute of the particular instance is configured to inherit its value from a second attribute of another instance of a second data entity different from the first data entity, accessing the inherited value from the second attribute, generating a response to the request including information indicating the value inherited from the second attribute as a value of the first attribute, and outputting the generated response.
[0024] Some embodiments provide a data processing system for accessing data according to inheritance relationships between attributes of data entities, the data processing system including at least one computer hardware processor and at least one non-transitory computer readable medium storing instructions that, when executed by the at least one computer hardware processor, cause the at least one computer hardware processor to perform a method including: receiving a request to access a first attribute value of a particular instance of a first data entity, the first data entity including a plurality of attributes including the first attribute, and the particular instance including zero or more values of the plurality of attributes of the first data entity, determining that the first attribute of the particular instance is configured to inherit its value from a second attribute of another instance of a second data entity different from the first data entity, accessing the inherited value from the second attribute, generating a response to the request including information indicating the value inherited from the second attribute as the first attribute value, and outputting the generated response.
[0025] In some embodiments, determining that a first attribute of a particular instance is configured to inherit from a second attribute includes determining, using the first data entity, that the first attribute is configured to inherit its value from the second attribute.
[0026] In some embodiments, the method further includes receiving, by the data processing system, a request to access a third attribute value of the particular instance, determining that the third attribute of the particular instance is configured to inherit its value from a fourth attribute of an instance of a third data entity different from the first data entity and the second data entity, accessing the inherited value from the fourth attribute, generating a response to the request that includes information indicating the value inherited from the fourth attribute as a value of the third attribute, and outputting the generated response.
[0027] In some embodiments, accessing the value inherited from the second attribute includes determining that the second attribute of the second data entity instance is configured to inherit its value from a third attribute of an instance of a third data entity different from the first data entity and the second data entity, and accessing the value inherited by the second attribute from the third attribute.
[0028] In some embodiments, the particular instance includes values for each of a first plurality of attributes including a first attribute, the first plurality of attributes being configured to inherit their values from a second plurality of attributes of each of the other instances, and the request includes a request to access values of the first plurality of attributes, and the method includes grouping the first plurality of attributes into a single group and generating a single executable query for the single group in accordance with the request, the single executable query, when executed by the data processing system, causes the data processing system to generate a response to the request.
[0029] In some embodiments, grouping the first plurality of attributes into a single group includes grouping the first plurality of attributes into a single group using grouping criteria, in some embodiments the grouping criteria is grouping attributes that inherit values from a common instance into a single group.
[0030] In some embodiments, a data processing system manages data, where the data managed by the data processing system includes information describing data stored in distributed databases of a distributed network of computing systems.
[0031] In some embodiments, the data processing system is configured to store each of a plurality of data sets stored by a distributed database of the distributed computing system and / or an instance of each of a plurality of software applications configured to be executed by the distributed computing system.
[0032] Some embodiments provide a method of obtaining information about a data entity instance from a data processing system, the data processing system being configured to store a plurality of data entity instances, the plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute, and a second data entity instance having a second plurality of attributes including a second attribute. The method includes, using at least one computer hardware processor, performing: obtaining a request for information about a first data entity instance, the information including a first value of a first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second attribute of the second data entity instance; generating a response to the request, the response including the first value of the first attribute, the generating including: determining whether the first attribute of the first data entity instance is configured to override a second value of the second attribute of the second data entity instance, when it is determined that the first attribute is configured to override the second value of the second attribute, accessing the override value and generating a response including the override value as a first value of the first attribute, and when it is determined that the first attribute is not configured to override the second value of the second attribute, accessing the second value of the second attribute and generating a response including the second value as the first value of the first attribute; and outputting the generated response.
[0033] Some embodiments provide a data processing system configured to store a plurality of data entity instances, the plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute, and a second data entity instance having a second plurality of attributes including a second attribute, The data processing system includes at least one processor and at least one non-transitory computer readable storage medium storing instructions that, when executed by the at least one processor, include obtaining a request to obtain information about the first data entity instance, the information including a first value of the first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second attribute of the second data entity instance; and generating a response to the request, the response including the first value of the first attribute, the generating including determining whether the first attribute of the first data entity instance inherits its value from a second attribute of the second data entity instance. and generating a response including the override value as a first value of the first attribute when it is determined that the first attribute is configured to override the second value of the second attribute; and, when it is determined that the first attribute is not configured to override the second value of the second attribute, accessing the second value of the second attribute and generating a response including the override value as a first value of the first attribute; and, when it is determined that the first attribute is not configured to override the second value of the second attribute, accessing the second value of the second attribute and generating a response including the second value as a first value of the first attribute; and outputting the generated response.
[0034] Some embodiments provide a non-transitory computer-readable storage medium storing instructions that, when executed by at least one processor of a data processing system configured to store a plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute and a second data entity instance having a second plurality of attributes including a second attribute, the instructions comprising: obtaining a request to obtain information about the first data entity instance, the information including a first value of the first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second attribute of the second data entity instance; and generating a response to the request, the response including the first value of the first attribute. generating a response including the override value as a first value of the first attribute when it is determined that the first attribute is configured to override the second value of the second attribute; and, when it is determined that the first attribute is not configured to override the second value of the second attribute, accessing the second value of the second attribute and generating a response including the override value as a first value of the first attribute; and, when it is determined that the first attribute is not configured to override the second value of the second attribute, accessing the second value of the second attribute and generating a response including the second value as the first value of the first attribute; and outputting the generated response.
[0035] Some embodiments provide a method of obtaining information about a data entity instance from a data processing system, the data processing system being configured to store a plurality of data entity instances, the plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute, and a second data entity instance having a second plurality of attributes including a second attribute. The method includes performing, using at least one computer hardware processor, obtaining a request for a first value of a first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second attribute of the second data entity instance, generating a response to the request, the response including the first value of the first attribute, the generating including accessing the second value of the second attribute and generating a response including the second value of the second attribute as the first value of the first attribute, and outputting the generated response.
[0036] Some embodiments provide a data processing system configured to store a plurality of data entity instances, the plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute, and a second data entity instance having a second plurality of attributes including a second attribute, the data processing system including at least one processor and at least one non-transitory computer readable storage medium storing instructions that, when executed by the at least one processor, cause the at least one processor to perform the following: obtaining a request for a first value of a first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second attribute of the second data entity instance; generating a response to the request, the response including the first value of the first attribute, the generating including accessing the second value of the second attribute and generating a response including the second value of the second attribute as the first value of the first attribute; and outputting the generated response.
[0037] Some embodiments provide a non-transitory computer-readable storage medium storing instructions that, when executed by at least one processor of a data processing system configured to store a plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute and a second data entity instance having a second plurality of attributes including a second attribute, the instructions comprising: obtaining a request to obtain information about the first data entity instance, the information including a first value of the first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second attribute of the second data entity instance; and generating a response to the request, the response including the first value of the first attribute. The generating includes determining whether a first attribute of the first data entity instance is configured to override a second value of a second attribute of the second data entity instance, when it is determined that the first attribute is configured to override the second value of the second attribute, accessing the override value and generating a response that includes the override value as a first value of the first attribute, and when it is determined that the first attribute is not configured to override the second value of the second attribute, accessing the second value of the second attribute and generating a response that includes the second value as the first value of the first attribute, and outputting the generated response.
[0038] Some embodiments provide a method of obtaining information about a data entity instance from a data processing system. The data processing system is configured to store a plurality of data entity instances, the plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute and a second data entity instance having a second plurality of attributes including a second attribute. The method includes performing, using at least one hardware processor, generating a graphical user interface (GUI) including information about the first data entity instance, generating a first GUI portion indicating a first value of a first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second value of the second data entity instance, the generating including accessing a second value of the second attribute and setting the first value of the first attribute to the second value, and generating a second GUI portion indicating whether the first attribute is configurable to override its inherited value, and displaying the GUI.
[0039] Some embodiments provide a data processing system configured to store a plurality of data entity instances, the plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute and a second data entity instance having a second plurality of attributes including a second attribute. The data processing system includes at least one processor and at least one non-transitory computer readable storage medium storing instructions that, when executed by the at least one processor, cause the at least one processor to perform the following: generate a graphical user interface (GUI) including information about the first data entity instance, generating a first GUI portion indicating a first value of a first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second value of the second data entity instance, the generating including accessing a second value of the second attribute and setting the first value of the first attribute to the second value, and generating a second GUI portion indicating whether the first attribute is configurable to override its inherited value; and displaying the GUI.
[0040] Some embodiments provide a non-transitory computer-readable storage medium storing instructions that, when executed by at least one processor of a data processing system configured to store a plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute and a second data entity instance having a second plurality of attributes including a second attribute, cause the at least one processor to: generate a graphical user interface (GUI) including information about the first data entity instance, generating a first GUI portion indicating a first value of a first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second value of the second data entity instance, the generating including accessing a second value of the second attribute and setting the first value of the first attribute to the second value, and generating a second GUI portion indicating whether the first attribute is configurable to override its inherited value, and displaying the GUI.
[0041] The foregoing is a non-limiting summary of the present invention, which is defined by the appended claims.
[0042] BRIEF DESCRIPTION OF THE DRAWINGS Various aspects and embodiments are described with reference to the following figures. It should be understood that the figures are not necessarily drawn to scale. Items that appear in more than one figure are designated by the same or similar reference numerals in all the figures in which they appear. [Brief description of the drawings]
[0043] [Figure 1A] FIG. 1 illustrates an exemplary enterprise system environment in which a data processing system 105 may be used, in accordance with some embodiments of the techniques described herein. [Figure 1B]FIG. 1 illustrates an exemplary implementation of a data processing system 105 in accordance with some embodiments of the techniques described herein. [Figure 1C] 1 is a graphical user interface (GUI) illustrating an example instance “Credit Score” 158, according to some embodiments of the technology described herein. [Figure 1D] 1 illustrates a data entity 170 that may be used by data processing system 105 in accordance with some embodiments of the techniques described herein. [Figure 1E] 1 illustrates exemplary data stored in a data persistence layer 150 of a data processing system 105 in accordance with some embodiments of the techniques described herein. [Figure 1F] A diagram illustrating inheritance of attribute values by data entity instances 158 and 161A from data entity instance 159A in accordance with some embodiments of the techniques described herein. [Figure 1G] A diagram illustrating the overriding of attribute values inherited by data entity instance 161B from data entity instance 159A, according to some embodiments of the techniques described herein. [Figure 1H] A block diagram illustrating aspects of a data processing system 105 in accordance with some embodiments of the techniques described herein. [Figure 2A] 2 illustrates a data entity 210 having an attribute configured to inherit a value from a data entity 220, in accordance with some embodiments of the techniques described herein. [Figure 2B] 2B illustrates the overriding of values inherited by attributes of data entity 210 of FIG. 2A in accordance with some embodiments of the techniques described herein. [Figure 2C] A diagram illustrating an example of a data entity instance "Credit Score" 158 having an attribute configured to inherit a value from another data entity instance "Credit Risk" 270, according to some embodiments of the technology described herein. [Figure 2D] 1 illustrates the overriding of values inherited by attributes of a data entity instance “Credit Score” 158, according to some embodiments of the technology described herein. [Figure 3A] 3 is a flowchart of an example process 300 for generating a response to a request for information about a data entity instance, according to some embodiments of the techniques described herein. [Figure 3B] 3 is a flowchart of an example process 350 for generating a graphical user interface (GUI) that displays information about a data entity instance, according to some embodiments of the techniques described herein. [Figure 3C] 3 is a flowchart of an example process 370 for generating a response to a request for an attribute value of a data entity instance inherited from another data entity instance, according to some embodiments of the techniques described herein. [Figure 4A] 1 is an illustration of a GUI displaying information about an instance "credit score" 402 of a data entity "business term" 404, in accordance with some embodiments of the technology described herein. [Figure 4B] 4B is an illustration of a GUI displaying information about the data entity instance “Credit Risk” 412 from which the values of attributes of the data entity instance “Credit Score” 402 of FIG. 4A are inherited, in accordance with some embodiments of the technology described herein. [Figure 4C] 4 is an illustration of a GUI for configuring attributes of a data entity "BizTerm" 404 of which "Credit Score" 402 is an instance, according to some embodiments of the technology described herein. [Figure 4D] 4B is an illustration of the GUI 400 of FIG. 4A having a portion 422 showing information about attributes of the data entity instance "credit score" 402 that inherit their values, according to some embodiments of the technology described herein. [Figure 4E] 4B is an illustration of a GUI portion 430 showing whether attributes of the data entity instance “Credit Score” 402 of FIG. 4A are configurable to override their inherited values, in accordance with some embodiments of the technology described herein. [Figure 4F] FIG. 4B is another illustration of a GUI portion 440 showing whether attributes of the data entity instance “Credit Score” 402 of FIG. 4A are configurable to override their inherited values, according to some embodiments of the technology described herein. [Figure 4G] 4B is an illustration of a GUI portion 450 showing information about the sources from which an attribute of the data entity instance “Credit Score” 402 of FIG. 4A is configured to inherit its value, in accordance with some embodiments of the technology described herein. [Figure 5A] A diagram illustrating attribute value inheritance paths between a set of three data entity instances 500, 158, 520 according to some embodiments of the techniques described herein. [Figure 5B] 5B illustrates overriding values inherited by attributes of the data entity instance 500 of FIG. 5A in accordance with some embodiments of the techniques described herein. [Figure 5C] 5B illustrates overriding of values inherited by attributes of data entity instance 158 of FIG. 5A in accordance with some embodiments of the techniques described herein. [Figure 6A] 6 is a diagrammatic representation of a GUI 600 displaying information about an instance of a “business data element” data entity, “customer credit score” 602, in accordance with some embodiments of the technology described herein. [Figure 6B] 6B is an illustration of a GUI 620 displaying information about the configuration of attributes of the "business data element" data entity of FIG. 6A, according to some embodiments of the techniques described herein. [Figure 6C]6B is an illustration of a GUI 630 displaying information about a first attribute of the data entity instance “customer credit score” 602 of FIG. 6A , which inherits its value from the data entity instance “credit score”, in accordance with some embodiments of the techniques described herein. [Figure 6D] 6B is an illustration of a GUI 640 displaying information about a second attribute of the data entity instance “Customer Credit Score” 602 of FIG. 6A , which inherits its value from the data entity instance “Credit Risk,” in accordance with some embodiments of the technology described herein. [Figure 7A] FIG. 1 illustrates a diagram showing how different attributes of a data entity can inherit their values from respective attributes of a different data entity, according to some embodiments of the techniques described herein. [Figure 7B] FIG. 2 illustrates an example query for accessing values of inherited attributes that share a common inheritance path, in accordance with some embodiments of the techniques described herein. [Figure 8] FIG. 1 is a block diagram of an example computing system environment that can be used to implement some embodiments of the techniques described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0044] Detailed Description The inventors have developed a new technique that allows efficient storage and access (e.g., query, create, update, and delete) of data managed by a data processing system using data entities and their instances. As described herein, in some embodiments, a data processing system can manage data using data entities, which can be used to organize data using an object-oriented paradigm. A data entity can specify attributes that, upon instantiation, can take on different values, such as numbers, strings, or references to other data entities. One or more data entity instances can be instantiated from a data entity and used to store data. For example, a data processing system for a bank can include a credit score data entity for storing information about customer credit scores. In this example, the credit score data entity can specify attributes such as credit score value, credit score agency, credit score definition, and / or other attributes. The data processing system can instantiate multiple (e.g., hundreds, thousands, or millions) instances of the credit score data entity to store credit score information of those customers as values of the attributes specified by the credit score data entity. Accordingly, similar to how object oriented programming deals with classes and their instances, a data processing system can be configured to use the definition of data entities to manage data using instances of the data entities. Some of the techniques developed by the inventors allow efficient storage of attribute values of data entity instances and efficient retrieval of attribute values (e.g., to provide requested information about the data entity instances).
[0045] A data entity instance may not need to store all of its attribute values together. In some embodiments, attribute values of a data entity instance may be stored using one or more data structures. For example, attribute values may be stored using one or more tables, records, lists, or any other suitable data structures, since aspects of the technology described herein do not require that values of a particular data entity instance be stored using the same underlying data structure in memory.
[0046] As described herein, a data processing system can be used to manage many different types of data. For example, in some applications, the data processing system can be used for metadata management. In such applications, data entity instances instantiated from respective data entities can store information ("metadata") about other data. For example, a data entity instance can store metadata about data of an enterprise system (e.g., for a large multinational corporation such as a credit card company, a telephone company, a bank, etc.). In such applications, the data of the enterprise system can include millions or billions of data sets (e.g., tables, documents, records, etc.) spread across multiple databases, data warehouses, data lakes, etc. Thus, the data processing system can manage large volumes (e.g., millions or billions) of data entity instances that include metadata about the data sets. While the examples described herein may refer to metadata management, it should be understood that the techniques developed by the inventors and described herein are not limited to application to a particular type of data and may be used within any data processing system that uses data entities and data entity instances instantiated from the data entities to manage data, whether the managed data is metadata or any other type of data (e.g., transactions, files, data records, tables, etc.).
[0047] The inventors have recognized that efficient storage and access of data is important in view of the management (e.g., creation, storage, update, etc.) of a large number (e.g., millions) of data entity instances by a data processing system in some applications. Writing data to each and every data entity instance, whether done manually or programmatically, is inefficient. A conventional data processing system may add to each of the data entity instances by requiring the same information to be repeatedly written to each of the data entity instances. Moreover, to retrieve the same shared information from the data entity instances, a conventional data processing system may need to access each of the data entity instances separately. Thus, a conventional data processing system may be inefficient in storing data to the data entity instances and may also be inefficient in retrieving information about the data entity instances. For example, a conventional data processing system may inefficiently execute queries to store data to and / or read data from the data entity instances.
[0048] The inventors further recognized that many of the data entity instances managed by a data processing system may store similar information. For example, if a data processing system manages instances of a credit score data entity that store metadata about credit scores from different respective credit agencies, each of the data entity instances may store the identity of a user that manages a data set in which the credit scores are stored. The data set may include other information in addition to the credit score information stored in another data entity instance. Thus, the credit score data entity instance and the other data entity instances may all store the same value for the user identity attribute. In another example, if a data processing system manages data entity instances that store metadata about customer information from a particular geographic region, each of the data entity instances may store a string that identifies the geographic region (e.g., "USA" or "Europe"). Another data entity instance that stores information associated with the same geographic region may also store the same string for the geographic region attribute.
[0049] To address the above-described challenges in efficiently storing and retrieving information about data entity instances instantiated from one or more data entities, the inventors have developed techniques for enabling attributes of a data entity instance to adopt or inherit values of attributes of other data entity instances. To this end, a data processing system may configure, in an instance of a data entity, one or more attributes of the data entity to inherit a value from an instance of another data entity. Thus, the data processing system may (1) use a value stored in a first data entity instance to set values of attributes of one or more other data entity instances managed by the data processing system, and (2) retrieve values from the first data entity instance to request information about the other data entity instances. In this manner, inheritance enables a data processing system to efficiently store and retrieve attribute values for a large number (e.g., thousands, millions, or billions) of data entity instances. For example, inheritance may enable a data processing system to more efficiently execute queries for storing and / or retrieving attribute values. Moreover, inheritance allows a data processing system to use memory more efficiently by storing information shared by multiple data entity instances in a single data entity instance and referencing that information in the other data entity instances. In this manner, the techniques described herein improve upon conventional data processing systems by both (1) reducing the computing resources (e.g., processor resources, network bandwidth, etc.) required to write information to and retrieve information about data entity instances, and (2) reducing the amount of memory used to store information in data entity instances.
[0050] The inheritance technique developed by the inventors for use in a data processing system allows the data processing system to quickly access information about data entity instances managed by the data processing system. Accordingly, some embodiments provide a technique for obtaining information about data entity instances of a data processing system. The data entity instances may include a first data entity instance (e.g., “Credit Score”) having a first plurality of attributes including a first attribute (e.g., a person responsible for the credit score data) and a second data entity instance (e.g., “Customer Information”) having a second plurality of attributes including a second attribute (e.g., a person responsible for the data stored in the customer data). The data processing system may be configured to access data according to an inheritance relationship between the attributes of the data entities. The data processing system may be configured to receive a request to access a first attribute value of a particular instance of a first data entity, the first data entity including a plurality of attributes including the first attribute, and the particular instance including zero or more values of the plurality of attributes of the first data entity. The data processing system may be configured to (1) determine that a first attribute of a particular instance is configured to inherit its value from a second attribute of another instance of a second data entity different from the first data entity; (2) access the inherited value from the second attribute; (3) generate a response to the request that includes information indicating the value inherited from the second attribute as the first attribute value; and (4) output the generated response.
[0051] In some embodiments, the data processing system can be configured to: (1) receive a request to access a third attribute value of the particular instance, (2) determine that the third attribute of the particular instance is configured to inherit its value from a fourth attribute of an instance of a third data entity distinct from the first data entity and the second data entity, (3) access the inherited value from the fourth attribute, (4) generate a response to the request that includes information indicating the value inherited from the fourth attribute as a third attribute value, and (5) output the generated response. In some embodiments, accessing the inherited value from the second attribute includes: (1) determining that the second attribute of the second data entity instance is configured to inherit its value from a third attribute of an instance of a third data entity distinct from the first data entity and the second data entity, and (2) accessing the value inherited by the second attribute from the third attribute.
[0052] In some embodiments, determining that a first attribute of a particular instance is configured to inherit from a second attribute includes determining, using the first data entity, that the first attribute is configured to inherit its value from the second attribute.
[0053] In some embodiments, a data processing system may be configured to (1) obtain a request for a first value of a first attribute of a first data entity instance, where the first attribute is configured to inherit its value from a second attribute of a second data entity, (2) generate a response to the request that includes the first value of the first attribute, and (3) output the response. The data processing system may be configured to generate the response to the request by (1) accessing a second value of the second attribute and (2) generating a response that includes the second value of the second attribute as a first value of the first attribute. For example, the data processing system may access a name of a responsible person stored in a “customer information” data entity instance and generate a response that includes the name as a responsible person value of a “credit score” data entity instance.
[0054] In some embodiments, the data processing system may be configured to instantiate a first data entity instance (e.g., "credit score") from a first data entity and to instantiate a second data entity instance (e.g., "customer information") from a second data entity. The first data entity may specify a first attribute to populate in an instance of the first data entity, and the second data entity may specify a second attribute to populate in an instance of the second data entity. The data processing system may be configured to configure the first data entity to specify inheritance of the first attribute of the first data entity from the second attribute of the second data entity (e.g., by storing configuration information in the first data entity that references the second attribute of the second data entity). Based on the configuration information in the first data entity, the data processing system may configure the first data entity instance (e.g., "credit score") to inherit a value of the first attribute from the second attribute of the second data entity instance (e.g., "customer information"). In some embodiments, the data processing system may be configured to store a reference to the second attribute of the second data entity instance in the first data entity instance. Thus, a first data entity instance may not store a value of a first attribute in the first data entity instance, but instead store a reference to a second attribute of a second data entity instance.
[0055] In some embodiments, the data processing system may include at least one data store configured to store a plurality of data entity instances and associated values (e.g., attribute values). The request may be an executable query that, when executed by the data processing system, causes the data processing system to generate a response to the request. In some embodiments, the executable query may be a Structured Query Language (SQL) query or any other type of executable query. In some embodiments, the request may be a programmatic request to access a first value of a first attribute made by a computer program being executed by the data processing system.
[0056] In some embodiments, the plurality of data entity instances may include a third data entity instance having a third plurality of attributes including a third attribute. The second attribute of the second data entity instance may be configured to inherit its value from the third attribute of the third data entity instance. Thus, the first data entity instance may be configured to inherit a first value of the first attribute from the third attribute of the third data entity instance through the second attribute of the second data entity instance.
[0057] In some embodiments, the data processing system may be configured to generate a graphical user interface (GUI) display that displays a first value of a first attribute of a first data entity instance and information indicating whether the first value is inherited. For example, the information may include an indication of a second data entity instance from which the first value of the first attribute is inherited. The information indicating whether the first value is inherited may inform a user of the source of the first value of the first attribute. The information may enable a user to determine a relationship between the first data entity instance and the second data entity instance.
[0058] The inventors further recognized that although inheritance in a data processing system provides more efficient storage of data and access to information about a data entity instance, there may be times when an attribute of a data entity instance needs to adopt a value different from the value that it is configured to inherit from another data entity instance. For example, a data entity instance that stores validation rules for credit scores in the United States may need to store different rules than those inherited from a data entity instance that stores validation rules for credit scores in Europe. Accordingly, the inheritance architecture may limit the flexibility in setting attribute values in a data entity instance.
[0059] To address the above-described challenges in attribute inheritance of attribute values, the inventors have developed techniques that allow an attribute of a data entity instance to be configured to override its inherited value. Thus, a data processing system can provide improved efficiency of inheritance along with the flexibility to override inherited values as needed. Continuing with the above example, a data entity instance whose attribute is configured to inherit credit score validation rules from an attribute of another data entity instance may be configurable to override the inherited validation rules (e.g., for a different geographic region).
[0060] Accordingly, some embodiments provide techniques for accessing data according to inheritance relationships between attributes of data entities, where such inheritance may be overridden. A data processing system may be configured to receive a request to access a first attribute value of a particular instance of a first data entity. The first data entity includes a plurality of attributes including a first attribute. The particular instance includes zero or more values of the plurality of attributes of the first data entity. The first attribute of the particular instance is configured to inherit its value from a second attribute of another instance of a second data entity different from the first data entity. The data processing system may be configured to determine whether the first attribute of the particular instance is configured to override a value inherited from the second attribute. When it is determined that the first attribute is configured to override a value inherited from the second attribute, the data processing system may (1) access an override value for overriding the value inherited from the second attribute, (2) generate a first response to the request that includes information indicating the override value as a value of the first attribute, and (3) output the first response. When it is determined that the first attribute is not configured to override the value inherited from the second attribute, the data processing system may (1) access the value inherited from the second attribute; (2) generate a second response to the request that includes information indicating the value inherited from the second attribute as the first attribute value; and (3) output the second response.
[0061] In some embodiments, the first data entity includes information indicating (i) that the first attribute inherits its value from the second attribute, and (ii) whether the first attribute is configurable to override the inherited value. In some embodiments, the data processing system includes at least one data store configured to store instances of the data entity, the instances of the data entity including the particular instance and the other instances. In some embodiments, the request includes an executable query (e.g., a Structured Query Language (SQL) query). In some embodiments, the particular instance may include multiple attribute values, at least some of the multiple attribute values each inherited from a respective instance of a different data entity.
[0062] In some embodiments, the second attribute of the other instance may be configured to inherit its value from a third attribute of an instance of a third data entity distinct from the second data entity and the first data entity. In some embodiments, accessing the inherited value from the second attribute includes determining whether the second attribute of the other instance is configured to override the value inherited from the third attribute. When it is determined that the second attribute of the other instance is configured to override the value inherited from the third attribute, the data processing system may access another override value for overriding the value inherited from the third attribute as the value inherited from the second attribute. When it is determined that the second attribute of the other instance is not configured to override the value inherited from the third attribute, the data processing system may access the value inherited by the second attribute from the third attribute.
[0063] In some embodiments, the outputting includes generating a graphical user interface (GUI) that displays (1) the first attribute value and (2) information indicating whether the first attribute value is inherited.
[0064] In some embodiments, the particular instance includes values for each of a first plurality of attributes including a first attribute, the first plurality of attributes being configured to inherit their values from a second plurality of attributes of each of the other instances, and the request includes a request to access values of the first plurality of attributes. The data processing system may be configured to: (1) group the first plurality of attributes into a single group; and (2) generate a single executable query for the single group in accordance with the request, the single executable query, when executed by the data processing system, causing the data processing system to generate a response to the request. In some embodiments, grouping the first plurality of attributes into a single group includes grouping the first plurality of attributes into a single group using grouping criteria. In some embodiments, the grouping criteria is to group attributes that inherit values from a common instance into a single group.
[0065] In some embodiments, the data processing system includes at least one data store configured to store information defining relationships between a plurality of data entity instances. In some embodiments, the data managed by the data processing system includes information describing data stored in a distributed database of a distributed network of computing systems. In some embodiments, the data processing system may be configured to store an instance of each of a plurality of data sets stored by the distributed database of the distributed computing system and / or each of a plurality of software applications configured to be executed by the distributed computing system.
[0066] In some embodiments, the data processing system may be configured to (1) generate a first portion of a graphical user interface (GUI) illustrating a first attribute value; (2) set the first attribute value illustrated by the GUI to a second attribute value; and (3) display the GUI. In some embodiments, the data processing system may be configured to (1) determine whether the first attribute is configurable to override its inherited value; and (2) generate a second portion of the GUI indicating that the first attribute is configurable to override its inherited value when it is determined that the first attribute is configurable to override its inherited value. In some embodiments, generating the second portion of the GUI includes enabling a user to specify, through the second portion of the GUI, an override value for overriding the inherited value from the second attribute. In some embodiments, the data processing system may be configured to generate a second portion of the GUI indicating that the first attribute is not configurable to override its inherited value when it is determined that the first attribute is not configurable to override its inherited value.
[0067] In some embodiments, the data processing system can be configured to prevent overriding of a value inherited from a second attribute of another instance. In some embodiments, the data processing system can be configured to generate a GUI that enables a user to configure a first data entity such that a first attribute inherits its value from a second attribute. In some embodiments, the data processing system can be configured to generate a GUI that displays information indicative of a source of the first attribute value. In some embodiments, the GUI can be configured to display information indicative of a source of the first attribute value in response to a mouse over event. In some embodiments, the information indicative of a source of the first attribute value indicates that the source is a second attribute of another instance or that the source is an override value.
[0068] Some embodiments provide techniques for obtaining information about a data entity instance from a data processing system. The data processing system may be configured to store a plurality of data entity instances including: (1) a first data entity instance having a first plurality of attributes including a first attribute; and (2) a second data entity instance having a second plurality of attributes including a second attribute. The data processing system may be configured to obtain a request to obtain information about the first data entity instance, the information including a first value of a first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second attribute of the second data entity instance. The first attribute may be configurable to override its inherited value (such an attribute may be referred to as "overridable"). Of course, even if a value of a data entity instance attribute is overridable, it does not necessarily mean that it will be overridden.
[0069] In some embodiments, there are several different ways in which values inherited by attributes of a data entity instance may be overridden. For example, values may be overridden through a GUI, as described herein with reference to Figures 4E-G. In another example, values inherited by attributes may be overridden through an application program interface (API). In another example, values inherited by attributes may be overridden through a configuration file. Regardless of how the request is made, a data process may be configured to respond to a request for information about an attribute (e.g., included in a request for information about a data entity instance) by accessing the override value.
[0070] In some embodiments, the data processing system may be configured to generate a response to the request including a first value of the first attribute by determining whether a first attribute of a first data entity instance is configured to override a second value of a second attribute of a second data entity instance. When it is determined that the first attribute is configured to override the second value of the second attribute, the data processing system may access the override value and generate a response that includes the override value as a first value of the first attribute. When it is determined that the first attribute is not configured to override the second value of the second attribute, the data processing system may access the second value of the second attribute and generate a response that includes the second value as a first value of the first attribute.
[0071] In some embodiments, the data processing system includes at least one data store configured to store a plurality of data entity instances and associated values, and the request includes an executable query (e.g., an executable SQL query) that, when executed by the data processing system, causes the data processing system to generate a response to the request. In some embodiments, the request is generated in response to a programmatic request made by a computer program running by the data processing system to access the first value of the first attribute. In some embodiments, the request is generated in response to a programmatic request made by a computer program running outside the data processing system to access the first value of the first attribute.
[0072] In some embodiments, the plurality of data entity instances includes a third data entity instance having a third plurality of attributes including a third attribute, and the second attribute of the second data entity instance is configured to inherit its value from the third attribute of the third data entity instance. In some embodiments, accessing the second value of the second attribute includes (1) determining whether the second attribute of the second data entity instance is configured to override the third value of the third attribute of the third data entity instance, (2) accessing a second override value for the second attribute when it is determined that the second attribute of the second data entity instance is configured to override the third value of the third attribute, and (3) accessing the third value of the third attribute when it is determined that the second attribute of the second data entity instance is not configured to override the third value of the third attribute. In some embodiments, accessing the second value of the second attribute includes accessing the third value of the third attribute.
[0073] In some embodiments, a first data entity instance is associated with the first data entity and a second data entity instance is associated with the second data entity, the first data entity including information indicating (i) that the first attribute inherits its value from the second attribute and (ii) whether the first attribute is configured to override the inherited value, and determining whether the first attribute of the first data entity instance is configured to override the second value of the second attribute of the second data entity instance is performed using the first data entity. In some embodiments, determining that the first attribute of the first data entity instance is configured to inherit its value from that of the second attribute of the second data entity instance is performed using the first data entity.
[0074] In some embodiments, the outputting includes (1) generating a graphical user interface (GUI) displaying a first value of the first attribute of the first data entity instance and information indicating whether the first value is inherited. In some embodiments, the accessing the second value of the second attribute includes recursively accessing values of the one or more attributes of the one or more data entity instances to determine the second value of the second attribute. In some embodiments, each attribute of a plurality of attributes including the first attribute of the first plurality of attributes of the first data entity instance is configured to inherit its value from one or more attributes of another data entity instance, and the information includes respective values of the plurality of attributes, the method including (1) grouping, by the data processing system, the plurality of attributes of the first plurality of attributes into a single group; and (2) generating, in accordance with the request, a single executable query for the single group, the single executable query, when executed by the data processing system, causing the data processing system to generate a response to the request.
[0075] In some embodiments, the data processing system may be configured to: (1) group attributes of the first plurality of attributes into one or more groups using a grouping criterion, the grouping information including respective values of the plurality of attributes; and (2) generate executable queries for each of the groups to obtain a plurality of executable queries, the plurality of executable queries, when executed by the data processing system, causing the data processing system to generate a response to the request. In some embodiments, the grouping criterion is to group attributes of the plurality of attributes that share a common inheritance path into a single group, such that one of the plurality of executable queries is used to access inherited values of the grouped attributes.
[0076] In some embodiments, a data processing system includes at least one data store configured to store a plurality of data entity instances and information defining relationships between different data entity instances, the at least one data store configured to store information describing data stored in a distributed database of a distributed network of computing systems using the plurality of data entity instances. In some embodiments, the at least one data store is configured to store a data entity instance of the plurality of data entity instances for each of a plurality of data sets stored by the distributed database of the distributed computing system, for each of a plurality of software applications configured to be executed by the distributed computing system, or for each or a plurality of system portions of the distributed computing system.
[0077] Some embodiments provide techniques for obtaining information about a data entity instance from a data processing system. The data processing system may be configured to store a plurality of data entity instances, the plurality of data entity instances including a first data entity instance having a first plurality of attributes including a first attribute, and a second data entity instance having a second plurality of attributes including a second attribute. The data processing system may be configured to generate a graphical user interface (GUI) including information about the first data entity instance. The data processing system may be configured to generate the GUI by generating a first GUI portion indicating a first value of a first attribute of the first data entity instance, the first attribute of the first data entity instance being configured to inherit its value from a second value of the second data entity instance. The data processing system may be configured to generate the first GUI portion by (1) accessing a second value of the second attribute and (2) setting the first value of the first attribute to a second value. The data processing system may be configured to generate a second GUI portion indicating whether the first attribute is configurable to override its inherited value. The data processing system may be configured to display the GUI.
[0078] In some embodiments, generating the second GUI portion includes determining whether the first attribute is configurable to override its inherited value. In some embodiments, generating the second GUI portion includes determining whether the first attribute is configurable to override its inherited value. In some embodiments, the second GUI portion is configured to display information indicative of a source of a first value of the first attribute. In some embodiments, the second GUI portion is configured to display information indicative of a source of a first value of the first attribute in response to a mouse over event. In some embodiments, the information indicative of a source of a first value of the first attribute indicates that the source is the second attribute or that the source is an override value.
[0079] It should be understood that the concept of inheritance as described herein is different from inheritance as that term is used in connection with object-oriented programming, where inheritance refers to a child class inheriting properties (e.g., variables, function definitions, function implementations) from a base class. This allows for code reuse and extensibility of software through public classes and interfaces.
[0080] In contrast, inheritance as described herein refers to the situation where an attribute of a data entity can be configured to adopt or "inherit" its value from an attribute of another data entity. The configuration will indicate the data entities from which the attribute's data is inherited (it is not fixed like a base class in an object-oriented setting). For example, a data entity "D1" may have two attributes "A1" and "A2", and the value of attribute "A2" may identify another data entity "D2" from which it inherits the value of attribute "A1". Changing the value of attribute "A2" to a different data entity "D3" will change the data entity from which attribute "A1" inherits its value.
[0081] Because configuration is at the attribute level, different attributes of the same underlying data entity can be configured to adopt or "inherit" their values from different attributes of multiple other data entities. This provides great flexibility over how attribute values are set and provides a level of indirection not available in object-oriented programming. In fact, a single data entity can be configured not only to inherit attribute values from multiple other data entities, but also to allow configuration changes at the level of a single data entity instance, as described above.
[0082] As can be seen from the following description, inheritance for a data entity can be configured at the attribute level. To this end, in some embodiments, the data processing system can store an "inheritance configuration" for each of at least some (e.g., all) attributes of a data entity. The "inheritance configuration" can indicate whether the attribute inherits its value from another data entity attribute, and if so, which data entity attribute. In addition, the inheritance configuration can indicate whether the attribute is overridable. If the attribute is overridable, the inheritance configuration can further include permission information indicating which users have permission to override the value.
[0083] In contrast, traditional object-oriented systems do not have the attribute-level inheritance configuration described herein. As explained above, traditional object-oriented systems do not support inheritance of values at the attribute level of a data entity instance. Rather, object-oriented inheritance is at the class level, such that all object instances inherit all their values from a single parent object.
[0084] The techniques described herein may be implemented in any of many ways, and the techniques are not limited to any particular implementation manner. Example implementation details are provided herein for illustrative purposes only. Furthermore, the techniques disclosed herein may be used individually or in any suitable combination, and aspects of the techniques described herein are not limited to the use of any particular technique or combination of techniques.
[0085] As mentioned above, the inventors have recognized that a data processing system can be configured to manage millions or billions of data entity instances. For example, the techniques described herein can be used for metadata management in an enterprise setting, whereby a data entity instance stores information about individual datasets (e.g., tables, transactions, documents, data records, etc.) stored across globally distributed enterprise systems including many databases, data warehouses, data lakes, etc. As mentioned above, in this regard, a data entity instance may store information about a corresponding dataset, such as, for example, when the dataset was created, where it is stored, its size, the identity of users authorized to edit the dataset, information identifying which application programs use the dataset, the sensitivity level of the data, etc. Large organizations (e.g., financial institutions such as banks or credit card companies, utility entities such as telephone companies or electric companies, etc.) typically manage millions or billions of such datasets, and therefore there may be millions or billions of data entity instances that store information about such datasets managed by the data processing system.
[0086] 1A is a diagram illustrating an example environment in which a data processing system 105 may be used, according to some embodiments of the techniques described herein. The example of FIG. 1A is an implementation in which the data processing system 105 is used for metadata management. It should be understood that the techniques described herein are not limited to application to a particular type of data, but may be used within any data processing system that uses data entities and data entity instances to manage data, whether the managed data is metadata or any other type of data (e.g., transactions, files, data records, tables, etc.).
[0087] 1A illustrates an enterprise system that includes systems 160, 162, 164 distributed across multiple geographic locations (e.g., different cities, countries, continents, etc.). Each of the systems 160, 162, 164 may store vast amounts of data (e.g., in one or more database systems, data warehouses, data lakes, etc.). For example, the systems 160, 162, 164 may be components of an enterprise system of a global bank, with system 160 in the United States, system 162 in Brazil, and system 164 in Europe.
[0088] As shown in the example embodiment of FIG. 1A, each of the systems 160, 162, 164 includes a respective set of computing devices. System 160 includes server 160A and database 160B. System 162 includes server 162A and database 162B. System 164 includes server 164A and database 164B. During operation of the enterprise system, each of the systems 160, 162, 164 may generate and / or store large amounts of data (e.g., terabytes of data). For example, the enterprise system may be a credit card company system, with each of the systems 160, 162, 164 generating and / or storing transaction data, credit scores, and / or any other suitable data. In another example, the enterprise system may be a bank system, with each of the systems 160, 162, 164 generating and / or storing bank records, loans, account holders, and / or any other suitable data. In another example, the enterprise systems may be telephone company systems, with each of systems 160, 162, 164 generating and / or storing telephone calls, text messages, data usage, and / or any other suitable data.
[0089] In some embodiments, database systems 160B, 162B, 164B may be configured to store data (e.g., of an enterprise system). Each of database systems 160B, 162B, 164B may include a database, a data warehouse, a data lake, and / or any other database system. Database systems 160B, 162B, 164B may be of any suitable type, either the same type or different types. For example, each of these systems may include one or more relational database systems (e.g., ORACLE, SQL SERVER, etc.). As another example, in some embodiments, each of these systems may include one or more other types of database systems (e.g., non-relational (e.g., NoSQL) database systems, multi-file systems, or any other suitable types of database systems).
[0090] In the example embodiment of FIG. 1A, data processing system 105 stores information 107 that describes data stored in systems 160, 162, 164. In this sense, information 107 can be considered metadata. Metadata can include any of many types of information about data stored in enterprise systems 160, 162, 164. For example, metadata can include information about the systems (e.g., servers 160A, 162A, 164A) that process the data, software applications running in the enterprise systems used to process the data, and / or the application's rules for storing the data. In another example, metadata can include information about data throughout enterprise software systems, such as how the data was generated, the size of the data, a description of the data, which users have permission to read, update, create, delete, or perform any other action on the data, and / or any other suitable information about the data.
[0091] In some embodiments, the data processing system may be configured to manage metadata using data entity instances and data entity definitions. For example, the data processing system 105 may store a data entity instance for each of a number of datasets (e.g., tables) stored by an enterprise system. Each such data entity instance may store information about the dataset (e.g., when the dataset was created or updated, where the dataset is stored, the size of the dataset, identities of users who are authorized to read, edit, delete, or perform any other suitable actions on the dataset, information identifying which software applications use the dataset, information identifying the sensitivity level of the data in the dataset, and / or any other suitable metadata). As another example, the data processing system 105 may store a data entity instance for each column of a table in an enterprise system. Each such data entity may store information about the column (e.g., the meaning of values in the column, who has authority to read, write, update, and / or delete values in the column, the range of allowed values for entries in the column, and / or any other suitable metadata). As yet another example, data processing system 105 may store a data entity instance for each of multiple software applications configured to be executed by any system or device portion of an enterprise system. Such a data entity instance may store information about the software application (e.g., which data sets the software application processes, where the application places its output, a description of the application's functionality, the application's version, the application's dependencies on data and / or other applications, where the application's executable files can be found, and / or any other suitable metadata). As yet another example, data processing system 105 may store a data entity instance for each of multiple system portions of an enterprise system.
[0092] As can be readily appreciated from the above, in such a metadata management scenario, the data processing system 105 may manage millions or even billions of such data entity instances, which is why it is important that querying, creating, updating, deleting or performing any other suitable operation on the data entity instances is performed as efficiently as possible.
[0093] In some embodiments, the data processing system 105 can be configured to obtain information 107 about data from the various systems 160, 162, 164. For example, the data processing system 105 can query databases 160B, 162B, 164B for metadata of the various systems 160, 162, 164. In some embodiments, the data processing system 105 can be configured to generate metadata using the information obtained from the systems 160, 162, 164 (e.g., by querying database systems 160B, 162B, 164B for metadata). In some embodiments, the data processing system 105 can be configured to store metadata about data stored in the systems 160, 162, 164. For example, each of the systems 160, 162, 164 can be a data lake, a data warehouse, a database system, or other type of system. The metadata can be stored in instances of data entities, as described herein. In some embodiments, one or more attributes of a data entity instance can be configured to inherit values from attributes of other data entity instances, hi some embodiments, the data processing system 105 can be configured to allow a user of the data processing system 105 to override values inherited by an attribute.
[0094] 1A, one or more users 102 may access information 107 about data in an enterprise system by interacting with a data processing system 105. For example, users 105 may interact with data processing system 105 using one or more computing devices through one or more interfaces (e.g., user interfaces) provided by data processing system 105. Exemplary interfaces through which users 102 may interact with data processing system 105 are described herein with reference to FIG. 1H.
[0095] Figure 1B is a diagram illustrating an example implementation of the data processing system 105 of Figure 1A in accordance with some embodiments of the techniques described herein. As shown in the example embodiment of Figure 1B, data processing system 105 is communicatively coupled to (1) databases 160B, 162B, 164B of respective systems 160, 162, 164 of Figure 1A and (2) devices (e.g., those used by user 102). Data processing system 105 includes an interface 110, a data entity access system 120, and a data persistence layer 150.
[0096] In some embodiments, the interface 110 can be configured to include a user interface for allowing the user 102 to access information from the data processing system 105 (e.g., using a computing device). The interface 110 can be configured to generate a graphical user interface (GUI) for allowing the user to access data from the information 107 about data stored in the systems 160, 162, 164. The GUI allows the user to (1) request information about data entity instances stored by the data processing system, and (2) view information about data entity instances stored by the data processing system. In some embodiments, the GUI allows the user to access the stored information 107 (e.g., metadata) about data stored by the systems 160, 162, 164. For example, the GUI allows the user 102 to track data (e.g., quality metrics and other characteristics of the data) being generated in the enterprise system. In another example, the GUI allows the user 102 to visualize information describing components of a process flow, including input data, descriptions of processes performed on the input data, and output data. In another example, interface 110 may include a scripting interface to allow scripts to be received for execution by data processing system 105. In another example, interface 110 may include graph-based computer program 116, third party applications, and / or other interfaces. Various examples of interface 110 are described herein with reference to FIG. 1H.
[0097] With regard to metadata management, in some embodiments, the interface 110 may be configured to generate a graphical user interface (GUI) that allows a user to access information 107 about data stored in the systems 160, 162, 164. The GUI allows a user to (1) request information about data entity instances stored by the data processing system and (2) view information about data entity instances stored by the data processing system. In some embodiments, the GUI may allow a user to access stored information 107 (e.g., metadata) about data stored by the systems 160, 162, 164. For example, the GUI may allow a user 102 to track data being generated in an enterprise software system (e.g., quality measures and other characteristics of the data). In another example, the GUI may allow a user 102 to visualize lineage information. Lineage information may include information about relationships between different data entity instances. Aspects of pedigree information are described in U.S. Pat. No. 10,489,384, entitled "SYSTEM AND METHODS FOR DETERMINING RELATIONSHIPS AMONG DATA ELEMENTS," which is incorporated by reference herein in its entirety.
[0098] In some embodiments, the data entity access system 120 can be configured to manage access to data entities. The data entity access system 120 can be configured to allow data entities to be configured. The data entity access system 120 can be configured to allow new data entities to be defined and to allow properties of attributes of the data entities to be configured. For example, the data entity access system 120 can allow an attribute of a data entity to be configured to inherit its value from an attribute of another data entity. As another example, the data entity access system 120 can allow attributes of a data entity to be configured to inherit from attributes of other data entities. As another example, the data entity access system 120 can allow attributes of a data entity to be configured to be overridable.
[0099] In some embodiments, the data entity access system 120 may be configured to manage the organization, storage, and access of information from data entity instances stored by the data processing system 105. For example, the data processing system 105 may execute queries to obtain information about data entity instances stored by the data processing system 105. In some embodiments, the data entity access system 120 may be configured to generate responses to requests for information about data entity instances stored by the data processing system 105. For example, the data processing system 105 may generate responses for information about metadata stored by the data processing system 105.
[0100] In some embodiments, data persistence layer 150 can be configured to store information about data entities and their instances. The information can include information defining data entities, instances of data entities, and relationships between data entities and between the instances. In some embodiments, data persistence layer 150 can provide a central repository for all metadata of a system (e.g., an enterprise system). For example, data persistence layer 150 can store information 107 about data stored in databases 160B, 162B, 164B. For example, each of databases 160B, 162B, 164B can be a data lake, a data warehouse, a database system, or other type of data store.
[0101] Table 166 shown in FIG. 1B illustrates exemplary data stored in database 164C. Table 166 stores a set of information about a customer (e.g., of a bank). Columns in table 166 include "identifier", "name", "credit score", and "score obtained date". Data persistence layer 150 stores a "dataset" data entity instance 156 that stores metadata about the data in table 166. Data entity instance 156 stores values of attributes including "type", "business manager", "number of entries", "private", "storage size", and "data ID" of data entity instance 156. In some embodiments, "dataset" data entity instance 156 can store values of other attributes in addition to or instead of those shown in FIG. 1B.
[0102] In applications where a data entity instance includes metadata about data (e.g., information about a table), in some embodiments the data entity instance may include information that can be used to identify and / or access the data. As shown in the example of FIG. 1B, a “Data ID” attribute identifies the data (e.g., a table) that the information in “Data Set” data entity instance 156 describes. For example, the value of “Data ID” may be an identifier for table 166. In some embodiments, the value of “Data ID” may enable a user to navigate to table 166. For example, the value of “Data ID” may be a hyperlink that navigates to table 166 in database 164B. In some embodiments, a data entity instance does not itself store information about the data, but a data processing system may store information that associates a data entity instance with information that can be used to identify and / or access the data itself. For example, the data processing system may store such information in one or more tables (e.g., in data persistence layer 150) or in any suitable manner.
[0103] As shown in the example embodiment of FIG. 1B, the data persistence layer 150 further stores a "Credit Score" data entity instance 158. The "Credit Score" data entity instance 158 may be an instance of the "BizTerm" data entity 180 of FIG. 1D. The "Credit Score" data entity instance 158 includes values for the attributes "Type", "Description", "Business Owner", "Valid Lower Limit", "Valid Upper Limit", "Private", and "Data ID". As indicated by the arrow between the "Data ID" attribute and the "Credit Score" column of table 166, the "Credit Score" data entity instance 158 describes the data in the "Credit Score" column of table 166. As shown in the example of FIG. 1B, the "Data ID" attribute indicates the data that the information in the "Data Set" data entity instance 158 describes. For example, the "Data ID" value may be an identifier for the "Credit Score" column in table 166. In some embodiments, the "Data ID" value may enable a user to navigate to the "Credit Score" column of table 166. For example, the "Data ID" value may be a hyperlink that provides a user with information from the "Credit Score" column.
[0104] FIG. 1C is a graphical user interface (GUI) illustrating a data entity instance 158 of FIG. 1B in accordance with some embodiments of the techniques described herein. In this example, the data entity instance is called “Credit Score”. The data entity instance 158 has many static attributes (e.g., “Name”, “Definition”, and “Type”) as well as dynamic attributes. In this example, the dynamic attributes are divided into groups of attributes to store various types of information related to data governance in a banking application. For example, the data entity instance 158 has dynamic attributes related to governance, including “Business Owner”, “Governance Group”, “Risk Data Domain”, “Line of Business”, “Steward”, “Subject Matter Expert”, etc. As another example, the data entity instance 158 has attributes related to privacy and security, including “Sensitivity”, “PII Classification”, and “Security Coverage”. The screenshot of FIG. 1C illustrates some example values of these attributes for the data entity instance 158 displayed in the GUI.
[0105] As can be seen from the above examples, attributes can be considered to be of different types depending on the type of values they take. Examples of different types of attributes are described below by way of illustration and not by way of limitation. For example, an attribute can take a scalar value such as a number, a string, a date, a time, or a datetime. Attributes of this type can be referred to as "extended attributes" in some examples described herein. In some embodiments, an attribute can be multi-valued and can take a set of values, each of which can be a number, a string, a date, a time, or a datetime.
[0106] As another example, an attribute may be discrete and take on a value selected from a set of discrete values. Such a set may be referred to as an "enumeration." For example, an attribute may be of type "classification" and its value is a label selected from a set of labels. This allows tagging of data with a desired label. As one particular example, certain data may be classified as being or containing personally identifiable information (PII) with values such as "yes" or "no." In the example of FIG. 1C, a PII classification dynamic attribute may be of type "classification," such as the attribute "governance group." As another example, an attribute may take on a value that represents a respective user or user group. In the example of FIG. 1C, the "business owner" attribute may be of type "responsible person," and its value may represent a user or user group. In the example of FIG. 1C, "business owner" takes on the value "Bob Owen." In some embodiments, one or more (e.g., all) values of a discrete set of values may be references to another data entity instance. All of these example attributes are discrete.
[0107] As another example of a discrete attribute, an attribute may take values of an ordered set of values. For example, the values in the ordered set may be ordered according to a hierarchy. As one particular example, an attribute may store values related to geographic regions that may be selected from a hierarchical list of values (e.g., "America", "Delaware", or "Wilmington"). An attribute taking values of an ordered set of values may be of a type of "hierarchy". In the example of FIG. 1C, the "Risk Data Domain", "Line of Business", and "Region" attributes are dynamic attributes of type "hierarchy". When accessing a value of an attribute of type "hierarchy", in some embodiments, a particular value taken by a variable may be returned along with other associated values. For example, as shown in FIG. 1C, the value of "Risk Data Domain" is "Credit Risk", which in FIG. 1C is of type "Company Risk" and is therefore displayed along with the associated value "Company Risk" (which is the value associated with "Credit Risk" in the hierarchy of values of "Risk Data Domain"). In some embodiments, one or more (e.g., all) values of the ordered set of values may be references to another data entity instance.
[0108] As another example, an attribute may be a reference attribute, the value of which may be a reference to another data entity (e.g., a reference to an instance of another data entity). In some embodiments, an attribute may be multi-valued and may take on a set of values, each of which may be a reference to a data entity.
[0109] As another example, in some embodiments, an attribute may be of type "file attachment" and its value may identify the file of interest (e.g., a document, a report, a configuration file, a spreadsheet, etc.) In the example of Figure 1C, the "design document" attribute is of type "attachment."
[0110] In some embodiments, the data processing system 105 can be configured to store information 107 in an instance of a data entity. As described herein, in some embodiments, a data entity attribute can be static or dynamic, meaning that its value is stored using different mechanisms as described below. For example, FIG. 1D shows an exemplary diagram of a data entity 170 having a number of static attributes 172, including static attributes 173a and 173b, and a number of dynamic attributes 174, including dynamic attributes 175a and 175b. As shown in FIG. 1D, the data entity 170 includes configuration information 173c for attribute S1 173a, configuration information 173d for attribute S2 173b, configuration information 175c for attribute D1 175a, and configuration information 175d for attribute D2 175b. The configuration information for each attribute may indicate whether the attribute is configured to inherit its value, the data entity from which the attribute inherits its value (if the attribute is configured to inherit its value), whether the attribute's inherited value is overridable, whether the attribute is required in an instance of data entity 170, the order in which the attributes are displayed in the GUI, whether the attribute can have multiple values, a description of the attribute, and other information. An attribute of an instance of data entity 170 may be configured according to the configuration information for the attribute in data entity 170.
[0111] In some embodiments, a data entity may specify additional information for one or more of the attributes of the data entity. For example, the data entity may specify an attribute type. As another example, the data entity may specify the manner in which the attribute's value is stored by the data processing system (e.g., whether the attribute value is stored in a row or in a column). As yet another example, the data entity may specify whether the attribute of the data entity inherits its value (e.g., from an attribute of another data entity). In some implementations, the data entity may specify a particular value for a particular attribute, in which case all instances of the data entity will set the particular attribute to the particular value. Otherwise, the value of a data entity instance attribute may vary from one instance of the data entity to another.
[0112] As another example, FIG. 1D illustrates an exemplary diagram of a data entity 180 called “BizTerm” having a number of static attributes 182, including static attributes “Type” 182a and “Description” 182b, and dynamic attributes 184, including dynamic attributes “Business Owner” 184a, “Valid Upper Limit” 184b, “Valid Lower Limit” 184c, and “Data ID” 184d. A data entity may have any suitable number of static attributes (including zero) and any suitable number of dynamic attributes (including zero), as aspects of the technology described herein are not limited in this respect. In some embodiments, the data processing system 105 may be configured to store static attributes and dynamic attributes in different manners. Accordingly, a single data entity instance may be stored using rows and / or columns of one or more tables of a database system (e.g., a relational database system). The tables may be stored in one or more computer-readable storage media. On the other hand, in some embodiments, dynamic attribute values may be stored using name-value pairs. Specifically, each database record can store attribute values for a particular entity instance.
[0113] As shown in Figure 1D, the "Credit Score" data entity instance 158 is an instance of the data entity "BizTerm" 180. The data entity instance 158 has values for each of the attributes of the data entity "BizTerm" 180. For example, the data entity instance 158 has a value of "Business Term" for the "Type" attribute 182a, a value of "Bob Owen" for the "Business Owner" attribute 184a, a value of "800" for the "Valid Upper Limit" attribute 184b, and a value of "300" for the "Valid Lower Limit" attribute 184c. As indicated by the dotted lines, the data entity instance 158 may have values for other attributes not shown in Figure 1D.
[0114] FIG. 1E is a diagram illustrating exemplary data 107 stored in a data persistence layer 150 of a data processing system 105, according to some embodiments of the techniques described herein. As shown in the example embodiment of FIG. 1E, in some embodiments, the data persistence layer 150 stores a large number (e.g., thousands, millions, billions) of data entity instances that store information about each component of the enterprise system of FIG. 1A (e.g., a data set, a software application, a system component of the enterprise system, or any other component). An arrow from each data entity instance in FIG. 1E indicates the component that the information in the data entity instance describes. The component may be a data set, an application (e.g., one or more computer programs), a system (e.g., a database system), and / or other component of the enterprise system. For example, a data entity instance may store information about data (e.g., a table) of the enterprise system. In another example, a data entity instance may store information about an application of the enterprise system. In yet another example, a data entity instance may store information about a user of the enterprise system. As shown in FIG. 1E, the data persistence layer 150 stores data entity instances 156, 158, as described herein with reference to FIG. 1B.
[0115] In some embodiments, the data persistence layer 150 can be configured to support tens, hundreds, thousands, or tens of thousands of data entities, and in an enterprise environment, the data persistence layer 150 can be configured to store thousands, millions, or billions of data entity instances. For example, the data persistence layer 150 can store at least 10,000 data entity instances, at least 50,000 data entity instances, at least 100,000 data entity instances, at least 500,000 data entity instances, at least 1,000,000 data entity instances, at least 5 million data entity instances, at least 10 million data entity instances, at least 50 million data entity instances, at least 100 million data entity instances, at least 500 million data entity instances, at least 1 billion data entity instances, at least 5 billion data entity instances, between 100,000 and 5 million data entity instances, between 1 million and 500 million data entity instances, between 1 million and 5 billion data entity instances, or any other range of data entity instances within these ranges.
[0116] As shown in the exemplary embodiment of FIG. 1E, data stored by the data persistence layer 150 can be used to provide visualizations 109 in a graphical user interface (GUI) provided to the user 102 on the device. In some embodiments, the interface 110 of the data processing system 105 can be configured to provide information about data entity instances stored by the data processing system 105. For example, a user may wish to access values of one or more attributes of a data entity instance. In another example, a user may wish to access values of multiple attributes of multiple data entity instances. In another example, a user may wish to view lineage information, such as the lineage information 109 shown in FIG. 1E. Lineage information may include information about relationships between different data entity instances. Aspects of lineage information are described in U.S. Pat. No. 1,048,9384, entitled “SYSTEMS AND METHODS FOR DETERMINING RELATIONSHIPS AMONG DATA ELEMENTS,” which is incorporated herein by reference in its entirety.
[0117] 1F is a diagram illustrating inheritance of attribute values by data entity instance 158, data entity instance 161A, and data entity instance 161B from data entity instance 159A, according to some embodiments of the techniques described herein. FIG. 1F illustrates a "Credit Risk" data entity instance 159A, a "Credit Score" data entity instance 158 that stores information about EXPERIAN credit scores for customers in the United States of America (USA) (the credit scores themselves are stored in table 163A), a "Credit Score" data entity instance 161A that stores information about EQUIFAX credit scores for customers in Brazil (the credit scores themselves are stored in table 163B), and a "Credit Score" data entity instance 161B that stores information about TransUnion credit scores for customers in Europe (the credit scores themselves are stored in table 163C). Each of the "Credit Score" data entity instances 158, 161A, and 161B includes the attributes "Business Owner", "Region", and "Institution". In the example of Figure 1F, in each of the "credit score" data entity instances 158, 161A, and 161B, the "business owner" attribute is configured to inherit its value from the responsible person attribute of the "business owner" data entity instance 159A. Each of the data entity instances 158, 161A, 161B inherits "Bob Owen" as the value of its respective "responsible person" attribute. There may be additional "credit score" data entity instances that store information about the respective credit scores (e.g., stored in an enterprise system), as indicated by the dots.
[0118] Figure 1G is a diagram illustrating attribute value overrides inherited by a "Credit Score" data entity instance 161B from a "Credit Risk" data entity instance 159A in accordance with some embodiments of the techniques described herein. The "Credit Score" data entity instance 161B includes the attributes "Business Owner", "Region" and "Institution". The "Business Owner" attribute of the "Credit Score" data entity instance 161B is originally configured to inherit its value from the "Credit Risk" data entity instance 159A, but in the example of Figure 1G, it has been overridden. As shown in Figure 1G, instead of inheriting the value "Bob Owen" from the "Credit Risk" data entity instance 159A, the "Business Owner" attribute has an override value of "Bernadette Ouvier".
[0119] 1H is a block diagram 100 illustrating aspects of an exemplary data processing system 105 in accordance with some embodiments of the techniques described herein. The data processing system 105 includes an interface 110, a data entity access system 120, and a data persistence layer 150.
[0120] In some embodiments, interface 110 allows user 102 to interact with data processing system 105. Interface 110 includes one or more of graphical user interfaces (GUIs) 112, scripting interfaces 114, graph-based computer programs 116, and third party applications 116. As indicated by the dots, interface 110 may include one or more other types of interfaces instead of or in addition to the interfaces shown in FIG. 1H.
[0121] In some embodiments, the GUI 112 may include a graphical user interface (GUI) that allows configuration of a data entity. The GUI may be configured to allow a data entity to be defined. The GUI may be configured to allow a user 102 to configure an attribute of the data entity. In some embodiments, the GUI may be configured to allow a user 102 to configure an attribute of the data entity to inherit its value from an attribute of another data entity. For example, the GUI may allow a user to indicate other data entities from which the attribute inherits its value (e.g., by specifying an identifier of the other data entity). In some embodiments, the GUI may be configured to allow a user 102 to configure an attribute so that the attribute overrides its inherited value. For example, the GUI may allow a user to enable or disable an override for an attribute. Enabling an override for an attribute allows a user to (1) issue an override of an inherited value and (2) enter an override value as the value of the attribute for an instance of the data entity.
[0122] In some embodiments, the GUI 112 may include a GUI that displays information about a data entity instance. The GUI may be configured to display attribute values of the data entity instance. An exemplary GUI that displays information about a data entity instance is described herein with reference to FIG. 1H. In some embodiments, the GUI may be configured to indicate the source from which an attribute value is inherited. The GUI may be configured to indicate the data entity and / or data entity instance from which an attribute of the data entity instance inherits its value. For example, the GUI may generate a portion of the GUI that displays the name of the data entity and / or data entity instance from which the attribute value is inherited (e.g., when a user hovers a cursor over the attribute name). An exemplary GUI portion is described herein with reference to FIGS. 4D-G and 6C-6D.
[0123] In some embodiments, the GUI 112 may include a GUI configured to indicate whether an attribute of a data entity instance is configurable to override its inherited value. The GUI may include a portion that indicates whether an attribute is configurable to override its inherited value. For example, the GUI may be configured to display a graphical element (e.g., an icon) that indicates whether an attribute is configurable to override its inherited value. In some embodiments, a first graphical element (e.g., a pencil icon) may indicate that the attribute is configurable to override its inherited value and a second graphical element (e.g., a lock icon) may indicate that the attribute is not configurable to override its inherited value. Exemplary GUI portions are described herein with reference to FIGS. 4D-G and 6C-6D.
[0124] In some embodiments, GUI 112 may include a GUI configured to allow user 102 to set attribute values for a data entity instance. The GUI may be configured to allow the user to enter attribute values. For example, the GUI may include one or more text entry fields to allow the user to enter a string as the attribute value. In another example, the GUI may provide a list of options from which the user can select one or more attribute values.
[0125] In some embodiments, the GUI 112 may include a GUI for enabling a user to submit a request for information about one or more data entity instances. In some embodiments, the GUI may be configured to include a query generator for enabling a user to generate and submit a query for information about the data entity instances. In some embodiments, the GUI may be configured to provide a search field in which a user may enter search terms to retrieve information about one or more data entity instances stored by the data processing system 105. In some embodiments, the GUI may provide a filter interface in which a user may provide input specifying criteria by which data entity instances are filtered by the data processing system 105.
[0126] In some embodiments, the scripting interface 114 allows the user 102 to access information about the data entity instances using scripts. In some embodiments, the scripting interface can be a program written using a scripting language. For example, the scripting interface can be a website JAVASCRIPT program written using JAVASCRIPT. The scripting interface allows the user to request information about the data entity instances. For example, the scripting interface allows the user to submit a query for information about one or more data entity instances.
[0127] In some embodiments, the graph-based computer program 116 can be used by one or more users 102 to perform data processing using the data processing system 105. In some embodiments, the graph-based computer program can be a dataflow graph. A dataflow graph can include components called "nodes" or "vertices" that represent data processing operations to be performed on data and links between the components that represent the flow of data. Techniques for executing operations encoded by dataflow graphs are described in U.S. Patent No. 5,966,072, entitled "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS," which is incorporated herein by reference in its entirety. An environment for developing computer programs as dataflow graphs is described in U.S. Patent Application Publication No. 2007 / 0011668, entitled "Managing Parameters for Graph-Based Applications," which is incorporated herein by reference in its entirety.
[0128] In some embodiments, one or more third party applications 116 may provide an interface to allow user 102 to interact with data processing system 105. In some embodiments, the third party application may be a web application to allow user 102 to interact with data processing system 105. For example, the third party application may be a website to allow user 102 to request information about data entities and / or instances thereof. In another example, the third party application may be a mobile application to allow user 102 to request and view information about data entities.
[0129] In some embodiments, the data entity access system 120 can be configured to manage data entities and data entity instances stored by the system 105. The data entity access system 120 includes an inheritance module 122, an override module 124, a graphical user interface module 126, a lineage module 128, a permission module 130, a report generation module 132, and a data access module 140. In some embodiments, each of the modules 122, 124, 126, 128, 130, 132 can include a set of processor-executable instructions that, when executed by a data processing system, cause the data processing system to perform the described functions of the module. In some embodiments, the data entity access system 120 can include one or more modules instead of or in addition to the modules shown in FIG. 1H.
[0130] In some embodiments, the inheritance module 122 may be configured to manage inheritance of attributes between data entities and between instances thereof. The inheritance module 122 may be configured to configure one or more attributes of a data entity to inherit a value from another data entity. For example, the inheritance module 122 may be configured to store information mapping attributes of a data entity to one or more attributes of other data entities to inherit. The mapping may indicate one or more inheritance paths for inheriting attributes. An inheritance path may be a sequence of one, two or more steps, each of which is associated with a data entity instance, and each step includes an indication (e.g., a reference or pointer) that an attribute of the data entity instance associated with the step is configured to inherit its value from an attribute of another data entity instance associated with a subsequent step. Exemplary inheritance paths are described herein with reference to Figures 2A-D and 5A-C.
[0131] In some embodiments, the inheritance module 122 may be configured to store an indication of a source for an inherited attribute of a data entity. The source may be an indication (e.g., a name or other identifier) of the data entity from which the attribute is inherited. In some embodiments, the inheritance module 122 may be configured to allow a user to specify (e.g., in a GUI for defining the data entity) the data entity from which the attribute is inherited. An example of how the inheritance module 122 manages inheritance between data entities is described herein with reference to FIG. 2A.
[0132] In some embodiments, the inheritance module 122 can be configured to configure an attribute of a data entity to inherit a value. For example, the inheritance module 122 can modify a value of configuration information for the attribute to configure the attribute to inherit its value. In some embodiments, the inheritance module 122 can be configured to determine (e.g., using the configuration information for the attribute) whether the attribute inherits from another attribute. The inheritance module 122 can be configured to identify from where the attribute inherits its value. The inheritance module 122 can be configured to determine the inherited attribute value using information indicating the inheritance path. For example, the inheritance module 122 can determine the value of the first attribute by (1) determining that a first attribute of a first data entity instance is configured to inherit its value from a second attribute of a second data entity instance, and (2) determining the value of the second attribute using a reference stored in the first data entity instance. Examples of how the inheritance module 122 manages inheritance between data entity instances are described herein with reference to Figures 2C and 5A. Examples of how the inheritance module 122 manages inheritance between data entity instances are illustrated by the graphical user interfaces (GUIs) of FIGS. 4A-G and 6A-D.
[0133] In some embodiments, the inheritance module 122 may be configured to store information indicating whether an attribute value of a data entity instance is inherited. For example, the inheritance module 122 may store information identifying data entities and / or data entity instances from which one or more attributes of the data entity instance are configured to inherit values. In some embodiments, the inheritance module 200 may be configured to store information within the data entity instance. For example, the inheritance module 200 may store one or more attributes in the data entity instance that indicate one or more other data entity instances from which the data entity instance inherits an attribute value. In some embodiments, the inheritance module 200 may be configured to store information in a location separate from the data entity instance. For example, the inheritance module 200 may store information in a separate data object (e.g., a file) associated with the data entity instance.
[0134] In some embodiments, the inheritance module 122 may be configured to determine values for one or more inherited attribute values of a data entity instance. For example, the inheritance module 122 may determine the value in response to a request for information about a first data entity instance requesting the value of the inherited attribute value. The inheritance module 122 may be configured to determine the value of a first attribute of the first data instance by accessing a value of a second attribute from a second data entity instance from which the first attribute is configured to inherit its value. The inheritance module 122 may be configured to output the determined value (e.g., to generate a response to the request for information about the first data entity instance).
[0135] In some embodiments, the override module 124 can be configured to manage overrides of inherited attributes of a data entity. In some embodiments, the override module 124 can be configured to set (e.g., by setting a value of the attribute's configuration information) whether the attribute is configurable to override an inherited value. For example, the override module 124 can set a variable (e.g., a Boolean or integer value) of the data entity for the attribute that indicates whether the attribute is configurable to override an inherited value. In some embodiments, the override module 124 can be configured to allow a user to specify (e.g., in a GUI for defining the data entity) whether the attribute is configurable to override an inherited value. The override module 124 can be configured to allow overrides of attribute values in an instance of a data entity according to the data entity's specifications. An example of how the override module 124 manages attribute overrides of a data entity is described herein with reference to FIG. 2B.
[0136] In some embodiments, the override module 124 can be configured to override an inherited attribute value of a data entity instance. The override module 124 can be configured to override an inherited attribute value by replacing the attribute value with an override value. For example, the override module 124 can replace the inherited attribute value with an override value provided as user input in a GUI of the data processing system 105. In some embodiments, the override module 124 can be configured to output the override value as the attribute value (e.g., to provide a response to a request for the attribute value). An example of how the override module 124 manages the override of inherited attributes in a data entity instance is described herein with reference to FIG. 2D.
[0137] In some embodiments, the override module 124 may be configured to determine whether an attribute of a data entity instance is configurable to override an inherited value. In some embodiments, the override module 124 may be configured to determine whether an attribute of a data entity instance is configurable to override an inherited value based on the data entity from which the data entity instance was created. For example, the override module 124 may determine whether the data entity specifies that the attribute is configurable to override an inherited value. In some embodiments, the override module 124 may be configured to store a value (e.g., a Boolean or integer value) in the data entity instance indicating whether the attribute is configurable to override an inherited value.
[0138] In some embodiments, the graphical user interface module 126 can be configured to generate the GUI 112 to enable the user 102 to interact with the data processing system 105. In some embodiments, the graphical user interface module 126 can be configured to generate a GUI that displays information about a data entity instance. The GUI can be configured to display information about attributes (e.g., attribute values) of the data entity instance. In some embodiments, the graphical user interface module 126 can be configured to generate a portion of the GUI that indicates the source of an inherited attribute value. For example, the graphical user interface module 126 can generate an overlay portion on the GUI that indicates the source data entity and / or data entity instance from which the attribute value is inherited.
[0139] In some embodiments, the graphical user interface module 126 can be configured to generate a portion of the GUI that indicates whether the inherited attribute is configurable to override the inherited value. For example, the graphical user interface module 126 can generate a first icon (e.g., a pencil icon) that indicates that the attribute is configurable to override the inherited value and a second icon (e.g., a lock icon) that indicates that the attribute is not configurable to override the inherited value. In some embodiments, the graphical user interface module 126 can be configured to generate a portion of the GUI that describes whether the attribute is configurable to override the inherited value. For example, in response to a user hovering a cursor over the first icon, the module 126 can generate a message that indicates that the inherited attribute value can be overridden.
[0140] In some embodiments, the graphical user interface module 126 can be configured to generate a GUI to allow a user to define a data entity. The GUI allows a user to define inheritance of attributes and indicate whether an attribute is configurable to override an inherited value. The graphical user interface module 126 can provide user input to the GUI to the inheritance module 122 and the override module 124.
[0141] In some embodiments, the lineage module 128 can be configured to manage lineage information for data managed by the data processing system 105. The lineage module 128 can be configured to manage entity relationships stored in the data persistence layer 150. In some embodiments, the lineage module 128 can be configured to determine relationships between data entity instances. In some embodiments, the lineage module 128 can be configured to determine relationships between data entity instances based on inheritance of attribute values between the data entity instances. In some embodiments, the lineage module 128 can be configured to determine relationships between data entity instances based on other factors instead of or in addition to inheritance of attribute values. For example, the lineage module 128 can be configured to determine relationships based on how the data (e.g., data entity instances) were obtained, how the data changed over time, and / or how the data is used. In some embodiments, the lineage module 128 can be configured to automatically generate the lineage information. Aspects of generating pedigree information are described in U.S. Pat. No. 1,0489,384, entitled "SYSTEMS AND METHODS FOR DETERMINING RELATIONSHIPS AMONG DATA ELEMENTS," which is incorporated herein by reference in its entirety.
[0142] In some embodiments, the authorization module 130 can be configured to manage the permissions of a user using the data processing system 105. The authorization module 105 can be configured to determine whether a user can edit attribute values of a data entity instance. The authorization module 130 can be configured to determine whether a user can override inherited attribute values (e.g., using the override module 124). In some embodiments, the authorization module 130 can manage access to data. For example, the authorization module 130 can determine which data entity instances a user can request access to according to the user's role (e.g., administrator or manager). In some embodiments, the authorization module 130 can provide access to a user according to the role. For example, the authorization model 130 can be configured to determine read, update, create, and / or delete permissions based on the user role.
[0143] In some embodiments, the report generation module 132 may be configured to generate information about data entities and / or instances thereof stored by the data processing system 105. In some embodiments, the report generation module 132 may be configured to output information in response to a request submitted by a user. The request may be a query for information about one or more data entity instances. For example, the query may be an executable Structured Query Language (SQL) query. The report generation module 132 may be configured to output attribute values of the data entity instances requested by the user. An exemplary process for generating a response to a request is described herein with reference to FIGS. 3A-C.
[0144] In some embodiments, the data access module 140 can be used by the data processing system to access data stored by the system (e.g., in the data persistence layer 150). As shown in FIG. 1H, the data access module 140 can be configured to submit a data request 142 to the data persistence layer 150 and receive data in response to the data request 142. In some embodiments, the data access module 140 can be configured to submit a query for the data. For example, the data access module 140 can submit an SQL query for the data. In some embodiments, the data 144 can be data specified by the request. For example, the data 144 can be one or more values requested in the query. The data access module 140 can be used by other modules of the data entity access system 120 to retrieve and store the data. In some embodiments, the data access module 140 can be configured to submit multiple queries (e.g., SQL queries).
[0145] In some embodiments, the queries may be customized in a vendor-specific manner. For example, different vendors (e.g., MICROSOFT, ORACLE, IBM, POSTGRESQL, etc.) may implement different dialects of SQL and / or provide extensions to the SQL standard. In such situations, executable queries may be generated for a target database system (e.g., ORACLE) using syntax and / or commands implemented by the target database system (e.g., using any special syntax and / or commands implemented by ORACLE). Additionally or alternatively, the queries may include query optimizations that may be supported using the target database system. Accordingly, in some embodiments, a query for one type of database (e.g., an executable SQL query for a MICROSOFT SQL SERVER database) may differ from a query for another type of database (e.g., an executable SQL query for an IBM DB2 database), even if both queries are generated from the same underlying intermediate representation.
[0146] In some embodiments, the data access module 140 can be configured to request a value of an attribute of a data entity instance, multiple values of multiple attributes of a data entity instance, and one or more values of one or more attributes of multiple data entity instances. In some embodiments, the data access module 140 can be configured to request values of an attribute in a range of 1-10, 5-20, 10-30, 50-100, 100-500, 500-1000, or any other suitable range within these ranges. In some embodiments, the data access module 140 can be configured to request one, tens, hundreds, thousands, millions, tens of millions, and / or hundreds of millions of data entity instances. For example, the data access module 140 may request data entity instances in a range of 1 to 10, 10 to 100, 100 to 1000, 1000 to 10,000, 10,000 to 100,000, 100,000 to 1,000,000, 1,000,000 to 10,000,000, 10,000,000 to 100,000,000, 100,000,000 to 1,000,000,000, or any other suitable range within these ranges.
[0147] More generally, when values for multiple different attributes are being retrieved, in some embodiments, the data processing system may be configured to generate a separate query (e.g., an SQL query) to obtain the value of each attribute. As illustrated by the example of FIGS. 7A and B below, in some embodiments, rather than generating a separate query for each attribute, the data processing system may group the attributes into one or more groups (using any suitable criteria, examples of which are provided herein) and generate a query for each of the groups. By generating separate queries for different groups of attributes, the data entity access module 140 may reduce the total number of queries being generated and executed. In turn, the computational burden on the data processing system in retrieving attribute values may be reduced. One example of a criterion for grouping attributes is grouping attributes that share a common inheritance path into a single group, as described below. Other examples of criteria for grouping attributes include data type (e.g., integer, string, or other data type), attributes whose values are stored in the same table, attributes whose values are overridden, and / or any other suitable criteria for grouping attributes.
[0148] In some embodiments, multiple attributes that are configured to share a common inheritance path can be grouped together in a query, as will now be described in more detail with reference to Figures 7A and 7B.
[0149] In some embodiments, attributes of a data entity may be configured to inherit their values from corresponding attributes of another data entity. For example, as shown in FIG. 7A, data entity 730 may include static attributes 732 and dynamic attributes 734. Among the dynamic attributes 734, attributes "A, B, C" 736 are configured to inherit their values from corresponding attributes 712 of data entity 710, as indicated by common inheritance path 714. That is, attributes of a data entity or data entity instance share a common inheritance path if the attributes are configured to inherit their values from attributes of the same other data entity or data entity instance. Attributes "X", "Y", "Z" 738 are configured to inherit their values for corresponding attributes 722 of data entity 720, as indicated by common inheritance path 724. Thus, in response to a request or query for the value of attribute 734 of an instance of data entity 730, the values of attributes 736 and 738 need to be obtained. Because attributes A, B, and C are configured to inherit their values along a common inheritance path 714 (e.g., from the same instance of data entity 710), a single query (e.g., an SQL query) can be used to access the inherited values for these attributes. Query 740 in FIG. 7B is an example of such a query. Similarly, because attributes X, Y, and Z are configured to inherit their values along a common inheritance path 724 (e.g., from the same instance of data entity 720), a single query can be used to access the inherited values for these attributes. Query 742 in FIG. 7B is an example of such a query.
[0150] In some embodiments, the data access module 140 can be configured to access information about a data entity instance, the information including one or more values of one or more attributes of the data entity instance. The data access module 140 can be configured to access the value of the attribute by determining whether the attribute is configured to inherit its value from another data entity instance. In some embodiments, the data access module 140 can be configured to (1) access the value of the attribute using a first mechanism when it is determined that the attribute is configured to inherit its value, and (2) access the value of the attribute using a second mechanism when it is determined that the attribute is configured not to inherit its value. For example, the data access module 140 can access the value using a first query (e.g., a first SQL query) if the attribute is configured to inherit its value, and can access the value using a second type of query (e.g., a second SQL query) if the attribute is not configured to inherit its value.
[0151] In some embodiments, data access module 140 may be configured to access the value of an attribute configured to inherit its value by (1) determining whether the attribute is configured to override its inherited value, and (2) accessing the value of the attribute based on whether the attribute is configured to override its inherited value. Data access module 140 may be configured to access the value of the attribute by accessing the override value when it is determined that the attribute is configured to override its inherited value. For example, data access module 140 may submit a first query (e.g., a first SQL query) to data persistence layer 150 if the attribute is configured to override its inherited value, and may submit a second query (e.g., a second SQL query) to data persistence layer 150 if the attribute is not configured to override its inherited value.
[0152] In some embodiments, the data access module 140 may be configured to provide functionality to enable data entities to be defined. For example, the data entity access system 120 may use the data access module 140 to configure new data entities, modify existing data entities, or delete data entities. In some embodiments, the data access module 140 may be configured to provide functionality to enable the data entity access system 120 to create, update, delete, and / or query data entity instances. For example, the data access module 140 may provide an application program interface (API) to enable the functionality to be executed.
[0153] 1H, data persistence layer 150 includes a data store for storing data entities 152, data entity instances 153, and data entity relationships 154. In some embodiments, the data store may include a relational database system such that data may be stored in tables of a relational database system. However, the data store is not limited to being a relational database system, as the data store may be configured to store data in any suitable manner. For example, the data store may include an object-oriented database, a distributed database, a NoSQL database, and / or any other suitable database.
[0154] In some embodiments, each of the data stores may include one or more storage devices that store data in one or more formats of any suitable type. For example, the storage device portion of the data store may store data using one or more database tables, spreadsheet files, plain text files, and / or files in any other suitable format (e.g., mainframe native format). The storage devices may be of any suitable type and may include one or more servers, one or more database systems, one or more portable storage devices, one or more non-volatile storage devices, one or more volatile storage devices, and / or any other device configured to electronically store data. In embodiments in which the data store includes multiple storage devices, the storage devices may be located in one physical location (e.g., in one building) or may be distributed across multiple physical locations (e.g., multiple buildings, different cities, states, or countries). The storage devices may be configured to communicate with each other using one or more networks of any suitable type, and aspects of the technology described herein are not limited in this respect.
[0155] As shown in the exemplary embodiment of FIG. 1H, data persistence layer 150 stores data entities. Data persistence layer 150 can be configured to store information that defines a data entity. For example, a data entity can specify an identifier for the data entity, attributes of the data entity, value types of the attributes, inheritance of the attributes of the data entity and / or override settings for the inherited attributes. Data persistence layer 150 can be configured to store information about the data entities from which the data entity inherits attributes. For example, data persistence layer 150 can store the names of the data entities from which the attributes are inherited.
[0156] As shown in the exemplary embodiment of FIG. 1H, the data persistence layer 150 stores data entity instances 153 in a data store. The data store can be configured to store attribute values of the data entity instances, inheritance paths for attribute value inheritance, identifiers of the data entity instances, permissions for the data entity instances, and other information about the data entity instances. The data store is configured to store relationships 154 between the data entity instances. The data store can be configured to store relationships between the data entity instances determined by the lineage module 128. For example, the data store can store information mapping data entity instances based on lineage information determined by the lineage module 128.
[0157] 2A is a diagram illustrating a data entity A 200 having attributes configured to inherit values from data entities B 210 and C 220 in a data processing system in accordance with some embodiments of the techniques described herein. For example, data entities 200, 210, 220 may be data entities configured in a data processing system 105 described herein with reference to FIGS. 1A-I.
[0158] As shown in Figure 2A, each of the data entities 200, 210, 220 includes a respective set of attributes. Data entity A 200 includes (1) static attributes including attributes 202 A1 203 and A2 204, and (2) dynamic attributes 205 including attributes A3 206 and A4 207. Data entity B 210 includes (1) static attributes 212 including attributes B1 213 and B2 214, and (2) dynamic attributes 215 including attributes B3 216 and B4 217. Data entity C includes (1) static attributes 222 including attributes C1 223 and C2 224, and (2) dynamic attributes 225 including attributes C3 226 and C4 227. Each of the data entities 200, 210, 220 may include other attributes not shown in Figure 2A.
[0159] In some embodiments, one or more attributes of a data entity may be configured to inherit values from one or more other data entities. As shown in the example of FIG. 2A , (1) attribute A3 206 of data entity A 200 is configured to inherit its value from data entity B 210 through inheritance path 219, and (2) attribute A4 207 of data entity A 200 is configured to inherit its value from data entity C 220 through inheritance path 229. Accordingly, for an instance of data entity A 200, (1) the value of attribute A3 206 is determined according to the value of attribute B3 216 of the instance of data entity B 210, and (2) the value of attribute A4 207 is determined according to the value of attribute C4 227 of the instance of data entity C 220. When a value for attribute B3 216 of an instance of data entity B 210 is set (e.g., entered and / or modified), that value may be propagated to attribute A3 206 of the instance of data entity A 200. When a value for attribute C3 226 of an instance of data entity C 220 is set, that value may be propagated to attribute A4 207 of the instance of data entity A 200.
[0160] In some embodiments, the data processing system may be configured to allow an attribute of a data entity instance to inherit its value from an attribute of another data entity instance. As shown in FIG. 2A, a user 230 may access the data processing system using a computing device 232. The data processing system may be configured to allow the user 230 to define the inheritance of an attribute of data entity A 200. For example, the data processing system may generate a graphical user interface (GUI) to allow the user 230 to define data entity A 200. In another example, a software application may programmatically define data entity A 200. In another example, the data processing system may allow data entity A 200 to be defined through a configuration file, an application program interface (API) call, or any other suitable method. As shown in table 235, data entity A 200 specifies that the source of the value of attribute A3 206 is an attribute of data entity B 210, and the source of the value of attribute A4 207 is data entity C 220. Accordingly, data entity A 200 specifies that the value of attribute A3 206 is inherited from data entity B 210 and that the value of attribute A4 207 is inherited from data entity C 220.
[0161] In some embodiments, the data processing system may be configured to allow the override of inherited attribute values. As shown in FIG. 2A, the data processing system may provide a configuration option to allow a user 230 to override inherited attribute values. As shown in table 235 of FIG. 2A, attributes of data entity A 200 may be configured to be overridable. Attribute A3 206 is set to be overridable, as indicated by "Edit?" in the first entry in the "Override?" column, and attribute A4 207 is set to not be overridable, as indicated by "Lock" in the second entry in the "Override?" column. It should be understood that an attribute configured as overridable does not necessarily mean that the inherited value must be overridden by the attribute. Rather, an attribute configured as overridable has the option to be overridden (e.g., by the user through a GUI, a configuration file, an API call, or any other suitable method).
[0162] 2B is a diagram illustrating the overriding of values inherited by attributes of data entity A 200 shown in FIG. 2A, according to some embodiments of the techniques described herein. In FIG. 2A, the inheritance path 219 indicates that attribute A3 of data entity A 200 is configured to inherit its value from attribute B3 of data entity 210. In FIG. 2B, the inheritance of attribute A3 206 from attribute B3 216 is overridden, as indicated by an "X" in the inheritance path 219. As a result of the override, attribute A3 206 may be determined to be an override value (e.g., a user-input override value) instead of the value of attribute B3 216. For example, as a result of the override, the data processing system may set the value of attribute A3 206 of the instance of data entity A 200 to the override value instead of inheriting the value from attribute B3 216 of the instance of data entity B 210.
[0163] In some embodiments, when a user 230 overrides an inherited attribute value using a computing device 232, the data processing system may be configured to override the inherited value of the attribute of the data entity. In some embodiments, the data processing system may be configured to provide a graphical user interface (GUI) to allow a user to override the inherited value and enter an override value. Exemplary GUIs for allowing a user to override an inherited attribute are described herein with reference to FIGS. 4A-4G. In some embodiments, the data processing system may be configured to allow an inherited value to be overridden with an override value through a configuration file, through an API call, programmatically by a software application, or in any other suitable manner. Prior to the override, attribute A3 206 is configured to inherit its value from data entity B 210, as shown in the first row of table 235 shown in FIG. A. When the inherited value of attribute A3 206 is overridden, the data processing system may be configured to change the source of the value of attribute A3 206, as shown in the highlighted portion of table 235 shown in FIG. 2B. As shown in table 235, the source of attribute A3 206 has been updated from “Data Entity B” to “Data Entity A,” indicating that attribute A3 206 is no longer configured to inherit its value from data entity B 210.
[0164] In some embodiments, one or more attributes of a data entity may be configured to prevent overriding of a value inherited by the attribute. In the example of FIG. 2B, the value inherited by attribute A4 207 of data entity A 200 cannot be overridden, as indicated by the "locked" setting in the "Override?" column in FIG. 2B. Accordingly, the data processing system will not allow overriding of the value of attribute A4 207 inherited from attribute C4 227 of data entity 220. Thus, the data processing system will not allow overriding of the value of attribute A4 207 of an instance of data entity A 200. In some embodiments, data entity A 200 may be configured to store configuration information indicating that attribute A4 207 is not configurable for overriding. Thus, an instance of data entity A 200 does not have the option to override a value inherited by attribute A4 207 of the instance. In some embodiments, the data processing system may be configured to provide a GUI for allowing an attribute to be configured to allow overriding of an inherited value. Exemplary GUIs for enabling attributes to be configured to be overridden are described herein with reference to Figures 4C and 6B. In some embodiments, attributes may be configured to be overridable through an API, through a configuration file, programmatically by a software application, or in any other suitable manner.
[0165] 2C shows a diagram of a data entity instance "Credit Score" 158 having an attribute configured to inherit a value from a data entity instance "Credit Risk" 270, according to some embodiments of the techniques described herein. For example, the data entity instances 158, 270 may be data entity instances managed by the data processing system 105 described herein with reference to FIGS. 1A-I.
[0166] As shown in the example of FIG. 2C, “Credit Score” 158 has a set of static attributes 252 and dynamic attributes 255. The static attributes 252 include “Name” 253 and “Definition” 254. The dynamic attributes 255 include data governance attributes 256 and data ownership attributes 260. The data governance attributes 256 include “Functional Area” 257 and “Data Domain” 258. The data ownership attributes 260 include “Business Data Owner” 261, “Business Data Steward” 262 and “Subject Matter Expert” 263. As indicated by the dotted lines, the data entity instance “Credit Score” 158 may have other attributes in addition to or instead of those shown in FIG. 2C.
[0167] As shown in the example of FIG. 2C, data entity instance “Credit Risk” 270 has attributes 272 that include a set of data ownership attributes 274. The data ownership attributes 274 include “Business Data Owner” 275, “Business Data Steward” 276, and “Subject Matter Expert” 277. The data ownership attributes 260 of data entity instance “Credit Score” 158 are configured to inherit values from the data ownership attributes 274 of data entity instance “Credit Risk” 270. “Business Data Owner” 261 is configured to inherit the value “Bob Owen” from “Business Data Owner” 275 via inheritance path 265a, “Business Data Steward” 262 is configured to inherit the value “Bill Smith” from “Business Data Steward” 276 via inheritance path 265b, and “Subject Matter Expert” 263 is configured to inherit the value “Sam Elk” from “Subject Matter Expert” 277 via inheritance path 265c.
[0168] As shown in the exemplary embodiment of FIG. 2C , values inherited by attributes of the data entity instance “Credit Score” 158 are not stored in the data entity instance “Credit Score” 158. When values are to be retrieved (e.g., in response to a request for information about the data entity instance 158), the values can be retrieved from the data entity instance “Credit Risk” 270. In some embodiments, inherited values can be programmatically copied from the data entity instance “Credit Risk” 270 to the attributes of the data entity instance “Credit Score” 158. In some embodiments, the data entity instance “Credit Score” 158 can be configured to store information indicating values that should be inherited from the data entity instance “Credit Risk” 270. For example, the data entity instance “Credit Score” 158 can include one or more attributes that are references to attributes of the data entity instance “Credit Risk” 270 from which the values are inherited. In some embodiments, information indicating attribute values that should be inherited from the data entity instance “Credit Risk” 270 can be stored in a location separate from the data entity instance “Credit Score” 158. For example, a separate data entity instance may store information indicating which attributes of data entity instance "Credit Risk" 270 are configured to inherit values from which attributes of data entity instance "Credit Score" 158.
[0169] 2C illustrates an exemplary configuration of attributes of “Credit Score” 158 (e.g., defined in a data processing system by a user 280 using a computing device 282). For example, table 284 may be shown in a GUI that displays information about data entity instance “Credit Score” 158. As shown in the “Source” column of table 284, attributes of “Business Data Owner” 261, “Business Data Steward” 262, and “Subject Matter Expert” 263 are all configured to inherit values from data entity instance “Credit Risk” 270. As shown in the “Inherited Value” column of table 284, “Business Data Owner” 261 is configured to inherit a value of “Bob Owen”, “Business Data Steward” 262 is configured to inherit a value of “Bill Smith”, and “Subject Matter Expert” 263 is configured to inherit a value of “Sam Elk”. As shown in the “Override” column of table 284, the “Business Data Owner” 261 and the “Business Data Steward” 262 can override, but the “Subject Matter Expert” 263 cannot override (e.g., it is “locked”). In some embodiments, the “Credit Score” 158 attributes can be configured through a GUI (e.g., as described herein with reference to FIGS. 4A-G). In some embodiments, the “Credit Score” 158 attributes can be configured programmatically by a software application. In some embodiments, the “Credit Score” 158 attributes can be configured by an API call, a configuration file, or any other suitable method.
[0170] 2D is a diagram illustrating the override of a value inherited by an attribute of data entity instance "Credit Score" 158, according to some embodiments of the techniques described herein. As indicated by the "X" in inheritance path 265a, attribute "Business Data Owner" 261 of data entity instance "Credit Score" 158 is configured to override a value inherited from attribute "Business Data Owner" 275 of data entity instance "Credit Risk" 270. As shown in table 284, in the row showing the configuration for "Business Data Owner" 261, the entry under "Source" has been changed from "Credit Risk" to "Credit Score" and the entry under "Override?" has been changed to "Implemented". The value for "Business Data Owner" 261 of data entity instance "Credit Score" 158 is an override value of "Ben Oscar" (e.g., specified by user 280 using computing device 282).
[0171] 2D , data entity instance “credit score” 158 can be configured to store an override value for attribute “business data owner” 261. In some embodiments, the override value for attribute “business data owner” 261 can be stored in a separate data entity instance. In some embodiments, the override value for attribute “business data owner” 261 can be stored in a separate type of data structure (e.g., a table or other data structure) of the override value.
[0172] 3A is a flowchart of an example process 300 for generating a response to a request for information about a data entity instance, according to some embodiments of the techniques described herein. The process 300 may be performed by any suitable computing device. For example, the process 300 may be performed by the data processing system 105 described herein with reference to FIGS. 1A-I. In one example, the process 300 may be performed by the data entity access system 120 of the data processing system 105.
[0173] Process 300 begins at block 302, where the system receives a request to access a first attribute value of a particular instance of a first data entity. The first attribute is configured to inherit its value from a second attribute of another instance of a second data entity. For example, the request may include a request for the value of the “business data owner” attribute 261 of the data entity instance “credit score” 158 of FIG. 2C. In some embodiments, a user may submit the request. For example, a user may submit a request to view information in a graphical user interface (GUI). In some embodiments, the request may be submitted programmatically by a software application. For example, a software application of a bank may generate a request to access metadata about credit score data. In some embodiments, a system (e.g., data processing system 105 or a module thereof) may be configured to generate the request.
[0174] Process 300 then proceeds to block 304, where the system generates a response to the request. Within block 304, at block 306, the system determines whether the first attribute of the particular instance is configured to override a value inherited from the second attribute. In other words, the system determines whether the first attribute is configured to override a value inherited from the second attribute of the other instances. In some embodiments, the system may be configured to determine whether the first attribute is configured to override an inherited value by determining whether a stored override setting for the first attribute of the particular instance is set. For example, the system may determine whether a Boolean value indicates whether the first attribute is configured to override a value inherited from the second attribute of the other instances.
[0175] If, at block 306, the system determines that the first attribute of the particular instance is configured to override the value inherited from the second attribute (e.g., “business data owner” 261 of “credit score” 158 in FIG. 2D ), the process 300 proceeds to block 308, where the system accesses the override value. In some embodiments, the system may be configured to send a query (e.g., to a data persistence layer) to obtain the override value. In some embodiments, the override value may be stored in the particular instance. For example, the override value may be stored as a value of the first attribute. In another example, the override value may be stored in the particular instance as a separate attribute. In some embodiments, the override value may be stored in a location separate from the particular instance. After accessing the override value in block 308, the process 300 proceeds to block 310, where the system generates a response to the request that includes the override value as a first value of the first attribute. In some embodiments, the system can be configured to generate the response by generating data (e.g., a vector, array, or other data structure) that indicates the override value as a first value of a first attribute.
[0176] If, at block 306, the system determines that the first attribute of the particular instance is not configured to override a value inherited from a second attribute (e.g., the “business data steward” attribute 262 of the “credit score” 158 of FIG. 2D ), the process 300 proceeds to block 307, where the system determines whether the second attribute is configured to inherit its value. For example, the second attribute may be configured to inherit its value from a third attribute of an instance of a third data entity that is distinct from the first data entity and the second data entity. In some embodiments, the system may be configured to make the determination by determining whether the second attribute is configured to inherit its value from a third attribute of an instance of the third data entity. For example, the system may access the second data entity to determine whether it specifies that the second attribute is configured to inherit its value from the third attribute of the third data entity. In some embodiments, the system may be configured to make the determination by checking whether the other instance stores information (e.g., an attribute value) indicative of a third attribute of an instance of a third data entity from which the second attribute is configured to inherit its value.
[0177] If, at block 307, the system determines that the second attribute is configured to inherit its value, then process 300 returns to block 306, where the system determines whether the second attribute is configured to override the value inherited from the third attribute of the instance of the third data entity. If so, the data processing system will perform further checks as to whether the third attribute of the instance of the third data entity is configured to inherit its value from yet another instance of the data entity, until the system identifies a value. In this manner, the system may be configured to recursively follow the inheritance path to obtain the first attribute value.
[0178] If the system determines at block 307 that the second attribute is not configured to inherit its value, the process 300 proceeds to block 312, where the system accesses the value inherited from the second attribute. In some embodiments, the system may be configured to access the value inherited from the second attribute by reading the value of the second attribute stored in the other instance. For example, the system may locate the other instance from the system's memory and read the value of the second attribute of the other instance. In some embodiments, the system may be configured to submit a query (e.g., to a data persistence layer) to read the value of the second attribute of the other instance. After accessing the value inherited from the second attribute at block 312, the process 300 proceeds to block 314, where the system generates a response to the request that includes the value inherited from the second attribute as the first attribute value. In some embodiments, the system may be configured to generate the response by generating data (e.g., a vector, array, or other data structure) that indicates the value inherited from the second attribute as the first attribute value.
[0179] After generating a response to the request at block 304, process 300 proceeds to block 316 where the system outputs the generated response to the request. In some embodiments, the system may be configured to output the response in a graphical user interface (GUI) that is displayed on a display of the computing device. In some embodiments, the system may be configured to output the response to the software application that submitted the request. For example, the system may output the response through an application program interface (API) to the software application.
[0180] 3B is a flowchart of an example process 350 for generating a graphical user interface (GUI) displaying a data entity instance according to some embodiments of the techniques described herein. The process 350 may be performed by any suitable computing device. For example, the process 350 may be performed by the data processing system 105 described herein with reference to FIGS. 1A-I. In one example, the process 350 may be performed using the interface 110 of the data processing system 105.
[0181] Process 350 includes a first block 352 in which the system generates a GUI. At block 352, process 350 begins at block 354 in which the system generates a first GUI portion showing a first attribute value of a particular instance of a first data entity. The first attribute is configured to inherit its value from a second attribute of another instance of a second data entity. At block 356, the system accesses the inherited value from the second attribute. In some embodiments, the system may be configured to access the inherited value from the second attribute by (1) locating the other instance in memory and (2) reading the value of the second attribute from the other instance. After accessing the inherited value from the second attribute, process 350 proceeds to block 358 in which the system sets the first attribute value to the value inherited from the second attribute.
[0182] After generating the first GUI portion at block 354, process 350 proceeds to block 360, where the system generates a second GUI portion to indicate whether the first attribute is configurable to override its inherited value. In some embodiments, the system can be configured to generate a GUI element adjacent to the displayed first attribute value (e.g., in the first GUI portion) that indicates whether the first attribute is configurable to override its inherited value. For example, the system can generate (1) a first icon (e.g., a pencil icon) that indicates that the first attribute is configurable to override its inherited value, and (2) a second icon (e.g., a lock icon) that indicates that the first attribute is not configurable to override its inherited value.
[0183] After generating the GUI at block 352, process 350 proceeds to block 362, where the system displays the generated GUI. In some embodiments, the system may be configured to display the GUI on a display (e.g., a monitor) of the computing device. A user of the computing device may perceive from the displayed GUI (1) whether the first attribute inherits its value from another data entity instance, and (2) whether the first attribute is configurable to override the inherited value. Exemplary GUIs are described herein with reference to Figures 4A-G.
[0184] 3C is a flowchart of an example process 370 for generating a request to obtain information about a data entity instance, according to some embodiments of the techniques described herein. The process 370 may be performed by any suitable computing device. For example, the process 370 may be performed by the data processing system 105 described herein with reference to FIGS. 1A-I. In one example, the process 370 may be performed by the data entity access system 120 of the data processing system 105.
[0185] Process 370 begins at block 372, where the system obtains a request to access a first attribute value of a particular instance of a first data entity. For example, the request may include a request for the value of the “business data owner” attribute 261 of the data entity instance “credit score” 158 of FIG. 2C. In some embodiments, the request may be a database query (e.g., an SQL query). For example, a user may enter a query indicating a request to obtain information. In some embodiments, the request may be submitted programmatically by a software application. For example, a banking software application may generate a request to access information related to a person's credit score. In some embodiments, a system (e.g., data processing system 105 or a module thereof) may be configured to generate the request.
[0186] Process 370 then proceeds to block 374, where the system generates a response to the request. At block 374, the system proceeds to block 376, where the system determines whether the first attribute is configured to inherit its value from a second attribute of another instance of a second data entity that is different from the first data entity. In some embodiments, the system may be configured to make the determination by determining whether the first data entity is configured such that the first attribute is configured to inherit its value from a second attribute of the second data entity. For example, the system may access the first data entity (e.g., configuration information of the first data entity) to determine whether the first attribute is configured to inherit its value from the second attribute. In some embodiments, the system may be configured to make the determination by determining whether the particular instance stores information (e.g., a reference) that indicates that the first attribute inherits its value from a second attribute of another instance.
[0187] If, at block 376, the system determines that the first attribute is configured to inherit its value from a second attribute of another instance, the process 370 proceeds to block 377, where the system determines whether the second attribute is configured to inherit its value. For example, the second attribute may be configured to inherit its value from a third attribute of an instance of a third data entity distinct from the first data entity and the second data entity. In some embodiments, the system may be configured to make the determination by determining whether the second attribute is configured to inherit its value from a third attribute of the instance of the third data entity. For example, the system may access the second data entity to determine whether it specifies that the second attribute is configured to inherit its value from a third attribute of the third data entity. In some embodiments, the system may be configured to make the determination by checking whether the other instance stores information (e.g., an attribute value) indicative of a third attribute of the instance of the third data entity from which the second attribute is configured to inherit its value.
[0188] If, at block 377, the system determines that the second attribute is configured to inherit its value from a third attribute of a third data entity instance, process 370 proceeds to block 376, where the system accesses the value inherited from the third attribute. If so, the data processing system will perform a further check at block 377 as to whether the third attribute of the third data entity instance is configured to inherit its value from a fourth data entity instance, until the system identifies a value. In this manner, the system may be configured to recursively follow the inheritance path to obtain the first attribute value.
[0189] If the system determines at block 377 that the second attribute is not configured to inherit its value, the process 370 proceeds to block 378 where the system accesses the value inherited from the second attribute of the other instance. In some embodiments, the system may be configured to access the value of the second attribute by (1) locating the other instance from which the particular instance inherited its first attribute value, and (2) accessing the value of the second attribute of the other instance. For example, the system may locate the other instance in the system's memory and access the value of the second attribute. After accessing the value inherited from the second attribute at block 378, the process 370 proceeds to block 380 where the system generates a response to the request that includes information indicating the value inherited from the second attribute as the first attribute value. In some embodiments, the system may be configured to generate the response by generating data (e.g., a vector, array, or other data structure) that indicates the value inherited from the second attribute as the first attribute value.
[0190] If, at block 376, the system determines that the first attribute is not configured to inherit its value, process 370 proceeds to block 382, where the system accesses the value of the first attribute from the particular instance. For example, the particular instance may store a value (e.g., a number, a string, or other type of value) for the first attribute. The system may access the value stored by the particular instance for the first attribute. After accessing the value stored in the particular instance, process 370 proceeds to block 384, where the system generates a response that includes the value as the first attribute value.
[0191] After generating a response to the request at block 374, process 370 proceeds to block 386 where the system outputs the generated response to the request. In some embodiments, the system may be configured to output the response in a graphical user interface (GUI) that is displayed on a display of the computing device. In some embodiments, the system may be configured to output the response to the software application that submitted the request. For example, the system may output the response through an application program interface (API) to the software application.
[0192] FIG. 4A is an illustration of a GUI displaying information about an instance “Credit Score” 402 of a data entity “Business Term” 404, according to some embodiments of the techniques described herein. “Credit Score” 402 is an instance of the “Business Term” data entity, as indicated by label 404. The GUI 400 shows the data domains 406 from which “Credit Score” 402 gets its data. In the example of FIG. 4A, “Credit Score” 402 gets its data from the data domain “Credit Risk”. The GUI 400 displays attribute values for “Credit Score” 402. The attribute values include values for data ownership attributes 408. The data ownership attributes include business “Data Owner”, “Business Data Steward”, and “Subject Matter Expert”. Each of the data ownership attributes may have one or more respective values. In the example of FIG. 4A, for “Credit Score” 402, the value of the “Business Data Owner” attribute is “Wade L. Register,” the value of the “Business Data Steward” attribute is “Kaitlyn C. Ogawa,” and the values of the “Subject Matter Expert” attribute are “Hugo J. Poiter” and “Donald D. Mace.”
[0193] 4B is an illustration of a GUI displaying information about a data entity instance “Credit Risk” 412 from which the data entity instance “Credit Score” 402 of FIG. 4A inherits its attribute values, according to some embodiments of the techniques described herein. The GUI 410 displays attribute values of “Credit Risk” 412. The attribute values include values of data ownership attributes 414. The data ownership attributes 414 include “Business Data Owner”, “Business Data Steward”, and “Subject Matter Expert”. The data ownership attribute 414 of “Credit Risk” 412 has the following values: “Business Data Owner” value is “Wade L. Register”, “Business Data Steward” value is “Kaitlyn C. Ogawa”, and “Subject Matter Expert” values are “Donald D. Mace” and “Hugo J. Potter”. The data ownership attribute 408 of “Credit Score” 402 is configured to inherit its value from the data ownership attribute 414 of “Credit Risk” 412. Thus, the data ownership attribute 408 of “Credit Score” 402 has the same value as the data ownership attribute 414 of “Credit Risk” 412 .
[0194] FIG. 4C is an illustration of a GUI for configuring attributes of a data entity “BizTerm” 404 of which “Credit Score” 402 is an instance, according to some embodiments of the techniques described herein. The GUI 420 allows for configuring attributes of a data entity to inherit values from another data entity. In the example of FIG. 4C, the GUI 420 shows that the attributes “Business Data Owner” 424, “Business Data Steward” 425, and “Subject Matter Expert” 426 of the “BizTerm” data entity 422 are configured to inherit their values from the data entity “Data Domain”, as shown in column 427. For example, “Credit Score” 402 of FIG. 4A is an instance of “BizTerm” 422. The data ownership attribute 408 is configured to inherit its value from an instance of the “Data Domain” data entity. In this example, in “Credit Score” 402, the data ownership attribute 408 is configured to inherit its value from “Credit Risk” 412, which is an instance of the data entity “Data Domain”.
[0195] 4D is an illustration of the GUI 400 of FIG. 4A with a portion 422 showing information about attributes of the data entity instance “Credit Score” 402 that are configured to inherit their values, according to some embodiments of the techniques described herein. As shown in FIG. 4D, the GUI 400 includes a GUI overlay portion 422 showing information about a “Business Data Owner” attribute. The GUI portion 422 indicates that the value of the attribute “Business Data Owner” is inherited from the data domain data entity instance “Credit Risk” 412. In some embodiments, the GUI 400 can be configured to generate the portion 422 in response to user input. For example, the GUI 400 can generate the portion 422 when a user hovers a mouse cursor over the displayed attribute name.
[0196] FIG. 4E is an illustration of a GUI portion 430 indicating whether attributes of the data entity instance “Credit Score” 402 of FIG. 4A are configurable to override their inherited values, according to some embodiments of the techniques described herein. GUI 430 may be generated as part of GUI 400 of FIG. 4A (e.g., when a user selects the “Edit” option for a data ownership attribute of FIG. 4A). GUI 430 displays an indication of whether the inherited attribute value can be overridden. In the example of FIG. 4E, GUI 430 displays an indication for the values of attributes “Business Data Owner”, “Business Data Steward”, and “Subject Matter Expert”. A lock icon 432 adjacent to the value of the “Business Data Owner” attribute indicates that the value cannot be overridden. A pencil icon 432 next to the value of the “Business Data Steward” attribute indicates that the value can be overridden. GUI 430 also displays a pencil icon next to the value of the “Subject Matter Expert” attribute. 4E, when a user hovers over the pencil icon, GUI 430 displays instructions 434 that the value is inherited and that the value can be overridden. Instructions 434 describe that the user can click to override the inherited value. For example, in response to clicking the pencil icon, GUI 430 can generate a menu to allow the user to override the inherited value of the attribute "Subject Matter Expert."
[0197] 4F is another illustration of a GUI portion 440 indicating whether attributes of data entity instance "Credit Score" 402 of FIG. 4A are configurable to override their inherited values, according to some embodiments of the techniques described herein. GUI 440 can be generated as part of GUI 400 of FIG. 4A (e.g., when a user selects the "Edit" option for the data ownership attribute of FIG. 4A). As shown in FIG. 4F, when a user hovers a cursor over the lock icon adjacent to the value of the "Business Data Owner" attribute, GUI 440 displays an indication that the attribute is not configurable to override inherited values.
[0198] Figure 4G is an illustration of a GUI portion 450 showing information about the sources from which an attribute of data entity instance "Credit Score" 402 of Figure 4A is configured to inherit its value, in accordance with some embodiments of the techniques described herein. GUI 450 can be generated as part of GUI 400 of Figure 4A (e.g., when a user hovers a cursor over the attribute name). GUI 450 includes portion 452 that shows data entity instance "Credit Risk" from which the attribute inherits its value. Portion 452 shows the data entity "Data Domain" of which "Credit Risk" is an instance.
[0199] Figure 5A is a diagram illustrating attribute value inheritance paths between a set of three data entity instances 500, 158, 520 according to some embodiments of the techniques described herein. The data entity instances in Figure 5A may be data entity instances managed by the data processing system 105 described herein with reference to Figures 1A-I. Figure 5A shows a data entity instance "customer credit score" 500, a data entity instance "credit score" 158 and a data entity instance "credit risk" 520.
[0200] As shown in Fig. 5A, each of the data entity instances 500, 158, 520 includes a respective set of attributes. The data entity instance "Customer Credit Score" 500 includes a set of static attributes 502 and a set of dynamic attributes 505. The static attributes 502 include the attributes "Name" 503 and "Definition" 504. The dynamic attributes 505 include "Business Data Steward" 506 and "Subject Matter Expert" 507. The data entity instance "Credit Score" 158 includes a set of static attributes 252 and a set of dynamic attributes 255. The static attributes 252 include "Name" 253 and "Definition" 254. The dynamic attributes 255 include "Business Data Steward" 262 and "Subject Matter Expert" 263. The data entity instance "Credit Risk" 520 includes a set of static attributes 522 and a set of dynamic attributes 525. The static attributes 522 include "Name" 523 and "Description" 524. Dynamic attributes 525 include “Business Data Steward” 526 and “Subject Matter Expert” 527 .
[0201] In the exemplary embodiment of FIG. 5A , the attribute “business data steward” 506 of the data entity instance “customer credit score” 500 is configured to inherit its value from the attribute “business data steward” 262 of the data entity instance “credit score” 158 through inheritance path 508 a. The attribute “business data steward” 262 is configured to inherit its value from the attribute “business data steward” 526 of the data entity instance “credit risk” 520 through inheritance path 518 a. The attribute “subject matter expert” 507 of the data entity instance “customer credit score” 500 is configured to inherit its value from the attribute “subject matter expert” 263 of the data entity instance “credit score” 158 through inheritance path 508 b. The attribute “subject matter expert” 263 is configured to inherit its value from the attribute “subject matter expert” 527 of the data entity instance “credit risk” 520 through inheritance path 518 b. 5A , the attributes “business data steward” 526 and “subject matter expert” 527 of the data entity instance “credit risk” 520 can determine (1) the values of the attributes “business data steward” 262 and “subject matter expert” 263 of the data entity instance “credit score” 158, and (2) the values of the attributes “business data steward” 506 and “subject matter expert” 507 of the data entity instance “customer credit score” 500. Accordingly, “business data steward” 526 and “subject matter expert” 527 are the highest level of inheritance, and the attributes “business data steward” 506 and “subject matter expert” 507 are the lowest level of inheritance.
[0202] 5A illustrates a computing device 535 for enabling a user 530 to access information about data entity instances 500, 158, 520. For example, the user 530 may access information about the data entity instance “Customer Credit Score” 500. Table 535 illustrates the configuration of attributes “Business Data Steward” 506 and “Subject Matter Expert” 507 of the data entity instance “Customer Credit Score” 500. The “Source” column of table 535 indicates that the attribute “Business Data Steward” 506 is configured to inherit a value of “Bill Smith” from the data entity instance “Credit Risk” 520, and the attribute “Subject Matter Expert” 507 is configured to inherit a value of “Sam Elk” from the data entity instance “Credit Risk” 520. As illustrated in the “Override” column of table 535, the attribute “Business Data Steward” 506 is configurable to override the inherited value, and the attribute “Subject Matter Expert” 507 is not configurable to override the inherited value.
[0203] FIG. 5B illustrates an override of a value inherited by an attribute of the data entity instance “Customer Credit Score” 500 of FIG. 5A in accordance with some embodiments of the techniques described herein. The “X” in the inheritance path 508a indicates an override of the value of the attribute “Business Data Steward” 262 of the data entity instance “Credit Score” 158 inherited by the attribute “Business Data Steward” 506 of the data entity instance “Customer Credit Score” 500. As shown in the highlighted portion of the table 535, the attribute “Business Data Steward” 506 is overridden, and now has a source of “Customer Credit Score”. Accordingly, the attribute “Business Data Steward” 526 of the data entity instance “Credit Risk” 520 does not determine the value of the attribute “Business Data Steward” 506 of the data entity instance “Customer Credit Score” 500 for which the override shown in FIG. 5B is performed. As shown in FIG. 5B, the attribute “Business Data Steward” 506 of the data entity instance “Customer Credit Score” 506 is now populated with the value “Bob Stewart” within the data entity instance “Customer Credit Score” 500 .
[0204] 5C is a diagram illustrating an override of a value inherited by an attribute of the data entity instance “Credit Score” 158 of FIG. 5A in accordance with some embodiments of the techniques described herein. The “X” in the inheritance path 518a indicates an override of the value of the attribute “Business Data Steward” 526 of the data entity instance “Credit Risk” 520 inherited by the attribute “Business Data Steward” 262 of the data entity instance “Credit Score” 158. Because the attribute “Business Data Steward” 262 is configured to override the value inherited from the attribute “Business Data Steward” 526, the override modifies the source from which the attribute “Business Data Steward” 506 of the data entity instance “Customer Credit Score” 500 inherited its value. As shown in the highlighted portion of table 535, as a result of the override, the source of the attribute “Business Data Steward” 506 has changed from “Credit Risk” (as shown in FIG. 5A) to “Credit Score”. In the configuration shown in FIG. 5C, the attribute “Business Data Steward” 506 inherits an override value of “Ben Samuel” from the attribute “Business Data Steward” 262 of the data entity instance “Credit Score” 158 .
[0205] FIG. 6A is an illustration of a GUI 600 displaying information about a “business data element” data entity instance “customer credit score” 602, according to some embodiments of the techniques described herein. “Customer Credit Score” 602 includes various attributes. The attributes include a business term attribute with a value of “credit score” 604. “Credit score” 604 is another data entity instance from which the attributes of “customer credit score” 602 are configured to inherit values. In the example of FIG. 6A, a data ownership attribute 608 of “customer credit score” 602 is configured to inherit values from “credit score” 604. The data ownership attributes 608 include “business data owner”, “business data steward”, “subject matter expert”, and “technical data steward”. “Customer Credit Score” 602 also includes a “data domain” attribute 606. The value of the “data domain” attribute 606 may indicate a category to which “customer credit score” 602 belongs. “Customer Credit Score” 602 is in a credit risk category under an enterprise risk hierarchy.
[0206] FIG. 6B is an illustration of a GUI 620 displaying information about the configuration of attributes of the data entity instance “Customer Credit Score” 602 of FIG. 6A in accordance with some embodiments of the techniques described herein. In rows 622, 624, and 626, each of the “Business Data Owner”, “Business Data Steward”, and “Subject Matter Expert” attributes are configured to inherit their values from an instance of the “BizTerm” data entity. An exemplary instance of the “BizTerm” data entity is “Credit Score” 402 described herein with reference to FIG. 4A. The attributes of the customer “Credit Score” 602 can be configured to inherit the value of the data ownership attribute 608 from “Credit Score” 402. The data ownership attribute 408 of “Credit Score” 402 can be configured to inherit the value from the data ownership attribute 414 of “Credit Risk” 412 described herein with reference to FIG. 4B. If no override is performed, the value of the data ownership attribute 608 can be configured to inherit the value of the data ownership attribute 414 of “Credit Risk” 412.
[0207] FIG. 6C is an illustration of a GUI 630 displaying information about an attribute of “Customer Credit Score” 602, according to some embodiments of the techniques described herein. As shown in FIG. 6C, GUI 630 includes an overlay portion 632 displaying information about a “Business Data Steward” attribute. Overlay portion 632 indicates that the attribute value is inherited from a data entity instance “Credit Score”, which is an instance of a business term data entity. For example, the “Business Data Steward” attribute value inherited by “Credit Score” 402 from “Credit Risk” 412 may be overridden (e.g., by a user override). Accordingly, in this example, overlay portion 632 indicates that the source of the attribute value is “Credit Score”. In some embodiments, GUI 630 can be configured to generate overlay portion 632 in response to a user input in the GUI. For example, GUI 630 can generate overlay portion 632 when a user hovers a cursor over an attribute name in GUI 430.
[0208] 6D is an illustration of a GUI 640 displaying information about an attribute of “Customer Credit Score” 602, according to some embodiments of the techniques described herein. As shown in FIG. 6D, GUI 640 includes an overlay portion 642 displaying information about a “Subject Matter Expert” attribute. Overlay portion 642 indicates that the attribute value is inherited from an entity of the data domain data entity “Credit Risk”. For example, the “Subject Matter Expert” attribute can be configured to inherit its value from the data entity instance “Credit Score”, which is configured to inherit its value from the data entity instance “Credit Risk”. In this example, no override is performed, and thus overlay portion 642 indicates that the source of the attribute value is the data entity instance “Credit Risk”.
[0209] In some embodiments, GUI 640 can be configured to generate overlay portion 642 in response to user input in the GUI. For example, GUI 640 can generate overlay portion 642 when a user hovers a cursor over an attribute name in GUI 440.
[0210] Exemplary Computer System 8 illustrates an example of a suitable computing system environment 800 on which the technology described herein may be implemented. The computing system environment 800 is only one example of a suitable computing environment and is not intended to suggest any limitation to the scope of use or functionality of the technology described herein. The computing environment 800 should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 800.
[0211] The technology described herein is operational with many other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and / or configurations that may be suitable for use with the technology described herein include, but are not limited to, personal computers, server computers, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, etc.
[0212] A computing environment may execute computer-executable instructions such as program modules. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The techniques described herein may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
[0213] With reference to Figure 8, an exemplary system for implementing the techniques described herein includes a general purpose computing device in the form of a computer 800. Components of the computer 810 may include, but are not limited to, a processing unit 820, a system memory 830, and a system bus 821 that couples various system components including the system memory to the processing unit 820. The system bus 821 may be any of several types of buses, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, MicroChannel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus, also known as a mezzanine bus.
[0214] Computer 810 typically includes a variety of computer readable media. Computer readable media may be any available media that can be accessed by computer 810, including both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may include computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by computer 800. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information transport media. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.
[0215] The system memory 830 includes computer storage media in the form of volatile and / or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input / output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and / or program modules that are immediately accessible to and / or presently being operated on by processing unit 820. By way of example, and not limitation, FIG. 8 illustrates operating system 834, application programs 835, other program modules 836, and program data 837.
[0216] Computer 810 may also include other removable / non-removable volatile / non-volatile computer storage media. By way of example only, FIG. 8 illustrates hard disk drive 841, which reads from or writes to non-removable non-volatile magnetic media, flash drive 851, which reads from or writes to removable non-volatile memory 852, such as flash memory, and optical disk drive 855, which reads from or writes to removable non-volatile optical disk 856, such as a CD ROM or other optical media. Other removable / non-removable volatile / non-volatile computer storage media that may be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, etc. Hard disk drive 841 is typically connected to system bus 821 through a non-removable memory interface, such as interface 840, and magnetic disk drive 851 and optical disk drive 855 are typically connected to system bus 821 by removable memory interfaces, such as interface 850.
[0217] The drives and associated computer storage media discussed above and illustrated in FIG. 8 provide storage of computer readable instructions, data structures, program modules and other data for the computer 810. In FIG. 8, for example, hard disk drive 841 is illustrated as storing operating system 844, application programs 845, other program modules 846, and program data 847. Note that these components may be the same as or different from operating system 834, application programs 835, other program modules 836, and program data 837. Operating system 844, application programs 845, other program modules 846, and program data 847 are given different numbers here to illustrate that, at a minimum, they are different copies. Actors may enter commands and information into the computer 810 through input devices such as a keyboard 862 and pointing device 861, commonly referred to as a mouse, trackball, or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 820 through a user input interface 860 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port, or universal serial bus (USB). A monitor 891 or other type of display device is also connected to the system bus 821 via an interface, such as a video interface 890. In addition to a monitor, computers may also include other peripheral output devices such as speakers 897 and printer 896, which may be connected through an output peripheral interface 895.
[0218] The computer 810 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 880. The remote computer 880 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 810, although only a memory storage device 881 is illustrated in FIG. 8. The logical connections depicted in FIG. 8 include a local area network (LAN) 881 and a wide area network (WAN) 883, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
[0219] When used in a LAN networking environment, the computer 810 is connected to the LAN 881 through a network interface or adapter 880. When used in a WAN networking environment, the computer 810 typically includes a modem 882 or other means for establishing communications over the WAN 883, such as the Internet. The modem 882 may be internal or external, and may be connected to the system bus 821 via the actor input interface 860 or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 810, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation, FIG. 8 illustrates remote application programs 885 as residing on memory device 881. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
[0220] Having described several aspects of at least one embodiment of the technology described herein, it is to be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art.
[0221] Such modifications, variations, and improvements are intended to be part of this disclosure and are intended to be within the spirit and scope of this disclosure. Furthermore, although advantages of the technology described herein have been set forth, it should be understood that not every embodiment of the technology described herein includes every described advantage. Some embodiments may not implement any feature described herein as an advantage, and in some cases, one or more of the described features may be implemented to achieve further embodiments. Thus, the above description and drawings are for illustrative purposes only.
[0222] The above embodiments of the technology described herein can be implemented in any of many ways. For example, the embodiments can be implemented using hardware, software, or a combination thereof. When implemented in software, the software code can be executed on any suitable processor or collection of processors, whether provided on one computer or distributed across multiple computers. Such a processor can be implemented as an integrated circuit, where one or more processors are within an integrated circuit component, including commercially available integrated circuit components known in the art under names such as CPU chips, GPU chips, microprocessors, microcontrollers, or coprocessors. Alternatively, the processor can be implemented in custom circuits such as ASICs or semi-custom circuits resulting from constructing programmable logic devices. As a further alternative, the processor can be part of a larger circuit or semiconductor device, whether commercially available, semi-custom, or custom. As a specific example, some commercially available microprocessors have multiple cores, such that one or a subset of the cores can be configured as a processor. However, the processor can be implemented using circuits in any suitable format.
[0223] Further, it should be understood that a computer may be implemented in any of many forms, such as a rack-mounted computer, a desktop computer, a laptop computer, or a tablet computer, etc. Furthermore, a computer may be implemented in devices not generally considered to be computers, but having suitable processing capabilities, including a personal digital assistant (PDA), a smart phone, or any other suitable portable or fixed electronic device.
[0224] A computer may also have one or more input and output devices. These devices may be used, among other things, to present a user interface. Examples of output devices that may be used to provide a user interface include a printer or display screen for visually presenting output and a speaker or other sound generating device for audibly presenting output. Examples of input devices that may be used in a user interface include a keyboard and pointing devices such as a mouse, touchpad, and digitizing tablet. As another example, a computer may receive information entered through speech recognition or in other audible formats.
[0225] Such computers may be interconnected by one or more networks in any suitable form, including as a local area network or as a wide area network such as an enterprise network or the Internet. Such networks may be based on any suitable technology and operate according to any suitable protocol, and may include wireless networks, wired networks, or fiber optic networks.
[0226] Also, the various methods or processes outlined herein may be coded as software executable on one or more processors utilizing any one of a variety of operating systems or platforms. Moreover, such software may be written using any of a number of suitable programming languages and / or programming or scripting tools, and may be compiled as executable machine language code or intermediate code that runs on a framework or virtual machine.
[0227] In this regard, aspects of the technology described herein may be embodied as a computer-readable storage medium (or multiple computer-readable media) (e.g., a computer memory, one or more floppy disks, compact disks (CDs), optical disks, digital video disks (DVDs), magnetic tapes, flash memories, circuit configurations in field programmable gate arrays or other semiconductor devices, or other tangible computer storage media) encoded with one or more programs that, when executed on one or more computers or other processors, perform methods for implementing the various embodiments described above. As is clear from the above examples, a computer-readable storage medium may retain information for a sufficient time to provide computer-executable instructions in a non-transitory form. Such one or more computer-readable storage media may be transportable such that the stored one or more programs can be loaded into one or more different computers or other processors to implement various aspects of the technology as described above. As used herein, the term "computer-readable storage medium" encompasses only non-transitory computer-readable media that can be considered to be a manufacture (i.e., product) or machine. Alternatively or additionally, the techniques described herein may be implemented as a computer-readable medium other than a computer-readable storage medium, such as a propagated signal.
[0228] The terms "program" or "software" are used herein in a general sense to refer to any type of computer code or set of computer-executable instructions that can be utilized to program a computer or other processor to perform various aspects of the technology described herein. Furthermore, in accordance with one aspect of this embodiment, it should be understood that one or more computer programs that, when executed, perform the methods of the technology described herein need not reside on one computer or processor, but may be modularly distributed across several different computers or processors to perform various aspects of the technology described herein.
[0229] Computer-executable instructions may be in many forms, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically the functionality of the program modules may be combined or distributed as desired in various embodiments.
[0230] Also, the data structures may be stored in the computer-readable medium in any suitable form. For simplicity of illustration, the data structures may be shown with fields that are related through their locations in the data structure. Such relationships may similarly be achieved by assigning storage of the fields to locations in the computer-readable medium that convey the relationship between the fields. However, any suitable mechanism may be used to establish relationships between information in the fields of the data structures, including the use of pointers, tags, or other mechanisms for establishing relationships between data elements.
[0231] Various aspects of the technology described herein may be used alone, in combination, or in a variety of configurations not specifically discussed in the embodiments described above, and therefore, its application is not limited to the details and arrangements of components set forth in the above description or illustrated in the drawings. For example, aspects described in one embodiment may be combined in any manner with aspects described in other embodiments.
[0232] Additionally, the techniques described herein may be implemented as methods, examples of which are provided herein, including with reference to Figures 3 and 7. The operations performed as part of any of the methods may be in any suitable order. Thus, although shown as sequential operations in the exemplary embodiments, embodiments may be constructed in which operations are performed in a different order than shown, which may include performing some operations simultaneously.
[0233] Additionally, some actions are described as being performed by an "actor" or "user." It should be understood that an "actor" or "user" need not be a single individual, and that in some embodiments, actions attributed to an "actor" or "user" may be performed by an individual in combination with a team of individuals and / or computer-assisted tools or other mechanisms.
[0234] The use of ordinal numbers such as "first," "second," "third," etc. to modify claim elements in the claims does not, of itself, imply any priority, precedence, or ordering of one claim element relative to another, or the temporal order in which method operations are performed, but rather is merely used as a label to distinguish one claim element having a particular name from other elements having the same name (other than the use of the ordinal number).
[0235] Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use herein of "including," "including," "having," "containing," "involving," and variations thereof, implies the inclusion of the items listed thereafter and equivalents thereof, as well as additional items.
Claims
A method performed by a data processing system (105) for accessing data (107, 144, 837, 847) according to inheritance relationships between attributes (172, 173a, 173b, 174, 175a, 175b, 182, 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738) of data entities (152, 200, 210, 220), the method comprising: using at least one computer hardware processor of said data processing system (105), receiving a request to access a first attribute value of a first plurality of attributes (172, 173a, 173b, 174, 175a, 175b, 182, 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738) of a particular instance of a first data entity, the particular instance being a first attribute value of the first plurality of attributes (172, 173a, 173b, 174, 175a, 175b, 182, 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738) of the first data entity; 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738); determining that the first attribute of the particular instance is configured to inherit its value from a second plurality of attributes of another instance of a second data entity different from the first data entity; grouping the first plurality of attributes (172, 173a, 173b, 174, 175a, 175b, 182, 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738) into a single group; generating a single executable query for the single group in accordance with the request; executing the single executable query to access values inherited from the second plurality of attributes and generating a response to the request that includes information indicative of the values inherited from the second plurality of attributes as the first attribute values; outputting the generated response; and The method includes:
2. The method of claim 1, wherein determining that the first attribute of the particular instance is inherited from a second attribute includes determining, using the first data entity, that the first attribute inherits its value from the second attribute.
3. The method comprises: receiving, by the data processing system (105), a request to access a third attribute value of the particular instance; determining that the third attribute of the particular instance is configured to inherit its value from a fourth attribute of an instance (16, 153, 156, 158, 159, 159A, 161, 161A, 161B, 270, 500, 520) of a third data entity different from the first data entity and the second data entity; accessing the inherited value from the fourth attribute; generating a response to the request that includes information indicating a value inherited from the fourth attribute as a value of the third attribute; outputting the generated response; and The method of claim 1 or 2, comprising:
4. Accessing the value inherited from the second attribute comprises: determining that the second attribute of the second data entity instance is configured to inherit its value from a third attribute of an instance (16, 153, 156, 158, 159, 159A, 161, 161A, 161B, 270, 500, 520) of the first data entity and a third data entity different from the second data entity; accessing a value inherited from the third attribute by the second attribute; The method according to any one of claims 1 to 3, comprising:
5. The grouping of the first plurality of attributes (172, 173a, 173b, 174, 175a, 175b, 182, 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738) into a single group using grouping criteria.
5. The method of claim 1 , further comprising grouping all of the following into a single group: 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738.
6. The method of claim 1, wherein the grouping criterion is to group attributes (172, 173a, 173b, 174, 175a, 175b, 182, 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738) that inherit values from a common instance into a single group.
7. A method according to any one of claims 1 to 6, wherein the data processing system (105) manages the data (107, 144, 837, 847), and the data (107, 144, 837, 847) managed by the data processing system (105) includes information describing the data (107, 144, 837, 847) stored in a distributed database of a distributed network of computing systems.
8. A method according to any one of claims 1 to 7, wherein the data processing system (105) is configured to store each of a plurality of data sets stored by a distributed database of the distributed computing system and / or each instance (16, 153, 156, 158, 159, 159A, 161, 161A, 161B, 270, 500, 520) of a plurality of software applications configured to be executed by the distributed computing system.
9. A method according to any one of claims 1 to 5, wherein the grouping criterion is to group attributes (172, 173a, 173b, 174, 175a, 175b, 182, 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738) whose values are stored in the same table.
10. At least one non-transitory computer-readable medium storing instructions that, when executed by a data processing system (105), cause the data processing system (105) to perform a method according to any one of claims 1 to 9.
11. A data processing system (105) for accessing data (107, 144, 837, 847) according to inheritance relationships between attributes (172, 173a, 173b, 174, 175a, 175b, 182, 184, 202, 205, 212, 215, 222, 225, 252, 255, 256, 260, 272, 274, 408, 414, 502, 505, 522, 525, 608, 712, 722, 732, 734, 736, 738) of data entities (152, 200, 210, 220), comprising: at least one computer hardware processor; At least one non-transitory computer readable medium storing instructions that, when executed by the at least one computer hardware processor, cause the at least one computer hardware processor to perform a method according to any one of claims 1 to 9; and A data processing system (105).