This invention relates generally to database access techniques. More particularly, this invention relates to techniques for querying remote data sources.
Business Intelligence (BI) generally refers to software tools used to improve business enterprise decision-making. These tools are commonly applied to financial, human resource, marketing, sales, customer and supplier analyses. More specifically, these tools can include: reporting and analysis tools to present information, content delivery infrastructure systems for delivery and management of reports and analytics and, and data warehousing systems for cleansing and consolidating information from disparate sources. Business Intelligence tools work with data management systems, such as relational databases or On Line Analytic Processing (OLAP) systems used to collect, store, and manage raw data.
A subset of business intelligence tools are reporting tools. There are a number of commercially available products to produce reports from stored data. For instance, Business Objects Americas of San Jose, Calif., sells a number of widely used report generation products, including Crystal Reports™, Business Objects OLAP Intelligence™, Business Objects Web Intelligence™, and Business Objects Enterprise™. As used herein, the term report refers to information automatically retrieved (i.e., in response to computer executable instructions) from a data source (e.g., a database, a data warehouse, a plurality of reports, and the like), where the information is structured in accordance with a report schema that specifies the form in which the information should be presented. A non-report is an electronic document that is constructed without the automatic retrieval of information from a data source. Examples of non-report electronic documents include typical business application documents, such as a word processor document, a presentation document, and the like.
A report document specifies how to access data and format it. A report document where the content does not include external data, either saved within the report or accessed live, is a template document for a report rather than a report document. Unlike, other non-report documents that may optionally import external data within a document, a report document by design is primarily a medium for accessing and, formatting, transforming and or presenting external data.
A report is specifically designed to facilitate working with external data sources. In addition to information regarding external data source connection drivers, the report may specify advanced filtering of data, information for combining data from different external data sources, information for updating join structures and relationships in report data, and instructions including logic to support a more complex internal data model (that may include additional constraints, relationships, and metadata).
In contrast to a spreadsheet type application, a report generation tool is generally not limited to a table structure but can support a range of structures, such as sections, cross-tables, synchronized tables, sub-reports, hybrid charts, and the like. A report design tool is designed primarily to support imported external data, whereas a spreadsheet application equally facilitates manually entered data and imported data. In both cases, a spreadsheet application applies a spatial logic that is based on the table cell layout within the spreadsheet in order to interpret data and perform calculations on the data. In contrast, a report design tool is not limited to logic that is based on the display of the data, but rather can interpret the data and perform calculations based on the original (or a redefined) data structure and meaning of the imported data. The report may also interpret the data and perform calculations based on pre-existing relationships between elements of imported data. Spreadsheets applications generally work within a looping calculation model, whereas a report generation tools may support a range of calculation models. Although there may be an overlap in the function of a spreadsheet document and a report document, the applications used to generate these documents contain instructions with express different assumptions concerning the existence of an external data source and different logical approaches to interpreting and manipulating imported data.
There is a need to enhance BI software to facilitate reporting based on remote data sources. Currently, BI tools accessing remote data sources may not have the required data source drivers and adapters. Data sharing with a reporting tool is particularly useful in peer-to-peer and Software-as-a-Service (SaaS) frameworks. In these frameworks firewalls and network security create boundaries between the BI tool and the remote data sources.
In view of the foregoing, it would be advantageous to provide enhancements to BI tools that facilitate accessing remote data sources. In addition, it would be desirable to enhance BI tools, such as report viewers, to support data source drivers to access data sources.
Distributed computing techniques define computer-to-computer interactions in the way that the HyperText Markup Language (HTML) and Hyper Text Transport Protocol (HTTP) do for people-to-computers interaction. Some of these techniques provide a common object model optionally augmented with a naming or a security model. Other services can be layered atop these core services.
A common object model makes data access over a network easier. The model includes the provision of techniques for making information about the data available to other systems. The information can include the data type, data location, connection information, and supplementary actions that may be performed on the data. The model allows a sender to point to a variable, object, piece of data, and the like, and simply send it. The object then appears in the address space of the destination. The serializing, transporting, and unserializing of the transmission is hidden from sender and receiver.
There are network communication techniques that add metadata to data requested over a network. The addition of metadata can be used to preserve aspects of the data that would normally be lost once the data is ported. Normally, the structure of the data at its source is lost. However, the logical interrelationship of the requested data is preserved and transmitted. This allows the requester to use the requested data as if the data were in the source system.
Web Services (WS) are a class of protocols for distributed computing and network communication that provide a common object model, make information about the data available to other systems and add metadata to the data requested, WS include an XML base that facilitates interoperability among implementations, A web service has an interface that is specified in a format such as the Web Service Description Language (WSDL). Other systems interact with the web service in a manner prescribed by the interface using messages, which may be enclosed in a container, such as SOAP (also known as Simple Object Access Protocol), which is a protocol for exchanging extensible Markup Language (XML) messages over a computer network. SOAP forms the foundation layer of the web service stack, providing a basic messaging framework that more abstract layers can build on.
It would be desirable to create distributed BI tools. In particular, it would be desirable to expand reporting tools with techniques to perform remote data access.
The invention includes a computer readable storage medium with executable instructions to receive a report document at a report query engine. The report document includes a definition of a report. The report document is processed to extract a remote location for a data source driver for the report. A request for the data for the report is transmitted via a consumer across a communication channel to the remote location. The data is received. A report instance is created from the data. The report instance includes the data processed in accordance with the definition of the report.
The invention also includes a computer readable storage medium with executable instructions to define a data source driver configured to access a data source. An adapter coupled to the data source driver is defined. The adapter makes calls to an interface of the data source driver. A provider is disposed between the adapter and a communication channel. The provider includes executable instructions to receive a request for data from a remote consumer, pass the request to the adapter, and make a query to the data source through the adapter and data source driver.
The invention also includes a computer system with a report processing server including a consumer and a report engine that processes a report document. While processing the report document, the report engine makes a call to the consumer to access data remote to the report processing server. A data server includes a provider configured to receive calls from the consumer and a data source driver coupled to the provider via a data server adapter. A communication channel couples the report processing server to the data server. Data is requested from the data server by the consumer. The request is processed by the provider. The provider obtains the data via the data source driver. The data is returned to the report engine via the consumer. The report engine creates an instance of the report document with the data.
The invention is more fully appreciated in connection with the following detailed description taken in conjunction with the accompanying drawings, in which:
Like reference numerals refer to corresponding parts throughout the several views of the drawings.
Each computer 102 includes a central processing unit 106 connected to a set of input/output devices 100 and a network connection circuit 110 via a bus 114. As shown in
Also connected to the bus 114 is a memory 120. The memory 120 stores executable instructions to implement operations of the invention. In an embodiment, the memory 120 stores one or more of the following modules: BI module 122, a report module 124, an adapter module 126, a consumer module 128, report viewer module 130, a firewall module 132, and a provider module 134. In an embodiment, computer 102-A includes the report module 122, the adapter module 126, and the consumer module 128. In an embodiment, computer 102-B includes the firewall module 132, the provider module 134, and adapter module 126. In another embodiment, computers 102-A and 102-B have the same modules.
The BI module 122 includes executable instructions to perform BI related functions on computers 102-A or 102-B, across system 100 or a wider network. BI related functions include: gathering, integrating, analyzing data, reporting data, and the like. The BI module 122 includes instructions to implement authentication at the application and data level and the scheduling of BI jobs—including reporting jobs. The BI module 122 is optional for both computers.
The report module 124 includes instructions for generating reports, viewing a report, performing query and analysis, and the like. The report module 124 includes executable instructions to access a data source (not shown). In an embodiment, the data source is selected from a data warehouse, a plurality of reports, text files and the like. In another embodiment, the data source is a database: relational, OLAP, or other. The report module 214 includes instructions to access data locally or remotely. Local data access occurs when instructions from the report module 124 interact with local data source drivers. Remote data access involves interaction with data source drivers on another computer, in an embodiment, report module 124 includes instructions to define a report query engine and a report print engine which collectively define a report engine. As used herein a report engine is either or both of a report query engine and a report print engine.
The adapter module 126 includes instructions to provide a wrapper to a subsystem including modules, classes or entities. The adapter module provides a single point of entry for the subsystem. The adapter module 126 exposes an API to the report module 124 and other modules.
The consumer module 128 includes executable instructions to communicate with the provider module 134. The consumer module 128 provides instructions to consume data sent from a provider. This data can be structured and include metadata—e.g., Really Simple Syndication (RSS) and XML added to data to state its structure or add other metadata. In an embodiment, the consumer module 128 includes executable instructions to consume a Web Service (WS) provided by a WS provider. In this embodiment, the consumer module 128 implements WS consumption and provides an interface for calls to a WS provider. The executable instructions in the report module 124 access a WS consumer defined by WS consumer module 126. In an embodiment, the WS consumer module implements a data source driver and calls to a WS consumer are made as if it were a specific database driver. The WS consumer module 128 allows the report module 124 to access a remote data provider.
The report viewer module 130 includes executable instruction to display a report document to a user. The report viewer can be part of a report engine or a stand alone component for viewing a report document. Report documents can be local to the viewer or sent to the viewer by a remote content server—e.g., the viewer is a thin client.
The optional firewall module 132 includes executable instructions to enforce a boundary between two or more computers on a network. The firewall module includes instructions to monitor all traffic in or out of a computer, permitting only traffic which is authorized to pass. The firewall can be hardware, software or a combination of hardware and software components.
The provider 134 includes executable instructions to provide data to the consumer module 128. The data can be provided as an RSS feed, a data feed with XML added to data to state its structure or provide other metadata, a web service or the like. In an embodiment, the provider 134 includes executable instructions to provide a web service. The provider module 134 provides information like tables, fields, links and the link for a data source. The provider module includes instructions to receive a request for data from a WS consumer and pass the request to instructions that will build a query, execute the query and retrieve the data. The provider module 134 includes instructions to configure a WS provider to run on a public internet protocol IP address and optionally set up security controls on access.
The modules stored in memory 120 are exemplary. Additional modules such as an operating system or GUI module can be included. It should be appreciated that the functions of the presented modules may be combined. In addition, a function of a module need not be performed on a single machine, e.g., the first computer or the second computer. Instead, the function may be distributed across system 100 or a wider network, if desired. In an embodiment of the present invention, the system 100 may operate in a client-server architecture rather than a peer-to-peer architecture.
The report document 210 is processed by the report engine 208. The report engine 208 is coupled to a series of optional data source drivers 225-A, 225-B, 225-C via an adapter 226-1. The adapter 226-1 is defined by instructions in the adapter module 126. A specific implementation of the adapter 226-1 is a WS consumer 228. The WS consumer 228 implements the interface of the adapter, but instead of providing functions to access the data source behind the data source drivers 225-A, 225-B, 225-C, the consumer makes calls to a remote data source. The WS consumer 228 receives requests for data from the report engine 208. The WS consumer 228 uses information in ache properties 212 to locate and communicate with a provider of a web service across a network. In an embodiment, the property is a universal resource locator (URL). The remote reporting system 200 includes a communication channel 229 any wired or wireless channel. The WS consumer 228 acts as a proxy. The WS consumer 228 makes calls, such as function calls, to a WS provider.
The data server region 206 of system 200 includes an optional firewall 232. The firewall 232 fronts a WS provider 234. The WS provider 234 is coupled to an adapter 226-2. The adapter 226-2 is part of a normal BI or report installation. The adapter 226-2 communicates with one or more data source drivers 225 in the same manner as a report query engine 224 included in the data server region 206. Each data source driver 225-1, 225-2 and 225-3 is used to access a coupled data source 250-1, 250-2 and 250-3. In an embodiment, a data source driver is coupled to two or more data sources.
The WS consumer 228 makes calls to the WS provider 234. The calls include logon, query, and the like. The WS consumer 228 mimics functions that the WS provider 234 exposes. In this way calls made to the WS consumer 228 are passed through the channel 229 to the WS provider 234. With respect to function calls, the WS consumer 228 exists in a one-to-one relationship with the WS provider 234. The relationship is one-to-one because each call to the WS consumer 228 is matched by a call to the WS provider 234 and a call to the adapter 226-2. The WS provider 234 makes some unmatched calls to the adapter. These calls include instruction calls to the adapter to load a library, release memory, and the like.
The data is retrieved from one ore more data sources and passed back up through the WS provider 234, via the channel 229 to the server region 204. The data is processed by the report engine 208 to create a report instance 260. The report instance 260 is sent via another wired or wireless communication channel 262 to the client region 202. The report instance is processed and displayed by a report viewer defined by instructions in the report viewer module 130.
The communication between remote regions in
The report document 210 is processed by the report query engine 610 within the report engine 208. The report engine 208 is coupled to an adapter 226-1. However, the data source drivers optional in
Each region in the remote reporting system 800 has a report engine 208, a series of data source drivers 225, and an adapter 226. Each region has at least one data source. For region 804 the data sources are 250-A-2, 250-B-2 and 250-C-2. For region 802 the data sources are not shown. Each region has a WS consumer 228, firewall 232, and WS provider 234. Report documents 210 are processed in one region with data requested from the other region. The data requests (e.g., queries) and data are sent between the WS consumers 228 and WS providers 234 through the communication channel 229.
In an embodiment, the WS consumer 228 is a specific implementation of the adapter 226. The WS consumer 228 relays requests to the adapter behind its corresponding WS provider 234. These requests include which data source driver to use and the information contained within the data source property within the report document. The WS consumer 228 performs various operations on the request depending on the embodiment of the invention. These operations may include the following. The consumer 228:
receives the request from the report engine 208;
converts the request for transmission across the communication channel 229;
converts the request to a format required by WS provider 234;
receives the data from the WS provider 234;
stores data to create a local data cache within region 802;
transforms the data to the required format; and
returns the data to the report engine 208.
The WS provider 234 performs various operations on the request depending on the embodiment of the invention. These operations may include the following. The WS provider 234:
receives the request from the WS consumer 228;
initializes the adapter 226;
determines the syntax of that the adapter 226 requires;
passes the request to the adapter 226;
receives the data from the data source via the adapter 226;
transforms the data to the required format; and
returns the data to the WS consumer 228.
In an embodiment, the WS consumer implements the interface of a data source driver. The report engine calls the adapter with a data source query defined by a report. The adapter makes calls to the WS consumer as if it were a data source driver. The WS consumer then relays the calls to the WS provider. The processing continues through the adapter and data source drivers local to the WS provider. This remote adapter includes state variables to know which data source driver and data source it is interacting with. The interaction between the consumer and provider includes an extra overhead of calls to establish which data source driver to use.
Apparatus and methods for remote reporting have been presented in the preceding figures. Some of these figures, i.e.,
Aspects of the remote reporting system include on-line report creation, refreshing, and scheduling. Additionally, the disclosed systems provide a framework for any BI system to share data with other BI systems and/or consume other BI system's data. This is illustrated in
Herein, when introducing elements of embodiments of the invention the articles “a”, “an”, “the” and “said” are intended to means that there are one or more of the elements. The teams “comprising”, “including” and “having” are intended to be inclusive and to mean that there may be additional elements other than the listed elements.
An embodiment of the present invention relates to a computer storage product with a computer-readable medium having computer code thereon for performing various computer-implemented operations. The media and computer code may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well known and available to those having skill in the computer software arts. Examples of computer-readable media include, but are not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute program code, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer code include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment of the invention may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment of the invention may be implemented in hardwired circuitry in place of, or in combination with, machine-executable software instructions.
The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that specific details are not required in order to practice the invention. Thus, the foregoing descriptions of specific embodiments of the invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed; obviously, many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, they thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the following claims and their equivalents define the scope of the invention.