JP2008176687A - Transaction processing of database - Google Patents

Transaction processing of database Download PDF

Info

Publication number
JP2008176687A
JP2008176687A JP2007011258A JP2007011258A JP2008176687A JP 2008176687 A JP2008176687 A JP 2008176687A JP 2007011258 A JP2007011258 A JP 2007011258A JP 2007011258 A JP2007011258 A JP 2007011258A JP 2008176687 A JP2008176687 A JP 2008176687A
Authority
JP
Japan
Prior art keywords
record
transaction
log
commit
value
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.)
Pending
Application number
JP2007011258A
Other languages
Japanese (ja)
Inventor
Tomohiro Iizuka
友裕 飯塚
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to JP2007011258A priority Critical patent/JP2008176687A/en
Publication of JP2008176687A publication Critical patent/JP2008176687A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To allow high separability when performing distributed processing of transaction. <P>SOLUTION: A commit log 63 backs up values before commission of records operated in transactions committed in the past. A transaction operation part 41 comprising a CPU is accessible to the commit log 63 in a RAM and is accessible to a storage 2, and uses values of records in the commit log 63 in preference to those in the storage 2 to execute the transaction when reading a record. <P>COPYRIGHT: (C)2008,JPO&INPIT

Description

本発明は、データベースのトランザクション処理に関するものである。   The present invention relates to database transaction processing.

トランザクションとは、データベースに対して1作業単位として実行される一連の操作である。トランザクションが実行される場合には、原子性、一貫性、分離性および持続性が確保される必要がある。   A transaction is a series of operations executed as a unit of work for a database. When transactions are executed, atomicity, consistency, isolation and persistence need to be ensured.

原子性とは、一連の操作がすべて実行されるか、全く実行されないかのいずれかのみが許されることをいう。   Atomicity means that only a series of operations can be performed or not performed at all.

一貫性とは、トランザクション完了時に、すべてのデータの整合が維持されることをいう。   Consistency means that all data is kept consistent at the completion of a transaction.

分離性とは、複数のトランザクションがそれぞれ独立してデータを取り扱うことをいう。分離性には、シリアライザブル、反復可能読み込みなどといった複数の分離レベルが存在する。   Separation means that a plurality of transactions handle data independently. There are multiple levels of isolation such as serializable and repeatable reads.

持続性とは、トランザクションの結果がデータベース内で維持されることをいう。   Persistence means that the outcome of a transaction is maintained in the database.

トランザクションを実行する装置としては、例えば特許文献1に記載のものがある。この装置では、トランザクション実行時、書き込みはトランザクションログに対して行われ、読み込みはデータベースから行われる。トランザクションログは、データベースのあるディスクストレージに書き込まれる。そして、コミット時に、トランザクションログの内容がデータベースへ反映される。コミット時、読み込みは、トランザクションログから行われる。   As an apparatus for executing a transaction, for example, there is one described in Patent Document 1. In this apparatus, when a transaction is executed, writing is performed on the transaction log, and reading is performed from the database. Transaction logs are written to disk storage with a database. At commit time, the contents of the transaction log are reflected in the database. At commit time, reading is done from the transaction log.

米国特許第6418455号US Pat. No. 6,418,455

上記のシステムでは、ある程度の分離性は維持されるものの、あるトランザクションがコミットすると、データベース内で、そのトランザクションにより操作されたレコードの値が変わってしまう。そのため、上記のシステムでは、高度な分離性を維持することが困難である。   In the above system, although a certain degree of separation is maintained, when a transaction is committed, the value of the record operated by the transaction in the database changes. Therefore, it is difficult to maintain a high degree of separation in the above system.

例えば、同時に開始された2つのトランザクションの一方がコミットされた後に、他方のトランザクションでレコードの読み出しが行われた場合、そのレコードはトランザクション開始時の値を維持していない可能性がある。   For example, when a record is read in the other transaction after one of the two transactions started at the same time is committed, the record may not maintain the value at the start of the transaction.

また、例えば、同時に開始された2つのトランザクションのうちの、トランザクション#1がコミットされる前にトランザクション#2でレコードの読み出しが行われ、トランザクション#1がコミットされた後にトランザクション#2で同じレコードが再度読み出された場合、異なる値が読み出される可能性がある。   Also, for example, of two transactions started at the same time, a record is read in transaction # 2 before transaction # 1 is committed, and the same record is found in transaction # 2 after transaction # 1 is committed. If read again, different values may be read.

本発明は、トランザクションを分散処理する際に高度な分離性を可能とすることを目的とする。   An object of the present invention is to enable a high degree of separation when transactions are distributedly processed.

上記の課題を解決するために、本発明では以下のようにした。   In order to solve the above problems, the present invention is configured as follows.

本発明に係るデータ処理装置の1つは、コンピュータ内でトランザクションを実行する処理装置と、コンピュータ内で処理装置に接続されストレージにアクセスするアクセス手段と、コンピュータ内で処理装置に接続されたメモリとを備える。そして、メモリは、コミットログを格納する。コミットログは、過去にコミットしたトランザクションにおいて操作されたレコードのコミット前の値をバックアップするデータである。また、処理装置は、メモリにアクセス可能であり、かつアクセス手段を介してストレージにアクセス可能であって、あるレコードを読み出す場合に、ストレージにおけるレコードの値よりコミットログにおけるレコードの値を優先して使用しトランザクションを実行する。   One of data processing apparatuses according to the present invention includes a processing apparatus that executes a transaction in a computer, an access means that is connected to the processing apparatus and accesses a storage in the computer, and a memory that is connected to the processing apparatus in the computer. Is provided. The memory stores a commit log. The commit log is data that backs up a value before committing of a record operated in a transaction committed in the past. In addition, the processing device can access the memory and access the storage via the access means, and when reading a certain record, the record value in the commit log is given priority over the record value in the storage. Use to execute a transaction.

これにより、他のトランザクションがコミットした後でも、トランザクション開始時のレコード値をメモリ上のコミットログから取得することができる。このため、トランザクションを分散処理する際に高度な分離性を維持することができる。   Thereby, even after another transaction commits, the record value at the start of the transaction can be obtained from the commit log in the memory. For this reason, a high degree of separation can be maintained when transactions are distributedly processed.

また、本発明に係るデータ処理装置は、上記のデータ処理装置に加え、次のようにしてもよい。つまり、その場合、メモリは、個別ログを格納する。個別ログは、トランザクションにおいて操作されたレコードの操作後の値を有する。そして、処理装置は、あるレコードを読み出す場合に、ストレージおよびコミットログにおけるレコードの値より個別ログにおけるレコードの値を優先して使用しトランザクションを実行する。   In addition to the data processing apparatus described above, the data processing apparatus according to the present invention may be configured as follows. That is, in that case, the memory stores individual logs. The individual log has a value after the operation of the record operated in the transaction. Then, when reading a certain record, the processing device executes a transaction using the record value in the individual log with priority over the record value in the storage and commit logs.

これにより、自己のトランザクションの実行によりレコード値が変更した場合には、メモリ上の個別ログからレコード値が読み出される。このため、ストレージにアクセスする頻度が減り、高速にトランザクションを実行することができる。   Thereby, when the record value is changed by execution of its own transaction, the record value is read from the individual log on the memory. For this reason, the frequency of accessing the storage is reduced, and transactions can be executed at high speed.

また、本発明に係るデータ処理装置は、上記のデータ処理装置のいずれかに加え、次のようにしてもよい。つまり、その場合、メモリは、個別ログを格納する。個別ログは、トランザクションにおいて操作されたレコードの操作後の値を有する。そして、処理装置は、コミット時に、個別ログに値を格納されたレコードに対応するストレージのレコードを読み出し、ストレージのレコードの値をコミットログとして格納した後に、個別ログにおける値をストレージのレコードへ反映させる。   The data processing apparatus according to the present invention may be as follows in addition to any of the data processing apparatuses described above. That is, in that case, the memory stores individual logs. The individual log has a value after the operation of the record operated in the transaction. Then, at the time of commit, the processing device reads the storage record corresponding to the record whose value is stored in the individual log, stores the storage record value as the commit log, and then reflects the value in the individual log to the storage record. Let

また、本発明に係るデータ処理装置は、上記のデータ処理装置のいずれかに加え、次のようにしてもよい。つまり、その場合、処理装置は、複数のトランザクションを並行して実行し、コミットログへのバックアップ処理の間、他のトランザクションのコミットを禁止する。   The data processing apparatus according to the present invention may be as follows in addition to any of the data processing apparatuses described above. That is, in this case, the processing apparatus executes a plurality of transactions in parallel, and prohibits other transactions from being committed during backup processing to the commit log.

また、本発明に係るデータ処理装置は、上記のデータ処理装置のいずれかに加え、次のようにしてもよい。つまり、その場合、処理装置は、バックアップ処理の間、他のトランザクションについて、ストレージまたはコミットログからレコードの読み出しを実行可能である。   The data processing apparatus according to the present invention may be as follows in addition to any of the data processing apparatuses described above. In other words, in that case, the processing apparatus can read a record from the storage or the commit log for another transaction during the backup process.

これにより、レコード読み出しがロックされる期間が短くなり、トランザクションの処理時間を短くすることができる。   Thereby, the period during which the record reading is locked is shortened, and the transaction processing time can be shortened.

また、本発明に係るデータ処理装置は、上記のデータ処理装置のいずれかに加え、次のようにしてもよい。つまり、その場合、処理装置は、トランザクション毎に個別ログを生成し、コミットしたトランザクションの個別ログを消去する。また、メモリは、トランザクション毎に個別ログを格納する。   The data processing apparatus according to the present invention may be as follows in addition to any of the data processing apparatuses described above. That is, in this case, the processing apparatus generates an individual log for each transaction and erases the individual log of the committed transaction. The memory also stores an individual log for each transaction.

これにより、あるトランザクションの個別ログが他のトランザクションからアクセスされることがなく、トランザクションごとにアドレス空間も別個のものとすることができ、分散処理が行い易くなる。   As a result, an individual log of a certain transaction is not accessed from other transactions, and an address space can be made separate for each transaction, facilitating distributed processing.

また、本発明に係るデータ処理装置は、上記のデータ処理装置のいずれかに加え、次のようにしてもよい。つまり、その場合、処理装置は、あるトランザクションのコミットを実行しているときに、他のトランザクションについて、ストレージ、コミットログおよび他のトランザクションの個別ログからレコードの読み出しを実行可能である。   The data processing apparatus according to the present invention may be as follows in addition to any of the data processing apparatuses described above. In other words, in this case, the processing device can read a record from the storage, the commit log, and the individual log of another transaction for another transaction while executing a commit of a certain transaction.

これにより、レコード読み出しがロックされる期間が短くなり、トランザクションの処理時間を短くすることができる。   Thereby, the period during which the record reading is locked is shortened, and the transaction processing time can be shortened.

また、本発明に係るデータ処理装置は、上記のデータ処理装置のいずれかに加え、次のようにしてもよい。つまり、その場合、コミットログは、時系列に沿って順番にメモリに格納される。処理装置は、あるトランザクションについてレコードの読み出しを行う場合、そのトランザクションの開始時点より後のコミットログを参照し、そのレコードについてのコミットログが存在すれば、そのコミットログからそのレコードの値を取得する。   The data processing apparatus according to the present invention may be as follows in addition to any of the data processing apparatuses described above. That is, in this case, the commit log is stored in the memory in order along the time series. When reading a record for a transaction, the processing device refers to the commit log after the start of the transaction, and if there is a commit log for the record, obtains the value of the record from the commit log .

これにより、コミットログの参照が最小限となり、レコード読み出しが高速に行うことができる。このため、トランザクションを高速に実行することができる。   As a result, reference to the commit log is minimized, and record reading can be performed at high speed. For this reason, a transaction can be executed at high speed.

