US5963960A - Method and apparatus for queuing updates in a computer system - Google Patents

Method and apparatus for queuing updates in a computer system Download PDF

Info

Publication number
US5963960A
US5963960A US08/739,353 US73935396A US5963960A US 5963960 A US5963960 A US 5963960A US 73935396 A US73935396 A US 73935396A US 5963960 A US5963960 A US 5963960A
Authority
US
United States
Prior art keywords
data
transaction
update
static memory
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US08/739,353
Inventor
Garret F. Swart
Roger J. Bamford
Boris Klots
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle Corp filed Critical Oracle Corp
Priority to US08/739,353 priority Critical patent/US5963960A/en
Assigned to ORACLE CORPORATION reassignment ORACLE CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BAMFORD, ROGER J., KLOTS, BORIS, SWART, GARRET F.
Application granted granted Critical
Publication of US5963960A publication Critical patent/US5963960A/en
Assigned to ORACLE INTERNATIONAL CORPORATION reassignment ORACLE INTERNATIONAL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ORACLE CORPORATION
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4076Timing circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Definitions

  • the present invention relates to updating data in computer systems, and more specifically, to a method and apparatus for queuing updates to data in a computer system.
  • FIG. 1 shows a database system 100 that uses one approach to performing an update operation.
  • transaction 102 directly updates data stored in static memory 104.
  • transaction 102 modifies data in static memory 104
  • transaction 102 also generates an undo record and stores the undo record in undo log 106 in static memory 104.
  • the undo record generated in response to an update operation contains information that may be used to remove the changes made during the update operation ("undo" the operation).
  • FIG. 2 shows how a read operation may be performed in system 100.
  • data 114 that has been updated is to be read by transaction 102
  • updated data 114 in static memory 104 is copied to a buffer in buffer pool 108 in dynamic memory 110.
  • the buffered data is then accessed by transaction 102.
  • the update techniques used by system 100 have several disadvantages. As mentioned above, writing data to static memory 104 is generally slower than writing data to dynamic memory 110, an the direct-update technique used by system 100 accesses static memory 104 for every update. Furthermore, maintaining undo log 106 in static memory 104 requires an additional write operation to static memory 104 for every update. Thus, two writes to relatively slow static memory are required for each update operation. In systems where multiple transactions can run concurrently, transactions compete for permission to directly update data in the database, which may slow the completion of the transactions.
  • FIG. 3 shows a database system 300 that employs another approach to performing an update operation.
  • transaction 302 performs an update operation by writing update information as a log entry 324 stored in a log table 320 in static memory 304 rather than directly updating data in the database.
  • the log entries 324 in the log table 320 describe the modifications to be made to data in static memory 304.
  • Writing process 330 then performs the updates specified in the log entries 324 by modifying the data in the database.
  • transactions in system 300 generate undo records so that updates may be "undone.”
  • FIG. 4 shows how a read operation may be performed in system 300.
  • the updated data may be copied from the database to dynamic memory 310 and stored as buffered data 312. Buffered data 312 is then accessed by transaction 302.
  • writing process 330 must have finished processing the appropriate log entry 324. If writing process 330 has not yet updated the data transaction 302 has requested, transaction 302 must wait.
  • transaction 302 must wait for writing process 330 to update data in static memory before that updated data can be read. Because writing process 330 processes log entries 324 from many transactions, a transaction may be required to wait while writing process 330 performs updates to data other than the data desired by the transaction.
  • both systems 100 and 300 require transactions to perform two writes to static memory for each update operation.
  • a desirable solution is to queue updates in dynamic memory until the final results of a transaction are determined. All of the modifications can be written to static memory without the possibility that the transaction will change the data again. Because final results are determined before update information is stored in static memory, an undo log is unnecessary.
  • update records that describe modifications to data stored in static memory are stored in a queue in dynamic memory until the transaction causing the update operation completes successfully.
  • update records stored in the update queue are moved to a log table stored in static memory.
  • a transaction causes a read operation
  • the requested data is copied from static memory and stored in dynamic memory.
  • the transaction determines whether it has previously caused an update operation to the data requested. If update records corresponding to the requested data exist, the modifications described by the update records are made to the requested data and the modified data is accessed by the transaction. Otherwise, the data copied from static memory is accessed.
  • FIG. 1 shows a database system that uses one approach to performing an update operation in a computer system.
  • FIG. 2 shows a read operation may be performed in the database system of FIG. 1.
  • FIG. 3 a database system that uses another approach to performing an update operation in a computer system.
  • FIG. 4 shows how a read operation may be performed in the database system of FIG. 3.
  • FIG. 5 a computer system upon which an embodiment of the present invention can be implemented.
  • FIG. 6 is a block diagram of a database system where transactions queue updates in dynamic memory according to one embodiment of the invention.
  • FIG. 7 is a block diagram that illustrates how update operations may be performed according to one embodiment of the present invention.
  • FIG. 8 is a block diagram that illustrates how read operations may be performed according to one embodiment of the present invention.
  • FIG. 9 is a flow diagram that illustrates the steps for queuing updates to data according to one embodiment of the present invention.
  • FIG. 10 is a flow diagram that illustrates the steps for reading data stored in a computer system that queues updates according to one embodiment of the present invention.
  • the present invention is related to storing, in a queue, update records that describe update operations to be performed on data in a database.
  • the update records are maintained in the update queue until the transaction causing the update operation has completed and the update records can be committed to disk. Further, access to the queued update records is allowed for the transaction that causes the update operation so that each transaction can access valid updated values for data that is has previously modified.
  • FIG. 5 shows a computer system 500 upon which the preferred embodiment of the present invention can be implemented.
  • Computer system 500 comprises a bus or other communication means 501 for communicating information, and a processing means 502 coupled with bus 501 for processing information.
  • Computer system 500 further comprises a random access memory (RAM) or other dynamic storage device 504 (referred to as dynamic memory), coupled to bus 501 for storing information and instructions to be executed by processor 502.
  • RAM random access memory
  • Dynamic memory 504 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 502.
  • Computer system 500 also comprises a read only memory (ROM) and/or other static storage device 506 coupled to bus 501 for storing static information and instructions for processor 502.
  • Data storage device 507 is coupled to bus 501 for storing information and instructions.
  • ROM read only memory
  • a data storage device 507 such as a magnetic disk or optical disc and its corresponding drive can be coupled to computer system 500.
  • Computer system 500 can also be coupled via bus 501 to a display device 521, such as a cathode ray tube (CRT), for displaying information to a computer user.
  • An alphanumeric input device 522 is typically coupled to bus 501 for communicating information and command selections to processor 502.
  • cursor control 523 is Another type of user input device, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 502 and for controlling cursor movement on display 521.
  • This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), which allows the device to specify positions in a plane.
  • a stylus or pen can be used to interact with the display.
  • a displayed object on a computer screen can be selected by using a stylus or pen to touch the displayed object.
  • the computer detects the selection by implementing a touch sensitive screen.
  • a light pen and a light sensitive screen can be used for selecting a displayed object.
  • Such devices may thus detect selection position and the selection as a single operation instead of the "point and click," as in a system incorporating a mouse or trackball.
  • Stylus and pen based input devices as well as touch and light sensitive screens are well known in the art.
  • Such a system may also lack a keyboard such as 522 wherein all interface is provided via the stylus as a writing instrument (like a pen) and the written text is interpreted using optical character recognition (OCR) techniques.
  • OCR optical character recognition
  • the present invention is related to the use of computer system 500 to queue update records for update operations until the transaction performing the update operations has completed successfully.
  • queuing update records is performed by computer system 500 in response to processor 502 executing sequences of instructions contained in dynamic memory 504. Execution of the sequences instructions contained in dynamic memory 504 causes processor 502 to place, in a queue, update records that specify changes to be made to data in static memory 507 as will be described hereafter.
  • hard-wired circuitry may be used in place of or in combination with software instructions to implement the present invention.
  • the present invention is not limited to any specific combination of hardware circuitry and software.
  • FIG. 6 is a database system 602 that uses one an approach to queuing updates to data stored in static memory.
  • a transaction 600 indirectly performs updates to data stored in a database 604 by writing update information to update queue 675 in the form of update records.
  • the update records contained in update queue 675 are stored in log table 640 as log entries.
  • Writing process 610 then processes log entries of log table 640 to generate updated data 635.
  • Writing process 610 operates independently of transaction 600 or any other transaction performing update operations. Thus, transaction 600 is not required to access static memory 507 during an update operation.
  • a transaction-consistent state is a state in which the database reflects either all or none of the changes for each transaction other than the transaction doing the reading.
  • the reading transaction should see the changes that it has made.
  • Systems 100 and 300 generate undo records for all operations that modify the database so that the changes may be removed from the database if the transactions are unable to complete successfully.
  • the update records in update queue 675 are not copied to the log table 640 in static memory 507 unless and until transaction 600 that made the updates reflected in the update records has completed successfully. After the update records are copied to log table 640, there is no chance that transaction 600 will not complete successfully. Consequently, there is no need to be able to undo the changes, so no undo records need to be generated.
  • transaction 600 does not have access to the modified values of data that transaction 600 has previously updated. Specifically, the update records generated by transaction 600 are not processed until transaction 600 completes. Thus, if transaction 600 generates an update record to modify data, then attempts to read the data it updated from static memory 507, invalid data will be obtained.
  • a desirable data storage system queues update records until all of the operations of a specific transaction are completed and the final results can be committed to static memory 507.
  • the queued update records should be available to the transaction so that valid data is available.
  • FIG. 7 shows a database system 702 that makes modified data available to transactions that performed the modification according to one embodiment of the present invention.
  • transaction 600 generates update records that specify changes to be made to data stored in database 604. Update records are stored in update queue 675 in dynamic memory 504. When transaction 600 completes, the update records of update queue 675 are stored as log entries in log table 640, which is maintained in static memory 507. Writing process 610 then processes log entries in log table 640 to generate updated data 635.
  • the formats of the update records and the log entries are identical. Maintaining the update records and the log entries with the same format eliminates the need for translation at the completion of each transaction, however, various formats may be used.
  • system 702 includes a hash table that is used in a mechanism which allows transaction 600 to access modified versions of data that has previously been modified.
  • an update record that specifies the update is stored in update queue 675.
  • hash table 750 is modified to indicate that transaction 600 has generated an update record to modify the corresponding data in static memory 507.
  • an identifier of the data to be updated e.g., an object identifier
  • a flag is set in the hash table entry indexed by the identifier to indicate that the data corresponding to the identifier that hashes to the entry has been modified. While the invention shall be described with reference to an embodiment that uses a hash table, any appropriate method may be used to indicate that update records have been generated to modify particular data.
  • FIG. 8 shows how a read operation may be performed in system 702 according to one embodiment of the present invention.
  • Original data 800 stored in static memory 507, is copied to buffer pool 620 (shown as buffered original data 725), when transaction 600 attempts to read the object (table, row, etc.) that corresponds to the original data 800.
  • Transaction 600 uses the identifier of the object as an index to hash table 750 to determine whether any update records in update queue 675 correspond to the object. If the flag at the entry of hash table 750 that is indexed by the identifier indicates that the target object has not previously been modified by transaction 600, then buffered original data 725 is accessed by transaction 600.
  • update records in update queue 675 specify updates to original data 800.
  • Transaction 600 applies the updates specified in the appropriate update records to the buffered original data 725 to generate buffered updated data 730.
  • Buffered updated data 730 reflects the changes specified by the update records applied to original data 800.
  • Transaction 600 then accesses buffered updated data 730.
  • buffered updated data 730 is stored in a cache so that the same set of update records do not have to be applied again to generate the same buffered updated data 730 for all subsequent attempts by transaction 600 to read the same object.
  • Another advantage of retaining the updated data in a cache is that data stored in the cache may be used as intermediate data. Specifically, if the transaction performs a subsequent update on the data then attempts to read the data again, only update records generated after the buffered updated data is generated need to be applied to the updated data in the cache to produce a version of the data that reflects all of the modifications made by the transaction. Thus fewer steps are required to generate later updated data.
  • FIG. 9 is a flow diagram that shows the steps for an update operation according to one embodiment of the present invention.
  • the transaction generates an update record that specifies modifications to be made to corresponding data stored in static memory.
  • the update record is stored in an update queue that is maintained in dynamic memory.
  • the transaction indicates which data stored in static memory corresponds to the update record generated in step 900.
  • a hash table is maintained in dynamic memory to indicate which data have been modified.
  • FIG. 10 is a flow diagram that shows steps for a read operation according to one embodiment of the present invention.
  • requested data is read from static memory and placed in buffer pool 620.
  • transaction 600 determines whether transaction 600 has previously generated any update records corresponding to the requested data. In a system that uses a hash table, this may be performed, for example, by using an identifier associated with the requested data as an index into the hash table. The value stored in the hash table indicated by the identifier will indicate whether the data has been updated. If transaction 600 has not generated any update records corresponding to the version of the requested data that was read from static memory, the requested data is valid and is accessed by transaction 600 in step 1020.
  • transaction 600 has generated update records corresponding to the requested data
  • the modifications specified in the appropriate update records in update queue 675 are applied to the data read from static memory to generate updated data in step 1012. Once the modifications have been applied to the data read from static memory, valid data is obtained and is accessed by transaction 600 in step 1020.
  • Step 1014 is an optional step according to one embodiment of the present invention.
  • data that has been updated according to the modifications specified in update records stored in update queue 675 is stored in a cache memory.
  • the need to apply the same set of update records to the same original data is eliminated for subsequent reads of the same data because the corresponding intermediate results are available from the cache memory.
  • later update records may be applied to intermediate results stored in the cache memory rather than applying all relevant update records to data obtained from static memory.

