A database storage system allows users to modify the state of a virtual database. The database storage system provides a respective virtual database (VDB) at a respective destination, the respective VDB having a first timeflow stored in a respective container. A user can send a request to rewind a VDB. The request identifies timeflow of the VDB and a state of the VDB associated with a timeflow. The database storage system modifies the virtual database to refer to database blocks associated with a snapshot of the VDB associated with the identified timeflow. The database storage system maintains a new timeflow for the modified VDB. The database storage system also allows the virtual database to be refreshed to a state of a source database. The source database can be a database stored in an external system or a virtual database stored within the database storage system.
|
20. A non-transitory computer readable storage medium storing instructions for:
storing, in a database storage system, a plurality of snapshots of a source database, a snapshot representing a point-in-time copy of database blocks of the source database, wherein one or more database blocks are shared across snapshots of the source database;
provisioning a virtual database based on database blocks of a snapshot of the source database;
maintaining, by the database storage system, one or more timeflows for the virtual database, each timeflow representing changes to the virtual database starting from an initial state of the virtual database, the representation of changes comprising snapshots of the virtual database taken at different points in time, wherein one or more database blocks are shared across a plurality of snapshots of the virtual database;
receiving a request to rewind the virtual database to a previous state of the virtual database, the request identifying a timeflow of the virtual database and a target point in time associated with the identified timeflow,
rewinding the virtual database by modifying the virtual database to refer to database blocks of a snapshot of the virtual database associated with the timeflow, the snapshot of the virtual database saved before or at the target point in time; and
maintaining a new timeflow for the rewound virtual database, the new timeflow comprising representations of changes caused by subsequent updates to the rewound virtual database.
1. A computer-implemented method for rewinding a virtual database system, the method comprising:
storing, in a database storage system, a plurality of snapshots of a source database, a snapshot representing a point-in-time copy of database blocks of the source database, wherein one or more database blocks are shared across snapshots of the source database;
provisioning a virtual database based on database blocks of a snapshot of the source database;
maintaining, by the database storage system, one or more timeflows for the virtual database, each timeflow representing changes to the virtual database starting from an initial state of the virtual database, the representation of changes comprising snapshots of the virtual database taken at different points in time, wherein one or more database blocks are shared across a plurality of snapshots of the virtual database;
receiving a request to rewind the virtual database to a previous state of the virtual database, the request identifying a timeflow of the virtual database and a target point in time associated with the identified timeflow,
rewinding the virtual database by modifying the virtual database to refer to database blocks of a snapshot of the virtual database associated with the timeflow, the snapshot of the virtual database saved before or at the target point in time; and
maintaining a new timeflow for the rewound virtual database, the new timeflow comprising representations of changes caused by subsequent updates to the rewound virtual database.
11. A computer-implemented method for refreshing a virtual database system to a state of a source database system, the method comprising:
maintaining, by a database storage system, one or more timeflows for a source database, each timeflow comprising representations of changes to the source database starting from an initial state of the source database, the representations comprising snapshots of the source database taken at different points in time, wherein one or more database blocks are shared across a plurality of snapshots of the source database;
provisioning, by the database storage system, a virtual database based on database blocks of a snapshot of the source database;
maintaining one or more timeflows for the virtual database, each timeflow comprising representations of changes to the virtual database starting from an initial state of the virtual database, the representations of changes comprising snapshots of the virtual database taken at different points in time, wherein one or more database blocks are shared across a plurality of snapshots of the virtual database;
receiving a request to refresh the virtual database to a state of the source database, the request identifying a timeflow of the source database and a target point in time of the timeflow;
refreshing the virtual database, comprising, modifying the virtual database to refer to database blocks of a snapshot of the source database associated with the timeflow, the snapshot saved before or at the target point in time; and
maintaining a new timeflow for the refreshed virtual database, the new timeflow comprising representations of changes caused by subsequent updates to the refreshed virtual database.
2. The computer-implemented method of
receiving a second request to further rewind the virtual database to a second state of the virtual database, the second state associated with a second target point in time of a second timeflow of the virtual database,
rewinding the virtual database again by modifying the virtual database to refer to database blocks of a second snapshot of the virtual database associated with the second timeflow, the second snapshot saved before or at the second target point in time.
3. The computer-implemented method of
sending a request to shut down a process associated with the virtual database before rewinding the virtual database; and
sending a request to restart the process after rewinding the virtual database.
4. The computer-implemented method of
5. The computer-implemented method of
receiving a request to update data of a database block of a latest snapshot of a current timeflow of the virtual database; and
responsive to receiving the request to update the data, making a copy of the database block and updating the copy of the database block.
6. The computer-implemented method of
responsive to modifying the virtual database to refer to database blocks of the snapshot of the virtual database, applying one or more transaction logs to the modified virtual database to update the state of the modified virtual database to correspond to the target point in time.
7. The computer-implemented method of
8. The computer-implemented method of
9. The computer-implemented method of
10. The computer-implemented method of
12. The computer-implemented method of
sending a request to shut down a process associated with the virtual database before refreshing the virtual database; and
sending a request to restart the process after refreshing the virtual database.
13. The computer-implemented method of
14. The computer-implemented method of
receiving a request to update data of a database block of a latest snapshot of a current timeflow of the virtual database; and
responsive to receiving the request to update the data, making a copy of the database block and updating the copy of the database block.
15. The computer-implemented method of
responsive to modifying the virtual database to refer to database blocks of the snapshot of the virtual database, applying one or more transaction logs to the modified virtual database to update the state of the modified virtual database to correspond to the target point in time.
16. The computer-implemented method of
17. The computer-implemented method of
18. The computer-implemented method of
19. The computer-implemented method of
|
This application claims the benefit of U.S. Provisional Patent Application No. 61/844,376 filed Jul. 9, 2013, which is incorporated by reference in its entirety. This application is also a continuation of PCT Application No. PCT/US14/44176, filed on Jun. 25, 2014, which claims the benefit of U.S. Provisional Patent Application No. 61/844,376 filed Jul. 9, 2013, each of which is incorporated by reference in its entirety.
1. Field of Art
This invention relates generally to databases and in particular to storage efficient systems for managing databases.
2. Description of Related Art
Databases store the data that is critical to an organization and thus form an important part of an organization's information technology infrastructure. Database software is often complex and requires experts, for example, database administrators for maintaining the database software. Furthermore, databases store large amount of information. As a result, conventional techniques for performing several database operations are very slow. For example, for purposes of development and testing, developers and/or testers need a copy of a database as it existed at a particular point in time. Providing such database may only be possible if an appropriate backup of the database was taken at that point in time. Assuming the appropriate backup was taken, a database administrator is often required to take appropriate steps to restore the database to the required state. Furthermore, the restore operation can take a long time. The overall delay in interacting with the database administrator and getting the database restored can be significant. As a result, developers and/or testers have to wait for the appropriate test/development database to be available. These delays can be costly for the enterprise as various personnel wait for the appropriate environment to become available. Furthermore, delays in the development and testing process cause further delay in fixing of the problem, resulting in loss of productivity. As a result, conventional techniques for providing a copy of a database corresponding to a particular state are often inadequate.
Embodiments perform a rewind operation on a virtual database (VDB) by modifying the state of the VDB to another state of the VDB. A database storage system stores snapshots of a source database representing a point-in-time copies of database blocks of the source database such that one or more database blocks are shared across the snapshots. The database storage system provisions a virtual database based on database blocks of a snapshot of the source database. The database storage system maintains timeflows for the virtual database such that a timeflow comprises representations of changes to the virtual database starting from an initial state. The representations of changes to the virtual database comprise snapshots of the virtual database taken at different points in time such that one or more database blocks are shared across snapshots of the virtual database. The database storage system receives a request to rewind the virtual database to a previous state of the virtual database. The request identifies a timeflow of the virtual database and a target point in time associated with the identified timeflow. The database storage system rewinds the virtual database by modifying the virtual database to refer to database blocks of a snapshot of the virtual database associated with the timeflow. The database storage system maintain a new timeflow for the rewound virtual database, the new timeflow representing changes caused by subsequent updates to the rewound virtual database
Embodiments perform refresh operation on a VDB to modify the state of the VDB to a state of a source database associated with the VDB. The database storage system maintains timeflows for a source database, each timeflow comprising representations of changes to the source database starting from an initial state of the source database. The representations of changes comprise snapshots of the source database taken at different points in time. The database storage system provisions a virtual database based on database blocks of a snapshot of the source database. The database storage system maintains timeflows for the virtual database. The database storage system receives a request to refresh the virtual database to a state of the source database identified by a timeflow of the source database and a target point in time of the timeflow. The database storage system refreshes the virtual database by modifying the virtual database to refer to database blocks of a snapshot of the source database associated with the identified timeflow. The database storage system maintains a new timeflow for the refreshed virtual database representing changes caused by subsequent updates to the refreshed virtual database.
The features and advantages described in this summary and the following detailed description are not all-inclusive. Many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims hereof.
The figures depict various embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
Furthermore, the above-mentioned approach to remote provisioning allows historical changes, updates or modifications to source database blocks (e.g., database blocks in a production database) to be saved across time in a storage and performance efficient manner as VDB snapshots captured at various time points. These historical changes to the source database saved as snapshots of the VDB are optionally replicated across the one or more remote target (e.g., development) environments, allowing a user to revert to or retrieve a copy of the VDB from a previous point in time at the target. This process of reverting to a copy of a VDB at a prior time point is referred to as rolling back or rewinding of the VDB.
Some approaches to rewinding a VDB include creating a new virtual database from the user-specified prior time point (e.g., by accessing the snapshots of the VDB stored in the database storage system) and allowing the user to access and make changes to the new VDB. A problem encountered with this approach to rewinding a VDB is that the creation of a new VDB with a new logical identity (e.g., a new name, new identifier, and new copy of all VDB files and associated configuration files), distinct from the logical identity of the original VDB, results in storage and performance inefficiency.
Accordingly, some embodiments provide a method of rewinding or rolling back a database that does not require creation of a new VDB at the user-specified prior time point, but rather a creation of a new timeflow associated with the original VDB (in the same container or database storage system as the previous VDB timeflow). This approach results in a faster and more storage efficient VDB rewind operation as compared to the approach involving the creation of a new VDB from the rewind point.
Virtual Database Systems
In certain embodiments of the invention, one or more virtual databases are created based on the state of a production database or a virtual database at a particular point in time. The virtual databases can then be individually accessed and modified as desired. A database comprises data stored in a computer for use by computer implemented applications. A database server is a computer program that can interact with the database and provides database services, for example, access to the data stored in the database. Embodiments create a virtual database using storage level snapshots of production databases or clones of production databases instead of a live production database. Virtual database systems are described in U.S. patent application Ser. No. 12/603,541 filed on Oct. 21, 2009, now issued as U.S. Pat. No. 8,150,808, which is incorporated by reference herein in its entirety.
In one embodiment, information from the production database is copied to a storage system at various times, such as periodically. This enables reconstruction of the database files associated with the production database for these different points in time. The information may be managed in the storage system in an efficient manner so that copies of information are made only if necessary. For example, if a portion of the database is unchanged from a version that was previously copied, that unchanged portion need not be copied. A virtual database created for a point in time is stored as a set of files that contain the information of the database as available at that point in time. Each file includes a set of data blocks and the data structures for referring to the data blocks.
A virtual database may be created on a database server by creating the database files for the production database corresponding to the state of the production database at a previous point in time, as required for the database server. The files corresponding to the virtual database are made available to the database server using a file sharing mechanism, which links the virtual database to the appropriate data blocks stored on the storage system. The process of making the virtual database available to a database server is called “provisioning” the virtual database. Multiple VDBs can be provisioned based on the state of the production database at the same point in time. On the other hand, different VDBs can be based on different point in time state of the same production database or different production databases. VDBs may also be based on other VDBs.
The database server on which a virtual database has been provisioned can read from and write to the files stored on the storage system. A database block may be shared between different files, each file associated with a different VDB. In particular, a database block is shared if the corresponding virtual database systems 130 are only reading the information in the database block and not writing to the database block. In one embodiment, the virtual database manager 375 makes copies of the database blocks only if necessary. For example, a particular database block may be shared by multiple VDBs that read from the same database block. But if one of virtual database systems 130 attempts to write to the database block, a separate copy of the database block is made because the writing operation causes that database block to be different for the VDB corresponding to that virtual database systems 130 than it is for the other VDBs.
In response to a request from the administrator system 140, or based on a predefined schedule, the database storage system 100 may send a request 150 for data to a production database system 110. The production database system 110 responds by sending information stored in the production database as a stream of data 160. The database storage system 100 receives the data 160 sent by the production database system 110 and stores the data. The database storage system 100 stores the information efficiently, for example, by keeping versions of database blocks that have changed and reusing database blocks that have not changed.
To create a virtual database, the database storage system 100 creates files that represent the information corresponding to the production database system 110 at a given point in time. The database storage system 100 exposes 170 the corresponding files to a virtual database system 130 using a file sharing system 120. The virtual database system 130 runs a database server that can operate with the files exposed 170 by the database storage system 100. Hence, a virtual copy of the production database is created for the virtual database system 130 for a given point in time in a storage efficient manner.
VDBs can be used in various workflow scenarios.
Information describing changes to data in the source database storage system 100a is transmitted 250 to the target storage database system 100b. These comprise the changed data blocks since the last time the data was transmitted from the source database storage system 100a is transmitted 250 to the target storage database system 100b. The changes to the data in the source database storage system 100a may be transmitted 250 periodically or based on a predetermined schedule. A database system 240b creates virtual databases in the target database storage system 100b. The database system 240b is allowed to read/write 260b to the VDB.
System Architecture
The database storage system 100 retrieves information available in the production database systems 110 and stores it. The information retrieved includes database blocks comprising data stored in the database, transaction log information, metadata information related to the database, information related to users of the database and the like. The information retrieved may also include configuration files associated with the databases. For example, databases may use vendor specific configuration files to specify various configuration parameters including initialization parameters associated with the databases.
The data stored in the storage system data store 390 can be exposed to a virtual database system 130 allowing the virtual database system 130 to treat the data as a copy of the production database stored in the production database system 110. The database storage system 100 includes a point-in-time copy manager 310, a transaction log manager 320, a interface manager 330, a storage allocation manager 365, a file sharing manager 370, a virtual database manager 375, a VDB timeflow manager 325, a VDB rollback manager 335, and a storage system data store 390. In alternative configurations, different and/or additional modules can be included in the database storage system 100.
The point-in-time copy manager 310 interacts with the production database system 110 by sending a request to the vendor interface module 335 to retrieve information representing a point-in-time copy (also referred to as a “PIT copy”) of a database stored in the production DB data store 350. The point-in-time copy manager 310 stores the data obtained from the production database system 110 in the storage system data store 390. The data retrieved by the point-in-time copy manager 310 corresponds to database blocks (or pages) of the database being copied from the production DB data store 350. After a first PIT copy request to retrieve information production DB data store 350, a subsequent PIT copy request may need to retrieve only the data that changed in the database since the previous request. The data collected in the first request can be combined with the data collected in a second request to reconstruct a copy of the database corresponding to a point in time at which the data was retrieved from the production DB data store 350 for the second request.
The transaction log manager 320 sends request to the production database system 110 for retrieving portions of the transaction logs stored in the production database system 110. In some embodiments, the request from the transaction log manager 320 is sent to the vendor interface module 335. The data obtained by the transaction log manager 320 from the vendor interface module 335 is stored in the storage system data store 390. In one embodiment, a request for transaction logs retrieves only the changes in the transaction logs in the production database system 110 since a previous request for the transaction logs was processed. The database blocks retrieved by a point in time copy manager 310 combined with the transaction logs retrieved by the transaction log manager 320 can be used to reconstruct a copy of a database in the production system 110 corresponding to times in the past in between the times as which point-in-time copies are made.
The storage allocation manager 365 provides the functionality of saving data retrieved from the production database system 110. For example, the point-in-time copy manager 310 may call APIs of storage allocation manager to save blocks of data retrieved from the production database system 110. The storage allocation manager 365 keeps track of the various versions of each block of data that may be obtained from the production database system 110. For a given time point, the storage allocation manager 365 can be requested to provide the latest version of a block of data obtained before the given time point. The storage allocation manager 365 can also be used for making copies of blocks of data. If a block of data is copied for read-only purposes, the storage allocation manager 365 allocates only sufficient storage to keep a pointer of reference to the exiting block of data. However, if an attempt to write to the copied block of data is made, the storage allocation manager 365 allocates sufficient storage to make an actual copy of the block of data to avoid updating the original block of data.
The file sharing manager 370 allows files stored in the storage system data store 390 to be shared across computers that may be connected with the database storage system 100 over the network. The file sharing manager 370 uses the file sharing system 120 for sharing files. An example of a system for sharing files is a network file system (NFS). A system for sharing files may utilize fiber channel Storage area networks (FC-SAN) or network attached storage (NAS) or combinations and variations thereof. The system for sharing files may be based on small computer system interface (SCSI) protocol, internet small computer system interface (iSCSI) protocol, fiber channel protocols or other similar and related protocols. In some embodiments, the database storage system 100 may utilize a logical volume manager. Sharing a file stored in the storage system data store 390 using the file sharing manager 370 allows a remote computer, for example, the virtual database systems 130 to access the data in the shared file. A remote system may be able to read and write from/to the file shared by the storage system data store 390. In an embodiment, files are organized in a format emulating a given file system disk layout, such as the file system of WINDOWS operating system called NTFS or the UNIX file system (UFS).
The virtual database manager 375 receives requests for creation of a virtual database for a virtual database system 130. The request for creation of a virtual database may be sent by a database administrator using the administration system 140 and identifies a production database system 110, a virtual database system 130, and includes a past point-in-time corresponding to which a virtual database needs to be created. The virtual database manager 375 creates the necessary files corresponding to the virtual database being created and shares the files with the virtual database system 130. The database administrator for a virtual database system 130 may be different from a database administrator for the production database system 110.
A VDB timeflow manager 325 maintains storage, update, and retrieval of information associated with one or more timeflows corresponding to the virtual database. The VDB timeflow manager 325 stores information describing one or more time points along the timeflows, sequence change numbers and transaction logs associated with updates or modifications to the VDB files, snapshots of the files at a subset of the time points along the timeflows, and the like. According to an embodiment, a representation of a timeflow stores information describing changes performed on a source database or a VDB. In an embodiment, the changes are stored in a storage efficient manner. For example, at various point-in-time copies (or snapshots) of the data of the source database or VDB is stored such that one or more database blocks are shared across the point-in-time copies. In particular, database blocks that do not change are shared across two consecutive point-in-time copies and database blocks that are updated are copied before the updates are made. In an embodiment, the information describing the changes also comprises transaction logs representing changes made in the time duration between capturing of two point-in-time copies.
A VDB rollback manager 335 receives user requests to rewind or rollback a VDB to a user-specified point along a timeflow. The VDB rollback manager 335 interfaces with the VDB timeflow manager 325 to access timeflow information corresponding to the virtual database so as to retrieve a representation of the virtual database at the user-specified point in time.
A virtual database system 130 includes a database server 360 and a VDB system library 380. The database server 360 is similar in functionality to the database server 345 and is a computer program that provides database services and application programming interfaces (APIs) for managing data stored on a data store 350. The data managed by the database server 360 may be stored on the storage system data store 390 that is shared by the database storage system 100 using a file sharing system 120. The VDB system library 380 contains program code for processing requests sent by the database storage system 100. In alternative configurations, different and/or additional modules can be included in a virtual database system 130.
Creation of Point-in-Time Copies (Referred to Herein as Snapshots) of a Virtual Database
Assuming the PIT copy 440 is the last PIT copy made for the configuration shown in
Since the structure 450 illustrated in
As another illustration of creation of point-in-time copies (or snapshots) of a virtual database,
Shown in
Accordingly, as shown in the timeflow in
Subsequently, as shown in the timeflow in
The modifications to the VDB that occur between time T0 and time T1 are reflected in the transaction logs 470-a between time T0 and time T1. As explained above with reference to
Furthermore, along the timeflow shown in
As a result, historical changes, updates or modifications to source database blocks (e.g., database blocks in a production database) can be monitored and saved across time in a storage and performance efficient manner, and these changes replicated across remote target (e.g., development) environments. The timeflow is also used to represent changes made to a virtual database.
Rewind or Rollback of a Virtual Database
In some embodiments, a container stores a representation of a database in the database storage system, for example, a VDB or a dSource representing a source database. A container may include one or more timeflows associated with the VDB or dSource. Accordingly, the container represents snapshots, transaction logs, and metadata associated with a VDB or dSource. In some embodiments, a timeflow represents changes to a data source (e.g., a source database stored in an external system or another VDB) over a period of time (e.g., by storing snapshots and changes in between snapshots using transaction logs). In some embodiments, since a VDB can go back in time (e.g., rewind the VDB to change its state to a previous state of the VDB) or move forward in time (e.g., modify the state of the VDB to a more recent state along a timeflow compared to the state used for rewinding the VDB; alternatively refresh so as to update the VDB state to a more recent state corresponding to a source database), multiple timeflows are stored in the container. Each timeflow is associated with an initial state of the VDB and representations of changes made to the VDB after the VDB state was updated to the initial state.
Illustrated in
Toward this end, in some embodiments, the first approach of rolling back the virtual database includes creating a new VDB container (e.g., container 2), creating a new VDB based on the previous VDB at a nearest prior snapshot (e.g., creating VDB 2 based on VDB 1 at snapshot 2), and creating a new timeflow (e.g., timeflow 2) originating at the rollback point (e.g., starting at TRB). In such embodiments, the new VDB (e.g., VDB 2) has a new logical identity (e.g., a new name, new identifier, and new copy of all VDB files and associated configuration files), distinct from the logical identity of the original VDB (e.g., VDB 1).
In some embodiments, as shown in
Responsive to a user request to rollback or rewind the VDB to a prior time point, as shown in
Toward this end, in some embodiments, the database storage system temporarily shuts down VDB 1 (e.g., suspends user access to VDB 1), creates a new timeflow within the same container (e.g., timeflow 2 within Container 1), points the destination storage to the new timeflow and brings up the same original VDB (e.g., VDB 1) provisioned from the new timeflow (e.g., from timeflow 2).
In other words, the database storage system mounts the same VDB files (e.g., files corresponding to VDB 1) at the same destination as prior to rollback, but pointed to a set of database blocks corresponding to the identified point in time. The container of the VDB includes a new timeflow (i.e., timeflow 2 rather than timeflow 1, which is made the ‘current’ timeflow), and tracks changes to the VDB (e.g., by capturing and maintaining VDB snapshots, such as snapshot 4 at time T3 and snapshot 5 at time T4, and transaction log files between snapshots) along the new timeflow (timeflow 2).
On the other hand, the new timeflow (e.g., timeflow 2 as shown in
Shared ancestor changes on the parent timeflow (e.g., changes or updates on the parent timeflow prior to the rollback point) are visible to the user, and optionally appear to be part of the current timeflow. For example, changes or updates made to the VDB along the parent timeflow prior to the rollback point captured as VDB snapshots and transaction log files prior to the rollback point (e.g., snapshot 1 at time T0 and snapshot 2 at time T1) are visible to the user.
Accordingly, to enable the user to efficiently move back and forward along the VDB to any time point along a current or prior timeflow, the database storage system stores and saves all timeflows (current and prior) as well as all snapshots and transaction log files (of VDB updates and modifications between snapshots) associated with the VDB (e.g., in the same container). Consequently, the database storage system permits the user to rollback or move forward the VDB to any time point along any of the saved timeflows (e.g., by accessing snapshots and, optionally, transaction log files stored in the container, as described with reference to
For example, as illustrated in
At a point in time after time T2 along timeflow 1, responsive to a user request to rollback VDB 1 to rollback point 1 along timeflow 1, the database storage system obtains a representation of VDB 1 at rollback point 1 (e.g., as described with reference to
Similarly, responsive to a user request to rollback to rollback point 2, database storage system creates a new timeflow (timeflow 3) and stores and saves changes and updates to VDB 1 (along with snapshots and transaction logs) along timeflow 3 (originating at rollback point 2). Database storage system 100 stores the current and prior timeflows, snapshots, transaction logs in container 1.
Further, along similar lines, responsive to a user request to rollback VDB 1 to rollback point 3, database storage system 100 creates a new timeflow (timeflow 4) and stores further changes and updates to VDB 1 (along with snapshots and transaction logs) along timeflow 4 (originating at rollback point 3). Database storage system stores the current and prior timeflows (timeflow 1, timeflow 2, timeflow 3, and timeflow 4), snapshots, and transaction logs in container 1.
Although
At the point of VDB rollback, database storage system 100 creates a new timeflow that originates at the rollback point; database storage system resets (e.g., decrements relative to a current value or the value immediately prior to the rollback) the system change number (SCN) to a value marginally greater than its value at the rollback point (e.g., to the next higher integer value). In some embodiments, the SCN value and the real-time values corresponding to time of changes or updates to the VDB are continually incremented and do not reset at the point of VDB rollback.
For example, in the illustration shown in
Database storage system 100 obtains (915) from a user a request to retrieve a representation of the respective VDB at a user-specified time value along the first timeflow (e.g., a representation of VDB 1 at Rollback time TRB along timeflow 1, as shown in
Responsive to the user-request, in some embodiments, database storage system 100 temporarily suspends (920) user-access to the respective VDB. Database storage system 100 makes a determination (925) as to whether the user-specified time value corresponds to a respective snapshot time value (i.e., a point in time at which a point-in-time copy was made) along the first timeflow.
Responsive to a determination that the user-specified time value corresponds to a respective snapshot time value along the first timeflow, database storage system 100 clones (930) a snapshot of the respective VDB at the respective snapshot time value (e.g., VDB 1 snapshot 2 at time TRB, as shown in
Database storage system 100 creates (960) a second timeflow within the respective container (e.g., timeflow 2 within Container 1 as shown in
User interfaces similar to those shown in
Additional Configuration Considerations
Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium) or hardware modules. A hardware module is tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
Similarly, the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or processors or processor-implemented hardware modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors may be distributed across a number of locations.
The one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interfaces (APIs).)
The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
Some portions of this specification are presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory). These algorithms or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing leading to a desired result. In this context, algorithms and operations involve physical manipulation of physical quantities. Typically, but not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transferred, combined, compared, or otherwise manipulated by a machine. It is convenient at times, principally for reasons of common usage, to refer to these signals using words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “numerals,” or the like. These words, however, are merely convenient labels and are to be associated with appropriate physical quantities.
Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or a combination thereof), registers, or other machine components that receive, store, transmit, or display information.
As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. It should be understood that these terms are not intended as synonyms for each other. For example, some embodiments may be described using the term “connected” to indicate that two or more elements are in direct physical or electrical contact with each other. In another example, some embodiments may be described using the term “coupled” to indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still cooperate or interact with each other. The embodiments are not limited in this context.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs for a system and a process for creating virtual databases from point-in-time copies of production databases stored in a storage manager. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the disclosed embodiments are not limited to the precise construction and components disclosed herein. Various modifications, changes and variations, which will be apparent to those skilled in the art, may be made in the arrangement, operation and details of the method and apparatus disclosed herein without departing from the spirit and scope defined in the appended claims.
Stewart, Michael James, Sun, Hubert Ken
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5819292, | Jun 03 1993 | NetApp, Inc | Method for maintaining consistent states of a file system and for creating user-accessible read-only copies of a file system |
6795966, | Feb 15 1998 | VMware, Inc.; VMWARE, INC | Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction |
7107385, | Aug 09 2002 | Network Appliance, Inc | Storage virtualization by layering virtual disk objects on a file system |
7120862, | Dec 01 1998 | Lucent Technologies Inc. | Method and apparatus for persistent access to Web resources using variable time-stamps |
7225204, | Mar 19 2002 | Network Appliance, Inc | System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping |
7334094, | Apr 30 2004 | Network Appliance, Inc | Online clone volume splitting technique |
7334095, | Apr 30 2004 | NetApp, Inc | Writable clone of read-only volume |
7340461, | Apr 10 2002 | EMC IP HOLDING COMPANY LLC | Deactivating virtual devices and rolling backup |
7373364, | Mar 05 2002 | NetApp, Inc | System and method for creating a point-in-time restoration of a database file |
7386695, | Dec 23 2004 | International Business Machines Corporation | Storage system with multiple copy targeting |
7409511, | Apr 30 2004 | NetApp, Inc | Cloning technique for efficiently creating a copy of a volume in a storage system |
7457982, | Apr 11 2003 | NetApp, Inc | Writable virtual disk of read-only snapshot file objects |
7539836, | Apr 18 2005 | NetApp, Inc | Method and system for configuring a data storage object |
7587563, | Jul 11 2006 | Network Appliance, Inc. | Method and system to make a read-only file system appear to be writeable |
7590660, | Mar 21 2006 | Network Appliance, Inc. | Method and system for efficient database cloning |
7631021, | Mar 25 2005 | NetApp, Inc | Apparatus and method for data replication at an intermediate node |
7743035, | Aug 09 2002 | NetApp, Inc. | System and method for restoring a virtual disk from a snapshot |
7757056, | Mar 16 2005 | NetApp, Inc | System and method for efficiently calculating storage required to split a clone volume |
7822758, | Apr 22 2005 | Network Appliance, Inc | Method and apparatus for restoring a data set |
7827366, | Oct 31 2006 | Network Appliance, Inc | Method and system for providing continuous and long-term data protection for a dataset in a storage system |
7856424, | Aug 04 2006 | Apple Computer, Inc; Apple Inc | User interface for backup management |
7877357, | Oct 12 2007 | Network Appliance, Inc | Providing a simulated dynamic image of a file system |
7937547, | Jun 24 2005 | CATALOGIC SOFTWARE, INC | System and method for high performance enterprise data protection |
7941470, | Mar 28 2007 | VMware LLC | Synchronization and customization of a clone computer |
7996636, | Nov 06 2007 | NetApp, Inc. | Uniquely identifying block context signatures in a storage volume hierarchy |
8037032, | Aug 25 2008 | VMware LLC | Managing backups using virtual machines |
8150808, | Oct 21 2009 | Silicon Valley Bank | Virtual database system |
8280858, | Jun 29 2009 | Oracle America, Inc | Storage pool scrubbing with concurrent snapshots |
8311988, | Aug 04 2006 | Apple Computer, Inc | Consistent back up of electronic information |
8532973, | Jun 27 2008 | NetApp, Inc. | Operating a storage server on a virtual machine |
8775663, | Apr 25 2007 | NetApp, Inc. | Data replication network traffic compression |
20020083037, | |||
20080092181, | |||
20080307345, | |||
20090222496, | |||
20110251992, | |||
20110289289, | |||
20120016839, | |||
20120084252, | |||
20140075004, | |||
JP2005532611, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jul 07 2014 | Delphix Corp. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Date | Maintenance Schedule |
Jun 07 2019 | 4 years fee payment window open |
Dec 07 2019 | 6 months grace period start (w surcharge) |
Jun 07 2020 | patent expiry (for year 4) |
Jun 07 2022 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 07 2023 | 8 years fee payment window open |
Dec 07 2023 | 6 months grace period start (w surcharge) |
Jun 07 2024 | patent expiry (for year 8) |
Jun 07 2026 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 07 2027 | 12 years fee payment window open |
Dec 07 2027 | 6 months grace period start (w surcharge) |
Jun 07 2028 | patent expiry (for year 12) |
Jun 07 2030 | 2 years to revive unintentionally abandoned end. (for year 12) |