本発明に係るデータ処理装置の1つは、過去にコミットしたトランザクションにおいて操作されたレコードのコミット前の値をバックアップするコミットログと、ストレージおよびコミットログにアクセス可能であって、あるレコードを読み出す場合に、ストレージにおけるレコードの値よりコミットログにおけるレコードの値を優先して使用しトランザクションを実行するトランザクション処理手段とを備える。   One of the data processing apparatuses according to the present invention is capable of accessing a commit log for backing up a value before committing a record operated in a transaction committed in the past, a storage and a commit log, and reading a record. And a transaction processing means for executing a transaction by using the record value in the commit log in preference to the record value in the storage.

これにより、他のトランザクションがコミットした後でも、トランザクション開始時のレコード値をコミットログから取得することができる。このため、トランザクションを分散処理する際に高度な分離性を維持することができる。   As a result, the record value at the start of the transaction can be acquired from the commit log even after another transaction commits. For this reason, a high degree of separation can be maintained when transactions are distributedly processed.

また、本発明に係るデータ処理装置は、上記のデータ処理装置に加え、次のようにしてもよい。つまり、その場合、データ処理装置は、個別ログとコミット処理手段とを備える。個別ログは、トランザクションにおいて操作されたレコードの操作後の値を有する。コミット処理手段は、個別ログに値を格納されたレコードに対応するストレージのレコードを読み出し、ストレージのレコードの値をコミットログに格納した後に、個別ログにおける値をストレージのレコードへ反映させる。そして、トランザクション処理手段は、あるレコードを読み出す場合に、ストレージおよびコミットログにおけるレコードの値より個別ログにおけるレコードの値を優先して使用しトランザクションを実行する。   In addition to the data processing apparatus described above, the data processing apparatus according to the present invention may be configured as follows. That is, in this case, the data processing apparatus includes an individual log and a commit processing unit. The individual log has a value after the operation of the record operated in the transaction. The commit processing means reads a storage record corresponding to a record whose value is stored in the individual log, stores the storage record value in the commit log, and then reflects the value in the individual log in the storage record. Then, when reading a certain record, the transaction processing means executes the transaction using the record value in the individual log with priority over the record value in the storage and commit logs.

これにより、自己のトランザクションの実行によりレコード値が変更した場合には、メモリ上の個別ログからレコード値が読み出される。このため、ストレージにアクセスする頻度が減り、高速にトランザクションを実行することができる。   Thereby, when the record value is changed by execution of its own transaction, the record value is read from the individual log on the memory. For this reason, the frequency of accessing the storage is reduced, and transactions can be executed at high speed.

本発明に係るトランザクション実行方法の1つは、処理装置により、トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をコミットログとしてメモリに格納し、処理装置により、トランザクションにおいてあるレコードを読み出す場合に、ストレージにおけるレコードの値よりコミットログにおけるレコードの値を優先して使用する。   One of the transaction execution methods according to the present invention is that when a transaction is committed by a processing device, a value before committing a record operated in the transaction is stored in a memory as a commit log. When reading a record, the record value in the commit log is used in preference to the record value in the storage.

これにより、他のトランザクションがコミットした後でも、トランザクション開始時のレコード値をコミットログから取得することができる。このため、トランザクションを分散処理する際に高度な分離性を維持することができる。   As a result, the record value at the start of the transaction can be acquired from the commit log even after another transaction commits. For this reason, a high degree of separation can be maintained when transactions are distributedly processed.

また、本発明に係るトランザクション実行方法は、上記のトランザクション実行方法に加え、次のようにしてもよい。つまり、その場合、処理装置により、複数のトランザクションを並行して実行し、コミットするトランザクションにおいて操作されたレコードのコミット前の値をコミットログへバックアップするバックアップ処理の間、他のトランザクションのコミットを禁止する。   In addition to the above transaction execution method, the transaction execution method according to the present invention may be as follows. In other words, in this case, the processing device executes multiple transactions in parallel and prohibits other transactions from being committed during the backup process that backs up the pre-commit value of the record operated in the commit transaction to the commit log. To do.

また、本発明に係るトランザクション実行方法は、上記のトランザクション実行方法のいずれかに加え、次のようにしてもよい。つまり、その場合、処理装置により、トランザクション毎に個別ログを生成し、コミットしたトランザクションの個別ログを消去する。また、メモリに、トランザクション毎に個別ログを格納する。   In addition to the above transaction execution method, the transaction execution method according to the present invention may be as follows. That is, in that case, the processing apparatus generates an individual log for each transaction, and erases the individual log of the committed transaction. In addition, an individual log is stored in the memory for each transaction.

これにより、あるトランザクションの個別ログが他のトランザクションからアクセスされることがなく、トランザクションごとにアドレス空間も別個のものとすることができ、分散処理が行い易くなる。   As a result, an individual log of a certain transaction is not accessed from other transactions, and an address space can be made separate for each transaction, facilitating distributed processing.

また、本発明に係るトランザクション実行方法は、上記のトランザクション実行方法のいずれかに加え、次のようにしてもよい。つまり、その場合、コミットログは、時系列に沿って順番にメモリに格納される。そして、あるトランザクションについてレコードの読み出しを行う場合、そのトランザクションの開始時点より後のコミットログを参照し、そのレコードについてのコミットログが存在すれば、そのコミットログからそのレコードの値を取得する。   In addition to the above transaction execution method, the transaction execution method according to the present invention may be as follows. That is, in this case, the commit log is stored in the memory in order along the time series. When a record is read out for a certain transaction, the commit log after the start time of the transaction is referred to. If there is a commit log for the record, the value of the record is acquired from the commit log.

これにより、コミットログの参照が最小限となり、レコード読み出しが高速に行うことができる。このため、トランザクションを高速に実行することができる。   As a result, reference to the commit log is minimized, and record reading can be performed at high speed. For this reason, a transaction can be executed at high speed.

また、本発明に係るトランザクション実行方法の1つは、トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をコミットログにバックアップするステップと、トランザクションにおいてあるレコードを読み出す場合に、そのレコードの値がコミットログにあれば、コミットログにおけるレコードの値を使用し、そのレコードの値がコミットログになければ、ストレージから読み出されたレコードの値を使用するステップとを備える。   One of the transaction execution methods according to the present invention includes a step of backing up a value before committing a record operated in the transaction to a commit log when a transaction is committed, and a case of reading a record in the transaction. If the value of the record is in the commit log, the value of the record in the commit log is used. If the value of the record is not in the commit log, the value of the record read from the storage is used.

これにより、他のトランザクションがコミットした後でも、トランザクション開始時のレコード値をコミットログから取得することができる。このため、トランザクションを分散処理する際に高度な分離性を維持することができる。   As a result, the record value at the start of the transaction can be acquired from the commit log even after another transaction commits. For this reason, a high degree of separation can be maintained when transactions are distributedly processed.

本発明に係るトランザクション実行プログラムは、処理装置により、トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をストレージから読み出してコミットログとしてメモリに格納させ、処理装置により、トランザクションにおいてあるレコードを読み出す場合に、ストレージにおけるレコードの値よりコミットログにおけるレコードの値を優先して使用させる。   When the transaction execution program according to the present invention commits a transaction by the processing device, the value before committing the record operated in the transaction is read from the storage and stored in the memory as a commit log. When reading a certain record, the record value in the commit log is used in preference to the record value in the storage.

これにより、他のトランザクションがコミットした後でも、トランザクション開始時のレコード値をコミットログから取得することができる。このため、トランザクションを分散処理する際に高度な分離性を維持することができる。   As a result, the record value at the start of the transaction can be acquired from the commit log even after another transaction commits. For this reason, a high degree of separation can be maintained when transactions are distributedly processed.

また、本発明に係るトランザクション実行プログラムは、上記のトランザクション実行プログラムに加え、次のようにしてもよい。つまり、その場合、複数のトランザクションを並行して実行させ、コミットするトランザクションにおいて操作されたレコードのコミット前の値をコミットログへバックアップするバックアップ処理の間、他のトランザクションのコミットを禁止させる。   In addition to the transaction execution program, the transaction execution program according to the present invention may be as follows. In other words, in this case, a plurality of transactions are executed in parallel, and the commit of other transactions is prohibited during the backup process of backing up the value before the commit of the record operated in the commit transaction to the commit log.

また、本発明に係るトランザクション実行プログラムは、上記のトランザクション実行プログラムのいずれかに加え、次のようにしてもよい。つまり、その場合、トランザクション毎に個別ログを生成させ、コミットしたトランザクションの個別ログを消去させ、メモリに、トランザクション毎に個別ログを格納させる。   Further, the transaction execution program according to the present invention may be as follows in addition to any of the transaction execution programs described above. That is, in this case, an individual log is generated for each transaction, the individual log of the committed transaction is deleted, and the individual log is stored in the memory for each transaction.

これにより、あるトランザクションの個別ログが他のトランザクションからアクセスされることがなく、トランザクションごとにアドレス空間も別個のものとすることができ、分散処理が行い易くなる。   As a result, an individual log of a certain transaction is not accessed from other transactions, and an address space can be made separate for each transaction, facilitating distributed processing.

また、本発明に係るトランザクション実行プログラムは、上記のトランザクション実行プログラムのいずれかに加え、次のようにしてもよい。つまり、その場合、コミットログを、時系列に沿って順番にメモリに格納させる。そして、あるトランザクションについてレコードの読み出しを行う場合、そのトランザクションの開始時点より後のコミットログを参照させる。そのレコードについてのコミットログが存在すれば、そのコミットログからそのレコードの値を取得させる。   Further, the transaction execution program according to the present invention may be as follows in addition to any of the transaction execution programs described above. That is, in this case, the commit log is stored in the memory in order along the time series. When a record is read for a certain transaction, the commit log after the start time of the transaction is referred to. If there is a commit log for the record, the value of the record is obtained from the commit log.

これにより、コミットログの参照が最小限となり、レコード読み出しが高速に行うことができる。このため、トランザクションを高速に実行することができる。   As a result, reference to the commit log is minimized, and record reading can be performed at high speed. For this reason, a transaction can be executed at high speed.

また、本発明に係るトランザクション実行プログラムは、トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をコミットログにバックアップするステップと、トランザクションにおいてあるレコードを読み出す場合に、そのレコードの値がコミットログにあれば、コミットログにおけるレコードの値を使用し、そのレコードの値がコミットログになければ、ストレージから読み出されたレコードの値を使用するステップとを実行させる。   In addition, when the transaction execution program according to the present invention commits a transaction, the step of backing up the value before committing of the record operated in the transaction to the commit log, and when reading a record in the transaction, the record If the value of the record is in the commit log, the value of the record in the commit log is used. If the value of the record is not in the commit log, the step of using the value of the record read from the storage is executed.

これにより、他のトランザクションがコミットした後でも、トランザクション開始時のレコード値をコミットログから取得することができる。このため、トランザクションを分散処理する際に高度な分離性を維持することができる。   As a result, the record value at the start of the transaction can be acquired from the commit log even after another transaction commits. For this reason, a high degree of separation can be maintained when transactions are distributedly processed.

本発明によれば、トランザクションを分散処理する際に高度な分離性を維持することができる。   According to the present invention, it is possible to maintain a high degree of separation when a transaction is distributedly processed.

以下、図に基づいて本発明の一実施の形態を説明する。   Hereinafter, an embodiment of the present invention will be described with reference to the drawings.

図1は、本発明の実施の形態に係るデータベースシステムの構成を示すブロック図である。図1において、サーバ装置1は、本発明のデータ処理装置の一実施の形態である。サーバ装置1には、プログラムを有するコンピュータシステムが使用される。また、ストレージ2は、データを「レコード」として格納するデータ格納装置である。ストレージ2は、サーバ装置1との通信を行うインタフェースと物理的にデータを記録する記録媒体とを有する。ストレージ2には、ハードディスクドライブ、ディスクアレイ、ファイルサーバなどの装置が使用される。   FIG. 1 is a block diagram showing a configuration of a database system according to an embodiment of the present invention. In FIG. 1, a server apparatus 1 is an embodiment of a data processing apparatus of the present invention. As the server device 1, a computer system having a program is used. The storage 2 is a data storage device that stores data as “records”. The storage 2 includes an interface that communicates with the server device 1 and a recording medium that physically records data. For the storage 2, devices such as a hard disk drive, a disk array, and a file server are used.