Abstract

A method for updating and reading data stored in a static memory in a computer system is disclosed. An update queue stores one or more update records in dynamic memory that specify changes made by a transaction to data stored in the static memory. If a transaction requests data for which the transaction has previously generated an update record updated data is generated in dynamic memory, where the updated data reflecting the changes specified by the update records. The updated data is then supplied to the transaction.

Description

FIELD OF THE INVENTION
The present invention relates to updating data in computer systems, and more specifically, to a method and apparatus for queuing updates to data in a computer system.
BACKGROUND OF THE INVENTION
In the field of database design, new and more efficient methods for updating and reading data are constantly being sought. Because dynamic memory is generally faster than static memory, a desirable system minimizes the frequency and duration of accesses to static memory. Accordingly, various approaches have been developed that perform data update operations in dynamic memory. However, performing update operations in dynamic memory creates the possibility that the data in static memory may not be valid because the data in static memory does not reflect a modification that has been made to the corresponding data maintained in dynamic memory.
FIG. 1 shows a database system 100 that uses one approach to performing an update operation. In system 100, transaction 102 directly updates data stored in static memory 104. When the transaction 102 modifies data in static memory 104, transaction 102 also generates an undo record and stores the undo record in undo log 106 in static memory 104. The undo record generated in response to an update operation contains information that may be used to remove the changes made during the update operation ("undo" the operation).
FIG. 2 shows how a read operation may be performed in system 100. When data 114 that has been updated is to be read by transaction 102, updated data 114 in static memory 104 is copied to a buffer in buffer pool 108 in dynamic memory 110. The buffered data is then accessed by transaction 102.
The update techniques used by system 100 have several disadvantages. As mentioned above, writing data to static memory 104 is generally slower than writing data to dynamic memory 110, an the direct-update technique used by system 100 accesses static memory 104 for every update. Furthermore, maintaining undo log 106 in static memory 104 requires an additional write operation to static memory 104 for every update. Thus, two writes to relatively slow static memory are required for each update operation. In systems where multiple transactions can run concurrently, transactions compete for permission to directly update data in the database, which may slow the completion of the transactions.
FIG. 3 shows a database system 300 that employs another approach to performing an update operation. In system 300, transaction 302 performs an update operation by writing update information as a log entry 324 stored in a log table 320 in static memory 304 rather than directly updating data in the database. The log entries 324 in the log table 320 describe the modifications to be made to data in static memory 304. Writing process 330 then performs the updates specified in the log entries 324 by modifying the data in the database. As with system 100, transactions in system 300 generate undo records so that updates may be "undone."
FIG. 4 shows how a read operation may be performed in system 300. After writing process 330 updates the data in the database, the updated data may be copied from the database to dynamic memory 310 and stored as buffered data 312. Buffered data 312 is then accessed by transaction 302. However, before transaction 302 can read data that has been updated, writing process 330 must have finished processing the appropriate log entry 324. If writing process 330 has not yet updated the data transaction 302 has requested, transaction 302 must wait.
Because transactions in system 300 do not update the database themselves, some contention issues that arise in system 100 are avoided. However, two writes to static memory 304 are still required for each update operation. Also, transaction 302 must wait for writing process 330 to update data in static memory before that updated data can be read. Because writing process 330 processes log entries 324 from many transactions, a transaction may be required to wait while writing process 330 performs updates to data other than the data desired by the transaction.
Thus, both systems 100 and 300 require transactions to perform two writes to static memory for each update operation. A desirable solution is to queue updates in dynamic memory until the final results of a transaction are determined. All of the modifications can be written to static memory without the possibility that the transaction will change the data again. Because final results are determined before update information is stored in static memory, an undo log is unnecessary.
SUMMARY OF THE INVENTION
In a computer system update records that describe modifications to data stored in static memory are stored in a queue in dynamic memory until the transaction causing the update operation completes successfully. When the transaction causing the update operation completes successfully, update records stored in the update queue are moved to a log table stored in static memory.
If a transaction causes a read operation, the requested data is copied from static memory and stored in dynamic memory. The transaction then determines whether it has previously caused an update operation to the data requested. If update records corresponding to the requested data exist, the modifications described by the update records are made to the requested data and the modified data is accessed by the transaction. Otherwise, the data copied from static memory is accessed.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 shows a database system that uses one approach to performing an update operation in a computer system.
FIG. 2 shows a read operation may be performed in the database system of FIG. 1.
FIG. 3 a database system that uses another approach to performing an update operation in a computer system.
FIG. 4 shows how a read operation may be performed in the database system of FIG. 3.
FIG. 5 a computer system upon which an embodiment of the present invention can be implemented.
FIG. 6 is a block diagram of a database system where transactions queue updates in dynamic memory according to one embodiment of the invention.
FIG. 7 is a block diagram that illustrates how update operations may be performed according to one embodiment of the present invention.
FIG. 8 is a block diagram that illustrates how read operations may be performed according to one embodiment of the present invention.
FIG. 9 is a flow diagram that illustrates the steps for queuing updates to data according to one embodiment of the present invention.
FIG. 10 is a flow diagram that illustrates the steps for reading data stored in a computer system that queues updates according to one embodiment of the present invention.
DETAILED DESCRIPTION
A method and apparatus for queuing updates to data stored in a computer system is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
The present invention is related to storing, in a queue, update records that describe update operations to be performed on data in a database. The update records are maintained in the update queue until the transaction causing the update operation has completed and the update records can be committed to disk. Further, access to the queued update records is allowed for the transaction that causes the update operation so that each transaction can access valid updated values for data that is has previously modified.
FIG. 5 shows a computer system 500 upon which the preferred embodiment of the present invention can be implemented. Computer system 500 comprises a bus or other communication means 501 for communicating information, and a processing means 502 coupled with bus 501 for processing information. Computer system 500 further comprises a random access memory (RAM) or other dynamic storage device 504 (referred to as dynamic memory), coupled to bus 501 for storing information and instructions to be executed by processor 502. Dynamic memory 504 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 502. Computer system 500 also comprises a read only memory (ROM) and/or other static storage device 506 coupled to bus 501 for storing static information and instructions for processor 502. Data storage device 507 is coupled to bus 501 for storing information and instructions.
A data storage device 507 (referred to as static memory) such as a magnetic disk or optical disc and its corresponding drive can be coupled to computer system 500. Computer system 500 can also be coupled via bus 501 to a display device 521, such as a cathode ray tube (CRT), for displaying information to a computer user. An alphanumeric input device 522, including alphanumeric and other keys, is typically coupled to bus 501 for communicating information and command selections to processor 502. Another type of user input device is cursor control 523, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 502 and for controlling cursor movement on display 521. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), which allows the device to specify positions in a plane.
Alternatively, other input devices such as a stylus or pen can be used to interact with the display. A displayed object on a computer screen can be selected by using a stylus or pen to touch the displayed object. The computer detects the selection by implementing a touch sensitive screen. Similarly, a light pen and a light sensitive screen can be used for selecting a displayed object. Such devices may thus detect selection position and the selection as a single operation instead of the "point and click," as in a system incorporating a mouse or trackball. Stylus and pen based input devices as well as touch and light sensitive screens are well known in the art. Such a system may also lack a keyboard such as 522 wherein all interface is provided via the stylus as a writing instrument (like a pen) and the written text is interpreted using optical character recognition (OCR) techniques.
The present invention is related to the use of computer system 500 to queue update records for update operations until the transaction performing the update operations has completed successfully. According to one embodiment, queuing update records is performed by computer system 500 in response to processor 502 executing sequences of instructions contained in dynamic memory 504. Execution of the sequences instructions contained in dynamic memory 504 causes processor 502 to place, in a queue, update records that specify changes to be made to data in static memory 507 as will be described hereafter. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the present invention. Thus, the present invention is not limited to any specific combination of hardware circuitry and software.
FIG. 6 is a database system 602 that uses one an approach to queuing updates to data stored in static memory. In system 602, a transaction 600 indirectly performs updates to data stored in a database 604 by writing update information to update queue 675 in the form of update records. When transaction 600 completes, the update records contained in update queue 675 are stored in log table 640 as log entries. Writing process 610 then processes log entries of log table 640 to generate updated data 635. Writing process 610 operates independently of transaction 600 or any other transaction performing update operations. Thus, transaction 600 is not required to access static memory 507 during an update operation.
Each transaction should see the database in a transaction-consistent state. A transaction-consistent state is a state in which the database reflects either all or none of the changes for each transaction other than the transaction doing the reading. The reading transaction should see the changes that it has made. Systems 100 and 300 generate undo records for all operations that modify the database so that the changes may be removed from the database if the transactions are unable to complete successfully.
In system 602, the update records in update queue 675 are not copied to the log table 640 in static memory 507 unless and until transaction 600 that made the updates reflected in the update records has completed successfully. After the update records are copied to log table 640, there is no chance that transaction 600 will not complete successfully. Consequently, there is no need to be able to undo the changes, so no undo records need to be generated.
Using the technique described above, transaction 600 does not have access to the modified values of data that transaction 600 has previously updated. Specifically, the update records generated by transaction 600 are not processed until transaction 600 completes. Thus, if transaction 600 generates an update record to modify data, then attempts to read the data it updated from static memory 507, invalid data will be obtained.
Therefore, a desirable data storage system queues update records until all of the operations of a specific transaction are completed and the final results can be committed to static memory 507. In addition, the queued update records should be available to the transaction so that valid data is available.
FIG. 7 shows a database system 702 that makes modified data available to transactions that performed the modification according to one embodiment of the present invention. Just as in system 602, in system 702, transaction 600 generates update records that specify changes to be made to data stored in database 604. Update records are stored in update queue 675 in dynamic memory 504. When transaction 600 completes, the update records of update queue 675 are stored as log entries in log table 640, which is maintained in static memory 507. Writing process 610 then processes log entries in log table 640 to generate updated data 635.
According to one embodiment, the formats of the update records and the log entries are identical. Maintaining the update records and the log entries with the same format eliminates the need for translation at the completion of each transaction, however, various formats may be used.
Unlike system 602, system 702 includes a hash table that is used in a mechanism which allows transaction 600 to access modified versions of data that has previously been modified. When transaction 600 performs an update operation, an update record that specifies the update is stored in update queue 675. In addition, hash table 750 is modified to indicate that transaction 600 has generated an update record to modify the corresponding data in static memory 507. In one embodiment, an identifier of the data to be updated (e.g., an object identifier) is used to index the hash table. A flag is set in the hash table entry indexed by the identifier to indicate that the data corresponding to the identifier that hashes to the entry has been modified. While the invention shall be described with reference to an embodiment that uses a hash table, any appropriate method may be used to indicate that update records have been generated to modify particular data.
FIG. 8 shows how a read operation may be performed in system 702 according to one embodiment of the present invention. Original data 800, stored in static memory 507, is copied to buffer pool 620 (shown as buffered original data 725), when transaction 600 attempts to read the object (table, row, etc.) that corresponds to the original data 800. Transaction 600 uses the identifier of the object as an index to hash table 750 to determine whether any update records in update queue 675 correspond to the object. If the flag at the entry of hash table 750 that is indexed by the identifier indicates that the target object has not previously been modified by transaction 600, then buffered original data 725 is accessed by transaction 600.
If the flag indicates that transaction 600 has previously modified the object, then one or more of the update records in update queue 675 specify updates to original data 800. Transaction 600 applies the updates specified in the appropriate update records to the buffered original data 725 to generate buffered updated data 730. Buffered updated data 730 reflects the changes specified by the update records applied to original data 800. Transaction 600 then accesses buffered updated data 730.
In one embodiment, buffered updated data 730 is stored in a cache so that the same set of update records do not have to be applied again to generate the same buffered updated data 730 for all subsequent attempts by transaction 600 to read the same object. Another advantage of retaining the updated data in a cache is that data stored in the cache may be used as intermediate data. Specifically, if the transaction performs a subsequent update on the data then attempts to read the data again, only update records generated after the buffered updated data is generated need to be applied to the updated data in the cache to produce a version of the data that reflects all of the modifications made by the transaction. Thus fewer steps are required to generate later updated data.
FIG. 9 is a flow diagram that shows the steps for an update operation according to one embodiment of the present invention. In step 900, the transaction generates an update record that specifies modifications to be made to corresponding data stored in static memory. In step 910, the update record is stored in an update queue that is maintained in dynamic memory. In step 920, the transaction indicates which data stored in static memory corresponds to the update record generated in step 900. According to one embodiment, a hash table is maintained in dynamic memory to indicate which data have been modified.
FIG. 10 is a flow diagram that shows steps for a read operation according to one embodiment of the present invention. In step 1000, requested data is read from static memory and placed in buffer pool 620. In step 1010, transaction 600 determines whether transaction 600 has previously generated any update records corresponding to the requested data. In a system that uses a hash table, this may be performed, for example, by using an identifier associated with the requested data as an index into the hash table. The value stored in the hash table indicated by the identifier will indicate whether the data has been updated. If transaction 600 has not generated any update records corresponding to the version of the requested data that was read from static memory, the requested data is valid and is accessed by transaction 600 in step 1020.
If transaction 600 has generated update records corresponding to the requested data, the modifications specified in the appropriate update records in update queue 675 are applied to the data read from static memory to generate updated data in step 1012. Once the modifications have been applied to the data read from static memory, valid data is obtained and is accessed by transaction 600 in step 1020.
Step 1014 is an optional step according to one embodiment of the present invention. In step 1014, data that has been updated according to the modifications specified in update records stored in update queue 675 is stored in a cache memory. By storing the updated version of the data in a cache memory, the need to apply the same set of update records to the same original data is eliminated for subsequent reads of the same data because the corresponding intermediate results are available from the cache memory. In addition, later update records may be applied to intermediate results stored in the cache memory rather than applying all relevant update records to data obtained from static memory.
In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the present invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than restrictive sense.

