|Publication number||US5668991 A|
|Application number||US 08/385,912|
|Publication date||Sep 16, 1997|
|Filing date||Feb 9, 1995|
|Priority date||Mar 31, 1994|
|Publication number||08385912, 385912, US 5668991 A, US 5668991A, US-A-5668991, US5668991 A, US5668991A|
|Inventors||Stephen Dunn, Peter Kelbie|
|Original Assignee||International Computers Limited|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (5), Referenced by (68), Classifications (17), Legal Events (4)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This invention relates to database management systems. More specifically, the invention is concerned with ensuring integrity of a database.
It is well known to perform periodic dumps of a database, and to maintain a journal file, recording changes that have been made to the database since the last dump. Then, if a failure occurs, causing loss of information in the database, the database can be reconstructed by taking the last dump, and rolling it forward by applying the changes in the journal file.
A problem with this is that rolling the database forward can take a long time. Moreover, it usually has to be done when time is at a premium, when the recovery is taking place after a crash.
The object of the present invention is to provide a way of overcoming this problem.
According to the invention there is provided a database system comprising:
(a) a database file comprising a plurality of database records, each record having a database identifier;
(b) means for updating said database file, and forming a journal file comprising a sequence of after-image records, each having a database identifier indicating which database record it relates to; and
(c) journal filtering means for processing the journal file to sort the after-image records into order of their database identifiers and to remove all but the latest after-image record relating to each database record.
As will be shown, the journal filtering mechanism streamlines the journal, allowing roll-forward to be performed much more quickly than by using an unfiltered journal.
Another problem which arises in database systems is that of performing integrity checks on the database. Conventionally, while an integrity check is performed, it is necessary to prevent any updating of the database so as to ensure that the integrity check is performed on a consistent image of the database. However, this means that the database system is effectively out of action while the integrity check is being performed.
According to a preferred feature of the present invention, integrity checking is performed using a database dump and a filtered journal file. Thus, the database file may still be updated while the integrity check is being performed.
FIG. 1 is a block diagram showing a database system embodying the invention.
FIG. 2 and 3 are flowcharts showing a journal filter forming part of the database system.
One embodiment of the invention will now be described by way of example with reference to the accompanying drawings.
Referring to FIG. 1, the database system includes a database program 10, which maintains a database file 11. The database file consists of a number of pages, each of which contains a number of records. Each record has a database key, which uniquely identifies that record. The structure of the database program and the database file form no part of the present invention, and so will not be described in detail herein.
Whenever the database program completes a transaction which updates a page of the database file, it writes a block to a sequential journal file 12. The block contains a block header, a bit map record, and one or more after-image records. The bit map record contains the page number, and a string of bits indicating which records within the page have been updated: bit n is set if record n has been updated. An after-image record is included for each database record that has been updated in the page. Each after image record contains the database key that identifies the database record, and the new value of the database record. It will be appreciated that, over a period of time, several updates may be made to a given database record. Hence, the journal file will, in general, contain a number of successive after images for each updated record. However, the final state of the database depends only on the latest update to each record.
The system also uses an archived journal file 13. The way in which this archived journal file is updated and used will be described below.
At regular intervals, the database program creates a dump file 14, containing a copy of the current state of the database file 11. At the same time, a new, empty journal file 12 is created, to record incremental updates subsequent to the dump. Once a successful dump has been taken, any existing archived journal 13 becomes redundant and is deleted.
At regular intervals, between dumps, the current journal file 12 is replaced by a new, empty journal file. The replaced journal file is merged into the existing archived journal 13 (if any) by means of a merge procedure 15, and the merged journal is processed, by means of a journal filter program 16, to produce a filtered journal file. This filtered journal is then archived, replacing the existing archived journal 13. As will be described, the journal filter program 16 streamlines the journal file, eliminating any after-image records that have been superseded, and hence the filtered journal file 13 contains only the latest after image for each record. Moreover, the records in the filtered journal file are stored in increasing order of database key. This processing of the journal file may be performed at any convenient time, when the host system is not busy.
In the event of a database file failure, the database system performs a recovery procedure as follows. First, the current journal file 12 is replaced by a new, empty journal file. The replaced journal file is then merged, filtered and archived as described above. The dump file 14 is then accessed. A roll forward program 17 is then run, to apply each record of the archived journal 13 to the dump file 14, so as to recreate the database file 11. It will be appreciated that, because the archived journal has been streamlined by the journal filter program, this roll forward process can be performed much more quickly than by using unfiltered journals.
An integrity check can be performed on the database at any time, as follows. First, a dump is performed, to create a new dump file 14. When the dump is successfully completed, the current journal 12 is replaced, merged, filtered and archived as described above. This archived journal file 13 now contains any updates made to the database while the dump was being taken. An integrity check program 18 is then run. The integrity check program takes each record from the dump file in turn, applies any updates to it from the archived journal file, and tests the integrity of the updated record.
It can be seen that the integrity check is performed using the dump file and filtered journal file, rather than by using the actual database file. The advantage of this is that it allows the integrity check to be performed off-line, while the database program 10 is still running and updating the database file 11. It is not necessary to suspend the normal operation of the database system while the integrity check is performed. The use of the dump and filtered journal files to perform an integrity check is feasible because of the streamlining of the filtered journal file.
The journal filter program 16 comprises an input procedure, a sort procedure, and an output procedure.
The input procedure is shown in FIG. 2. This procedure comprises an outer loop (boxes 20,21) which selects each block in the journal file in turn, and an inner loop (boxes 22,23) which gets each record in the selected block in turn. For each record, the procedure tests whether the record is a bitmap (box 24), or an after image (box 25). If so, the record is passed to the sort procedure (box 26). Otherwise, the record is discarded (box 27).
When all the blocks have been processed (box 28), the input procedure checks whether there are any unfinished transactions being performed by the database program. The procedure creates a dummy record with database key equal to 0 for each unfinished transaction, and passes it to the sort procedure.
Finally (box 29), the input procedure creates an end of file marker record, and passes it to the sort procedure.
The sort procedure sorts the records passed to it into ascending order of database key. It will be seen that the sort procedure groups together all the dummy records (with database key equal to 0) at the top of the sorted file. The sort also groups together all after-image records relating to each particular database key. The after-image records within each such group are arranged in order of the time they were written, starting with the oldest. The sort also groups together all bit map records relating to each particular page. Each group of bit map records precedes the after-image records to which they relate. The end of file marker will be at the end of the sorted file. The sort procedure is conventional, and so will not be described in detail herein.
The output procedure is shown in FIG. 3. This procedure receives the sorted records from the sort procedure. First (box 30), it creates a table of unfinished transactions, using the records with database key equal to 0. It then performs a loop (boxes 31,32) in which it gets each subsequent record in the file. If the record is for an unfinished transaction (box 33), that record is discarded (box 34). If the record is a bitmap (box 35), then a bitmap consolidation (box 36) is performed. This involves scanning the following records, looking for other bitmaps relating to the same page, and consolidating all the bitmaps relating to this page, by performing a bit-by-bit logical OR function. This forms a single consolidated bit map record for the page. If the record is not an unfinished transaction or a bit map, the procedure then checks whether the database key for the current record is the same as for the preceding record (box 37). If so, the preceding record is discarded (box 38). Otherwise (box 39), the preceding record is written out into the filtered journal file, and the current record is saved (i.e. it now becomes the "previous record").
When all the records have been processed (box 40), the final record is written to the filtered journal file.
It should be noted that the filtering of a merged journal, formed by merging the current journal with a previously filtered archived journal, takes substantially less time than would be required if the archived journal had not been filtered, since part of the work of filtering has already been done.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US4752910 *||Jun 22, 1987||Jun 21, 1988||Prime Computer, Inc.||Method and apparatus for continuous after-imaging|
|US4819156 *||Jun 13, 1986||Apr 4, 1989||International Business Machines Corporation||Database index journaling for enhanced recovery|
|US5043871 *||Mar 26, 1987||Aug 27, 1991||Hitachi, Ltd.||Method and apparatus for database update/recovery|
|US5347653 *||Jun 28, 1991||Sep 13, 1994||Digital Equipment Corporation||System for reconstructing prior versions of indexes using records indicating changes between successive versions of the indexes|
|US5379398 *||Apr 20, 1992||Jan 3, 1995||International Business Machines Corporation||Method and system for concurrent access during backup copying of data|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US5794254 *||Dec 3, 1996||Aug 11, 1998||Fairbanks Systems Group||Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets|
|US6014676 *||May 16, 1998||Jan 11, 2000||Fairbanks Systems Group||System and method for backing up computer files over a wide area computer network|
|US6023707 *||Dec 30, 1997||Feb 8, 2000||Fujitsu Limited||On-line database duplication with incorporation of concurrent database updates|
|US6038665 *||Jun 19, 1998||Mar 14, 2000||Fairbanks Systems Group||System and method for backing up computer files over a wide area computer network|
|US6049874 *||Mar 12, 1998||Apr 11, 2000||Fairbanks Systems Group||System and method for backing up computer files over a wide area computer network|
|US6397307 *||Feb 23, 1999||May 28, 2002||Legato Systems, Inc.||Method and system for mirroring and archiving mass storage|
|US6535870||Feb 9, 2000||Mar 18, 2003||International Business Machines Corporation||Method of estimating an amount of changed data over plurality of intervals of time measurements|
|US6609183||May 28, 2002||Aug 19, 2003||Legato Systems, Inc.||Method and system for mirroring and archiving mass storage|
|US6836820||Feb 25, 2002||Dec 28, 2004||Network Appliance, Inc.||Flexible disabling of disk sets|
|US6976189||Mar 22, 2002||Dec 13, 2005||Network Appliance, Inc.||Persistent context-based behavior injection or testing of a computing system|
|US6981177 *||Mar 25, 2003||Dec 27, 2005||Computer Associates Think, Inc.||Method and system for disaster recovery|
|US6983352 *||Jun 19, 2003||Jan 3, 2006||International Business Machines Corporation||System and method for point in time backups|
|US7000145 *||Jun 18, 2003||Feb 14, 2006||International Business Machines Corporation||Method, system, and program for reverse restore of an incremental virtual copy|
|US7007043 *||Dec 23, 2002||Feb 28, 2006||Storage Technology Corporation||Storage backup system that creates mountable representations of past contents of storage volumes|
|US7007044 *||Dec 26, 2002||Feb 28, 2006||Storage Technology Corporation||Storage backup system for backing up data written to a primary storage device to multiple virtual mirrors using a reconciliation process that reflects the changing state of the primary storage device over time|
|US7054827 *||Sep 24, 1997||May 30, 2006||Unisys Corporation||Method and apparatus for validating a survey database|
|US7107418||Aug 14, 2003||Sep 12, 2006||Emc Corporation||Method and system for mirroring and archiving mass storage|
|US7328306||Dec 20, 2004||Feb 5, 2008||Network Appliance, Inc.||Flexible disabling of disk sets|
|US7403956 *||Aug 29, 2003||Jul 22, 2008||Microsoft Corporation||Relational schema format|
|US7430740||Apr 12, 2002||Sep 30, 2008||724 Solutions Software, Inc||Process group resource manager|
|US7447710||Aug 9, 2004||Nov 4, 2008||Sybase, Inc.||Database system providing self-tuned parallel database recovery|
|US7577806||Sep 23, 2003||Aug 18, 2009||Symantec Operating Corporation||Systems and methods for time dependent data storage and recovery|
|US7577807||Aug 24, 2004||Aug 18, 2009||Symantec Operating Corporation||Methods and devices for restoring a portion of a data store|
|US7584337||Feb 13, 2004||Sep 1, 2009||Symantec Operating Corporation||Method and system for obtaining data stored in a data store|
|US7591019||Apr 1, 2009||Sep 15, 2009||Kaspersky Lab, Zao||Method and system for optimization of anti-virus scan|
|US7631120||Aug 24, 2004||Dec 8, 2009||Symantec Operating Corporation||Methods and apparatus for optimally selecting a storage buffer for the storage of data|
|US7660953 *||Jul 18, 2006||Feb 9, 2010||Emc Corporation||Method and system for mirroring and archiving mass storage|
|US7685155||Mar 23, 2004||Mar 23, 2010||Microsoft Corporation||System and method of providing and utilizing an object schema to facilitate mapping between disparate domains|
|US7725667||Mar 12, 2004||May 25, 2010||Symantec Operating Corporation||Method for identifying the time at which data was written to a data store|
|US7725760||Aug 24, 2004||May 25, 2010||Symantec Operating Corporation||Data storage system|
|US7730222||Aug 24, 2004||Jun 1, 2010||Symantec Operating System||Processing storage-related I/O requests using binary tree data structures|
|US7739223||Aug 29, 2003||Jun 15, 2010||Microsoft Corporation||Mapping architecture for arbitrary data models|
|US7813728||May 28, 2004||Oct 12, 2010||Heung Ryong Kim||Method of auditing alarms in a CDMA-2000 system|
|US7827362||Aug 24, 2004||Nov 2, 2010||Symantec Corporation||Systems, apparatus, and methods for processing I/O requests|
|US7831864||May 19, 2008||Nov 9, 2010||Network Appliance, Inc.||Persistent context-based behavior injection or testing of a computing system|
|US7882113||Mar 28, 2003||Feb 1, 2011||International Business Machines Corporation||Method, apparatus, and system for formatting time data to improve processing in a sort utility|
|US7904428 *||Mar 8, 2011||Symantec Corporation||Methods and apparatus for recording write requests directed to a data store|
|US7912862||Jul 21, 2008||Mar 22, 2011||Microsoft Corporation||Relational schema format|
|US7953972||Jul 16, 2007||May 31, 2011||Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd.||System and method for managing files|
|US7991748||Feb 17, 2004||Aug 2, 2011||Symantec Corporation||Virtual data store creation and use|
|US8051485||Aug 27, 2009||Nov 1, 2011||Kaspersky Lab, Zao||System and method for optimization of anti-virus scan|
|US8370405||Jan 19, 2009||Feb 5, 2013||International Business Machines Corporation||Variable-length record, corruption recovery apparatus, system, and method|
|US8473478||Sep 21, 2001||Jun 25, 2013||Warren Roach||Automatic real-time file management method and apparatus|
|US8521973||Sep 28, 2007||Aug 27, 2013||Symantec Operating Corporation||Systems and methods for providing a modification history for a location within a data store|
|US8756202||Apr 14, 2008||Jun 17, 2014||Ca, Inc.||System and method for logstream archival|
|US9015127 *||Dec 27, 2006||Apr 21, 2015||Oracle America, Inc.||File archiving system and method|
|US9058343 *||Oct 11, 2013||Jun 16, 2015||Ebay Inc.||Backward compatibility in database schemas|
|US20020056031 *||Dec 20, 2001||May 9, 2002||Storactive, Inc.||Systems and methods for electronic data storage management|
|US20030200480 *||Mar 25, 2003||Oct 23, 2003||Computer Associates Think, Inc.||Method and system for disaster recovery|
|US20040034752 *||Aug 14, 2003||Feb 19, 2004||Ohran Richard S.||Method and system for mirroring and archiving mass storage|
|US20040133575 *||Dec 23, 2002||Jul 8, 2004||Storage Technology Corporation||Scheduled creation of point-in-time views|
|US20040260895 *||Jun 18, 2003||Dec 23, 2004||Werner Sam Clark||Method, system, and program for reverse restore of an incremental virtual copy|
|US20050050068 *||Aug 29, 2003||Mar 3, 2005||Alexander Vaschillo||Mapping architecture for arbitrary data models|
|US20050050069 *||Aug 29, 2003||Mar 3, 2005||Alexander Vaschillo||Relational schema format|
|US20050131853 *||Aug 9, 2004||Jun 16, 2005||Sybase, Inc.||Database System Providing Self-Tuned Parallel Database Recovery|
|US20050216501 *||Mar 23, 2004||Sep 29, 2005||Ilker Cengiz||System and method of providing and utilizing an object schema to facilitate mapping between disparate domains|
|US20060136685 *||Dec 17, 2004||Jun 22, 2006||Sanrad Ltd.||Method and system to maintain data consistency over an internet small computer system interface (iSCSI) network|
|US20060259721 *||Jul 18, 2006||Nov 16, 2006||Emc Corporation||Method and system for mirroring and archiving mass storage|
|US20070041354 *||May 28, 2004||Feb 22, 2007||Kim Heung R||Method of auditing alarms in a cdma2000 system|
|US20080162598 *||Dec 27, 2006||Jul 3, 2008||Sun Microsystems, Inc.||File archiving system and method|
|US20080183771 *||Jul 16, 2007||Jul 31, 2008||Hong Fu Precision Industry (Shenzhen) Co., Ltd.||System and method for managing files|
|US20130179625 *||Jan 11, 2012||Jul 11, 2013||Dougal Stanton||Security System Storage of Persistent Data|
|US20140040321 *||Oct 11, 2013||Feb 6, 2014||Ebay Inc.||Backward compatibility in database schemas|
|EP1361515A1 *||May 6, 2002||Nov 12, 2003||Siemens Aktiengesellschaft||Method and system for database backup|
|EP1380948A2 *||Apr 11, 2003||Jan 14, 2004||724 Solutions Software Inc.||Process group resource manager|
|WO2002025473A1 *||Sep 21, 2001||Mar 28, 2002||Integrity Pc Innovations Inc||An automatic real-time file management method and apparatus|
|WO2002029573A2 *||Aug 17, 2001||Apr 11, 2002||Network Appliance Inc||Instant snapshot|
|WO2004107615A1 *||May 28, 2004||Dec 9, 2004||Heung Ryong Kim||Method of auditing alarms in a cdma2000 system|
|U.S. Classification||1/1, 714/E11.13, 707/E17.007, 707/999.202, 707/999.201, 707/999.2, 707/999.007|
|International Classification||G06F17/30, G06F11/14|
|Cooperative Classification||G06F11/1471, G06F2201/80, G06F17/30371, Y10S707/99953, Y10S707/99952, Y10S707/99937|
|European Classification||G06F11/14A12, G06F17/30C|
|Feb 9, 1995||AS||Assignment|
Owner name: INTERNATIONAL COMPUTERS LIMITED
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DUNN, STEPHEN;KELBIE, PETER;REEL/FRAME:007361/0440;SIGNING DATES FROM 19950113 TO 19950117
|Feb 20, 2001||FPAY||Fee payment|
Year of fee payment: 4
|Feb 15, 2005||FPAY||Fee payment|
Year of fee payment: 8
|Mar 12, 2009||FPAY||Fee payment|
Year of fee payment: 12