JPWO2014097475A1 - 情報処理方法、情報処理装置、及び、プログラム - Google Patents

情報処理方法、情報処理装置、及び、プログラム Download PDF

Info

Publication number
JPWO2014097475A1
JPWO2014097475A1 JP2014552858A JP2014552858A JPWO2014097475A1 JP WO2014097475 A1 JPWO2014097475 A1 JP WO2014097475A1 JP 2014552858 A JP2014552858 A JP 2014552858A JP 2014552858 A JP2014552858 A JP 2014552858A JP WO2014097475 A1 JPWO2014097475 A1 JP WO2014097475A1
Authority
JP
Japan
Prior art keywords
target
update
record
transaction log
database
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.)
Granted
Application number
JP2014552858A
Other languages
English (en)
Other versions
JP6082029B2 (ja
Inventor
山田 浩之
浩之 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Murakumo Corp
Original Assignee
Murakumo Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Murakumo Corp filed Critical Murakumo Corp
Publication of JPWO2014097475A1 publication Critical patent/JPWO2014097475A1/ja
Application granted granted Critical
Publication of JP6082029B2 publication Critical patent/JP6082029B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

トランザクションログを適用してデータベースを更新する処理の速度を改善する技術を提供する。トランザクションログを利用して自身のデータベースを更新するコンピュータが、トランザクションログを取得し、取得したトランザクションログのレコードを先頭から順に参照し、トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、更新命令の対象がメモリ上に読み出されている場合は該更新命令を実行し、更新命令の対象がメモリ上に読み出されていない場合は該更新命令の実行を待機させることで、トランザクションログのレコードを処理し、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象になるまでに、又は、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象となった際に、該対象について待機させた更新命令を実行する。

Description

本発明は、情報処理方法、情報処理装置、及び、プログラムに関する。
近年、マスタで作成されたトランザクションログを利用して、他のマスタ又はスレーブにおいてレプリケーションを行う技術が提案されている。特に、他のマスタ又はスレーブとマスタとを同期させてレプリケーションを行う技術が提案されている。なお、トランザクションログは、データベースに加えられた変更履歴を示す。
図1には、他のマスタ又はスレーブとマスタとを同期させてレプリケーションを行う2つの方法が示されている。第1の方法(実線で示される方法)では、マスタにおいて生成されたトランザクションログが他のマスタ又はスレーブに送信され、他のマスタ又はスレーブにおいてデータベースの更新が完了した後に、マスタにACKが返される。そして、対象のトランザクションのコミットが完了する。
第1の方法では、他のマスタ又はスレーブにおけるデータベースの更新が完了するまで、対象のトランザクションのコミットが完了せず、システム全体の処理が遅くなってしまう。これを改良した方法として、図1には、第2の方法(点線で示される方法)が示されている。
第2の方法では、他のマスタ又はスレーブにおいて、トランザクションログの受信が完了した時点で、トランザクションログの適用の有無に関わらず、マスタにACKが返される。そのため、第2の方法では、トランザクションのコミットが完了するまでの時間を短縮することができ、システム全体のパフォーマンスを向上させることが可能である。
ただし、第2の方法では、レプリケーションが完了する前に他のマスタ又はスレーブにおいて検索処理が発生すると、マスタと異なるデータ内容を参照してしまう可能性がある。これに対応する方法として、他のマスタ又はスレーブにおいて発生した検索処理の実行をレプリケーションが完了するまで待機させる方法が用いられる場合がある(特許文献1)。
国際公開第2010/106991号 特開2012−133417号公報
マスタで作成されたトランザクションログを利用してレプリケーションを行う際の根本的な問題として、他のマスタ又はスレーブにおいて、トランザクションログをデータベースに適用する処理に時間がかかってしまうという問題点がある。なぜなら、従来のトランザクションログは、マスタにおいて並列処理されたトランザクションを処理された順に直列状態で記録しており、他のマスタ又はスレーブは、そのようなトランザクションログのレコードを前から順にひとつひとつデータベースに適用しなければならず、マスタにおいて並列で実行された処理を直列で実行しなければならないからである。
そのため、第2の方法を用いたとしても、トランザクションログをデータベースに適用する処理に時間がかかってしまい、他のマスタ又はスレーブにおいて発生した検索処理の実行が遅れ、パフォーマンスを十分に向上させられない可能性があった。
この問題点に対応する方法として、図2に示される第3の方法が提案されている(一例として、特許文献2が挙げられる)。第3の方法では、マスタは、複数のトランザクションログを並列に作成し、並列に作成した複数のトランザクションログを他のマスタ又はスレーブに送信する。そして、他のマスタ又はスレーブでは、当該複数のトランザクションログがデータベースに並列に適用される。
第3の方法によると、他のマスタ又はスレーブのデータベースにトランザクションログを並列に適用することが可能になるため、トランザクションログをデータベースに適用する処理の速度が改善されるように見える。しかしながら、第3の方法には、以下のような問題点が存在する。
第1の問題点として、トランザクションログに関する技術は、障害時の復旧に用いられる等、データベースの根幹に関わる技術である。そして、従来のシステムでは、トランザクションログは直列状態で作成されている。そのため、従来のシステムにおいて第3の方法を実施するためには、データベースの根幹に関わる部分のシステム変更という危険を伴うことになる。
第2の問題点として、従来のトランザクションログでは、データベースに適用された順に記録が残る。そのため、トランザクションログをその順序のままデータベースに適用すれば、レプリケーション実行中であっても、他のマスタ又はスレーブは、マスタのデータベースと整合性を取ることが可能であった。
一方、トランザクションログを並列化すると、他のマスタ又はスレーブでは、必ずしも同じ処理が同じ順序で実行されるとは限らない。そのため、他のマスタ又はスレーブは、レプリケーション実行中において、マスタのデータベースと整合性を取ることができなくなってしまう。
そこで、他のマスタ又はスレーブにおいてレプリケーションが実行されている最中に検索処理が実行されるような場面では、マスタのデータベースと整合性を取るために、並列化されたトランザクションログの適用順を定める機構が他のマスタ又はスレーブに設けられることになる。従って、第3の方法を実施する場合、システムが複雑になってしまう。
第3の問題点として、並列に処理されるトランザクションの数は状況によって変化するのに対して、並列に作成されるトランザクションログの数は固定される。そのため、第3の方法では、トランザクションの数とトランザクションログの数との不均衡の問題は根本的には解決せず、トランザクションログをデータベースに適用する処理の速度が改善されるとは限らない。
本発明は、一側面では、このような点を考慮してなされたものであり、トランザクションログを適用してデータベースを更新する処理の速度を改善することを目的とする。
本発明の第1形態は、トランザクションログを利用して自身のデータベースを更新するコンピュータが、前記トランザクションログを取得するステップと、取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されている場合は該更新命令を実行し、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されていない場合は該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理するステップと、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象になるまでに、又は、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象となった際に、該対象について待機させた更新命令を実行するステップと、を実行する情報処理方法である。
本発明の第1形態によれば、取得されるトランザクションログは、レコードの先頭から順に参照されて、処理される。この処理において、トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、更新命令の対象がコンピュータのメモリ上に読み出されている場合は、そのレコードにより示される更新命令は実行される。他方、更新命令の対象がメモリ上に読み出されていない場合は、そのレコードにより示される更新命令の実行は待機させられる。そして、待機させられた更新命令の対象がメモリ上に読み出されて処理の対象になるまでに、又は、待機させられた更新命令の対象がメモリ上に読み出されて処理の対象となった際に、当該対象について待機させられた命令は実行される。
トランザクションログを適用してデータベースを更新する処理の速度を改善することが困難である1つの原因として、データベースを更新する際のデータの読み出し及び書き込みの処理が他の処理に比べて比較的に遅いことが挙げられる。本発明の第1形態は、データベースからデータを読み出す必要のない更新命令については、処理を実行する。他方、本発明の第1形態は、データベースからデータを読み出す必要のある更新命令については、処理を遅延させる。そのため、本発明の第1形態によれば、トランザクションログを適用してデータベースを更新する際のデータの読み出し及び書き込みの処理を効率的に行うことが可能になる。また、待機させた更新命令については、並列に処理することが可能である。
従って、本発明の第1形態によれば、トランザクションログをデータベースに適用する処理の速度を改善することが可能になる。
本発明の第2形態は、前記コンピュータが、前記トランザクションログを取得するステップにおいて、他のコンピュータのデータベースと前記自身のデータベースとの間でレプリケーションを行うために、前記他のコンピュータにおいて直列的に作成されたトランザクションログを取得する、第1形態の情報処理方法である。
本発明の第3形態は、前記コンピュータが、前記レコードにより示される更新命令の実行を待機させる際、前記更新命令の対象に待機させた更新命令が存在することを示すために、待機させた前記更新命令の内容及び前記レコードの番号のうちの少なくとも一方を、前記更新命令の対象に関連付けてマップ情報に記録し、前記マップ情報を参照して、前記対象について待機させた更新命令を実行する、第1形態又は第2形態の情報処理方法である。
本発明の第4形態は、前記コンピュータが、処理の対象の前記メモリへの読み込みを所定の集合ごとに行い、前記レコードにより示される更新命令の実行を待機させる際、前記更新命令の対象に待機させた更新命令が存在することを示すために、待機させた前記更新命令の内容及び前記レコードの番号のうちの少なくとも一方を、前記更新命令の対象を含む所定の集合に関連付けてマップ情報に記録し、前記所定の集合が前記メモリ上に読み出されて処理の対象になるまでに、又は、前記所定の集合が前記メモリ上に読み出されて処理の対象となった際に、前記マップ情報を参照して、前記所定の集合に含まれる対象について待機させた更新命令を実行する、第1形態又は第2形態の情報処理方法である。
本発明の第5形態は、前記コンピュータが、前記自身のデータベースに対する検索処理を、該検索処理に関して処理されていることが求められる前記トランザクションログのレコードに対する処理が完了するまで、待機させる、第1形態から第4形態のいずれかの形態の情報処理方法である。
本発明の第6形態は、トランザクションログを利用して自身のデータベースを更新するコンピュータが、前記トランザクションログを取得するステップと、取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理するステップと、待機させた更新命令の対象が処理の対象になるまでに、又は、待機させた更新命令の対象が処理の対象となった際に、該対象について待機させた更新命令を実行するステップと、を実行する情報処理方法である。
本発明の第7形態は、前記コンピュータが、前記トランザクションログを取得するステップにおいて、他のコンピュータのデータベースと前記自身のデータベースとの間でレプリケーションを行うために、前記他のコンピュータにおいて直列的に作成されたトランザクションログを取得する、第6形態の情報処理方法である。
本発明の第8形態は、前記コンピュータが、前記更新命令を待機させる際に、前記更新命令の対象に待機させた更新命令が存在することを示すために、前記更新命令の内容と前記更新命令に係るレコードの番号のうち少なくとも一方を前記更新命令の対象に関連付けてマップ情報に記録し、前記マップ情報を参照して、前記対象について待機させた前記更新命令を実行する、第6形態又は第7形態の情報処理方法である。
本発明の第9形態は、前記コンピュータが、処理の対象の前記メモリへの読み込みを所定の集合ごとに行い、前記更新命令の実行を待機させる際、前記更新命令の対象に待機させた更新命令が存在することを示すために、待機させた前記更新命令の内容及び前記レコードの番号のうちの少なくとも一方を、前記更新命令の対象を含む所定の集合に関連付けてマップ情報に記録し、前記所定の集合が処理の対象になるまでに、又は、前記所定の集合が処理の対象となった際に、前記マップ情報を参照して、前記所定の集合に含まれる対象について待機させた更新命令を実行する、第6形態又は第7形態の情報処理方法である。
本発明の第10形態は、前記コンピュータが、前記自身のデータベースに対する検索処理を、該検索処理に関して処理されていることが求められる前記トランザクションログのレコードに対する処理が完了するまで、待機させる、第6形態から第9形態のいずれかの形態の情報処理方法である。
なお、上記各形態に係る情報処理方法の別の態様として、以上の各構成を実現する情報処理装置であってもよいし、情報処理システムであってもよいし、プログラムであってもよいし、このようなプログラムを記録したコンピュータその他装置、機械等が読み取り可能な記憶媒体であってもよい。ここで、コンピュータ等が読み取り可能な記録媒体とは、プログラム等の情報を、電気的、磁気的、光学的、機械的、又は、化学的作用によって蓄積する媒体である。また、情報処理システムは、1又は複数の情報処理装置によって実現されてもよい。
例えば、本発明の第11形態は、トランザクションログを利用して自身のデータベースを更新する情報処理装置であって、前記トランザクションログを取得する手段と、取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されている場合は該更新命令を実行し、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されていない場合は該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理する手段と、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象になるまでに、又は、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象となった際に、該対象について待機させた更新命令を実行する手段と、を備える情報処理装置である。
また、例えば、本発明の第12形態は、トランザクションログを利用して自身のデータベースを更新するコンピュータに、前記トランザクションログを取得するステップと、取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されている場合は該更新命令を実行し、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されていない場合は該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理するステップと、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象になるまでに、又は、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象となった際に、該対象について待機させた更新命令を実行するステップと、を実行させるためのプログラムである。
また、例えば、本発明の第13形態は、トランザクションログを利用して自身のデータベースを更新する情報処理装置であって、前記トランザクションログを取得する手段と、取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理する手段と、待機させた更新命令の対象が処理の対象になるまでに、又は、待機させた更新命令の対象が処理の対象となった際に、該対象について待機させた更新命令を実行する手段と、を備える情報処理装置である。
また、例えば、本発明の第14形態は、トランザクションログを利用して自身のデータベースを更新するコンピュータに、取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理するステップと、待機させた更新命令の対象が処理の対象になるまでに、又は、待機させた更新命令の対象が処理の対象となった際に、該対象について待機させた更新命令を実行するステップと、を実行させるためのプログラムである。
本発明によれば、トランザクションログをデータベースに適用する処理の速度を改善することができる。
図1は、他のマスタ又はスレーブとマスタとを同期させてレプリケーションを行う従来方法を例示する。 図2は、他のマスタ又はスレーブとマスタとを同期させてレプリケーションを行う従来方法を例示する。 図3は、実施の形態に係る情報処理装置を例示する。 図4は、実施の形態に係る情報処理装置において実行される各プロセスの関係を例示する。 図5は、実施の形態に係るデータベースの更新例を示す。 図6は、実施の形態に係る情報処理装置において取得されるトランザクションログを例示する。 図7は、クエリを受信した時点における実施の形態に係る情報処理装置の動作状態を例示する。 図8は、実施の形態に係るメインプロセスの処理が36番のレコードまで完了した時点における情報処理装置の動作状態を例示する。 図9は、実施の形態に係るメインプロセスの処理が同期点のレコードまで完了した時点における情報処理装置の動作状態を例示する。 図10は、実施の形態に係るヘルパープロセスの処理手順を例示する。 図11は、実施の形態に係るバックエンドプロセスの処理手順を例示する。 図12は、実施の形態に係るメインプロセスの処理が36番のレコードまで完了した時点における情報処理装置の動作状態を例示する。 図13は、実施の形態に係るメインプロセスの処理が同期点のレコードまで完了した時点における情報処理装置の動作状態を例示する。 図14は、実施の形態に係るヘルパープロセスの処理手順を例示する。 図15は、実施の形態に係るバックエンドプロセスの処理手順を例示する。
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、それぞれの実施形態に応じた具体的構成が適宜採用されてもよい。
なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメタ、マシン語等で指定される。
§1 第1実施形態
[構成例]
図3は、本実施形態に係る情報処理装置1のハードウェア構成を例示する。図3で例示されるように、本実施形態に係る情報処理装置1は、制御部、記憶装置、及び、ネットワークを介した通信を行うための通信インタフェース、が電気的に接続されたコンピュータである。制御部は、CPU(Central Processing Unit)、RAM(Random Access Memory)、及び、ROM(Read Only Memory)等を含む。また、記憶装置は、制御部で実行されるプログラム等を記憶し、かつ、データベース(図の「DB」)を格納する。
なお、図3では、通信インタフェースは、「通信I/F」と記載される。制御部に含まれるRAM及びROMは主記憶装置と称され、記憶装置は補助記憶装置と称されてもよい。制御部に含まれるCPUは、処理装置と称されてもよい。情報処理装置1は、PC(Personal Computer)、サーバマシン等であってもよい。
また、情報処理装置1のハードウェア構成に関して、実施の形態に応じて適宜構成要素の省略、置換、及び、追加が行われてもよい。例えば、制御部は、複数のプロセッサを含んでもよい。
図4は、情報処理装置1において実行される各プロセスの関係を例示する。情報処理装置1は、トランザクションログを取得し、取得したトランザクションログを利用して自身の記憶装置に格納されたデータベースを更新するコンピュータである。情報処理装置1は、取得したトランザクションログのレコードを先頭から順に参照して、自身のデータベースに適用していく。このとき、情報処理装置1は、RAMに読み出されているデータ(タプル)に対する更新命令は実行し、RAMに読み出されていないデータに対する更新命令はスキップする。そして、スキップされた更新命令は、対象となるデータがRAMに読み出されるまでに、又は、読み出された際に、実行される。これにより、トランザクションログを利用したデータベースの更新が完了する。
図4で例示されるように、本実施形態に係る情報処理装置1の制御部は、記憶装置に格納されたプログラム等をRAM等に展開し、その内容を解釈することで、メインプロセス(図の「MAIN」)、バックエンドプロセス(図の「BACKEND」)、及び、ヘルパープロセス(図の「HELPER」)を実行する。
メインプロセスは、取得したトランザクションログのレコードを先頭から順に参照して、自身のデータベースに適用するプロセスである。トランザクションログには、データベースに含まれるデータを更新する更新命令に関するレコードとトランザクションの管理に関するレコードとが含まれている。メインプロセスは、取得したトランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、更新命令の対象がRAM上に読み出されている場合は当該更新命令を実行し、更新命令の対象がRAM上に読み出されていない場合は当該更新命令の実行を待機させることで、取得したトランザクションログのレコードを処理する。待機させられた更新命令は、ヘルパープロセス又はバックエンドプロセスにより処理され、トランザクションログを利用したデータベースの更新が完了する。
ヘルパープロセスは、メインプロセス及び後述するバックエンドプロセスの補助的なプロセスである。本実施形態では、ヘルパープロセスは、メインプロセスが待機させた更新命令を実行する。
バックエンドプロセスは、クライアントPC(図の「CL」)からのデータベースに対する検索リクエスト(クエリ)に応じて、検索処理を実行するプロセスである。本実施形態では、ヘルパープロセスだけではなく、バックエンドプロセスによっても、メインプロセスにより待機させられた更新命令が実行される場合がある。なお、本実施形態に係るバックエンドプロセスは、検索処理に関して処理されていることが求められるトランザクションログのレコードに対するメインプロセスの処理が完了するまで、当該検索処理の実行を待機する。ただし、バックエンドプロセスは、検索処理以外の処理を実行してもよい。バックエンドプロセスが実行する処理は、検索処理に限定されない。
なお、本実施形態においてデータベースの更新に利用されるトランザクションログは、自身のデータベースのリカバリーを行うために、自身において作成されたものであってよい。この場合、情報処理装置1は、自身又は他のコンピュータの記憶装置から、当該トランザクションログを取得する。
また、本実施形態においてデータベースの更新に利用されるトランザクションログは、他のコンピュータのデータベースと自身のデータベースとの間でレプリケーションを行うために、他のコンピュータにおいて作成されたものでもよい。この場合、情報処理装置1は、他のコンピュータから当該トランザクションログを取得する。
更に、本実施形態においてデータベースの更新に利用されるトランザクションログは、直列的に作成されたものでもよいし、並列的に作成されたものでもよい。ただし、トランザクションログに関する技術を従来システムから変更しないためには、本実施形態で利用されるトランザクションログは直列的に作成されたものであるほうがよい。
本実施形態は、トランザクションログを利用してデータベースを更新するシステムに広く適用することができる。
[動作例]
次に、情報処理装置1の具体的な動作例を示す。図5は、本動作例におけるデータベースの更新例を示す。また、図6は、本動作例において取得されるトランザクションログを例示する。
図5は、行番号、命令内容、及び、ポインタを含む、テーブル形式のデータベースの一部が更新される場面を例示している。具体的には、図5は、行番号101、103、及び104のタプルが削除(DELETE)され、行番号205及び206のタプルが挿入(INSERT)される場面を示している。ただし、データベースの形式は、テーブル形式に限定される訳ではなく、実施の形態に応じて適宜選択されてよい。
なお、本実施形態では、後述する図7等に示されるように、データベースの各タプルは、記憶装置上においてページ単位で管理されており、記憶装置とRAMとの間のデータのやり取りは、当該ページ単位で行われる。換言すると、データベースの内容を更新する場合、制御部は、更新対象のタプルを含むページを記憶装置からRAMに読み出して、対象のタプルの更新を行う。そして、制御部は、対象のタプルの更新を行った後に、当該タプルを含むページをRAMから記憶装置に書き込むことで、データベースの更新を保存する。なお、RAMから記憶装置にページが書き込まれるタイミングは、実施の形態に応じて適宜決定される。また、ページには、1又は複数のタプルが格納される。ページは、ブロックと称されてもよく、本発明の「所定の集合」に相当する。
図6は、図5に示されるデータベースの更新が生じた際に直列的に作成されたトランザクションログを例示している。トランザクションログには、少なくとも命令内容とその命令の対象とが時系列で連続的に記録される。
図6で例示されるトランザクションログは、1番目のトランザクションが開始され(XB1)、1番目のトランザクションによりページ番号5のページに格納された行番号101のタプルが削除され(D1_101_5)、2番目のトランザクションが開始され(XB2)、2番目のトランザクションによりページ番号2のページに行番号205のタプルが挿入され(I2_205_2)、1番目のトランザクションによりページ番号2のページに格納された行番号103のタプルが削除され(D1_103_2)、1番目のトランザクションがコミットされ(XC1)、2番目のトランザクションによりページ番号9のページに格納された行番号104のタプルが削除され(D2_104_9)、2番目のトランザクションによりページ番号8のページに行番号206のタプルが挿入され(I2_206_8)、2番目のトランザクションがコミットされた(XC2)ことを示している。
ここで、図6で例示されるトランザクションログのレコードは、データベースに含まれるデータを更新する更新命令に関するレコード(D1_101_5、D1_103_2、I2_205_2、D2_104_9、I2_206_8)と、トランザクションの管理に関するレコード(XB1、XB2、XC1、XC2)とに分けることができる。また、図6で例示されるトランザクションログでは、各レコードを特定するための番号(LSN:log sequence number)が与えられている。
<メインプロセス>
図7〜9は、メインプロセスの動作を例示する。
図7は、クエリを受信した時点における情報処理装置1の動作状態を例示する。図7では、行番号103のタプルはページ番号2(P2)のページに格納され、行番号101のタプルはページ番号5(P5)のページに格納され、行番号102及び104のタプルはページ番号9(P9)のページに格納されている。そして、ページ番号1、5、及び、8(P1、P5、及び、P8)のページがRAM上に読み出されている。
また、図7の場面では、40番のレコードまでトランザクションログを取得し、32番の手前のレコードまでメインプロセスの処理が完了している。そして、クライアントPCからのクエリに応じてバックエンドプロセスが起動している。
メインプロセスは、取得したトランザクションログのレコードを先頭から順に参照する。そして、メインプロセスは、参照したレコードがデータベースの更新命令に関するレコードである場合、当該レコードを参照した時点でその対象(タプル)がデータベース内に存在するような更新命令(例えば、DELETE命令)については、当該更新命令の対象(タプル)がRAM上に読み出されているか否かを判定する。他方、当該レコードを参照した時点でその対象(タプル)がデータベース内に存在しないような更新命令(例えば、INSERT命令)については、当該更新命令の対象(タプル)が挿入される領域がRAM上に読み出されているか否かを判定することで、当該更新命令の対象がRAM上に読み出されているか否かを判定する。なお、本実施形態では、タプルはページ単位で管理されているため、メインプロセスは、レコードにより示される更新命令の対象であるタプルを含むページがRAM上に読み出されているか否かを判定する。
対象のページがRAM上に読み出されている場合、メインプロセスは、対象のレコードにより示される更新命令を実行する。他方、対象のページがRAM上に読み出されていない場合、メインプロセスは、対象のレコードにより示される更新命令の実行を待機させる。
また、メインプロセスは、参照したレコードがトランザクションの管理に関するレコードである場合、当該レコードが示す内容に合わせて、トランザクションを管理するための管理情報を更新する。管理情報は、例えば、実行中のトランザクションやコミットされたトランザクションを示す。
なお、メインプロセスは、参照したレコードにより示される更新命令の実行を待機させる際に、待機させた更新命令の内容を当該タプルに関連付けて記録するマップ情報を作成する。マップ情報には、待機させた更新命令の内容及びレコードの番号のうちの少なくとも一方が、更新命令の対象であるタプルに関連付けられて記録される。ヘルパープロセス又はバックエンドプロセスは、当該マップ情報を参照して、待機させられた更新命令を実行する。
ここで、命令の内容を記録したトランザクションログは、情報処理装置1のRAM又は記憶装置に保持されている。そのため、トランザクションログのレコード番号がマップ情報に記録される場合、ヘルパープロセス又はバックエンドプロセスは、当該マップ情報に記録されるレコード番号に基づいてRAM又は記憶装置に保持されているトランザクションログにアクセスし、実行する更新命令の内容を特定する。
また、本実施形態では、更新命令の対象であるタプルは、ページ単位で管理されている。そのため、マップ情報には、更新命令の内容及びトランザクションログのレコードの番号のうちの少なくとも一方が、更新命令の対象であるタプルを含むページ(具体的にはページ番号)に関連付けられて記録される。本実施形態では、ページ番号に関連付けられて更新命令の内容又はレコード番号が記録される例を示す。
なお、図7で示される時点では、マップ情報には、何ら記録されていないとする。
ここで、本実施形態では、図1に例示される第2の方法のように、トランザクションログの適用の有無に関わらず、情報処理装置1がACKを返し、情報処理装置1と他のコンピュータとを同期させてレプリケーションを行う場面を想定している。そのため、図7で示されるトランザクションログでは、同期点が設定されている。同期点は、情報処理装置1のデータベースに対する検索処理に関して処理されていることが求められるレコードを示す。バックエンドプロセスは、クエリを受信した時点において設定されている同期点にメインプロセスの処理が達するまで、すなわち、本動作例では40番のレコードに対するメインプロセスの処理が完了するまで、検索処理の実行を待機する。
処理完了点を示す情報及び同期点を示す情報は、例えば、RAM上に保持される。そして、処理完了点は、例えば、メインプロセスが処理を完了させるたびに、処理が完了したレコードを示すように更新される。また、同期点は、例えば、トランザクションログを受信したことを示すACKを返すたびに、ACKを返したレコードを示すように更新される。
なお、本実施形態において適用される同期レプリケーションの方法は、図1に例示される第2の方法に限定される訳ではなく、例えば、図1に例示される第1の方法のように、トランザクションログをデータベースに適用した後に情報処理装置1がACKを返す方法が本実施形態に適用されてもよい。また、情報処理装置1において実行されるレプリケーションの方式は、同期レプリケーションではなく、非同期レプリケーションであってもよい。これらの場合、同期点は設定されないため、本実施形態に係るバックエンドプロセスの動作のうち、同期点まで検索処理を待機させる動作は不要になる。
図8は、図7で例示される状態の後に、メインプロセスの処理が36番のレコードまで完了した時点における情報処理装置1の動作状態を例示する。
32番から36番のレコードのうち、33番、35番及び36番のレコードは、データベースの更新命令に関するレコードである。また、32番及び34番のレコードは、トランザクションの管理に関するレコードであり、更新命令以外の命令に関するレコードである。
ここで、データベースの更新命令に関する33番、35番及び36番のレコードのうち、33番のレコードにより示される更新命令の対象は、P5のページに格納された行番号101のタプルであり、当該行番号101のタプルを含むP5のページはRAM上に読み出されている。他方、35番のレコードにより示される更新命令の対象は、P2のページに挿入される行番号205のタプルであり、当該行番号205のタプルが挿入される領域であるP2のページはRAM上に読み出されていない。また、36番のレコードにより示される更新命令の対象は、P2のページに格納された行番号103のタプルであり、35番のレコードと同様に、当該行番号103のタプルを含むP2のページはRAM上に読み出されていない。
そこで、メインプロセスは、まず、32番のレコードを参照し、32番のレコードにより示される命令を実行する。具体的には、32番のレコードは1番目のトランザクションの開始を示す。そのため、メインプロセスは、例えば、1番目のトランザクションの状態が実行中であることを示すように、管理情報を更新する。
32番のレコードを処理すると、メインプロセスは、次の33番のレコードを参照する。33番のレコードにより示される更新命令(D1_101_5)の対象はRAM上に読み出されているため、メインプロセスは、33番のレコードにより示される更新命令(D1_101_5)を実行する。具体的には、メインプロセスは、RAM上に読み出されているP5の行番号101のタプルに削除ポインタを付与する。
33番のレコードを処理すると、メインプロセスは、次の34番のレコードを参照し、34番のレコードにより示される命令を実行する。具体的には、34番のレコードは、2番目のトランザクションの開始を示す。そのため、メインプロセスは、例えば、2番目のトランザクションの状態が実行中であることを示すように、管理情報を更新する。
34番のレコードを処理すると、メインプロセスは、次の35番のレコードを参照する。35番のレコードにより示される更新命令(I2_205_2)の対象はRAM上に読み出されていないため、メインプロセスは、35番のレコードにより示される更新命令(I2_205_2)の実行を待機させる。そして、メインプロセスは、35番のレコードにより示される更新命令(I2_205_2)の内容又はレコード番号(35)をページ番号(P2)に関連付けてマップ情報に記憶する。
35番のレコードを処理すると、メインプロセスは、次の36番のレコードを参照する。36番のレコードにより示される更新命令(D1_103_2)の対象は、35番のレコードと同様、RAM上に読み出されていない。そのため、メインプロセスは、36番のレコードにより示される更新命令(D1_103_2)についても、その実行を待機させる。そして、メインプロセスは、36番のレコードにより示される更新命令(D1_103_2)の内容又はレコード番号(36)をページ番号(P2)に関連付けてマップ情報に記憶する。これにより、36番までのレコードの処理が完了する。
なお、メインプロセスは、参照した順番に応じて、更新命令の内容又はレコード番号をマップ情報に記録する。これにより、後述するヘルパープロセス又はバックエンドプロセスは、待機させられた更新命令の実行順序を認識することができる。ただし、仮に、更新命令の内容又はレコード番号が参照された順番に応じてマップ情報に記録されなかったとしても、ヘルパープロセス又はバックエンドプロセスは、待機させられた更新命令のレコード番号により、当該更新命令の実行順序を認識することができる。
なお、バックエンドプロセスは、クエリを受信した時点で設定されていた同期点である40番のレコードまでメインプロセスの処理が完了していないため、実行を待機している。
図9は、図8で例示される状態の後に、図7の時点で設定されていた同期点(40番)のレコードまでメインプロセスの処理が完了した時点における情報処理装置1の動作状態を例示する。
37番から40番のレコードのうち、38番と39番のレコードは、データベースの更新命令に関するレコードである。また、37番と40番のレコードは、トランザクションの管理に関するレコードであり、更新命令以外の命令に関するレコードである。
ここで、データベースの更新命令に関する38番と39番のレコードのうち、38番のレコードにより示される更新命令の対象は、P9のページに格納された行番号104のタプルであり、当該行番号104のタプルを含むP9のページはRAM上に読み出されていない。他方、39番のレコードにより示される更新命令の対象は、P8のページに挿入される行番号206のタプルであり、当該行番号206のタプルが挿入される領域であるP8のページはRAM上に読み出されている。
そこで、メインプロセスは、まず、37番のレコードを参照し、37番のレコードにより示される命令を実行する。具体的には、37番のレコードは1番目のトランザクションのコミットを示す。そのため、メインプロセスは、例えば、1番目のトランザクションがコミットされたことを示すように、管理情報を更新する。
37番のレコードを処理すると、メインプロセスは、次の38番のレコードを参照する。38番のレコードにより示される更新命令(D2_104_9)の対象はRAM上に読み出されていないため、メインプロセスは、38番のレコードにより示される更新命令(D2_104_9)の実行を待機させる。そして、メインプロセスは、38番のレコードにより示される更新命令(D2_104_9)の内容又はレコード番号(38)をページ番号(P9)に関連付けてマップ情報に記録する。
38番のレコードを処理すると、メインプロセスは、次の39番のレコードを参照する。39番のレコードにより示される更新命令(I2_206_8)の対象はRAM上に読み出されているため、メインプロセスは、39番のレコードにより示される更新命令(I2_206_8)を実行する。具体的には、メインプロセスは、RAM上に読み出されているP8のページに行番号206のタプルを挿入する。
39番のレコードを処理すると、メインプロセスは、次の40番のレコードを参照し、40番のレコードにより示される命令を実行する。具体的には、40番のレコードは2番目のトランザクションのコミットを示す。そのため、メインプロセスは、例えば、2番目のトランザクションがコミットされたことを示すように、管理情報を更新する。
これにより、クエリを受信した時点で設定されていた同期点である40番のレコードまでメインプロセスの処理が完了するため、バックエンドプロセスは、対象のクエリに対する検索処理を実行することが可能になる。
<ヘルパープロセス>
メインプロセスにより待機させられた更新命令は、以下の通りに、ヘルパープロセスにより処理される。
図10は、本実施形態におけるヘルパープロセスの処理手順を例示する。なお、図10は、図9におけるバックエンドプロセスによる検索処理が開始する前に、ヘルパープロセスによる処理が開始した場面を例示する。
ステップS11では、ヘルパープロセスは、マップ情報を参照し、待機している更新命令があるか否かを判定する。待機している更新命令がマップ情報に記録されていない場合、ヘルパープロセスは処理を終了する。他方、待機している更新命令がマップ情報に記録されている場合、自身が処理する対象を管理単位に応じて選択して、処理をステップS12に進める。図10に示される例では、待機させられた更新命令はページ単位で管理されており、ヘルパープロセスは、自身が処理する対象としてP9のページを選択している。
ステップS12では、ヘルパープロセスは、自身が処理する対象を、記憶装置からRAMに読み出す。本動作例では、ヘルパープロセスの処理対象としてP9のページが選択されているため、P9のページが記憶装置からRAMに読み出される。
ステップS13では、ヘルパープロセスは、自身が選択した処理対象に関連付けられ、待機している更新命令を実行する。本動作例では、ヘルパープロセスは、P9について待機している更新命令(D2_104_9)を実行して、行番号104のタプルに削除ポインタを付与する。そして、ヘルパープロセスは、自身が選択した処理対象(P9)について待機している更新命令を実行した後に、処理した更新命令に関する記録をマップ情報から削除して、処理を終了する。
なお、ヘルパープロセスは、上述のとおり、処理対象として選択したページに複数の更新命令が待機している場合、マップ情報に記録されている順(番号順)に、当該待機している更新命令を実行する。これにより、そのページに関して、情報処理装置1とレプリケーション元のコンピュータとの間で、レプリケーションが実行されている最中におけるデータベースの整合性を保つことができる。
なお、情報処理装置1の制御部は、ヘルパープロセスを複数実行してもよく、ヘルパープロセスを生成若しくは削除又は起動若しくは停止することで、動作するヘルパープロセスの数を増減させてもよい。例えば、制御部は、マップ情報で記録されている待機させられている更新命令の管理単位に応じて、本動作例では、待機させられた更新命令がマップ情報に記録されているページの数に応じて、起動するヘルパープロセスの数を増減させてもよい。この場合は、ヘルパープロセスの処理能力を要求に応じて可変にでき、無駄なヘルパープロセスが存在することを避けることができるため、リソースを効率よく活用することが可能になる。
また、例えば、一定数のヘルパープロセスを予め起動させておいてもよい。この場合は、処理の状況により、無駄なヘルパープロセスが存在してしまう可能性がある。しかしながら一方で、処理の要求が生じた場合に改めてヘルパープロセスを起動しなくて済み、生じた要求に迅速に対応することが可能になる。
なお、ヘルパープロセスは、本動作例に示されるタイミング以外に、実施の形態に応じて、適宜処理を実行してもよい。マップ情報の状態を考慮すると、例えば、38番のレコードに対するメインプロセスの処理が完了した後であれば、ヘルパープロセスは、図10で例示される動作を実行することができる。
<バックエンドプロセス>
図11は、本実施形態におけるバックエンドプロセスの処理手順を例示する。なお、図11は、図9及び10で例示した状態の後に、バックエンドプロセスによる検索処理が開始した場面を例示する。
ステップS21では、バックエンドプロセスは、受信したクエリの内容に適合するタプルを抽出するために、記憶装置の記憶領域のうち、当該クエリにより検索範囲に指定された領域にアクセスする。そして、ステップS22では、バックエンドプロセスは、アクセスした領域に含まれるページがRAMに存在しない場合、そのページを記憶装置からRAMに読み出し、検索処理の対象とする。例えば、データベースに複数のテーブルが含まれている場合に、検索範囲として特定のテーブルが指定される場合がある。この場合、バックエンドプロセスは、検索範囲として指定されているテーブルに関するデータを保持する領域にアクセスし、検索範囲となるテーブルのデータを、そのデータがRAMに存在しない場合、記憶装置からRAMに読み出す。記憶装置からRAMに読み出す領域、クエリにより指定される検索範囲等は、実施の形態に応じて、適宜決定されてよい。アクセスした領域に含まれるページをRAMに読み出すと、バックエンドプロセスは、ステップS23に処理を進める。
なお、バックエンドプロセスは、検索範囲に含まれるページを記憶装置からRAMに読み出す場合に、例えば、1つ1つ対象のページを読み出してもよいし、複数のページを一度に読み出してもよい。この場合に、バックエンドプロセスは、1又は複数のページを読み出す毎に、読み出した1又は複数のページに対して、後述する処理を実行する。図11では、ステップS22の処理により、P2のページが記憶装置からRAMに読み出された場面を例示する。
バックエンドプロセスがアクセスした領域に含まれるページが既にRAMに存在する場合、バックエンドプロセスは、記憶領域からの読み出しを行わず、既にRAMに存在しているページを検索処理の対象とし、ステップS23ではなく、ステップS25に処理を進める。
ステップS23では、バックエンドプロセスは、マップ情報を参照し、RAMに読み出したページについて待機している更新命令があるか否かを判定する。RAMに読み出したページについて待機している更新命令がマップ情報に記録されていない場合、バックエンドプロセスは、ステップS25に処理を進める。他方、RAMに読み出したページについて待機している更新命令がマップ情報に記録されている場合、処理はステップS24に進む。本動作例では、ステップS22においてP2のページがRAMに読み出されており、当該P2のページに格納されたタプルについて待機している更新命令(I2_205_2及びD1_103_2)が存在するため、処理はステップS24に進む。
ステップS24では、バックエンドプロセスは、RAMに読み出したページについて待機している更新命令を実行する。本動作例では、バックエンドプロセスは、P2について待機している更新命令(I2_205_2及びD1_103_2)を実行する。ここで、バックエンドプロセスは、マップ情報に記録されている順に、待機している更新命令を実行する。すなわち、本動作例では、バックエンドプロセスは、行番号205のタプルをP2に挿入した後に、行番号103のタプルに削除ポインタを付与する。そして、バックエンドプロセスは、RAMに読み出したページ(P2)について待機している更新命令を全て実行した後に、処理した更新命令に関する記録をマップ情報から削除する。
このように、バックエンドプロセスは、ヘルパープロセス同様、処理対象として選択したページに複数の更新命令が待機している場合、マップ情報に記録されている順(番号順)に、当該待機している更新命令を実行する。これにより、そのページに関して、情報処理装置1とレプリケーション元のコンピュータとの間で、レプリケーションが実行されている最中におけるデータベースの整合性を保つことができる。
ステップS25では、バックエンドプロセスは、検索処理の対象としたページに対して、受信したクエリに応じた検索処理を実行する。そして、検索範囲において検索処理の対象としていないページが残っている場合、バックエンドプロセスは、ステップS22に戻って処理を繰り返す。他方、検索範囲において検索処理の対象としていないページが残っていない場合、バックエンドプロセスは、クエリに対する応答として検索処理の結果をクライアントPCに返信し、処理を終了する。
本実施形態では、ページがRAMに読み出された段階で、当該ページに対して、待機させられた更新命令が実行される。また、RAM上に存在するページに対する更新命令は即座に実行される。そのため、本実施形態において、検索範囲に含まれるページが既にRAMに読み出されている場合、当該ページに対する更新命令の実行が待機されていることはない。従って、本実施形態に係るバックエンドプロセスは、ステップS22において、読み出そうとしたページが既にRAMに存在する場合、記憶領域からの読み出しを行わず、既にRAMに存在しているページを検索の処理対象とし、ステップS23及びS24の処理を省略して、ステップS25に処理を進めてよい。
なお、情報処理装置1の制御部は、バックエンドプロセスを複数実行してもよく、バックエンドプロセスを生成若しくは削除又は起動若しくは停止することで、動作するバックエンドプロセスの数を増減させてもよい。例えば、制御部は、クライアントPCから受け付けたクエリの数に応じて起動するバックエンドプロセスの数を増減させてもよい。この場合、バックエンドプロセスの処理能力を要求に応じて可変にでき、無駄なバックエンドプロセスが存在することを避けることができるため、リソースを効率よく活用することが可能になる。
また、バックエンドプロセスは、少なくともステップS23及びS24のページの更新に関する処理をヘルパープロセスに任せてもよい。この場合、例えば、バックエンドプロセスは、記憶装置にアクセスした後に、ヘルパープロセスにページの更新を依頼して、ステップS23、S24の処理をヘルパープロセスに実行させる。そして、バックエンドプロセスは、ステップS24の処理が完了した後にヘルパープロセスから通知を受け取ると、ステップS25の検索処理を実行する。このようにバックエンドプロセスがページの更新処理をヘルパープロセスに任せることで、ページの更新処理をヘルパープロセスに一元化することができる。これによって、各プロセスの役割分担を明確にすることができ、各プロセスの構造を単純にすることができる。
<第1実施形態の作用・効果>
バックエンドプロセスによる検索処理などにおいてページ(タプル)が処理の対象になる際には、当該ページ(タプル)はRAMに読み出される。既にRAMに読み出されているページ(タプル)については、いつでも処理の対象になる可能性がある。他方、RAMに読み出されていないページ(タプル)は、RAMに読み出されるまで、処理の対象になる可能性がない。
そこで、メインプロセスは、対象のレコードを参照した時点において、既にRAMに読み出されていることで、いつでも処理の対象になる可能性のあるページに対する更新命令については即座に実行する。他方、メインプロセスは、対象のレコードを参照した時点では、RAM上に存在しないために、処理の対象になる可能性のないページに対する更新命令については実行を待機させる。
そして、メインプロセスにより待機させられた更新命令は、上記のようなヘルパープロセス又はバックエンドプロセスの動作によって、当該更新命令の対象がRAM上に読み出されて処理の対象になるまでに、又は、当該更新命令の対象がRAM上に読み出されて処理の対象になる際に、実行される。
ここで、行番号205のタプルに着目すると、当該タプルを挿入する更新命令は、受信したクエリに応じた検索処理に係る同期点以前のレコードにより示される更新命令であるが、当該検索処理に関する動作をバックエンドプロセスが開始したステップS21の時点では、待機しており、実行されていない。しかしながら、検索処理を実行するステップS25の時点では、バックエンドプロセス(又は、ヘルパープロセス)によって、当該更新命令は既に実行されている。そのため、行番号205のタプルは、問題なく、当該検索処理の対象になる。
すなわち、本実施形態では、メインプロセスは、トランザクションログのレコードを先頭から順に参照し、対象のレコードを参照した時点で処理の対象になる可能性のあるページに対する更新命令については即座に実行し、対象のレコードを参照した時点では処理の対象になる可能性のないページに対する更新命令については実行を待機させる。そして、待機させられた更新命令は、ヘルパープロセス又はバックエンドプロセスによって、その更新命令が実行されていることが要求されるまでには、実行される。
待機させられる更新命令は、記憶装置にアクセスする必要のあるページを対象とする命令である。ここで、記憶装置にアクセスする速度はRAMにアクセスする速度に比べて非常に遅く、データベースの更新処理は、記憶装置にアクセスする回数が増えるほど、遅くなる。本実施形態に係るメインプロセスの処理では、このような記憶装置にアクセスする必要のある更新命令を実行せずにトランザクションログを処理することができる。そのため、メインプロセスの処理は、記憶装置にアクセスせずに、非常に高速に実行することができる。その結果、本実施形態によれば、同期点までのトランザクションログを高速に処理することができ、バックエンドプロセスによる検索の待機時間を非常に短くすることができる。
そして、待機させられた更新命令は、ヘルパープロセス又はバックエンドプロセスによって、その更新命令が実行されていることが要求されるまでには、実行される。そのため、バックエンドプロセスによる検索では、待機させられた更新命令が存在しても、検索処理の対象については、同期が完了しているレコード番号までの更新命令による更新を参照することができる。そのため、レプリケーション実行中においても、バックエンドプロセスは、データベースの整合性が確保された状態で、検索を行うことができる。
また、従来では、上記図2に示される第3の方法のように並列処理可能である場合も含めて、データベースの整合性を保って検索を行うためには、同期点までのトランザクションログに示される全ての更新命令を実行する必要があった。これに対して、本実施形態によれば、待機させられた更新命令のうち、検索処理と関係が無い更新命令については実行を待機したまま、検索処理を実行することができる。すなわち、本実施形態によれば、トランザクションログのレコードにより示される更新命令のうち、実行されていることが要求されている更新命令を優先的に実行し、実行されていることが要求されていない更新命令の実行をスキップ(後回しに)することができるようになる。この点からも、本実施形態によれば、検索の待機時間を短縮することができる。
従って、本実施形態によれば、これらの理由から、検索処理におけるデータベースの整合性を確保しつつ、検索の待機時間を短縮することができる。
また、本実施形態では、アクセスが必要になった時に対象の更新命令を実行すればよいため、記憶装置からRAMへの余計なデータの読み込みを抑えることができる。その上、本実施形態では、1回のページの読み込みで、当該ページに対する複数の更新命令を実行することができる。そのため、本実施形態によれば、データベースの更新における記憶装置とRAMとの間のやりとりの効率化を図ることができる。
なお、ヘルパープロセス又はバックエンドプロセスは、当該ページに対する複数の更新命令を実行する際に、トランザクションログにより示される順序のままに更新命令を実行する。そのため、データベースの整合性を保ちながら、記憶装置とRAMとの間のやりとりの効率化を図ることができる。
そして、本実施形態に係る情報処理装置1は、マップ情報を利用することで、メインプロセスがスキップした更新命令をページ単位で管理している。データベースの更新処理はページ毎に行われるので、メインプロセスがスキップした更新命令の実行は、ページ単位で、それぞれ別個のプロセスで並列に処理することができる。
更に、本実施形態に係る情報処理装置1は、並列に処理する度合い、換言すると、起動するヘルパープロセス又はバックエンドプロセスの数、を必要に応じて増減させることができる。例えば、情報処理装置1の制御部は、マップ情報に記録されたページの数と同じ数のヘルパープロセスを動作させることで、マップ情報に記録されたページ毎に待機させられた更新命令の実行を並列に処理することができる。すなわち、本実施形態によれば、待機させた更新命令の実行を並列に処理する度合いを状況に応じて増減させることができるため、並列に処理可能なトランザクションの数とトランザクションログの数との不均衡の問題を解決することができる。
従って、本実施形態によれば、これらの理由から、トランザクションログをデータベースに適用する処理の速度を高速化することができる。
なお、本実施形態では、直列的に作成されたトランザクションログが、データベースの更新に利用される。従って、本実施形態によれば、トランザクションログの作成に関する技術を従来システムから変更せずに、トランザクションログをデータベースに適用する処理の速度を改善することができる。
なお、以上の動作例では、1つのタプルを処理対象とする更新命令(INSERT命令、DELETE命令)をデータベースの更新命令の一例として挙げた。しかしながら、データベースの更新命令は、このような1つのタプルを処理対象とする更新命令に限定されない。例えば、追記型のデータベースでUPDATE命令を実行する場合、更新対象タプルの削除と更新後のタプルの挿入という複数のタプルを処理することになる。この場合、メインプロセスは、UPDATE命令のうち、RAMに読み出されているタプルに対する命令部分については実行し、RAMに読み出されていないタプルに対する命令部分についてはマップ情報に記録する。つまり、複数のタプルを処理対象とする更新命令は、1つのタプルを処理対象とする更新命令が複数集まったものとして扱うことで、制御部は、1つのタプルを処理対象とする更新命令と同様に当該複数のタプルを処理対象とする更新命令を処理することができる。
また、以上の動作例では、情報処理装置1の制御部は、更新命令の対象であるタプルがRAMに読み出された段階で、当該タプルが処理対象となったと判断している。しかしながら、更新命令の対象が処理対象になったと制御部が判断する段階は、このような例に限定される訳ではない。その他の例として、例えば、情報処理装置1の制御部は、更新命令の対象であるタプルがRAMに読み出されただけでは、当該タプルが処理対象になったとは判断せず、当該タプルに対してロックが獲得された段階で、当該タプルが処理対象となったと判断してもよい。複数のプロセスが対象のページにアクセスしようとする場合、あるプロセスによる対象のページに対する処理が完了するまでに、他のプロセスによって当該ページの内容が変更されてしまう可能性がある。これを避けるために、プロセスは、アクセスするページに対してロックをかける。情報処理装置1の制御部は、このロックがかけられたことをもって、ロックされた対象が処理対象になったと検出してもよい。
§2 第2実施形態
本発明の第2実施形態は、一部の処理を除き、第1実施形態とほぼ同様に説明可能である。そのため、第1実施形態と同様に説明できる部分については、適宜省略する。
[構成例]
第2実施形態において、図3により例示されるハードウェア構成、図4により例示される各プロセスの関係、及び、取得されるトランザクションログに関する事項は、第1実施形態と同様である。ただし、第2実施形態に係る情報処理装置1は、取得したトランザクションログのレコードを先頭から順に参照し、当該トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、当該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理する。そして、スキップされた更新命令は、対象となるデータが処理対象になるまでに、又は、対象となるデータが処理対象となった際に、実行される。
すなわち、第2実施形態に係る情報処理装置1は、トランザクションログのレコードの処理において、全ての更新命令について一度待機させる点で、トランザクションログを参照した際にRAMに読み出されているタプルに対する更新命令を実行する第1実施形態とは異なる。
[動作例]
次に、図5により示されるデータベースの更新例、図6により示される取得されるトランザクションログの例、及び、図7により示されるクエリを受信した時点における情報処理装置1の動作状態の例を利用して、第2実施形態に係る情報処理装置1の具体的な動作例を説明する。
<メインプロセス>
第2実施形態に係るメインプロセスは、取得したトランザクションログのレコードを先頭から順に参照する。そして、第2実施形態に係るメインプロセスは、トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令については、第1実施形態とは異なり、全ての更新命令の実行を待機させることで、当該トランザクションログのレコードを処理する。一方、更新命令以外のレコード、例えば、トランザクションの管理に関するレコードについては、メインプロセスは、第1実施形態と同様、当該レコードにより示される命令(例えば、管理情報の更新)を実行する。
なお、第2実施形態では、第1実施形態と同様、待機させた更新命令はマップ情報に記録される。マップ情報には、待機させた更新命令の内容とレコードの番号のうち少なくとも一方が当該更新命令の対象(タプル)に関連付けて記録される。ただし、本実施形態では、データベースの各タプルは、記憶装置上においてページ単位で管理されており、記憶装置とRAMとの間のデータのやり取りは、当該ページ単位で行われる。そこで、第2実施形態に係るメインプロセスは、マップ情報において、待機させた更新命令の内容とレコードの番号のうち少なくとも一方を、当該待機させた更新命令の対象となるタプルを含むページに関連付けて記録する。すなわち、ページは、本発明の「所定の集合」に相当する。
具体的には、第2実施形態に係るメインプロセスは、33番のレコード、35番のレコード等のデータベースの更新命令に係るレコードを参照する度に、参照したレコードにより示される更新命令の内容とレコードの番号のうちの少なくとも一方を、当該更新命令の対象となるタプルを含むページに関連付けてマップ情報に記録する。なお、後述する図12〜15は、更新命令の内容又はレコードの番号のいずれかがマップ情報に記録される場面を例示する。
なお、第2実施形態に係るメインプロセスは、第1実施形態と同様、参照したレコードがトランザクションの管理に関するレコードである場合、当該レコードが示す内容に合わせて、トランザクションを管理するための管理情報を更新する。
また、第2実施形態では、第1実施形態と同様、図1に例示される第2の方法のようにレプリケーションを行う場面を想定している。ただし、第1実施形態と同様に、第2実施形態に適用されるレプリケーションの方法は当該第2の方法に限定されず、図1に例示される第1の方法が第2実施形態において採用されてもよい。また、第2実施形態において実行されるレプリケーションの方式は、同期レプリケーションではなく、非同期レプリケーションであってもよい。
図12は、第2実施形態において、図7で例示される状態の後に、メインプロセスの処理が36番のレコードまで完了した時点における情報処理装置1の動作状態を例示する。
32番から36番のレコードのうち、33番、35番及び36番のレコードは、データベースの更新命令に関するレコードである。また、32番及び34番のレコードは、トランザクションの管理に関するレコードであり、更新命令以外の命令に関するレコードである。
そこで、メインプロセスは、まず、32番のレコードを参照し、第1実施形態と同様に、32番のレコードにより示される命令を実行する。具体的には、メインプロセスは、例えば、1番目のトランザクションの状態が実行中であることを示すように、管理情報を更新する。
32番のレコードを処理すると、メインプロセスは、次の33番のレコードを参照する。ここで、33番のレコードにより示される更新命令(D1_101_5)の対象はRAM上に読み出されている。しかしながら、メインプロセスは、第1実施形態とは異なり、33番のレコードにより示される更新命令(D1_101_5)の実行を待機させる。そして、メインプロセスは、33番のレコードにより示される更新命令の内容(D1_101_5)又はレコード番号(33)をページ番号(P5)に関連付けてマップ情報に記録する。
33番のレコードを処理すると、メインプロセスは、次の34番のレコードを参照し、第1実施形態と同様に、34番のレコードにより示される命令を実行する。具体的には、メインプロセスは、例えば、2番目のトランザクションの状態が実行中であることを示すように、管理情報を更新する。
34番のレコードを処理すると、メインプロセスは、次の35番のレコードを参照し、35番のレコードにより示される更新命令(I2_205_2)の実行を待機させる。そして、メインプロセスは、35番のレコードにより示される更新命令(I2_205_2)の内容又はレコード番号(35)をページ番号(P2)に関連付けてマップ情報に記憶する。
35番のレコードを処理すると、メインプロセスは、次の36番のレコードを参照し、36番のレコードにより示される更新命令(D1_103_2)の実行を待機させる。そして、メインプロセスは、36番のレコードにより示される更新命令(D1_103_2)の内容又はレコード番号(36)をページ番号(P2)に関連付けてマップ情報に記憶する。これにより、36番までのレコードの処理が完了する。
なお、バックエンドプロセスは、第1実施形態と同様、クエリを受信した時点で設定されていた同期点である40番のレコードまでメインプロセスの処理が完了していないため、実行を待機している。
図13は、図12で例示される状態の後に、図7の時点で設定されていた同期点(40番)のレコードまでメインプロセスの処理が完了した時点における情報処理装置1の動作状態を例示する。
37番から40番のレコードのうち、38番と39番のレコードは、データベースの更新命令に関するレコードである。また、37番と40番のレコードは、トランザクションの管理に関するレコードであり、更新命令以外の命令に関するレコードである。
そこで、メインプロセスは、まず、37番のレコードを参照し、第1実施形態と同様に、37番のレコードにより示される命令を実行する。具体的には、メインプロセスは、例えば、1番目のトランザクションがコミットされたことを示すように、管理情報を更新する。
37番のレコードを処理すると、メインプロセスは、次の38番のレコードを参照し、38番のレコードにより示される更新命令(D2_104_9)の実行を待機させる。そして、メインプロセスは、38番のレコードにより示される更新命令(D2_104_9)の内容又はレコード番号(38)をページ番号(P9)に関連付けてマップ情報に記録する。
38番のレコードを処理すると、メインプロセスは、次の39番のレコードを参照する。ここで、39番のレコードにより示される更新命令(I2_206_8)の対象はRAM上に読み出されている。しかしながら、メインプロセスは、第1実施形態とは異なり、39番のレコードにより示される更新命令(I2_206_8)の実行を待機させる。そして、メインプロセスは、39番のレコードにより示される更新命令(I2_206_8)の内容又はレコード番号(39)をページ番号(P8)に関連付けてマップ情報に記録する。
39番のレコードを処理すると、メインプロセスは、次の40番のレコードを参照し、第1実施形態と同様、40番のレコードにより示される命令を実行する。具体的には、メインプロセスは、例えば、2番目のトランザクションがコミットされたことを示すように、管理情報を更新する。
これにより、クエリを受信した時点で設定されていた同期点である40番のレコードまでメインプロセスの処理が完了するため、バックエンドプロセスは、対象のクエリに対する検索処理を実行することが可能になる。
<ヘルパープロセス>
第2実施形態に係るヘルパープロセスは、第1実施形態と同様、マップ情報を参照して、待機させた更新命令を実行する。
図14は、第2実施形態におけるヘルパープロセスの処理手順を例示する。なお、図14は、図13におけるバックエンドプロセスによる検索処理が開始する前に、ヘルパープロセスによる処理が開始した場面を例示する。
ステップS51では、ヘルパープロセスは、マップ情報を参照し、待機している更新命令が存在するか否かを判定する。待機している更新命令がマップ情報に記録されていない場合、ヘルパープロセスは処理を終了する。他方、待機している更新命令がマップ情報に記録されている場合、自身が処理する対象を管理単位に応じて選択して、処理をステップS52に進める。なお、図14で例示される場面では、ヘルパープロセスは、自身が処理する対象としてP5のページを選択している。
ステップS52では、ヘルパープロセスは、選択したページがRAM上に存在するか否かを判定する。そして、選択したページがRAM上に存在する場合、ヘルパープロセスは、待機している更新命令(マップ情報に記録されている更新命令)を実行する。他方、選択したページがRAM上に存在しない場合、ヘルパープロセスは、第1実施形態に係る図10で例示されるように、記憶装置から選択したページをRAM上に読み出し、読み出したページに対して待機している更新命令(マップ情報に記録されている更新命令)を実行する。
図14で例示される場面では、ヘルパープロセスが選択したページ(P5)はRAM上に存在している。そのため、ヘルパープロセスは、P5について待機している更新命令(D1_101_5)を実行して、行番号101のタプルに削除ポインタを付与する。そして、ヘルパープロセスは、処理した更新命令に関する記録をマップ情報から削除して、処理を終了する。
なお、選択したページに対して複数の更新命令が待機している場合にマップ情報に記録されている順にヘルパープロセスが当該待機している更新命令を実行する点、ヘルパープロセスを生成若しくは削除又は起動若しくは停止することで動作するヘルパープロセスの数を増減させてよい点、一定数のヘルパープロセスを予め起動させておいてもよい点、及び、ヘルパープロセスが本動作例に示されるタイミング以外に適宜処理を実行してもよい点については、第2実施形態は第1実施形態と共通する。そのため、説明を省略する。
<バックエンドプロセス>
第2実施形態に係るバックエンドプロセスは、第1実施形態と同様、クライアントPCからのデータベースに対する検索リクエスト(クエリ)に応じて、検索処理を実行する。バックエンドプロセスは、当該検索処理を実行する際に、マップ情報を参照し、検索対象となるページについて待機された更新命令が存在するか否かを判定する。そして、検索対象となるページについて待機された更新命令が存在しない場合、バックエンドプロセスは、当該ページに対する検索処理を実行する。他方、検索対象となるページについて待機された更新命令が存在する場合、バックエンドプロセスは、当該待機された更新命令を実行した後に、当該ページに対する検索処理を実行する。なお、バックエンドプロセスにおける当該マップ情報に記録された更新命令を適用する処理は、第1実施形態と同様にヘルパープロセスによって実行されてもよい。
図15は、第2実施形態におけるバックエンドプロセスの処理手順を例示する。なお、図15は、図13及び14で例示した状態の後に、バックエンドプロセスによる検索処理が開始した場面を例示する。
ステップS61では、バックエンドプロセスは、受信したクエリの内容に適合するタプルを抽出するために、当該クエリに関連する領域に含まれるページにアクセスし、アクセスしたページを検索の処理対象とする。図15では、バックエンドプロセスがRAM上に存在するページ(P8)にアクセスする場面が例示されている。一方、アクセスするページがRAM上に存在しない場合は、第1実施形態に係る図11で例示されるように、記憶装置にアクセスして、当該記憶装置から対象のページをRAM上に読み出す。
なお、検索の処理対象とする際には、バックエンドプロセスは、アクセスするページに対してのロックを獲得する。第2実施形態に係る情報処理装置1の制御部は、対象のページについてのロックの獲得を、当該対象のページが処理対象になったと判断する要因の一例として取り扱ってよい。つまり、第2実施形態に係る情報処理装置1の制御部は、対象のページについてのロックが獲得されることで、当該対象のページが処理対象になったと判断してもよい。
なお、対象のページが処理対象になったと判定される動作は、実施の形態に応じて適宜設定されてよく、ロックの獲得に限定されるものではない。
ステップS62では、バックエンドプロセスは、マップ情報を参照し、アクセスしたページについて待機している更新命令があるか否かを判定する。アクセスしたページについて待機している更新命令がマップ情報に記録されていない場合、バックエンドプロセスは、ステップS64に処理を進める。他方、アクセスしたページについて待機している更新命令がマップ情報に記録されている場合は、処理はステップS63に進む。図15では、アクセスしたページ(P8)について待機している更新命令(I2_206_8)が存在するため、処理はステップS63に進む。
ステップS63では、バックエンドプロセスは、アクセスしたRAM上のページについて待機している更新命令を実行する。図15では、バックエンドプロセスは、P8について待機している更新命令(I2_206_8)を実行する。すなわち、バックエンドプロセスは、行番号206のタプルをP8に挿入する。そして、バックエンドプロセスは、アクセスしたページについて待機している更新命令を全て実行した後に、処理した更新命令に関する記録をマップ情報から削除する。
ステップS64では、バックエンドプロセスは、アクセスしたRAM上のページに対して、受信したクエリに応じた検索処理を実行する。そして、検索範囲においてアクセスしていない領域が残っている場合、バックエンドプロセスは、ステップS61に戻って処理を繰り返す。他方、検索範囲においてアクセスしていない領域が残っていない場合、バックエンドプロセスは、クエリに対する応答として検索処理の結果をクライアントPCに返信し、処理を終了する。
なお、バックエンドプロセスが1つ1つ対象のページにアクセスしてもよく、又は、一度に複数のページにアクセスしてもよい点、アクセスしたページに対して複数の更新命令が待機している場合にマップ情報に記録されている順にバックエンドプロセスが当該待機している更新命令を実行する点、バックエンドプロセスを生成若しくは削除又は起動若しくは停止することで動作するバックエンドプロセスの数を増減させてよい点、及び、ページの更新に関する処理をバックエンドプロセスはヘルパープロセスに任せてもよい点については、第2実施形態は第1実施形態と共通する。そのため、説明を省略する。
<第2実施形態の作用・効果>
ここで、第2実施形態において、行番号206のタプルに着目すると、第1実施形態に係る図11で例示した行番号205のタプルと同様の説明が可能である。すなわち、バックエンドプロセスによる検索処理の対象となった時点(ステップS61)では、当該検索処理に係る同期点以前のレコード(39番のレコード)により示される、当該タプルに関する更新命令は、まだ実行されておらず、待機している。しかしながら、検索処理が実行される時点(ステップS64)までには、バックエンドプロセス(又は、ヘルパープロセス)によって、当該39番のレコードにより示される更新命令は実行される。そのため、行番号206のタプルは、問題なく、当該検索処理の対象となる。
すなわち、第2実施形態によれば、第1実施形態と同様の理由により、データベースの整合性を確保しつつ、検索の待機時間を短縮することができ、トランザクションログをデータベースに適用する処理の速度を高速化することができる。また、第2実施形態においても、直列的に作成されたトランザクションログがデータベースの更新に利用されるため、トランザクションログの作成に関する技術を従来システムから変更せずに、トランザクションログをデータベースに適用する処理の速度を改善することができる。
一方、第1実施形態とは異なり、マップ情報に記録された行番号206のタプルを追加する更新命令の対象であるP8のページは、メインプロセスが39番のレコードを参照する時点で既にRAMに存在している。第1実施形態の説明のとおり、RAMに存在しているページはいつでも処理の対象になる可能性がある。しかしながら、それらのページが直ちに処理の対象となるとは限らないため、メインプロセスは、それらのページに対する更新命令を待機させてもかまわない。また、後述するとおり、それらのページがちょうど処理の対象となっている場合も、メインプロセスは、それらのページに対する更新命令を待機させてもかまわない。そこで、第2実施形態に係るメインプロセスは、RAM上に存在しているページに対する更新命令も、RAM上に存在していないページに対する更新命令と同様に待機させて、一度、マップ情報に記録する。
すなわち、第2実施形態に係るメインプロセスは、RAM上に存在しているか否かを問わず、RAM上に存在しているページに対する更新命令とRAM上に存在していないページに対する更新命令とを同様に取り扱う。そのため、第2実施形態に係るメインプロセスは、第1実施形態に係るメインプロセスの動作に含まれる、トランザクションログのレコードにより示される更新命令の対象となるタプルに関するページがRAM上に存在しているか否かを判定する処理を省略することができる。
また、第2実施形態では、メインプロセスは、トランザクションログのレコードにより示されるデータベースの更新命令を実行しないため、RAM上に読み出されたページの状態を変更しない。そのため、第2実施形態に係るメインプロセスは、第1実施形態に係るメインプロセスとは異なり、RAM上に読み出されたページの状態を変更する他のプロセス(例えば、ヘルパープロセス、バックエンドプロセス等)に動作を妨げられることなく、処理を実行することができる。
たとえば、メインプロセスが更新命令を参照した際に、当該更新命令の対象となるタプルに関するページが、RAM上に存在して、バックエンドプロセスにより処理の対象となっていた場合、バックエンドプロセスは当該ページに対するロックを獲得している。そのため、メインプロセスは、当該更新命令を即座に実行する場合は、バックエンドプロセスがそのページに対する検索処理を完了してロックを開放するまで、待機することになる。第2実施形態では、メインプロセスはこのようなロックの待機を行なわなくてよいため、他のプロセスに動作を妨げられることなく、処理を実行することができる。
また、当該ページを処理の対象としているバックエンドプロセスは、ロックを取得した時点のデータベースの状態に基づいて検索処理を実行する。したがって、当該更新命令は、ロックが開放された後、当該ページがその次に処理の対象となるまでに実行されれば良い。そのため、更新命令の対象となるタプルに関するページがちょうど処理の対象となっている場合も、メインプロセスは、検索におけるデータベースの整合性を損なうことなく、当該更新命令を待機させることができる。
これらの理由により、第2実施形態では、第1実施形態に比べて、メインプロセスの処理を簡単に、かつ、高速に実行することが可能になる。そのため、同期レプリケーションに当該データベースの更新方法を適用する場合、第2実施形態によれば、クエリを受信してから検索処理を開始するまでの時間を第1実施形態よりも短縮することが可能である。
ここで、更新命令を待機させる場合、当該更新命令を待機させる際と当該更新命令を実行する際に、当該更新命令の参照が生じる。すなわち、更新命令を即座に実行する場合と比較して、更新命令を待機させる場合は更新命令を参照する回数が増加する。そのため、第2実施形態では、第1実施形態と比較して、待機させる更新命令が増加する分、当該更新命令の参照に関する処理の量が増加する。
しかしながら、増加する部分の処理は、上記動作例で説明したとおりに、並列に処理可能である。そのため、並列度が高いシステムでは、メインプロセスの処理が終わるまでの時間は検索処理実行のボトルネックとなるため、第1実施形態よりもメインプロセスを高速に実行できる第2実施形態の方がよい。すなわち、更新命令の参照に関して増加する処理の量が並列に処理可能になることで短縮される量よりも少ない場合、第1実施形態よりも第2実施形態を利用した方がよい結果が得られる。
なお、第2実施形態において、データベースの更新命令が1つのタプルを処理対象とする更新命令に限定されない点は、第1実施形態と同様である。
1…情報処理装置

Claims (14)

  1. トランザクションログを利用して自身のデータベースを更新するコンピュータが、
    前記トランザクションログを取得するステップと、
    取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されている場合は該更新命令を実行し、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されていない場合は該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理するステップと、
    待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象になるまでに、又は、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象となった際に、該対象について待機させた更新命令を実行するステップと、
    を実行する情報処理方法。
  2. 前記コンピュータは、前記トランザクションログを取得するステップにおいて、他のコンピュータのデータベースと前記自身のデータベースとの間でレプリケーションを行うために、前記他のコンピュータにおいて直列的に作成されたトランザクションログを取得する、
    請求項1に記載の情報処理方法。
  3. 前記コンピュータは、
    前記レコードにより示される更新命令の実行を待機させる際、前記更新命令の対象に待機させた更新命令が存在することを示すために、待機させた前記更新命令の内容及び前記レコードの番号のうちの少なくとも一方を、前記更新命令の対象に関連付けてマップ情報に記録し、
    前記マップ情報を参照して、前記対象について待機させた更新命令を実行する、
    請求項1又は2に記載の情報処理方法。
  4. 前記コンピュータは、
    処理の対象の前記メモリへの読み込みを所定の集合ごとに行い、
    前記レコードにより示される更新命令の実行を待機させる際、前記更新命令の対象に待機させた更新命令が存在することを示すために、待機させた前記更新命令の内容及び前記レコードの番号のうちの少なくとも一方を、前記更新命令の対象を含む所定の集合に関連付けてマップ情報に記録し、
    前記所定の集合が前記メモリ上に読み出されて処理の対象になるまでに、又は、前記所定の集合が前記メモリ上に読み出されて処理の対象となった際に、前記マップ情報を参照して、前記所定の集合に含まれる対象について待機させた更新命令を実行する、
    請求項1又は2に記載の情報処理方法。
  5. 前記コンピュータは、前記自身のデータベースに対する検索処理を、該検索処理に関して処理されていることが求められる前記トランザクションログのレコードに対する処理が完了するまで、待機させる、
    請求項1から4のいずれか1項に記載の情報処理方法。
  6. トランザクションログを利用して自身のデータベースを更新するコンピュータが、
    前記トランザクションログを取得するステップと、
    取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理するステップと、
    待機させた更新命令の対象が処理の対象になるまでに、又は、待機させた更新命令の対象が処理の対象となった際に、該対象について待機させた更新命令を実行するステップと、
    を実行する情報処理方法。
  7. 前記コンピュータは、前記トランザクションログを取得するステップにおいて、他のコンピュータのデータベースと前記自身のデータベースとの間でレプリケーションを行うために、前記他のコンピュータにおいて直列的に作成されたトランザクションログを取得する、
    請求項6に記載の情報処理方法。
  8. 前記コンピュータは、
    前記更新命令を待機させる際に、前記更新命令の対象に待機させた更新命令が存在することを示すために、前記更新命令の内容と前記更新命令に係るレコードの番号のうち少なくとも一方を前記更新命令の対象に関連付けてマップ情報に記録し、
    前記マップ情報を参照して、前記対象について待機させた前記更新命令を実行する、
    請求項6又は7に記載の情報処理方法。
  9. 前記コンピュータは、
    処理の対象の前記メモリへの読み込みを所定の集合ごとに行い、
    前記更新命令の実行を待機させる際、前記更新命令の対象に待機させた更新命令が存在することを示すために、待機させた前記更新命令の内容及び前記レコードの番号のうちの少なくとも一方を、前記更新命令の対象を含む所定の集合に関連付けてマップ情報に記録し、
    前記所定の集合が処理の対象になるまでに、又は、前記所定の集合が処理の対象となった際に、前記マップ情報を参照して、前記所定の集合に含まれる対象について待機させた更新命令を実行する、
    請求項6又は7に記載の情報処理方法。
  10. 前記コンピュータは、前記自身のデータベースに対する検索処理を、該検索処理に関して処理されていることが求められる前記トランザクションログのレコードに対する処理が完了するまで、待機させる、
    請求項6から9のいずれか1項に記載の情報処理方法。
  11. トランザクションログを利用して自身のデータベースを更新する情報処理装置であって、
    前記トランザクションログを取得する手段と、
    取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されている場合は該更新命令を実行し、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されていない場合は該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理する手段と、
    待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象になるまでに、又は、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象となった際に、該対象について待機させた更新命令を実行する手段と、
    を備える情報処理装置。
  12. トランザクションログを利用して自身のデータベースを更新するコンピュータに、
    前記トランザクションログを取得するステップと、
    取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されている場合は該更新命令を実行し、該レコードにより示される更新命令の対象が前記コンピュータのメモリ上に読み出されていない場合は該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理するステップと、
    待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象になるまでに、又は、待機させた更新命令の対象が前記メモリ上に読み出されて処理の対象となった際に、該対象について待機させた更新命令を実行するステップと、
    を実行させるためのプログラム。
  13. トランザクションログを利用して自身のデータベースを更新する情報処理装置であって、
    前記トランザクションログを取得する手段と、
    取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理する手段と、
    待機させた更新命令の対象が処理の対象になるまでに、又は、待機させた更新命令の対象が処理の対象となった際に、該対象について待機させた更新命令を実行する手段と、
    を備える情報処理装置。
  14. トランザクションログを利用して自身のデータベースを更新するコンピュータに、
    取得した前記トランザクションログのレコードを先頭から順に参照し、前記トランザクションログに含まれるレコードのうち、データベースに含まれるデータを更新する更新命令に関するレコードについて、該更新命令の実行を待機させることで、取得した前記トランザクションログのレコードを処理するステップと、
    待機させた更新命令の対象が処理の対象になるまでに、又は、待機させた更新命令の対象が処理の対象となった際に、該対象について待機させた更新命令を実行するステップと、
    を実行させるためのプログラム。
JP2014552858A 2012-12-21 2012-12-21 情報処理方法、情報処理装置、及び、プログラム Active JP6082029B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/083289 WO2014097475A1 (ja) 2012-12-21 2012-12-21 情報処理方法、情報処理装置、及び、プログラム

Publications (2)

Publication Number Publication Date
JPWO2014097475A1 true JPWO2014097475A1 (ja) 2017-01-12
JP6082029B2 JP6082029B2 (ja) 2017-02-15

Family

ID=50977851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014552858A Active JP6082029B2 (ja) 2012-12-21 2012-12-21 情報処理方法、情報処理装置、及び、プログラム

Country Status (4)

Country Link
US (1) US10437812B2 (ja)
EP (1) EP2937788A4 (ja)
JP (1) JP6082029B2 (ja)
WO (1) WO2014097475A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016120988A1 (ja) * 2015-01-27 2016-08-04 株式会社日立製作所 データベースシステム及びデータベース管理方法
US11188501B1 (en) * 2017-08-15 2021-11-30 Amazon Technologies, Inc. Transactional and batch-updated data store search
CN110209732A (zh) * 2019-04-25 2019-09-06 深圳壹账通智能科技有限公司 关系型数据库到Hadoop数据库的数据同步方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03122729A (ja) * 1989-09-25 1991-05-24 Internatl Business Mach Corp <Ibm> データベース更新システム及び方法
WO2005085998A1 (en) * 2003-08-02 2005-09-15 International Business Machines Corporation A method, apparatus and computer program for processing a queue of messages
US20060069885A1 (en) * 2004-09-30 2006-03-30 Kabushiki Kaisha Toshiba File system with file management function and file management method
JP2007264685A (ja) * 2006-03-27 2007-10-11 Fujitsu Ltd ミラーサイト運用プログラム、方法及びミラーサイトサーバコンピュータ

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5353410A (en) * 1992-03-18 1994-10-04 International Business Machines Corporation Method and system for deferred read in lazy-write disk cache systems
US7257699B2 (en) * 2004-07-08 2007-08-14 Sun Microsystems, Inc. Selective execution of deferred instructions in a processor that supports speculative execution
JP4833734B2 (ja) 2006-05-19 2011-12-07 株式会社日立製作所 データベースシステム、ストレージ装置、初期コピー方法及びログ適用方法
KR100926880B1 (ko) * 2007-05-21 2009-11-16 엔에이치엔(주) Dbms에서의 데이터 복제 방법 및 시스템
EP2410431B1 (en) 2009-03-19 2014-05-07 Murakumo Corporation Method and system for data replication management
JP5039891B2 (ja) 2009-10-19 2012-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースの複製を生成する装置及び方法
US20110178984A1 (en) 2010-01-18 2011-07-21 Microsoft Corporation Replication protocol for database systems
CN101860797B (zh) 2010-05-21 2014-08-13 中兴通讯股份有限公司 数据信息的传输方法、装置及移动多媒体广播业务系统
US10430298B2 (en) * 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
JP5724363B2 (ja) 2010-12-20 2015-05-27 日本電気株式会社 情報処理システム
JP5741254B2 (ja) 2011-06-30 2015-07-01 富士通株式会社 送信制御方法、装置及びプログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03122729A (ja) * 1989-09-25 1991-05-24 Internatl Business Mach Corp <Ibm> データベース更新システム及び方法
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
WO2005085998A1 (en) * 2003-08-02 2005-09-15 International Business Machines Corporation A method, apparatus and computer program for processing a queue of messages
JP2007501449A (ja) * 2003-08-02 2007-01-25 インターナショナル・ビジネス・マシーンズ・コーポレーション メッセージのキューを処理するための方法、装置、およびコンピュータ・プログラム
US20060069885A1 (en) * 2004-09-30 2006-03-30 Kabushiki Kaisha Toshiba File system with file management function and file management method
JP2006106868A (ja) * 2004-09-30 2006-04-20 Toshiba Corp ファイル管理機能を備えたファイルシステム及びファイル管理方法
JP2007264685A (ja) * 2006-03-27 2007-10-11 Fujitsu Ltd ミラーサイト運用プログラム、方法及びミラーサイトサーバコンピュータ

Also Published As

Publication number Publication date
JP6082029B2 (ja) 2017-02-15
EP2937788A1 (en) 2015-10-28
US10437812B2 (en) 2019-10-08
US20150286672A1 (en) 2015-10-08
WO2014097475A1 (ja) 2014-06-26
EP2937788A4 (en) 2016-06-22

Similar Documents

Publication Publication Date Title
EP3596619B1 (en) Methods, devices and systems for maintaining consistency of metadata and data across data centers
WO2023093245A1 (zh) 基于分布式文件系统的元数据查询方法、设备和存储介质
US9678969B2 (en) Metadata updating method and apparatus based on columnar storage in distributed file system, and host
EP3413215B1 (en) Dynamic snapshot isolation protocol selection
CN103955486B (zh) 分布式服务系统及其数据更新、数据查询的方法
EP3519986B1 (en) Direct table association in in-memory databases
US9171027B2 (en) Managing a multi-version database
EP2653986B1 (en) Client-side caching of a database transaction token.
US20170315882A1 (en) Protected write-back cache transaction replication
US20130086018A1 (en) Transaction processing system, method, and program
EP4170509A1 (en) Method for playing back log on data node, data node, and system
CN106484694B (zh) 基于分布式数据库的全文搜索方法及系统
US20170060473A1 (en) Concurrent, Incremental, and Generational Mark and Sweep Garbage Collection
JP2016146101A (ja) 情報処理装置、情報処理システム及び制御プログラム
WO2022206398A1 (en) Method and apparatus for reading data maintained in tree data structures
JP6082029B2 (ja) 情報処理方法、情報処理装置、及び、プログラム
Cruz et al. A scalable file based data store for forensic analysis
KR20140047448A (ko) 트랜잭션 재시작 가능한 클라이언트 장치와 데이터베이스 서버 및 방법
JP2009266147A (ja) データベースと仮想テーブルの整合性を維持する方法および装置。
US20130179417A1 (en) Database management method
US20150039558A1 (en) Database management method, database system and medium
US8612717B2 (en) Storage system
US9390131B1 (en) Executing queries subject to different consistency requirements
JP6002832B2 (ja) 計算機システム、データ管理方法及びプログラムを格納する記録媒体
JP2006172067A (ja) データベース管理方法、システム及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170119

R150 Certificate of patent or registration of utility model

Ref document number: 6082029

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250