Claims (19)

What is claimed is:
1. A method for updating and reading data stored in a static memory in a computer system, comprising the steps of:
storing, in an update queue, one or more update records that specify changes made by a transaction to data stored in the static memory;
when the transaction makes a request to be provided data for which the transaction has previously generated an update record, detecting that the data requested by the transaction is data for which the transaction has previously generated an update record;
if the data requested by the transaction is data for which the transaction has previously generated an update record, then responding to the request by applying the update record to produce updated data in dynamic memory; and supplying the updated data to the transaction.
2. The method of claim 1 wherein the step of storing one or more update records further comprises the steps of:
generating an update record that specifies changes to be made by the transaction to particular data stored in static memory; and
setting a value in dynamic memory to indicate that the transaction has specified modifications to said particular data.
3. The method of claim 2 wherein the step of setting a value includes the steps of:
using an identifier associated with said particular data to generate an index into a hash table; and
setting a value in an entry of a hash table that corresponds to said index.
4. The method of claim 1 wherein the step of detecting that the data requested by the transaction is data for which the transaction has previously generated an update record comprises the step of checking a value stored in an entry of a hash table to determine whether data requested by the transaction has been updated by said transaction.
5. The method of claim 1 wherein the step of applying the update record to produce updated data in dynamic memory further comprises the steps of:
reading an original version of the data requested by the transaction from the static memory;
applying modifications specified in update records corresponding to the data requested by the transaction to the original data requested by the transaction to produce the updated data; and
placing the updated data in a buffer in dynamic memory.
6. The method of claim 1 further comprising the steps of:
storing the one or more update records as entries in a log table, maintained in static memory, when the transaction successfully completes;
applying modifications specified in the entries in the log table to corresponding data in static memory such that the corresponding data in static memory reflects the changes specified by the update records.
7. The method of claim 6 wherein the update records in dynamic memory and the entries in the log table stored in static memory have the same format.
8. The method of claim 6 wherein the step of applying is performed by a second process operating independently of a process performing the transaction.
9. The method of claim 1, further including the step of indirectly updating a data item stored in the static memory by generating an update record that reflects the update to the data item without modifying the data item.
10. The method of claim 9, wherein said step of indirectly updating is performed without loading into dynamic memory any copy of said data item and no copy of said data item currently exists in said volatile memory.
11. A computer-readable medium carrying one or more sequences of one or more instructions for updating and reading data stored in a static memory, the one or more sequences of one or more instructions including instructions which, when executed by one or more processors, cause the one or more processors to perform the steps of:
storing, in an update queue, one or more update records that specify changes made by a transaction to data stored in the static memory;
detecting when the transaction requests data for which the transaction has generated an update record;
generating updated data in dynamic memory if the transaction requests data for which the transaction has generated an update record, the updated data reflecting the changes specified by the update records; and
supplying the updated data to the transaction.
12. The computer-readable medium of claim 11 wherein said one or more sequences of instructions further include sequences of instructions which, when executed by the processor, cause the processor to perform the steps of:
generating an update record that specifies changes to be made by the transaction to particular data stored in static memory; and
setting a value in dynamic memory to indicate that the transaction has specified modifications to said particular data.
13. The computer-readable medium of claim 12 wherein said one or more sequences of instructions farther include sequences of instructions which, when executed by the processor, cause the processor to perform the steps of:
using an identifier associated with said particular data to generate an index into a hash table; and
setting a value in an entry of a hash table that corresponds to said index.
14. The computer-readable medium of claim 11 wherein the step of detecting that the data requested by the transaction is data for which the transaction has previously generated an update record comprises the step of checking a value stored in an entry of a hash table to determine whether data requested by the transaction has been updated by said transaction.
15. The computer-readable medium of claim 11 wherein the step of applying the update record to produce updated data in dynamic memory further comprises the steps of:
reading an original version of the data requested by the transaction from the static memory;
applying modifications specified in update records corresponding to the data requested by the transaction to the original data requested by the transaction to produce the updated data; and
placing the updated data in a buffer.
16. The computer-readable medium of claim 11 wherein said one or more sequences of instructions further include sequences of instructions which, when executed by the processor, cause the processor to perform the steps of:
storing the one or more update records as entries in a log table, maintained in static memory, when the transaction successfully completes;
applying modifications specified in the entries in the log table to corresponding data in static memory such that the corresponding data in static memory reflects the changes specified by the update records.
17. The computer-readable medium of claim 11 wherein said one or more sequences of instructions further include sequences of instructions which, when executed by the processor, cause the processor to perform the step of applying entries in the log table with a second process independent of a process causing the transaction.
18. A method for updating data stored in a static memory in a computer system, comprising the steps of:
indirectly updating a data item stored in the static memory by generating an update record that reflects the update to the data item without modifying any copy of said data item; and
storing said update record in an update queue in dynamic memory.
19. The method of claim 18, wherein said step of indirectly updating is performed without loading into dynamic memory any copy of the data item and no copy of said data item currently exists in said volatile memory.
US08/739,353 1996-10-29 1996-10-29 Method and apparatus for queuing updates in a computer system Expired - Lifetime US5963960A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/739,353 US5963960A (en) 1996-10-29 1996-10-29 Method and apparatus for queuing updates in a computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/739,353 US5963960A (en) 1996-10-29 1996-10-29 Method and apparatus for queuing updates in a computer system