サーバ装置1は、CPU11、ROM12、RAM13、ハードディスクドライブ14、インタフェース15、通信装置16およびインタフェース17を有する。サーバ装置1において、CPU11、ROM12、RAM13等は、コンピュータを構成する。   The server device 1 includes a CPU 11, a ROM 12, a RAM 13, a hard disk drive 14, an interface 15, a communication device 16, and an interface 17. In the server device 1, the CPU 11, the ROM 12, the RAM 13, and the like constitute a computer.

CPU(Central Processing Unit )11は、ROM12またはハードディスクドライブ14に予め格納されRAM13にロードされたプログラムを実行し、プログラムに記述された処理を実行する処理装置である。   A CPU (Central Processing Unit) 11 is a processing device that executes a program previously stored in the ROM 12 or the hard disk drive 14 and loaded into the RAM 13 and executes processing described in the program.

また、ROM(Read Only Memory)12は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、RAM(Random Access Memory)13は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶するメモリである。   A ROM (Read Only Memory) 12 is a nonvolatile memory that stores programs and data in advance. A RAM (Random Access Memory) 13 is a memory that temporarily stores the program and data when the program is executed.

また、HDD(Hard Disc Drive )14は、図示せぬオペレーティングシステムや、データベースエンジンとしてのプログラム21などのアプリケーションプログラムを格納する記録媒体としてのハードディスク駆動装置である。なお、CD−ROM、DVD−ROM等の可搬型の記録媒体にプログラム21を格納し、その可搬型記録媒体からプログラムを読み出すドライブ装置をHDD14の代わりに設けるようにしてもよい。   An HDD (Hard Disc Drive) 14 is a hard disk drive as a recording medium for storing an operating system (not shown) and an application program such as a program 21 as a database engine. Note that a drive device that stores the program 21 in a portable recording medium such as a CD-ROM or DVD-ROM and reads the program from the portable recording medium may be provided instead of the HDD 14.

また、インタフェース15は、ストレージ2にアクセス可能なアクセス手段としてのインタフェース回路である。インタフェース15には、周辺機器用のインタフェース、ネットワークインタフェースなどの通信機器が使用される。周辺機器用のインタフェースとしては、SCSI(Small Computer System Interface )、IDE(Integrated Device Electronics )互換のもの、IEEE1394、USB(Universal Serial Bus)などがある。ネットワークインタフェースとしては、イーサネット(登録商標)などがある。   The interface 15 is an interface circuit as an access means that can access the storage 2. As the interface 15, a communication device such as a peripheral device interface or a network interface is used. As interfaces for peripheral devices, there are SCSI (Small Computer System Interface), IDE (Integrated Device Electronics) compatible, IEEE 1394, USB (Universal Serial Bus), and the like. Examples of the network interface include Ethernet (registered trademark).

また、通信装置16は、ネットワークインタフェースカード、モデムなどといった、外部装置との通信に使用される装置である。なお、インタフェース15をネットワークインタフェースとする場合には、通信装置16の代わりにインタフェース15を使用してもよい。通信装置16は、通信回線を介して、トランザクションを供給する1または複数の外部クライアント装置と通信する。   The communication device 16 is a device used for communication with an external device such as a network interface card or a modem. If the interface 15 is a network interface, the interface 15 may be used instead of the communication device 16. The communication device 16 communicates with one or more external client devices that supply transactions via a communication line.

上述のCPU11、ROM12、RAM13、HDD14、インタフェース15、通信装置16は、1台のコンピュータ内で、バス、ブリッジコントローラなどにより互いに接続される。なお、これらの接続形態は、特に限定されるものではない。   The CPU 11, the ROM 12, the RAM 13, the HDD 14, the interface 15, and the communication device 16 are connected to each other by a bus, a bridge controller, or the like in one computer. These connection forms are not particularly limited.

例えば、サーバ用コンピュータなどを使用してこのシステムを実現する場合には、CPU11などを接続したマザーボードをサーバ用コンピュータの筐体内に配置し、そのサーバ用コンピュータにインタフェースを介してストレージ2が接続される。   For example, when this system is realized by using a server computer or the like, a motherboard to which the CPU 11 or the like is connected is arranged in the server computer casing, and the storage 2 is connected to the server computer via an interface. The

次に、プログラム21をCPU11により実行した際に実現される処理部およびデータ構造について説明する。図2は、図1のデータ処理装置における処理部およびデータ構造を示すブロック図である。   Next, the processing unit and data structure realized when the program 21 is executed by the CPU 11 will be described. FIG. 2 is a block diagram showing a processing unit and a data structure in the data processing apparatus of FIG.

図2において、トランザクション演算部41は、1つのトランザクションにおける一連の操作および演算を行うトランザクション処理手段としての演算部である。トランザクションにおける命令としては、SELECT、UPDATE、INSERT、DELETEなどがある。レコードを読み出すSELECT命令を実行する場合、トランザクション演算部41は、ストレージ2、個別ログ51およびコミットログ63を参照し、分離性を維持したデータ読み出しを行う。トランザクションコンテキスト42は、1つのトランザクションにおけるデータである。トランザクションコンテキスト42は、個別ログ51およびコミットログ参照情報52を有する。個別ログ51は、トランザクションにおいて変更(更新、挿入または削除)が発生したレコードの情報を有するデータである。個別ログ51は、各トランザクションのローカルデータであって、他のトランザクションからはアクセスされない。コミットログ参照情報52は、時系列に配列された1または複数のコミットログ63における、トランザクション発生時点の先頭(最新)のコミットログ63を指すポインタ(データ)である。トランザクションコンテキスト42は、RAM13に格納される。   In FIG. 2, a transaction calculation unit 41 is a calculation unit as transaction processing means for performing a series of operations and calculations in one transaction. Examples of commands in transactions include SELECT, UPDATE, INSERT, and DELETE. When executing a SELECT command for reading a record, the transaction operation unit 41 refers to the storage 2, the individual log 51, and the commit log 63, and performs data reading while maintaining separation. The transaction context 42 is data in one transaction. The transaction context 42 has an individual log 51 and commit log reference information 52. The individual log 51 is data having information on a record in which a change (update, insertion or deletion) has occurred in a transaction. The individual log 51 is local data of each transaction and is not accessed from other transactions. The commit log reference information 52 is a pointer (data) that points to the first (latest) commit log 63 at the time of occurrence of a transaction in one or a plurality of commit logs 63 arranged in time series. The transaction context 42 is stored in the RAM 13.

1つのトランザクション演算部41および1つのトランザクションコンテキスト42により、1つのトランザクションを処理するトランザクション処理部61が構成される。マルチスレッドに対応したオペレーティングシステムが使用される場合には、1つのトランザクション処理部61に1つのスレッドが割り当てられる。   One transaction calculation unit 41 and one transaction context 42 constitute a transaction processing unit 61 that processes one transaction. When an operating system that supports multithreading is used, one thread is assigned to one transaction processing unit 61.

また、トランザクションマネージャ62は、トランザクション発生時にトランザクション処理部61を生成し、トランザクション完了時にトランザクション処理部61を消去する処理部である。また、トランザクションマネージャ62は、トランザクションのコミット時に、コミットログ63へのレコードの値のバックアップ、およびストレージ2への書き込みを行うコミット処理手段としての処理部である。   The transaction manager 62 is a processing unit that generates a transaction processing unit 61 when a transaction occurs and erases the transaction processing unit 61 when the transaction is completed. The transaction manager 62 is a processing unit as a commit processing unit that backs up the record value to the commit log 63 and writes to the storage 2 when the transaction is committed.

また、コミットログ63は、コミットしたトランザクションにおいて値に変更が発生したレコードの、変更前の値をバックアップするデータである。コミットログ63は、1回
の変更につき1つ、発生した順番でRAM13に格納される。
The commit log 63 is data that backs up the value before the change of the record in which the value has changed in the committed transaction. The commit log 63 is stored in the RAM 13 in the order of occurrence, one for each change.

次に、図2における構成をC++、C#などのオブジェクト指向言語に基づき実装した場合の一例について説明する。図3は、図2における処理部およびデータ構造の具体例を示すブロック図である。   Next, an example in which the configuration in FIG. 2 is implemented based on an object-oriented language such as C ++ or C # will be described. FIG. 3 is a block diagram illustrating a specific example of the processing unit and the data structure in FIG.

図2における1つのトランザクション処理部61は、図3における1対のトランザクションコンテキスト(TC)クラスインスタンス81および個別ログバッファ(OLB)クラスインスタンス82により実装される。TCクラスインスタンス81およびOLBクラスインスタンス82は、1つのトランザクションにつき1つずつ生成される。   One transaction processing unit 61 in FIG. 2 is implemented by a pair of transaction context (TC) class instances 81 and individual log buffer (OLB) class instances 82 in FIG. One TC class instance 81 and one OLB class instance 82 are generated for each transaction.

TCクラスインスタンス81は、メソッド91、およびデータとしてのポインタ92〜95を有する。メソッド91は、トランザクション演算部41に対応する。メソッド91には、INSERT命令を実行するinsertメソッド、DELETE命令を実行するdeleteメソッド、UPDATE命令を実行するupdateメソッド、およびSELECT命令を実行するselectメソッドがある。ポインタ94は、コミットログ参照情報52に対応する。また、ポインタ92は、OLBクラスインスタンス82へのポインタである。ポインタ93は、トランザクションマネージャ(TM)クラスインスタンス83へのポインタである。ポインタ95は、ストレージクラスインスタンス85へのポインタである。   The TC class instance 81 has a method 91 and pointers 92 to 95 as data. The method 91 corresponds to the transaction calculation unit 41. The method 91 includes an insert method for executing an INSERT instruction, a delete method for executing a DELETE instruction, an update method for executing an UPDATE instruction, and a select method for executing a SELECT instruction. The pointer 94 corresponds to the commit log reference information 52. The pointer 92 is a pointer to the OLB class instance 82. A pointer 93 is a pointer to the transaction manager (TM) class instance 83. The pointer 95 is a pointer to the storage class instance 85.

OLBクラスインスタンス82は、メソッド101、およびデータとしての挿入ログ102、更新ログ103および削除ログ104を有する。挿入ログ102、更新ログ103および削除ログ104は、それぞれ個別ログ51である。メソッド101には、挿入ログ102を追加するinsertメソッド、更新ログ103を追加するupdateメソッド、削除ログ104を追加するdeleteメソッドなどがある。このOLBクラス82に対応するトランザクションでINSERT命令が実行される場合、TCクラスインスタンス81およびOLBクラスインスタンス82のinsertメソッドが呼び出されて、挿入ログ102が追加される。このOLBクラス82に対応するトランザクションでUPDATE命令が実行される場合、TCクラスインスタンス81およびOLBクラスインスタンス82のupdateメソッドが呼び出されて、更新ログ103が追加される。このOLBクラス82に対応するトランザクションでDELETE命令が実行される場合、TCクラスインスタンス81およびOLBクラスインスタンス82のdeleteメソッドが呼び出されて、削除ログ104が追加される。   The OLB class instance 82 includes a method 101 and an insertion log 102, an update log 103, and a deletion log 104 as data. The insertion log 102, the update log 103, and the deletion log 104 are individual logs 51, respectively. The method 101 includes an insert method for adding the insertion log 102, an update method for adding the update log 103, a delete method for adding the deletion log 104, and the like. When the INSERT instruction is executed in a transaction corresponding to the OLB class 82, the insert method of the TC class instance 81 and the OLB class instance 82 is called and the insertion log 102 is added. When the UPDATE instruction is executed in a transaction corresponding to the OLB class 82, the update method of the TC class instance 81 and the OLB class instance 82 is called, and the update log 103 is added. When the DELETE instruction is executed in the transaction corresponding to the OLB class 82, the delete method of the TC class instance 81 and the OLB class instance 82 is called, and the deletion log 104 is added.

