Patent Publication Number: US-8121981-B2

Title: Database snapshot management

Description:
BACKGROUND 
     Large amounts of data are stored in databases. In many cases this data is extremely valuable and would be difficult or even impossible to replace if lost. As a result, many database administrators regularly back up their databases to a second storage medium or even to another geographic location. Database backups may include regular full backups and daily incremental backups. This type of database backup process is typically an integral part of the information technology workflow of an organization. 
     In many cases, however, it is necessary to have a more frequent record of a database than the daily incremental backups provide. For a more granular record of a database, many database administrators utilize database snapshots. Database snapshots are a feature of some database management systems (“DBMS”) and allow a user to specify a point in time at which to preserve the contents of the database. Because database snapshots are quick to create and require relatively little storage space, they are ideal for creating the fine-grained record of a database desired by database administrators. Database snapshots should not, however, be used to replace the regular full and incremental backups of a database because the original database must be intact for a database snapshot to be restored. 
     Despite the usefulness of database snapshots, the complexity in creating, deleting, and restoring snapshots generally limits their use only to database administrators having sophisticated knowledge of the operation of the underlying DBMS. As a result, computer users without this sophisticated knowledge cannot create, delete, or restore snapshots of the databases that they work with. Moreover, no DBMS currently provides functionality for restoring a subset of the data within a database snapshot. As a result, it is currently necessary to restore an entire database snapshot even when it is only desirable to restore a small portion of the data contained within a database snapshot. 
     It is with respect to these considerations and others that the disclosure made herein is presented. 
     SUMMARY 
     Technologies are described herein for database snapshot management. In particular, through the implementation and use of the technologies provided herein, database snapshots can be managed without sophisticated knowledge regarding the operation of a DBMS. Moreover, a subset of the data contained within a database snapshot can be restored to a database. 
     According to one aspect presented herein, a user interface is provided for managing the automated creation and deletion of database snapshots by a DBMS. Parameters are received through the user interface that define the manner in which the DBMS should create and delete the database snapshots. Once the parameters have been defined, a timer job is executed that instructs the DBMS to create and delete the database snapshots according to the specified parameters. The timer job is a process that executes according to a pre-defined schedule. 
     According to aspects, the user interface for managing the automated creation and deletion of database snapshots may receive parameters defining an application and a corresponding content database for which database snapshots should be created and deleted. The received parameters may also define the maximum number of database snapshots that should be retained at any point in time, the frequency at which the database snapshots should be created, and the maximum period of time the database snapshots should be maintained prior to deletion. Other parameters may also be received, such as data defining a location for storing the database snapshots. 
     According to other aspects, a user interface may also be provided for manually managing the creation, deletion, and restoration of database snapshots. Through this user interface, requests may be received to create a database snapshot, delete a database snapshot, or restore a database snapshot to the database. Additionally, in one embodiment, a request may be received through this user interface to recover data from a database snapshot. In response to receiving such a request, another user interface is provided for specifying the data that should be recovered. Once the data to be recovered has been specified, the desired data is recovered from the database snapshot. In this manner, a subset of the data contained within a database snapshot can be retrieved. In embodiments, the functionality accessible through the user interface may also be accessed through a command line or a programmable object model. 
     It should be appreciated that the above-described subject matter may also be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as a computer-readable medium. These and various other features will be apparent from a reading of the following Detailed Description and a review of the associated drawings. 
     This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended that this Summary be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a network and software architecture diagram showing aspects of an illustrative operating environment and several software components provided by the embodiments presented herein; 
         FIG. 2  is a user interface diagram showing aspects of a user interface provided in one embodiment for configuring automated database snapshot management; 
         FIG. 3  is a flow diagram showing an illustrative routine that illustrates the operation of an automatically executed job for automating the management of database snapshots in one embodiment provided herein; 
         FIGS. 4-5  are user interface diagrams showing aspects of a user interface provided in one embodiment for manually managing database snapshots; 
         FIG. 6  is a user interface diagram showing aspects of a user interface provided in one embodiment for restoring data from a database snapshot; 
         FIG. 7  is a flow diagram showing an illustrative routine that illustrates aspects of various embodiments provided herein for managing database snapshots; and 
         FIG. 8  is a computer architecture diagram showing an illustrative computer hardware and software architecture for a computing system capable of implementing aspects of the embodiments presented herein. 
     
    
    
     DETAILED DESCRIPTION 
     The following detailed description is directed to technologies for database snapshot management. While the subject matter described herein is presented in the general context of program modules that execute in conjunction with the execution of an operating system and application programs on a computer system, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. 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 the subject matter described herein 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. 
     In the following detailed description, references are made to the accompanying drawings that form a part hereof, and which are shown by way of illustration specific embodiments or examples. Referring now to the drawings, in which like numerals represent like elements through the several figures, aspects of a computing system and methodology for database snapshot management will be described. 
     Turning now to  FIG. 1 , details will be provided regarding an illustrative operating environment and several software components provided by the embodiments presented herein. In particular,  FIG. 1  shows aspects of a system  100  for database snapshot management. The system  100  includes a client computer  102 , a collaboration and document management platform  108  (the “platform”), and a DBMS  118 , all of which are interconnected by one or more networks, such as the network  106  and the network  116 . It should be appreciated that the platform  108  and the DBMS  118  may be implemented utilizing many different computing systems and that more or fewer network interconnections may be utilized than illustrated in  FIG. 1 . 
     According to one implementation, the platform  108  comprises a web-based collaboration and document management platform. The platform  108  can be utilized to host World Wide Web (“web”) sites that can be utilized to access shared workspaces and documents, as well as specialized applications from within a web browser  104 . Through this functionality, any number of applications  110 A- 110 C can be made available to a user of the web browser  104  by the platform  108 . It should be appreciated that the concepts and technologies presented herein may be utilized with an web site that utilizes a database backend. 
     The platform  108  and each of the applications  11 A- 110 C may store content and other data within a database. This functionality is provided by the DBMS  118 . In particular, the applications  11 A- 110 C may store data within respective content databases  120 A- 120 C. Other types of databases may also be used by the platform  108  for storing configuration information and other types of data. 
     According to one implementation, the platform  108  comprises the WINDOWS SHAREPOINT SERVICES collaboration and document management platform from MICROSOFT CORPORATION of Redmond, Wash. According to other implementations, the platform  108  comprises the MICROSOFT OFFICE SHAREPOINT SERVER collaboration and document management platform, also from MICROSOFT CORPORATION. It should be appreciated however, that the embodiments presented herein may be utilized with any type of application that stores data within a database. 
     According to embodiments, the DBMS  118  comprises one or more software programs that control the organization, storage, management, and retrieval of data within a database, such as the content databases  120 A- 120 C. The DBMS  118  utilized in embodiments herein also provides functionality for creating database snapshots  122 A- 122 C of the respective databases  120 A- 120 C. As known to those skilled in the art, database snapshots are a feature of some DBMSs that allow a user to specify a point in time at which to preserve the contents of a database. Taking a snapshot of a database does not, however, actually make a copy of the data. Rather, a new database is created that is prepared to receive contents from the live database as the contents are replaced, changed, or overwritten. When a database snapshot  122  is restored onto a database, the previous values are reapplied to the live database thereby bringing the database back to the state it was in at the point in time that the database snapshot was taken. 
     According to one implementation, the DBMS  118  comprises the Enterprise And Developer Edition of the SQL 2005 DBMS from MICROSOFT CORPORATION. It should be appreciated, however, that the DBMS  118  may comprise any type of DBMS that provides functionality for creating snapshots of a database from any vender. 
     As will be described in greater detail below, the platform  108  is configured in one implementation to provide a user interface  112  (“UI”) for managing the creation, deletion, and restoration of the database snapshots  122 A- 122 C by the DBMS  118 . In particular, the user interface  112  provides functionality for allowing a user to manage the automated creation and deletion of the database snapshots  122 A- 122 C by the DBMS  118 . 
     Through the user interface  112 , a user can provide one or more parameters that define the manner in which the database snapshots  122 A- 122 C should be created by the DBMS  118 . For instance, a user may specify a parameter defining a maximum number of database snapshots  122  that should be maintained by the DBMS  118 . The user may also supply a parameter defining a frequency at which the database snapshots  122  should be created. Another parameter may be defined that identifies a maximum period of time that the database snapshots  122 A- 122 C should be maintained by the DBMS  118  prior to deletion. The user may also be permitted to specify details regarding the applications  110 A- 110 C and content databases  120 A- 120 C that the database snapshots  122 A- 122 C should be created and deleted for. Other parameters may allow the user to specify a location for storing the database snapshots  122 A- 122 C and other parameters utilized by the DBMS  118  in the creation and deletion of the database snapshots  122 A- 122 C. 
     As will also be described in greater detail below, the platform  108  utilizes a database snapshot timer job  114  to implement the automated creation and deletion of the database snapshots  122 A- 122 C in the manner specified by the user. The timer job  114  is a process that executes automatically on the platform  108  according to a predefined schedule. For instance, the timer job  114  may be configured to wake up and execute once every hour. When executed, the timer job  114  determines whether any database snapshots  122  should be created or deleted. This determination is made based upon the parameters specified through the user interface  112 . If a snapshot should be created, the timer job  114  transmits an instruction to the DBMS  118  requesting that the snapshot be created in the manner specified by the user. An illustrative command for creating a database snapshot is illustrated in Table 1. 
                             TABLE 1                          CREATE DATABASE &lt;snapshot name&gt; ON           (NAME = N‘&lt;logical file name&gt;’,           FILENAME = N‘&lt;file path&gt;\&lt;snapshot name&gt;.snap’)           AS SNAPSHOT OF &lt;name of content DB&gt;;                        
