1. Field of the Disclosure
The technology of the disclosure relates generally to repositories for storing shared application data.
2. Technical Background
Distributed applications are software systems composed of application components that are located on networked computers, and that communicate via one or more public and/or private networks to coordinate operations. A distributed application is typically structured according to a multi-tiered architecture, in which presentation, application processing, and data management of the distributed application are logically separated into tiers. The use of a multi-tiered architecture may permit components and data of the distributed application to be more efficiently developed, maintained, and reused. In particular, segregating data of the distributed application from its functional elements may permit the data to be reused and shared among multiple distributed applications.
One approach to segregating data from application functionality involves storing data in a data repository that may be accessed by numerous distributed applications. By providing access to shared data, the data repository enables the development of “mashups,” which are applications that combine or aggregate data from two or more sources to provide new services beyond the original purpose of the source data. In this manner, mashups may provide enriched services that may not have been anticipated or intended by the creators of the source data.
As new distributed applications make new shared data available in the data repository, the data repository may need to modify or reorganize data elements stored therein. For example, modifications may be required to provide storage for new data, and/or to make the new data discoverable and accessible by applications. However, the dynamic nature of a data repository may pose challenges to the development and maintenance of the distributed applications. Modifications to the data elements may require that each distributed application that interacts with the data repository be individually updated to maintain data accessibility for the distributed application. This may be problematic in circumstances in which an owner of the data repository does not have visibility to all of the distributed applications that may be using the data repository. These issues may be mitigated by including an intermediate mapping layer between a distributed application and the data repository, but at a cost of increased complexity of the distributed application.
Embodiments disclosed in the detailed description provide application-to-repository data mapping in data repositories. Related methods, systems, and computer-readable media are also disclosed. In some embodiments, a named data object defined by an application is mapped to a corresponding data element in a data repository. The mapping for the named data object is stored as application metadata corresponding to the application within the data repository. The application can then access data by invoking the named data object in the data repository. In this manner, a metadata architecture within the data repository is provided that minimizes the impact of changes to the data repository, while also simplifying sharing of data among multiple applications.
In this regard, in one embodiment, a method for providing application-to-repository data mapping in a data repository is provided. The method comprises receiving, by a data repository executing on a computing device, a definition of a named data object from an application. The method further comprises generating a mapping of the named data object to a data element stored in the data repository. The method also comprises storing the mapping as application metadata in a predefined data structure in the data repository. The method additionally comprises providing, to the application, access to the data element based on the mapping of the named data object to the data element.
In another embodiment, a system for providing application-to-repository data mapping in a data repository is provided. The system comprises at least one communications interface, and a data repository associated with the at least one communications interface. The data repository comprises a data mapping provider that is configured to receive a definition of a named data object from an application. The data mapping provider is further configured to generate a mapping of the named data object to a data element stored in the data repository. The data mapping provider is also configured to store the mapping as application metadata in a predefined data structure in the data repository. The data mapping provider is additionally configured to provide, to the application, access to the data element based on the mapping of the named data object to the data element.
In another embodiment, a non-transitory computer-readable medium is provided. The non-transitory computer-readable medium has stored thereon computer-executable instructions to cause a processor to implement a method comprising receiving a definition of a named data object from an application. The method implemented by the computer-executable instructions further comprises generating a mapping of the named data object to a data element stored in the data repository. The method implemented by the computer-executable instructions also comprises storing the mapping as application metadata in a predefined data structure in the data repository. The method implemented by the computer-executable instructions further comprises providing, to the application, access to the data element based on the mapping of the named data object to the data element.
The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure, and together with the description serve to explain the principles of the disclosure.
With reference now to the drawing figures, several exemplary embodiments of the present disclosure are described. The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments.
Embodiments disclosed in the detailed description provide application-to-repository data mapping in data repositories. Related methods, systems, and computer-readable media are also disclosed. In some embodiments, a named data object defined by an application is mapped to a corresponding data element in a data repository. The mapping for the named data object is stored as application metadata corresponding to the application within the data repository. The application can then access data by invoking the named data object in the data repository. In this manner, a metadata architecture within the data repository is provided that minimizes the impact of changes to the data repository, while also simplifying sharing of data among multiple applications.
In this regard, in one embodiment, a method for providing application-to-repository data mapping in a data repository is provided. The method comprises receiving, by a data repository executing on a computing device, a definition of a named data object from an application. The method further comprises generating a mapping of the named data object to a data element stored in the data repository. The method also comprises storing the mapping as application metadata in a predefined data structure in the data repository. The method additionally comprises providing, to the application, access to the data element based on the mapping of the named data object to the data element. In some embodiments, providing access to the data element includes providing the mapping to the application, after which the application may access the data element directly. Some embodiments may provide that providing access to the data element includes accessing the data element on behalf of the application, and returning requested data to the application.
The distributed applications system 10 of
In the example of
Accordingly, in this regard, the data repository 12 includes a data mapping provider 28 for providing application-to-repository data mapping within the data repository 12 to effectively “decouple” (i.e., avoid direct dependencies between) each of the applications 20 and 22 and the data elements 18. In this example, the data mapping provider 28 receives a definition (represented by arrow 30) of a named data object 32 from the application 20. In some embodiments, the definition 30 is provided to the data mapping provider 28 at an application design time by a designer or developer of the application 20. The named data object 32 may represent an application-specific alias or handle for a corresponding data element, such as the data element 18(1). The named data object 32 may be a new data object to be created in the data mapping provider 28, or may be an existing data object in the data mapping provider 28. Accordingly, the definition 30 may include a name or handle for a new named data object 32 to be created in the data mapping provider 28, and/or a selection of an existing named data object 32 in the data mapping provider 28. The definition 30 also includes an indication of the corresponding data element, such as the data element 18(1), and may include other application-specific attributes of the named data object 32.
Based on the definition 30, the data mapping provider 28 in this example generates a mapping 34 of the named data object 32 to the data element 18(1), and stores a reference to the named data object 32 and the mapping 34 as application metadata 36. As used herein, “application metadata” refers to stored data referencing and/or describing attributes of the named data object 32 and the mapping 34 to the corresponding data element 18(1). In some embodiments, the application metadata 36 may include application-specific attributes of the named data object 32, such as an associated data type, a namespace, and/or a read-only flag, as non-limiting examples. As indicated by bidirectional arrows 38 and 40, the mapping 34 serves as a link between the named data object 32 and the data element 18(1). The application 20 may access data at the data element 18(1) by invoking the named data object 32 and using it for data access, as indicated by bidirectional arrow 42. The data mapping provider 28 then provides the application 20 with access to the data element 18(1) based on the mapping 34 of the named data object 32 to the data element 18(1). In this example, the data mapping provider 28 provides the application 20 with the mapping 34, which the application 20 may then utilize to directly access the data element 18(1), as indicated by arrow 44.
As seen in
In some embodiments, one or more of the data elements 18 may be accessed and/or updated by more than one of the applications 20 and 22. Such data elements 18 may be considered “shared data.” In cases of concurrent access to shared data, the data repository 12 handles issues related to atomicity, consistency, isolation, and durability of the shared data according to techniques known in the art.
In some embodiments, permissions to modify a mapping, such as the mappings 34 or 50, may be limited once the mapping is generated by the data mapping provider 28. For instance, the data mapping provider 28 may limit permissions for updating a mapping of a named data object to an owner of an application corresponding to the named data object and an owner of the data repository 12. Similarly, some embodiments may limit permissions for updating a named data object to an owner of an application corresponding to the named data object. In this manner, for example, an application owner may modify a name of an existing named data object without impacting either data stored within the data repository 12 or application metadata, such as application metadata 36 and 54, for other applications. In
According to some embodiments described herein, the data mapping provider 28 may store the application metadata 36 in an application metadata data structure 64 corresponding to the application 20, and may further store the application metadata 54 in an application metadata data structure 66 corresponding to the application 22. In some embodiments, the application metadata data structures 64 and 66 conform to a predefined structure. Some embodiments may provide that the application metadata data structures 64 and 66 comprise relational database tables, object-oriented database entities, and/or other data structures, as non-limiting examples. By storing application metadata in an application metadata data structure corresponding to a given application, the application metadata specific to the given application may be isolated from application metadata for other applications. Thus, the potential for negative interactions between applications may be decreased or eliminated.
To generally describe exemplary operations of the data mapping provider 28 of
With continuing reference to
The data mapping provider 28 provides access to the data element 18(1) by the application 20 based on the mapping 34 of the named data object 32 to the data element 18(1) (block 74). In some embodiments, providing access to the data element 18(1) includes the data mapping provider 28 providing the mapping 34 to the application 20, after which the application 20 may access the data element 18(1) directly. Some embodiments may provide that providing access to the data element 18(1) includes the data mapping provider 28 accessing the data element 18(1) on behalf of the application 20, and returning requested data to the application 20. By using the mapping 34 to map the named data object 32 to the data element 18(1), the data mapping provider 28 may provide access to data in the data repository 12 by the application 20, while enabling the data element 18(1) to be modified or reorganized without requiring changes to the application 20.
By mapping an application-defined named data object to a data element, the data mapping provider 28 of
As seen in the exemplary data mapping 76, the data mapping provider 86 has generated a mapping 88 of a “Logins” named data object 90 defined by the “WebApp” application 82 to the “Online Users” data element 84. The mapping 88 thus links the “Logins” named data object 90 to the “Online Users” data element 84, as indicated by arrows 92 and 94. The mapping 88 and the “Logins” named data object 90 are stored in the “Users” data repository 80 as application metadata 96. The “WebApp” application 82 may access data stored at the “Online Users” data element 84 in the “Users” data repository 80 by invoking and accessing the “Logins” named data object 90, as indicated by arrow 98. As indicated by dotted box 100, the “Logins” named data object 90 and the mapping 88 belong to the “WebApp” application 82, in that the owner of the “WebApp” application 82 has update permissions for the “Logins” named data object 90 and the mapping 88.
With continuing reference to
The data mapping provider 28 of
The exemplary application-to-repository data mapping 108 illustrates how the data mapping provider 116 of
In
The data mapping provider 28 next determines whether a data access request to the named data object 32 has been received from the application 20 (block 140). If not, processing proceeds to block 142 of
Referring now to
If the data mapping provider 28 determines at decision block 142 of
As discussed above, application metadata generated by the data mapping provider 28 of
The exemplary computer system 160 includes a processing device or processor 162, a main memory 164 (as non-limiting examples, read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), etc.), and a static memory 166 (as non-limiting examples, flash memory, static random access memory (SRAM), etc.), which may communicate with each other via a bus 168. Alternatively, the processing device 162 may be connected to the main memory 164 and/or the static memory 166 directly or via some other connectivity means.
The processing device 162 represents one or more processing devices, such as a microprocessor, central processing unit (CPU), or the like. More particularly, the processing device 162 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing other instruction sets, or a processor implementing a combination of instruction sets. The processing device 162 is configured to execute processing logic in instructions 170 and/or cached instructions 172 for performing the operations and steps discussed herein.
The computer system 160 may further include a communications interface in the form of a network interface device 174. It also may or may not include an input 176 to receive input and selections to be communicated to the computer system 160 when executing the instructions 170, 172. It also may or may not include an output 178, including but not limited to display(s) 180. The display(s) 180 may be a video display unit (as non-limiting examples, a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device (as a non-limiting example, a keyboard), a cursor control device (as a non-limiting example, a mouse), and/or a touch screen device (as a non-limiting example, a tablet input device or screen).
The computer system 160 may or may not include a data storage device 182 that includes using drive(s) 184 to store the functions described herein in a computer-readable medium 186, on which is stored one or more sets of instructions 188 (e.g., software) embodying any one or more of the methodologies or functions described herein. The functions can include the methods and/or other functions of the processing system 158, a participant user device, and/or a licensing server, as non-limiting examples. The one or more sets of instructions 188 may also reside, completely or at least partially, within the main memory 164 and/or within the processing device 162 during execution thereof by the computer system 160. The main memory 164 and the processing device 162 also constitute machine-accessible storage media. The instructions 170, 172, and/or 188 may further be transmitted or received over a network 190 via the network interface device 174. The network 190 may be an intra-network or an inter-network.
While the computer-readable medium 186 is shown in an exemplary embodiment to be a single medium, the term “machine-accessible storage medium” should be taken to include a single medium or multiple media (as non-limiting examples, a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions 188. The term “machine-accessible storage medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions 170, 172, and/or 188 for execution by the machine, and that cause the machine to perform any one or more of the methodologies disclosed herein. The term “machine-accessible storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media, and carrier wave signals.
The embodiments disclosed herein may be embodied in hardware and in instructions that are stored in hardware, and may reside, as non-limiting examples, in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer readable medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an Application Specific Integrated Circuit (ASIC). The ASIC may reside in a remote station. In the alternative, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
It is also noted that the operational steps described in any of the exemplary embodiments herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary embodiments may be combined. It is to be understood that the operational steps illustrated in the flow chart diagrams may be subject to numerous different modifications as will be readily apparent to one of skill in the art. Those of skill in the art would also understand that information and signals may be represented using any of a variety of different technologies and techniques. As non-limiting examples, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples and designs described herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.