図2におけるトランザクションマネージャ62は、図3におけるTMクラスインスタンス83により実装される。TMクラスインスタンス83は、すべてのTCクラスインスタンスに対して1つだけ存在する。TMクラスインスタンス83は、メソッド111として、TCクラスインスタンス81を生成するbeginメソッド、トランザクションをコミットするcommitメソッド、トランザクションをロールバックするrollbackメソッドなどを有し、データとして、ポインタ112〜114を有する。1または複数のポインタ112のそれぞれは、各TCクラスインスタンス81へのポインタである。ポインタ113は、コミットログバッファ(CLB)クラスインスタンス84へのポインタである。ポインタ114は、ストレージクラスインスタンス85へのポインタである。   The transaction manager 62 in FIG. 2 is implemented by the TM class instance 83 in FIG. There is only one TM class instance 83 for every TC class instance. The TM class instance 83 has a begin method for generating the TC class instance 81, a commit method for committing a transaction, a rollback method for rolling back the transaction, and the like as methods 111, and pointers 112 to 114 as data. Each of the one or more pointers 112 is a pointer to each TC class instance 81. The pointer 113 is a pointer to the commit log buffer (CLB) class instance 84. The pointer 114 is a pointer to the storage class instance 85.

図2におけるコミットログ63は、図3におけるCLBクラスインスタンス84により実装される。CLBクラスインスタンス84は、メソッド121として、コミットログ63を追加するinsertLogメソッドを有し、データとして、ポインタ122および一連のコミットログ63を有する。ポインタ122は、一連のコミットログ63における先頭(最新)のコミットログ63へのポインタである。   The commit log 63 in FIG. 2 is implemented by the CLB class instance 84 in FIG. The CLB class instance 84 has an insertLog method for adding a commit log 63 as a method 121, and has a pointer 122 and a series of commit logs 63 as data. The pointer 122 is a pointer to the head (latest) commit log 63 in the series of commit logs 63.

また、図2における各処理部のストレージ2に対する入出力は、図3におけるストレージクラスインスタンス85により実装される。ストレージクラスインスタンス8は、メソッド131として、レコードを単位としたデータ入出力関数を提供する。メソッド131には、最初のレコードを読み込むreadFirstメソッド、2番目以降のレコードを読み込むreadNextメソッド、レコードを削除するdeleteメソッド、レコードの値を更新するupdateメソッド、レコードを挿入するinsertメソッドなどがある。   Also, the input / output of each processing unit in FIG. 2 to the storage 2 is implemented by the storage class instance 85 in FIG. The storage class instance 8 provides a data input / output function in units of records as a method 131. The method 131 includes a readFirst method for reading the first record, a readNext method for reading the second and subsequent records, a delete method for deleting records, an update method for updating record values, and an insert method for inserting records.

ここで、この実施の形態における各データのフォーマットを説明する。図4(A)〜図4(F)は、この実施の形態におけるデータフォーマットの一例を示す図である。   Here, the format of each data in this embodiment will be described. FIG. 4A to FIG. 4F are diagrams showing an example of the data format in this embodiment.

図4(A)に示すように、フィールドは、データとその長さを有するデータ単位である。次に、図4(B)に示すように、レコードは、レコードの識別子oid、フィールド数num−fields、レコードの長さを調節するパディングnullBytes、および1または複数のフィールドを有するデータ単位である。例えば、oidのデータ長は4バイト、num−fieldsのデータ長は2バイト、nullBytesのデータ長は(num−fields)/8バイトとされる。識別子oidには、レコードに固有の値が割り当てられる。フィールド数num−fieldsの値は、レコード内のフィールド数とされる。パディングnullBytesの値はすべてnull(通常はゼロ)とされる。   As shown in FIG. 4A, the field is a data unit having data and its length. Next, as shown in FIG. 4B, a record is a data unit having a record identifier oid, a field number num-fields, padding nullBytes for adjusting the length of the record, and one or more fields. For example, the data length of oid is 4 bytes, the data length of num-fields is 2 bytes, and the data length of nullBytes is (num-fields) / 8 bytes. A unique value is assigned to the record as the identifier oid. The value of the field number num-fields is the number of fields in the record. The values of padding nullBytes are all null (usually zero).

また、図4(C)に示すように、コミットログは、属性typeとレコードとからなる。属性typeの値は、挿入、更新および削除のそれぞれに対応する値(例えば、1,2,3)とされる。コミットログのレコードの値は、更新または削除の場合、コミット前の、ストレージ2におけるレコードの値とされ、挿入の場合、null(oid=0,num−fields=0,nullBytes=0)とされる。   As shown in FIG. 4C, the commit log is composed of an attribute type and a record. The value of the attribute type is a value (for example, 1, 2, 3) corresponding to each of insertion, update, and deletion. In the case of update or deletion, the value of the record in the commit log is the value of the record in the storage 2 before committing, and in the case of insertion, the value is null (oid = 0, num-fields = 0, nullBytes = 0). .

また、図4(D)〜図4(F)に示すように、個別ログ51のうち、挿入ログ102(図4(D))および更新ログ103(図4(F))には、挿入および更新後のレコードの値が格納される。削除ログ104(図4(E))には、削除されたレコードの識別子oidのみが格納される。   Also, as shown in FIGS. 4D to 4F, among the individual logs 51, the insertion log 102 (FIG. 4D) and the update log 103 (FIG. 4F) are inserted and Stores the updated record value. Only the identifier oid of the deleted record is stored in the deletion log 104 (FIG. 4E).

次に、上記装置の動作について説明する。   Next, the operation of the above apparatus will be described.

まず、HDD14のプログラム21が、RAM13にロードされ、CPU11がプログラム21の実行を開始する。これにより、まず、TMクラスインスタンス83、CLBクラスインスタンス84およびストレージクラスインスタンス85が生成される。   First, the program 21 of the HDD 14 is loaded into the RAM 13 and the CPU 11 starts executing the program 21. Thereby, first, a TM class instance 83, a CLB class instance 84, and a storage class instance 85 are generated.

そして、1または複数の外部クライアント装置(図示せず)から通信装置16を介してトランザクションが受信されると、CPU11は、プログラム21に従って、以下のように、トランザクションを実行する。図5は、図1のサーバ装置におけるトランザクション処理を説明するフローチャートである。   When a transaction is received from one or a plurality of external client devices (not shown) via the communication device 16, the CPU 11 executes the transaction according to the program 21 as follows. FIG. 5 is a flowchart for explaining transaction processing in the server apparatus of FIG.

1つのトランザクションが受信されると、まず、トランザクションマネージャ62がトランザクションコンテキスト42を含む1つのトランザクション処理部61を生成する(ステップS1)。その際、TMクラスインスタンス83のbeginメソッドにより、TCクラスインスタンス81およびOLBクラスインスタンス82が生成される。   When one transaction is received, first, the transaction manager 62 generates one transaction processing unit 61 including the transaction context 42 (step S1). At that time, a TC class instance 81 and an OLB class instance 82 are generated by the begin method of the TM class instance 83.

次に、トランザクション演算部41によりそのトランザクションが実行される(ステップS2)。トランザクション演算部41は、そのトランザクションに記述されているレコード操作および演算を実行する。演算としては、四則演算がある。レコード操作としては、データベース内のレコードの読み出し、更新、挿入および削除がある。レコードの読み込みは、SELECT処理として実行され、レコードの更新は、UPDATE処理として実行され、レコードの挿入は、INSERT処理として実行され、レコードの削除は、DELETE処理として実行される。   Next, the transaction is executed by the transaction calculation unit 41 (step S2). The transaction calculation unit 41 executes record operations and calculations described in the transaction. There are four arithmetic operations. Record operations include reading, updating, inserting and deleting records in the database. Reading a record is executed as a SELECT process, updating a record is executed as an UPDATE process, inserting a record is executed as an INSERT process, and deleting a record is executed as a DELETE process.

その際、SELECT処理は、TCクラスインスタンス81のselectメソッドにより実行され、ストレージ2、個別ログ51およびコミットログ63のいずれかに格納されたレコードの値が、戻り値(つまり、読み出した値)とされる。   At this time, the SELECT process is executed by the select method of the TC class instance 81, and the value of the record stored in any of the storage 2, the individual log 51, and the commit log 63 is the return value (that is, the read value). Is done.

SELECT処理では、分離性を確保するために、ストレージ2内のレコードの値が、トランザクション発生時点でのレコードの値に維持されている必要がある。後述するが、本実施の形態では、コミット済みの他のトランザクションによりストレージ2におけるレコードの値が変更されている場合には、トランザクション発生時点でのレコードの値は、コミットログ63にバックアップされている。したがって、SELECT処理の対象となるレコードがコミットログ63に格納されている場合には、コミットログ63内のレコードの値が優先して使用される。その際、コミットログ63のうち、トランザクション発生時点より後のもののみが参照され、トランザクション発生時点以前のレコードの値は使用されない。また、トランザクション開始後に、自己によりレコードの値が変更され、その後にそのレコードを読み出す場合には、個別ログ51内のレコードの値が使用される。   In the SELECT process, in order to ensure separation, the value of the record in the storage 2 needs to be maintained at the value of the record when the transaction occurs. As will be described later, in this embodiment, when the record value in the storage 2 is changed by another committed transaction, the record value at the time of the transaction occurrence is backed up in the commit log 63. . Therefore, when a record to be subjected to SELECT processing is stored in the commit log 63, the value of the record in the commit log 63 is preferentially used. At that time, only the commit log 63 after the transaction occurrence time is referred to, and the record value before the transaction occurrence time is not used. Further, when the value of the record is changed by itself after the transaction is started and then the record is read, the value of the record in the individual log 51 is used.

また、UPDATE処理は、TCクラスインスタンス81のupdateメソッドにより実行され、更新後のレコード値が、個別ログ51の更新ログ103に追加される。また、INSERT処理は、TCクラスインスタンス81のinsertメソッドにより実行され、挿入されたレコードの値が、個別ログ51の挿入ログ102に追加される。また、DELETE処理は、TCクラスインスタンス81のdeleteメソッドにより実行され、削除されたレコードの識別子が、個別ログ51の削除ログ104に追加される。UPDATE処理、INSERT処理およびDELETE処理では、ストレージ2へのアクセスは発生せず、RAM13へのアクセスのみが発生する。   The UPDATE process is executed by the update method of the TC class instance 81, and the updated record value is added to the update log 103 of the individual log 51. The INSERT process is executed by the insert method of the TC class instance 81, and the value of the inserted record is added to the insertion log 102 of the individual log 51. The DELETE process is executed by the delete method of the TC class instance 81, and the identifier of the deleted record is added to the deletion log 104 of the individual log 51. In the UPDATE process, the INSERT process, and the DELETE process, access to the storage 2 does not occur, and only access to the RAM 13 occurs.

そして、トランザクションに記述されているレコード操作および演算が完了すると、トランザクションマネージャ62が、コミット処理を実行する(ステップS3)。コミット処理は、TMクラスインスタンス83のcommitメソッドにより実行される。このデータベースシステムでは、コミット処理において、コミット対象のトランザクションの実行により変更が生じたレコードの値を個別ログ51からストレージ2へ反映させる前に、ストレージ2内のそのレコードの値をコミットログ63へバックアップする。そして、バックアップ後に、個別ログ51内のレコードの値が、ストレージ2内の対応するレコードの値へ反映される。このようにしてコミット処理が実行された後、トランザクションマネージャ62は、コミットされたトランザクションのトランザクション処理部61を消去する。つまり、そのトランザクションのTCクラスインスタンス81およびOLBクラスインスタンス82が消去される。   When the record operation and calculation described in the transaction are completed, the transaction manager 62 executes a commit process (step S3). The commit process is executed by the commit method of the TM class instance 83. In this database system, in the commit process, before reflecting the value of the record that has been changed by the execution of the transaction to be committed from the individual log 51 to the storage 2, the value of that record in the storage 2 is backed up to the commit log 63. To do. Then, after backup, the value of the record in the individual log 51 is reflected on the value of the corresponding record in the storage 2. After the commit process is executed in this way, the transaction manager 62 deletes the transaction processing unit 61 of the committed transaction. That is, the TC class instance 81 and the OLB class instance 82 of the transaction are deleted.

