(57)【要約】【課題】サーバ間通信量が少なく複数クエリ実行及びクエリ細分化実行が可能なデータ管理システム及びデータ管理方法を提案する。【解決手段】データの整合性を維持し、複数のサーバを有するデータ管理システムにおいて、それぞれのサーバはストレージを共有し、バッファを独立して備え、問い合わせにおいて、独立したバッファでストレージの同じページのデータを更新する際に、それぞれのサーバにおけるページの差分を検出し、サーバのうちの１つのページに統合し、統合したページを有するサーバが統合したページをストレージへ書き込むようにした。【選択図】図１
2018045374.tif 000002
【特許請求の範囲】
【請求項１】
データの整合性を維持し、複数のサーバを有するデータ管理システムにおいて、
それぞれの前記サーバはストレージを共有し、バッファを独立して備え、
問い合わせにおいて、独立した前記バッファで前記ストレージの同じページのデータを更新する際に、それぞれの前記サーバにおけるページの差分を検出し、前記サーバのうちの１つの前記ページに統合し、統合した前記ページを有する前記サーバが統合した前記ページを前記ストレージへ書き込む
ことを特徴とするデータ管理システム。
【請求項２】
前記データ管理システムに対する問い合わせを細分化し複数の前記サーバで実行すること、又は前記データ管理システムに対する問い合わせを単一の前記サーバで実行することを指定する機能を備える
ことを特徴とする請求項１に記載のデータ管理システム。
【請求項３】
それぞれの前記サーバが統合した前記ページの数を、前記ページを統合したそれぞれの前記サーバがカウントし、カウントした結果をまとめて表示する機能を備える
ことを特徴とする請求項１に記載のデータ管理システム。
【請求項４】
問い合わせを細分化する場合は細分化した処理が、問い合わせを細分化しない場合は問い合わせが、問い合わせの細分化をしたか否かを判定する種別情報を備える
ことを特徴とする請求項１に記載のデータ管理システム。
【請求項５】
前記サーバでの前記ページの統合の前に、前記サーバでの前記ページの更新を行う
ことを特徴とする請求項１に記載のデータ管理システム。
【請求項６】
それぞれの前記サーバが統合した前記ページの数が等しくなるようにする
ことを特徴とする請求項１に記載のデータ管理システム。
【請求項７】
前記ページの統合は前記サーバ内の更新順序の依存関係の下位の処理から実施する
ことを特徴とする請求項１に記載のデータ管理システム。
【請求項８】
データの整合性を維持し、複数のサーバを有するデータ管理システムにおけるデータ管理方法において、
それぞれの前記サーバはストレージを共有し、バッファを独立して有し、
問い合わせにおいて、独立した前記バッファで前記ストレージの同じページのデータを更新する第１のステップと、
それぞれの前記サーバにおけるページの差分を検出する第２のステップと、
前記サーバのうちの１つの前記ページに統合する第３のステップと、
統合した前記ページを有する前記サーバが統合した前記ページを前記ストレージへ書き込む第４のステップとを備える
ことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理システム及びデータ管理方法に関し、特に、データの整合性を維持するデータ管理システムに適用して好適なものである。
【背景技術】
【０００２】
近年、データ管理システムを使用する流通業や金融業では、取り扱うデータ量が日々増加しており、データを収集、蓄積及び分析する処理時間は増加している。これに対して、状況は日々変化しており、状況の変化に柔軟に対応するデータ管理システムが求められている。
【０００３】
状況の変化に柔軟に対応するために、データ管理システムをクラスタ化することが一般的に行われている。これは低コストであるハードウェアの利用が可能となったり、導入容易性が高かったりするためである。この際、データ管理システムの処理能力も一定の水準を保つ必要がある。
【０００４】
なお利用者はデータ管理システムに対して、個々の問い合わせ（以下、クエリとする）をすることで情報を取得し、取得した情報に基づいて業務を遂行する。データ管理システムをクラスタ化したうえで処理能力を一定の水準に保つためには、クエリを複数処理（以下、複数クエリ実行とする）したりクエリを細分化して処理（以下、クエリ細分化実行とする）したりする、又は各サーバに対してかかる負荷の大きさ（以下、ワークロードとする）を考慮してデータを配置しサーバ間の通信を減らす必要がある。なお、上述の処理を以下ではトランザクション又はＴｘと呼ぶ。またクエリを細分化しない場合はクエリが１つであっても、複数クエリ実行に分類する。
【０００５】
この種のデータ管理システムとして、例えば特許文献１には、データにアクセス権限を設け、複数からの更新を禁止するデータ管理システムが開示されている。このデータ管理システムにおいては、データ管理システムに備えられるそれぞれのサーバはストレージを独立して備え（以下、独立ストレージとする）、バッファも独立して備える（以下、独立バッファとする）構成である。なお、データ管理システムにおいて、データ管理システムに備えられるそれぞれのサーバがストレージを共有する構成を共有ストレージとする。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第５９６６７０６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ワークロードに対してデータ配置を適切にするというのは、現実的ではなく処理負荷が特定のサーバに集中してしまうという問題があった。また複数クエリ実行やクエリ細分化実行を行うとサーバ間通信が多発し、サーバ間通信量が膨大となってしまいデータ管理システムの処理能力を一定水準に保てないという問題があった。
【０００８】
本発明は以上の点を考慮してなされたもので、サーバ間通信量が少なく複数クエリ実行及びクエリ細分化実行が可能なデータ管理システム及びデータ管理方法を提案しようとするものである。
【課題を解決するための手段】
【０００９】
かかる課題を解決するため本発明においては、データの整合性を維持し、複数のサーバを有するデータ管理システムにおいて、それぞれのサーバはストレージを共有し、バッファを独立して備え、問い合わせにおいて、独立したバッファでストレージの同じページのデータを更新する際に、それぞれのサーバにおけるページの差分を検出し、サーバのうちの１つのページに統合し、統合したページを有するサーバが統合したページをストレージへ書き込むようにした。
【００１０】
また本発明においては、データの整合性を維持し、複数のサーバを有するデータ管理システムにおけるデータ管理方法において、それぞれのサーバはストレージを共有し、バッファを独立して有し、問い合わせにおいて、独立したバッファでストレージの同じページのデータを更新する第１のステップと、それぞれのサーバにおけるページの差分を検出する第２のステップと、サーバのうちの１つのページに統合する第３のステップと、統合したページを有するサーバが統合したページをストレージへ書き込む第４のステップとを備えるようにした。
【発明の効果】
【００１１】
本発明によれば、サーバ間通信量が少なく複数クエリ実行及びクエリ細分化実行が可能なデータ管理システム及びデータ管理方法を実現できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態によるデータ管理システムのシステム構成図である。
【図２】本発明の実施の形態によるデータ管理システムの実行画面図と管理画面図である。
【図３】本発明の実施の形態によるデータ管理システムを説明に供する概念図である。
【図４】本発明の実施の形態による最適化アルゴリズムの概念図である。
【図５】本発明の実施の形態による複数クエリ実行の際のシーケンス図である。
【図６】本発明の実施の形態によるクエリ細分化実行の際のシーケンス図である。
【図７】本発明の実施の形態によるページ統合処理で使用するデータ構造テーブルの構成を示す概念図である。
【図８】本発明の実施の形態によるページ統合処理で使用するデータ構造テーブルの構成を示す概念図である。
【図９】本発明の実施の形態によるページ統合処理で使用するデータ構造テーブルの構成を示す概念図である。
【図１０】本発明の実施の形態によるデータ管理処理の処理手順を示すフローチャートである。
【図１１】本発明の実施の形態による参照処理の処理手順を示すフローチャートである。
【図１２】本発明の実施の形態によるシングルノード参照実行処理の処理手順を示すフローチャートである。
【図１３】本発明の実施の形態によるマルチノード参照実行処理の処理手順を示すフローチャートである。
【図１４】本発明の実施の形態による更新処理の処理手順を示すフローチャートである。
【図１５】本発明の実施の形態による更新実行処理の処理手順を示すフローチャートである。
【図１６】本発明の実施の形態によるページ統合処理の処理手順を示すフローチャートである。
【図１７】本発明の実施の形態によるコミット処理の処理手順を示すフローチャートである。
【図１８】本発明の他の実施の形態によるデータ管理システムのシステム構成図である。
【発明を実施するための形態】
【００１３】
以下図面について、本発明の一実施の形態を詳述する。
【００１４】
（１）本実施の形態によるデータ管理システムの構成
図１において、１は全体として本実施の形態によるデータ管理システムを示す。このデータ管理システム１は、データベースの管理を行うサーバであるデータベースサーバ１０(例えば、データベースサーバ１０Ａ及び１０Ｂ)と、データベースによって管理されたデータを格納するストレージである外部ストレージシステム２０とを備える。
【００１５】
データベースサーバ１０は、ソフトウェアプログラムを格納するメモリ１１、ネットワークに接続するためのネットワークアダプタ１２、メモリ１１からソフトウェアプログラムを読み出し処理を実行するプロセッサ１３及びデータベースサーバ１０内のデータ保存領域であるローカルストレージデバイス１４を備える。
【００１６】
メモリ１１には、ソフトウェアプログラムとして、基本ソフトであるＯＳ（Operating System）と、一般的なアプリケーションソフトと、データベースの管理を行うソフトウェアプログラムであるデータベース管理ソフト１１０とが格納されている。
【００１７】
データベース管理ソフト１１０は、クライアントからのクエリを受信するクエリ受信部１１１、データベースサーバ１０のページ管理を行うクエリ実行計画生成部１１２、外部ストレージシステム２０にページ管理の内容をログとして書き出すログ書き出し処理を行うクエリ実行部１１３及びデータベースのバッファであるページバッファ１２１を管理するデータベースバッファ管理部１２０を備える。
【００１８】
データベースバッファ管理部１２０は、データベースサーバ１０内にレコードやインデックスなどの情報を格納するページバッファ１２１、データベースサーバ１０間のキャッシュを同期するキャッシュ同期部１２２を備える。
【００１９】
キャッシュ同期部１２２は、キャッシュ同期の全体の管理や情報のやり取りを行い、最適なページ統合担当を決定する計画部１２２Ａ、ログを作成するログ部１２２Ｂ、差分を他のデータベースサーバ１０に転送したり、受信した情報を基に統合を行ったりする実行部１２２Ｃ及び不要なページなどの情報を削除するバッファクリーン処理を行うクリーン部１２２Ｄを備える。
【００２０】
なお計画部１２２Ａは、キャッシュ同期の全体の管理を行う管理部、情報のやり取りを行う情報部及び最適なページ統合担当を決定する最適化部を備える。また、実行部１２２Ｃは差分を他のデータベースサーバ１０に転送する差分部及び受信した情報を基に統合部を備える。
【００２１】
外部ストレージシステム２０は、クエリを実行した結果のデータベースを格納するストレージデバイス２１、データベースサーバ１０との通信を行うためのネットワークアダプタ２２及びストレージデバイス２１及びネットワークアダプタ２２を制御するコントローラ２３を備える。なお、データベースは、データである、インデックスと複数のレコードを有するテーブルと、を備える。
【００２２】
（２）データ管理システムの実行画面及び管理画面
図２は、クエリである参照処理とクエリである更新処理とを複数クエリ実行により処理した場合の実行画面を示している。あるクライアントからの複数のクエリを処理しており、参照処理結果２０１と更新処理結果２０２が、あるクライアントの端末に表示されている。
【００２３】
クエリでは、参照処理結果２０１及び更新処理結果２０２に示すように、「ＴＸ＿ＳＩＮＧＬＥ＿ＮＯＤＥ（複数クエリ実行）」などのヒント句による実行方法の指定が可能である。
【００２４】
また、管理用の端末には、データベースサーバ１０毎のページ統合結果２０３が表示される。図２においては、例えばデータベースサーバ１０Ａを第０のノードとし、データベースサーバ１０Ｂを第１のノードとしている。
【００２５】
（３）ページ統合処理の概要
図３はクエリ細分化実行の際の、データベースサーバ１０Ａ及び１０Ｂで統合されるページバッファ１２１のページを示した概念図である。統合された各ページは外部ストレージシステム２０へログとして書き出される。なお、複数クエリ実行に関しても、クライアントＡからのＴｘ（以下、ＴｘＡとする）からＴｘＡ−１及びＴｘＡ−２が細分化する代わりに、クライアントＡからＴｘＡ、クライアントＢからのＴｘ（以下、ＴｘＢとする）のクエリが出る点を除いて、図３と同様であるため、説明を省略する。ＴｘＡ−１がデータベースサーバ１０Ａで処理されるようにＴｘＡはデータベースサーバ１０Ａで処理され、ＴｘＡ−２がデータベースサーバ１０Ｂで処理されるようにＴｘＢはデータベースサーバ１０Ｂで処理される。
【００２６】
図３においては、クエリ細分化実行により、第２のページ、第３のページ、第７のページ、第１９のページ、第３１のページ及び第３７のページが処理される。ここで各ページの差分を検出し、処理量がなるべく一定になるように、第３のページ、第１９のページ及び第３７のページの３ページに関しては、データベースサーバ１０Ａで処理を行い、第２のページ、第７のページ及び第３１のページの３ページに関しては、データベースサーバ１０Ｂで処理を行う。
【００２７】
（４）最適化アルゴリズム
データベースサーバ１０Ａ及び１０Ｂにおいて、どのようにページ統合を行うかのアルゴリズムを図４に示す。図４に示すアルゴリズムは、データベースサーバ１０Ａ及び１０Ｂ間の通信量を最小化することを目的とし、更新するページが最多であるノードを探索する。
【００２８】
更新するページが最多であるノードの探索を２分探索のような計算量がＬｏｇＮになるアルゴリズムで行う。本アルゴリズムでは差分量やページ情報などを入力とする。図４の例では、第１のノードの情報量が２００メガバイト(以下、ＭＢとする)、第２のノードの情報量が５０ＭＢ、第３のノードの情報量が１００ＭＢ、第４のノードの情報量が３００ＭＢとなっている。なお図４における第１のノード、第２のノード、第３のノード及び第４のノードなどのノードは、サーバ及びデータベースサーバ１０を指す。
【００２９】
図４の例では、第１階層左側では、情報量２００ＭＢの第１のノードと情報量５０ＭＢの第２のノードとの情報量の大きい方である第１のノードが選択され第２階層の左側のノードとなる。第１階層右側では、第３のノードと第４のノードとの情報量の大きい方である第４のノードが選択され第２階層の右側のノードとなる。同様に、第２階層では、第１のノードと第４のノードとの情報量の大きい方である第４のノードが選択される。第３階層として、第４のノードが選択され、本アルゴリズムは第４のノードをページ統合の担当ノード（マスタノード）として出力する。
【００３０】
（５）複数クエリ実行の際の処理フロー
図５に複数クエリ実行の際のクライアント、データベースサーバ１０及び外部ストレージシステム２０間の処理の流れを示す。図５では上から下に向かって時系列順に処理の流れを示している。
【００３１】
クライアントＡの端末はＴｘＡというクエリの開始指示を、データベースサーバ１０Ａのクエリ受信部１１１を介してデータベースサーバ１０Ａのクエリ実行部１１３へ送信し、データベースサーバ１０Ａのクエリ実行部１１３はクライアントＡの端末へ肯定応答を返送する（ＳＰ５０１）。
【００３２】
クライアントＡの端末からＴｘＡというクエリの開始指示がデータベースサーバ１０Ａのクエリ実行部１１３に送信される際に、クライアントＢの端末はＴｘＢというクエリの開始指示をデータベースサーバ１０Ａのクエリ実行部１１３へ送信し、データベースサーバ１０Ａのクエリ実行部１１３はクライアントＢの端末へ肯定応答を返送する（ＳＰ５０２）。
【００３３】
データベースサーバ１０Ａのクエリ実行部１１３からクライアントＡの端末へ肯定応答が返送されると、クライアントＡの端末はデータベースサーバ１０Ａのクエリ実行部１１３へレコード追加指示を送信する。
【００３４】
レコード追加指示を受信するとデータベースサーバ１０Ａのクエリ実行部１１３は、レコード情報が格納されている第１９のページ及びインデックス情報が格納されている第３１のページの更新指示をデータベースサーバ１０Ａのクエリ実行計画生成部１１２へ送信する。
【００３５】
更新指示を受信するとデータベースサーバ１０Ａのクエリ実行計画生成部１１２は、データベースサーバ１０Ａのクエリ実行部１１３へ肯定応答を返送する。肯定応答を受信すると、データベースサーバ１０Ａのクエリ実行部１１３は、データベースサーバ１０Ａの計画部１２２Ａの管理部へ第１９のページ及び第３１のページの保存指示を送信する。例えば、データベースサーバ１０Ａでは、第１９のページの第２６のレコードの後に第３０のレコードを追加する。
【００３６】
保存指示を受信するとデータベースサーバ１０Ａの計画部１２２Ａの管理部は、データベースサーバ１０Ａのクエリ実行部１１３へ肯定応答を返送する。肯定応答を受信すると、データベースサーバ１０Ａのクエリ実行部１１３はクライアントＡの端末へ肯定応答を返送する（ＳＰ５０３）。
【００３７】
データベースサーバ１０Ａのクエリ実行部１１３からクライアントＢの端末へ肯定応答が返送されると、クライアントＢの端末はデータベースサーバ１０Ｂのクエリ実行部１１３へレコード追加指示を送信する。
【００３８】
レコード追加指示を受信するとデータベースサーバ１０Ｂのクエリ実行部１１３は、レコード情報が格納されている第１９のページ及びインデックス情報が格納されている第３１のページの更新指示をデータベースサーバ１０Ｂのクエリ実行計画生成部１１２へ送信する。
【００３９】
更新指示を受信するとデータベースサーバ１０Ｂのクエリ実行計画生成部１１２は、データベースサーバ１０Ｂのクエリ実行部１１３へ肯定応答を返送する。肯定応答を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３は、データベースサーバ１０Ｂの計画部１２２Ａの管理部へ第１９のページ及び第３１のページの保存指示を送信する。例えば、データベースサーバ１０Ｂでは、第１９のページの第２６のレコードの後に第３１のレコードを追加する。
【００４０】
保存指示を受信するとデータベースサーバ１０Ｂの計画部１２２Ａの管理部は、データベースサーバ１０Ｂのクエリ実行部１１３へ肯定応答を返送する。肯定応答を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３はクライアントＢの端末へ肯定応答を返送する（ＳＰ５０４）。
【００４１】
ステップＳＰ５０３でのデータベースサーバ１０Ａのクエリ実行部１１３からの肯定応答が返送されると、クライアントＡの端末はデータベースサーバ１０Ａのクエリ実行部１１３へコミット指示を送信する（ＳＰ５０５Ｓ）。
【００４２】
クライアントＡの端末からのコミット指示を受信すると、データベースサーバ１０Ａのクエリ実行部１１３はデータベースサーバ１０Ａの計画部１２２Ａの管理部へ同期指示を送信する。データベースサーバ１０Ａのクエリ実行部１１３からの同期指示を受信すると、データベースサーバ１０Ａの計画部１２２Ａの管理部はページ情報収集指示を、データベースサーバ１０Ａの計画部１２２Ａの情報部へ送信する。
【００４３】
データベースサーバ１０Ａの計画部１２２Ａの管理部からページ情報収集指示を受信すると、データベースサーバ１０Ａの計画部１２２Ａの情報部はデータベースサーバ１０Ｂの計画部１２２Ａの情報部からページ情報取得を行い、肯定応答をデータベースサーバ１０Ｂの計画部１２２Ａの情報部から受信する（ＳＰ５０６）。
【００４４】
データベースサーバ１０Ｂの計画部１２２Ａの情報部からの肯定応答を受信すると、データベースサーバ１０Ａの計画部１２２Ａの情報部は、ページ情報収集指示に対する肯定応答をデータベースサーバ１０Ａの計画部１２２Ａの管理部へ返送する。
【００４５】
データベースサーバ１０Ａの計画部１２２Ａの情報部からの肯定応答が返送されると、データベースサーバ１０Ａの計画部１２２Ａの管理部は、マスタノード選択指示をデータベースサーバ１０Ａの計画部１２２Ａの最適化部へ送信する。なお、マスタノードとは、Ｔｘを行う基となるノードであり、スレーブノードに対して指示を行う。
【００４６】
データベースサーバ１０Ａの計画部１２２Ａの管理部からマスタノード選択指示を受信すると、データベースサーバ１０Ａの計画部１２２Ａの最適化部は上述の最適化アルゴリズムを用いてマスタノードを決定し、マスタノード情報をデータベースサーバ１０Ｂの計画部１２２Ａの最適化部へ送信する。データベースサーバ１０Ａの計画部１２２Ａの最適化部からマスタノード情報を受信すると、データベースサーバ１０Ｂの計画部１２２Ａの最適化部は肯定応答をデータベースサーバ１０Ｂの計画部１２２Ａの最適化部へ返送する（ＳＰ５０７）。
【００４７】
なお、ここでは、第１９のページはデータベースサーバ１０Ａでページ統合を行う（第１９のページのページ統合ではマスタノードはデータベースサーバ１０Ａとなる）。
【００４８】
データベースサーバ１０Ｂの計画部１２２Ａの最適化部からの肯定応答が返送されると、データベースサーバ１０Ａの計画部１２２Ａの最適化部は、データベースサーバ１０Ａの計画部１２２Ａの管理部へマスタノード選択指示に対する肯定応答を返送する。
【００４９】
データベースサーバ１０Ａの計画部１２２Ａの最適化部からのマスタノード選択指示に対する肯定応答が返送されると、データベースサーバ１０Ａの計画部１２２Ａの管理部は、ページ統合指示をデータベースサーバ１０Ａの実行部１２２Ｃの差分部へ送信する。
【００５０】
データベースサーバ１０Ａの計画部１２２Ａの管理部からのページ統合指示を受信すると、データベースサーバ１０Ａの実行部１２２Ｃの差分部は、上述の最適化アルゴリズムなどの計算方法を選択し、データベースサーバ１０Ｂの実行部１２２Ｃの差分部へ、第１９のページの差分実行指示を送信する。
【００５１】
データベースサーバ１０Ａの実行部１２２Ｃの差分部からの第１９のページの差分実行指示を受信すると、データベースサーバ１０Ｂの実行部１２２Ｃの差分部は、データベースサーバ１０Ｂで更新された第１９のページの差分情報を、データベースサーバ１０Ａの実行部１２２Ｃの統合部へ送信する（ＳＰ５０８）。例としては、第２６のレコードの次に第３１のレコードが保存されているという情報が差分情報となる。
【００５２】
データベースサーバ１０Ｂの実行部１２２Ｃの差分部からの差分情報を受信すると、データベースサーバ１０Ａの実行部１２２Ｃの統合部は、競合部をチェックし、統合を行う。例としては、データベースサーバ１０Ａでは、第２６のレコードの次に第３０のレコードが保存されているので、第３０のレコードの次に第３１のレコードを保存する。
【００５３】
統合を行うと、データベースサーバ１０Ａの実行部１２２Ｃの統合部は、統合後の新しいアドレスをデータベースサーバ１０Ｂの実行部１２２Ｃの統合部へ送信する。アドレスとは、例えば、第２６のレコード、第３０のレコード及び第３１のレコードの順に第１９のページに保存されているという情報を指す。つまり、第１９のページのどこにレコードが存在しているかの情報を指す。
【００５４】
データベースサーバ１０Ａの実行部１２２Ｃの統合部からの新しいアドレスを受信すると、データベースサーバ１０Ｂの実行部１２２Ｃの統合部は第３１のページで使用するアドレスを新しいアドレスに変更する。第３１のページで使用するアドレスを新しいアドレスに変更すると、データベースサーバ１０Ｂの実行部１２２Ｃの統合部は、データベースサーバ１０Ａの実行部１２２Ｃの差分部へ新しいアドレスの受信に対する肯定応答を返送する（ＳＰ５０９）。
【００５５】
新しいアドレスの受信に対する肯定応答を受信すると、データベースサーバ１０Ａの実行部１２２Ｃの差分部は、データベースサーバ１０Ｂの実行部１２２Ｃの差分部へ第３１のページの遠隔差分処理実行指示を送信する。
【００５６】
第３１のページの遠隔差分処理実行指示を受信すると、データベースサーバ１０Ｂの実行部１２２Ｃの差分部は、第３１のページの差分処理実行指示を、データベースサーバ１０Ａの実行部１２２Ｃの差分部へ送信する（ＳＰ５１０）。
【００５７】
第３１のページの差分処理実行指示を受信すると、データベースサーバ１０Ａの実行部１２２Ｃの差分部は、データベースサーバ１０Ａで更新された第３１のページの差分情報を、データベースサーバ１０Ｂの実行部１２２Ｃの統合部へ送信する。例としては、第２６のインデックスの次に第３０のインデックスが保存されているという情報が差分情報となる。
【００５８】
データベースサーバ１０Ａで更新された第３１のページの差分情報を受信すると、データベースサーバ１０Ｂの実行部１２２Ｃの統合部は、競合部をチェックし、統合を行う。例としては、データベースサーバ１０Ｂでは、第２６のインデックスの次に第３１のインデックスが保存されているので、第２６のインデックスと第３１のインデックスとの間に第３０のインデックスを保存する。上述の通り、第３１のページで使用するアドレスを新しいアドレスに変更しているため、第２６のインデックス、第３０のインデックス及び第３１のインデックスの順の保存となる。
【００５９】
統合を行うと、データベースサーバＢの実行部１２２Ｃの統合部は、統合後の新しいアドレスをデータベースサーバ１０Ａの実行部１２２Ｃの差分部へ送信する（ＳＰ５１１）。アドレスとは、例えば、第２６のインデックス、第３０のインデックス及び第３１のインデックスの順に第３１のページに保存されているという情報を指す。つまり、第３１のページのどこにインデックスが存在しているかの情報を指す。
【００６０】
データベースサーバＢの実行部１２２Ｃの統合部からの統合後の新しいアドレスを受信すると、データベースサーバ１０Ａの実行部１２２Ｃの差分部は新しいアドレスの受信に対する肯定応答をデータベースサーバＢの実行部１２２Ｃの差分部へ送信する。
【００６１】
データベースサーバ１０Ａの実行部１２２Ｃの差分部からの新しいアドレスの受信に対する肯定応答を受信すると、データベースサーバＢの実行部１２２Ｃの差分部は返答肯定応答を返送する（ＳＰ５１２）。
【００６２】
データベースサーバＢの実行部１２２Ｃの差分部からの返答肯定応答を受信すると、データベースサーバ１０Ａの実行部１２２Ｃの差分部は上述のデータベースサーバ１０Ａの計画部１２２Ａの管理部からのページ統合指示に対する肯定応答を、データベースサーバ１０Ａの計画部１２２Ａの管理部へ返送する。
【００６３】
データベースサーバ１０Ａの実行部１２２Ｃの差分部からの肯定応答を受信すると、データベースサーバ１０Ａの計画部１２２Ａの管理部は、ログ書き出し指示をデータベースサーバ１０Ａのログ部１２２Ｂの履歴部へ送信する。
【００６４】
データベースサーバ１０Ａの計画部１２２Ａの管理部からのログ書き出し指示を受信すると、データベースサーバ１０Ａのログ部１２２Ｂの履歴部は、データベースサーバ１０Ｂのログ部１２２Ｂの履歴部へログ書き出し指示を送信する（ＳＰ５１３Ｓ）。
【００６５】
またデータベースサーバ１０Ａの計画部１２２Ａの管理部からのログ書き出し指示を受信すると、データベースサーバ１０Ａのログ部１２２Ｂの履歴部は、データベースサーバ１０Ａのログ部１２２Ｂの書き出し部へログ書き出し指示を送信する。
【００６６】
データベースサーバ１０Ａのログ部１２２Ｂの履歴部からのログ書き出し指示を受信すると、データベースサーバ１０Ａのログ部１２２Ｂの書き出し部は、外部ストレージシステム２０のネットワークアダプタ２２を介して外部ストレージシステム２０のコントローラ２３へログ書き出し指示を送信する。
【００６７】
データベースサーバ１０Ａのログ部１２２Ｂの書き出し部からのログ書き出し指示を受信すると、外部ストレージシステム２０のコントローラ２３は、外部ストレージシステム２０のストレージデバイス２１のデータベースを更新し、外部ストレージシステム２０のネットワークアダプタ２２を介して、データベースサーバ１０Ａのログ部１２２Ｂの書き出し部へログ書き出し指示に対する肯定応答を返送する（ＳＰ５１４）。
【００６８】
外部ストレージシステム２０のコントローラ２３からログ書き出し指示に対する肯定応答が返送されると、データベースサーバ１０Ａのログ部１２２Ｂの書き出し部はデータベースサーバ１０Ａのログ部１２２Ｂの履歴部へログ書き出し指示に対する肯定応答を返送する。
【００６９】
データベースサーバ１０Ａのログ部１２２Ｂの履歴部からのログ書き出し指示を受信すると、データベースサーバ１０Ｂのログ部１２２Ｂの履歴部は、データベースサーバ１０Ｂのログ部１２２Ｂの書き出し部へログ書き出し指示を送信する。
【００７０】
データベースサーバ１０Ｂのログ部１２２Ｂの履歴部からのログ書き出し指示を受信すると、データベースサーバ１０Ｂのログ部１２２Ｂの書き出し部は、外部ストレージシステム２０のネットワークアダプタ２２を介して外部ストレージシステム２０のコントローラ２３へログ書き出し指示を送信する。
【００７１】
データベースサーバ１０Ｂのログ部１２２Ｂの書き出し部からのログ書き出し指示を受信すると、外部ストレージシステム２０のコントローラ２３は、外部ストレージシステム２０のストレージデバイス２１のデータベースを更新し、外部ストレージシステム２０のネットワークアダプタ２２を介して、データベースサーバ１０Ｂのログ部１２２Ｂの書き出し部へ肯定応答を返送する（ＳＰ５１５）。
【００７２】
外部ストレージシステム２０のコントローラ２３からログ書き出し指示に対する肯定応答が返送されると、データベースサーバ１０Ｂのログ部１２２Ｂの書き出し部はデータベースサーバ１０Ｂのログ部１２２Ｂの履歴部へログ書き出し指示に対する肯定応答を返送する。
【００７３】
データベースサーバ１０Ｂのログ部１２２Ｂの書き出し部からのログ書き出し指示に対する肯定応答を受信すると、データベースサーバ１０Ｂのログ部１２２Ｂの履歴部は、データベースサーバ１０Ａのログ部１２２Ｂの履歴部へログ書き出し指示に対する肯定応答を返送する。
【００７４】
データベースサーバ１０Ａのログ部１２２Ｂの書き出し部及びデータベースサーバ１０Ｂのログ部１２２Ｂの履歴部からの、ログ書き出し指示に対する肯定応答を受信すると、データベースサーバ１０Ａのログ部１２２Ｂの履歴部は、データベースサーバ１０Ａの計画部１２２Ａの管理部へログ書き出し指示に対する肯定応答を返送する（ＳＰ５１３Ｒ）。
【００７５】
データベースサーバ１０Ａのログ部１２２Ｂの履歴部からの肯定応答を受信すると、データベースサーバ１０Ａの計画部１２２Ａの管理部は、データベースサーバ１０Ａのクリーン部１２２Ｄへバッファクリーン指示を送信する。
【００７６】
データベースサーバ１０Ａの計画部１２２Ａの管理部からバッファクリーン指示を受信すると、データベースサーバ１０Ａのクリーン部１２２Ｄは、データベースサーバ１０Ａのクエリ実行計画生成部１１２へ、バッファクリーン指示を送信する。
【００７７】
データベースサーバ１０Ａのクリーン部１２２Ｄからのバッファクリーン指示を受信すると、データベースサーバ１０Ａのクエリ実行計画生成部１１２は、データベースサーバ１０Ａの不要なページを削除する。不要なページとは、競合しているページであり、別のサーバで統合を行うページである。例えば、データベースサーバ１０Ａでは、第３１のページを削除する。これにより第３１のページの処理をするＴｘＡを中断（アボート）する。アボート対象には、変更後アドレスとしてＮＵＬＬを送信する。
【００７８】
不要なページを削除すると、データベースサーバ１０Ａのクエリ実行計画生成部１１２は肯定応答を、データベースサーバ１０Ａのクリーン部１２２Ｄへ返送する。
【００７９】
また、データベースサーバ１０Ａの計画部１２２Ａの管理部からバッファクリーン指示を受信すると、データベースサーバ１０Ａのクリーン部１２２Ｄは、データベースサーバ１０Ｂのクリーン部１２２Ｄへ、バッファクリーン指示を送信する。
【００８０】
データベースサーバ１０Ａのクリーン部１２２Ｄからのバッファクリーン指示を受信すると、データベースサーバ１０Ｂのクリーン部１２２Ｄは、データベースサーバ１０Ｂのクエリ実行計画生成部１１２へ、バッファクリーン指示を送信する。
【００８１】
データベースサーバ１０Ｂのクリーン部１２２Ｄからのバッファクリーン指示を受信すると、データベースサーバ１０Ｂのクエリ実行計画生成部１１２は、データベースサーバ１０Ｂの不要なページを削除する。不要なページとは、競合しているページであり、別のサーバで統合を行うページである。例えば、データベースサーバ１０Ｂでは、第１９のページを削除する。これにより、第１９のページの処理をするＴｘＢを中断（アボート）する。
【００８２】
不要なページを削除すると、データベースサーバ１０Ｂのクエリ実行計画生成部１１２は肯定応答を、データベースサーバ１０Ｂのクリーン部１２２Ｄへ返送する。データベースサーバ１０Ｂのクエリ実行計画生成部１１２からの肯定応答を受信すると、データベースサーバ１０Ｂのクリーン部１２２Ｄは肯定応答を、データベースサーバ１０Ａのクリーン部１２２Ｄへ返送する（ＳＰ５１６）。
【００８３】
データベースサーバ１０Ａのクエリ実行計画生成部１１２及びデータベースサーバ１０Ｂのクリーン部１２２Ｄからの肯定応答を受信すると、データベースサーバ１０Ａのクリーン部１２２Ｄは、肯定応答をデータベースサーバ１０Ａの計画部１２２Ａの管理部へ返送する。
【００８４】
データベースサーバ１０Ａのクリーン部１２２Ｄから肯定応答を受信すると、データベースサーバ１０Ａの計画部１２２Ａの管理部は肯定応答を、データベースサーバ１０Ａのクエリ実行部１１３へ返送する。
【００８５】
データベースサーバ１０Ａの計画部１２２Ａの管理部からの肯定応答を受信すると、データベースサーバ１０Ａのクエリ実行部１１３はコミット指示に対する肯定応答を、クライアントＡの端末へ返送する（ＳＰ５０５Ｒ）。
【００８６】
ＴｘＡのコミットが終了すると（ＳＰ５０５Ｒ）、ＴｘＢのコミットを開始する。つまり、クライアントＢの端末はデータベースサーバ１０Ｂのクエリ実行部１１３へコミット指示を送信する（ＳＰ５１７Ｓ）。
【００８７】
クライアントＢの端末からのコミット指示を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３はデータベースサーバ１０Ｂの計画部１２２Ａの管理部へ同期指示を送信する。データベースサーバ１０Ｂのクエリ実行部１１３からの同期指示を受信すると、データベースサーバ１０Ｂの計画部１２２Ａの管理部はページ情報収集指示を、データベースサーバ１０Ｂの計画部１２２Ａの情報部へ送信する。
【００８８】
データベースサーバ１０Ｂの計画部１２２Ａの管理部からページ情報収集指示を受信すると、データベースサーバ１０Ａの計画部１２２Ａの情報部はデータベースサーバ１０Ａの計画部１２２Ａの情報部からページ情報取得を行い、肯定応答をデータベースサーバ１０Ａの計画部１２２Ａの情報部から受信する（ＳＰ５１８）。
【００８９】
データベースサーバ１０Ａの計画部１２２Ａの情報部からの肯定応答を受信すると、データベースサーバ１０Ｂの計画部１２２Ａの情報部は、ページ情報収集指示に対する肯定応答をデータベースサーバ１０Ｂの計画部１２２Ａの管理部へ返送する。
【００９０】
データベースサーバ１０Ｂの計画部１２２Ａの情報部からの肯定応答が返送されると、データベースサーバ１０Ｂの計画部１２２Ａの管理部は、マスタノード選択指示をデータベースサーバ１０Ｂの計画部１２２Ａの最適化部へ送信する。
【００９１】
データベースサーバ１０Ｂの計画部１２２Ａの管理部からマスタノード選択指示を受信すると、データベースサーバ１０Ｂの計画部１２２Ａの最適化部は上述の最適化アルゴリズムを用いてマスタノードを決定し、マスタノード情報をデータベースサーバ１０Ａの計画部１２２Ａの最適化部へ送信する。データベースサーバ１０Ｂの計画部１２２Ａの最適化部からマスタノード情報を受信すると、データベースサーバ１０Ａの計画部１２２Ａの最適化部は肯定応答をデータベースサーバ１０Ｂの計画部１２２Ａの最適化部へ返送する（ＳＰ５１９）。
【００９２】
なお、第３１のページはデータベースサーバ１０Ｂでページ統合を行う（第３１のページのページ統合ではマスタノードはデータベースサーバ１０Ｂとなる）。
【００９３】
データベースサーバ１０Ａの計画部１２２Ａの最適化部からの肯定応答が返送されると、データベースサーバ１０Ｂの計画部１２２Ａの最適化部は、データベースサーバ１０Ｂの計画部１２２Ａの管理部へマスタノード選択指示に対する肯定応答を返送する。
【００９４】
データベースサーバ１０Ｂの計画部１２２Ａの最適化部からのマスタノード選択指示に対する肯定応答が返送されると、データベースサーバ１０Ｂの計画部１２２Ａの管理部は、ページ統合指示をデータベースサーバ１０Ｂの実行部１２２Ｃの差分部へ送信する。
【００９５】
データベースサーバ１０Ｂの計画部１２２Ａの管理部からのページ統合指示を受信すると、データベースサーバ１０Ｂの実行部１２２Ｃの差分部は、データベースサーバ１０Ｂの実行部１２２Ｃの管理部へ、肯定応答を送信する。なお、第１９のページの差分実行は既にＴｘＡにおいて終了しているため、他の処理をせず肯定応答の送信のみとなる。
【００９６】
データベースサーバ１０Ｂの実行部１２２Ｃの差分部からの肯定応答を受信すると、データベースサーバ１０Ｂの実行部１２２Ｃの管理部は、ログ書き出し処理とバッファクリーン処理とを実行せずに（既にＴｘＡにおいて終了しているため）、データベースサーバ１０Ｂのクエリ実行部１１３へ肯定応答を返送する。
【００９７】
データベースサーバ１０Ｂの実行部１２２Ｃの管理部からの肯定応答を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３は、クライアントＢの端末へ肯定応答を返送する（ＳＰ５１７Ｒ）。
【００９８】
（６）クエリ細分化実行の際の処理フロー
図６にクエリ細分化実行の際のクライアント、データベースサーバ１０及び外部ストレージシステム２０間の処理の流れを示す。図６では上から下に向かって時系列順に処理の流れを示している。
【００９９】
なお、ＴｘＡの代わりにＴｘＡ−１、ＴｘＢの代わりにＴｘＡ−２としている点、及び、ＳＰ５０５Ｓでコミット指示を送信する点を除いては、図５におけるＳＰ５０５Ｓ以降の処理と図６におけるＳＰ６０７Ｓ以降の処理は同等であるため、ＳＰ６０７Ｓ以降の処理の説明を省略する。
【０１００】
クライアントＡの端末のＴｘＡ−１処理部はＴｘＡを分割した一方のＴｘＡ−１というクエリの開始指示をデータベースサーバ１０Ａのクエリ実行部１１３へ送信し、データベースサーバ１０Ａのクエリ実行部１１３はクライアントＡの端末のＴｘＡ−１処理部へ肯定応答を返送する（ＳＰ６０１）。
【０１０１】
クライアントＡの端末のＴｘＡ−１処理部からＴｘＡ−１というクエリの開始指示がデータベースサーバ１０Ａのクエリ実行部１１３に送信される際に、クライアントＡの端末のＴｘＡ−２処理部はＴｘＡを分割したもう一方のＴｘＡ−２というクエリの開始指示をデータベースサーバ１０Ａのクエリ実行部１１３へ送信し、データベースサーバ１０Ａのクエリ実行部１１３はクライアントＡの端末のＴｘＡ−２処理部へ肯定応答を返送する（ＳＰ６０２）。
【０１０２】
データベースサーバ１０Ａのクエリ実行部１１３からクライアントＡの端末へ肯定応答が返送されると、クライアントＡの端末のＴｘＡ−１処理部はデータベースサーバ１０Ａのクエリ実行部１１３へレコード追加指示を送信する（ＳＰ６０３Ｓ）。
【０１０３】
レコード追加指示を受信するとデータベースサーバ１０Ａのクエリ実行部１１３は、レコード情報が格納されている第１９のページ及びインデックス情報が格納されている第３１のページの更新指示をデータベースサーバ１０Ａのクエリ実行計画生成部１１２へ送信する。
【０１０４】
更新指示を受信するとデータベースサーバ１０Ａのクエリ実行計画生成部１１２は、データベースサーバ１０Ａのクエリ実行部１１３へ肯定応答を返送する。肯定応答を受信すると、データベースサーバ１０Ａのクエリ実行部１１３は、データベースサーバ１０Ａの計画部１２２Ａの管理部へ第１９のページ及び第３１のページの保存指示を送信する。例えば、データベースサーバ１０Ａでは、第１９のページの第２６のレコードの後に第３０のレコードを追加する。
【０１０５】
保存指示を受信するとデータベースサーバ１０Ａの計画部１２２Ａの管理部は、データベースサーバ１０Ａのクエリ実行部１１３へ肯定応答を返送する。
【０１０６】
レコード追加指示を受信するとデータベースサーバ１０Ａのクエリ実行部１１３は、ＴｘＡの分割指示を、データベースサーバ１０Ｂのクエリ実行部１１３へ送信する。
【０１０７】
データベースサーバ１０Ａのクエリ実行部１１３からのＴｘＡの分割指示を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３はレコード情報が格納されている第１９のページ及びインデックス情報が格納されている第３１のページの更新指示をデータベースサーバ１０Ｂのクエリ実行計画生成部１１２へ送信する。
【０１０８】
更新指示を受信するとデータベースサーバ１０Ｂのクエリ実行計画生成部１１２は、データベースサーバ１０Ｂのクエリ実行部１１３へ肯定応答を返送する。肯定応答を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３は、データベースサーバ１０Ｂの計画部１２２Ａの管理部へ第１９のページ及び第３１のページの保存指示を送信する。すでに保存指示が出ている場合は、レコードの追加などの処理は行わない。
【０１０９】
保存指示を受信するとデータベースサーバ１０Ｂの計画部１２２Ａの管理部は、データベースサーバ１０Ｂのクエリ実行部１１３へ肯定応答を返送する。
【０１１０】
データベースサーバ１０Ｂの計画部１２２Ａの管理部からの肯定応答を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３は、ＴｘＡの分割指示に対する肯定応答を、データベースサーバ１０Ａのクエリ実行部１１３へ返送する（ＳＰ６０４）。
【０１１１】
データベースサーバ１０Ａの計画部１２２Ａの管理部及びデータベースサーバ１０Ｂのクエリ実行部１１３からの肯定応答を受信すると、データベースサーバ１０Ａのクエリ実行部１１３はクライアントＡの端末のＴｘＡ−１処理部へ肯定応答を返送する（ＳＰ６０３Ｒ）。
【０１１２】
データベースサーバ１０Ａのクエリ実行部１１３からクライアントＡの端末のＴｘＡ−２処理部へ肯定応答が返送されると、クライアントＡの端末のＴｘＡ−２処理部はデータベースサーバ１０Ｂのクエリ実行部１１３へレコード追加指示を送信する（ＳＰ６０５Ｓ）。
【０１１３】
レコード追加指示を受信するとデータベースサーバ１０Ｂのクエリ実行部１１３は、レコード情報が格納されている第１９のページ及びインデックス情報が格納されている第３１のページの更新指示をデータベースサーバ１０Ｂのクエリ実行計画生成部１１２へ送信する。
【０１１４】
更新指示を受信するとデータベースサーバ１０Ｂのクエリ実行計画生成部１１２は、データベースサーバ１０Ｂのクエリ実行部１１３へ肯定応答を返送する。肯定応答を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３は、データベースサーバ１０Ｂの計画部１２２Ａの管理部へ第１９のページ及び第３１のページの保存指示を送信する。例えば、データベースサーバ１０Ｂでは、第１９のページの第２６のレコードの後に第３１のレコードを追加する。
【０１１５】
保存指示を受信するとデータベースサーバ１０Ｂの計画部１２２Ａの管理部は、データベースサーバ１０Ｂのクエリ実行部１１３へ肯定応答を返送する。
【０１１６】
レコード追加指示を受信するとデータベースサーバ１０Ｂのクエリ実行部１１３は、ＴｘＡの分割指示を、データベースサーバ１０Ａのクエリ実行部１１３へ送信する。
【０１１７】
データベースサーバ１０Ｂのクエリ実行部１１３からのＴｘＡの分割指示を受信すると、データベースサーバ１０Ａのクエリ実行部１１３はレコード情報が格納されている第１９のページ及びインデックス情報が格納されている第３１のページの更新指示をデータベースサーバ１０Ｂのクエリ実行計画生成部１１２へ送信する。
【０１１８】
更新指示を受信するとデータベースサーバ１０Ａのクエリ実行計画生成部１１２は、データベースサーバ１０Ａのクエリ実行部１１３へ肯定応答を返送する。肯定応答を受信すると、データベースサーバ１０Ａのクエリ実行部１１３は、データベースサーバ１０Ａの計画部１２２Ａの管理部へ第１９のページ及び第３１のページの保存指示を送信する。すでに保存指示が出ている場合はレコードの追加などの処理は行わない。
【０１１９】
保存指示を受信するとデータベースサーバ１０Ａの計画部１２２Ａの管理部は、データベースサーバ１０Ａのクエリ実行部１１３へ肯定応答を返送する。
【０１２０】
データベースサーバ１０Ａの計画部１２２Ａの管理部からの肯定応答を受信すると、データベースサーバ１０Ａのクエリ実行部１１３は、ＴｘＡの分割指示に対する肯定応答を、データベースサーバ１０Ｂのクエリ実行部１１３へ返送する（ＳＰ６０６）。
【０１２１】
データベースサーバ１０Ａのクエリ実行部１１３及びデータベースサーバ１０Ｂの計画部１２２Ａの管理部からの肯定応答を受信すると、データベースサーバ１０Ｂのクエリ実行部１１３はクライアントＡの端末のＴｘＡ−２処理部へ肯定応答を返送する（ＳＰ６０５Ｒ）。
【０１２２】
（７）データ構造テーブル
図７、図８及び図９にデータ管理システム１で使用するデータ構造テーブルを示す。ＴＢ１１は、ページである第１９のページを示しており、ページヘッダ、第１９のレコード、第８８のレコード、第１のレコード及び第２６のレコードを備える。ＴＢ１２は、ページである第３１のページを示しており、ページヘッダ、第１９のインデックス、第８８のインデックス、第１のインデックス及び第２６のインデックスを備える。ＴＢ１３は、ページである第３７のページを示しており、ページヘッダ、第３２のレコード及び第５３のレコードを備える。なお、ページのサイズは８ＫＢを想定しており、インデックス、テーブル及びログなどの用途に用いる。
【０１２３】
各トランザクションはＴＢ２１に示すように、種別情報であるクエリ実行種別を格納している。トランザクションを識別するＴｘＩＤが１のＴｘは、クエリを細分化して処理するクエリ実行種別がマルチの処理であり、ＴｘＩＤが１０のＴｘは複数のクエリを処理するクエリ実行種別がシングルの処理である。
【０１２４】
また各レコードはＴＢ２２に示すように、トランザクション開始時刻（以下、Ｔｓとする）、レコードを作成したトランザクションを示すＴｘＩＤ、削除フラグ、次のレコードを示すレコードポインタ、及びレコードの内容であるデータ内容を備える。Ｔｓは４２及び６５といった数値で表され、削除フラグはＯＮ、ＯＦＦ及び−（存在せず）で表され、データ内容はＡＡＡ及びＢＢＢなどと表される。
【０１２５】
レコードポインタはＴＢ２３に示すように、ページ番号とアレー番号を備える。ＴＢ２３の１行目は第１９のページの１番目に配置されている第１９のレコードを指しており、ＴＢ２３の２行目は第１９のページの２番目に配置されている第８８のレコードを指しており、ＴＢ２３の３行目は第３７のページの２番目に配置されている第５３のレコードを指している。
【０１２６】
ＴＢ２２のレコードポインタの（３７、２）は第３７のページの２番目に配置されている第５３のレコードを指しており、ＴＢ２２の１行目が第１９のレコードを示しているとすると、ＴＢ２２のレコードポインタの（３７、２）は第１９のレコードの次に第３７のレコードが配置されるということを示す。
【０１２７】
ページヘッダはＴＢ２４に示すように、ページを拡張した際の次のページのページ番号、ページのサイズ及びページ内の使用容量を備える。またカウンタとして、ＴＢ２５に示すように、ＴｓとＴｘＩＤを関連付けてもよい。ログはＴＢ２５に示すようにログ番号、ＴｘＩＤ及びコミットが終了しているか否かなどのステートを備える。
【０１２８】
ノード毎のＴｘ情報をＴＢ３１及びＴＢ３２に示す。Ｔｘ情報は、ＴｘＩＤ、Ｔｓ、ＴｘＩＤの細部を識別するためのＳＱＬＩＤ、マスタノード、スレーブノード、ページ及びステートを備える。
【０１２９】
上述のＴｘＡ、ＴｘＢ、ＴｘＡ−１及びＴｘＡ−２はＳＱＬＩＤとする。ステートには、処理なしを示すＮＯＮＥ（００００）、更新を示すＵＰＤＡＴＥ（０００１）、プレコミットを示すＰｒｅＣＯＭＭＩＴ（０１００）、コミットを示すＣＯＭＭＩＴ（０１００）及びアボートを示すＡＢＯＲＴ（１０００）があり、列挙の順で遷移する。
【０１３０】
ＴＢ３１及びＴＢ３２のＴｘはコミット状態である。ＴＢ３１及びＴＢ３２にはＴｘＩＤが１０２及び１０５の２つのＴｘが示されている。ＴｘＩＤが１０２のＴｘはＳＱＬＩＤが１及び１−１のＴｘを備える。同様にＴｘＩＤが１０５のＴｘはＳＱＬＩＤが５、５―１及び５−２のＴｘを備える。
【０１３１】
ＳＱＬＩＤが１及び５−２のＴｘはノードの０００１の情報としてＴＢ３１に備えられ、ＳＱＬＩＤが１−１、５及び５−１のＴｘはノードの００１０の情報としてＴＢ３２に備えられる。
【０１３２】
ＳＱＬＩＤが１及び１−１のＴｘは第１９のページ及び第３７のページを備える。ＳＱＬＩＤが５のＴｘは第３１のページ、第７のページ、第１９のページ及び第３７のページを備える。ＳＱＬＩＤが５−１のＴｘは第３１のページ及び第７のページを備え、ＳＱＬＩＤが５−２のＴｘは第１９のページ及び第３７のページを備える。
【０１３３】
ＳＱＬＩＤが１のＴｘはマスタノードを０００１、スレーブノードを００１０とし、ＳＱＬＩＤが１−１のＴｘはマスタノードを０００１としている。ＳＱＬＩＤが５のＴｘはマスタノードを００１０、スレーブノードを０００１とし、ＳＱＬＩＤが５−１のＴｘはマスタノードを００１０とし、ＳＱＬＩＤが５−２のＴｘはマスタノードを００１０としている。
【０１３４】
統合ページ情報及び一時的な統合ページ情報をＴＢ３３及びＴＢ３４に示す。ＴＢ３３及びＴＢ３４はページ番号、差分サイズ、マスタノード、ＴｘＩＤ及びステートを備える。ステートには、処理なしを示すＮＯＮＥ（００００）、更新を示すＵＰＤＡＴＥ（０００１）、統合を示すＭＥＲＧＥ（００１０）があり、列挙の順で遷移する。ＴＢ３３の場合は、Ｔｘ１０２によって、先に、ＴＢ３３に第１９のページ及び第３７のページが格納されているため、Ｔｘ１０５によっては、ＴＢ３３に第１９のページ及び第３７のページは格納されない。
【０１３５】
ページ統合方法情報はＴＢ４１に示すように、ＴｘＩＤ、タイプ、ページ統合方法番号、マスタノード、スレーブノード、実行順序、上述の最適化アルゴリズムにおける階層を備える。タイプはページかＳＱＬがあり、タイプがＳＱＬの場合、カウントやグループバイなどの参照系の処理をする。
【０１３６】
統合におけるノード情報はＴＢ４２に示すように、ノード番号、統合したページ数、サーバ及びストレージの使用容量、サーバ及びストレージの最大容量及びサーバ及びストレージの最大容量の８０％を使用容量が超えた回数を備える。
【０１３７】
統合におけるＴｘ情報はＴＢ４３に示すように、ＴｘＩＤ、Ｔｓ、マスタ及びスレーブのノード番号、更新したページ数、複製したページ数、ノード毎の更新したページ数を備える。
【０１３８】
（８）データ管理処理
図１０はデータ管理処理を示す。データベースサーバ１０におけるＴｘ処理の準備として、ＴＢ３１及びＴＢ３２のようなＴｘ情報をクエリ実行部１１３が生成する（ＳＰ１０）。クエリ実行部１１３は参照処理（ＳＰ１００）及び／又は更新処理（ＳＰ２００）を行う。参照処理及び更新処理は順不同で複数回実行する。なお、更新は削除、追加及び変更を含み、更新処理は削除、追加及び変更を含む処理である。クエリ実行部１１３はコミット処理（ＳＰ３００）を行い、クエリ実行部１１３はデータ管理処理を終了する。
【０１３９】
図１１に参照処理の詳細を示す。Ｔｘ情報をクエリ実行部１１３が設定する（ＳＰ１０１）。クエリ実行部１１３はＴＢ２１を参照することでマルチノード実行か否かを判断する（ＳＰ１０２）。クエリ実行部１１３はこの判断で否定結果を得ると、シングルノード参照実行処理を行う（ＳＰ１１０）。
【０１４０】
これに対して、クエリ実行部１１３は、ステップＳＰ１０２の判断で肯定結果を得ると、ＴＢ４１のようなページ統合方法情報によってページ統合方法を設定し（ＳＰ１０３）、スレーブノードへ指示を行い（ＳＰ１０４）、マルチノード参照実行処理を行う（ＳＰ１２０）。
【０１４１】
図１２にシングルノード参照実行処理の詳細を示す。クエリ実行部１１３は、計画部１２２Ａの管理部を介して、計画部１２２Ａの情報部へ、シングルノード参照実行指示を出す。計画部１２２Ａの情報部は、ＴＢ３１及びＴＢ３２などのＴｘ情報を参照し、ＳＱＬＩＤが設定されているか否かを判断する（ＳＰ１１１）。計画部１２２Ａの情報部はこの判断で否定結果を得ると、シングルノード参照実行処理を終了する。
【０１４２】
これに対して、計画部１２２Ａの情報部はステップＳＰ１１１の判断で肯定結果を得ると、参照対象のＳＱＬＩＤがＴＢ３３などの統合ページ情報に設定されているか否か、かつマスタノードが設定されているか否かを判断する（ＳＰ１１２）。計画部１２２Ａの情報部は、この判断で肯定結果を得ると、マスタノードを参照し（ＳＰ１１４）、結果を集計し（ＳＰ１１７）、シングルノード参照実行処理を終了する。
【０１４３】
これに対して、計画部１２２Ａの情報部は、ステップＳＰ１１２の判断で否定結果を得ると、参照対象のＳＱＬＩＤがページバッファ１２１に存在するか否かを判断する（ＳＰ１１３）。計画部１２２Ａの情報部は、この判断で肯定結果を得ると、ページバッファ１２１を参照し（ＳＰ１１５）、結果を集計し（ＳＰ１１７）、シングルノード参照実行処理を終了する。
【０１４４】
これに対して、計画部１２２Ａの情報部は、ステップＳＰ１１３の判断で否定結果を得ると、外部ストレージシステム２０のストレージデバイス２１を参照し（ＳＰ１１６）、結果を集計し（ＳＰ１１７）、シングルノード参照実行処理を終了する。
【０１４５】
図１３にマルチノード参照実行処理の詳細を示す。クエリ実行部１１３は、計画部１２２Ａの管理部を介して、計画部１２２Ａの情報部へ、マルチノード参照実行指示を出す。計画部１２２Ａの情報部は、シングルノード参照実行処理を行う（ＳＰ１１０）。
【０１４６】
計画部１２２Ａの情報部は、ＴＢ３１及びＴＢ３２などのＴｘ情報を参照し、未処理のＳＱＬＩＤが有るか否かを判断する（ＳＰ１２１）。計画部１２２Ａの情報部は、この判断で否定結果を得ると、マルチノード参照実行処理を終了する。
【０１４７】
これに対して、計画部１２２Ａの情報部は、ステップＳＰ１２１の判断で肯定結果を得ると、ステップＳＰ１０３でクエリ実行部１１３によって設定されたページ統合方法に基づいて、他ノードへの送信が有るか否かを判断する（ＳＰ１２２）。計画部１２２Ａの情報部は、この判断で肯定結果を得ると、結果を他ノードへ送信し（ＳＰ１２３）、マルチノード参照実行処理を終了する。
【０１４８】
これに対して、計画部１２２Ａの情報部は、ステップＳＰ１２２の判断で否定結果を得ると、他ノードから結果を受信し（ＳＰ１２５）、結果を集計し（ＳＰ１２６）、ステップＳＰ１２１へ戻る。
【０１４９】
図１４に更新処理の詳細を示す。Ｔｘ情報をクエリ実行部１１３が設定（情報を入れる）する（ＳＰ２０１）。クエリ実行部１１３はＴＢ２１を参照することでマルチノード実行か否かを判断する（ＳＰ２０２）。クエリ実行部１１３はこの判断で否定結果を得ると、更新実行処理を行い（ＳＰ２１０）、更新処理を終了する。
【０１５０】
これに対して、クエリ実行部１１３は、ステップＳＰ２０２の判断で肯定結果を得ると、スレーブノードへ更新実行を指示し（ＳＰ２０３）、スレーブノードでの結果との待ち合わせ（ＳＰ２０４）を行い、更新処理を終了する。
【０１５１】
図１５に更新処理の詳細を示す。計画部１２２Ａの情報部は、参照対象のＳＱＬＩＤがＴＢ３３などの統合ページ情報に設定されているか否か、かつマスタノードが設定されているか否かを判断する（ＳＰ２１１）。この判断で否定結果を得ると、計画部１２２Ａの情報部はマスタノードにデータ内容の更新を依頼する（ＳＰ２１４）。
【０１５２】
これに対して、計画部１２２Ａの情報部は、ステップＳＰ２１１の判断で肯定結果を得ると、自ノードでデータ内容を更新し（ＳＰ２１２）、ＴＢ３３などの統合ページ情報を作成する（ＳＰ２１３）。
【０１５３】
ステップＳＰ２１４又はステップＳＰ２１３の次に、計画部１２２Ａの情報部はマスタノード選択処理を行い（ＳＰ２２０）、ページ統合処理を行う（ＳＰ２５０）。
【０１５４】
マスタノード選択処理は、ＴＢ３３などの統合ページ情報のマスタノード列が設定されていないページのマスタノードを選択する処理である。計画部１２２Ａの管理部からマスタノード選択を指示されると、計画部１２２Ａの最適化部は、更新ページ情報を計画部１２２Ａの管理部から取得する（ＳＰ２２１）。実際上、ＴＢ３１及びＴＢ３２などのＴｘ情報のステート列の値をＵＰＤＡＴＥ（０００１）に設定する。
【０１５５】
計画部１２２Ａの最適化部は、統合ページ情報の作成対象を選択する（ＳＰ２２２）。実際上、計画部１２２Ａの最適化部は、ＴＢ３１及びＴＢ３２などのＴｘ情報のページ列に記載のあるページで、かつＴＢ３３などの統合ページ情報のマスタノード列が設定されていないページ番号を選択し、ＴＢ３４などのような一時的な統合ページ情報を作成する。
【０１５６】
計画部１２２Ａの最適化部は、統合ページ情報をロックする（ＳＰ２２３）。実際上、計画部１２２Ａの最適化部は、ＴＢ３４などのような一時的な統合ページ情報に記載された全てのページ番号に対して、マスタノード選択のロックを行う。
【０１５７】
マスタノードが全てのサーバ（ノード）に対して、ページ番号に該当するＴＢ３４などのような一時的な統合ページ情報のＴｘＩＤに自ＴｘＩＤを設定する。このとき、既に、他の若いＴｘＩＤが設定されている場合は、ロック取得負けとし、他の古いＴｘＩＤが設定されている場合は、引き分けとする。
【０１５８】
他ＴｘＩＤが設定されていない場合は，自ＴｘＩＤを設定して勝ちとする。あるページ番号について、全て引き分け又は１つでも負けの場合は、他ＴｘＩＤにマスタノード選択を任せる。１つでも勝ちかつ負けが無い場合は、自ＴｘＩＤでマスタノード選択を行う。自ＴｘＩＤでマスタノード選択を行う場合は、全てのノードのあるページ番号におけるＴＢ３４のような一時的な統合ページ情報のＴｘＩＤを自ＴｘＩＤとする必要がある。
【０１５９】
計画部１２２Ａの最適化部は、統合ページ情報を取得する（ＳＰ２２４）。実際上、マスタノード選択を行うページ番号について、全てのサーバ（ノード）からＴＢ３４のような一時的な統合ページ情報を収集する。
【０１６０】
計画部１２２Ａの最適化部は、マスタノードを決定し（ＳＰ２２５）、マスタノード選択処理を終了する。実際上、ＴＢ３４のような一時的な統合ページ情報におけるページ番号の差分サイズ列の値が最大のページ番号をマスタノードとする。
【０１６１】
図１６にページ統合処理の詳細を示す。計画部１２２Ａの管理部からページ統合を指示されると、実行部１２２Ｃの差分部は、ＴＢ４１のようなページ統合方法情報によってページ統合方法を設定する（ＳＰ２５１）。実際上、変更後のポインタの書込みコストを最小にするため、ポインタの依存関係順に実行順序を定める。例えば、ＡがＢを指すポインタである場合、Ｂのページ統合後にＡのページ統合をする。
【０１６２】
実行部１２２Ｃの差分部は、全てのＴＢ３４のような一時的なページ統合情報にマスタノードを設定し、ＴＢ３４のような一時的なページ統合情報を全てのサーバへ通知する（ＳＰ２５２）。
【０１６３】
実行部１２２Ｃの差分部は、ＴＢ４１のようなページ統合方法情報を参照し、実行ＴｘＩＤに該当するページ統合方法で、実行順序に基づき、ページ統合実行処理を行い（ＳＰ２６０）、ページ統合処理を終了する。
【０１６４】
ページ統合実行処理は、例えばデータベースサーバ１０Ａのようなマスタノードである受信側と、データベースサーバ１０Ｂのようなスレーブノードである送信側の処理を含んでいる。
【０１６５】
実行部１２２Ｃの差分部はＴＢ４１のようなページ統合方法情報からページ統合方法を選択し（ＳＰ２６１）、受信側処理（ＳＰ２７０）及び送信側処理（ＳＰ２８０）を行い、ページ統合方法を再度選択し（ＳＰ２６２）、テータ統合方法が全て選択済みとなったか否かを判断する（ＳＰ２６３）。実行部１２２Ｃの差分部は、この判断で肯定結果を得るとページ統合実行処理を終了する。
【０１６６】
これに対して、実行部１２２Ｃの差分部はステップＳＰ２６３の判断で否定結果を得ると、ステップＳＰ２７０へ戻り、この後、ステップＳＰ２６３で肯定結果を得るまでステップＳＰ２７０、ＳＰ２８０、ＳＰ２６２の処理を繰り返す。
【０１６７】
受信側処理として、マスタノードの実行部１２２Ｃの差分部は、差分情報を受信し（ＳＰ２７１）、受信した差分情報をマスタページに配置し（ＳＰ２７２）、マスタページに配置した差分情報のアドレスを送信（ＳＰ２７３）する。
【０１６８】
マスタノードの実行部１２２Ｃの差分部は、一定時間受信が無いか否かを判断する（ＳＰ２７４）。この判断で肯定結果を得ると、マスタノードの実行部１２２Ｃの差分部は、受信側処理を終了する。
【０１６９】
これに対して、マスタノードの実行部１２２Ｃの差分部は、ステップＳＰ２７４の判断で否定結果を得ると、ステップＳＰ２７２に戻り、この後、ステップＳＰ２７４で肯定結果を得るまでステップＳＰ２７２及びＳＰ２７３の処理を繰り返す。
【０１７０】
送信側処理として、スレーブノードの実行部１２２Ｃの差分部は、マスタノードの実行部１２２Ｃの差分部へ、差分情報を送信する（ＳＰ２８１）。スレーブノードの実行部１２２Ｃの差分部は、マスタノードの実行部１２２Ｃの差分部からアドレスを受信し（ＳＰ２８２）、受信したアドレスに基づいてアドレス依存関係を修復し（ＳＰ２８３）、送信側処理を終了する。
【０１７１】
図１７にコミット処理の詳細を示す。実行部１２２Ｃの差分部による処理が終了すると、実行部１２２Ｃの統合部は、ＴＢ３１及びＴＢ３２などのＴｘ情報のステート列のプレコミットフラグを設定（１ビット目（００１０）をＯＮ）する（ＳＰ３０１）。
【０１７２】
実行部１２２Ｃの統合部は、Ｔｓを取得し、ＴＢ３１及びＴＢ３２などのＴｘ情報においてＴｓをインクリメントし、Ｔｓロック（インクリメントを不可能な状態にする）を行い（ＳＰ３０２）、バッファ整合性制御処理を行う（ＳＰ３１０）。
【０１７３】
実行部１２２Ｃの統合部は、ＴＢ２６のようなＴｘログを発行し（ＳＰ３０３）、Ｔｓをアンロック(インクリメントを可能な状態にする)し（ＳＰ３０４）、ＴＢ３１及びＴＢ３２などのＴｘ情報のステート列のコミットフラグを設定（２ビット目（０１００）をＯＮ）し（ＳＰ３０５）、コミット処理を終了する。
【０１７４】
バッファ整合性制御処理では、実行部１２２Ｃの統合部による処理が終了すると、ログ部１２２Ｂの履歴部はレコードにＴｓを設定し（ＳＰ３１１）、ログ部１２２Ｂの履歴部はログ部１２２Ｂの書き出し部を介して外部ストレージシステム２０へログ書き出しを行う（ＳＰ３１２）。なおＵＮＤＯログ（ＴＢ２６のようなＴｘログにおけるステート列のＥＮＤ）が無ければ、Ｔｘは未コミット状態である。ログ部１２２Ｂの履歴部は、更新したページバッファ１２１のページの削除指示を出す、又はページを最新版に変更する指示を出すことでページバッファ１２１を同期する（ＳＰ３１３）。実際上、ページバッファ１２１のページはクリーン部１２２Ｄが削除する。
【０１７５】
（９）本実施の形態の効果
以上のように本実施の形態のデータ管理システム１では、ページ統合方法を最適化アルゴリズムによって決定し、データベースサーバ１０がページ統合を行い、外部ストレージシステム２０へのアクセス頻度を低減させる。また差分処理時にアドレスの依存関係の修復や競合する一方のＴｘを行い、他方のＴｘにより処理されたページバッファ１２１のページは削除されることで、他方のＴｘをアボートする。
【０１７６】
従って、本データ管理システム１によれば、サーバ間通信量を少なくしつつ、複数クエリ実行及びクエリ細分化実行を行うことができる。
【０１７７】
（１０）他の実施の形態
なお、上述の実施の形態においては、全てのデータベースサーバ１０が１つの外部ストレージシステム２０を共有する場合について述べたが、本発明はこれに限らず、図１８に示すようにデータベースサーバ１０Ｃ及び１０Ｄが外部ストレージシステム２０Ａを共有し、データベースサーバ１０Ｅ及び１０Ｆが外部ストレージシステム２０Ｂを共有してもよい。
【０１７８】
また上述の実施の形態においては、データベースサーバ１０間の更新するページが最多であるノードを探索する最適化アルゴリズムを使用する場合について述べたが、本発明はこれに限らず、データベースサーバ１０及び外部ストレージシステム２０間の通信量の均一化を目的として、統合ページ数が最小であるノードを探索する最適化アルゴリズムを使用してもよい。
【符号の説明】
【０１７９】
１……データ管理システム、１０、１０Ａ、１０Ｂ、１０Ｃ、１０Ｄ、１０Ｅ、１０Ｆ……データベースサーバ、１１……メモリ、１２……ネットワークアダプタ、１３……プロセッサ、１４……ローカルストレージデバイス、２０、２０Ａ、２０Ｂ……外部ストレージシステム、２１……ストレージデバイス、２２……ネットワークアダプタ、２３……コントローラ、１１０……データベース管理ソフト、１１１……クエリ受信部、１１２……クエリ実行計画生成部、１１３……クエリ実行部、１２０……データベースバッファ管理部、１２１……ページバッファ、１２２……キャッシュ同期部、１２２Ａ……計画部、１２２Ｂ……ログ部、１２２Ｃ……実行部、１２２Ｄ……クリーン部。
【図１】
2018045374.tif 000003
【図２】
2018045374.tif 000004
【図３】
2018045374.tif 000005
【図４】
2018045374.tif 000006
【図５】
2018045374.tif 000007
【図６】
2018045374.tif 000008
【図７】
2018045374.tif 000009
【図８】
2018045374.tif 000010
【図９】
2018045374.tif 000011
【図１０】
2018045374.tif 000012
【図１１】
2018045374.tif 000013
【図１２】
2018045374.tif 000014
【図１３】
2018045374.tif 000015
【図１４】
2018045374.tif 000016
【図１５】
2018045374.tif 000017
【図１６】
2018045374.tif 000018
【図１７】
2018045374.tif 000019
【図１８】
2018045374.tif 000020