Publications (1)

Publication Number Publication Date
US5963960A true US5963960A (en) 1999-10-05

Family

ID=24971896

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/739,353 Expired - Lifetime US5963960A (en) 1996-10-29 1996-10-29 Method and apparatus for queuing updates in a computer system

Country Status (1)

Country Link
US (1) US5963960A (en)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6243825B1 (en) 1998-04-17 2001-06-05 Microsoft Corporation Method and system for transparently failing over a computer name in a server cluster
US6360331B2 (en) 1998-04-17 2002-03-19 Microsoft Corporation Method and system for transparently failing over application configuration information in a server cluster
US6363396B1 (en) * 1998-12-21 2002-03-26 Oracle Corporation Object hashing with incremental changes
US6449734B1 (en) * 1998-04-17 2002-09-10 Microsoft Corporation Method and system for discarding locally committed transactions to ensure consistency in a server cluster
US6529906B1 (en) 2000-01-28 2003-03-04 Oracle Corporation Techniques for DLM optimization with re-mastering events
US20040054644A1 (en) * 2002-09-16 2004-03-18 Oracle Corporation Method and mechanism for implementing in-memory transaction logging records
US6751616B1 (en) 2000-01-28 2004-06-15 Oracle International Corp. Techniques for DLM optimization with re-mapping responsibility for lock management
US20040175000A1 (en) * 2003-03-05 2004-09-09 Germano Caronni Method and apparatus for a transaction-based secure storage file system
US6920454B1 (en) 2000-01-28 2005-07-19 Oracle International Corporation Techniques for DLM optimization with transferring lock information
US20050171927A1 (en) * 2004-01-30 2005-08-04 Chan Wilson W.S. Techniques for multiple window resource remastering among nodes of a cluster
US20050228771A1 (en) * 2001-10-22 2005-10-13 Michael Soemo Partially embedded database and an embedded database manager for a control system
US6976022B2 (en) 2002-09-16 2005-12-13 Oracle International Corporation Method and mechanism for batch processing transaction logging records
US20060200469A1 (en) * 2005-03-02 2006-09-07 Lakshminarayanan Chidambaran Global session identifiers in a multi-node system
US20060212573A1 (en) * 2003-05-09 2006-09-21 Oracle International Corporation Efficient locking of shared data that is accessed for reads in a cluster database
US20060218200A1 (en) * 2005-03-24 2006-09-28 International Business Machines Corporation Application of log records by storage servers
US20060224805A1 (en) * 2005-04-05 2006-10-05 Angelo Pruscino Maintain fairness of resource allocation in a multi-node environment
US7246120B2 (en) 2000-01-28 2007-07-17 Oracle International Corporation Techniques for achieving higher availability of resources during reconfiguration of a cluster
US7792300B1 (en) * 2003-09-30 2010-09-07 Oracle America, Inc. Method and apparatus for re-encrypting data in a transaction-based secure storage system
US7830873B1 (en) * 2007-01-09 2010-11-09 Marvell Israel (M.I.S.L.) Ltd. Implementation of distributed traffic rate limiters
US10459810B2 (en) 2017-07-06 2019-10-29 Oracle International Corporation Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949251A (en) * 1988-07-18 1990-08-14 Digital Equipment Corporation Exactly-once semantics in a TP queuing system
US5255387A (en) * 1990-04-27 1993-10-19 International Business Machines Corporation Method and apparatus for concurrency control of shared data updates and queries
US5276885A (en) * 1991-04-18 1994-01-04 Carnegie Group Single step mapping in topological order of the queued class and instance frames of a semantic network to a static working memory
US5327551A (en) * 1990-03-02 1994-07-05 Fujitsu Limited System using copy of current pointer saved before changing a selectively restoring original data based upon status of updating flag
US5386554A (en) * 1990-05-18 1995-01-31 Kabushiki Kaisha Toshiba Method and apparatus for reducing data locking time by removing a lock when journal data is written into a main memory journal queue
US5455947A (en) * 1992-05-28 1995-10-03 Fujitsu Limited Log file control system in a complex system
US5499367A (en) * 1991-11-15 1996-03-12 Oracle Corporation System for database integrity with multiple logs assigned to client subsets
US5581750A (en) * 1993-03-15 1996-12-03 International Business Machines Corporation System and method for improving data recovery performance
US5586247A (en) * 1994-05-24 1996-12-17 Nec Corporation Data updating system capable of partially recovering data
US5600816A (en) * 1992-12-22 1997-02-04 International Business Machines Corporation System and method for managing data in a cache system for a disk array
US5682513A (en) * 1995-03-31 1997-10-28 International Business Machines Corporation Cache queue entry linking for DASD record updates

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949251A (en) * 1988-07-18 1990-08-14 Digital Equipment Corporation Exactly-once semantics in a TP queuing system
US5327551A (en) * 1990-03-02 1994-07-05 Fujitsu Limited System using copy of current pointer saved before changing a selectively restoring original data based upon status of updating flag
US5255387A (en) * 1990-04-27 1993-10-19 International Business Machines Corporation Method and apparatus for concurrency control of shared data updates and queries
US5386554A (en) * 1990-05-18 1995-01-31 Kabushiki Kaisha Toshiba Method and apparatus for reducing data locking time by removing a lock when journal data is written into a main memory journal queue
US5276885A (en) * 1991-04-18 1994-01-04 Carnegie Group Single step mapping in topological order of the queued class and instance frames of a semantic network to a static working memory
US5499367A (en) * 1991-11-15 1996-03-12 Oracle Corporation System for database integrity with multiple logs assigned to client subsets
US5455947A (en) * 1992-05-28 1995-10-03 Fujitsu Limited Log file control system in a complex system
US5600816A (en) * 1992-12-22 1997-02-04 International Business Machines Corporation System and method for managing data in a cache system for a disk array
US5581750A (en) * 1993-03-15 1996-12-03 International Business Machines Corporation System and method for improving data recovery performance
US5586247A (en) * 1994-05-24 1996-12-17 Nec Corporation Data updating system capable of partially recovering data
US5682513A (en) * 1995-03-31 1997-10-28 International Business Machines Corporation Cache queue entry linking for DASD record updates

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6243825B1 (en) 1998-04-17 2001-06-05 Microsoft Corporation Method and system for transparently failing over a computer name in a server cluster
US6360331B2 (en) 1998-04-17 2002-03-19 Microsoft Corporation Method and system for transparently failing over application configuration information in a server cluster
US6449734B1 (en) * 1998-04-17 2002-09-10 Microsoft Corporation Method and system for discarding locally committed transactions to ensure consistency in a server cluster
US6363396B1 (en) * 1998-12-21 2002-03-26 Oracle Corporation Object hashing with incremental changes
US6920454B1 (en) 2000-01-28 2005-07-19 Oracle International Corporation Techniques for DLM optimization with transferring lock information
US6751616B1 (en) 2000-01-28 2004-06-15 Oracle International Corp. Techniques for DLM optimization with re-mapping responsibility for lock management
US6529906B1 (en) 2000-01-28 2003-03-04 Oracle Corporation Techniques for DLM optimization with re-mastering events
US7246120B2 (en) 2000-01-28 2007-07-17 Oracle International Corporation Techniques for achieving higher availability of resources during reconfiguration of a cluster
US8121994B2 (en) * 2001-10-22 2012-02-21 Siemens Industry, Inc. Partially embedded database and an embedded database manager for a control system
US7644093B2 (en) * 2001-10-22 2010-01-05 Siemens Industry, Inc. Partially embedded database and an embedded database manager for a control system
US20050228771A1 (en) * 2001-10-22 2005-10-13 Michael Soemo Partially embedded database and an embedded database manager for a control system
US20050228820A1 (en) * 2001-10-22 2005-10-13 Michael Soemo Partially embedded database and an embedded database manager for a control system
US6981004B2 (en) 2002-09-16 2005-12-27 Oracle International Corporation Method and mechanism for implementing in-memory transaction logging records
US20040054644A1 (en) * 2002-09-16 2004-03-18 Oracle Corporation Method and mechanism for implementing in-memory transaction logging records
US6976022B2 (en) 2002-09-16 2005-12-13 Oracle International Corporation Method and mechanism for batch processing transaction logging records
US7320076B2 (en) * 2003-03-05 2008-01-15 Sun Microsystems, Inc. Method and apparatus for a transaction-based secure storage file system
US20040175000A1 (en) * 2003-03-05 2004-09-09 Germano Caronni Method and apparatus for a transaction-based secure storage file system
US20060212573A1 (en) * 2003-05-09 2006-09-21 Oracle International Corporation Efficient locking of shared data that is accessed for reads in a cluster database
US7447786B2 (en) 2003-05-09 2008-11-04 Oracle International Corporation Efficient locking of shared data that is accessed for reads in a cluster database
US7792300B1 (en) * 2003-09-30 2010-09-07 Oracle America, Inc. Method and apparatus for re-encrypting data in a transaction-based secure storage system
US20050171927A1 (en) * 2004-01-30 2005-08-04 Chan Wilson W.S. Techniques for multiple window resource remastering among nodes of a cluster
US7379952B2 (en) 2004-01-30 2008-05-27 Oracle International Corporation Techniques for multiple window resource remastering among nodes of a cluster
US20060200469A1 (en) * 2005-03-02 2006-09-07 Lakshminarayanan Chidambaran Global session identifiers in a multi-node system
US20060218200A1 (en) * 2005-03-24 2006-09-28 International Business Machines Corporation Application of log records by storage servers
US7209990B2 (en) * 2005-04-05 2007-04-24 Oracle International Corporation Maintain fairness of resource allocation in a multi-node environment
US20060224805A1 (en) * 2005-04-05 2006-10-05 Angelo Pruscino Maintain fairness of resource allocation in a multi-node environment
US7830873B1 (en) * 2007-01-09 2010-11-09 Marvell Israel (M.I.S.L.) Ltd. Implementation of distributed traffic rate limiters
US10459810B2 (en) 2017-07-06 2019-10-29 Oracle International Corporation Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery

Similar Documents

Publication Publication Date Title
US5963960A (en) Method and apparatus for queuing updates in a computer system
US6292808B1 (en) Method and apparatus for reapplying changes to a database
US5806076A (en) Tracking dependencies between transactions in a database
US5832521A (en) Method and apparatus for performing consistent reads in multiple-server environments
US5850507A (en) Method and apparatus for improved transaction recovery
EP1040433B1 (en) A fine-grained consistency mechanism for optimistic concurrency control using lock groups
US5664176A (en) Moving write lock for replicated objects
US5903898A (en) Method and apparatus for user selectable logging
US5991768A (en) Finer grained quiescence for data replication
US5956731A (en) Sharing snapshots for consistent reads
US5930794A (en) Database repository with deferred transactions
US5778442A (en) Method and apparatus for buffering data in a computer system
US5873101A (en) Database backup/restore and bulk data transfer
US6557082B1 (en) Method and apparatus for ensuring cache coherency for spawned dependent transactions in a multi-system environment with shared data storage devices
US20090106248A1 (en) Optimistic locking method and system for committing transactions on a file system
US20040186968A1 (en) Method, system, and program for establishing and maintaining a point-in-time copy
JPH04229355A (en) Data access method and data processing system
JPH0619765A (en) Method and system for file management in computer system
US20060064408A1 (en) Program, method and apparatus for database management, and recording medium
US5956713A (en) Techniques for reducing the number of snapshots of a database
US5293618A (en) Method for controlling access to a shared file and apparatus therefor
CN109933606B (en) Database modification method, device, equipment and storage medium
US20030204504A1 (en) Access concurrency for cached authorization information in relational database systems
US5873098A (en) Dynamic snapshot set adjustment
US20030204691A1 (en) Method, apparatus, and program product for facilitating serialization of input/output requests to a logical volume allowing nonserialized input/output requests

Legal Events

Date Code Title Description
AS Assignment

Owner name: ORACLE CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SWART, GARRET F.;BAMFORD, ROGER J.;KLOTS, BORIS;REEL/FRAME:008295/0955;SIGNING DATES FROM 19961007 TO 19961025

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

CC Certificate of correction
AS Assignment

Owner name: ORACLE INTERNATIONAL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ORACLE CORPORATION;REEL/FRAME:014662/0001

Effective date: 20031028

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12