以上のように、1つのトランザクションが処理される。複数のトランザクションが受信された場合には、同時に並行して複数のトランザクションが上述のように処理される。   As described above, one transaction is processed. When a plurality of transactions are received, the plurality of transactions are processed as described above in parallel.

このデータベースシステムでは、個別ログ51およびコミットログ63を使用することで、トランザクションで発生した変更がトランザクション内で保持されるとともに、他のトランザクションのコミットによるレコード値への影響を受けずに済む。このため、複数のトランザクションが並列して実行されるデータベースシステムにおいて、各トランザクションが、実行開始時点のレコードの状態に基づいて実行される。   In this database system, by using the individual log 51 and the commit log 63, changes generated in the transaction are held in the transaction, and the record value is not affected by the commit of another transaction. For this reason, in a database system in which a plurality of transactions are executed in parallel, each transaction is executed based on the state of the record at the start of execution.

また、複数のトランザクションが処理される場合、例えば複数のスレッドにより分散処理される。SELECT以外の処理では、コミットログ63、ストレージ2などのスレッド外へのデータアクセスが発生しないので、高速にトランザクション処理が実行される。   When a plurality of transactions are processed, for example, distributed processing is performed by a plurality of threads. In processing other than SELECT, data access to the outside of the threads such as the commit log 63 and the storage 2 does not occur, so transaction processing is executed at high speed.

次に、上述のトランザクションコンテキスト生成(ステップS1)、UPDATE処理、INSERT処理、DELETE処理、SELECT処理およびコミット処理(ステップS3)の詳細を説明する。   Next, details of the above-described transaction context generation (step S1), UPDATE processing, INSERT processing, DELETE processing, SELECT processing, and commit processing (step S3) will be described.

1.トランザクションコンテキスト生成   1. Transaction context generation

図6は、本発明の実施の形態におけるトランザクションコンテキスト生成を説明するフローチャートである。トランザクションコンテキスト生成は、TMクラスインスタンス83のbeginメソッドにより実行される。   FIG. 6 is a flowchart for explaining transaction context generation according to the embodiment of the present invention. Transaction context generation is executed by the begin method of the TM class instance 83.

まず、TCクラスインスタンス81が生成される(ステップS11)。そして、そのTCクラスインスタンス81へのポインタ112がTMクラスインスタンス83に追加される(ステップS12)。   First, a TC class instance 81 is generated (step S11). Then, a pointer 112 to the TC class instance 81 is added to the TM class instance 83 (step S12).

次に、CLBクラスインスタンス84がロックされる(ステップS13)。その時点でのCLBクラスインスタンスにおけるポインタ123の値が、TCクラスインスタンス81のポインタ94にセットされる(ステップS14)。その後、CLBクラスインスタンス84のロックが解除される(ステップS15)。これにより、トランザクションコンテキスト生成時、つまりトランザクション開始時の先頭のコミットログ63へのポインタ値がTCクラスインスタンス81におけるポインタ94にセットされる。   Next, the CLB class instance 84 is locked (step S13). The value of the pointer 123 in the CLB class instance at that time is set in the pointer 94 of the TC class instance 81 (step S14). Thereafter, the lock of the CLB class instance 84 is released (step S15). As a result, the pointer value to the first commit log 63 at the time of generating the transaction context, that is, at the start of the transaction is set to the pointer 94 in the TC class instance 81.

そして、OLBクラスインスタンス82が生成され(ステップS16)、そのOLBクラスインスタンス82へのポインタ値がTCクラスインスタンスのポインタ92にセットされる(ステップS17)。これにより、TCクラスインスタンス81とOLBクラスインスタンス82との対応関係が確立される。   Then, an OLB class instance 82 is generated (step S16), and a pointer value to the OLB class instance 82 is set in the pointer 92 of the TC class instance (step S17). Thereby, the correspondence between the TC class instance 81 and the OLB class instance 82 is established.

このようにして、1つのトランザクションに対応して1つのTCクラスインスタンス81および1つのOLBクラスインスタンス82が生成され、データの初期化が行われる。   In this way, one TC class instance 81 and one OLB class instance 82 are generated corresponding to one transaction, and data initialization is performed.

2.UPDATE処理   2. UPDATE processing

図7は、本発明の実施の形態におけるUPDATE処理を説明するフローチャートである。UPDATE処理は、TCクラスインスタンス81およびOLBクラスインスタンス82のupdateメソッドにより実行される。UPDATE処理では、updateメソッドの引数として指定されたレコードが、OLBクラスインスタンス82の更新ログ103に追加される(ステップS21)。したがって、UPDATE処理では、ストレージ2へのアクセスは発生しない。   FIG. 7 is a flowchart for explaining the UPDATE process according to the embodiment of the present invention. The UPDATE process is executed by the update method of the TC class instance 81 and the OLB class instance 82. In the UPDATE process, a record designated as an argument of the update method is added to the update log 103 of the OLB class instance 82 (step S21). Therefore, no access to the storage 2 occurs in the UPDATE process.

3.INSERT処理   3. INSERT processing

図8は、本発明の実施の形態におけるINSERT処理を説明するフローチャートである。INSERT処理は、TCクラスインスタンス81およびOLBクラスインスタンス82のinsertメソッドにより実行される。INSERT処理では、insertメソッドの引数として指定されたレコードが、OLBクラスインスタンス82の挿入ログ102に追加される(ステップS31)。したがって、INSERT処理では、ストレージ2へのアクセスは発生しない。   FIG. 8 is a flowchart for explaining the INSERT processing according to the embodiment of the present invention. The INSERT process is executed by the insert method of the TC class instance 81 and the OLB class instance 82. In the INSERT process, a record designated as an argument of the insert method is added to the insertion log 102 of the OLB class instance 82 (step S31). Therefore, access to the storage 2 does not occur in the INSERT process.

4.DELETE処理   4). DELETE processing

図9は、本発明の実施の形態におけるDELETE処理を説明するフローチャートである。DELETE処理は、TCクラスインスタンス81およびOLBクラスインスタンス82のdeleteメソッドにより実行される。DELETE処理では、deleteメソッドの引数として指定されたレコードが、OLBクラスインスタンス82の削除ログ104に追加される(ステップS41)。したがって、DELETE処理では、ストレージ2へのアクセスは発生しない。   FIG. 9 is a flowchart for explaining the DELETE process according to the embodiment of the present invention. The DELETE process is executed by the delete method of the TC class instance 81 and the OLB class instance 82. In the DELETE process, a record designated as an argument of the delete method is added to the deletion log 104 of the OLB class instance 82 (step S41). Therefore, no access to the storage 2 occurs in the DELETE process.

5.SELECT処理   5. SELECT processing

図10は、本発明の実施の形態におけるSELECT処理を説明するフローチャートである。SELECT処理は、TCクラスインスタンス81のselectメソッドにより実行される。   FIG. 10 is a flowchart illustrating the SELECT process according to the embodiment of the present invention. The SELECT process is executed by the select method of the TC class instance 81.

SELECT処理では、selectメソッドの引数として1または複数のレコードが指定される。そして、指定された最初のレコードが、ストレージ2から読み出される(ステップS51)。   In the SELECT process, one or more records are specified as an argument of the select method. Then, the designated first record is read from the storage 2 (step S51).

そのレコードが存在する場合、つまり、レコードの読み出しに成功した場合(ステップS52)、個別ログ51を参照して、そのレコードが更新されたか否かが確認される(ステップS53)。そのレコードが更新されていない場合(ステップS54)、個別ログ51を参照して、そのレコードが削除されたか否かが確認される(ステップS55)。   When the record exists, that is, when the record is successfully read (step S52), it is confirmed by referring to the individual log 51 whether the record has been updated (step S53). If the record has not been updated (step S54), it is confirmed with reference to the individual log 51 whether the record has been deleted (step S55).

そのレコードが削除されていない場合(ステップS56)、コミットログ63を参照してそのレコードが更新されたか否かが確認される(ステップS57)。そのレコードが更新されていない場合(ステップS58)、コミットログ63を参照してそのレコードが挿入されたものか否かが確認される(ステップS59)。   If the record has not been deleted (step S56), it is confirmed by referring to the commit log 63 whether the record has been updated (step S57). If the record has not been updated (step S58), it is confirmed by referring to the commit log 63 whether the record has been inserted (step S59).

そのレコードが挿入されたものではない場合(ステップS60)、ストレージ2から読み出されたそのレコードの値が保存される(ステップS61)。つまり、個別ログ51およびコミットログ63のいずれにもそのレコードのログがない場合には、ストレージ2から読み出されたレコード値が、SELECT処理の対象のレコードの値として使用される。   If the record is not inserted (step S60), the value of the record read from the storage 2 is saved (step S61). That is, when there is no log of the record in either the individual log 51 or the commit log 63, the record value read from the storage 2 is used as the value of the record targeted for SELECT processing.

一方、そのレコードが更新されていると個別ログ51に基づき判断された場合には(ステップS54)、そのレコードの値が個別ログ51における更新後のレコード値へ変更され(ステップS62)、保存される。つまり、そのレコードの更新ログ103がある場合には、更新ログ103内のレコード値が、SELECT処理の対象のレコードの値として使用される。   On the other hand, when it is determined that the record is updated based on the individual log 51 (step S54), the value of the record is changed to the updated record value in the individual log 51 (step S62) and saved. The That is, when there is an update log 103 of the record, the record value in the update log 103 is used as the value of the record to be subjected to SELECT processing.

また、そのレコードが削除されていると個別ログ51に基づき判断された場合には(ステップS56)、レコードを保存せずに、そのレコードの読み込み処理が終了する。つまり、読み込み処理の戻り値としてnullが返され、そのレコードの読み込みに失敗したことになる。   If it is determined that the record has been deleted based on the individual log 51 (step S56), the record reading process ends without saving the record. That is, null is returned as the return value of the reading process, and reading of the record has failed.

さらに、そのレコードが更新されているとコミットログ63に基づき判断された場合には(ステップS58)、そのレコードの値がコミットログ63におけるレコード値へ変更され(ステップS63)、保存される。つまり、そのレコードについて属性が「更新」であるコミットログ63がある場合には、そのコミットログ63内のレコード値が、SELECT処理の対象のレコードの値とされる。   Further, when it is determined that the record has been updated based on the commit log 63 (step S58), the value of the record is changed to the record value in the commit log 63 (step S63) and stored. That is, when there is a commit log 63 whose attribute is “update” for the record, the record value in the commit log 63 is set as the value of the record that is the subject of the SELECT process.

また、そのレコードが挿入されているとコミットログ63に基づき判断された場合には(ステップS60)、レコードを保存せずに、そのレコードの読み込み処理が終了する。つまり、読み込み処理の戻り値としてnullが返され、そのレコードの読み込みに失敗したことになる。   If it is determined that the record is inserted based on the commit log 63 (step S60), the record reading process is terminated without saving the record. That is, null is returned as the return value of the reading process, and reading of the record has failed.

また、ストレージ2にそのレコードが存在しない場合には(ステップS52)、そのレコードの読み込み処理が終了する。つまり、読み込み処理の戻り値としてnullが返され、そのレコードの読み込みに失敗したことになる。   If the record does not exist in the storage 2 (step S52), the record reading process ends. That is, null is returned as the return value of the reading process, and reading of the record has failed.

