These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings in which:
The drawings are not necessarily to scale. The drawings are merely schematic representations, not intended to portray specific parameters of the invention. The drawings are intended to depict only typical embodiments of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements.
The present invention provides a method, system, and program product for providing data streaming in service data object (SDO) graphs. Specifically, under the present invention, the method includes attaching a binary object stream to a SDO graph; streaming the binary object to a repository; and also streaming the SDO graph to the repository. A system, program product stored on a computer readable medium, and method for deploying an application for providing data streaming in SDO graphs is also disclosed.
Under the present invention, a body of the data can be retrieved directly from a “back end” storage repository (e.g., database), rather than being brought into memory. In so doing, a “pointer”, or identifier, is brought into memory rather than including the body of data with the other metadata. This allows for the efficient data streaming of large blocks of data included in SDO graphs.
An embodiment of the invention includes creating a new data type (e.g., DataStream) that seamlessly handles the transfer of data streams from a repository. The new data type, combined with a mediator processing logic allows for standard SDO graphs to incorporate this new functionality and still be able to be serialized and remoted.
Embodiments of the present invention may be implemented using an object-oriented language, such as Java. Discussed herein using Java as an example, take an application that wants to model and interact with a Document object that has a ‘name’ property and a ‘content’ property. The ‘name’ property is of type String and the ‘content’ property is of the new type, DataStream. To create a document, the user may create a new document and set the name, using the setName(String) method. Next, the user would create a FileInputStream, given a file on a filesystem, and create a DataStream using a DataStreamFactory's createDataStream(InputStream) method. Lastly, the user may set the DataStream on the document using setContent(DataStream). The SDO graph may be sent to the mediator and the filesystem file would be streamed directly into the repository and never read into memory.
In an embodiment for retrieving a SDO graph, the user may be given a document by the mediator, and retrieve the name by calling getName( ). Next, the user may retrieve the content by calling getContent( ), which returns a DataStream and then the DataStream's getInputStream( ) method which returns a stream to the repository data. In both cases, large amounts of data (e.g., SDO graphs) are never read into memory, they are always streamed.
Amongst other advantages, the present invention offers a solution that provides a programming methodology that is very clear to the user and strongly typed. The user does not have to address properties that may or may not be null and does not need to retrieve data from separate systems that support streaming the data. Further, in applications that define objects containing heterogeneous properties that are tightly coupled, this solution allows them to model and interact with all of the properties in a way that still prescribes to the SDO methodology, but is extremely efficient when dealing with properties containing large amounts of data (e.g., SDO graphs).
As shown, the DataStreamFactory 2 allows a user (not shown) to create a DataStream 5 type if given, for example, an InputStream and a LoginContext. The LoginContext encapsulates credentials required to make a remote call to stream or retrieve the data, if necessary.
The StreamManagerFactory 3 provides for the management of access to StreamManager 4 instances. This allows the StreamManager 4 objects to be managed efficiently by either pooling StreamManager objects to client applications or by implementing the “Singleton” design pattern. Additionally, the StreamManagerFactory 3 may allow multiple different implementations of StreamManager 4 in order to allow for plugging in new implementations to support additional repository implementations.
DataStream 5 allows the user to attach an InputStream to SDO graph 10 (See e.g.,
The StreamManager 4 is responsible for managing the streaming of objects. The StreamManager 4 handles the staging of streams to a server on persist operations and the retrieval of streams on read operations. StreamManager 4 may be used to manage the staging and retrieval of the DataStream 5.
The Transport 6 abstracts out the underlying mechanism for communicating with the data repository. The transport 6 may use a pluggable StreamManager 4 which is uniform resource identifier (URI) based.
Referring to
Turning to
An example of data streaming a SDO graph 10 in a remote and/or clustered environment, is shown in
The completion of data streaming of SDO graph 10 in a remote environment is shown in
As
Referring now to
As shown, computer system 100 includes a processor 108, a memory 110, a bus 112, and input/output (I/O) interfaces 114. Further, computer system 100 is shown in communication with external I/O devices/resources 116 and storage system 118. In general, processor 108 executes computer program code, such as SDO graph streaming system 130, which is stored in memory 110 and/or storage system 118. While executing computer program code, processor 108 can read and/or write data to/from memory 110, storage system 118, and/or I/O interfaces 114. Bus 112 provides a communication link between each of the components in computer system 100. External devices 116 can comprise any devices (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with computer system 100 and/or any devices (e.g., network card, modem, etc.) that enable computer system 100 to communicate with one or more other computing devices such as a server.
Computer infrastructure 102 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 102 comprises two or more computing devices (e.g., a server cluster) that communicate over a network to perform the various process steps of the invention. Moreover, computer system 100 is only representative of various possible computer systems that can include numerous combinations of hardware. To this extent, in other embodiments, computer system 100 can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively. Moreover, processor 108 may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Similarly, memory 110 and/or storage system 118 can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations. Further, I/O interfaces 114 can comprise any system for exchanging information with one or more external devices 116. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc.) not shown in
Storage system 118 can be any type of system (e.g., a database) capable of providing storage for information under the present invention such as SDOs, SDO graphs, data graphs, binary objects, data objects, reference objects, adapter data, etc. To this extent, storage system 118 could include one or more storage devices, such as a magnetic disk drive or an optical disk drive. In another embodiment, storage system 118 includes data distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN) (not shown). Although not shown, additional components, such as cache memory, communication systems, system software, etc., may be incorporated into computer system 100.
Shown in memory 110 of computer system 100 is SDO graph streaming system 130, which includes data type factory 132, attachment system 134, and streaming system 136. These systems provide the functionality of the present invention discussed herein. It should be understood that although not shown, other programs such as components of a distributed application may be loaded on computer system 100.
In any event, SDO graph streaming system 130 ultimately supports data streaming in SDO graphs 10 in accordance with the present invention.
It should be understood that although
While shown and described herein as a method and system for providing data streaming in SDO graphs, it is understood that the invention further provides various alternative embodiments. For example, in one embodiment, the invention provides a computer-readable/useable medium that includes computer program code to enable a computer infrastructure to provide data streaming in SDO graphs. To this extent, the computer-readable/useable medium includes program code that implements each of the various process steps of the invention. It is understood that the terms computer-readable medium or computer useable medium comprise one or more of any type of physical embodiment of the program code. In particular, the computer-readable/useable medium can comprise program code embodied on one or more portable storage articles of manufacture (e.g., a compact disc, a magnetic disk, a tape, etc.), on one or more data storage portions of a computing device, such as memory 110 (
In another embodiment, the invention provides a business method that performs the process steps of the invention on a subscription, advertising, and/or fee basis. That is, a service provider could offer to provide data streaming in SDO graphs. In this case, the service provider can create, maintain, support, etc., a computer infrastructure, such as computer infrastructure 102 (
In still another embodiment, the invention provides a computer-implemented method for providing data streaming in SDO graphs. In this case, a computer infrastructure, such as computer infrastructure 102 (
As used herein, it is understood that the terms “program code” and “computer program code” are synonymous and mean any expression, in any language, code or notation, of a set of instructions intended to cause a computing device having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form. To this extent, program code can be embodied as one or more of: an application/software program, component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to a person skilled in the art are intended to be included within the scope of the invention as defined by the accompanying claims.
This application is related in some aspects to the commonly assigned and co-pending application identified by attorney docket number RSW920050205US1, assigned United States application serial number (to be provided), entitled “Method, System, and Program Product for Providing Proxies for Data Objects”, and filed on May 31, 2006, the entire contents of which are herein incorporated by reference. This application is also related in some aspects to the commonly assigned and co-pending application identified by attorney docket number RSW920050217US1, assigned U.S. application Ser. No. 11/395,673, entitled “Method, System, and Program Product for Managing Adapter Association for a Data Graph of Data Objects”, and filed on Apr. 3, 2006, the entire contents of which are herein incorporated by reference.