JP2011076487A - 計算機、及びデータベース管理プログラム - Google Patents
計算機、及びデータベース管理プログラム Download PDFInfo
- Publication number
- JP2011076487A JP2011076487A JP2009228864A JP2009228864A JP2011076487A JP 2011076487 A JP2011076487 A JP 2011076487A JP 2009228864 A JP2009228864 A JP 2009228864A JP 2009228864 A JP2009228864 A JP 2009228864A JP 2011076487 A JP2011076487 A JP 2011076487A
- Authority
- JP
- Japan
- Prior art keywords
- node
- update
- database
- redo log
- information
- 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
【課題】共有ディスク装置を使用しない安価なハードウェア構成を前提として、単純な構成を有する多重化データベース制御システムを構築する。
【解決手段】ノード2は、自己が保有するデータベースの自己更新情報としての自ノード用redoログ120と、自己が保有するデータベース以外の他の更新情報としての他ノード用redoログ130と、を各データベース毎に分けて保有し、ノード2が自ノード用redoログ120を更新する際に、他ノード用redoログ130を参照することで、自己が保有するデータベースの更新と自己が保有する以外のデータベースの更新とで競合が発生しているか否かを判定することを特徴とする。
【選択図】図2
【解決手段】ノード2は、自己が保有するデータベースの自己更新情報としての自ノード用redoログ120と、自己が保有するデータベース以外の他の更新情報としての他ノード用redoログ130と、を各データベース毎に分けて保有し、ノード2が自ノード用redoログ120を更新する際に、他ノード用redoログ130を参照することで、自己が保有するデータベースの更新と自己が保有する以外のデータベースの更新とで競合が発生しているか否かを判定することを特徴とする。
【選択図】図2
Description
本発明は、多重化されたデータベースのうち少なくとも一つを備える計算機、及びデータベース管理プログラムに関する。
従来の多重化データベースにおいては、各ノードにデータそのものを格納するためのDBファイルと、更新履歴情報を逐次書き込むためのredoログとを持っている。
図11(a)に示すように、多重化データベースは、データベースの可用性を向上するためにノードを2重化する。ノードの2重化を行う方法の一つに、分散トランザクションの機能を用いる方法がある。
図11(a)に示すように、多重化データベースは、データベースの可用性を向上するためにノードを2重化する。ノードの2重化を行う方法の一つに、分散トランザクションの機能を用いる方法がある。
この方法では、更新を行う際に、クライアントから、両ノードに対して同一の内容の更新要求を行い、2フェーズコミット方式により、両ノード間のDBファイルの内容の整合を保障する。すなわち、この方法は、コミット要求時に、両ノードにコミット準備指示を行い、両ノードから準備完了応答を得られてから、両ノードに対してコミット指示を行う。なお、分散トランザクションの機能を用いる方法の詳細は、例えば、特許文献1に記載がある。
また、別の方法として、共有ディスクによる2重化の方法がある。図11(b)に示すように、redoログとDBファイルとを共有ディスクに格納し、両ノードに接続することによって、データベースを2重化する。redoログは、各ノード用に一つずつ用意されるが、DBファイルは、物理的に同じものを共有する。なお、共有ディスクを用いる方法の詳細は、例えば、非特許文献1に記載がある。
この方法では、一つのディスク装置を共有してDBを構成しているため、片方のノードで実行された操作は、即時他ノードにも反映されている。
Barb Lundhild,Peter Sechser、"Oracle RAC 10g"、[online]、2005年9月、Oracle Corporation、[平成21年9月16日検索]、インターネット<URL:http://otndnld.oracle.co.jp/products/database/oracle10g/clustering/pdf/TWP_RAC10g.pdf >
このように、分散トランザクションの機能を用いるデータベースの多重化方法は、更新操作に対する競合があれば、その時点で待ちが発生し、また、コミット動作中に障害が発生すると、自動的にロックを解除できなくなり、制御が複雑であるという問題がある。
また、共有ディスク装置を用いるデータベースの多重化方法では、共有ディスク装置が高価であり、両ノードを地理的に分散させた配置とすることができないという欠点がある。
また、共有ディスク装置を用いるデータベースの多重化方法では、共有ディスク装置が高価であり、両ノードを地理的に分散させた配置とすることができないという欠点がある。
本発明は前記問題に鑑みてなされたものであり、データベースを地理的に分散させた状態であっても、データベースの更新における競合を判定することができる、計算機、及びデータベース管理プログラムを提供することを目的とする。
前記目的を達成するために、本発明に係る計算機は、複数の同じ内容のデータベースに通信可能に接続されて多重化されたデータベースのうち少なくとも1つを備える計算機であって、自己が保有するデータベースの自己更新情報と、自己が保有するデータベース以外のデータベースの他の更新情報とを各データベース毎に分けて保有する記憶部と、前記自己更新情報を更新する際に、前記他の更新情報を参照することで、前記多重化されたデータベースの更新における競合を判定する競合判定部と、を備えることを特徴とする。
前記目的を達成するために、本発明に係るデータベース管理プログラムは、複数の同じ内容のデータベースに通信可能に接続されて多重化されたデータベースのうち少なくとも1つを備える計算機の制御装置に実行させるデータベース管理プログラムであって、前記自己の計算機が保有するデータベースの自己更新情報と、前記自己が保有するデータベース以外のデータベースの他の更新情報とを各データベース毎に分けて記憶部に保有させる機能と、前記自己情報を更新する際に、前記他の更新情報を参照することで、前記多重化されたデータベースの更新における競合を判定する機能と、を前記制御装置に実現させることを特徴とする。
本発明によれば、データベースを地理的に分散させた状態であっても、データベースの更新における競合を判定することができる。このため、共有ディスク装置を使用しない安価なハードウェア構成を前提として、分散トランザクション方式によるデータベース制御システムよりも単純な構成にすることができる。
≪第1実施形態に係るデータベース制御システムの構成≫
<概要>
図1は、第1実施形態に係るデータベース制御システムの構成図である。
データベース制御システム1は、ノード2A,2B(以下、まとめてノード2と呼ぶときがある),クライアント8A,8B,・・8X(以下、まとめてクライアント8と呼ぶときがある),及びネットワーク9を備えて構成される。データベース制御システム1は、クライアント8がネットワーク9を介してノード2が備える記憶装置200A,200B(以下、まとめて記憶装置200と呼ぶときがある)内に記憶されているデータベース(DB)220A,220B(以下、まとめてデータベース(DB)220と呼ぶときがある)を更新する。データベース220の更新は、制御装置100に記憶されるredoログ120,130(図2参照)を使って行われる。データベース220の更新処理についての詳細は後述する。
<概要>
図1は、第1実施形態に係るデータベース制御システムの構成図である。
データベース制御システム1は、ノード2A,2B(以下、まとめてノード2と呼ぶときがある),クライアント8A,8B,・・8X(以下、まとめてクライアント8と呼ぶときがある),及びネットワーク9を備えて構成される。データベース制御システム1は、クライアント8がネットワーク9を介してノード2が備える記憶装置200A,200B(以下、まとめて記憶装置200と呼ぶときがある)内に記憶されているデータベース(DB)220A,220B(以下、まとめてデータベース(DB)220と呼ぶときがある)を更新する。データベース220の更新は、制御装置100に記憶されるredoログ120,130(図2参照)を使って行われる。データベース220の更新処理についての詳細は後述する。
ここで、データベース220A,及びデータベース220Bは同じ内容である。データベース制御システム1では、データベース220の更新に際し、クライアント8はノード2A,又はノード2Bのどちらかにアクセスし、一方のデータベース220A,又はデータベース220Bを更新する。更新したデータベース220を備える一方のノード2は、他方のノード2に更新情報を送信し、更新情報を受信した他方のノード2は、受信した更新情報を基に自己のデータベース220を更新する。このように、第1実施形態に係るデータベース制御システム1では、ノード2が相互に自己のデータベース220の更新情報を送信しあうことで、データベース220の内容の同一性を図っている。
図1に示すデータベース制御システム1は、データベース220を2重化する構成としているが、より多数のノード2を接続してデータベース220を3重,4重又はそれ以上の多重に構成してもよい。その場合、更新したデータベース220を備えるノード2は、多重化されたデータベース220を備えるすべてのノード2に対して、自己のデータベース220の更新情報を送信することになる。
また、データベース制御システム1は、ノード2Aをあるローカルネットワークに接続し、ノード2Bをノード2Aが属するローカルネットワークとは異なるローカルネットワークに接続し、それぞれのローカルネットワークをグローバルネットワークに接続するようにしてもよい。このような構成にすれば、ノード2を地理的に離した場所に設置することが可能となる。
以下、データベース制御システム1の各構成装置について説明する。
以下、データベース制御システム1の各構成装置について説明する。
<ノード>
ノード2は、ネットワークに接続され、データベースを備えるディスク装置である。例えば、3層アーキテクチャのクライアントサーバシステムにおけるデータアクセス層の処理を行うサーバ,集中処理システムにおけるホストコンピュータ等を含む広い概念である。
ノード2の構成は、装置の種類によって異なるが、クライアントサーバシステムにおけるサーバの場合には、例えば、制御装置100,記憶装置200,入力装置3,表示装置4,通信装置5,タイマ6で構成される。
ノード2は、ネットワークに接続され、データベースを備えるディスク装置である。例えば、3層アーキテクチャのクライアントサーバシステムにおけるデータアクセス層の処理を行うサーバ,集中処理システムにおけるホストコンピュータ等を含む広い概念である。
ノード2の構成は、装置の種類によって異なるが、クライアントサーバシステムにおけるサーバの場合には、例えば、制御装置100,記憶装置200,入力装置3,表示装置4,通信装置5,タイマ6で構成される。
(制御装置)
制御装置100は、CPU,メモリ(記憶部),及びこれらの周辺回路等(いずれも図示せず)から構成される。制御装置100は、記憶装置200に記憶されるDBMS(DataBase Management System:データベース管理システム(データベース管理プログラム))210,及びOS(Operating System)230をメモリにロードし実行することで、様々な機能を実現する。制御装置100が備える機能については後記する。
制御装置100は、CPU,メモリ(記憶部),及びこれらの周辺回路等(いずれも図示せず)から構成される。制御装置100は、記憶装置200に記憶されるDBMS(DataBase Management System:データベース管理システム(データベース管理プログラム))210,及びOS(Operating System)230をメモリにロードし実行することで、様々な機能を実現する。制御装置100が備える機能については後記する。
(記憶装置)
記憶装置200は、HDD(Hard Disk Drive)等で構成され、DBMS210,DB220,及びOS230を記憶する。DBMS210は、データベースとして蓄えた情報を制御し、活用するためのソフトウェアである。DB220は、DBMS210の管理下で記憶装置200に記憶されているデータである。OS230は、ノード2のコンピュータシステムを管理し、基本的なユーザ操作環境を提供するソフトウェアである。
DB220は、複数のファイルにより構成されている。DB220を構成するファイルについては後記する。
記憶装置200は、HDD(Hard Disk Drive)等で構成され、DBMS210,DB220,及びOS230を記憶する。DBMS210は、データベースとして蓄えた情報を制御し、活用するためのソフトウェアである。DB220は、DBMS210の管理下で記憶装置200に記憶されているデータである。OS230は、ノード2のコンピュータシステムを管理し、基本的なユーザ操作環境を提供するソフトウェアである。
DB220は、複数のファイルにより構成されている。DB220を構成するファイルについては後記する。
(入力装置,表示装置,通信装置,タイマ)
入力装置3は、キーボード,マウス等の操作入力用デバイスを含み、ノード2の操作者の入力操作を受け入れて、制御装置100に対して出力する。
表示装置4は、LCD,CRT等であって、制御装置100から渡される出力画像等を表示する。
通信装置5は、LAN用のアダプタ装置,ISDN通信回線用のTA,又はモデム等であって、制御装置100の指示に従って動作し、ネットワーク9を介してノード2又はクライアント8とデータの送受信を行う。
タイマ6は、ノード2の時計であり、RTC(Real Time Clock)等で構成される。タイマ6は、制御装置100に時刻をデータとして提供する。
入力装置3は、キーボード,マウス等の操作入力用デバイスを含み、ノード2の操作者の入力操作を受け入れて、制御装置100に対して出力する。
表示装置4は、LCD,CRT等であって、制御装置100から渡される出力画像等を表示する。
通信装置5は、LAN用のアダプタ装置,ISDN通信回線用のTA,又はモデム等であって、制御装置100の指示に従って動作し、ネットワーク9を介してノード2又はクライアント8とデータの送受信を行う。
タイマ6は、ノード2の時計であり、RTC(Real Time Clock)等で構成される。タイマ6は、制御装置100に時刻をデータとして提供する。
<クライアント>
クライアント8は、ネットワーク9を介してノード2が備えるDB220の更新を要求する装置である。クライアント8は、PC(Personal Computer),携帯端末等で構成される。
クライアント8は、ネットワーク9を介してノード2が備えるDB220の更新を要求する装置である。クライアント8は、PC(Personal Computer),携帯端末等で構成される。
<ネットワーク>
ネットワーク9は、LAN(Local Area Network),WAN(Wide Area Network)等であり、有線,無線のどちらか一方,又は両方で構成され、データ通信を実現する。
有線の例としては、光ファイバ,一般電話回線,専用線等が挙げられ、無線の例としては、赤外線等の電波が挙げられる。
ネットワーク9は、LAN(Local Area Network),WAN(Wide Area Network)等であり、有線,無線のどちらか一方,又は両方で構成され、データ通信を実現する。
有線の例としては、光ファイバ,一般電話回線,専用線等が挙げられ、無線の例としては、赤外線等の電波が挙げられる。
≪第1実施形態に係るデータベース制御システムを構成するノードの機能及び使用するフォーマット≫
<ノードが備える機能>
(概要)
図2は、第1実施形態に係るデータベース制御システムを構成するノードの機能構成図である。図2では、各機能を「○○部」と記載している。
ノード2は、第1実施形態に係るデータベース制御システム1を実現するために、図2に示す機能を有する。図2に記載される各部110,111,112,113,114は、DBMS210をメモリにロードし、CPUにより実行されることで実現される。通信部140は、OS230をメモリにロードし、CPUにより実行されることで実現される。また、ログ120,130はメモリ上に領域として確保される。
図2には、説明の便宜上、第1実施形態に係るデータベース制御システム1を説明するのに必要な機能以外の機能を図示していない。例えば、入力装置3,表示装置4,及びタイマ6を管理する機能等は図示していない。
<ノードが備える機能>
(概要)
図2は、第1実施形態に係るデータベース制御システムを構成するノードの機能構成図である。図2では、各機能を「○○部」と記載している。
ノード2は、第1実施形態に係るデータベース制御システム1を実現するために、図2に示す機能を有する。図2に記載される各部110,111,112,113,114は、DBMS210をメモリにロードし、CPUにより実行されることで実現される。通信部140は、OS230をメモリにロードし、CPUにより実行されることで実現される。また、ログ120,130はメモリ上に領域として確保される。
図2には、説明の便宜上、第1実施形態に係るデータベース制御システム1を説明するのに必要な機能以外の機能を図示していない。例えば、入力装置3,表示装置4,及びタイマ6を管理する機能等は図示していない。
(データベース(DB))
DB220は、redoログファイル221,制御ファイル222,及びデータファイル223の3つのファイルで構成される。
redoログファイル221は、データファイル223の更新情報を記憶しておくファイルである。制御ファイル222は、redoログファイル221やデータファイル223のファイル名と保存場所を記録しておくファイルである。データファイル223は、実際のデータが入っているファイルである。
DB220は、redoログファイル221,制御ファイル222,及びデータファイル223の3つのファイルで構成される。
redoログファイル221は、データファイル223の更新情報を記憶しておくファイルである。制御ファイル222は、redoログファイル221やデータファイル223のファイル名と保存場所を記録しておくファイルである。データファイル223は、実際のデータが入っているファイルである。
(redoログ)
更新情報としてのredoログ120,130は、DB220の変更履歴データであり、その構成を図3に示す。redoログ120,130の1エントリは、タイムスタンプ欄121,131、トランザクション番号欄122,132、DB操作コード欄123,133、DB操作アドレス欄124,134、DB操作パラメタ欄125,135で構成される。
redoログ120,130は、DB220についての処理が行われるたびに、エントリが追加されていく。
なお、図2は、ノード2が2重化された場合の構成であり、仮にノード2が3重化,4重化された場合、各ノード2が備えるredoログの数は、ノード2の数分になり、3つ,4つとなる。
更新情報としてのredoログ120,130は、DB220の変更履歴データであり、その構成を図3に示す。redoログ120,130の1エントリは、タイムスタンプ欄121,131、トランザクション番号欄122,132、DB操作コード欄123,133、DB操作アドレス欄124,134、DB操作パラメタ欄125,135で構成される。
redoログ120,130は、DB220についての処理が行われるたびに、エントリが追加されていく。
なお、図2は、ノード2が2重化された場合の構成であり、仮にノード2が3重化,4重化された場合、各ノード2が備えるredoログの数は、ノード2の数分になり、3つ,4つとなる。
(redoログ更新部)
図2に示す、redoログ更新部111は、基本的にはredoログ120,130を更新する機能である。
以下、redoログ更新部111の機能を自己のノード2でトランザクションが発生した場合と、他のノード2でトランザクションが発生した場合とに分けて説明する。
(1)自己のノードでトランザクションが発生した場合
redoログ更新部111は、トランザクション(以下、「Tx」と称す場合がある)の開始時,DB220の更新操作(update,delete,insert)実行時,及びcommit(結果確定)実行時に、自ノード用redoログ120にエントリを1行追加する。具体的には、以下の(a)〜(c)の内容を設定したエントリを1行追加する。
図2に示す、redoログ更新部111は、基本的にはredoログ120,130を更新する機能である。
以下、redoログ更新部111の機能を自己のノード2でトランザクションが発生した場合と、他のノード2でトランザクションが発生した場合とに分けて説明する。
(1)自己のノードでトランザクションが発生した場合
redoログ更新部111は、トランザクション(以下、「Tx」と称す場合がある)の開始時,DB220の更新操作(update,delete,insert)実行時,及びcommit(結果確定)実行時に、自ノード用redoログ120にエントリを1行追加する。具体的には、以下の(a)〜(c)の内容を設定したエントリを1行追加する。
(a)Tx開始時
redoログ更新部111は、自ノード用redoログ120のタイムスタンプ欄121に「時刻」を設定し、トランザクション番号欄122に「任意のTx番号」を設定する。
(b)DBの更新操作実行時
redoログ更新部111は、自ノード用redoログ120のタイムスタンプ欄121に「時刻」を設定し、トランザクション番号欄122に「Tx開始時に設定したTx番号」を設定し、DB操作コード欄123に「update」,「delete」,「insert」のうちのいずれかを設定し、DB操作アドレス欄124に「更新対象レコードのアドレス」を設定し、DB操作パラメタ欄125に「DBの更新内容」を設定する。
DB操作コード欄123に「update」,「delete」,「insert」のうちのいずれかを設定するかは、更新対象レコードを更新するのか、削除するのか、それとも新たにレコードを追加するのかにより決定される。
redoログ更新部111は、自ノード用redoログ120のタイムスタンプ欄121に「時刻」を設定し、トランザクション番号欄122に「任意のTx番号」を設定する。
(b)DBの更新操作実行時
redoログ更新部111は、自ノード用redoログ120のタイムスタンプ欄121に「時刻」を設定し、トランザクション番号欄122に「Tx開始時に設定したTx番号」を設定し、DB操作コード欄123に「update」,「delete」,「insert」のうちのいずれかを設定し、DB操作アドレス欄124に「更新対象レコードのアドレス」を設定し、DB操作パラメタ欄125に「DBの更新内容」を設定する。
DB操作コード欄123に「update」,「delete」,「insert」のうちのいずれかを設定するかは、更新対象レコードを更新するのか、削除するのか、それとも新たにレコードを追加するのかにより決定される。
(c)commit(結果確定)実行時
redoログ更新部111は、自ノード用redoログ120のタイムスタンプ欄121に「時刻」を設定し、トランザクション番号欄122に「Tx開始時に設定したTx番号」を設定し、DB操作コード欄123に「commit」又は「rollback」を設定する。
DB操作コード欄123に「commit」,「rollback」のどちらを設定するかは、後述する更新対象競合判定部112(図2参照)で更新対象レコードに競合がないと判定された場合は「commit」を設定し、更新対象レコードに競合があると判定された場合は「rollback」を設定する。
redoログ更新部111は、自ノード用redoログ120のタイムスタンプ欄121に「時刻」を設定し、トランザクション番号欄122に「Tx開始時に設定したTx番号」を設定し、DB操作コード欄123に「commit」又は「rollback」を設定する。
DB操作コード欄123に「commit」,「rollback」のどちらを設定するかは、後述する更新対象競合判定部112(図2参照)で更新対象レコードに競合がないと判定された場合は「commit」を設定し、更新対象レコードに競合があると判定された場合は「rollback」を設定する。
また、redoログ更新部111は、自ノード用redoログ120にエントリを追加するたびに、図4に示すredoログ情報300を作成する。すなわち、redoログ更新部111は、(a)Tx開始時,(b)DBの更新操作実行時,(c)commit実行時のすべてのタイミングでredoログ情報300を作成する。redoログ情報300の構成は、redoログ120,130の1エントリの構成と同じである。redoログ更新部111は、redoログ情報300の各欄に、自ノード用redoログ120の同一欄名に設定した内容と同じ内容を設定する。
redoログ更新部111は、作成したredoログ情報300を、他のノード2に対して送信するように通信部140に指示する。通信部140(図2参照)は、redoログ情報300を、TCP(Transmission Control Protocol),IP(Internet Protocol)等の通信規約に従ってパケット化し、通信装置5(図1参照)を介して他のノード2に送信する。
redoログ更新部111は、作成したredoログ情報300を、他のノード2に対して送信するように通信部140に指示する。通信部140(図2参照)は、redoログ情報300を、TCP(Transmission Control Protocol),IP(Internet Protocol)等の通信規約に従ってパケット化し、通信装置5(図1参照)を介して他のノード2に送信する。
(2)他のノードでトランザクションが発生した場合
redoログ更新部111は、他のノード2から受信したredoログ情報300を基に、他ノード用redoログ130にエントリを追加する。具体的には、redoログ更新部111は、他ノード用redoログ130の各欄に、redoログ情報300の同一欄名に格納されている内容と同じ内容を設定し、エントリを追加する。これにより、一方のノード2の自ノード用redoログ120の内容と、他方のノード2の他ノード用redoログ130の内容は一致される。
redoログ更新部111は、他のノード2から受信したredoログ情報300を基に、他ノード用redoログ130にエントリを追加する。具体的には、redoログ更新部111は、他ノード用redoログ130の各欄に、redoログ情報300の同一欄名に格納されている内容と同じ内容を設定し、エントリを追加する。これにより、一方のノード2の自ノード用redoログ120の内容と、他方のノード2の他ノード用redoログ130の内容は一致される。
(更新対象競合判定部)
図2に示す更新対象競合判定部112は、自己のノード2でトランザクションが発生し、かつ、commitを行うときに、自己のノード2と他のノード2とで更新対象レコードが競合したか否かの判定を行う。更新対象競合判定部112は、更新対象レコードの競合の判定を、トランザクションの開始からcommitを行うときまでの時間帯について、他ノード用redoログ130の内容を調べることにより行う。
具体的には、更新対象競合判定部112は、自己のノード2でトランザクションが開始してからcommitを行うときまでの時間帯において、自ノード用redoログ120に追加したエントリのDB操作アドレス欄124に設定したアドレスと、他ノード用redoログ130に追加したエントリのDB操作アドレス欄134に設定したアドレスとが一致し、かつ、他ノード用redoログ130に、DB操作コード欄133に「commit」が設定されたエントリが追加されている場合に更新対象レコードが競合したと判定する。
図2に示す更新対象競合判定部112は、自己のノード2でトランザクションが発生し、かつ、commitを行うときに、自己のノード2と他のノード2とで更新対象レコードが競合したか否かの判定を行う。更新対象競合判定部112は、更新対象レコードの競合の判定を、トランザクションの開始からcommitを行うときまでの時間帯について、他ノード用redoログ130の内容を調べることにより行う。
具体的には、更新対象競合判定部112は、自己のノード2でトランザクションが開始してからcommitを行うときまでの時間帯において、自ノード用redoログ120に追加したエントリのDB操作アドレス欄124に設定したアドレスと、他ノード用redoログ130に追加したエントリのDB操作アドレス欄134に設定したアドレスとが一致し、かつ、他ノード用redoログ130に、DB操作コード欄133に「commit」が設定されたエントリが追加されている場合に更新対象レコードが競合したと判定する。
仮に、自ノード用redoログ120のDB操作アドレス欄124と、他ノード用redoログ130のDB操作アドレス欄134とに設定したアドレスが一致しても、他ノード用redoログ130に、DB操作コード欄133に「commit」が設定されたエントリが追加されていなければ更新対象レコードが競合したと判定しない。この場合には、他のノード2の更新対象競合判定部112が、更新対象レコードが競合したと判定することになる。すなわち、更新対象レコードが競合した場合に、先にcommitが行われた更新処理を優先する。
(redoログファイル更新部)
図2に示すredoログファイル更新部113は、自ノード用redoログ120に、DB操作コード欄123に「commit」が設定されたエントリが追加されたときに、自ノード用redoログ120の内容をredoログファイル221に書き出す。
また、redoログファイル更新部113は、他ノード用redoログ130に、DB操作コード欄133に「commit」が設定されたエントリが追加さたときに、他ノード用redoログ130の内容をredoログファイル221に書き出す。
図2に示すredoログファイル更新部113は、自ノード用redoログ120に、DB操作コード欄123に「commit」が設定されたエントリが追加されたときに、自ノード用redoログ120の内容をredoログファイル221に書き出す。
また、redoログファイル更新部113は、他ノード用redoログ130に、DB操作コード欄133に「commit」が設定されたエントリが追加さたときに、他ノード用redoログ130の内容をredoログファイル221に書き出す。
(データファイル更新部)
図2に示すデータファイル更新部114は、任意のタイミングでredoログファイル221の内容をデータファイル223に更新する。
図2に示すデータファイル更新部114は、任意のタイミングでredoログファイル221の内容をデータファイル223に更新する。
≪第1実施形態に係るデータベース制御システムのデータベース更新動作≫
以下、図5から図9を参照して第1実施形態に係るデータベース制御システムのデータベース更新動作について説明する。
図5は、第1実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合なし)の説明図である。
図5は、ノード2AでTxAが、ノード2BでTxBがほぼ同時に実行される場合の処理の流れを示している。TxAは、アドレス#0001のレコードを更新し、TxBは、アドレス#0002のレコードを更新するので、TxAとTxBとでは更新対象レコードが競合しない。他ノード用redoログ130上の白抜き矢印は、更新対象競合判定部112が競合判定を行う時間帯を表している。
以下、図5から図9を参照して第1実施形態に係るデータベース制御システムのデータベース更新動作について説明する。
図5は、第1実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合なし)の説明図である。
図5は、ノード2AでTxAが、ノード2BでTxBがほぼ同時に実行される場合の処理の流れを示している。TxAは、アドレス#0001のレコードを更新し、TxBは、アドレス#0002のレコードを更新するので、TxAとTxBとでは更新対象レコードが競合しない。他ノード用redoログ130上の白抜き矢印は、更新対象競合判定部112が競合判定を行う時間帯を表している。
なお、説明に際して、redoログ120,130及びredoログ情報300のデータの設定の記載については、一部省略する。
また、各ステップ後の、ノード2Aの自ノード用redoログ120A,及びノード2Bの他ノード用redoログ130Bの状態、さらに、ノード2Bの自ノード用redoログ120B,及びノード2Aの他ノード用redoログ130Aの状態を図6A(a)〜(c),及び図6B(a)〜(c)に示す。
また、各ステップ後の、ノード2Aの自ノード用redoログ120A,及びノード2Bの他ノード用redoログ130Bの状態、さらに、ノード2Bの自ノード用redoログ120B,及びノード2Aの他ノード用redoログ130Aの状態を図6A(a)〜(c),及び図6B(a)〜(c)に示す。
(ステップS001A)
ノード2Aのredoログ更新部111Aは、TxAの開始とともに、トランザクション番号欄122Aに「任意のTx番号」を設定したエントリを自ノード用redoログ120Aに1行追加する。また、redoログ更新部111Aは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Bに送信する。
ノード2Bのredoログ更新部111Bは、受信したredoログ情報300を基に、他ノード用redoログ130Bにエントリを1行追加する。
ノード2Aのredoログ更新部111Aは、TxAの開始とともに、トランザクション番号欄122Aに「任意のTx番号」を設定したエントリを自ノード用redoログ120Aに1行追加する。また、redoログ更新部111Aは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Bに送信する。
ノード2Bのredoログ更新部111Bは、受信したredoログ情報300を基に、他ノード用redoログ130Bにエントリを1行追加する。
(ステップS001B)
ノード2Bのredoログ更新部111Bは、TxBの開始とともに、トランザクション番号欄122Bに「任意のTx番号」を設定したエントリを自ノード用redoログ120Bに1行追加する。また、redoログ更新部111Bは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Aに送信する。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。
ノード2Bのredoログ更新部111Bは、TxBの開始とともに、トランザクション番号欄122Bに「任意のTx番号」を設定したエントリを自ノード用redoログ120Bに1行追加する。また、redoログ更新部111Bは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Aに送信する。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。
(ステップS002A)
ノード2Aのredoログ更新部111Aは、DB操作コード欄123Aに「update」を設定し、DB操作アドレス欄124Aに「0001」を設定し、DB操作パラメタ欄125Aに「AAAAA」を設定したエントリを、自ノード用redoログ120Aに1行追加する。また、redoログ更新部111Aは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Bに送信する。
ノード2Bのredoログ更新部111Bは、受信したredoログ情報300を基に、他ノード用redoログ130Bにエントリを1行追加する。
ノード2Aのredoログ更新部111Aは、DB操作コード欄123Aに「update」を設定し、DB操作アドレス欄124Aに「0001」を設定し、DB操作パラメタ欄125Aに「AAAAA」を設定したエントリを、自ノード用redoログ120Aに1行追加する。また、redoログ更新部111Aは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Bに送信する。
ノード2Bのredoログ更新部111Bは、受信したredoログ情報300を基に、他ノード用redoログ130Bにエントリを1行追加する。
(ステップS002B)
ノード2Bのredoログ更新部111Bは、DB操作コード欄123Bに「update」を設定し、DB操作アドレス欄124Bに「0002」を設定し、DB操作パラメタ欄125Bに「BBBBB」を設定したエントリを、自ノード用redoログ120Bに1行追加する。また、redoログ更新部111Bは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Aに送信する。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。
ノード2Bのredoログ更新部111Bは、DB操作コード欄123Bに「update」を設定し、DB操作アドレス欄124Bに「0002」を設定し、DB操作パラメタ欄125Bに「BBBBB」を設定したエントリを、自ノード用redoログ120Bに1行追加する。また、redoログ更新部111Bは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Aに送信する。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。
(ステップS003A)
ノード2Aの更新対象競合判定部112Aは、commitを行うときに、ノード2Aとノード2Bとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の時刻は「20090101010101005」とする。
更新対象競合判定部112Aは、自ノード用redoログ120Aのタイムスタンプ欄121Aを参照することで、TxAの開始が「20090101010101001」であることを把握し、他ノード用redoログ130Aのタイムスタンプ欄131Aの日時が「20090101010101001」から「20090101010101005」までの間のエントリで自ノード用redoログ120AのDB操作アドレス欄124Aの値と他ノード用redoログ130AのDB操作アドレス欄134Aの値が一致するエントリがあるか否か調べるが、一致するエントリはないと分かる。その為、更新対象競合判定部112Aは、更新対象レコードの競合はないと判定する。
ノード2Aの更新対象競合判定部112Aは、commitを行うときに、ノード2Aとノード2Bとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の時刻は「20090101010101005」とする。
更新対象競合判定部112Aは、自ノード用redoログ120Aのタイムスタンプ欄121Aを参照することで、TxAの開始が「20090101010101001」であることを把握し、他ノード用redoログ130Aのタイムスタンプ欄131Aの日時が「20090101010101001」から「20090101010101005」までの間のエントリで自ノード用redoログ120AのDB操作アドレス欄124Aの値と他ノード用redoログ130AのDB操作アドレス欄134Aの値が一致するエントリがあるか否か調べるが、一致するエントリはないと分かる。その為、更新対象競合判定部112Aは、更新対象レコードの競合はないと判定する。
次に、ノード2Aのredoログ更新部111Aは、更新対象レコードの競合はないと判定されたので、DB操作コード欄123Aに「commit」を設定したエントリを、自ノード用redoログ120Aに1行追加する。また、redoログ更新部111Aは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Bに送信する。さらに、redoログファイル更新部113Aは、自ノード用redoログ120Aの内容をredoログファイル221Aに書き出す。
ノード2Bのredoログ更新部111Bは、受信したredoログ情報300を基に、他ノード用redoログ130Bにエントリを1行追加する。さらに、redoログファイル更新部113Bは、他ノード用redoログ130Bの内容をredoログファイル221Bに書き出す。
ノード2Bのredoログ更新部111Bは、受信したredoログ情報300を基に、他ノード用redoログ130Bにエントリを1行追加する。さらに、redoログファイル更新部113Bは、他ノード用redoログ130Bの内容をredoログファイル221Bに書き出す。
(ステップS003B)
ノード2Bの更新対象競合判定部112Bは、commitを行うときに、ノード2Aとノード2Bとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の時刻は「20090101010101006」とする。
更新対象競合判定部112Bは、自ノード用redoログ120Bのタイムスタンプ欄121Bを参照することで、TxBの開始が「20090101010101002」であることを把握し、他ノード用redoログ130Bのタイムスタンプ欄131Bの日時が「20090101010101002」から「20090101010101006」までの間のエントリで自ノード用redoログ120BのDB操作アドレス欄124Bの値と他ノード用redoログ130BのDB操作アドレス欄134Bの値が一致するエントリがあるか否か調べるが、一致するエントリはないと分かる。その為、更新対象競合判定部112Bは、更新対象レコードの競合はないと判定する。
ノード2Bの更新対象競合判定部112Bは、commitを行うときに、ノード2Aとノード2Bとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の時刻は「20090101010101006」とする。
更新対象競合判定部112Bは、自ノード用redoログ120Bのタイムスタンプ欄121Bを参照することで、TxBの開始が「20090101010101002」であることを把握し、他ノード用redoログ130Bのタイムスタンプ欄131Bの日時が「20090101010101002」から「20090101010101006」までの間のエントリで自ノード用redoログ120BのDB操作アドレス欄124Bの値と他ノード用redoログ130BのDB操作アドレス欄134Bの値が一致するエントリがあるか否か調べるが、一致するエントリはないと分かる。その為、更新対象競合判定部112Bは、更新対象レコードの競合はないと判定する。
次に、ノード2Bのredoログ更新部111Bは、更新対象レコードの競合はないと判定されたので、DB操作コード欄123Bに「commit」を設定したエントリを、自ノード用redoログ120Bに1行追加する。また、redoログ更新部111Bは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Aに送信する。さらに、redoログファイル更新部113Bは、自ノード用redoログ120Bの内容をredoログファイル221Bに書き出す。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。さらに、redoログファイル更新部113Aは、他ノード用redoログ130Aの内容をredoログファイル221Aに書き出す。
以上で、第1実施形態に係るデータベース制御システム1のデータベース更新動作(更新データの競合なし)の説明を終了する。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。さらに、redoログファイル更新部113Aは、他ノード用redoログ130Aの内容をredoログファイル221Aに書き出す。
以上で、第1実施形態に係るデータベース制御システム1のデータベース更新動作(更新データの競合なし)の説明を終了する。
図7は、第1実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合あり)の説明図である。
図7は、ノード2AでTxAが、ノード2BでTxBがほぼ同時に実行される場合の処理の流れを示している。TxA,TxB共に、アドレス#0001のレコードを更新するので更新対象レコードが競合する。他ノード用redoログ130上の白抜き矢印は、更新対象競合判定部112が競合判定を行う時間帯を表している。
図7は、ノード2AでTxAが、ノード2BでTxBがほぼ同時に実行される場合の処理の流れを示している。TxA,TxB共に、アドレス#0001のレコードを更新するので更新対象レコードが競合する。他ノード用redoログ130上の白抜き矢印は、更新対象競合判定部112が競合判定を行う時間帯を表している。
なお、説明に際して、redoログ120,130及びredoログ情報300のデータの設定の記載については、一部省略する。
また、各ステップ後の、ノード2Aの自ノード用redoログ120A,及びノード2Bの他ノード用redoログ130Bの状態、さらに、ノード2Bの自ノード用redoログ120B,及びノード2Aの他ノード用redoログ130Aの状態を図6A(a)〜(c)及び図8(a)〜(c)に示す。
また、各ステップ後の、ノード2Aの自ノード用redoログ120A,及びノード2Bの他ノード用redoログ130Bの状態、さらに、ノード2Bの自ノード用redoログ120B,及びノード2Aの他ノード用redoログ130Aの状態を図6A(a)〜(c)及び図8(a)〜(c)に示す。
(ステップS001A,S001B,S002A)
ステップS001A,S001B,S002Aの処理は、前記第1実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合なし)の説明(図5参照)と同じなので説明を省略する。
ステップS001A,S001B,S002Aの処理は、前記第1実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合なし)の説明(図5参照)と同じなので説明を省略する。
(ステップS002B)
ノード2Bのredoログ更新部111Bは、DB操作コード欄123Bに「update」を設定し、DB操作アドレス欄124Bに「0001」を設定し、DB操作パラメタ欄125Bに「BBBBB」を設定したエントリを、自ノード用redoログ120Bに1行追加する。また、redoログ更新部111Bは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Aに送信する。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。
ノード2Bのredoログ更新部111Bは、DB操作コード欄123Bに「update」を設定し、DB操作アドレス欄124Bに「0001」を設定し、DB操作パラメタ欄125Bに「BBBBB」を設定したエントリを、自ノード用redoログ120Bに1行追加する。また、redoログ更新部111Bは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Aに送信する。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。
(ステップS003A)
ノード2Aの更新対象競合判定部112Aは、commitを行うときに、ノード2Aとノード2Bとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の時刻は「20090101010101005」とする。
更新対象競合判定部112Aは、自ノード用redoログ120Aのタイムスタンプ欄121Aを参照することで、TxAの開始が「20090101010101001」であることを把握し、他ノード用redoログ130Aのタイムスタンプ欄131Aの日時が「20090101010101001」から「20090101010101005」までの間のエントリで、自ノード用redoログ120AのDB操作アドレス欄124Aの値と他ノード用redoログ130AのDB操作アドレス欄134Aの値とが一致するエントリがあるが、DB操作コード欄133Aに「commit」が設定されたエントリがないと分かる。その為、更新対象競合判定部112Aは、更新対象レコードの競合はないと判定する。
ノード2Aの更新対象競合判定部112Aは、commitを行うときに、ノード2Aとノード2Bとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の時刻は「20090101010101005」とする。
更新対象競合判定部112Aは、自ノード用redoログ120Aのタイムスタンプ欄121Aを参照することで、TxAの開始が「20090101010101001」であることを把握し、他ノード用redoログ130Aのタイムスタンプ欄131Aの日時が「20090101010101001」から「20090101010101005」までの間のエントリで、自ノード用redoログ120AのDB操作アドレス欄124Aの値と他ノード用redoログ130AのDB操作アドレス欄134Aの値とが一致するエントリがあるが、DB操作コード欄133Aに「commit」が設定されたエントリがないと分かる。その為、更新対象競合判定部112Aは、更新対象レコードの競合はないと判定する。
次に、ノード2Aのredoログ更新部111Aは、更新対象レコードの競合はないと判定されたので、DB操作コード欄123Aに「commit」を設定したエントリを、自ノード用redoログ120Aに1行追加する。また、redoログ更新部111Aは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Bに送信する。さらに、redoログファイル更新部113Aは、自ノード用redoログ120Aの内容をredoログファイル221Aに書き出す。
ノード2Bのredoログ更新部111Bは、受信したredoログ情報300を基に、他ノード用redoログ130Bにエントリを1行追加する。さらに、redoログファイル更新部113Bは、他ノード用redoログ130Bの内容をredoログファイル221Bに書き出す。
ノード2Bのredoログ更新部111Bは、受信したredoログ情報300を基に、他ノード用redoログ130Bにエントリを1行追加する。さらに、redoログファイル更新部113Bは、他ノード用redoログ130Bの内容をredoログファイル221Bに書き出す。
(ステップS003B)
ノード2Bの更新対象競合判定部112Bは、commitを行うときに、ノード2Aとノード2Bとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の時刻は「20090101010101006」とする。
更新対象競合判定部112Bは、自ノード用redoログ120Bのタイムスタンプ欄121Bを参照することで、TxBの開始が「20090101010101002」であることを把握し、他ノード用redoログ130Bのタイムスタンプ欄131Bの日時が「20090101010101002」から「20090101010101006」までの間のエントリで自ノード用redoログ120BのDB操作アドレス欄124Bの値と他ノード用redoログ130BのDB操作アドレス欄134Bの値とが一致するエントリがあり、かつ、DB操作コード欄133Bに「commit」が設定されたエントリもあると分かる。その為、更新対象競合判定部112Bは、更新対象レコードの競合があると判定する。
ノード2Bの更新対象競合判定部112Bは、commitを行うときに、ノード2Aとノード2Bとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の時刻は「20090101010101006」とする。
更新対象競合判定部112Bは、自ノード用redoログ120Bのタイムスタンプ欄121Bを参照することで、TxBの開始が「20090101010101002」であることを把握し、他ノード用redoログ130Bのタイムスタンプ欄131Bの日時が「20090101010101002」から「20090101010101006」までの間のエントリで自ノード用redoログ120BのDB操作アドレス欄124Bの値と他ノード用redoログ130BのDB操作アドレス欄134Bの値とが一致するエントリがあり、かつ、DB操作コード欄133Bに「commit」が設定されたエントリもあると分かる。その為、更新対象競合判定部112Bは、更新対象レコードの競合があると判定する。
次に、ノード2Bのredoログ更新部111Bは、更新対象レコードの競合があると判定されたので、DB操作コード欄123Bに「rollback」を設定したエントリを、自ノード用redoログ120Bに1行追加する。また、redoログ更新部111Bは、追加したエントリと同じ内容でredoログ情報300を作成し、このredoログ情報300をノード2Aに送信する。そして、ノード2Bは、TxBの実行を中止する。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。
以上で、第1実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合あり)の説明を終了する。このように、本実施形態に係るデータベース制御システムでは、更新操作において競合があっても、待ちが発生することがない。
ノード2Aのredoログ更新部111Aは、受信したredoログ情報300を基に、他ノード用redoログ130Aにエントリを1行追加する。
以上で、第1実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合あり)の説明を終了する。このように、本実施形態に係るデータベース制御システムでは、更新操作において競合があっても、待ちが発生することがない。
≪第2実施形態に係るデータベース制御システムを構成するノードの機能及び使用するフォーマット≫
<ノードが備える機能>
(概要)
第1実施形態に係るノード2(図2参照)では、前記した通り、ノード2間で更新対象レコードが競合した場合に、先にcommitした方を優先する。そして、自ノード用redoログ120と他ノード用redoログ130の情報を比較する際には、各ノード2で同期しているタイマ6(図1参照)に基づいてredoログ120,130のタイムスタンプ欄121,131に書き込まれる時刻の情報を利用して、参照するredoログ120,130の範囲を決定する。
<ノードが備える機能>
(概要)
第1実施形態に係るノード2(図2参照)では、前記した通り、ノード2間で更新対象レコードが競合した場合に、先にcommitした方を優先する。そして、自ノード用redoログ120と他ノード用redoログ130の情報を比較する際には、各ノード2で同期しているタイマ6(図1参照)に基づいてredoログ120,130のタイムスタンプ欄121,131に書き込まれる時刻の情報を利用して、参照するredoログ120,130の範囲を決定する。
実際には、ノード2間でのredoログ情報300の送信には、ある程度時間がかかるため、commitを行うときに、即時に更新対象レコードの競合を判定することができない。すなわち、自己のノードでcommitを行うときに、自己のノードが備える他ノード用redoログ130には他のノードのcommitの情報が反映されていないが、実際には、他のノードでcommitが行われており、redoログ情報300の伝送遅延により自己のノードが備える他ノード用redoログ130に他のノードのcommitの情報が反映されていない場合である。この場合、自己のノードは、commitを行う時点では他のノードがcommitを行っているのか否かを判定することができない。
そのため、第2実施形態に係るノードは、更新情報がない場合も定期的にタイムスタンプ欄以外はデータを設定しないredoログ情報(以下、空のredoログ情報と称す)を他ノードに送信し、空のredoログ情報を受信したノードは、受信した時刻と空のredoログ情報のタイムスタンプ欄に格納される時刻との差を更新対象レコードが競合したか否かの判定に利用する。
ここで、第2実施形態に係るデータベース制御システムの構成は、図1に示す第1実施形態に係るデータベース制御システム1と同じである。
以下、第2実施形態に係るノードについて説明する。
ここで、第2実施形態に係るデータベース制御システムの構成は、図1に示す第1実施形態に係るデータベース制御システム1と同じである。
以下、第2実施形態に係るノードについて説明する。
図9は、第2実施形態に係るデータベース制御システムを構成するノードの機能構成図である。図9では、各機能を「○○部」と記載している。
第2実施形態に係るノード2は、第1実施形態に係るノード2(図2参照)の機能に加えてさらに、redoログ情報送信遅延演算部115を備える。また、redoログ更新部111,及び更新対象競合判定部112の機能が異なる。それ以外のデータ構成等は第1実施形態と同様である。以下、説明する。
第2実施形態に係るノード2は、第1実施形態に係るノード2(図2参照)の機能に加えてさらに、redoログ情報送信遅延演算部115を備える。また、redoログ更新部111,及び更新対象競合判定部112の機能が異なる。それ以外のデータ構成等は第1実施形態と同様である。以下、説明する。
(redoログ更新部)
redoログ更新部111は、第1実施形態に係るredoログ更新部111の機能に加えて、以下の機能を備える。
本実施形態に係るredoログ更新部111は、自ノード用redoログ120の更新をしておらず、本来ならば、他ノードに対してredoログ情報を送信する必要がない場合でも、図4に示すタイムスタンプ欄301に「時刻」を設定し、それ以外の欄にはデータを設定しない空のredoログ情報300を、定期的に他のノード2に送信する機能を備える。
redoログ更新部111は、第1実施形態に係るredoログ更新部111の機能に加えて、以下の機能を備える。
本実施形態に係るredoログ更新部111は、自ノード用redoログ120の更新をしておらず、本来ならば、他ノードに対してredoログ情報を送信する必要がない場合でも、図4に示すタイムスタンプ欄301に「時刻」を設定し、それ以外の欄にはデータを設定しない空のredoログ情報300を、定期的に他のノード2に送信する機能を備える。
(redoログ情報送信遅延演算部)
redoログ情報送信遅延演算部115は、空のredoログ情報300を受信したら、現在の時刻と、空のredoログ情報300のタイムスタンプ欄301に設定される時刻との時間差をメモリ上に保存する。
ここで、メモリ上に保存する時間差は、現在の時刻と直近の空のredoログ情報300に設定される時刻との単純な時間差だけでなく、現在の時刻と受信した複数個のredoログ情報300に設定されている時刻との平均値との差としてもよい。また、メモリ上に保存される時間差には、上記以外にも種々の影響を考慮した値を設定することができる。
redoログ情報送信遅延演算部115は、空のredoログ情報300を受信したら、現在の時刻と、空のredoログ情報300のタイムスタンプ欄301に設定される時刻との時間差をメモリ上に保存する。
ここで、メモリ上に保存する時間差は、現在の時刻と直近の空のredoログ情報300に設定される時刻との単純な時間差だけでなく、現在の時刻と受信した複数個のredoログ情報300に設定されている時刻との平均値との差としてもよい。また、メモリ上に保存される時間差には、上記以外にも種々の影響を考慮した値を設定することができる。
(更新対象競合判定部)
本実施形態に係る更新対象競合判定部112は、自己のノード2でトランザクションが発生し、かつ、commitを行うときに、redoログ情報送信遅延演算部115によりメモリ上に保存された時間差分だけ待って、自己のノード2(2A)と他のノード2(2B)とで更新対象レコードが競合したか否かの判定を行う。
すなわち、更新対象競合判定部112は、トランザクションの開始からcommitを行ったときからメモリ上に保存される時間差分加えた時間帯までの他ノード用redoログ130の内容を調べることで更新対象レコードの競合を判定する。
本実施形態に係る更新対象競合判定部112は、自己のノード2でトランザクションが発生し、かつ、commitを行うときに、redoログ情報送信遅延演算部115によりメモリ上に保存された時間差分だけ待って、自己のノード2(2A)と他のノード2(2B)とで更新対象レコードが競合したか否かの判定を行う。
すなわち、更新対象競合判定部112は、トランザクションの開始からcommitを行ったときからメモリ上に保存される時間差分加えた時間帯までの他ノード用redoログ130の内容を調べることで更新対象レコードの競合を判定する。
≪第2実施形態に係るデータベース制御システムのデータベース更新動作≫
以下、図10を参照して第2実施形態に係るデータベース制御システムのデータベース更新動作について説明する。
図10は、第2実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合あり)の説明図である。
図10は、ノード2AでTxAが、ノード2BでTxBがほぼ同時に実行される場合の処理の流れを示している。TxA,TxB共に、アドレス#0001のレコードを更新するので更新対象レコードが競合する。以下、ステップS003Bを使って本実施形態の動作を説明する。
以下、図10を参照して第2実施形態に係るデータベース制御システムのデータベース更新動作について説明する。
図10は、第2実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合あり)の説明図である。
図10は、ノード2AでTxAが、ノード2BでTxBがほぼ同時に実行される場合の処理の流れを示している。TxA,TxB共に、アドレス#0001のレコードを更新するので更新対象レコードが競合する。以下、ステップS003Bを使って本実施形態の動作を説明する。
なお、説明に際して、redoログ120,130及びredoログ情報300のデータの設定の記載については、一部省略する。
また、ステップ後の、ノード2Aの自ノード用redoログ120A,及びノード2Bの他ノード用redoログ130Bの状態、さらに、ノード2Bの自ノード用redoログ120B,及びノード2Aの他ノード用redoログ130Aの状態は図8(a)〜(c)と同じである。
また、ステップ後の、ノード2Aの自ノード用redoログ120A,及びノード2Bの他ノード用redoログ130Bの状態、さらに、ノード2Bの自ノード用redoログ120B,及びノード2Aの他ノード用redoログ130Aの状態は図8(a)〜(c)と同じである。
(ステップS003B)
ノード2Bの更新対象競合判定部112Bは、commitを行う前に、自ノードと他ノードとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の日時は「20090101010101006」だとする。また、ノード2Bのredoログ情報送信遅延演算部115は、空のredoログ情報を受信して一定の時間差があることを把握し、この時間差をメモリ上に保存している。
ノード2Bの更新対象競合判定部112Bは、commitを行う前に、自ノードと他ノードとで更新対象レコードが競合したか否かの判定を行う。ここで、現時点の日時は「20090101010101006」だとする。また、ノード2Bのredoログ情報送信遅延演算部115は、空のredoログ情報を受信して一定の時間差があることを把握し、この時間差をメモリ上に保存している。
更新対象競合判定部112Bは、現時点からメモリ上に保存した時間差後に更新対象レコードが競合したか否かの判定を行う。更新対象競合判定部112Bは、自ノード用redoログ120Bのタイムスタンプ欄121Bを参照することで、TxBの開始が「20090101010101002」であることを把握し、他ノード用redoログ130Bのタイムスタンプ欄131Bの日時が「20090101010101002」から「20090101010101006」までの間のエントリで自ノード用redoログ120BのDB操作アドレス欄124Bの値と他ノード用redoログ130BのDB操作アドレス欄134Bの値とが一致するエントリがあり、かつ、DB操作コード欄133Bに「commit」が設定されたエントリもあると分かる。その為、更新対象競合判定部112Bは、更新対象レコードの競合があると判定する。
仮に、更新対象競合判定部112Bが、現時点「20090101010101006」で競合を判定した場合を想定する。現時点では、ノード2Aのcommit情報がノード2Bに届いていないので、更新対象競合判定部112Bは、実際は競合があるのに、競合なしと判定してしまう。
以上で、第2実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合あり)の説明を終了する。
以上で、第2実施形態に係るデータベース制御システムのデータベース更新動作(更新データの競合あり)の説明を終了する。
なお、本実施形態に係るデータベース制御システムは、自己のノードでcommitを行うときに、自己のノードが備える他ノード用redoログ130には他のノードのcommitの情報が反映されていないが、他のノードでcommitが行われており、redoログ情報300の伝送遅延により自己のノードが備える他ノード用redoログ130に他のノードのcommitの情報が反映されていない場合に有効である。
(第2実施形態に係るデータベース制御システムの効果)
ノード間の伝送に遅延が生じても、更新対象レコードの競合の判定を行うことが可能になる。
ノード間の伝送に遅延が生じても、更新対象レコードの競合の判定を行うことが可能になる。
1 データベース制御システム
2(2A,2B) ノード(計算機)
6(6A,6B) タイマ
100(100A,100B) 制御装置
110(110A,110B) データベース管理部
111(111A,111B) redoログ更新部
112(112A,112B) 更新対象競合判定部
115(115A,115B) redoログ情報送信遅延演算部
120(120A,120B) 自ノード用redoログ(自己更新情報)
130(130A,130B) 他ノード用redoログ(他の更新情報)
200(200A,200B) 記憶装置
210(210A,210B) DBMS(データベース管理プログラム)
220(220A,220B) DB(データベース)
300 redoログ情報(更新データ)
2(2A,2B) ノード(計算機)
6(6A,6B) タイマ
100(100A,100B) 制御装置
110(110A,110B) データベース管理部
111(111A,111B) redoログ更新部
112(112A,112B) 更新対象競合判定部
115(115A,115B) redoログ情報送信遅延演算部
120(120A,120B) 自ノード用redoログ(自己更新情報)
130(130A,130B) 他ノード用redoログ(他の更新情報)
200(200A,200B) 記憶装置
210(210A,210B) DBMS(データベース管理プログラム)
220(220A,220B) DB(データベース)
300 redoログ情報(更新データ)
Claims (6)
- 複数の同じ内容のデータベースに通信可能に接続されて多重化されたデータベースのうち少なくとも1つを備える計算機であって、
自己が保有するデータベースの自己更新情報と、自己が保有するデータベース以外のデータベースの他の更新情報とを各データベース毎に分けて保有する記憶部と、
前記自己更新情報を更新する際に、前記他の更新情報を参照することで、前記多重化されたデータベースの更新における競合を判定する競合判定部と、
を備えることを特徴とする計算機。 - 前記他の更新情報は、自己以外の計算機が各々備えるデータベースの更新データを受信したときに前記記憶部に記憶される、
ことを特徴とする請求項1に記載の計算機。 - 前記競合判定部は、前記自己更新情報の更新の開始から結果確定までの時間帯で、前記自己更新情報の更新対象レコードのアドレスと前記他の更新情報の更新対象レコードのアドレスとが一致し、かつ、他の更新情報の更新処理が結果確定している場合に前記多重化されたデータベースの更新が競合したと判定する、
ことを特徴とする請求項2に記載の計算機。 - 自己以外の計算機が発信する発信時刻を記載したデータを受信する時刻と、この発信時刻との時間差を計算する遅延演算部をさらに備え、
前記競合判定部は、前記時間差だけ待って前記多重化されたデータベースの更新が競合したか否かの判定を行う、
ことを特徴とする請求項2又は請求項3に記載の計算機。 - 前記発信する発信時刻を記載したデータは、前記更新データである、
ことを特徴とする請求項4に記載の計算機。 - 複数の同じ内容のデータベースに通信可能に接続されて多重化されたデータベースのうち少なくとも1つを備える計算機の制御装置に実行させるデータベース管理プログラムであって、
前記自己の計算機が保有するデータベースの自己更新情報と、前記自己が保有するデータベース以外のデータベースの他の更新情報とを各データベース毎に分けて記憶部に保有させる機能と、
前記自己情報を更新する際に、前記他の更新情報を参照することで、前記多重化されたデータベースの更新における競合を判定する機能と、
を前記制御装置に実現させることを特徴とするデータベース管理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009228864A JP2011076487A (ja) | 2009-09-30 | 2009-09-30 | 計算機、及びデータベース管理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009228864A JP2011076487A (ja) | 2009-09-30 | 2009-09-30 | 計算機、及びデータベース管理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011076487A true JP2011076487A (ja) | 2011-04-14 |
Family
ID=44020383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009228864A Pending JP2011076487A (ja) | 2009-09-30 | 2009-09-30 | 計算機、及びデータベース管理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011076487A (ja) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013114623A (ja) * | 2011-11-30 | 2013-06-10 | Fujitsu Ltd | ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法 |
JP2015191307A (ja) * | 2014-03-27 | 2015-11-02 | 日本電気株式会社 | トランザクションシステム |
CN106462449A (zh) * | 2014-06-26 | 2017-02-22 | 亚马逊科技公司 | 具有多项目事务支持的多数据库日志 |
JP2017531256A (ja) * | 2014-09-10 | 2017-10-19 | アマゾン・テクノロジーズ・インコーポレーテッド | 拡張縮小可能なログベーストランザクション管理 |
US10346434B1 (en) | 2015-08-21 | 2019-07-09 | Amazon Technologies, Inc. | Partitioned data materialization in journal-based storage systems |
US10373247B2 (en) | 2014-09-19 | 2019-08-06 | Amazon Technologies, Inc. | Lifecycle transitions in log-coordinated data stores |
US10698767B1 (en) | 2014-12-22 | 2020-06-30 | Amazon Technologies, Inc. | Decentralized management of multi-service workflows |
US10866968B1 (en) | 2015-06-29 | 2020-12-15 | Amazon Technologies, Inc. | Compact snapshots of journal-based storage systems |
US10866865B1 (en) | 2015-06-29 | 2020-12-15 | Amazon Technologies, Inc. | Storage system journal entry redaction |
US11048669B2 (en) | 2015-12-29 | 2021-06-29 | Amazon Technologies, Inc. | Replicated state management using journal-based registers |
CN113590387A (zh) * | 2021-08-02 | 2021-11-02 | 瀚高基础软件股份有限公司 | 一种数据库的控制文件的恢复方法及存储介质 |
US11308127B2 (en) | 2015-03-13 | 2022-04-19 | Amazon Technologies, Inc. | Log-based distributed transaction management |
US11341115B2 (en) | 2014-06-26 | 2022-05-24 | Amazon Technologies, Inc. | Multi-database log with multi-item transaction support |
US11397709B2 (en) | 2014-09-19 | 2022-07-26 | Amazon Technologies, Inc. | Automated configuration of log-coordinated storage groups |
US11599520B1 (en) | 2015-06-29 | 2023-03-07 | Amazon Technologies, Inc. | Consistency management using query restrictions in journal-based storage systems |
US11609890B1 (en) | 2015-06-29 | 2023-03-21 | Amazon Technologies, Inc. | Schema management for journal-based storage systems |
US11625700B2 (en) | 2014-09-19 | 2023-04-11 | Amazon Technologies, Inc. | Cross-data-store operations in log-coordinated storage systems |
US11960464B2 (en) | 2015-08-21 | 2024-04-16 | Amazon Technologies, Inc. | Customer-related partitioning of journal-based storage systems |
-
2009
- 2009-09-30 JP JP2009228864A patent/JP2011076487A/ja active Pending
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013114623A (ja) * | 2011-11-30 | 2013-06-10 | Fujitsu Ltd | ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法 |
US10007548B2 (en) | 2014-03-27 | 2018-06-26 | Nec Corporation | Transaction system |
JP2015191307A (ja) * | 2014-03-27 | 2015-11-02 | 日本電気株式会社 | トランザクションシステム |
US11341115B2 (en) | 2014-06-26 | 2022-05-24 | Amazon Technologies, Inc. | Multi-database log with multi-item transaction support |
US11995066B2 (en) | 2014-06-26 | 2024-05-28 | Amazon Technologies, Inc. | Multi-database log with multi-item transaction support |
JP2017520844A (ja) * | 2014-06-26 | 2017-07-27 | アマゾン・テクノロジーズ・インコーポレーテッド | マルチアイテムトランザクションサポートを有するマルチデータベースログ |
CN106462449A (zh) * | 2014-06-26 | 2017-02-22 | 亚马逊科技公司 | 具有多项目事务支持的多数据库日志 |
CN106462449B (zh) * | 2014-06-26 | 2019-10-29 | 亚马逊科技公司 | 具有多项目事务支持的多数据库日志 |
JP2017531256A (ja) * | 2014-09-10 | 2017-10-19 | アマゾン・テクノロジーズ・インコーポレーテッド | 拡張縮小可能なログベーストランザクション管理 |
US11397709B2 (en) | 2014-09-19 | 2022-07-26 | Amazon Technologies, Inc. | Automated configuration of log-coordinated storage groups |
US10373247B2 (en) | 2014-09-19 | 2019-08-06 | Amazon Technologies, Inc. | Lifecycle transitions in log-coordinated data stores |
US11625700B2 (en) | 2014-09-19 | 2023-04-11 | Amazon Technologies, Inc. | Cross-data-store operations in log-coordinated storage systems |
US10698767B1 (en) | 2014-12-22 | 2020-06-30 | Amazon Technologies, Inc. | Decentralized management of multi-service workflows |
US11308127B2 (en) | 2015-03-13 | 2022-04-19 | Amazon Technologies, Inc. | Log-based distributed transaction management |
US11860900B2 (en) | 2015-03-13 | 2024-01-02 | Amazon Technologies, Inc. | Log-based distributed transaction management |
US10866968B1 (en) | 2015-06-29 | 2020-12-15 | Amazon Technologies, Inc. | Compact snapshots of journal-based storage systems |
US10866865B1 (en) | 2015-06-29 | 2020-12-15 | Amazon Technologies, Inc. | Storage system journal entry redaction |
US12099486B2 (en) | 2015-06-29 | 2024-09-24 | Amazon Technologies, Inc. | Schema management for journal-based storage systems |
US11599520B1 (en) | 2015-06-29 | 2023-03-07 | Amazon Technologies, Inc. | Consistency management using query restrictions in journal-based storage systems |
US11609890B1 (en) | 2015-06-29 | 2023-03-21 | Amazon Technologies, Inc. | Schema management for journal-based storage systems |
US10346434B1 (en) | 2015-08-21 | 2019-07-09 | Amazon Technologies, Inc. | Partitioned data materialization in journal-based storage systems |
US11960464B2 (en) | 2015-08-21 | 2024-04-16 | Amazon Technologies, Inc. | Customer-related partitioning of journal-based storage systems |
US11048669B2 (en) | 2015-12-29 | 2021-06-29 | Amazon Technologies, Inc. | Replicated state management using journal-based registers |
CN113590387A (zh) * | 2021-08-02 | 2021-11-02 | 瀚高基础软件股份有限公司 | 一种数据库的控制文件的恢复方法及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011076487A (ja) | 計算機、及びデータベース管理プログラム | |
US20240179212A1 (en) | Hosted file sync with stateless sync nodes | |
JP5193056B2 (ja) | 無線装置の最新データを維持するための方法及びシステム | |
US8095504B2 (en) | N-way synchronization of computer databases | |
JP2948496B2 (ja) | データ処理システム内で複写データ一貫性を維持するためのシステムおよび方法 | |
US7013316B1 (en) | System and method for synchronizing multiple database files | |
EP1014266B1 (en) | Method, apparatus and program storage device for a client and adaptive synchronization and transformation server | |
KR100592647B1 (ko) | 서로 다른 클라이언트 사이의 데이터 동기화 시스템, 클라이언트들간의 업데이트 동기화 방법, 업데이트의 복제 방법, 및 컴퓨터 판독 가능 기록 매체 | |
EP1636711B1 (en) | System and method for distribution of software licenses in a networked computing environment | |
CN104239439A (zh) | 选择性的数据库复制 | |
US20070124734A1 (en) | Maintaining coherency in a symbiotic computing system and method of operation thereof | |
US7933868B2 (en) | Method and system for partition level cleanup of replication conflict metadata | |
US20110082833A1 (en) | Database parallel editing method | |
JP2003528395A (ja) | コンピュータネットワーク内でデータを自動的に配置するための方法及び装置 | |
JP5724735B2 (ja) | データベース更新制御装置、データベース管理システムおよびデータベース更新制御プログラム | |
JP2009518757A5 (ja) | ||
JP2003296171A (ja) | 電子帳票管理方法及びプログラム | |
EP1480130A2 (en) | Method and apparatus for moving data between storage devices | |
US20100125549A1 (en) | Maintaining client data integrity in a distributed environment using asynchronous data submission | |
CN109145054A (zh) | 一种管理客户端数据的方法 | |
WO2020153053A1 (ja) | データベース管理サービス提供システム | |
JP4923140B2 (ja) | データベース並行編集方式 | |
JP2006268632A (ja) | 計算機システム及びストレージサーバ、検索サーバ、端末装置並びに検索方法 | |
JP2008158978A (ja) | データベース同期システム、データベース同期方法、データベースサーバ、データベースサーバの制御方法、およびプログラム | |
US20060167925A1 (en) | System and method for providing system objects to a database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20120813 |