そして、最初のレコードについての読み込み処理が完了すると、次のレコードの読み込みが実行される(ステップS64)。図11は、図10のステップS64の処理を説明するフローチャートである。   When the reading process for the first record is completed, the next record is read (step S64). FIG. 11 is a flowchart for explaining the processing in step S64 in FIG.

次のレコードを読み込む場合、まず、次のレコードが、ストレージ2から読み出される(ステップS71)。そのレコードがストレージ2に存在する場合(つまり、ストレージ2からの読み出しに成功した場合)、そのレコード値が、次のレコードの、ストレージ2での値と見なされて使用される(ステップS73)。   When reading the next record, first, the next record is read from the storage 2 (step S71). When the record exists in the storage 2 (that is, when reading from the storage 2 succeeds), the record value is regarded as the value in the storage 2 of the next record and used (step S73).

一方、ストレージ2にそのレコードが存在しない場合、そのレコードが、個別ログ51の挿入ログ102から読み出される(ステップS75)。そのレコードが挿入ログ102に存在する場合、そのレコード値が、次のレコードの、ストレージ2での値と見なされて使用される(ステップS76)。   On the other hand, when the record does not exist in the storage 2, the record is read from the insertion log 102 of the individual log 51 (step S75). When the record exists in the insertion log 102, the record value is regarded as the value in the storage 2 of the next record and used (step S76).

また、挿入ログ102にもそのレコードが存在しない場合、そのレコードが、コミットログ63の「削除」属性のログから読み出される(ステップS77)。そのレコードがコミットログ63の「削除」属性のログに存在する場合、そのレコード値が、次のレコードの、ストレージ2での値と見なされて使用される(ステップS79)。   If the record does not exist in the insertion log 102, the record is read from the “delete” attribute log of the commit log 63 (step S77). If the record exists in the “delete” attribute log of the commit log 63, the record value is used as the value of the next record in the storage 2 (step S79).

そして、コミットログ63の「削除」属性のログにもそのレコードが存在しない場合には、そのレコードが存在しないと判断される(ステップS80)。つまり、戻り値としてnullが返される。   If the record does not exist in the “deleted” attribute log of the commit log 63, it is determined that the record does not exist (step S80). That is, null is returned as a return value.

読み込み対象のレコードが存在する場合には、そのレコードに対してステップS53〜S61の処理が実行される。   If there is a record to be read, the processes of steps S53 to S61 are executed for that record.

そして、読み込み対象のレコードがなくなるまで読み込み処理が繰り返し実行される。読み込み対象のレコードがなくなると(ステップS65)、SELECT処理が終了する。   Then, the reading process is repeatedly executed until there are no more records to be read. When there are no more records to be read (step S65), the SELECT process ends.

6.コミット処理   6). Commit processing

図12は、本発明の実施の形態におけるコミット処理を説明するフローチャートである。コミット処理は、TMクラスインスタンス83のcommitメソッドにより実行される。   FIG. 12 is a flowchart illustrating the commit process according to the embodiment of the present invention. The commit process is executed by the commit method of the TM class instance 83.

まず、他のトランザクションのコミット処理がロックされる。つまり、トランザクションのコミット処理が実行されると、他のトランザクションのコミット処理が制限される(ステップS91)。ロック状態では、あるトランザクションのコミット処理中に、他のトランザクションのコミット処理を開始することができない。なお、他のトランザクションのコミット処理は制限されるが、他のトランザクションについてのそれ以外の処理(SELECT処理など)は制限されない。   First, the commit process of another transaction is locked. That is, when transaction commit processing is executed, commit processing of other transactions is limited (step S91). In the locked state, the commit process of another transaction cannot be started during the commit process of a certain transaction. Note that the commit processing of other transactions is limited, but other processing (such as SELECT processing) for other transactions is not limited.

次に、CLBクラスインスタンス84がロックされる(ステップS92)。この状態では、他のトランザクションについてのCLBクラスインスタンス84へのアクセスが制限される。   Next, the CLB class instance 84 is locked (step S92). In this state, access to the CLB class instance 84 for other transactions is restricted.

そして、個別ログ51の削除ログ104のレコードが、ストレージ2からコミットログ63へバックアップされる(ステップS93)。図13は、本発明の実施の形態における、削除ログ104で指定されるレコードのバックアップについて説明するフローチャートである。まず、1つの削除ログ104の読み出しが実行される(ステップS111)。削除ログ104が存在する場合には(ステップS112)、その削除ログ104から、削除対象のレコードの識別子oidが取得される(ステップS113)。次に、取得された識別子oidのレコードがストレージ2から読み出される(ステップS114)。そのレコードに、「削除」の属性typeを追加してコミットログ63が生成される(ステップS115)。生成されたコミットログ63は、CLBクラスインスタンス84へ追加される(ステップS116)。そして、ステップS111〜S116の処理が、すべての削除ログ104に対して実行されるまで、各削除ログ104に対して順番に実行される。   Then, the record of the deletion log 104 of the individual log 51 is backed up from the storage 2 to the commit log 63 (step S93). FIG. 13 is a flowchart for explaining backup of a record designated by the deletion log 104 according to the embodiment of this invention. First, one deletion log 104 is read (step S111). When the deletion log 104 exists (step S112), the identifier oid of the record to be deleted is acquired from the deletion log 104 (step S113). Next, the record with the acquired identifier oid is read from the storage 2 (step S114). The commit log 63 is generated by adding the “delete” attribute type to the record (step S115). The generated commit log 63 is added to the CLB class instance 84 (step S116). Then, the processes in steps S111 to S116 are executed in order for each deletion log 104 until they are executed for all the deletion logs 104.

また、個別ログ51の更新ログ103のレコードが、ストレージ2からコミットログ63へバックアップされる(ステップS94)。図14は、本発明の実施の形態における、更新ログ103で指定されるレコードのバックアップについて説明するフローチャートである。まず、1つの更新ログ103の読み出しが実行される(ステップS121)。更新ログ103が存在する場合には(ステップS122)、その更新ログ103から、更新対象のレコードの識別子oidが取得される(ステップS123)。次に、取得された識別子oidのレコードがストレージ2から読み出される(ステップS124)。そのレコードに、「更新」の属性typeを追加してコミットログ63が生成される(ステップS125)。生成されたコミットログ63は、CLBクラスインスタンス84へ追加される(ステップS126)。そして、ステップS121〜S126の処理が、すべての更新ログ103に対して実行されるまで、各更新ログ103に対して順番に実行される。   Further, the record of the update log 103 of the individual log 51 is backed up from the storage 2 to the commit log 63 (step S94). FIG. 14 is a flowchart for explaining backup of a record specified by the update log 103 according to the embodiment of this invention. First, one update log 103 is read (step S121). When the update log 103 exists (step S122), the identifier oid of the record to be updated is acquired from the update log 103 (step S123). Next, the record with the acquired identifier oid is read from the storage 2 (step S124). The commit log 63 is generated by adding an “update” attribute type to the record (step S125). The generated commit log 63 is added to the CLB class instance 84 (step S126). Then, the processes in steps S <b> 121 to S <b> 126 are sequentially performed on each update log 103 until the processes are performed on all the update logs 103.

また、個別ログ51の挿入ログ104のレコードが、コミットログ63へバックアップされる(ステップS95)。図15は、本発明の実施の形態における、挿入ログ102で指定されるレコードのバックアップについて説明するフローチャートである。まず、1つの挿入ログ102の読み出しが実行される(ステップS131)。挿入ログ102が存在する場合には(ステップS132)、その挿入ログ102から、挿入対象のレコードの識別子oidが取得される(ステップS133)。次に、値をnull(oid=0,num−fields=0,nullBytes=0)としたレコードに、「挿入」の属性typeを追加してコミットログ63が生成される(ステップS134)。生成されたコミットログ63は、CLBクラスインスタンス84へ追加される(ステップS135)。そして、ステップS131〜S135の処理が、すべての挿入ログ102に対して実行されるまで、各挿入ログ102に対して順番に実行される。   Further, the record of the insertion log 104 of the individual log 51 is backed up to the commit log 63 (step S95). FIG. 15 is a flowchart for explaining backup of a record designated by the insertion log 102 in the embodiment of the present invention. First, one insertion log 102 is read (step S131). If the insertion log 102 exists (step S132), the identifier oid of the record to be inserted is acquired from the insertion log 102 (step S133). Next, the commit log 63 is generated by adding the “insert” attribute type to the record whose value is null (oid = 0, num-fields = 0, nullBytes = 0) (step S134). The generated commit log 63 is added to the CLB class instance 84 (step S135). Then, the processing of steps S131 to S135 is sequentially executed for each insertion log 102 until it is executed for all the insertion logs 102.

このように、操作されたレコードのコミット前の値がコミットログ63へバックアップされる。そして、CLBクラスインスタンス84のロックが解除される(ステップS96)。   In this way, the value before committing the operated record is backed up to the commit log 63. Then, the lock of the CLB class instance 84 is released (step S96).

その後、ストレージ2に対して、個別ログ51の削除ログ104がストレージ2のレコードに反映される(ステップS97)。つまり、削除ログ104の識別子oidで指定されるレコードがストレージ2から削除される。また、ストレージ2に対して、個別ログ51の更新ログ103が、識別子oidで指定されるストレージ2のレコードに反映される(ステップS98)。つまり、更新ログ103のレコードがストレージ2へ書き込まれる。また、ストレージ2に対して、個別ログ51の挿入ログ102が、識別子oidで指定されるストレージ2のレコードに反映される(ステップS99)。つまり、挿入ログ102のレコードがストレージ2へ書き込まれる。   Thereafter, the deletion log 104 of the individual log 51 is reflected in the storage 2 record for the storage 2 (step S97). That is, the record specified by the identifier oid of the deletion log 104 is deleted from the storage 2. Further, the update log 103 of the individual log 51 is reflected in the record of the storage 2 designated by the identifier oid (step S98). That is, the record of the update log 103 is written to the storage 2. Further, the insertion log 102 of the individual log 51 is reflected in the storage 2 record designated by the identifier oid (step S99). That is, the record of the insertion log 102 is written to the storage 2.

このように、操作前のレコード値のバックアップおよび操作後のレコードの反映が完了した後、他のトランザクションのコミット処理のロックが解除される(ステップS100)。コミット処理が完了すると、コミットされたTCクラスインスタンス81とOLBクラスインスタンス82が消去される。   Thus, after the backup of the record value before the operation and the reflection of the record after the operation are completed, the lock of the commit process of the other transaction is released (step S100). When the commit process is completed, the committed TC class instance 81 and OLB class instance 82 are deleted.

以上のように、上記実施の形態によれば、RAM13は、過去にコミットしたトランザクションにおいて操作されたレコードのコミット前の値をバックアップするコミットログ63を格納する。また、CPU11は、RAM13にアクセス可能であり、かつインタフェース15を介してストレージ2にアクセス可能であって、あるレコードを読み出す場合に、ストレージ2におけるレコードの値よりコミットログ63におけるレコードの値を優先して使用しトランザクションを実行する。   As described above, according to the above-described embodiment, the RAM 13 stores the commit log 63 that backs up the pre-commit value of the record operated in the transaction committed in the past. Further, the CPU 11 can access the RAM 13 and can access the storage 2 via the interface 15, and when reading a certain record, the record value in the commit log 63 has priority over the record value in the storage 2. And use it to execute transactions.

これにより、他のトランザクションがコミットした後でも、トランザクション開始時のレコード値をコミットログ63から取得することができる。このため、トランザクションを分散処理する際に高度な分離性を維持することができる。   As a result, the record value at the start of the transaction can be acquired from the commit log 63 even after another transaction commits. For this reason, a high degree of separation can be maintained when transactions are distributedly processed.

