JP6257748B2 - データベースシステム、情報処理装置、方法およびプログラム - Google Patents

データベースシステム、情報処理装置、方法およびプログラム Download PDF

Info

Publication number
JP6257748B2
JP6257748B2 JP2016509681A JP2016509681A JP6257748B2 JP 6257748 B2 JP6257748 B2 JP 6257748B2 JP 2016509681 A JP2016509681 A JP 2016509681A JP 2016509681 A JP2016509681 A JP 2016509681A JP 6257748 B2 JP6257748 B2 JP 6257748B2
Authority
JP
Japan
Prior art keywords
node
data
transaction log
identification information
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.)
Active
Application number
JP2016509681A
Other languages
English (en)
Other versions
JPWO2015145586A1 (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 JPWO2015145586A1 publication Critical patent/JPWO2015145586A1/ja
Application granted granted Critical
Publication of JP6257748B2 publication Critical patent/JP6257748B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2074Asynchronous techniques
    • 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/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

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

Description

本発明は、データベースを管理するための技術に関する。
従来、自己の障害に備えて他のサーバノードから送信されるトランザクションログを受信し、受信されたトランザクションログをデータベースに反映するデータベース管理システムが提案されている(特許文献1を参照)。
また、マスタが、複数のトランザクションログを並列に作成し、並列に作成した複数のトランザクションログを他のマスタ又はスレーブに送信し、他のマスタまたはスレーブが、当該複数のトランザクションログをデータベースに並列に適用する技術が提案されている(特許文献2を参照)。
特表2012−532376号公報 特開2012−133417号公報
従来、ログベースのレプリケーションが行われるデータベースシステムにおいて、複製先のノードにおいてデータベースを構築する方法が種々提案されている。例えば、(1)ノードを停止させてからデータコピーを行う方法や、(2)複製元のノードから複製先のノードへ一旦テーブル全体をコピーして、コピー後に、複製元のノードでコピー中に発生した差分を抽出して反映する方法、(3)複製元のノードにおいてチェックポイントを作成してスナップショットを保存し、このスナップショットを複製先のノードにコピーした後に、チェックポイント以降のトランザクションログを複製先のノードにおいて反映する方法、等が提案されている。
しかし、(1)ノードを停止させてからデータコピーを行う方法では、データコピーが終了するまでデータベースを用いることが出来ない。また、(2)コピー後に差分を抽出して反映する方法では、差分の抽出および反映のために多くのリソースが必要となる。更に、(3)チェックポイント以降のトランザクションログを複製先のノードにおいて反映する方法では、チェックポイントを作成してスナップショットを複製元ノードのストレージに保存する処理、および複製先のノードにおいてトランザクションログを反映させる処理に大きなリソースが必要とされる。
本発明は、上記した問題に鑑み、データベースシステムにおいて、複製先のノードがサービス提供可能となるまでに必要なリソースを低減させることを課題とする。
本発明は、上記した課題を解決するために、以下の手段を採用した。即ち、本発明は、複数のノードを有するデータベースシステムであって、前記複数のノードのうち、データベースの複製元である第一のノードは、該第一のノードによって管理されているデータベースのトランザクションログを、該トランザクションログに係る命令の順序を把握可能な識別情報とともに保持するログ保持手段と、前記ログ保持手段によって保持されている前記識別情報のうち、所定の時点におけるトランザクションログを示す特定識別情報を、前記複数のノードのうち、データベースの複製先である第二のノードに送信する特定識別情報送信手段と、少なくとも前記所定の時点より後の前記トランザクションログおよび前記識別情報を、互いに関連づけて前記第二のノードに送信するログ送信手段と、前記データベースによって管理されているデータを、前記所定の時点以降に、前記第二のノードに送信するデータ送信手段と、を備え、前記第二のノードは、前記第一のノードから、前記トランザクションログ、該トランザクションログの識別情報、前記特定識別情報および前記データを受信する受信手段と、受信された前記データが該第二のノードのメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行手段と、を備える、データベースシステムである。
本発明に係るデータベースシステムでは、第一のノードは、所定の時点におけるトランザクションログを示す特定識別情報、所定の時点以降のトランザクションログ、および所定の時点以降のデータを第二のノードに送信する。そして、第二のノードは、受信されたデータがメモリに展開されて検索等に供される状態となった場合(例えば、データを含むページが所謂キャッシュとなった場合)に、所定の時点以降のトランザクションログに係る命令を、メモリに展開されたデータ(キャッシュ)に対して実行する。即ち、本発明では、受信されたデータが、検索等の用に供される前にメモリに展開されることを前提として、トランザクションログに係る命令の実行(トランザクションログの反映)を、メモリへの展開まで遅延させることとしている。換言すれば、本発明によれば、第二のノードによるサービス提供を、トランザクションログの反映を待たずに開始させることが出来る。なお、前記データは、テーブル単位またはページ単位で送受信されてよい。
また、前記データ送信手段は、前記データを、前記トランザクションログに係る命令の順序が互いに依存関係にあるレコードが同一の管理単位に入るように区切られた所定の管理単位毎に送信し、前記実行手段は、前記トランザクションログに係る命令を、前記所定の管理単位毎に実行してもよい。
また、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに基づいて、命令の対象となるデータが収容された前記所定の管理単位と命令の内容との関係を示すマップを生成するマップ生成手段を更に備え、前記実行手段は、前記マップを参照して、前記トランザクションログに係る命令を、前記所定の管理単位毎に実行してもよい。
また、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに基づいて、命令の対象となるデータと命令の内容との関係を示すマップを生成するマップ生成手段を更に備え、前記実行手段は、前記マップを参照して、前記トランザクションログに係る命令を、命令の対象となるデータに対して実行してもよい。
また、前記データ送信手段は、前記第一のノードのメモリに展開されてデータの検索または処理に供されている状態のデータを、前記第二のノードに送信してもよい。
また、前記第二のノードは、前記第一のノードに対して、前記データベース中のデータを指定して送信要求を送信する要求送信手段を更に備え、前記第一のノードは、前記第二のノードから、該第一のノードによって管理されているデータの送信要求を受信する要求受信手段を更に備え、前記特定識別情報送信手段は、前記送信要求に応じて、要求されたデータに係る前記特定識別情報を前記第二のノードに送信し、前記データ送信手段は、前記送信要求に応じて、要求されたデータを前記第二のノードに送信してもよい。
また、前記第二のノードは、ユーザー端末からの検索要求を受け付ける検索要求受付手段と、前記検索要求への応答を前記ユーザー端末に対して返す検索応答手段と、を更に備え、前記要求送信手段は、前記検索要求に応じて、少なくとも前記検索要求に係るデータの送信要求を、前記第一のノードに対して送信し、前記実行手段は、前記送信要求に応じて前記第一のノードから送信され、前記受信手段によって受信されたデータをメモリに展開し、前記トランザクションログに係る命令を該データに対して実行し、前記検索応答手段は、前記検索要求の結果前記第一のノードから得られ、前記トランザクションログに係る命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返してもよい。
また、前記第二のノードは、ユーザー端末からの検索要求を受け付ける検索要求受付手段と、前記検索要求への応答を前記ユーザー端末に対して返す検索応答手段と、を更に備え、前記実行手段は、前記検索要求に応じて、前記受信手段によって受信されたデータをメモリに展開し、前記トランザクションログに係る命令を該データに対して実行し、前記検索応答手段は、前記検索要求に応じて前記トランザクションログに係る命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返してもよい。
また、前記データ送信手段は、前記データベースの管理情報を、前記第二のノードに送信し、前記要求送信手段は、前記管理情報を参照して、前記第一のノードに対して、前記データベース中のデータを指定して送信要求を送信してもよい。
また、前記第二のノードは、前記第一のノードから受信したデータを直接メモリに展開して、データの検索または処理に供する展開手段を更に備え、前記実行手段は、受信したデータが前記展開手段によってメモリに展開されたことを受けて、前記トランザクションログに係る命令を前記データに対して実行してもよい。
また、前記特定識別情報送信手段は、前記特定識別情報として、ログ保持手段によって保持されている前記識別情報のうち、最新のトランザクションログを示す識別情報を送信してもよい。
また、前記実行手段は、前記トランザクションログに係る命令を、前記識別情報によって把握される命令の順序に応じて、受信された前記データに対して実行してもよい。
なお、本発明は、コンピューターシステム、情報処理装置、コンピューターによって実行される方法、またはコンピューターに実行させるプログラムとして把握することが可能である。また、本発明は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
本発明によれば、データベースシステムにおいて、複製先のノードがサービス提供可能となるまでに必要なリソースを低減させることが可能となる。
実施形態に係るシステムのハードウェア構成の概略を示す図である。 実施形態に係るシステムの機能構成の概略を示す図である。 実施形態において、第一のノードおよび第二のノードによって実行される管理情報送受信処理の流れを示すフローチャートである。 実施形態において、第一のノードおよび第二のノードによって実行されるデータベース送受信処理の流れを示すフローチャートである。 実施形態において、第二のノードによって実行されるマップ生成処理の流れを示すフローチャートである。 実施形態において、第二のノードによって実行される更新実行処理の流れを示すフローチャートである。 実施形態において、第二のノードによって実行される検索要求対応処理の流れを示すフローチャート(1)である。 実施形態において、第二のノードによって実行される検索要求対応処理の流れを示すフローチャート(2)である。 実施形態に係る第一のノードおよび第二のノードの機能構成の概略を示す図である。 実施形態において、第一のノードおよび第二のノードによって実行されるトランザクションログ送受信開始処理の流れを示すフローチャートである。 実施形態において、第二のノードによって実行されるオンデマンド処理の流れを示すフローチャートである。 実施形態において、第二のノードによって実行される削除処理の流れを示すフローチャートである。
以下、本開示に係るシステム、情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施形態に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
本実施形態では、本開示に係るシステム、情報処理装置、方法およびプログラムを、追記型のデータベースシステムにおいて実施した場合の実施の形態について説明する。追記型のデータベースシステムとは、データの更新の際に、古いデータを新しいデータで上書きすることなく、新しいデータを追記することでデータの更新を行うタイプのデータベースシステムである。但し、本開示に係るシステム、情報処理装置、方法およびプログラムは、複数のノードを有するシステムにおいて、あるノードが管理するデータを他のノードにおいて用いるための技術について広く用いることが可能であり、本開示の適用対象は、本実施形態において示した例に限定されない。
<第一の実施形態>
はじめに、第一の実施形態について説明する。
<<システムの構成>>
図1は、本実施形態に係るシステムのハードウェア構成の概略を示す図である。本実施形態に係るシステムは、ユーザー端末9からの検索要求(クエリ)に応答するための複数のノード(情報処理装置)1を備える。複数のノード1は、ネットワークを介して互いに通信可能に接続される。複数のノード1のうち、データベースが既に構築されているノード1の何れかを、本実施形態におけるオリジナルのデータベースを有する第一のノード1Aとすることが出来る。また、本実施形態において第一のノード1Aからデータを受信する第二のノード1Bは、データベース用のソフトウェアがインストールされているが、データベースのコンテンツが未構築のノードである。本実施形態では、このようなシステムにおいて、第一のノード1Aが管理するデータベースのコンテンツ(データ)を、第二のノード1Bにおける検索の用に供するための技術を説明する。本実施形態では、ノードを区別することなくノード一般について述べる場合には「ノード1」と記載し、ノードを区別して述べる場合には「第一のノード1A」、「第二のノード1B」のように添字を付して記載する。
なお、本開示に係るシステムは、階層構造を有するデータベースシステムや、マルチマスターのデータベースシステムに適用可能であるが、この際、データベースシステムにおけるマスターノードおよびスレーブノードの何れであっても、第一のノード1Aまたは第二のノード1Bとすることが出来る。
第一のノード1Aおよび第二のノード1Bは、CPU(Central Processing Unit)11A、11B、RAM(Random Access Memory)12A、12BおよびROM(Read Only Memory)13A、13B等からなる制御部10A、10Bと、補助記憶装置14A、14Bと、通信インターフェース15A、15Bと、を備えるコンピューターである。但し、ノード1の具体的なハードウェア構成に関しては、実施の形態に応じて適宜省略や置換、追加が可能である。また、ノード1は、単一の装置に限定されない。ノード1は、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。
なお、本実施形態では、データベースの各レコードは、ページ単位で管理されており、ストレージ(例えば、補助記憶装置14A、14B)とメモリ等(例えば、RAM12A、12B)との間のデータのやり取りは、ページ単位で行われる。ここで、メモリ等に展開されてデータの検索または処理に供されている状態のデータは、キャッシュと称される。一方、ストレージ上のデータは、データの検索または処理に供されていない状態にある。即ち、データベースの内容を検索や更新等の処理の対象とする場合、各ノードは、対象のレコードを含むページをストレージから読み出してキャッシュとし、対象のレコードに係る処理を行う。また、各ノードは、対象のレコードの更新を行った後に、当該レコードを含むキャッシュのページをストレージに書き込むことで、データベースの更新を保存する。なお、ページがストレージに書き込まれるタイミングは、実施の形態に応じて適宜決定される。ページには、1または複数のレコードが格納される。また、ページは、ブロックと称されてもよく、本発明の「所定の管理単位」に相当する。
本実施形態では、後述するノード間の送受信処理においても、ページ単位でデータが要求され、ページ単位でデータが送受信される。但し、データの読出/書込および送受信をページ単位で行うのは、本開示を実施する際に採用可能な具体的構成の一例であり、本開示の技術的範囲は、ページ単位での読出/書込および送受信に限定されない。データの読出/書込および送受信は、例えばテーブル単位で行われてもよいし、その他の管理単位で行われてもよい。
図2は、本実施形態に係る第一のノード1Aおよび第二のノード1Bの機能構成の概略を示す図である。本実施形態に係る第一のノード1Aは、CPU11Aが、RAM12Aに展開された各種プログラムを解釈および実行して、ノード1Aに備えられた各種ハードウェアを制御することで、ログ保持部21、要求受信部22、特定識別情報送信部23、ログ送信部24およびデータ送信部25を備えるコンピューターとして機能する。本実施形態では、第一のノード1Aの機能が汎用のCPU11Aによって実行される例について説明しているが、これらの機能は、その一部または全部が、1または複数の専用のプロセッサによって実現されてもよい。
ログ保持部21は、第一のノード1Aによって管理されているデータベースにおけるトランザクションのログ(以下、「トランザクションログ」)を、トランザクションに含まれる命令の時系列上の順序を把握可能な識別情報であるLSN(Log Sequence Number)とともに保持する。命令には、データベースの更新に係る更新命令と、トランザクションの管理に係る管理命令とが含まれる。また、トランザクションログは、ノードにおいてトランザクションが発生する毎に生成され、LSNが付されてログ保持部21によって保持される。
要求受信部22は、第二のノード1Bによって送信された、第一のノード1Aによって管理されているデータの送信要求を受信する。
特定識別情報送信部23は、ログ保持部21によって保持されているLSNのうち、所定の時点におけるトランザクションログを示す特定識別情報(特定LSN)を、要求受信部22によって受信されたデータ送信要求に応じて第二のノード1Bに送信する。ここで送信される特定LSNは、要求されたページ毎に決定されてよい。なお、本実施形態において、特定識別情報送信部23は、特定LSNとして、最新のトランザクションログを示すLSNを送信する。特定LSNを最新のトランザクションログを示すLSNとすることで、ログ送信部24によって送信すべきトランザクションログの量を低減させ、また、第二のノード1Bにおいて反映すべきトランザクションログの量を低減出来る。但し、送信される特定LSNは、第二のノード1Bにおいて反映すべきトランザクションログを判別するための、所定の時点におけるトランザクションログを示すものであればよく、最新のトランザクションログを示すLSNに限定されない。
ログ送信部24は、少なくとも、特定LSNが示す所定の時点より後のトランザクションログおよびLSNを、互いに関連づけて第二のノード1Bに送信する。トランザクションログの送信開始後、ログ送信部24は、新たに発生したトランザクションログについても、順次第二のノード1Bに対して送信する。
データ送信部25は、要求受信部22によって受信されたデータ送信要求に応じて、データベースによって管理されているページのうち、要求に係るページであって、少なくとも特定LSNに係る所定の時点までの内容が反映されたページを、第二のノード1B宛に送信する。本実施形態では、データ送信部25は、データを、トランザクションログに基づく更新命令の順序が互いに依存関係にあるレコードが同一の管理単位に入るように区切られた所定の管理単位(本実施形態では、ページ)毎に送信する。
なお、本実施形態では、データ送信部25は、第一のノード1Aのメモリに展開されてデータの検索または処理に供されている状態のデータ、即ちキャッシュを、第二のノード1B宛に送信する。送信の際、送信対象のページのキャッシュが無い場合には、第一のノード1Aは、対象ページをストレージから読み出してキャッシュとする。これは、本実施形態に係るデータベースシステムでは、各ノード1において発生したデータの更新は即座にキャッシュに反映され、キャッシュがデータの最新の状態を表しているために、第二のノード1B宛に送信されるデータとしてキャッシュを採用することで、送信されるデータを、最新のトランザクションログを示すLSNである特定LSNに係る所定の時点までの内容が反映されたページとすることが出来るからである。
但し、送信されるデータは、少なくとも特定LSNに係る所定の時点までの内容が反映されたものであればよく、本実施形態において採用されたキャッシュに限定されない。本開示が適用されるデータベースシステムが、ストレージにあるデータに、少なくとも特定LSNに係る所定の時点までの内容が反映されていることが保証できるものである場合には、ストレージから読み出されたデータがそのまま送信されてもよい。
また、本実施形態に係る第二のノード1Bは、CPU11Bが、RAM12Bに展開された各種プログラムを解釈および実行して、ノード1Bに備えられた各種ハードウェアを制御することで、要求送信部31、データ受信部32、実行部33、マップ生成部34、検索要求受付部35、検索応答部36および展開部37を備えるコンピューターとして機能する。本実施形態では、第二のノード1Bの機能が汎用のCPU11Bによって実行される例について説明しているが、これらの機能は、その一部または全部が、1または複数の専用のプロセッサによって実現されてもよい。
要求送信部31は、第一のノード1Aに対して、データベース中のデータを指定してデータの送信要求を送信する。本実施形態では、データの指定は、ページ単位で行われる。
データ受信部32は、第一のノード1Aから、トランザクションログ、該トランザクションログのLSN、ページ毎の特定LSNおよびデータを受信する。なお、先述の通り、本実施形態では、データの送受信は、ページ単位で行われる。
実行部33は、データの送信要求に応じて第一のノード1Aから送信され、データ受信部32によって受信されたデータが、該第二のノード1Bのメモリに展開されてデータの検索または処理に供される状態(キャッシュ)となった場合に、受信されたトランザクションログのうち、少なくとも特定LSNに係るトランザクションログよりも新しいトランザクションログに含まれる更新命令を、メモリに展開されたデータに対して実行する。ここで、トランザクションログに含まれる更新命令は、LSNによって把握される順序に従って実行される。
マップ生成部34は、受信されたトランザクションログのうち、少なくとも特定LSNが示すトランザクションログよりも新しいトランザクションログに基づいて、トランザクションログに含まれる更新命令の対象となるデータが収容されているページと当該更新命令との関係を示すマップを生成する。
なお、上述の通り本実施形態では、データはページをもって管理されるため、マップ生成部34は、更新命令の対象となるデータが収容されたページと更新命令との関係を示すマップを生成するが、マップ生成手段は、その他の管理単位(例えば、テーブル等)と更新命令との関係を示すマップを生成してもよい。また、マップ生成手段は、このような管理単位を用いること無く、更新命令の対象となるレコードと更新命令との関係を示すマップを生成してもよい。
検索要求受付部35は、ユーザー端末9からの検索要求(クエリ)を受け付ける。
検索応答部36は、第一のノード1Aから得られ、トランザクションログに基づく更新命令が反映されたデータに基づいて、検索要求(クエリ)への応答をユーザー端末9に対して返す。
展開部37は、第一のノード1Aから受信したデータをメモリに展開して、データの検索または処理に供する。本実施形態において、展開部37は、クエリや、後述する更新実行処理における求めに応じて、第一のノード1Aから受信されたデータをメモリに読み出すことでキャッシュとする。
<<処理の流れ>>
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の形態に応じて適宜選択されてよい。
図3は、本実施形態において、第一のノード1Aおよび第二のノード1Bによって実行される管理情報送受信処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード1Bにおいて、データベースの構築開始の指示が受け付けられたことを契機として開始される。
ステップS101およびステップS102では、管理情報要求が送受信される。要求送信部31は、第一のノード1Aに対して、データベースの管理情報(システムカタログ等)を指定してデータの送信要求を送信する(ステップS101)。ここで、管理情報は、データベース中のテーブルやレコードの位置を特定可能な情報を含んでいる。本実施形態に係るデータベースはページ単位で管理されているため、管理情報は、データベースのテーブルとページとの関係を特定可能な情報を含む。また、本実施形態では、管理情報の読出/書込および送受信についても、他のテーブルと同様ページ単位で行われる。但し、管理情報がテーブル単位等その他の単位に従って要求されてもよいことは、先述したデータの読出/書込および送受信と同様である。要求受信部22は、第二のノード1Bによって送信された要求を受信する(ステップS102)。その後、処理はステップS103へ進む。
ステップS103およびステップS104では、データの送信要求に対する応答(Acknowledgement。以下、「ACK」と称する)が送受信される。このACKは、管理情報の特定LSNを含む。先述の通り、LSNとは、トランザクションログに含まれる命令(更新命令)の順序を把握可能な識別情報であり、特定LSNとは、ログ保持部21によって保持されているLSNのうち、所定の時点におけるトランザクションログ(本実施形態では、最新のトランザクションログ)を示すLSNである。即ち、特定識別情報送信部23は、ログ保持部21によって保持されているLSNのうち、要求された管理情報に係る特定LSNを含むACKを、第二のノード1Bに対して送信する(ステップS103)。データ受信部32は、第一のノード1Aから、特定LSNを含むACKを受信する(ステップS104)。その後、処理はステップS105へ進む。
ステップS105およびステップS106では、トランザクションログの送受信が開始される。ログ送信部24は、所定の時点より後のトランザクションログおよびLSNを、互いに関連づけて第二のノード1Bに送信する(ステップS105)。以降、第一のノード1Aにおいて生成されたトランザクションログは、順次、継続的に第二のノード1Bに対して送信される。ここで、「所定の時点」とは、ステップS103で送信された特定LSNが示すトランザクションログが生成された時点である。データ受信部32は、第一のノード1Aによって送信された、トランザクションログおよび該トランザクションログに係るLSNの受信を開始する(ステップS106)。
ログの送受信開始後、第一のノード1Aにおいて新たに発生したトランザクションログは、発生次第、第二のノード1Bに対して送信され、第二のノード1Bによって受信される。即ち、第二のノード1Bは、ログの送信開始後、所定の時点以降のトランザクションログを全て受信することとなる。その後、処理はステップS107へ進む。
なお、先述の通り、処理順序は本フローチャートに示した例に限定されない。管理情報送受信処理では、対象のページに関係するトランザクションログのうち、特定LSNが示す時点以降のトランザクションログが全て第二のノード1Bによって受信されればよい。このため、例えば、ステップS103およびステップS104の送受信処理と、ステップS105およびステップS106の送受信処理との処理順序は、入れ替わってもよい。
ステップS107では、管理情報について、マップ生成処理が開始される。マップ生成部34は、管理情報に関するページを、マップ生成処理の対象とする。即ち、本ステップ以降、管理情報に対して実行される更新命令と、当該更新命令の実行対象(対象ページ、対象テーブルまたは対象レコード等)との組合せがマッピングされたマップの生成が開始される。マップ生成処理は、本フローチャートに示された処理と並行して実行される。マップ生成処理の詳細は、図5を用いて説明する。その後、処理はステップS108へ進む。
ステップS108およびステップS109では、データベースの管理情報が送受信される。データ送信部25は、ステップS102で受信された要求を受けて、データベースの管理情報(システムカタログ等)を、第二のノード1Bに対して送信する(ステップS108)。この際、データ送信部25は、送信対象のデータのキャッシュを、第二のノード1B宛に送信する。送信の際、送信対象のデータのキャッシュが無い場合には、第一のノード1Aは、対象データをストレージから読み出してキャッシュとし、少なくとも特定LSNに係る所定の時点までの内容が反映されたデータとしてから、第二のノード1B宛に送信する。第二のノード1Bのデータ受信部32は、第一のノード1Aから、管理情報を受信する(ステップS109)。その後、処理はステップS110へ進む。
なお、本フローチャートでは、管理情報の送信(ステップS108)が、マップの生成開始(ステップS107)よりも後に記載されているが、管理情報は、特定LSNに係る所定の時点以降のものが送信されればよく、送信のタイミングは本フローチャートに示された例に限定されない。
ステップS110では、更新実行処理が開始される。実行部33は、管理情報に関するページを、更新実行処理の対象とする。即ち、本ステップ以降、マップ生成処理においてマップに記録された、管理情報に未反映の更新命令が実行される。更新実行処理は、本フローチャートに示された処理と並行して実行される。更新実行処理の詳細は、図6を用いて説明する。その後、処理はステップS111へ進む。
ステップS111では、検索要求(クエリ)の受付が開始される。第二のノード1Bは、検索要求対応処理を開始させることで、ユーザー端末9から送信されるクエリの受付を開始する。以降、検索要求受付部35は、ユーザー端末9からのクエリを受け付け、クエリが受け付けられると、クエリに応じるために必要なページが、管理情報を参照することで取得される。検索要求対応処理は、本フローチャートに示された処理と並行して実行される。検索要求対応処理の詳細は、図7および図8を用いて説明する。その後、本フローチャートに示された処理は終了する。
なお、本実施形態では、管理情報の複製についても、データベースの他のテーブル同様、マップ生成処理、更新実行処理および検索要求対応処理を用いて複製する例について説明したが、管理情報の複製には、その他の方法が採用されてもよい。管理情報の複製には、例えば、チェックポイントを作成してチェックポイントのスナップショットを複製する従来の方法等を採用することが出来る。
図4は、本実施形態において、第一のノード1Aおよび第二のノード1Bによって実行されるデータベース送受信処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード1Bが、第一のノード1Aからデータベースの管理情報を受信することで、第一のノード1Aによって管理されているデータベースのページ構成を把握可能となったことを契機として開始される。
ステップS201およびステップS202では、データの送信要求が送受信される。要求送信部31は、管理情報のキャッシュを参照して、第一のノード1Aに対して、データベース中のページを指定してデータの送信要求を送信する(ステップS201)。ページの指定には、例えば、ページ番号が用いられてよい。データの送信要求は、管理情報から目的のデータを含むページが分かる場合には、ページを指定したものであってもよいし、データベース中の具体的なレコードを指定したものであってもよい。本実施形態において、データはページ単位で要求されるが、テーブル単位等その他の単位に従って要求されてもよいことは先述した通りである。要求受信部22は、第二のノード1Bから、第一のノード1Aによって管理されているデータの送信要求を受信する(ステップS202)。その後、処理はステップS203へ進む。
ステップS203およびステップS204では、データの送信要求に対するACKが送受信される。このACKは、ページ番号および当該ページの特定LSNを含む。即ち、特定識別情報送信部23は、ログ保持部21によって保持されているLSNのうち、要求されたページに係る特定LSNを含むACKを、第二のノード1Bに対して送信する(ステップS203)。データ受信部32は、第一のノード1Aから、特定LSNを含むACKを受信する(ステップS204)。その後、処理はステップS205へ進む。
ステップS205では、要求に係るページ等について、マップ生成処理が開始される。マップ生成部34は、ステップS201において要求したページを、マップ生成処理の対象とする。即ち、本ステップ以降、要求されたページに対して実行される更新命令と、当該更新命令の実行対象(対象ページ、対象テーブルまたは対象レコード等)との組合せがマッピングされたマップの生成が開始される。ここで開始されるマップ生成処理の内容は、ステップS107において管理情報に対して開始されたものと概略同様であり(図5を参照)、本フローチャートに示された処理と並行して処理される。その後、処理はステップS206へ進む。
なお、本実施形態では、管理情報やページ毎にマップの生成開始タイミングが異なる例について説明しているが(ステップS107やステップS205を参照)、マップの生成開始タイミングは、データベース全体において同時であってもよい。
ステップS206およびステップS207では、要求に係るページが送受信される。データ送信部25は、ステップS201で受信された要求に応じて、データベースによって管理されているページのうち要求されたものを、第二のノード1Bに送信する(ステップS206)。この際、データ送信部25は、送信対象のデータのキャッシュを、第二のノード1B宛に送信する。送信の際、送信対象のページのキャッシュが無い場合には、第一のノード1Aは、対象ページをストレージから読み出してキャッシュとし、少なくとも特定LSNに係る所定の時点までの内容が反映されたページとしてから、第二のノード1B宛に送信する。第二のノード1Bのデータ受信部32は、第一のノード1Aから、データを受信する(ステップS207)。データの送受信単位は、要求に応じたものであればよく、ページ単位、テーブル単位およびレコード単位の何れでもよい。その後、処理はステップS208へ進む。
なお、本フローチャートでは、データの送信(ステップS206)が、マップの生成開始(ステップS205)よりも後に記載されているが、データは、特定LSNに係る所定の時点以降のものが送信されればよく、送信のタイミングは本フローチャートに示された例に限定されない。
ステップS208では、更新実行処理が開始される。実行部33は、ステップS207で受信されたデータを、更新実行処理の対象とする。即ち、本ステップ以降、マップ生成処理でマップに記録された、未実行の更新命令が実行される。その後、本フローチャートに示された処理は終了する。
なお、本実施形態において、第二のノード1Bは、第一のノード1Aのデータベースにある全てのデータを取得するため、図4に示されたデータベース送受信処理は、管理情報に示された全てのページについて取得が完了するまで、要求するページを順次変更しながら繰り返し実行される。即ち、要求送信部31は、ステップS201からステップS208の処理を繰り返すことで、管理情報を参照して把握される全てのページまたはテーブルについて、データの送信要求を送信する。但し、第二のノード1Bが、第一のノード1Aのデータベースにある全てのデータを取得する必要がない場合には、要求送信部31は、必要な一部のページやテーブルについてのみ、データの送信要求を行ってもよい。また、本実施形態では、複数のページを取得する場合に、ステップS201からステップS208の処理を繰り返す例について説明したが、複数のページを取得する場合に、ステップS201において複数ページ分まとめて要求することとしてもよい。
本フローチャートに示された処理において第一のノード1Aから受信されたページには、未反映のトランザクションログが存在する可能性がある。このため、マップ生成処理、更新実行処理および検索要求対応処理(詳細については後述する)が本フローチャートに示された処理と並行して行われることで、未反映のトランザクションログが反映される。これらの処理が開始されるタイミングは、上記説明した通りである。なお、要求に係るページやテーブルに関するトランザクションログは、ステップS105以降順次受信されているトランザクションログに含まれている。
なお、本実施形態では、第一のノード1Aから受信されたデータは、一旦ストレージに保存される。但し、このような処理に代えて、展開部37は、第一のノード1Aから受信したデータを、ストレージ(本実施形態では、補助記憶装置14B)を介さずに直接メモリに展開して、データの検索または処理に供してもよい。受信データが直接メモリに展開された場合、当該受信データに係る更新命令は、後述するマップ生成処理に従って、即座に反映される。
次に、第二のノード1Bにおいて実行されるデータベースの管理処理の流れを説明する。本実施形態において、第二のノード1Bのデータベースは、マップ生成処理、更新実行処理および検索要求対応処理によって管理される。第二のノード1Bは、これらの処理を実行するためのインスタンスを適宜複数立ち上げて並列実行することによって、マップの生成、マッピングされた更新命令の反映、および検索要求(クエリ)の処理の夫々について、並列処理することを可能としている。
図5は、本実施形態において、第二のノード1Bによって実行されるマップ生成処理の流れを示すフローチャートである。本フローチャートに示された処理は、マップ生成処理の対象となったデータ(ステップS107およびステップS205を参照)に対して、繰り返し実行される。
ステップS301では、トランザクションログに含まれる命令が、LSNを参照して時系列順に参照される。第二のノード1Bは、未反映のトランザクションログに含まれる命令を、時系列において最も古い時点のもの(LSNが最も小さいもの)から順に参照する。ここで参照されるトランザクションログは、ステップS105およびステップS106の処理において送受信が開始され、第二のノード1Bによって受信されたものである。その後、処理はステップS302へ進む。
ステップS302およびステップS303では、命令が更新命令であるか否かが判定され、更新命令以外の命令が実行される。第二のノード1Bは、ステップS301で参照された命令が、更新命令であるか否かを判定する(ステップS302)。参照された命令が更新命令以外の命令(例えば、コミット等の管理命令)であった場合、命令はそのまま実行される(ステップS303)。一方、参照された命令が更新命令であった場合、処理はステップS304へ進む。
ステップS304では、参照された命令が示すページが、マップ生成処理の対象であるか否かが判定される。第二のノード1Bは、対象となっているデータが、ステップS107やステップS205等において、マップ生成処理の対象に設定されているか否かを判定する。ここで、対象データが、マップ生成処理の対象に設定されていないと判定された場合、本フローチャートに示された処理は終了する。一方、対象データが、マップ生成処理の対象に設定されていると判定された場合、処理はステップS305へ進む。
ステップS305では、対象データ(ページ)のキャッシュが存在するか否かが判定される。第二のノード1Bは、参照した命令が更新命令である場合、当該命令を参照した時点でその対象がデータベース内に存在するような更新命令(例えば、DELETE命令)については、当該更新命令の対象のキャッシュが存在するか否かを判定する。一方、当該命令を参照した時点でその対象がデータベース内に存在しないような更新命令(例えば、INSERT命令)については、当該更新命令の対象が挿入される領域のデータのキャッシュが存在するか否かを判定することで、当該更新命令の対象のキャッシュが存在するか否かを判定する。なお、レコードがページ単位で管理されている場合、第二のノード1Bは、更新命令の対象を含むページのキャッシュが存在するか否かを判定する。対象のページのキャッシュが存在する場合、処理はステップS306へ進む。一方、対象のページのキャッシュが存在しない場合、処理はステップS307へ進む。
ステップS306では、トランザクションログに係る更新命令が実行される。実行部33は、受信されたデータのうち、展開部37によってメモリに展開されてキャッシュとなったデータに対して、トランザクションログに係る更新命令を実行する。その後、処理はステップS308へ進む。
ステップS307では、マップが生成される。トランザクションログに含まれる更新命令の対象となっているページのキャッシュが存在しない場合(ステップS305で「NO」に進んだ場合)、マップ生成部34は、トランザクションログに含まれる更新命令の対象となるデータが収容されたページと更新命令との関係を示す情報を、マップに記録することで、更新命令の実行を待機させる。換言すれば、マップ生成部34は、更新命令の実行を待機させる際に、当該更新命令をマッピング(マップ生成)の対象とし、待機させた更新命令の内容を当該レコードに関連付けて記録するマップを生成する。但し、全ての更新命令をマップ生成の対象としてもよい。本実施形態では、マップには、待機させた更新命令の内容およびLSNのうちの少なくとも一方が、更新命令の対象であるレコードを含むページ(具体的にはページ番号)に関連付けられて記録される。その後、処理はステップS308へ進む。
ステップS308では、マップ生成処理を終了するか否かが判定される。マップ生成処理が終了されない場合、処理はステップS301へ戻り、トランザクションログにおける時系列順(LSNの順)で次の命令が参照され、ステップS304からステップS307に示された処理の対象となる。通常、第一のノード1Aにおいて新たに発生したトランザクションログを第二のノード1Bに反映するために、マップ生成処理は、第二のノード1Bが運用されている間、繰り返し実行される。即ち、本実施形態において、第二のノード1Bは、受信されたトランザクションログを、古いものから順に検査し、トランザクションログに含まれる更新命令の対象となっているページがオンメモリ(キャッシュ)である場合に、キャッシュに対してトランザクションログに応じた更新命令を実行する。一方、第二のノード1Bが停止される等の理由でマップ生成処理が終了される場合、本フローチャートに示された処理は終了する。
マップ生成処理で生成されたマップは、対象ページがキャッシュとなった場合に、更新実行処理または検索要求対応処理において参照され、更新実行処理または検索要求対応処理において、当該マップに待機させられた更新命令が実行される。即ち、本実施形態に係るシステムによれば、第一のノードから受信されたデータに対するトランザクションログの反映を、対象データが実際に用いられる時点(換言すれば、キャッシュとなる時点)まで遅延させることが出来る。
ここで、更新命令の内容を記録したトランザクションログは、ノード1BのRAM12Bまたは補助記憶装置14Bに保持されている。更新実行処理または検索要求対応処理では、当該マップに記録されるLSNに基づいてRAM12または記憶装置14に保持されているトランザクションログへのアクセスが行われ、実行する更新命令の内容が特定される。
なお、マップ生成処理では、参照した順番に応じて、更新命令の内容またはLSNがマップに記録される。これにより、後述する更新実行処理または検索要求対応処理では、待機させられた更新命令の実行順序を認識することができる。但し、仮に、更新命令の内容またはLSNが参照された順番に応じてマップに記録されなかったとしても、更新実行処理または検索要求対応処理では、待機させられた更新命令のLSNにより、当該更新命令の実行順序を認識することができる。
図6は、本実施形態において、第二のノード1Bによって実行される更新実行処理の流れを示すフローチャートである。本フローチャートに示された処理は、マップに待機している更新命令が存在する間、繰り返し実行される。
ステップS401では、待機している更新命令の有無が判定される。第二のノード1Bは、マップを参照し、待機している更新命令があるか否かを判定する。待機している更新命令がマップに記録されていない場合、本フローチャートに示された処理は終了する。一方、待機している更新命令がマップに記録されている場合、第二のノード1Bは、更新命令の対象となるデータが含まれる管理単位を、処理の対象として選択して、処理をステップS402へ進める。
ステップS402では、更新対象が存在するか否かが判定される。第二のノード1Bは、ステップS401において選択された処理の対象が、第二のノード1Bに存在するか否か、換言すれば、処理の対象となるページが、既に第一のノード1Aから受信されているか否か、を判定する。更新対象のページが存在しない場合、処理はステップS401へ戻る。即ち、第二のノード1Bは、マップを参照して、第二のノード1Bに存在するページについて待機している更新命令を待ち受ける。更新対象のページが存在する場合、処理はステップS404へ進む。
ステップS403では、更新対象ページに関する更新命令がマップから抽出される。第二のノード1Bは、ステップS402において存在すると判定された更新対象のページに対する更新命令を、マップから全て抽出する。このようにすることで、更新対象ページに関するマップ上の更新命令を全て実行し、更新命令が実行されたページをそのままキャッシュとして、データの検索または処理に供することが出来る。その後、処理はステップS404へ進む。
ステップS404では、展開部37は、自身が処理する対象を、補助記憶装置14BからRAM12Bに読み出すことで、キャッシュとする。その後、処理はステップS405へ進む。
ステップS405およびステップS406では、マップに待機している更新命令および抽出された更新命令が実行され、実行済みの更新命令がマップから削除される。実行部33は、マップを参照して、自身が選択した処理対象に関連付けられている更新命令を実行する(ステップS405)。即ち、実行部33は、ステップS401で発見された更新命令、およびステップS403で抽出された更新命令を、所定の管理単位であるページ毎に、マップに記録されている順に実行する。例えば、更新命令が削除命令である場合、実行部33は、対象のレコードに削除ポインタを付与する。そして、第二のノード1Bは、自身が選択した処理対象について待機している更新命令を実行した後に、実行した更新命令に関する記録をマップから削除する(ステップS406)。その後、処理はステップS407へ進む。
ステップS407では、更新実行処理を終了するか否かが判定される。更新実行処理が終了されない場合、処理はステップS401へ戻る。即ち、更新実行処理では、処理対象として選択したページに複数の更新命令が待機している場合、マップに記録されている順(LSN順)に、当該待機している更新命令が実行される。これにより、そのページに関して、ノード1とレプリケーション元のコンピューターとの間で、レプリケーションが実行されている最中におけるデータベースの整合性を保つことができる。一方、第二のノード1Bが停止される等の理由で更新実行処理が終了される場合、本フローチャートに示された処理は終了する。
なお、第二のノード1Bは、更新実行処理を実行するためのインスタンスを複数立ち上げてもよく、このようなインスタンスを生成若しくは削除または起動若しくは停止することで、更新実行処理を実行するインスタンスの数を増減させてもよい。例えば、第二のノード1Bは、マップで記録されている待機させられている更新命令の管理単位の数(本実施形態では、ページ数)に応じて、起動するインスタンスの数を増減させてもよい。この場合は、更新実行処理の処理能力を要求に応じて可変にでき、無駄なインスタンスが存在することを避けることができるため、リソースを効率よく活用することが可能になる。
また、例えば、更新実行処理を実行するためのインスタンスを、予め一定数起動させておいてもよい。この場合、処理の要求が生じた場合に改めてインスタンスを起動しなくてもよいため、生じた要求に迅速に対応することが可能になる。
図7および図8は、本実施形態において、第二のノード1Bによって実行される検索要求対応処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード1Bが、ユーザー端末9等からクエリを受信したことを契機として開始される。
ステップS501では、クエリが受け付けられる。検索要求受付部35は、ユーザー端末9からのクエリを受け付ける。その後、処理はステップS502へ進む。
ステップS502では、管理情報のキャッシュが存在するか否かが判定される。検索応答部36は、メモリ上に、管理情報のキャッシュが存在するか否かを判定する。なお、本実施形態では、レコードはページ単位で管理されているため、検索応答部36は、検索対象での管理情報を含むページのキャッシュが存在するか否かを判定する。
本実施形態では、管理情報を含むページがRAM12Bに読み出された段階で、当該ページに対して、待機させられた更新命令が実行される(図6および後述するステップS504からステップS507に示す処理を参照)。また、キャッシュが存在するページに対する更新命令は即座に実行される(図5を用いて説明したマップ生成処理を参照)。このため、本実施形態において、管理情報を含むページのキャッシュが既に存在する場合(ステップS502における判定結果が「YES」の場合)、当該ページに対する更新命令の実行が待機されていることはない。従って、管理情報を含むページのキャッシュが存在する場合、検索応答部36は、記憶領域からの読み出しを行わず、既にキャッシュが存在する管理情報を参照の対象とし、処理はステップS508へ進む。一方、管理情報のキャッシュが存在しない場合、処理はステップS503へ進む。
ステップS503では、管理情報がストレージから読み出される。本実施形態では、データベースの構築開始の時点で管理情報送受信処理が行われるため(図3を参照)、クエリを受けた時点で管理情報がキャッシュに存在しない場合にも、第二のノード1Bは、ストレージに管理情報を有している。展開部37は、管理情報のキャッシュが存在しない場合、管理情報をストレージ(補助記憶装置14B)からRAM12Bに読み出す。その後、処理はステップS504へ進む。
ステップS504では、待機している更新命令の有無が判定される。第二のノード1Bは、マップを参照し、RAM12Bに読み出された管理情報のページについて待機している更新命令があるか否かを判定する。RAM12Bに読み出されたページについて待機している更新命令がマップに記録されていない場合、処理はステップS508へ進む。一方、RAM12Bに読み出したページについて待機している更新命令がマップに記録されている場合、処理はステップS505に進む。
ステップS505では、更新対象ページに関する更新命令がマップから抽出される。第二のノード1Bは、ステップS503において存在すると判定された更新対象のページ(ここでは、管理情報を含むページ)に対する更新命令を、マップから全て抽出する。このようにすることで、更新対象ページに関するマップ上の更新命令を全て実行し、更新命令が実行されたページをそのままキャッシュとして、データの検索または処理に供することが出来る。その後、処理はステップS506へ進む。
ステップS506およびステップS507では、マップに待機している更新命令および抽出された更新命令が実行され、実行済みの更新命令がマップから削除される。実行部33は、マップを参照して、RAM12Bに読み出した管理情報に関連づけられている更新命令を実行する(ステップS506)。即ち、本実施形態において、第二のノード1Bは、クエリに応じて(ステップS501)、データ受信部32によって受信された管理情報(ステップS207)をメモリに展開し(ステップS503)、マップに基づいて更新命令を管理情報に対して実行する。
ここで、実行部33は、マップに記録されている順に、待機している更新命令を実行する。そして、第二のノード1Bは、RAM12Bに読み出した管理情報について待機している更新命令を全て実行した後に、実行した更新命令に関する記録をマップから削除する(ステップS507)。その後、処理はステップS508へ進む。
ステップS508では、管理情報が参照されてページが特定される。検索応答部36は、受信されたクエリにより検索範囲に指定された記憶領域を特定するために、管理情報を参照する。本実施形態では、管理情報を参照することで、クエリを処理するために必要なデータを含むページが特定される。その後、処理はステップS511へ進む。
ステップS511では、検索対象のデータ(ページ)のキャッシュが存在するか否かが判定される。検索応答部36は、受信したクエリの内容に適合するレコードを抽出するために、当該クエリにより検索範囲に指定された記憶領域にアクセスする。そして、検索応答部36は、メモリ上に、クエリに係るレコードのキャッシュが存在するか否かを判定する。なお、本実施形態では、レコードはページ単位で管理されているため、検索応答部36は、検索対象でのレコードを含むページのキャッシュが存在するか否かを判定する。
本実施形態では、ページがRAM12Bに読み出された段階で、当該ページに対して、待機させられた更新命令が実行される(図6および後述する図8のステップS515からステップS518に示す処理を参照)。また、キャッシュが存在するページに対する更新命令は即座に実行される(図5を用いて説明したマップ生成処理を参照)。このため、本実施形態において、検索範囲に含まれるページのキャッシュが既に存在する場合(ステップS511における判定結果が「YES」の場合)、当該ページに対する更新命令の実行が待機されていることはない。従って、対象のページのキャッシュが存在する場合、検索応答部36は、記憶領域からの読み出しを行わず、既にキャッシュが存在するページを検索処理の対象とし、処理はステップS519へ進む。一方、対象のページのキャッシュが存在しない場合、処理はステップS512へ進む。
ステップS512では、検索対象のページが第二のノード1Bのストレージ(データベース)に存在するか否かが判定される。上述の通り、本実施形態では、ページの送信要求は逐次的に行われるため(ステップS201を参照)、クエリを受けた時点で、第二のノード1Bがクエリに係るページを有していない場合がある。ページがストレージに存在しないと判定された場合、該当するページを第一のノード1Aから取得するために、処理はステップS514へ進む。一方、ページがストレージに存在すると判定された場合、処理はステップS513へ進む。
ステップS514では、図4に示されたデータベース送受信処理が実行される。ステップS512においてページがストレージに存在しないと判定された場合、要求送信部31は、第一のノード1Aに対して、データベース中の少なくともクエリに係るデータを指定してデータの送信要求を送信する。本実施形態では、図4に示されたデータベース送受信処理が繰り返されることで管理情報に示されたページが順番に取得されるが、ステップS501で検索要求を受けて検索対象となったページについては、この順番を無視して、優先的にデータ送信要求される。即ち、本実施形態によれば、検索要求を受けて検索対象となったページを、優先的にリクエスト(データ送信要求)の対象とすることが出来る。その後、処理はステップS511へ戻る。
そして、第一のノード1Aから対象ページが取得されるまで、ステップS511からステップS514に示された処理が繰り返され、ステップS501で受け付けられたクエリへの対応は、対象ページが第一のノード1Aから取得されるまで待機される。
ステップS513では、検索対象のページがストレージから読み出される。展開部37は、検索対象のデータ(ページ)のキャッシュが存在しないが、第二のノード1Bのストレージに存在する場合、そのページをストレージ(補助記憶装置14B)からRAM12Bに読み出し、検索処理の対象とする。その後、処理はステップS515へ進む。
なお、展開部37は、検索範囲に含まれるページを補助記憶装置14BからRAM12Bに読み出す場合に、例えば、1つ1つ対象のページを読み出してもよいし、複数のページを一度に読み出してもよい。この場合に、実行部33は、1または複数のページを読み出す毎に、読み出した1または複数のページに対して、後述するステップS515以降の処理を実行する。
ステップS515では、待機している更新命令の有無が判定される。第二のノード1Bは、マップを参照し、RAM12Bに読み出されたページについて待機している更新命令があるか否かを判定する。RAM12Bに読み出されたページについて待機している更新命令がマップに記録されていない場合、処理はステップS519へ進む。一方、RAM12Bに読み出したページについて待機している更新命令がマップに記録されている場合、処理はステップS516に進む。
ステップS516では、更新対象ページに関する更新命令がマップから抽出される。第二のノード1Bは、ステップS515において存在すると判定された更新対象のページに対する更新命令を、マップから全て抽出する。このようにすることで、更新対象ページに関するマップ上の更新命令を全て実行し、更新命令が実行されたページをそのままキャッシュとして、データの検索または処理に供することが出来る。その後、処理はステップS517へ進む。
ステップS517およびステップS518では、マップに待機している更新命令および抽出された更新命令が実行され、実行済みの更新命令がマップから削除される。実行部33は、マップを参照して、RAM12Bに読み出したページに係る更新命令を実行する(ステップS517)。即ち、本実施形態において、第二のノード1Bは、クエリに応じて(ステップS501)、データ受信部32によって受信されたデータ(ステップS207)をメモリに展開し(ステップS513)、マップに基づいて更新命令を該データに対して実行する。
ここで、実行部33は、マップに記録されている順(LSN順)に、待機している更新命令を実行する。そして、第二のノード1Bは、RAM12Bに読み出したページについて待機している更新命令を全て実行した後に、実行した更新命令に関する記録をマップから削除する(ステップS518)。その後、処理はステップS519へ進む。
このように、検索要求対応処理では、更新実行処理と同様、処理対象として選択したページに複数の更新命令が待機している場合、マップに記録されている順(LSN順)に、当該待機している更新命令が実行される。これにより、そのページに関して、第一のノード1Aと第二のノード1Bとの間で、データベースの整合性を保つことができる。
ステップS519では、検索応答部36は、第一のノード1Aから得られ、更新命令が反映されたページに対して、受信したクエリに応じた検索処理を実行する。その後、処理はステップS520へ進む。
ステップS520では、検索要求(クエリ)に対する応答が送信される。検索応答部36は、クエリに対する応答として、検索処理の結果をユーザー端末9に送信する。その後、本フローチャートに示された処理は終了する。
なお、第二のノード1Bは、検索要求対応処理を実行するためのインスタンスを複数立ち上げてもよく、このようなインスタンスを生成若しくは削除または起動若しくは停止することで、検索要求対応処理を実行するインスタンスの数を増減させてもよい。例えば、第二のノード1Bは、ユーザー端末9から受け付けたクエリの数に応じて起動するインスタンスの数を増減させてもよい。この場合、検索要求対応処理の処理能力を要求に応じて可変にでき、無駄なインスタンスが存在することを避けることができるため、リソースを効率よく活用することが可能になる。
また、検索要求対応処理は、複数のインスタンスに分けて実行されてもよい。例えば、検索要求対応処理のうち、ステップS515からステップS518の処理を、他の処理とは異なるインスタンスで実行することとしてもよい。この場合、例えば、ステップS515からステップS518以外の処理を実行するための第一のインスタンスにおいてページ読み出し(ステップS513)が行われた後に、ページ更新のため、処理がステップS515からステップS518の処理を実行するための第二のインスタンスに引き継がれる。そして、第二のインスタンスにおけるステップS518の処理が完了すると、処理は第一のインスタンスに戻り、ステップS519の検索処理が実行される。
<<第一の実施形態に係るシステムの効果>>
本実施形態に係るシステムによれば、データベース全体を一括コピーすること無く、また、チェックポイントを作成すること無く、データベースの部分(ページ等の所定の管理単位)毎にデータを第一のノード1Aから第二のノード1Bに送信出来る。また、第二のノード1Bは、トランザクションログに基づく更新命令同士の依存関係を気にすること無く、データベースの部分毎に並列にトランザクションログを反映することが出来る。また、マップを生成することで、トランザクションログに基づく更新命令の実行を遅延させることが出来、受信されたデータがメモリに展開された場合に、マップに基づいて、トランザクションログに基づく更新命令を、所定の管理単位毎に並列に実行することが出来る。
結果として、本実施形態に係るシステムによれば、データベース全体の複製完了を待つこと無く、受信したデータを第二のノード1Bにおけるクエリに供することが出来る。
また、本実施形態に係るシステムでは、第一のノード1Aから第二のノード1Bへのデータ送信を、データの送信要求に応じたものとすることで、データ取得を逐次的にする等、データ取得のタイミングを調整することが出来る。更に、第二のノード1Bにおいて受け付けられた検索要求に応じてデータの送信要求を行ったり、トランザクションログの反映を行ったりすることで、検索対象となったデータを優先的に取得したり、優先的にトランザクションログを反映したりすることが可能となる。即ち、本実施形態に係るシステムによれば、第二のノード1Bが全てのデータを受信していない状態で、ユーザー端末からの検索要求を受け付けることが可能となる。
<第二の実施形態>
次に、第二の実施形態について説明する。第二の実施形態に係るシステムは、第二のノードにデータベース全体を保持することなく、第二のノードがクエリに応答可能とするために、第一の実施形態に係るシステムに構成を追加したものである。第一の実施形態では、全てのページについてのデータベース送受信処理が完了した場合、第二のノードにデータベース全体が保持されることとなるが、第二の実施形態では、データベース中のデータは、保持対象と判定されたものを除いて、第二のノードに恒久的には保持されない。第二の実施形態に係るシステムのうち、上述した第一の実施形態のシステムと共通する構成には、同一の符号を付し、説明を省略する。
<<システムの構成>>
第二の実施形態に係るシステムのハードウェア構成は、第一の実施形態に係るシステムのハードウェア構成と概略同様であるため、説明を省略する(図1を参照)。但し、第二の実施形態では、第二のノードの機能構成が第一の実施形態とは異なるため、第二のノードに符号「1B’」を付して説明する。
図9は、本実施形態に係る第一のノード1Aおよび第二のノード1B’の機能構成の概略を示す図である。本実施形態に係る第一のノード1Aの機能構成は、第一の実施形態と概略同様であるため説明を省略する。本実施形態に係る第二のノード1B’は、CPU11Bが、RAM12Bに展開された各種プログラムを解釈および実行して、ノード1B’に備えられた各種ハードウェアを制御することで、要求送信部31、データ受信部32、実行部33、マップ生成部34、検索要求受付部35、検索応答部36、展開部37、判定部38、記録部39および削除部40を備えるコンピューターとして機能する。本実施形態では、第二のノード1B’の機能が汎用のCPU11Bによって実行される例について説明しているが、これらの機能は、その一部または全部が、1または複数の専用のプロセッサによって実現されてもよい。
要求送信部31、データ受信部32、実行部33、マップ生成部34、検索要求受付部35、検索応答部36および展開部37については、第一の実施形態と概略同様であるため、説明を省略する。
判定部38は、検索要求に応じて第一のノード1Aから得られ、トランザクションに基づく命令が実行されたデータを、第二のノード1B’における保持対象とするか否かを判定する。
記録部39は、判定部38によって保持対象と判定されたデータを、不揮発性の記憶装置である補助記憶装置14Bに記録する。
削除部40は、検索要求に応じて第一のノード1Aから得られ、トランザクションに基づく命令が実行されたデータを、検索応答部36による応答に用いた後、所定の条件に従って自動的に第二のノードから削除する。
<<処理の流れ>>
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の形態に応じて適宜選択されてよい。
なお、第一の実施形態において説明したデータベース送受信処理(図4を参照)、マップ生成処理(図5を参照)および更新実行処理(図6を参照)は、第二の実施形態でも実行される。これらの処理の詳細は、第一の実施形態において説明した通りであるため、説明を省略する。
図10は、本実施形態において、第一のノード1Aおよび第二のノード1B’によって実行されるトランザクションログ送受信開始処理の流れを示すフローチャートである。本フローチャートに示された処理は、第一の実施形態において説明した管理情報送受信処理(図3を参照)に代えて実行される処理であり、データベースの構築開始の指示が受け付けられたことを契機として開始される。
ステップS801およびステップS802では、トランザクションログ要求が送受信される。要求送信部31は、第一のノード1Aに対して、トランザクションログの送信要求を送信する(ステップS801)。要求受信部22は、第二のノード1B’によって送信された要求を受信する(ステップS802)。その後、処理はステップS803へ進む。
ステップS803およびステップS804では、トランザクションログの送受信が開始される。ログ送信部24は、以降、第一のノード1Aにおいて新たに発生したトランザクションログおよびLSNを、発生次第、互いに関連づけて第二のノード1B’に順次送信する(ステップS803)。第二のノード1B’のデータ受信部32は、第一のノード1Aによって送信された、トランザクションログおよび該トランザクションログに係るLSNの受信を開始する(ステップS804)。即ち、第二のノード1B’は、ログの送信開始後、所定の時点以降のトランザクションログを全て受信することとなる。その後、処理はステップS805へ進む。
ステップS805では、検索要求(クエリ)の受付が開始される。第二のノード1B’は、後述するオンデマンド処理を開始させることで、ユーザー端末9から送信されるクエリの受付を開始する。以降、検索要求受付部35は、ユーザー端末9からのクエリを受け付け、クエリが受け付けられると、クエリに応じるために必要なページ(管理情報を含む)が取得される。その後、本フローチャートに示された処理は終了する。
即ち、第二の実施形態では、第一の実施形態と異なり、データベースの構築開始の時点で管理情報送受信処理が行われない。
また、図4に示すデータベース送受信処理については、第一の実施形態において「第一のノード1Aによって管理されているデータベースのページ構成を把握可能となったことを契機として開始される」と説明したが、第二の実施形態では、第一の実施形態とは異なり、後述するオンデマンド処理の中で呼び出されるタイミングで実行される(後述するステップS605およびステップS514を参照)。
図11は、本実施形態において、第二のノード1B’によって実行されるオンデマンド処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード1B’が、ユーザー端末9等からクエリを受信したことを契機として開始される。即ち、本実施形態では、第一の実施形態において説明した検索要求対応処理(図7および図8を参照)に代えて、オンデマンド処理が実行される。
但し、第二の実施形態では、上述の通り、データベースの構築開始の時点で管理情報送受信処理が行われていない。このため、検索要求が受け付けられた時点で、第二のノード1B’が管理情報を有していない可能性がある。そして、第二のノード1B’が管理情報を有していない場合、データの送信要求においてクエリに係るページを指定することが出来ない。このため、本実施形態に係るオンデマンド処理では、検索要求が受け付けられると、はじめに、第二のノード1B’が管理情報を有しているか否かが確認される。そして、第二のノード1B’が管理情報を有していない場合、これを第一のノード1Aから取得してから、データベース送受信処理が実行される。以下、本実施形態に係るオンデマンド処理の詳細を、図11を参照しながら説明する。
ステップS601では、クエリが受け付けられる。検索要求受付部35は、ユーザー端末9からのクエリを受け付ける。その後、処理はステップS602へ進む。
ステップS602では、管理情報のキャッシュが存在するか否かが判定される。検索応答部36は、メモリ上に、管理情報のキャッシュが存在するか否かを判定する。なお、本実施形態では、レコードはページ単位で管理されているため、検索応答部36は、検索対象での管理情報を含むページのキャッシュが存在するか否かを判定する。
本実施形態では、管理情報を含むページがRAM12Bに読み出された段階で、当該ページに対して、待機させられた更新命令が実行される(図6および後述するステップS606からステップS609に示す処理を参照)。また、キャッシュが存在するページに対する更新命令は即座に実行される(図5を用いて説明したマップ生成処理を参照)。このため、本実施形態において、管理情報を含むページのキャッシュが既に存在する場合(ステップS602における判定結果が「YES」の場合)、当該ページに対する更新命令の実行が待機されていることはない。従って、管理情報を含むページのキャッシュが存在する場合、検索応答部36は、記憶領域からの読み出しを行わず、既にキャッシュが存在する管理情報を参照の対象とし、処理はステップS610へ進む。一方、管理情報のキャッシュが存在しない場合、処理はステップS603へ進む。
ステップS603では、管理情報を含むページが第二のノード1B’のストレージ(データベース)に存在するか否かが判定される。上述の通り、本実施形態では、データベースの構築開始の時点で管理情報送受信処理が行われていない可能性があるため、クエリを受けた時点で、第二のノード1B’がクエリに係るページを特定するための管理情報を有していない場合がある。管理情報がストレージに存在しないと判定された場合、管理情報を第一のノード1Aから取得するために、処理はステップS605へ進む。一方、ページがストレージに存在すると判定された場合、処理はステップS604へ進む。
ステップS605では、図4に示されたデータベース送受信処理が実行される。ステップS603において管理情報がストレージに存在しないと判定された場合、要求送信部31は、クエリに応じて、第一のノード1Aに対して、管理情報に係るデータを指定してデータの送信要求を送信する。上述の通り、本実施形態では、管理情報の送受信についても、他のテーブルと同様ページ単位で行われるため、図4に示されたデータベース送受信処理によって管理情報を取得することが出来る。その後、処理はステップS602へ戻る。そして、第一のノード1Aから管理情報が取得されるまで、ステップS602からステップS605に示された処理が繰り返される。
ステップS604では、管理情報がストレージから読み出される。展開部37は、管理情報のキャッシュが存在しないが、第二のノード1B’のストレージに存在する場合、管理情報をストレージ(補助記憶装置14B)からRAM12Bに読み出す。その後、処理はステップS606へ進む。
ステップS606では、待機している更新命令の有無が判定される。第二のノード1B’は、マップを参照し、RAM12Bに読み出された管理情報のページについて待機している更新命令があるか否かを判定する。RAM12Bに読み出されたページについて待機している更新命令がマップに記録されていない場合、処理はステップS610へ進む。一方、RAM12Bに読み出したページについて待機している更新命令がマップに記録されている場合、処理はステップS607に進む。
ステップS607では、更新対象ページに関する更新命令がマップから抽出される。第二のノード1B’は、ステップS603において存在すると判定された更新対象のページ(ここでは、管理情報を含むページ)に対する更新命令を、マップから全て抽出する。このようにすることで、更新対象ページに関するマップ上の更新命令を全て実行し、更新命令が実行されたページをそのままキャッシュとして、データの検索または処理に供することが出来る。その後、処理はステップS608へ進む。
ステップS608およびステップS609では、マップに待機している更新命令および抽出された更新命令が実行され、実行済みの更新命令がマップから削除される。実行部33は、マップを参照して、RAM12Bに読み出した管理情報に係る更新命令を実行する(ステップS608)。即ち、本実施形態において、第二のノード1B’は、クエリに応じて(ステップS601)、データ受信部32によって受信された管理情報(ステップS207)をメモリに展開し(ステップS604)、マップに基づいて更新命令を管理情報に対して実行する。
ここで、実行部33は、マップに記録されている順に、待機している更新命令を実行する。そして、第二のノード1B’は、RAM12Bに読み出した管理情報について待機している更新命令を全て実行した後に、実行した更新命令に関する記録をマップから削除する(ステップS609)。その後、処理はステップS610へ進む。
ステップS610では、管理情報が参照されてページが特定される。検索応答部36は、受信されたクエリにより検索範囲に指定された記憶領域を特定するために、管理情報を参照する。本実施形態では、管理情報を参照することで、クエリを処理するために必要なデータを含むページが特定される。その後、処理は図8を用いて説明した検索要求対応処理のステップS511からステップS520に示す処理の内容と概略同様の処理へ進む。
即ち、第一のノード1Aから対象ページが取得されるまで、ステップS511からステップS514に示された処理が繰り返され、ステップS601で受け付けられたクエリへの対応は、対象ページが第一のノード1Aから取得されるまで待機される。本実施形態では、検索要求を受けて検索対象となることで、はじめてリクエスト(データ送信要求)の対象となる。その後、ステップS519およびステップS520に示された処理が実行され、クエリに対する応答が完了すると、本フローチャートに示された処理は終了する。
図12は、本実施形態において、第二のノード1B’によって実行される削除処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード1B’において、メモリに展開されてキャッシュとなっているデータの単位(本実施形態では、ページ単位)毎に、定期的に実行される。
ステップS701では、データが削除条件を満たしたか否かが判定される。削除部40は、第二のノード1B’上にあるキャッシュのうち、判定対象のページに係るキャッシュついて、所定の削除条件を満たしたか否かを判定する。ここで用いられる削除条件は、例えば、データ処理に関する時点(第一のノード1Aから取得された時点や、クエリ応答や更新等のために最後に参照された時点等)から所定の時間が経過したこと、等である。但し、削除条件は、本実施形態における例示に限定されない。削除条件を満たさないと判定された場合、判定対象のページに係るキャッシュは削除されず、本フローチャートに示された処理は終了する。一方、削除条件を満たしたと判定された場合、処理はステップS702へ進む。
ステップS702では、データが保持の対象であるか否かが判定される。判定部38は、第二のノード1B’によって保持されているデータのうち、判定対象のページについて、第二のノード1B’における保持対象とするか否かを判定する。ここで、判定のための条件は、例えば、当該データがクエリにおいて参照される頻度等に基づいて決定されてよい。例えば、参照される頻度の高いデータを保持の対象とし、頻度の低いデータを保持の対象としないことで、クエリへの応答速度を犠牲にすること無く、第二のノード1B’のストレージやメモリを節約することが出来る。また、例えば、予め管理者等によって指定されたテーブルやページを保持の対象として設定しておくことも可能である。但し、保持対象とするか否かの判定条件は、本実施形態における例示に限定されない。判定条件は、実施の形態に応じて適宜採用することが出来る。判定対象のページが、保持の対象となるための条件を満たさない場合、処理はステップS704へ進む。一方、判定対象のページが、保持の対象となるための条件を満たしている場合、処理はステップS703へ進む。
ステップS703では、データがストレージに記録される。記録部39は、判定部38によって保持対象と判定されたデータ(本実施形態では、ページ単位で判定される)を、ストレージ(本実施形態では、補助記憶装置14B)に記録する。その後、処理はステップS705へ進む。
ステップS704では、削除条件を満たしたデータがストレージから削除される。削除部40は、判定部38によって保持対象ではないと判定されたデータ(本実施形態では、ページ単位で判定される)が、第二のノード1B’のストレージに記録されている場合に、これをストレージ(本実施形態では、補助記憶装置14B)から削除する。このようにすることで、受信されてキャッシュとなる前に一旦ストレージに記録されたデータについても、ストレージから削除することが出来る。その後、処理はステップS705へ進む。
ステップS705では、削除条件を満たしたデータのキャッシュが削除される。削除部40は、削除条件を満たしたページのキャッシュを、第二のノード1B’のメモリから削除する。その後、本フローチャートに示された処理は終了する。
なお、図12に示したフローチャートでは、キャッシュとなっているデータについて削除の対象とするか否かを判定している。但し、ストレージに保持されているがキャッシュとなっていないデータについても、定期的に保持対象であるか否かを判定し、保持対象となるための条件(ステップS702を参照)を満たさなくなった場合にはストレージから削除することとしてもよい。このようにすることで、ストレージにのみ保持されているようなデータについても、時間の経過に従ってストレージから削除し、ストレージの容量を節約することが出来る。
<<第二の実施形態に係るシステムの効果>>
第二の実施形態に係るシステムによっても、第一の実施形態に係るシステムと同様の効果を得ることが出来る。また、第二の実施形態では、更に判定部38、記録部39および削除部40を備えることで、第二のノード1B’のストレージやメモリを節約しながら、ユーザー端末9に対して、あたかも第二のノード1B’がデータベース全体に係るデータを有しているかのようにサービスを提供することが出来る。
また、判定部38や削除部40によって用いられる条件を実施の形態に応じて適宜設定することで、ストレージリソースとネットワークリソースのバランスに応じて、リソースの無駄が少ないシステムを構築することが可能となる。

Claims (16)

  1. 複数のノードを有するデータベースシステムであって、
    前記複数のノードのうち、データベースの複製元である第一のノードは、
    該第一のノードによって管理されているデータベースのトランザクションログを、該トランザクションログに係る命令の順序を把握可能な識別情報とともに保持するログ保持手段と、
    前記ログ保持手段によって保持されている前記識別情報のうち、所定の時点におけるトランザクションログを示す特定識別情報を、前記複数のノードのうち、データベースの複製先である第二のノードに送信する特定識別情報送信手段と、
    少なくとも前記所定の時点より後の前記トランザクションログおよび前記識別情報を、互いに関連づけて前記第二のノードに送信するログ送信手段と、
    前記データベースによって管理されているデータを、前記所定の時点以降に、前記第二のノードに送信するデータ送信手段と、
    を備え、
    前記第二のノードは、
    前記第一のノードから、前記トランザクションログ、該トランザクションログの識別情報、前記特定識別情報および前記データを受信する受信手段と、
    受信された前記データが該第二のノードのメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行手段と、
    を備える、
    データベースシステム。
  2. 前記データ送信手段は、前記データを、前記トランザクションログに係る命令の順序が互いに依存関係にあるレコードが同一の管理単位に入るように区切られた所定の管理単位毎に送信し、
    前記実行手段は、前記トランザクションログに係る命令を、前記所定の管理単位毎に実行する、
    請求項1に記載のデータベースシステム。
  3. 受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに基づいて、命令の対象となるデータが収容された前記所定の管理単位と命令の内容との関係を示すマップを生成するマップ生成手段を更に備え、
    前記実行手段は、前記マップを参照して、前記トランザクションログに係る命令を、前記所定の管理単位毎に実行する、
    請求項2に記載のデータベースシステム。
  4. 受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに基づいて、命令の対象となるデータと命令の内容との関係を示すマップを生成するマップ生成手段を更に備え、
    前記実行手段は、前記マップを参照して、前記トランザクションログに係る命令を、命令の対象となるデータに対して実行する、
    請求項1に記載のデータベースシステム。
  5. 前記データ送信手段は、前記第一のノードのメモリに展開されてデータの検索または処理に供されている状態のデータを、前記第二のノードに送信する、
    請求項1から4の何れか一項に記載のデータベースシステム。
  6. 前記第二のノードは、
    前記第一のノードに対して、前記データベース中のデータを指定して送信要求を送信する要求送信手段を更に備え、
    前記第一のノードは、
    前記第二のノードから、該第一のノードによって管理されているデータの送信要求を受信する要求受信手段を更に備え、
    前記特定識別情報送信手段は、前記送信要求に応じて、要求されたデータに係る前記特定識別情報を前記第二のノードに送信し、
    前記データ送信手段は、前記送信要求に応じて、要求されたデータを前記第二のノードに送信する、
    請求項1から5の何れか一項に記載のデータベースシステム。
  7. 前記第二のノードは、
    ユーザー端末からの検索要求を受け付ける検索要求受付手段と、
    前記検索要求への応答を前記ユーザー端末に対して返す検索応答手段と、
    を更に備え、
    前記要求送信手段は、前記検索要求に応じて、少なくとも前記検索要求に係るデータの送信要求を、前記第一のノードに対して送信し、
    前記実行手段は、前記送信要求に応じて前記第一のノードから送信され、前記受信手段によって受信されたデータをメモリに展開し、前記トランザクションログに係る命令を該データに対して実行し、
    前記検索応答手段は、前記検索要求の結果前記第一のノードから得られ、前記トランザクションログに係る命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返す、
    請求項6に記載のデータベースシステム。
  8. 前記第二のノードは、
    ユーザー端末からの検索要求を受け付ける検索要求受付手段と、
    前記検索要求への応答を前記ユーザー端末に対して返す検索応答手段と、
    を更に備え、
    前記実行手段は、前記検索要求に応じて、前記受信手段によって受信されたデータをメモリに展開し、前記トランザクションログに係る命令を該データに対して実行し、
    前記検索応答手段は、前記検索要求に応じて前記トランザクションログに係る命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返す、
    請求項1から5の何れか一項に記載のデータベースシステム。
  9. 前記データ送信手段は、前記データベースの管理情報を、前記第二のノードに送信し、
    前記要求送信手段は、前記管理情報を参照して、前記第一のノードに対して、前記データベース中のデータを指定して送信要求を送信する、
    請求項6または7に記載のデータベースシステム。
  10. 前記第二のノードは、
    前記第一のノードから受信したデータを直接メモリに展開して、データの検索または処理に供する展開手段を更に備え、
    前記実行手段は、受信したデータが前記展開手段によってメモリに展開されたことを受けて、前記トランザクションログに係る命令を前記データに対して実行する、
    請求項1から9の何れか一項に記載のデータベースシステム。
  11. 前記特定識別情報送信手段は、前記特定識別情報として、ログ保持手段によって保持されている前記識別情報のうち、最新のトランザクションログを示す識別情報を送信する、
    請求項1から10の何れか一項に記載のデータベースシステム。
  12. 前記データは、テーブル単位またはページ単位で送受信される、
    請求項1から11の何れか一項に記載のデータベースシステム。
  13. 前記実行手段は、前記トランザクションログに係る命令を、前記識別情報によって把握される命令の順序に応じて、受信された前記データに対して実行する、
    請求項1から12の何れか一項に記載のデータベースシステム。
  14. データベースを管理する他の情報処理装置から、該データベースのトランザクションログ、該トランザクションログに係る命令の順序を把握可能な識別情報、前記識別情報のうち所定の時点におけるトランザクションログを示す特定識別情報、および前記データベースによって管理されているデータを受信する受信手段と、
    受信された前記データがメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行手段と、
    を備える情報処理装置。
  15. 複数のノードを有するデータベースシステムにおいて、
    前記複数のノードのうち、データベースの複製元である第一のノードが、
    該第一のノードによって管理されているデータベースのトランザクションログを、該トランザクションログに係る命令の順序を把握可能な識別情報とともに保持するログ保持ステップと、
    前記ログ保持ステップで保持された前記識別情報のうち、所定の時点におけるトランザクションログを示す特定識別情報を、前記複数のノードのうち、データベースの複製先である第二のノードに送信する特定識別情報送信ステップと、
    少なくとも前記所定の時点より後の前記トランザクションログおよび前記識別情報を、互いに関連づけて前記第二のノードに送信するログ送信ステップと、
    前記データベースによって管理されているデータを、前記所定の時点以降に、前記第二のノードに送信するデータ送信ステップと、
    を実行し、
    前記第二のノードが、
    前記第一のノードから、前記トランザクションログ、該トランザクションログの識別情報、前記特定識別情報および前記データを受信する受信ステップと、
    受信された前記データが該第二のノードのメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行ステップと、
    を実行する、
    方法。
  16. 複数のノードを有するデータベースシステムにおいて、
    前記複数のノードのうち、データベースの複製元である第一のノードを、
    該第一のノードによって管理されているデータベースのトランザクションログを、該トランザクションログに係る命令の順序を把握可能な識別情報とともに保持するログ保持手段と、
    前記ログ保持手段によって保持されている前記識別情報のうち、所定の時点におけるトランザクションログを示す特定識別情報を、前記複数のノードのうち、データベースの複製先である第二のノードに送信する特定識別情報送信手段と、
    少なくとも前記所定の時点より後の前記トランザクションログおよび前記識別情報を、互いに関連づけて前記第二のノードに送信するログ送信手段と、
    前記データベースによって管理されているデータを、前記所定の時点以降に、前記第二のノードに送信するデータ送信手段と、
    として機能させ、
    前記第二のノードを、
    前記第一のノードから、前記トランザクションログ、該トランザクションログの識別情報、前記特定識別情報および前記データを受信する受信手段と、
    受信された前記データが該第二のノードのメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行手段と、
    として機能させる、
    プログラム。
JP2016509681A 2014-03-25 2014-03-25 データベースシステム、情報処理装置、方法およびプログラム Active JP6257748B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/058381 WO2015145586A1 (ja) 2014-03-25 2014-03-25 データベースシステム、情報処理装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2015145586A1 JPWO2015145586A1 (ja) 2017-04-13
JP6257748B2 true JP6257748B2 (ja) 2018-01-10

Family

ID=54194184

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016509681A Active JP6257748B2 (ja) 2014-03-25 2014-03-25 データベースシステム、情報処理装置、方法およびプログラム

Country Status (4)

Country Link
US (1) US10572503B2 (ja)
EP (1) EP3125121A4 (ja)
JP (1) JP6257748B2 (ja)
WO (1) WO2015145586A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10440729B2 (en) * 2016-07-28 2019-10-08 Qualcomm Incorporated Transmission of Ultra-Reliable Low-Latency Communications (URLLC) over Time Division Duplex (TDD) using a URLLC configuration for a TDD subframe
US10552418B2 (en) * 2016-12-29 2020-02-04 Ancestry.Com Operations Inc. Optimization of first set of ordered items and delayed non-duplicated work queue
CN112581018B (zh) * 2020-12-28 2024-02-09 北京世纪互联宽带数据中心有限公司 一种流程任务管理方法、系统、装置以及存储介质

Family Cites Families (22)

* 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
JPH10187520A (ja) * 1996-11-07 1998-07-21 Fujitsu Ltd ファイル更新処理方法
US6578160B1 (en) * 2000-05-26 2003-06-10 Emc Corp Hopkinton Fault tolerant, low latency system resource with high level logging of system resource transactions and cross-server mirrored high level logging of system resource transactions
US7464113B1 (en) * 2001-05-10 2008-12-09 Oracle International Corporations Disaster recovery with bounded data loss
JP4202158B2 (ja) * 2003-03-14 2008-12-24 株式会社東芝 プラントデータ収集装置
US7257699B2 (en) 2004-07-08 2007-08-14 Sun Microsystems, Inc. Selective execution of deferred instructions in a processor that supports speculative execution
JP4929782B2 (ja) 2006-03-27 2012-05-09 富士通株式会社 ミラーサイト運用プログラム、方法及びミラーサイトサーバコンピュータ
JP4833734B2 (ja) 2006-05-19 2011-12-07 株式会社日立製作所 データベースシステム、ストレージ装置、初期コピー方法及びログ適用方法
JP5124989B2 (ja) * 2006-05-26 2013-01-23 日本電気株式会社 ストレージシステム及びデータ保護方法とプログラム
US7725764B2 (en) * 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
US8041985B2 (en) * 2006-08-11 2011-10-18 Chicago Mercantile Exchange, Inc. Match server for a financial exchange having fault tolerant operation
US7434096B2 (en) 2006-08-11 2008-10-07 Chicago Mercantile Exchange Match server for a financial exchange having fault tolerant operation
KR100926880B1 (ko) 2007-05-21 2009-11-16 엔에이치엔(주) Dbms에서의 데이터 복제 방법 및 시스템
WO2010106991A1 (ja) * 2009-03-19 2010-09-23 株式会社ココリンク データの複製管理方法及びシステム
KR101265388B1 (ko) 2009-07-02 2013-05-20 엔에이치엔비즈니스플랫폼 주식회사 고가용성 데이터베이스 관리 시스템 및 이를 이용한 데이터베이스 관리 방법
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 富士通株式会社 送信制御方法、装置及びプログラム
JP5283766B2 (ja) * 2011-07-05 2013-09-04 株式会社Murakumo データベースの管理方法、データベース管理システム、およびプログラム

Also Published As

Publication number Publication date
EP3125121A4 (en) 2017-12-06
US10572503B2 (en) 2020-02-25
EP3125121A1 (en) 2017-02-01
US20170011110A1 (en) 2017-01-12
JPWO2015145586A1 (ja) 2017-04-13
WO2015145586A1 (ja) 2015-10-01

Similar Documents

Publication Publication Date Title
US10747752B2 (en) Space management for transactional consistency of in-memory objects on a standby database
CN110502507B (zh) 一种分布式数据库的管理系统、方法、设备和存储介质
JP4727437B2 (ja) データベースを有するストレージシステムの記憶制御方法
JP4741371B2 (ja) システム、サーバ装置及びスナップショットの形式変換方法
JP2007286860A (ja) データ転送方法及び情報処理装置
CN104239575A (zh) 一种虚拟机镜像文件存储、分发方法及装置
EP2879040A1 (en) Data storage method, data storage apparatus, and storage device
US9690796B2 (en) Non-transitory computer-readable media storing file management program, file management apparatus, and file management method
JP2016536694A5 (ja)
JP6461101B2 (ja) データベースシステム、情報処理装置、方法およびプログラム
JP2006277208A (ja) バックアップシステム、プログラム及びバックアップ方法
JP6279770B2 (ja) ファイルサーバ装置
CN106528338B (zh) 一种远程数据复制方法、存储设备及存储系统
JP5721056B2 (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
JP6257748B2 (ja) データベースシステム、情報処理装置、方法およびプログラム
CN115599747A (zh) 一种分布式存储系统的元数据同步方法、系统及设备
CN113094430A (zh) 一种数据处理方法、装置、设备以及存储介质
KR101424568B1 (ko) 트랜잭션 재시작 가능한 클라이언트 장치와 데이터베이스 서버 및 방법
JP6586174B2 (ja) データベースシステム、トランザクション管理ノード、方法およびプログラム
WO2016206070A1 (zh) 一种文件更新方法及存储设备
JP2005316632A (ja) キャッシュ制御およびデータ処理システム並びにその処理プログラム
US11809385B1 (en) Efficient data backup in a distributed storage system
US10073874B1 (en) Updating inverted indices
US11269735B2 (en) Methods and systems for performing data backups
JP6292796B2 (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170718

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170810

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: 20171107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171205

R150 Certificate of patent or registration of utility model

Ref document number: 6257748

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250