The subject invention relates generally to database reporting, and more particularly to utilizing multi-dimensional structures in connection with outputting a database-related report.
The evolution of computers with respect to memory storage expansion and processing capabilities has enabled massive amounts of data to be accumulated and analyzed by complex and intelligent algorithms. For instance, given an accumulation of data, algorithms can analyze such data and locate patterns therein. These patterns can then be extrapolated from the data, persisted as content of data mining model(s), and applied within a desired context. With the evolution of computers from simple number-crunching machines to sophisticated devices, services can be provided that range from video/music presentation and customization to data trending and analysis.
Accordingly, tasks that at one time required skilled mathematicians to perform complex operations by hand can now be automated through utilization of computers. In a simplistic example, many individuals, rather than utilizing a skilled accountant to compute their tax liability, quickly enter a series of numbers into a computer application and are provided customized tax forms from such application. Furthermore, in a web-related application, the tax forms can be automatically delivered to a government processing service. Thus, by way of utilizing designed algorithms, data can be manipulated to produce a desired result.
As complexity between relationships in data increases, however, it becomes increasingly difficult to generate an output as desired by a user. In particular, a user may wish to retrieve data in the form of a report, which can include data organized and formatted in a manner that allows a user to easily understand the returned data. For example, the report can be in tabular form with headings, specific fonts, page numbers, and the like. Conventional systems and methodologies for generating these reports, however, are associated with various deficiencies. In particular, anyone attempting to query or write reports against data within conventional databases can utilize a plurality of tools to access such data. For instance, tools exist that allow a user to connect directly to data, which can result in efficient retrieval of such data. Typical users, however, will not be able to utilize such approach, as databases are difficult to comprehend. For example, names utilized for tables and columns therein are often oriented to a particular system and are cryptic. Furthermore, thousands of relationships can exist across a plurality of tables, rendering understanding of such relationships nearly impossible for most users. Additionally, database systems can include vast amounts of data, causing a summarization of such data difficult to obtain without a specialized tool.
Accordingly, to aid users in generating reports from relational databases, intermediary models have been introduced, wherein tables, columns, and relationships are expressed by way of names that are more easily understood by an end user. A user can thus connect to a relational database by way of the intermediary model and generate a report through utilization of such model. Such intermediary models offer improvements over systems that directly connect to a database, as they improve usability (e.g., they are used to more easily enable a user to generate a report). These models, however, do not render generation of a report sufficiently efficient when vast amounts of data are associated with a database. Furthermore, intermediary models are not sufficiently efficient when several data sources are desirably utilized in connection with generating a report.
The following presents a simplified summary of the invention in order to provide a basic understanding of some aspects of the invention. This summary is not an extensive overview of the invention. It is intended to neither identify key or critical elements of the invention nor delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later.
The subject invention relates to various systems and methodologies that enable a customized report to be generated with respect to a relational database. The creation of the report can be enabled by way of mapping a multi-dimensional structure to a relational database, thereby utilizing advantages associated with multi-dimensional structures and overcoming deficiencies of conventional relational reporting systems/methods. This mapping can be effectuated through one or more mapping functions or techniques, wherein such functions enable multi-dimensional structures to be associated with relational databases in a user-friendly manner. Furthermore, the mapping functions/techniques allow for a multi-dimensional structure to be mapped to relational databases that are associated with schemas more complex than star schemas and/or snowflake schemas.
For instance, the multi-dimensional structure can include measure groups that include one or more measures that are measurable by a substantially similar set of dimensions. Furthermore, disparate measure groups can share common dimensions while retaining private dimensions. In another example, measures upon disparate measure groups can be associated with different levels of hierarchies within a multi-dimensional structure. Accordingly, disparate measures can be associated with different relationships in a relational database. In yet another example, dimensions within a multi-dimensional structure that are desirably mapped to a relational database can be related to one another—thereby reducing redundant data within a multi-dimensional structure. Moreover, dimensions can be associated with disparate roles—thus, first data can be output from a dimension when analyzed with respect to a first defined role and second data can be output from the dimension when analyzed with respect to a second defined role. Furthermore, groupings of dimensions can be associated to disparate groupings of dimensions, thereby enabling sharing of attributes between such groupings. These and other mapping functions/techniques can be utilized to sufficiently map multi-dimensional structures to relational databases, and thereby enable reporting upon such relational databases to be achieved more effectively in comparison to conventional reporting systems/methods.
In accordance with one or more aspects of the subject invention, a multi-dimensional structure utilized in connection with generating a report can be an OLAP cube or a portion thereof (such as a dimension, an attribute hierarchy, an attribute, and the like). Furthermore, the relational database can be an OLTP database. A wizard can be employed in connection with building the multi-dimensional structure over the relational database, and a disparate wizard can be employed in connection with producing a report. For instance, a wizard can solicit information relating to data to be included within the report, formatting of the report, and the like. Moreover, a report generated in connection with one or more aspects of the subject invention can be output in a language specified by a user (such functionality can be enabled by way of embedded data within the multi-dimensional structure).
In accordance with another aspect of the subject invention, a multi-dimensional structure can be automatically adapted in response to alterations in data of an associated relational database. For instance, tables and/or data therein can be modified within the relational database, and a multi-dimensional structure associated with such relational database can be automatically updated in accordance with the modification of the relational database. If the multi-dimensional structure cannot be automatically updated, a user can be notified and assisted with manually updating the multi-dimensional structure.
To the accomplishment of the foregoing and related ends, the invention then, comprises the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative aspects of the invention. These aspects are indicative, however, of but a few of the various ways in which the principles of the invention may be employed and the subject invention is intended to include all such aspects and their equivalents. Other objects, advantages and novel features of the invention will become apparent from the following detailed description of the invention when considered in conjunction with the drawings.
The subject invention is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the subject invention. It may be evident, however, that the subject invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the subject invention.
As used in this application, the terms “component,” “handler,” “model,” “system,” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. Also, these components can execute from various computer readable media having various data structures stored thereon. The components may communicate via local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems via the signal).
Referring now to the drawings,
To generate the report, queries can be issued to a multi-dimensional structure 104 that is mapped to a relational database 106. In accordance with one aspect of the subject invention, the multi-dimensional structure 104 can be one or more Online Analytical Processing (OLAP) cubes. OLAP has conventionally been utilized to query for data, and is more expedient in comparison to other querying systems/methodologies. The relational database 106 can be an Online Transaction Processing (OLTP) database, which relates to a form of transaction processing conducted by way of a computer network. OLTP databases are often utilized in calculation intensive applications, such as banking, order processing, e-commerce, and the like. It is understood, however, that any suitable multi-dimensional structure as well as any suitable relational database structure is contemplated by the inventors of the subject invention and intended to fall under the scope of the hereto-appended claims.
OLAP structures and other multi-dimensional structures, however, have not been utilized in connection with reporting services, as relational schemas often utilized in connection with generating reports are significantly more complex than star schemas—accordingly, multi-dimensional structures have not been readily associable with complex relational schemas. The system 100 overcomes such deficiencies by way of providing a mapping component 108 that utilizes various functionalities (hereinafter referred to as “mapping functionality”) to map the multi-dimensional structure 104 to the relational database 106 at build-time of the multi-dimensional structure 104, regardless of complexity of a schema associated with such relational database 106. For instance, the mapping component 108 can produce various measure groups within the multi-dimensional structure, where each measure group can include one or more measures that are measurable by a substantially similar set of dimensions. Furthermore, disparate measure groups can share common dimensions while retaining dimensions solely relating to each measure group. For example, if the multi-dimensional structure 104 relates to sales, then such structure 104 can include a measure group entitled “Sales Detail” with a measure “Sale Quantity”, which can be measured against dimensions relating to products, customers, and time. The multi-dimensional structure 104 can further include a measure group “Order” with a measure “Freight Charge” that can be measured against the dimensions relating to customers and time (but not products). The two disparate measure groups can correspond to two different tables in the relational database 106, wherein both tables can include information relating to sales.
In another example, the mapping component 108 can relate measures within a measure group of the multi-dimensional structure 104 to a substantially similar level of granularity with respect to a hierarchy within a dimension of such structure 104. More particularly, each measure on a measure group can be measurable by a substantially similar set of dimensions, and can also be measurable at a substantially similar level of granularity of an attribute hierarchy (although measures on disparate measure groups can be known at different granularities). Accordingly, measure groups can state granularity associated therewith, allowing specification of disparate relationships to the relational database 106. For instance, “Sales Detail” measures and “Forecast” measures may be known by a time dimension, but may be known at disparate levels of granularity (e.g., “Sales Detail” measures may be known to a day level while “Forecast” measures can be known to a month level). These disparate associations with respect to granularity correspond to different relationships in the relational database 106.
Dimensions within the multi-dimensional structure 104 can be related to one another by way of the mapping component 108 to facilitate mapping the multi-dimensional structure 104 to the relational database 106. In particular, the relational database 106 can include various tables that can be associated with a single dimension, and such tables can be shared across several different dimensions. For example, information relating to a customer may be defined in a table assigned to the customer and a related table defining a geographic region in which a customer resides. Similarly, information relating to a salesman can exist in a table for such salesmen as well as the aforementioned table defining the geographic region (for which the salesman is responsible). Rather than requiring details of the geographic region to be separately included in disparate dimensions (with significant repetition of data and reduced performance), the mapping component 108 can specify different dimensions as being related. For instance, dimensions relating to the customer, the salesman, and the geographic region can be defined as related, where both the dimension relating to the customer and the dimension relating to the salesman can reference the dimension relating to the geographic region. Thus, the dimensions relating to the customer and the salesman can both include attributes from the dimension relating to the geographic region in their respective hierarchies. As can be readily determined by this example, numerous relations can be defined amongst dimensions, thereby significantly decreasing redundancies in detail and enabling mapping between the multi-dimensional structures 104 and the relational database 106 to be accomplished in a more efficient manner.
The mapping component 108 can further map the multi-dimensional structure 104 to the relational database 106 by way of enabling dimensions within the multi-dimensional structure 104 to be associated with particular roles. For instance, the relational database 106 can include multiple relationships between a table containing measures and any suitable dimension table. In a specific example, an order can be billed to one customer and thereafter delivered to a disparate customer. Accordingly, a customer can be associated with disparate roles—a “bill to” customer and a “ship to” customer, and it may be desirable to analyze sales by the disparate roles of a customer at different times. Rather than utilizing two separate dimensions, wherein such dimensions are defined for the two roles of a customer, the mapping component 108 can cause a single dimension two be employed twice within the multi-dimensional structure 104.
To further facilitate generating a report by way of the multi-dimensional structure 104, the mapping component 108 can associated a group of dimensions with a disparate group of dimensions within the multi-dimensional structure 104. The multi-dimensional structure 104 can then handle double counting of particular data, thereby enabling generation of a report to be completed efficiently. For instance, the relational database 106 can include a set of tables that contain details for a single dimension, wherein such set of tables does not conform to a simple schema that is easily mapped to the multi-dimensional structure 104. For example, a product can be stored in disparate aisles within a retail establishment, and an aisle therein can include several products. Rather than simply analyzing a sale against a product, it may be desirable to analyze sales by aisles, which can present various difficulties. In particular, if a sale of a product that exists in two aisles is counted as contributing to both aisles, it is necessary to avoid counting the sale twice when totaling sales across aisles. Further, an allocation of sales across aisles may be desirable. For instance, sales can be allocated equally across all aisles that include the product, can be allocated by disparate percentages for different aisles, and the like. Rather than significantly transforming data within the relational database 106 prior to building the multi-dimensional structure 104, double counting can be handled directly within the multi-dimensional structure 104 (and eliminated with respect to the relational database 106) by enabling groups of dimensions to be associated with disparate groups of dimensions within the multi-dimensional structure 104.
The mapping component 108 can also define multiple hierarchies within a dimension of the multi-dimensional structure 104, wherein data can be analyzed by way of such hierarchies. For instance, sales to a customer can be analyzed according to a location (e.g., city, state, country) in which the customer resides, a sales region (e.g., sub-region, region) to which the customer is allocated, and a size of the customer. Rather than defining separate dimensions for each hierarchy (with significant repetition of detail therebetween), the mapping component 108 can create a single dimension that includes a full set of attributes making up such dimension (e.g., city, state, country, sub-region, region, size, customer name, . . . ). The dimension created by the mapping component 108 can include a plurality of hierarchies, each hierarchy defining a hierarchy of attributes by which data can be analyzed. Accordingly, as attribute definitions can be shared across multiple hierarchies within a single dimension, improved scalability and performance can be achieved. Furthermore, a set of hierarchies can cover every attribute on a dimension, thereby enabling any suitable set of attributes to be included in a query (which can provide flexibility commonly needed for relational database reporting).
Once the multi-dimensional structure 104 is appropriately mapped to the relational database 106 by way of the mapping component 108, the report generator 102 can receive input from a user relating to a report desirably created that includes data within the relational database 106. The report generator 102 can format the input in a manner appropriate for querying the multi-dimensional structure 104, which can then be utilized to retrieve data from the relational database 106. The appropriate data can thereafter be returned to the report generator 102, which can in turn provides a customized report to the user.
Turning now to
Once the multi-dimensional structure 204 has been created and appropriately mapped to the relational database 206, a report generator 210 can be provided to facilitate generation of a report that is customized according to user preferences. The report generator 210 can be associated with an interface component 212 that is utilized to receive and/or solicit information from a user. For instance, the user interface component 212 can be a keyboard, a graphical user interface (GUI), a microphone and associated voice recognition hardware/software, a pressure-sensitive screen, a pointing and clicking mechanism, speakers, and the like. The interface component 212 can act in conjunction with a wizard component 214 to assist a user in generating a report that is based upon data within the relational database. For instance, the wizard component 214 and the interface component 212 can act together to provide the user with a series of selectable actions and/or questions to facilitate generation of a report. Radio buttons, editable forms, and the like can be utilized to receive information from the user. Thus, the user can provide the report generator 210 with information relating source of data, name of a server, associating a report with a project, whether the report is associated with a shared data source or a new data source, assistance with respect to a query string, a report format, a specific design of the report, fonts, headers, style of a table, language in which to present data, report name, deployment of the report, file format in which to save the report, and any other suitable information that can be utilized in connection with generating the report. Upon obtaining sufficient information, the report generator 210 can retrieve data from the relational database 206 by way of the multi-dimensional structure 204 (or retrieve data from the multi-dimensional structure 204 directly) to enable generation of the customized report. Such report can then be presented to the user by way of the interface component 212.
Now turning to
The execution engine 306 can be associated with a language component 310 that enables a report to be provided to a user in a desired language. For instance, a user in the United States of America will typically wish to have a report generated in English, while a user in Germany will typically wish to have a report generated in German. The multi-dimensional structure 308 and the execution engine 306 can be associated with support for a plurality of languages, and data can be provided to the report generator 302 in a language specified by a user and/or automatically selected as a function of user history and/or context. The multi-dimensional structure 308, the execution engine 306, and the language component 310 can be housed within a server system 312, such as an OLAP server system. While shown as being outside the server system 312, it is understood that the report generator 302 and the relational database 304 can also be housed within the server system 312. Upon receiving adequate information from the multi-dimensional structure 308, the report generator 302 can create a customized report and provide such report to a user.
Now turning to
Referring now to
If the updating component 510 cannot automatically update the multi-dimensional structure 504 given a data addition, deletion, and/or alteration, the mapping component 502 can inform a user of the added data by way of a presentation component 512 (such as a GUI). For instance, if a table is added and the updating component 510 cannot determine a structure (e.g., a dimension, attribute hierarchy, or the like) that relates to the added table, then the user can be alerted to the addition of such table by way of the presentation component 512. The user then can then manually update the multi-dimensional structure 504 to map to the relational database 506 as desired (and with aid of a cube update tool).
The system 500 further includes a report generator 514 that is utilized to receive information from a user and generate a report according to such information. As described previously, a report is a summary of particular data associated with the relational database 506, wherein such report is formatted in a manner desired by the user. The report generator includes a query generator 516 that can be utilized to deliver queries to the multi-dimensional structure 504, wherein such queries enable the report generator 514 to obtain sufficient information from the multi-dimensional structure 504 and/or the relational database 506 to generate a customized report. For instance, the query generator 516 can receive information relating to type or content of data desirably included within the report, and thereafter translate such information into a query that is understood by the multi-dimensional structure 504 and/or an execution engine (not shown) associated therewith. Thus, the query generator 516 can assist a user in creating complex queries when such user is not an expert in database query language.
Turning now to
The security component 608 can determine and enforce user-access with respect to disparate portions of the multi-dimensional structure 604 (and thus disparate portions of the relational database 606), as well as enforce disparate security levels with respect to a user and at least a portion of the multi-dimensional structure 610. For instance, for one portion of the multi-dimensional structure 610 or certain sets of data within the relational database 606 a user may not have appropriate access rights to generate a report based upon such portion or sets, and for yet a disparate portion of the multi-dimensional structure 610 or certain sets of data within the relational database 606 the user may be uninhibited from accessing and utilizing such data within a report. Thus, the security component 608 can implement multiple levels of security with respect to disparate users and different portions of the multi-dimensional structure 610 and/or the relational database 606.
Upon the security component 608 determining that the user is authorized to access and utilize requested data associated with the multi-dimensional structure 610 and/or the relational database 606, the report generator 602 can issue a query to the multi-dimensional structure 610 to generate a report. Data can be returned to the report generator 602 by way of the multi-dimensional structure 610, and a report customized to user specifications can be created. The system 600 further includes a presentation component 612 that provides a report created by the report generator 604 to a user. For instance, the presentation component 612 can be a LCD display, a CRT display, a plasma display, or any other suitable display device. Similarly, the presentation component 612 can utilize speakers or other audio generating device to present desired output to the user. Thus, the presentation component 612 can output calculations in any suitable manner that enables such user to quickly comprehend the returned data.
The system 600 can also utilize a machine-learning component 614 in connection with updating mapping between the multi-dimensional structure 610 and the relational database 606. Furthermore, the machine-learning component 614 can be employed to assist the report generator 602 in connection with creating an optimal report to present to a user. In particular, the machine-learning component 614 can watch operation of the system 600 over time and make inferences to improve operation of such system 600. As used herein, the terms to “infer” or “inference” refer generally to the process of reasoning about or inferring states of a system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources.
For example, data within the relational database 606 can be altered, rendering a current mapping between the multi-dimensional structure 610 and the relational database 606 obsolete. The machine-learning component 614 can analyze previous as well as existing mappings and relationship and compute a probability associated with effectuating a proposed mapping. For instance, the machine-learning component 614 can calculate a probability associated with updating a dimension within the multi-dimensional structure 610 to map to an altered table or tables within the relational database 606. If the computed probability is above a pre-defined threshold, then the machine-learning component 614 can effectuate the alteration in mapping. In accordance with another aspect of the subject invention, the machine-learning component 614 can undertake a cost-benefit analysis prior to altering the multi-dimensional structure 610 to map to the relational database 606. For example, the machine-learning component 614 can weigh costs of causing an incorrect alteration to the multi-dimensional structure 610 with benefits of correctly modifying the multi-dimensional structure 610 in view of computed probabilities associated with the proposed alteration. Moreover, the machine-learning component 614 can operate in conjunction with the report generator 602 to facilitate creating a report that is desirably formatted. For instance, the machine-learning component 614 can analyze data requested and infer an optimal format to display such data.
Now referring to
Now turning solely to
At 704, a report generating tool is provided, wherein such tool can access data within the multi-dimensional structure and/or data within the relational database by way of the multi-dimensional structure. The report generating tool can be employed to create a report that includes data associated with the relational database, and such report can be formatted as desired by the user. At 706, input is received from a user relating to generation of a report. For instance, the input can relate to data desirably included within the report, location of the data, format of the report, name of the report, and the like. At 708, the multi-dimensional structure is queried as a function of the received input. For instance, a SQL-based declarative language, such as MDX, can be utilized to query the multi-dimensional structure. The query enables an execution engine to return desired data to the report generator. At 710, a report is output to a user, wherein such report accords to the previously received user input. Conventionally, a relational intermediary model is used to generate reports—however, these are complex and do not function efficiently given a significant amount of data. By utilizing a multi-dimensional structure, reports can be generated without significant regard to size of a relational database.
Referring now to
At 806, a report generating wizard is initialized, wherein the wizard is employed to assist a user in creating a desirable report. For instance, the report generating wizard can be initialized through selection of a graphical object, a sequence of keystrokes, upon voice commands, or any other suitable manner. At 808, input is provided to the report generating wizard to enable creation of a customized report. For instance, the input can relate to data that is desirably utilized in the report, location or name of a server housing the data, name of the report, manners in which the report is to be generated, and the like. At 810, the report, generated in accordance with the input received by the wizard, is presented to a user.
Referring now to
Referring now to
Thereafter a determination is made at 1010 regarding whether additional data is needed over the aggregations. If additional data is found to be requested by the query or no aggregations are available (determined at 1006), at 1012 data is extracted from the relational database by way of a converted query. For instance, a query in MDX can be delivered to an OLAP data cube, and such cube can be traversed to determine a mapping between the cube and desired data within the relational database. Thereafter, the query can be converted to an SQL query and applied to the relational database, and appropriate data can be extracted therefrom. At 1014, the multi-dimensional structure is updated according to calculations, actions, and the like undertaken against the data from the relational database. At 1016, results of the query are returned to the user in the form of a customized report. Similarly, if a determination is made at 1010 that no additional data is needed, then results can be returned to a user at 1016 directly after making such determination.
Now referring to
In order to provide additional context for various aspects of the subject invention,
Generally, however, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular data types. The operating environment 1210 is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Other well known computer systems, environments, and/or configurations that may be suitable for use with the invention include but are not limited to, personal computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include the above systems or devices, and the like.
With reference to
The system bus 1218 can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, 8-bit bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), and Small Computer Systems Interface (SCSI).
The system memory 1216 includes volatile memory 1220 and nonvolatile memory 1222. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 1212, such as during start-up, is stored in nonvolatile memory 1222. By way of illustration, and not limitation, nonvolatile memory 1222 can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory 1220 includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).
Computer 1212 also includes removable/nonremovable, volatile/nonvolatile computer storage media.
It is to be appreciated that
A user enters commands or information into the computer 1212 through input device(s) 1236. Input devices 1236 include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit 1214 through the system bus 1218 via interface port(s) 1238. Interface port(s) 1238 include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) 1240 use some of the same type of ports as input device(s) 1236. Thus, for example, a USB port may be used to provide input to computer 1212, and to output information from computer 1212 to an output device 1240. Output adapter 1242 is provided to illustrate that there are some output devices 1240 like monitors, speakers, and printers among other output devices 1240 that require special adapters. The output adapters 1242 include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device 1240 and the system bus 1218. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s) 1244.
Computer 1212 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 1244. The remote computer(s) 1244 can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer 1212. For purposes of brevity, only a memory storage device 1246 is illustrated with remote computer(s) 1244. Remote computer(s) 1244 is logically connected to computer 1212 through a network interface 1248 and then physically connected via communication connection 1250. Network interface 1248 encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 802.3, Token Ring/IEEE 802.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
Communication connection(s) 1250 refers to the hardware/software employed to connect the network interface 1248 to the bus 1218. While communication connection 1250 is shown for illustrative clarity inside computer 1212, it can also be external to computer 1212. The hardware/software necessary for connection to the network interface 1248 includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.
What has been described above includes examples of the subject invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the subject invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the subject invention are possible. Accordingly, the subject invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
This application claims the benefit of U.S. Provisional Application Ser. No. 60/586,617 filed on Jul. 9, 2004, and entitled SYSTEMS AND METHODS OF FACILITATING USAGE OF DATABASES. This application is also related to attorney docket number MS309074.02/MSFTP725USA, entitled SYSTEM THAT FACILITATES DATABASE QUERYING, and attorney docket number MS310694.01/MSFTP823US, entitled DATABASE QUERY TOOLS, both filed on Mar. 1, 2005. The entireties of these applications are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60586617 | Jul 2004 | US |