また、上記実施の形態によれば、RAM13は、個別ログ51を格納する。個別ログ51は、トランザクションにおいて操作されたレコードの操作後の値を有する。そして、トランザクションが実行される際、あるレコードを読み出すときに、ストレージ2およびコミットログ63におけるレコードの値より個別ログ51におけるレコードの値が優先して使用される。   Further, according to the above embodiment, the RAM 13 stores the individual log 51. The individual log 51 has a value after the operation of the record operated in the transaction. When a transaction is executed, when a certain record is read, the record value in the individual log 51 is used in preference to the record value in the storage 2 and the commit log 63.

これにより、自己のトランザクションの実行によりレコード値が変更した場合には、RAM13内の個別ログ51からレコード値が読み出される。このため、ストレージ2にアクセスする頻度が減り、高速にトランザクションを実行することができる。   As a result, when the record value is changed by executing its own transaction, the record value is read from the individual log 51 in the RAM 13. For this reason, the frequency of accessing the storage 2 is reduced, and transactions can be executed at high speed.

また、上記実施の形態によれば、バックアップ処理の間、他のトランザクションについて、ストレージ2またはコミットログ63からレコードの読み出しが実行可能である。   Further, according to the above-described embodiment, it is possible to read records from the storage 2 or the commit log 63 for other transactions during the backup process.

これにより、レコード読み出しがロックされる期間が短くなり、トランザクションの処理時間を短くすることができる。   Thereby, the period during which the record reading is locked is shortened, and the transaction processing time can be shortened.

また、上記実施の形態によれば、トランザクション毎に個別ログ51が生成され、コミットしたトランザクションの個別ログ51は消去される。また、RAM13には、トランザクション毎に個別ログ51が格納される。   Further, according to the above embodiment, the individual log 51 is generated for each transaction, and the individual log 51 of the committed transaction is deleted. The RAM 13 stores an individual log 51 for each transaction.

これにより、あるトランザクションの個別ログ51が他のトランザクションからアクセスされることがなく、トランザクションごとにアドレス空間も別個のものとすることができ、分散処理が行い易くなる。   Thereby, the individual log 51 of a certain transaction is not accessed from other transactions, the address space can be made different for each transaction, and distributed processing is facilitated.

また、上記実施の形態によれば、あるトランザクションのコミット処理を実行しているときに、他のトランザクションについて、ストレージ2、コミットログ63および他のトランザクションの個別ログ51からレコードの読み出しが実行可能である。   Further, according to the above-described embodiment, when a commit process of a certain transaction is executed, a record can be read from the storage 2, the commit log 63, and the individual log 51 of another transaction for another transaction. is there.

これにより、レコード読み出しがロックされる期間が短くなり、トランザクションの処理時間を短くすることができる。   Thereby, the period during which the record reading is locked is shortened, and the transaction processing time can be shortened.

また、上記実施の形態によれば、コミットログ63は、時系列に沿って順番にRAM13に格納される。あるトランザクションについてレコードの読み出しが実行される場合、そのトランザクションの開始時点より後のコミットログ63のみが参照される。そして、そのレコードについてのコミットログ63が存在すれば、そのコミットログ63からそのレコードの値が取得される。   Further, according to the above embodiment, the commit log 63 is stored in the RAM 13 in order along the time series. When a record is read for a transaction, only the commit log 63 after the transaction start time is referred to. If there is a commit log 63 for the record, the value of the record is acquired from the commit log 63.

これにより、コミットログ63の参照が最小限となり、レコード読み出しが高速に行うことができる。このため、トランザクションを高速に実行することができる。   Thereby, the reference to the commit log 63 is minimized, and the record can be read at high speed. For this reason, a transaction can be executed at high speed.

なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。   The above-described embodiments are preferred examples of the present invention, but the present invention is not limited to these, and various modifications and changes can be made without departing from the scope of the present invention. is there.

例えば、サーバ装置1とストレージ2は、コンピュータネットワークを介して接続されるようにしてもよい。その場合には、インタフェース15として、ネットワークインタフェースなどが使用される。例えば、1つのLANに、トランザクションを受信するサーバ装置1、ストレージ2、およびトランザクションを送信する複数のクライアント装置を接続するようにしてもよい。   For example, the server device 1 and the storage 2 may be connected via a computer network. In that case, a network interface or the like is used as the interface 15. For example, a server device 1 that receives a transaction, a storage 2, and a plurality of client devices that transmit a transaction may be connected to one LAN.

また、上記実施の形態ではサーバ装置1のCPU11は1つであるが、共有メモリを使用する複数のCPUで複数のトランザクションを分散処理するようにしてもよい。また、複数のコアを有するCPU11により分散処理を行うようにしてもよい。   In the embodiment described above, the server apparatus 1 has one CPU 11, but a plurality of transactions may be distributedly processed by a plurality of CPUs using a shared memory. Further, the distributed processing may be performed by the CPU 11 having a plurality of cores.

また、コミットログ63の最大数を予め決めておき、コミットログ63の数が最大数に達したら、最も古いコミットログ63を削除して、次のコミットログ63を追加するようにしてもよい。   Alternatively, the maximum number of commit logs 63 may be determined in advance, and when the number of commit logs 63 reaches the maximum number, the oldest commit log 63 may be deleted and the next commit log 63 may be added.

また、トランザクション発生時、トランザクション消去時などのタイミングで、あるいは定期的に、現時点で存在するトランザクションのうち、最も古いものの開始時点以前のコミットログ63を削除するようにしてもよい。   Further, the commit log 63 before the start time of the oldest transaction among the existing transactions may be deleted at a timing such as when a transaction occurs, when a transaction is erased, or periodically.

本発明は、例えば、データベースエンジンに適用可能である。   The present invention is applicable to, for example, a database engine.

本発明の実施の形態に係るデータベースシステムの構成を示すブロック図である。It is a block diagram which shows the structure of the database system which concerns on embodiment of this invention. 図1のデータ処理装置における処理部およびデータ構造を示すブロックズである。2 is a block diagram illustrating a processing unit and a data structure in the data processing apparatus of FIG. 1. 図2における処理部およびデータ構造の具体例を示すブロック図である。It is a block diagram which shows the specific example of the process part in FIG. 2, and a data structure. この実施の形態におけるデータフォーマットの一例を示す図である。It is a figure which shows an example of the data format in this embodiment. 図1のサーバ装置におけるトランザクション処理を説明するフローチャートである。It is a flowchart explaining the transaction process in the server apparatus of FIG. 本発明の実施の形態におけるトランザクションコンテキスト生成を説明するフローチャートである。It is a flowchart explaining the transaction context production | generation in embodiment of this invention. 本発明の実施の形態におけるUPDATE処理を説明するフローチャートである。It is a flowchart explaining the UPDATE process in embodiment of this invention. 本発明の実施の形態におけるINSERT処理を説明するフローチャートである。It is a flowchart explaining the INSERT process in embodiment of this invention. 本発明の実施の形態におけるDELETE処理を説明するフローチャートである。It is a flowchart explaining the DELETE process in embodiment of this invention. 本発明の実施の形態におけるSELECT処理を説明するフローチャートである。It is a flowchart explaining the SELECT process in embodiment of this invention. 図10のステップS64の処理を説明するフローチャートである。It is a flowchart explaining the process of step S64 of FIG. 本発明の実施の形態におけるコミット処理を説明するフローチャートである。It is a flowchart explaining the commit process in embodiment of this invention. 本発明の実施の形態における、削除ログで指定されるレコードのバックアップについて説明するフローチャートである。It is a flowchart explaining the backup of the record designated by the deletion log in embodiment of this invention. 本発明の実施の形態における、更新ログで指定されるレコードのバックアップについて説明するフローチャートである。It is a flowchart explaining the backup of the record designated by the update log in embodiment of this invention. 本発明の実施の形態における、挿入ログで指定されるレコードのバックアップについて説明するフローチャートである。It is a flowchart explaining the backup of the record designated by the insertion log in embodiment of this invention.

符号の説明Explanation of symbols

1 サーバ装置(データ処理装置)
2 ストレージ
11 CPU(処理装置)
13 RAM(メモリ)
15 インタフェース(アクセス手段)
41 トランザクション演算部(トランザクション処理手段)
51 個別ログ
62 トランザクションマネージャ(コミット処理手段)
63 コミットログ
1 Server device (data processing device)
2 Storage 11 CPU (Processor)
13 RAM (memory)
15 Interface (access means)
41 Transaction calculation unit (transaction processing means)
51 Individual log 62 Transaction manager (commit processing means)
63 Commit log

Claims (20)

