1. Technical Field
The present invention relates to processing of schema changes within database management systems.
2. Discussion of the Related Art
Database management systems typically include information stored in some ordered configuration in one or more databases. For example, relational database management systems include data stored in tables, where database records are ordered in rows of the tables. Other types of database management systems include, without limitation, hierarchical based systems, such as an information management system (IMS) designed by IBM Corporation. Database schemas are provided by the database management systems to describe the organization of data and information within the databases. For example, in relational database management systems, database schemas are provided to describe the organization of data and information in tables, columns and fields within tables, indexes for the tables as well as relationships between the tables, columns and indexes. Database schemas are also provided for hierarchical based systems. A schema for a database management system in essence provides a blueprint or mapping of how the one or more databases are organized into various database organizational structures. The schema of a database management system can undergo changes for a number of different situations. For example, schema changes such as the addition or deletion of a column to a database table of a relational database management system may be necessary at times, depending upon changes in requirements to the types of data to be stored by the database management system.
Many schema changes to objects within database management systems are destructive and final. An example of a destructive schema change for a relational database management system is the dropping of a column from a database table. Such changes have a potential risk associated with them because applications which access the database management systems may still have an unknown dependency on the object that has been affected by the schema change. In addition, this dependency often remains unknown until the object affected by the schema change has been removed and errors are raised by the dependant application, which can result in costly downtime for the application.
An example approach to alleviating potential adverse affects of database schema changes would be to itemize every statement issued from every application that uses the database system. When a destructive schema change is necessary, the itemized statements can be analyzed and the impact the change will have on applications can be assessed before the change takes place. However, this approach becomes difficult due to the significantly large number of statements that would need to be itemized and kept up to date. This approach would further require some form of monitoring capability to record each and every statement, attempt to match each statement against already itemized statements, and to record the statement if it wasn't already itemized. In addition, such monitoring would need to be done for each and every application. The resulting performance overhead on applications for implementing this approach of gathering this data, and the administrative overhead of maintaining the data, renders this approach cost prohibitive.
A further drawback of to this approach is that it is only capable of detecting statements that directly reference an object to be removed. For example, this technique cannot easily detect dependencies on objects such as indexes, referential constraints, automatic summary tables, etc.
Consequently, destructive schema changes to a database are typically deferred by database administrators until there is a major re-design of an application. The undesirable result is that many redundant objects are maintained by the database management system, which in turn increases the total cost of ownership.
Accordingly, embodiments of the present invention include a method, a computer program product and a system for managing database schema changes in a database management system. Database schema changes are managed in the database management system by identifying and marking one or more database objects for a database schema change, identifying and processing accesses to identified database objects and storing information pertaining to the identified accesses, where the identified accesses are processed with respect to the database schema without the change, evaluating the stored information to determine a frequency with which identified objects are referenced by the identified accesses over a select time period, and implementing the database schema change in response to an indication that the frequency is below a threshold value.
The above and still further features and advantages of embodiments of the present invention will become apparent upon consideration of the following detailed description thereof, particularly when taken in conjunction with the accompanying drawings wherein like reference numerals in the various figures are utilized to designate like components.
In accordance with embodiments of the present invention, a method, system and computer program product are provided which minimize the potential impact of a destructive schema change involving the dropping of one or more objects from the database by marking any object affected by the schema change as pseudo-dropped over a select period of time and until it is determined that the frequency of references by client and/or any other applications to the affected object are minimal or substantially non-existent.
The present invention can be utilized in relation to a database schema change that results in the dropping of one or more objects of any one or more types including, without limitation, records, columns, views, tables, table indexes, triggers, stored procedures, packages, and referential integrity constraints. The present invention can further be applied to relational database management systems that utilize tables and columns to organize data and also other types of database management systems such as database management systems that organize data in a hierarchical organizational structure (such as IMS systems).
A destructive schema change involving the dropping of one or more objects from a database management system is marked or flagged by the system as having occurred without actually being performed on the system. In particular, the marking or flagging occurs by marking any one or more objects that are affected by the schema change as being “pseudo-dropped”. In other words, the affected objects are not immediately dropped by the database management system after receiving a destructive schema change but instead are marked as pseudo-dropped. Any subsequent statement by an application interacting with the database management system which references (either directly or indirectly) a pseudo-dropped object will be allowed to complete successfully by continuing to reference the pseudo-dropped object. Such statements are recorded by the database management system, so as to generate a log that identifies information about how often a pseudo-dropped object is referenced during periods of access of the database management system, specific applications and statements that are referencing the pseudo-dropped object, etc.
The pseudo-drop marking of objects affected by destructive schema changes allows applications with previously undetected dependencies to such objects to continue to operate in a normal manner and also provide database administrators with information that identifies such dependencies in order to correct these dependencies over a select time period. When a determination has been made that there are no further dependencies on a pseudo-dropped object (e.g., the frequency of references to a pseudo-dropped object decreases to zero or is no greater than a threshold value over a select time period), the drop will be made permanent with removal of the pseudo-dropped object from the database(s) of the database management system.
An example embodiment is now described with reference to the flowchart of
The database management system identifies and marks as “pseudo-drop” any and all database objects that are affected by the schema change in that they are to be dropped or deleted from one or more databases (step 20). In particular, an object can be marked as being pseudo-dropped in the form of metadata for a database catalog that includes the object to be dropped.
An example embodiment of such marking is shown in
Upon identifying and marking all database objects affected by the schema change as pseudo-dropped, the database management system allows statements from client and/or any other applications which reference pseudo-dropped objects to proceed to completion while identifying and logging such statements. In particular, the database management system identifies each statement that references, either directly or indirectly, a pseudo-dropped object (step 30). Each of those statements which are identified as referencing pseudo-dropped objects are allowed to process to successful completion of the statement (step 40). Utilizing the example embodiment of the ACCOUNTPROFILE table of
The database management system stores statements identified as referencing (directly or indirectly) pseudo-dropped objects as well as other corresponding information (step 50) so as to provide a record or log of how often, which types of statements and/or which applications are continuing to reference pseudo-dropped objects. Examples of types of information that are recorded or logged for each statement referencing a pseudo-dropped object include, without limitation, each object name (fully qualified name of the object) that has been pseudo-dropped and referenced (directly or indirectly) by the statement, the complete text of the statement that references (directly or indirectly) the pseudo-dropped object, number of times reference to each pseudo-dropped object occurs over a select time period, any information that identifies a client issuing a statement (e.g., an issuing userid, client host name, client IP address, etc.), and any information that identifies the application (e.g., application name).
The statement log or record can be monitored to determine when to actually implement a deletion of pseudo-dropped objects (step 60). In particular, the information in the statement log can be utilized to track how often a particular pseudo-dropped object has been referenced in statements, as well as the frequency with which client and/or any other applications reference the pseudo-dropped object, thus rendering the task of identifying and modifying offending applications much easier. For example, the statement log provides information regarding which applications should be corrected or modified to prevent statements that reference (or continue to reference) pseudo-dropped objects when an application accesses the database management system. After a certain period of time, and based upon the information collected in the statement log, it can be determined that there is a strong likelihood that a particular pseudo-dropped object will no longer be referenced (e.g., due to corrections/modifications to offending applications to ensure that there are substantially no applications that reference or continue to reference pseudo-dropped objects, a diminished frequency of reference to the pseudo-dropped object to zero or some minimum threshold value and/or any other factors which satisfy a confidence threshold that all actual and/or potential violating applications have been corrected). The monitoring of the statement log or record can be done manually, where a database administrator periodically checks the statement log. Alternatively, the monitoring process could be automated by the database management system (so as to alleviate any burden on a database administrator) utilizing a suitable algorithm to determine, based upon data within the statement log, the likelihood or probability that a pseudo-drop object may be referenced in a statement by an application is below a threshold value (e.g., when the number of times the pseudo-drop object has been referenced in a select time period has dropped below a certain value, the system automatically determines the pseudo-drop object can actually be deleted).
Each pseudo-dropped object can be deleted from the database management system (step 70) when it is determined that such object is not likely to be referenced in a statement (i.e., the determination made in step 60). The actual deletion of each pseudo-dropped object from the database management system can occur manually (e.g., by a database administrator) or automatically by the system. Thus, the present invention allows for the eventual permanent removal and deletion of the pseudo-dropped objects, which benefits the database management system (e.g., by facilitating reclamation of memory space), while ensuring that there are zero or a minimal number of client and/or any other applications that will continue to reference the removed and deleted objects.
Additional features of the present invention include, without limitation, providing a warning notification, an error notification and/or any other suitable communication to applications when a statement references an object marked as pseudo-drop. A notification (e.g., an email) could also be provided to a database administrator or other personnel of the database management system each time a statement is received that references a pseudo-dropped object. Any other suitable features that enhance the ability to identify and mark objects to be pseudo-dropped and deleted as a result of a schema change as well as identify possible statements by applications that might reference the pseudo-dropped objects can be implemented to ensure an easy and successful implementation of the schema change.
The previous method was described with reference to the pseudo-dropping of a database column for a relational database management system such as shown in the embodiment of
In addition, the present invention further provides information to determine when a schema change results in the pseudo-dropping of an object that is frequently used (e.g., the frequency of use is above a threshold value for a select time period) by a select number of applications. In such a situation, a determination may be made that the pseudo-dropped object should be maintained within the database and the schema change should be modified so as to not affect this object.
The methods described above and depicted in the flowchart of
The DBMS 202 communicates with applications (e.g., a client application 206 as shown in
The DBMS, DBMS server and applications (e.g., modules including such applications) accessing the DBMS can be any suitable computer systems implemented by any type of hardware and/or other processing circuitry. In particular, the DBMS, DBMS and applications may be implemented by any quantity of conventional or other computer systems or devices (e.g., computer terminals, personal computers (e.g., IBM-compatible, Apple MacIntosh, tablet, laptop, etc.), etc.), cellular telephones, personal data assistants (e.g., Palm Pre, Droid, iPhone, etc.), etc., and may include any commercially available operating system (e.g., AIX, Android, Linux, OSX, Sun Solaris, Unix, Windows, etc.) and any commercially available or custom software (e.g., browser software, communications software, word processing software, etc.). These systems may include types of displays and input devices (e.g., keyboard, mouse, voice recognition, etc.) to enter and/or view information. In addition, record information may be received by the server and retained by the database in any suitable manner, such as the types described above.
In operation, the DBMS server 204 is utilized to implement the method steps as set forth in the flowchart of
Thus, the example system and methods described above facilitate processing of destructive schema changes by pseudo-dropping of objects affected by the schema changes while not actually implementing the changes until a determination is made that the impact of the deletion of such objections is minimal to applications accessing the database management system. The processing in this manner does not require that all incoming statements be processed but only those that reference (directly or indirectly) any pseudo-dropped object. This reduces the administrative overhead as well as the memory space that would otherwise be required to log and review every statement. Furthermore, by pseudo-dropping the objects associated with the schema change and allowing subsequent statements to process to completion, both direct and indirect reference to objects by such statements can be determined. This is a significant advantage to simply reviewing a statement to determine whether a direct object is referenced in the statement, but without determining whether an object is indirectly referenced (since this would require processing of the statement).
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.