As briefly described above, a database access application module enables users to access databases using a client interface without a need for installing database specific drivers. In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustrations specific embodiments or examples. These aspects may be combined, other aspects may be utilized, and structural changes may be made without departing from the spirit or scope of the present disclosure. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims and their equivalents.
Referring now to the drawings, aspects and an exemplary operating environment will be described.
Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that embodiments may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Embodiments may be implemented as a computer process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
With reference to
Database access application module 120 may be an integrated part of a database management application or a separate application. Database access application module 120 may communicate with other applications running on computing device 100 or on other devices. For example, database access application module 120 may communicate with database access user interface 122 residing on other computing device 118, where a user may submit his/her own query or select from a set of predefined queries. Database access application module 120 then performs actions associated with submitting the query to the selected database and return results to the user. Other features of database access application module 120 according to embodiments are described in more detail below. Furthermore, database access application module 120 may be executed in an operating system other than operating system 106.
The computing device 100 may have additional features or functionality. For example, the computing device 100 may also include data storage devices 110 (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. System memory 104 and storage devices 110 are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computing device 100. Any such computer storage media may be part of device 100.
Computing device 100 may also include input device(s) 112 such as a keyboard, a mouse, a pen, a voice input device, a touch input device, etc. Furthermore, output device(s) 114 such as a display, a speaker, a printer, etc. may also be included. These devices are well known in the art.
Communication connections 116 may be included in computing device 100 to allow the device to communicate with other computing devices 118, such as over a network in a distributed computing environment, for example, an intranet or the Internet. Communication connection 116 exemplifies various communication media. Communication media may be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and include any information delivery media.
By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein refers to both storage media and communication media.
Referring to
Data service 202 may operate in conjunction with several database servers, e.g. 204, 205, or may be operated in a distributed manner over several servers and/or client devices. Data service 202 may include implementation of a number of data management systems such as data storage, data refreshing, data maintenance scheduling, and the like, in addition to database access application module 120 which enables a user to access a database and submit queries using a user interface at his/her local machine without a need for installing database specific drivers. Data service 202 may also execute multiple versions or instantiations of database access application module 120 according to some embodiments. As explained above, this module may interact with user interface modules on individual clients, e.g. client devices 222, 224, 226, and 228, through network 210 and receive user submitted queries, which are then forwarded to available databases, e.g. databases 212, 213. Result sets from the databases may then be returned to the requesting clients. A number of other applications may also be configured, deployed, and shared in system 200.
Network(s) 210 may include one or more secure networks such as an enterprise network, unsecure networks such as a wireless open network, or the Internet. Network(s) 210 provide communication between the nodes described above. By way of example, and not limitation, network(s) 210 may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Many other configurations of computing devices, applications, and data storage may be employed to implement a database access system according to embodiments.
Now referring to
At the core of database system 300 are one or more databases, e.g. database 320. Typically, multiple users access database 320 from individual client machines or applications on client machines, e.g. PC's 312, 314, 316, and 318. In an ODBC environment, each user machine (virtual or physical) may require a separate driver for each database that is to be accessed. The system 300 commonly includes a core library that acts as an “interpreter” between the applications and the database drivers, where the core library is independent of applications and database management system. The database drivers contain database management system specific details.
While having database specific drivers reside on individual machines provides speedy access to the databases. However, in a dynamic system where users may desire to access the database(s) from different machines at different times and a number of available databases or properties of the available databases may vary over time, easy and efficient access may be problematic. Drivers may have to be installed for each new machine or for each user depending on security setup of the machines. Moreover, drivers may have to be updated each time a new database becomes available or properties of a database such as their structure are modified. Furthermore, keeping track of available databases in real time may also be a challenge.
Embodiments provide a modular system that enables user access to available databases without a need to install drivers on each machine utilized by a user and eliminates the need to update database specific information on the user machines.
According to some embodiments, the database access application module 120 may be implemented as a servlet enabling web developers or database administrators simplified access and querying capability of various database types without the installation of ODBC drivers. In a specific example using Internet protocol, the module 120 may be implemented as a JAVA® servlet that uses Java Database Connectivity (JDBC) to facilitate database connections and query functions. In the example embodiment, the initial setup may require access to a web server and JAVA® programming knowledge to setup and run the JAVA® servlet.
Once the database access servlet is configured with database information and deployed, any user can install the user interface and access the configured databases without the need of complicated and lengthy ODBC driver configuration process. The user interface may provide additional services such as selection from a list of predefined queries, user credential based filtering, a history of submitted queries, and the like.
Database access application module 120 is configured to access databases 520, translate and submit queries from user interface 512 to the databases 520, and return result sets to the user interface 512. In a typical implementation, database access application module 120 may reside on a web server with multiple user interfaces residing on individual client devices. Other configurations of the two elements, such as both residing on the same computing device, may also be implemented using the principles described herein.
In addition to providing user defined queries to the database access application module 120, the user interface may also provide users with a list of predefined queries for users who perform periodic data collection with similar parameters. One or both of user interface 512 and database access application module 120 may include a user credential based filtering service, where access to selected databases or types of queries that may be executed may be restricted based on a user's credentials. Additional services provided by the database access application module 120 may include scheduling and optimization of queries for efficient use of system resources, maintaining a history of executed queries, validation of queries, and the like.
According to other embodiments, database access application module 120 may be configured to make any new database that has been requested by one user to other users. Changes to available databases, such as structure changes, may be updated at the database access application module 120 eliminating the need to update database specific information in each user machine (or application).
The database access application module 120 and user interfaces discussed in conjunction with
Furthermore, the example implementation environments of database access systems shown in
Process 600 begins with operation 602, where the database access application module 120 receives a request for a query from a user interface. In some embodiments, the request for query may include the query itself. In other embodiments, the user interface may first request permission to submit a query and send the query once one or more conditions, such as the availability of the requested database, are confirmed. Processing moves from operation 602 to optional operation 604.
At optional operation 604, the database access application module 120 confirms a user credential or permission level. As mentioned above other conditions such as availability of database, system resources, and the like, may also be confirmed (not shown). Processing advances from optional operation 604 to optional decision operation 606.
At optional decision operation 606, the database access application module 120 determines whether the user is permitted to query the requested database. If the user is not permitted, processing returns to operation 604. If the user is permitted, processing advances to operation 608.
At operation 608 the database access application module 120 submits the query to the selected database(s). According to some embodiments, database access application module 120 managing the database access may coordinate execution of the query on multiple databases. Processing moves from operation 608 to operation 610.
At operation 610, the database access application module 120 receives one or more result sets from the database(s). Processing moves from operation 610 to operation 612.
At operation 612, the database access application module 120 returns the received result set(s) to the requesting user interface module for presentation to the user. After operation 612, processing moves to a calling process for further actions.
The operations included in process 600 are for illustration purposes. Accessing a database without installing database specific drivers on user machines and/or applications may be implemented by similar processes with fewer or additional steps, as well as in different order of operations using the principles described herein.
The above specification, examples and data provide a complete description of the manufacture and use of the composition of the embodiments. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims and embodiments.