JP2008176687A - Transaction processing of database - Google Patents
Transaction processing of database Download PDFInfo
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
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
上記のシステムでは、ある程度の分離性は維持されるものの、あるトランザクションがコミットすると、データベース内で、そのトランザクションにより操作されたレコードの値が変わってしまう。そのため、上記のシステムでは、高度な分離性を維持することが困難である。 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
本発明は、トランザクションを分散処理する際に高度な分離性を可能とすることを目的とする。 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
サーバ装置1は、CPU11、ROM12、RAM13、ハードディスクドライブ14、インタフェース15、通信装置16およびインタフェース17を有する。サーバ装置1において、CPU11、ROM12、RAM13等は、コンピュータを構成する。
The
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(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
また、インタフェース15は、ストレージ2にアクセス可能なアクセス手段としてのインタフェース回路である。インタフェース15には、周辺機器用のインタフェース、ネットワークインタフェースなどの通信機器が使用される。周辺機器用のインタフェースとしては、SCSI(Small Computer System Interface )、IDE(Integrated Device Electronics )互換のもの、IEEE1394、USB(Universal Serial Bus)などがある。ネットワークインタフェースとしては、イーサネット(登録商標)などがある。
The
また、通信装置16は、ネットワークインタフェースカード、モデムなどといった、外部装置との通信に使用される装置である。なお、インタフェース15をネットワークインタフェースとする場合には、通信装置16の代わりにインタフェース15を使用してもよい。通信装置16は、通信回線を介して、トランザクションを供給する1または複数の外部クライアント装置と通信する。
The
上述のCPU11、ROM12、RAM13、HDD14、インタフェース15、通信装置16は、1台のコンピュータ内で、バス、ブリッジコントローラなどにより互いに接続される。なお、これらの接続形態は、特に限定されるものではない。
The
例えば、サーバ用コンピュータなどを使用してこのシステムを実現する場合には、CPU11などを接続したマザーボードをサーバ用コンピュータの筐体内に配置し、そのサーバ用コンピュータにインタフェースを介してストレージ2が接続される。
For example, when this system is realized by using a server computer or the like, a motherboard to which the
次に、プログラム21をCPU11により実行した際に実現される処理部およびデータ構造について説明する。図2は、図1のデータ処理装置における処理部およびデータ構造を示すブロック図である。
Next, the processing unit and data structure realized when the
図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
1つのトランザクション演算部41および1つのトランザクションコンテキスト42により、1つのトランザクションを処理するトランザクション処理部61が構成される。マルチスレッドに対応したオペレーティングシステムが使用される場合には、1つのトランザクション処理部61に1つのスレッドが割り当てられる。
One
また、トランザクションマネージャ62は、トランザクション発生時にトランザクション処理部61を生成し、トランザクション完了時にトランザクション処理部61を消去する処理部である。また、トランザクションマネージャ62は、トランザクションのコミット時に、コミットログ63へのレコードの値のバックアップ、およびストレージ2への書き込みを行うコミット処理手段としての処理部である。
The
また、コミットログ63は、コミットしたトランザクションにおいて値に変更が発生したレコードの、変更前の値をバックアップするデータである。コミットログ63は、1回
の変更につき1つ、発生した順番でRAM13に格納される。
The commit
次に、図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
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
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
図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
図2におけるコミットログ63は、図3におけるCLBクラスインスタンス84により実装される。CLBクラスインスタンス84は、メソッド121として、コミットログ63を追加するinsertLogメソッドを有し、データとして、ポインタ122および一連のコミットログ63を有する。ポインタ122は、一連のコミットログ63における先頭(最新)のコミットログ63へのポインタである。
The commit
また、図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
ここで、この実施の形態における各データのフォーマットを説明する。図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
また、図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
次に、上記装置の動作について説明する。 Next, the operation of the above apparatus will be described.
まず、HDD14のプログラム21が、RAM13にロードされ、CPU11がプログラム21の実行を開始する。これにより、まず、TMクラスインスタンス83、CLBクラスインスタンス84およびストレージクラスインスタンス85が生成される。
First, the
そして、1または複数の外部クライアント装置(図示せず)から通信装置16を介してトランザクションが受信されると、CPU11は、プログラム21に従って、以下のように、トランザクションを実行する。図5は、図1のサーバ装置におけるトランザクション処理を説明するフローチャートである。
When a transaction is received from one or a plurality of external client devices (not shown) via the
1つのトランザクションが受信されると、まず、トランザクションマネージャ62がトランザクションコンテキスト42を含む1つのトランザクション処理部61を生成する(ステップS1)。その際、TMクラスインスタンス83のbeginメソッドにより、TCクラスインスタンス81およびOLBクラスインスタンス82が生成される。
When one transaction is received, first, the
次に、トランザクション演算部41によりそのトランザクションが実行される(ステップS2)。トランザクション演算部41は、そのトランザクションに記述されているレコード操作および演算を実行する。演算としては、四則演算がある。レコード操作としては、データベース内のレコードの読み出し、更新、挿入および削除がある。レコードの読み込みは、SELECT処理として実行され、レコードの更新は、UPDATE処理として実行され、レコードの挿入は、INSERT処理として実行され、レコードの削除は、DELETE処理として実行される。
Next, the transaction is executed by the transaction calculation unit 41 (step S2). The
その際、SELECT処理は、TCクラスインスタンス81のselectメソッドにより実行され、ストレージ2、個別ログ51およびコミットログ63のいずれかに格納されたレコードの値が、戻り値(つまり、読み出した値)とされる。
At this time, the SELECT process is executed by the select method of the
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
また、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
そして、トランザクションに記述されているレコード操作および演算が完了すると、トランザクションマネージャ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
以上のように、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
また、複数のトランザクションが処理される場合、例えば複数のスレッドにより分散処理される。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
次に、上述のトランザクションコンテキスト生成(ステップ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
まず、TCクラスインスタンス81が生成される(ステップS11)。そして、そのTCクラスインスタンス81へのポインタ112がTMクラスインスタンス83に追加される(ステップS12)。
First, a
次に、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
そして、OLBクラスインスタンス82が生成され(ステップS16)、そのOLBクラスインスタンス82へのポインタ値がTCクラスインスタンスのポインタ92にセットされる(ステップS17)。これにより、TCクラスインスタンス81とOLBクラスインスタンス82との対応関係が確立される。
Then, an
このようにして、1つのトランザクションに対応して1つのTCクラスインスタンス81および1つのOLBクラスインスタンス82が生成され、データの初期化が行われる。
In this way, one
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
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
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
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
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
そのレコードが削除されていない場合(ステップS56)、コミットログ63を参照してそのレコードが更新されたか否かが確認される(ステップS57)。そのレコードが更新されていない場合(ステップS58)、コミットログ63を参照してそのレコードが挿入されたものか否かが確認される(ステップS59)。
If the record has not been deleted (step S56), it is confirmed by referring to the commit
そのレコードが挿入されたものではない場合(ステップS60)、ストレージ2から読み出されたそのレコードの値が保存される(ステップS61)。つまり、個別ログ51およびコミットログ63のいずれにもそのレコードのログがない場合には、ストレージ2から読み出されたレコード値が、SELECT処理の対象のレコードの値として使用される。
If the record is not inserted (step S60), the value of the record read from the
一方、そのレコードが更新されていると個別ログ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
また、そのレコードが削除されていると個別ログ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
また、そのレコードが挿入されているとコミットログ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
一方、ストレージ2にそのレコードが存在しない場合、そのレコードが、個別ログ51の挿入ログ102から読み出される(ステップS75)。そのレコードが挿入ログ102に存在する場合、そのレコード値が、次のレコードの、ストレージ2での値と見なされて使用される(ステップS76)。
On the other hand, when the record does not exist in the
また、挿入ログ102にもそのレコードが存在しない場合、そのレコードが、コミットログ63の「削除」属性のログから読み出される(ステップS77)。そのレコードがコミットログ63の「削除」属性のログに存在する場合、そのレコード値が、次のレコードの、ストレージ2での値と見なされて使用される(ステップS79)。
If the record does not exist in the
そして、コミットログ63の「削除」属性のログにもそのレコードが存在しない場合には、そのレコードが存在しないと判断される(ステップS80)。つまり、戻り値としてnullが返される。
If the record does not exist in the “deleted” attribute log of the commit
読み込み対象のレコードが存在する場合には、そのレコードに対してステップ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
まず、他のトランザクションのコミット処理がロックされる。つまり、トランザクションのコミット処理が実行されると、他のトランザクションのコミット処理が制限される(ステップ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
また、個別ログ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
また、個別ログ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
このように、操作されたレコードのコミット前の値がコミットログ63へバックアップされる。そして、CLBクラスインスタンス84のロックが解除される(ステップS96)。
In this way, the value before committing the operated record is backed up to the commit
その後、ストレージ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
このように、操作前のレコード値のバックアップおよび操作後のレコードの反映が完了した後、他のトランザクションのコミット処理のロックが解除される(ステップ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
以上のように、上記実施の形態によれば、RAM13は、過去にコミットしたトランザクションにおいて操作されたレコードのコミット前の値をバックアップするコミットログ63を格納する。また、CPU11は、RAM13にアクセス可能であり、かつインタフェース15を介してストレージ2にアクセス可能であって、あるレコードを読み出す場合に、ストレージ2におけるレコードの値よりコミットログ63におけるレコードの値を優先して使用しトランザクションを実行する。
As described above, according to the above-described embodiment, the
これにより、他のトランザクションがコミットした後でも、トランザクション開始時のレコード値をコミットログ63から取得することができる。このため、トランザクションを分散処理する際に高度な分離性を維持することができる。
As a result, the record value at the start of the transaction can be acquired from the commit
また、上記実施の形態によれば、RAM13は、個別ログ51を格納する。個別ログ51は、トランザクションにおいて操作されたレコードの操作後の値を有する。そして、トランザクションが実行される際、あるレコードを読み出すときに、ストレージ2およびコミットログ63におけるレコードの値より個別ログ51におけるレコードの値が優先して使用される。
Further, according to the above embodiment, the
これにより、自己のトランザクションの実行によりレコード値が変更した場合には、RAM13内の個別ログ51からレコード値が読み出される。このため、ストレージ2にアクセスする頻度が減り、高速にトランザクションを実行することができる。
As a result, when the record value is changed by executing its own transaction, the record value is read from the
また、上記実施の形態によれば、バックアップ処理の間、他のトランザクションについて、ストレージ2またはコミットログ63からレコードの読み出しが実行可能である。
Further, according to the above-described embodiment, it is possible to read records from the
これにより、レコード読み出しがロックされる期間が短くなり、トランザクションの処理時間を短くすることができる。 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
これにより、あるトランザクションの個別ログ51が他のトランザクションからアクセスされることがなく、トランザクションごとにアドレス空間も別個のものとすることができ、分散処理が行い易くなる。
Thereby, the
また、上記実施の形態によれば、あるトランザクションのコミット処理を実行しているときに、他のトランザクションについて、ストレージ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
これにより、レコード読み出しがロックされる期間が短くなり、トランザクションの処理時間を短くすることができる。 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
これにより、コミットログ63の参照が最小限となり、レコード読み出しが高速に行うことができる。このため、トランザクションを高速に実行することができる。
Thereby, the reference to the commit
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。 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
また、上記実施の形態ではサーバ装置1のCPU11は1つであるが、共有メモリを使用する複数のCPUで複数のトランザクションを分散処理するようにしてもよい。また、複数のコアを有するCPU11により分散処理を行うようにしてもよい。
In the embodiment described above, the
また、コミットログ63の最大数を予め決めておき、コミットログ63の数が最大数に達したら、最も古いコミットログ63を削除して、次のコミットログ63を追加するようにしてもよい。
Alternatively, the maximum number of commit
また、トランザクション発生時、トランザクション消去時などのタイミングで、あるいは定期的に、現時点で存在するトランザクションのうち、最も古いものの開始時点以前のコミットログ63を削除するようにしてもよい。
Further, the commit
本発明は、例えば、データベースエンジンに適用可能である。 The present invention is applicable to, for example, a database engine.
1 サーバ装置(データ処理装置)
2 ストレージ
11 CPU(処理装置)
13 RAM(メモリ)
15 インタフェース(アクセス手段)
41 トランザクション演算部(トランザクション処理手段)
51 個別ログ
62 トランザクションマネージャ(コミット処理手段)
63 コミットログ
1 Server device (data processing device)
2
13 RAM (memory)
15 Interface (access means)
41 Transaction calculation unit (transaction processing means)
51
63 Commit log
Claims (20)
前記コンピュータ内でトランザクションを実行する処理装置と、
前記コンピュータ内で前記処理装置に接続され前記ストレージにアクセスするアクセス手段と、
前記コンピュータ内で前記処理装置に接続されたメモリと、
を備え、
前記メモリは、過去にコミットしたトランザクションにおいて操作されたレコードのコミット前の値をバックアップするコミットログを格納し、
前記処理装置は、前記メモリにアクセス可能であり、かつ前記アクセス手段を介して前記ストレージにアクセス可能であって、あるレコードを読み出す場合に、前記ストレージにおけるレコードの値より前記コミットログにおけるレコードの値を優先して使用しトランザクションを実行すること、
を特徴とするデータ処理装置。 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.
前記メモリは、トランザクション毎に個別ログを格納すること、
を特徴とする請求項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.
前記処理装置は、あるトランザクションについてレコードの読み出しを行う場合、そのトランザクションの開始時点より後の前記コミットログを参照し、そのレコードについての前記コミットログが存在すれば、前記コミットログからそのレコードの値を取得すること、
を特徴とする請求項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.
過去にコミットしたトランザクションにおいて操作されたレコードのコミット前の値をバックアップするコミットログと、
前記ストレージおよび前記コミットログにアクセス可能であって、あるレコードを読み出す場合に、前記ストレージにおけるレコードの値より前記コミットログにおけるレコードの値を優先して使用しトランザクションを実行するトランザクション処理手段と、
を備えることを特徴とするデータ処理装置。 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.
前記処理装置により、トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値を前記ストレージから読み出してコミットログとして前記メモリに格納し、
前記処理装置により、トランザクションにおいてあるレコードを読み出す場合に、前記ストレージにおけるレコードの値より前記コミットログにおけるレコードの値を優先して使用すること、
を特徴とするトランザクション実行方法。 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.
前記処理装置により、コミットしたトランザクションの個別ログを消去し、
前記メモリに、トランザクション毎に個別ログを格納すること、
を特徴とする請求項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.
トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をコミットログにバックアップするステップと、
トランザクションにおいてあるレコードを読み出す場合に、そのレコードの値が前記コミットログにあれば、前記コミットログにおけるレコードの値を使用し、そのレコードの値が前記コミットログになければ、前記ストレージから読み出されたレコードの値を使用するステップと、
を備えることを特徴とするトランザクション実行方法。 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:
コミットしたトランザクションの個別ログを消去させ、
前記メモリに、トランザクション毎に個別ログを格納させること、
を特徴とする請求項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.
トランザクションをコミットする際に、そのトランザクションにおいて操作されたレコードのコミット前の値をコミットログにバックアップするステップと、
トランザクションにおいてあるレコードを読み出す場合に、そのレコードの値が前記コミットログにあれば、前記コミットログにおけるレコードの値を使用し、そのレコードの値が前記コミットログになければ、前記ストレージから読み出されたレコードの値を使用するステップと、
を実行させることを特徴とするトランザクション実行プログラム。 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.
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)
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 |
-
2007
- 2007-01-22 JP JP2007011258A patent/JP2008176687A/en active Pending
Cited By (1)
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 |