コンピュータにより少なくとも1つのレコードを有するストレージに対してアクセス可能なデータ処理装置において、
前記コンピュータ内でトランザクションを実行する処理装置と、
前記コンピュータ内で前記処理装置に接続され前記ストレージにアクセスするアクセス手段と、
前記コンピュータ内で前記処理装置に接続されたメモリと、
を備え、
前記メモリは、過去にコミットしたトランザクションにおいて操作されたレコードのコミット前の値をバックアップするコミットログを格納し、
前記処理装置は、前記メモリにアクセス可能であり、かつ前記アクセス手段を介して前記ストレージにアクセス可能であって、あるレコードを読み出す場合に、前記ストレージにおけるレコードの値より前記コミットログにおけるレコードの値を優先して使用しトランザクションを実行すること、
を特徴とするデータ処理装置。
In a data processing device accessible by a computer to a storage having at least one record,
A processing device for executing a transaction in the computer;
An access means for accessing the storage connected to the processing device in the computer;
A memory connected to the processing unit in the computer;
With
The memory stores a commit log that backs up an uncommitted value of a record operated in a transaction committed in the past,
When the processing device is accessible to the memory and is accessible to the storage via the access means and reads a record, the value of the record in the commit log is determined from the value of the record in the storage. To prioritize and execute transactions,
A data processing apparatus.
前記メモリは、トランザクションにおいて操作されたレコードの操作後の値を有する個別ログを格納し、
前記処理装置は、あるレコードを読み出す場合に、前記ストレージおよび前記コミットログにおけるレコードの値より前記個別ログにおけるレコードの値を優先して使用しトランザクションを実行すること、
を特徴とする請求項1記載のデータ処理装置。
The memory stores an individual log having a value after operation of a record operated in a transaction,
The processing device, when reading a certain record, executes a transaction using a record value in the individual log in preference to a record value in the storage and the commit log;
The data processing apparatus according to claim 1.
前記メモリは、トランザクションにおいて操作されたレコードの操作後の値を有する個別ログを格納し、
前記処理装置は、コミット時に、前記個別ログに値を格納されたレコードに対応する前記ストレージのレコードを読み出し、前記ストレージのレコードの値を前記コミットログとして格納した後に、前記個別ログにおける値を前記ストレージのレコードへ反映させること、
を特徴とする請求項1記載のデータ処理装置。
The memory stores an individual log having a value after operation of a record operated in a transaction,
The processing device reads a record of the storage corresponding to a record whose value is stored in the individual log at the time of commit, stores the value of the storage record as the commit log, and then sets the value in the individual log as the value of the individual log. Reflecting to storage records,
The data processing apparatus according to claim 1.
前記処理装置は、複数のトランザクションを並行して実行し、コミットするトランザクションにおいて操作されたレコードのコミット前の値を前記コミットログへバックアップするバックアップ処理の間、他のトランザクションのコミットを禁止することを特徴とする請求項1記載のデータ処理装置。   The processing device executes a plurality of transactions in parallel, and prohibits other transactions from being committed during a backup process that backs up the pre-commit value of a record operated in a commit transaction to the commit log. The data processing apparatus according to claim 1, wherein: 前記処理装置は、前記バックアップ処理の間、前記他のトランザクションについて、前記ストレージまたは前記コミットログからレコードの読み出しを実行可能であることを特徴とする請求項4記載のデータ処理装置。   The data processing apparatus according to claim 4, wherein the processing apparatus is capable of reading a record from the storage or the commit log for the other transaction during the backup process. 前記処理装置は、トランザクション毎に個別ログを生成し、コミットしたトランザクションの個別ログを消去し、
前記メモリは、トランザクション毎に個別ログを格納すること、
を特徴とする請求項4記載のデータ処理装置。
The processing device generates an individual log for each transaction, erases the individual log of the committed transaction,
The memory stores a separate log for each transaction;
The data processing apparatus according to claim 4.
前記処理装置は、あるトランザクションのコミットを実行しているときに、他のトランザクションについて、前記ストレージ、前記コミットログおよび前記他のトランザクションの個別ログからレコードの読み出しを実行可能であることを特徴とする請求項6記載のデータ処理装置。   The processing apparatus is capable of executing reading of a record from the storage, the commit log, and an individual log of the other transaction for another transaction while executing a commit of the transaction. The data processing apparatus according to claim 6. 前記コミットログは、時系列に沿って順番に前記メモリに格納され、
前記処理装置は、あるトランザクションについてレコードの読み出しを行う場合、そのトランザクションの開始時点より後の前記コミットログを参照し、そのレコードについての前記コミットログが存在すれば、前記コミットログからそのレコードの値を取得すること、
を特徴とする請求項1記載のデータ処理装置。
The commit log is stored in the memory sequentially in time series,
When reading a record for a transaction, the processing device refers to the commit log after the start time of the transaction, and if the commit log for the record exists, the value of the record from the commit log. To get the
The data processing apparatus according to claim 1.
少なくとも1つのレコードを有するストレージに対してアクセス可能なデータ処理装置において、
過去にコミットしたトランザクションにおいて操作されたレコードのコミット前の値をバックアップするコミットログと、
前記ストレージおよび前記コミットログにアクセス可能であって、あるレコードを読み出す場合に、前記ストレージにおけるレコードの値より前記コミットログにおけるレコードの値を優先して使用しトランザクションを実行するトランザクション処理手段と、
を備えることを特徴とするデータ処理装置。
In a data processing apparatus accessible to a storage having at least one record,
A commit log that backs up the pre-commit value of the record that was manipulated in a previously committed transaction;
Transaction processing means that can access the storage and the commit log, and executes a transaction by using a record value in the commit log in preference to a record value in the storage when reading a record;
A data processing apparatus comprising:
トランザクションにおいて操作されたレコードの操作後の値を有する個別ログと、
前記個別ログに値を格納されたレコードに対応する前記ストレージのレコードを読み出し、前記ストレージのレコードの値を前記コミットログに格納した後に、前記個別ログにおける値を前記ストレージのレコードへ反映させるコミット処理手段とを備え、
前記トランザクション処理手段は、あるレコードを読み出す場合に、前記ストレージおよび前記コミットログにおけるレコードの値より前記個別ログにおけるレコードの値を優先して使用しトランザクションを実行すること、
を特徴とする請求項9記載のデータ処理装置。
An individual log with the post-operation values of the records operated on in the transaction;
Commit processing for reading the storage record corresponding to the record whose value is stored in the individual log, storing the storage record value in the commit log, and then reflecting the value in the individual log to the storage record Means and
The transaction processing means, when reading a certain record, executes a transaction using the record value in the individual log in preference to the record value in the storage and the commit log;
The data processing apparatus according to claim 9.
トランザクションを実行する処理装置と前記処理装置に接続されたメモリとを有するコンピュータを使用して、ストレージにおける少なくとも1つのレコードを操作してトランザクションを実行するトランザクション実行方法において、
前記処理装置により、トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値を前記ストレージから読み出してコミットログとして前記メモリに格納し、
前記処理装置により、トランザクションにおいてあるレコードを読み出す場合に、前記ストレージにおけるレコードの値より前記コミットログにおけるレコードの値を優先して使用すること、
を特徴とするトランザクション実行方法。
In a transaction execution method for executing a transaction by operating at least one record in a storage using a computer having a processing device for executing a transaction and a memory connected to the processing device,
When the transaction is committed by the processing device, the value before the commit of the record operated in the transaction is read from the storage and stored in the memory as a commit log,
When reading a certain record in a transaction by the processing device, the record value in the commit log is used in preference to the record value in the storage.
A transaction execution method characterized by the above.
前記処理装置により、複数のトランザクションを並行して実行し、コミットするトランザクションにおいて操作されたレコードのコミット前の値を前記コミットログへバックアップするバックアップ処理の間、他のトランザクションのコミットを禁止することを特徴とする請求項11記載のトランザクション実行方法。   The processing device executes a plurality of transactions in parallel, and prohibits the commit of other transactions during the backup process that backs up the pre-commit value of the record operated in the commit transaction to the commit log. The transaction execution method according to claim 11, wherein: 前記処理装置により、トランザクション毎に個別ログを生成し、
前記処理装置により、コミットしたトランザクションの個別ログを消去し、
前記メモリに、トランザクション毎に個別ログを格納すること、
を特徴とする請求項12記載のトランザクション実行方法。
The processing device generates an individual log for each transaction,
The individual log of committed transactions is deleted by the processing device,
Storing an individual log for each transaction in the memory;
The transaction execution method according to claim 12.
前記コミットログを、時系列に沿って順番に前記メモリに格納し、
あるトランザクションについてレコードの読み出しを行う場合、そのトランザクションの開始時点より後の前記コミットログを参照し、

そのレコードについての前記コミットログが存在すれば、前記コミットログからそのレコードの値を取得すること、
を特徴とする請求項11記載のトランザクション実行方法。
The commit log is stored in the memory sequentially in time series,
When reading a record for a transaction, refer to the commit log after the start of the transaction,

If the commit log for the record exists, obtaining the value of the record from the commit log;
The transaction execution method according to claim 11.
ストレージにおける少なくとも1つのレコードを操作してトランザクションを実行するトランザクション実行方法において、
トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をコミットログにバックアップするステップと、
トランザクションにおいてあるレコードを読み出す場合に、そのレコードの値が前記コミットログにあれば、前記コミットログにおけるレコードの値を使用し、そのレコードの値が前記コミットログになければ、前記ストレージから読み出されたレコードの値を使用するステップと、
を備えることを特徴とするトランザクション実行方法。
In a transaction execution method for executing a transaction by operating at least one record in storage,
When committing a transaction, backing up the pre-commit value of the record operated on in the transaction to a commit log;
When reading a record in a transaction, if the record value is in the commit log, the record value in the commit log is used, and if the record value is not in the commit log, the record is read from the storage. Using the value of the selected record,
A transaction execution method comprising:
トランザクションを実行する処理装置と前記処理装置に接続されたメモリとを有するコンピュータに、
前記処理装置により、トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をストレージから読み出してコミットログとして前記メモリに格納させ、
前記処理装置により、トランザクションにおいてあるレコードを読み出す場合に、前記ストレージにおけるレコードの値より前記コミットログにおけるレコードの値を優先して使用させること、
を特徴とするトランザクション実行プログラム。
A computer having a processing device for executing a transaction and a memory connected to the processing device;
When the transaction is committed by the processing device, the value before the commit of the record operated in the transaction is read from the storage and stored in the memory as a commit log,
When reading a certain record in a transaction by the processing device, the record value in the commit log is used in preference to the record value in the storage;
A transaction execution program characterized by:
複数のトランザクションを並行して実行させ、コミットするトランザクションにおいて操作されたレコードのコミット前の値を前記コミットログへバックアップするバックアップ処理の間、他のトランザクションのコミットを禁止させることを特徴とする請求項16記載のトランザクション実行プログラム。   A plurality of transactions are executed in parallel, and committing of other transactions is prohibited during a backup process of backing up a value before commit of a record operated in a transaction to be committed to the commit log. 16. The transaction execution program according to 16. トランザクション毎に個別ログを生成させ、
コミットしたトランザクションの個別ログを消去させ、
前記メモリに、トランザクション毎に個別ログを格納させること、
を特徴とする請求項17記載のトランザクション実行プログラム。
Generate a separate log for each transaction,
Clear the individual logs of committed transactions,
Storing an individual log for each transaction in the memory;
The transaction execution program according to claim 17.
前記コミットログを、時系列に沿って順番に前記メモリに格納させ、
あるトランザクションについてレコードの読み出しを行う場合、そのトランザクションの開始時点より後の前記コミットログを参照させ、
そのレコードについての前記コミットログが存在すれば、前記コミットログからそのレコードの値を取得させること、
を特徴とする請求項16記載のトランザクション実行プログラム。
The commit log is stored in the memory sequentially in time series,
When reading a record for a transaction, the commit log after the start time of the transaction is referred to.
If the commit log for that record exists, get the value of that record from the commit log;
The transaction execution program according to claim 16.
コンピュータに、ストレージにおける少なくとも1つのレコードを操作してトランザクションを実行させるトランザクション実行プログラムにおいて、
トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をコミットログにバックアップするステップと、
トランザクションにおいてあるレコードを読み出す場合に、そのレコードの値が前記コミットログにあれば、前記コミットログにおけるレコードの値を使用し、そのレコードの値が前記コミットログになければ、前記ストレージから読み出されたレコードの値を使用するステップと、
を実行させることを特徴とするトランザクション実行プログラム。
In a transaction execution program that causes a computer to execute a transaction by operating at least one record in a storage,
When committing a transaction, backing up the pre-commit value of the record operated on in the transaction to a commit log;
When reading a record in a transaction, if the record value is in the commit log, the record value in the commit log is used, and if the record value is not in the commit log, the record is read from the storage. Using the value of the selected record,
A transaction execution program characterized in that the program is executed.
JP2007011258A 2007-01-22 2007-01-22 Transaction processing of database Pending JP2008176687A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007011258A JP2008176687A (en) 2007-01-22 2007-01-22 Transaction processing of database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007011258A JP2008176687A (en) 2007-01-22 2007-01-22 Transaction processing of database

Publications (1)

Publication Number Publication Date
JP2008176687A true JP2008176687A (en) 2008-07-31

Family

ID=39703645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007011258A Pending JP2008176687A (en) 2007-01-22 2007-01-22 Transaction processing of database

Country Status (1)

Country Link
JP (1) JP2008176687A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018527653A (en) * 2015-07-10 2018-09-20 アビニシオ テクノロジー エルエルシー Method and architecture for providing database access control in a network using a distributed database system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018527653A (en) * 2015-07-10 2018-09-20 アビニシオ テクノロジー エルエルシー Method and architecture for providing database access control in a network using a distributed database system

Similar Documents

Publication Publication Date Title
US7124128B2 (en) Method, system, and program for managing requests to tracks subject to a relationship
US8392387B2 (en) Asynchronous deletion of a range of messages processed by a parallel database replication apply process
JP4741371B2 (en) System, server apparatus, and snapshot format conversion method
US8224812B2 (en) Database management system and method
US8510316B2 (en) Database processing system and method
JP6445049B2 (en) Log management method and computer system
US10366075B2 (en) Database management system and method
US8832022B2 (en) Transaction processing device, transaction processing method and transaction processing program
US20100241656A1 (en) Data management system and data management method
JP2008502060A (en) Method, system and program for migrating source data to target data
US10007548B2 (en) Transaction system
JP2006146904A (en) System and method for creating object-level snapshot in storage system
JPH0683679A (en) Method and system for simultaneous access in backup copy of data
US9652492B2 (en) Out-of-order execution of strictly-ordered transactional workloads
US7925679B2 (en) System and program for result set management
US6658541B2 (en) Computer system and a database access method thereof
JP4432087B2 (en) Database update management system, program and method
JP2006527874A (en) Method, system, and program for managing association between one target volume and one source volume
US20060069888A1 (en) Method, system and program for managing asynchronous cache scans
JP2008176687A (en) Transaction processing of database
US7949632B2 (en) Database-rearranging program, database-rearranging method, and database-rearranging apparatus
CN117076147B (en) Deadlock detection method, device, equipment and storage medium
US20240330111A1 (en) Database node soft restart
JP7024432B2 (en) Database management system, data conversion program, data conversion method and data conversion device
US8055629B2 (en) Transitioning an archived file to write-once-read-many