When a snapshot should be deleted, the timer job  114  transmits an appropriate instruction to the DBMS  118  for deleting the snapshot  122 . One illustrative instruction for deleting a database snapshot is illustrated in Table 2.
 
                             TABLE 2                          DROP DATABASE &lt;snapshot name&gt;                        
Additional details regarding the aspects of the user interface  112  for defining the automated creation and deletion of the database snapshots  122  will be provided below with respect to  FIG. 2 . Additional details regarding the execution and operation of the timer job  114  will be provided below with respect to  FIG. 3 .
 
     According to other aspects presented herein, the user interface  112  also provides functionality for allowing a user to manually manage the creation, deletion and restoration of the database snapshots  122 A- 122 C. For instance, through this aspect of the user interface  112 , a user may manually request that a database snapshot  122  be created for one of the applications  110 A- 110 C or content databases  120 A- 120 C. In response to receiving such a request, the platform  108  transmits an instruction to the DBMS  118  to create the new database snapshot  122  in the manner requested by the user. An instruction such as that illustrated above in Table 1 may be utilized to cause the DBMS  118  to create the requested database snapshot  122 . 
     Through the user interface  112 , a user may also manually make a request to delete one of the database snapshots  122 A- 122 C. In response to such a request, the platform  108  transmits an instruction to the DBMS  118  to delete the identified snapshot  122 . An illustrative instruction such as that shown above in Table 2 may be utilized in this regard. Through this aspect of the user interface  112 , a user may also manually request that one of the database snapshots  122 A- 122 C be restored onto an appropriate content database  120 A- 120 C. In response to receiving such a request, the platform  108  transmits an instruction to the DBMS  118  to restore the appropriate database snapshot  122  onto the proper content database  120 . An illustrative instruction for restoring one of the database snapshots  122 A- 122 C is illustrated in Table 3. 
     
       
         
           
               
               
             
               
                   
                 TABLE 3 
               
               
                   
                   
               
             
            
               
                   
                 RESTORE DATABASE &lt;name of content DB&gt; 
               
               
                   
                 from DATABASE_SNAPSHOT = ‘&lt;snapshot name&gt;’ 
               
               
                   
                   
               
            
           
         
       
     
     According to one implementation, the UI  112  also provides functionality for allowing the user to request that data be recovered from one of the database snapshots  122 A- 122 C. Through this user interface, a user may manually specify a subset of the data contained within one of the database snapshots  122 A- 122 C that should be recovered. In response to such a request, the platform  108  retrieves the requested data from the identified database snapshot  122 A- 122 C and stores the data in a specified location. The recovered data may then be imported into one of the content databases  120 A- 120 C or utilized in another manner. Additional details regarding the aspects of the user interface  112  for allowing a user to manually create, delete, restore, and recover the database snapshots  122 A- 122 C will be provided below with respect to  FIGS. 4-6 . 
     Referring now to  FIG. 2 , additional details regarding the functionality provided by the database snapshot management user interface  112  for allowing a user to manage the automated creation and deletion of the database snapshots  122 A- 122 C will be described. In particular, a user interface  200  is provided in one implementation through which a user can specify one or more parameters regarding the automated creation and deletion of the database snapshots  122 A- 122 C. As discussed above, the user interface  200  may be utilized to specify the parameters utilized by the timer job  114  to cause the DBMS  118  to create and delete the database snapshots  122 A- 122 C. 
     According to one implementation, the user interface  200  includes a user interface control  202  that allows a user to specify which of the applications  110 A- 110 C that database snapshot should be created for. A user interface control  204  is also provided for allowing a user to indicate that the database snapshots for the selected application should be created by the timer job  114  in an automated fashion. A user interface control  206  is also provided for allowing a user to specify a parameter indicating how many database snapshots should be maintained at any given time. If the number of database snapshots  122 A- 122 C exceeds this number, the timer job  114  will cause the older snapshots to be deleted until the proper number of database snapshots  122  are present. 
     According to other aspects, the user interface  200  includes a control  208  that allows a user to specify a parameter defining the frequency at which the database snapshots  122  should be created. This parameter may be specified in hours or other units of time. Through the control  210  a user may also specify a parameter indicating a storage location for storing the database snapshots  122 . For instance, a path on a file server or other type of storage system may be specified utilizing the control  210 . A parameter may also be specified utilizing the control  212  that defines a maximum period of time that the database snapshots  122  should be maintained prior to deletion. This parameter may also be specified in hours, days, or other units of time. 
     When a user has completed defining the parameters indicated above through the user interface  200 , the user may select the control  214  to save the parameters. The user may also select the control  216  to cancel the specified parameters. If the user accepts the parameters through the selection of the control  214 , the parameters are saved by the platform  108 . Additionally, the timer job  114  is configured to periodically execute and cause the DBMS  118  to either create or delete the database snapshots  122 A- 122 C according to the parameters specified by the user through the user interface  200 . Additional details regarding the operation of the timer job  114  are provided below with respect to  FIG. 3 . 
     Turning now to  FIG. 3 , a routine  300  will be described that illustrates aspects of the operation of the database snapshot timer job  114 . It should be appreciated that the logical operations described herein are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance and other requirements of the computing system. Accordingly, the logical operations described herein are referred to variously as states operations, structural devices, acts, or modules. These operations, structural devices, acts and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof. It should also be appreciated that more or fewer operations may be performed than shown in the figures and described herein. These operations may also be performed in a different order than those described herein. 
     The routine  300  begins at operation  302 , where a temporary variable is initialized for maintaining data indicating which of the databases  120 A- 120 C have been considered by the timer job  114 . The variable is initialized to the first of the content databases  120 A- 120 C. Once the variable has been initialized, the routine  300  proceeds to operation  304  where the timer job  114  determines whether the current database, as indicated by the temporary variable, has managed snapshots enabled. If not, the routine  300  proceeds from operation  304  to operation  306 , where a determination is made as to whether additional databases  120 A- 120 C remain to be considered. If not, the routine  300  proceeds from operation  306  to operation  324 , where it ends. If additional databases  120  remain to be considered, however, the routine  300  proceeds from operation  306  to operation  308  where the temporary variable is incremented to identify the next database. The routine  300  then proceeds from operation  308  to operation  304 , described above. 
     If, at operation  304 , the timer job  114  determines that snapshots are enabled for the current database, the routine  300  proceeds to operation  310 . At operation  310 , the timer job  114  determines whether the DBMS  118  supports snapshots for the current database. If not, the routine  300  proceeds from operation  310  to operation  306 , described above. If snapshots are supported, however, the routine  300  proceeds from operation  310  to operation  312 . 
     At operation  312 , the timer job  114  determines whether the last snapshot taken on the current database is too old. In particular, the timer job  114  determines whether the difference between the newest snapshot taken on the current database and the current time is greater than the frequency specified through the user interface control  208 . If so, the routine  300  proceeds to operation  314  where a new snapshot is taken for the current database. As discussed above, the timer job  114  transmits an instruction to the DBMS  118  that causes the DBMS  118  to create the snapshot. From operation  314 , the routine  300  proceeds to operation  316 . 
     If, at operation  312 , the timer job  114  determines that the last snapshot is not too old, the routine  300  proceeds from operation  312  to operation  316 . At operation  316 , the timer job  114  determines whether snapshots exist for the current database that are older than the desired oldest snapshot as specified through the user interface control  212  described above. If so, the routine  300  proceeds from operation  316  to operation  318  where the oldest snapshots for the current database are deleted until the oldest snapshot is younger than the oldest desired snapshot. As discussed above, the timer job  114  transmits instructions to the DBMS  118  that will cause the DBMS  118  to delete the desired snapshots. From operation  318 , the routine  300  proceeds to operation  320 . 
     If, at operation  316 , the timer job  114  determines that snapshots do not exist for the database that are older than the desired oldest snapshot, the routine  300  proceeds from operation  316  to operation  320 . At operation  320 , the timer job  114  determines whether the number snapshots in existence for the current database is greater than the maximum number of snapshots to be kept as specified through the user interface control  206 , described above. If not, the routine  300  proceeds from operation  320  to operation  306 , described above. If so, however, the routine  300  proceeds from operation  320  to operation  322 . 
     At operation  322 , the oldest snapshots are deleted until the total number of snapshots in existence for the current database is equal to the desired number of snapshots as specified through the user interface control  206 . In order to delete snapshots, the timer job  114  transmits the appropriate instructions to the DBMS  118  in the manner described above. From operation  322 , the routine  300  returns to operation  306 , described above. 
     Referring now to  FIG. 4 , additional details will be provided regarding the functionality provided by the user interface  112  for allowing a user to manually manage the creation, deletion, and restoration of the database snapshots  122 A- 122 C. In particular,  FIG. 4  shows an illustrative user interface  400  provided by the platform  108  for allowing a user to manually manage the database snapshots  122 A- 122 C. 
     In one implementation, the user interface  400  includes a control  402  through which a user can select the application  110 A- 110 C for which the database snapshots  122  should be managed. In response to a selection of one of the applications  110 A- 110 C using the control  402 , the columns  410 A- 410 C of the user interface  400  are populated. The column  410 A shows the name of the content database  120 A- 120 C for which a snapshot has been taken. The column  410 B shows the name of each snapshot and the column  410 C shows the time and date at which the respective database snapshot  122  was taken. In this manner, the user interface  400  provides a concise description of all of the database snapshots  122 A- 122 C that have been taken for one of the applications  110 A- 110 C. It should be appreciated that the data illustrated in columns  410 A- 410 C reflect all of the snapshots maintained by the DBMS  118  for an application regardless of whether the snapshots were taken in response to instructions received from the timer job  114  or in response to manual instructions provided by a user through the user interface  400 . 
     According to implementations, the user interface  400  also includes a number of user interface controls through which a user can request to manually create database snapshots  122 , delete the database snapshots  122 , or restore the database snapshots  122  to the appropriate content database  120 . For instance, in the illustrative screen display shown in  FIG. 4 , a user interface control  404  may be selected to cause the DBMS  118  to create a snapshot of all of the databases for the selected application  110 . A user interface control  406  may be selected in a similar manner to cause the DBMS  118  to delete all of the snapshots  122 A- 122 C that have been created for a particular application  110 . In response to such requests, the platform  108  transmits an appropriate instruction to the DBMS  118  to create or delete the desired snapshots  122 . According to one implementation, a control  408  is also provided for refreshing the display shown in the user interface  400 . This may be helpful, for instance, to display data regarding any snapshots created or deleted by the timer job  114  since the previous display of the user interface  400 . 
     As shown in  FIG. 5 , the user interface  400  also includes functionality for creating a single new snapshot for a particular content database  120  and for deleting all of the snapshots taken for a particular content database  120 . In particular, in one implementation a database name may be selected to display a drop down menu  504 . The drop down menu  504  includes items for creating a new snapshot for the selected content database and for deleting all of the database snapshots  122  for the selected content database. 
     According to one implementation, the user interface  400  also includes functionality for exploring or recovering data from a single database snapshot  122 , deleting a single database snapshot  122 , or restoring a single database snapshot  122  to the appropriate content database  120 . In particular, a snapshot name shown in the user interface  400  may be selected using an appropriate user input device. In response thereto, the menu  502  is displayed. 
     The menu  502  includes items for exploring or recovering data, deleting the snapshot, or restoring the selected snapshot to the appropriate content database  120 . In response to receiving a selection of an item for deleting the selected snapshot, the platform  108  transmits a request to the DBMS  118  to delete the appropriate snapshot. Similarly, in response to the selection of an item within the menu  502  for restoring a database snapshot  122 , the platform  108  transmits a request to the DBMS  118  to restore the selected snapshot onto the corresponding content database  120 . 
     In response to receiving a selection of an item in the menu  502  for recovering data from the selected database snapshot  122 , the user interface  600  shown in  FIG. 6  is displayed. The user interface  600  provides functionality for allowing a user to specify the data that should be recovered from one of the selected database snapshots  122 . Through the user interface  600 , a user can specify parameters that define the data that should be retrieved. For instance, utilizing the user interface controls  602 ,  604 , and  606 , a user can specify a site collection, site, and lists that should be retrieved from the selected database snapshot  122 . 
     Utilizing the user interface controls  608  and  610 , a user can also specify that the identified data should be exported from the selected database snapshot  122  and stored in a specified location. The controls  612  and  614  may be utilized to specify whether the full security of the selected data should be included and whether all versions or some subset of version should be included in the exported data. If the user selects the user interface control  616 , the specified data is retrieved from the selected database snapshot  122  and stored in the specified location. The restored data may then be imported back into an appropriate content database  120  or utilized in another fashion. A control  618  is also provided in the user interface  600  for cancelling the data recovery operation. In embodiments, the functionality accessible through the user interfaces described herein may also be accessed through a command line or a programmable object model. 
     Turning now to  FIG. 7 , additional details will be provided regarding the processes presented herein for managing the database snapshots  122 A- 122 C. In particular,  FIG. 7  shows a routine  700  illustrating one overall process for managing the manual and automated creation of the database snapshots  122 A- 122 C in one embodiment provided herein. 
     The routine  700  begins at operation  702 , where a determination is made as to whether a user has requested automatic snapshot management. If so, the routine  700  proceeds to operation  704  where the user interface  200  described above with reference to  FIG. 2  is provided for specifying the parameters defining how the database snapshots  122 A- 122 C should be managed by the timer job  114 . The routine  700  then proceeds to operation  706  where parameters are received through the user interface  200 . 
     From operation  706 , the routine  700  then proceeds to operation  708  where the timer job  114  is executed in order to cause the DBMS  118  to create and delete the database snapshots  122 A- 122 C in the manner specified through the user interface  200 . An illustrative routine illustrating the operation of the timer job  114  was discussed above with respect to  FIG. 3 . From operation  708 , the routine  700  proceeds to operation  718 , where it ends. 
     If, at operation  702 , it is determined that the user has not requested automatic snapshot management, the routine  700  proceeds to operation  710 . At operation  710 , a determination is made as to whether the user has requested to manually manage the snapshots  122 A- 122 C. If not, the routine  700  returns to the operation  702  described above. If the user has requested to manually manage the database snapshots  122 A- 122 C, the routine  700  proceeds to operation  712 . 
     At operation  712 , the user interface  400  described above is provided for manually managing the creation, deletion, restoration, and recovery of the database snapshots  122 A- 122 C. The routine  700  then proceeds to operation  714 , where user input is received requesting the creation, deletion, restoration, or recovery of data from one of the database snapshots  122 A- 122 C. For instance, the user interface controls  404 ,  408 ,  406 , and the menus  502  and  504  may be utilized to receive such input. In response to receiving this input, the routine  700  proceeds to operation  716 , where the platform  108  provides instructions to the DBMS  118  to perform the operation requested by the user through the user interface  400 . Once the requested operation has been performed, the routine  700  continues from operation  716  to operation  718 , where it ends. 
       FIG. 8  shows an illustrative computer architecture for a computer  800  capable of executing the software components described herein for database snapshot management in the manner presented above. The computer architecture shown in  FIG. 8  illustrates a conventional desktop, laptop, or server computer and may be utilized to embody the client computer  102  or a server computer capable of executing the collaboration and document management platform  108  and the DBMS  118 . 
     The computer architecture shown in  FIG. 8  includes a central processing unit  802  (“CPU”), a system memory  808 , including a random access memory  814  (“RAM”) and a read-only memory (“ROM”)  816 , and a system bus  804  that couples the memory to the CPU  802 . A basic input/output system containing the basic routines that help to transfer information between elements within the computer  800 , such as during startup, is stored in the ROM  816 . The computer  800  further includes a mass storage device  810  for storing an operating system  818 , application programs, and other program modules, which are described in greater detail herein. 
     The mass storage device  810  is connected to the CPU  802  through a mass storage controller (not shown) connected to the bus  804 . The mass storage device  810  and its associated computer-readable media provide non-volatile storage for the computer  800 . Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available computer storage media that can be accessed by the computer  800 . 
     By way of example, and not limitation, computer-readable media may include volatile and non-volatile, 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. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks (“DVD”), HD-DVD, BLU-RAY, 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 the computer  800 . 
     According to various embodiments, the computer  800  may operate in a networked environment using logical connections to remote computers through a network such as the network  820 . The computer  800  may connect to the network  820  through a network interface unit  806  connected to the bus  804 . It should be appreciated that the network interface unit  806  may also be utilized to connect to other types of networks and remote computer systems. The computer  800  may also include an input/output controller  812  for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in  FIG. 8 ). Similarly, an input/output controller may provide output to a display screen, a printer, or other type of output device (also not shown in  FIG. 8 ). 
     As mentioned briefly above, a number of program modules and data files may be stored in the mass storage device  810  and RAM  814  of the computer  800 , including an operating system  818  suitable for controlling the operation of a networked desktop, laptop, or server computer. The mass storage device  810  and RAM  814  may also store one or more program modules. In particular, the mass storage device  810  and the RAM  814  may store software components for implementing the collaboration and document management platform  108  and the DBMS  118 , each of which was described in detail above with respect to  FIGS. 1-7 . When used to embody the client computer  102 , the mass storage device  810  and the RAM  814  may also store the Web browser  104  and other types of program modules. The mass storage device  810  may also be utilized to store the content databases  120 A- 120 C and the database snapshots  122 A- 122 C. 
     Based on the foregoing, it should be appreciated that technologies for database snapshot management are provided herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological acts, and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and mediums are disclosed as example forms of implementing the claims. 
     The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.