Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4434838B2 - 分散データ等価方法とシステム、およびプログラム - Google Patents
[go: Go Back, main page]

JP4434838B2 - 分散データ等価方法とシステム、およびプログラム - Google Patents

分散データ等価方法とシステム、およびプログラム Download PDF

Info

Publication number
JP4434838B2
JP4434838B2 JP2004160356A JP2004160356A JP4434838B2 JP 4434838 B2 JP4434838 B2 JP 4434838B2 JP 2004160356 A JP2004160356 A JP 2004160356A JP 2004160356 A JP2004160356 A JP 2004160356A JP 4434838 B2 JP4434838 B2 JP 4434838B2
Authority
JP
Japan
Prior art keywords
data
computer
mode
master
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004160356A
Other languages
English (en)
Other versions
JP2005339411A (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.)
Toshiba Corp
Toshiba System Technology Corp
Original Assignee
Toshiba Corp
Toshiba System Technology 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 Toshiba Corp, Toshiba System Technology Corp filed Critical Toshiba Corp
Priority to JP2004160356A priority Critical patent/JP4434838B2/ja
Publication of JP2005339411A publication Critical patent/JP2005339411A/ja
Application granted granted Critical
Publication of JP4434838B2 publication Critical patent/JP4434838B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ネットワークを介して接続された複数の計算機をマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機で目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価する分散データ等価技術に関するものである。
昨今の都市の基幹をなすライフラインと言われる産業システム(電力、ガス、水道、公共交通機関等)においては、システムを監視制御するために用いられるデータベースは巨大になり、かつ高速にアクセスできることが求められている。そして、産業システムの状態が変われば、データベースを変化させ、複数箇所の計算機のデータ内容が等しく保たれることが求められている。等しく保つことで、複数箇所ではネットワークを介してデータを取得することがないので、高速なアクセスが可能となる。
また、最も重要な計算機をサーバーとして運用する場合、このサーバーが停止しても産業システムの機能が失われないようにサーバー機能を他計算機がバックアップする、二重系(または多重系)のシステムを構成するのが通常である。多重系構成にすることによって、サーバーが停止しても、他の計算機に直ちにサーバー機能を移して、産業システムの機能を損なわないようにする。サーバー機能を移しても、以前と変わらずデータを引き継いでアクセス可能であり、かつ、他の残りの計算機も同様に等しくデータが保たれた状態であることが必要である。このように、産業システムにおいては、複数の計算機間でデータ内容を等しく保つ分散データ等価システムが必要となっていた。
特許文献1においては、このような分散データ等価システムとして、システム内における複数の計算機のデータを等しく保つために変更内容を転送する電力系統の監視制御手法が提案されている。この手法は、電力系統の監視制御データベースの内容に変更のあった場合には、各計算機間でその変更内容を授受するものである。この手法によれば、各計算機でデータベースの内容を更新すると、各計算機が変更内容を他計算機へ送り出す。同時刻に同箇所のデータ変更があった場合は、後でデータ内容を修正して調整するものである。この手法においては、複数箇所の計算機からデータベースを更新可能である。
また、特許文献2においては、複数の計算機がある場合に、特定の1つの計算機をベースホストと呼び、ベースホストにてデータ更新可能とした場合に、ベースホストを切り替えるベースホスト切替型データベース管理システムについて記載されている。この手法においては、ベースホストを切り替えるとき、ベースホストを変更したという情報を、ある計算機から変更内容をレプリケーション通信で送り出して、各計算機のベースホスト内容を書き換える。また、ベースホストを切り替えた場合に、新旧ベースホストのデータ内容のずれを合わせるのに、切替のタイミングをきっかけにして、データベースのデータをレプリケーション手段によって最新データに等しく保つようにしている。
また、特許文献3においては、レプリケーションにより複数の計算機のデータ内容を、一貫して保つ分散データ管理手法について記載されている。この手法においては、データベースへの更新はトランザクションという一連の操作の塊で行われる。トランザクションの中身はデータベースの中で実行され、データベースで実行された更新内容は、通信手段によって他計算機にレプリケーションされる。
特許番号第2787108号公報 特開2002−297593公報 特開2002−297428公報
複数の計算機にあるデータを等しく保つ分散データ等価システムにおいては、データ内容を等しく保つための変更内容の送信が、高速に行われることが求められている。多重系システムを構成し、サーバーが停止してもシステムとして継続するため、サーバー機能(マスター)を他に移して動作し続けることが必要である。マスターを切り替える機能があり、切り替えてもデータが等しく保たれて継続して利用できるデータ管理システムが必要である。
前記特許文献1の手法は、データの変更内容を各計算機から送信するものであるが、同時期に同箇所を複数の計算機で更新する可能性もあり、このような場合には、一つの計算機以外の更新内容を一旦無効にした後に残りの計算機の更新内容を順次反映し直すという調整が必要であった。このような調整を行うためには、更新順番の調停、変更の履歴を保存する必要があった。この手法においては、結局のところ、システム全体として更新のスループットが高速にならず、かつ、各計算機には、変更内容のデータ量に比べて大幅に大容量の主記憶メモリが必要になっていた。
また、前記特許文献2の手法においては、ベースホスト(マスター)を切り替える場合に、例えば、「ベースホストがホストBに変更された」、「ベースからレプリカに変更された」というような変更内容がレプリケーションされて、各計算機の管理情報を変更するので、ベースホストが存在しなくなったことを確認した別の計算機がベースホストになるような、他の計算機のモード変更と同期する振る舞いはできなかった。そのため、通信時間の時間遅れ次第では、ある時間帯に2つ以上のベースホストが同時に存在する可能性があった。また、切替後のデータをレプリケーションで合わせるため、通信の遅れ等でタイムアウトした場合に、データが一致しない計算機が発生する可能性もあった。複数の計算機が同時にデータ更新可能なベースホストになるための動作を行った場合には、システム管理情報の書き換え権限を調停するために、いずれの管理情報も書き換えられず、2つ以上のベースホストが動作してしまう可能性があった。
また、前記特許文献3の手法においては、並行して複数のデータ更新が実行されても、データ更新がトランザクションという形でデータベースへ行われるため、データベースのスループットの影響を受け易かった。そして、その変更内容をそのままレプリケーション送信するため、細かなトランザクションが続いた場合には、実際の変更内容に比べて、通信のオーバーヘッドが大きくなり、更新のスループットが通信のスループットより低いレベルで制限される可能性があった。
なお、このような問題点は、産業システムを監視制御するための分野に限らず、マスター計算機のデータ更新結果を各レプリカ計算機に反映させる各種の分野における分散データ等価技術においても同様に存在している。
本発明は、上記のような従来技術の問題点を解決するために提案されたものであり、その目的は、マスター計算機と各レプリカ計算機とのデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実現可能な分散データ等価方法とシステム、およびプログラムを提供することである。
本発明は、上記のような目的を達成するために、各計算機でマスター計算機と自計算機のモード情報を管理し、モード情報に基づいてデータ更新結果の送受信を行うと共に、レプリカ計算機からのリトリーブ要求に応じてマスター計算機からリトリーブデータを送信することにより、マスター計算機と各レプリカ計算機とのデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実現できるようにしたものである。
本発明の分散データ等価方法は、ネットワークを介して接続された複数の計算機に目的データをそれぞれ格納し、特定の1つの計算機をマスターモード、その他の各計算機をレプリカモードで運用することによりマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機でデータ更新操作により目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価するための方法である。この分散データ等価方法において、各計算機は、複数のアプリケーションからアクセス可能な共有領域に目的データを格納するデータファイルを配置してなるデータベースを備え、モード処理ステップを行うと共に、マスター計算機とレプリカ計算機の間で、データ更新、更新データマージ、レプリケーション送信、レプリケーション受信、マージデータ展開、受信データ反映、リトリーブ要求送信、リトリーブデータ送信、リトリーブデータ受信、の各ステップを行うことを特徴としている。
ここで、モード処理ステップは、複数の計算機のうち、どの計算機がマスター計算機であるかを特定するモード情報と自計算機のモードを特定するモード情報を含むモード情報を管理して、他計算機との間でモード情報の送受信を行うと共に、モード切替が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行するステップである。
また、データ更新、更新データマージ、レプリケーション送信、の各ステップは、マスターモード時にマスター計算機として動作する計算機により行われる。データ更新ステップは、データ更新操作の結果を更新キャッシュに一旦格納すると共に、コミット要求に応じて更新キャッシュの内容を1個の更新内容コミットデータとし、固有のデータ特定情報を付加して前記データファイルに格納するステップである。更新データマージステップは、予め設定されたマージ併合条件に従って決められる1個または複数個の前記更新内容コミットデータをマージしてマージデータを生成するステップである。レプリケーション送信ステップは、モード情報に基づき、等価対象となる各レプリカ計算機を示す送信先情報を管理して、この送信先情報に基づき各レプリカ計算機に対してマージデータをレプリケーションデータとして送信するステップである。
これに対して、レプリケーション受信、マージデータ展開、受信データ反映、の各ステップは、レプリカモード時にレプリカ計算機として動作する計算機により行われる。レプリケーション受信ステップは、モード情報に基づき、レプリケーションデータの送信元となるマスター計算機を示す送信元情報を管理して、この送信元情報に基づきマスター計算機からのレプリケーションデータを受信するステップである。マージデータ展開ステップは、レプリケーションデータである前記マージデータを、元の1個または複数個の更新内容コミットデータに展開するステップである。受信データ反映ステップは、展開された更新内容コミットデータを、各更新内容コミットデータ毎に、そのデータのリトリーブ状態を示すリトリーブ状態情報に基づき、データファイルに反映するか否か判定して、反映すると判定した更新内容コミットデータをそのデータ特定情報と共にデータファイルに反映するステップである。
さらに、リトリーブ要求送信は、レプリカ計算機により、自計算機とマスター計算機のデータファイル間の差異をなくすためにデータファイルの一部または全部を一括してコピーするリトリーブに必要なリトリーブデータを要求するリトリーブ要求をマスター計算機に送信するステップである。リトリーブデータ送信ステップは、マスター計算機により、レプリカ計算機からのリトリーブ要求の受信に応答してリトリーブデータをそのレプリカ計算機に送信するステップである。リトリーブデータ受信ステップは、レプリカ計算機により、マスター計算機からリトリーブデータを受信した場合に、リトリーブを実行してリトリーブ状態情報を更新するステップである。
なお、本発明の分散データ等価システム、プログラムは、いずれも、上記のような分散データ等価方法の特徴を、別の観点から把握したものである。
このような特徴を有する本発明によれば、マスター切替というモード管理において各計算機でモード変更を行い、モード変更は、他の計算機のモード変更を受信したことをきっかけでモード遷移ルールに従って遷移し、遷移した状況に応じてデータ等価を行うことができる。すなわち、複数の計算機のモード変更を互いの状況に応じて行うことができ、かつ、モード管理の状況に応じてデータ等価を積極的に行うことができる。そのため、複数のマスター計算機が存在してしまうような問題を生じることなく、マスター計算機を1つに定めて、他の計算機との調整を行うことなくデータ更新を連続して高速に行うことができる。
また、各アプリケーションでデータ更新操作を行った場合に、そのデータ更新結果をアプリケーションごとに更新キャッシュに格納し、コミット操作によって送り出し、1つまたは複数のアプリケーションからなされたコミットをマージしてある程度のデータ単位に固めてレプリケーション送信を行うことができる。そのため、複数のアプリケーションでデータ更新を並行かつ高速に行うことができる。また、コミットした結果は複数個がマージされるため、個別に送信する場合に比べて送信オーバーヘッドを大幅に減らすことができる。したがって、データ更新やコミットよりスループットの低い通信機能であっても、その通信機能の能力を最大限に活用して効率よくデータ更新結果を送信することができ、その結果、計算機間のデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実現できる。
以上のように、本発明によれば、マスター計算機と各レプリカ計算機とのデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実行可能な分散データ等価方法とシステム、およびプログラムを提供することができる。
以下には、本発明を適用した分散データ等価システムの実施形態について図面を参照して説明する。ただし、ここで記載する実施形態は、本発明をなんら限定するものではなく、本発明の一態様を例示するものにすぎない。
本発明は、典型的には、コンピュータをソフトウェアで制御することにより実現される。この場合のソフトウェアは、コンピュータのハードウェアを物理的に活用することで本発明の各計算機の機能および作用効果を実現するものであり、また、従来技術を適用可能な部分には好適な従来技術が適用される。さらに、本発明を実現するハードウェアやソフトウェアの具体的な種類や構成、ソフトウェアで処理する範囲などは自由に変更可能であり、例えば、本発明を実現するプログラムは本発明の一態様である。
[1.用語説明]
以下にはまず、本明細書中で用いられる重要な用語の定義について説明する。
(1)マスター計算機:
等価対象となる目的データに対して、単なる複製ではなく、オリジナルなデータ更新が可能で、また、そのオリジナルにデータ更新されたデータを参照可能な計算機である。通常は、ネットワークで接続されたシステムの中で特定の1台である。
(2)レプリカ計算機:
等価対象となる目的データに対して、オリジナルなデータ更新はできず、マスター計算機でオリジナルにデータ更新されたデータの複製とその参照のみが可能な計算機である。すなわち、レプリカ計算機により取り扱われる目的データは、マスター計算機のオリジナルデータの複製のみによりデータ更新される。
(3)マスター切替:
1つのレプリカ計算機をマスター計算機に設定することである。一般的には、既にマスター計算機が存在する場合に、1つのレプリカ計算機をマスターに設定することを意味している。これまでマスターであった計算機を旧マスター、新たにマスターに設定した計算機を新マスターと呼ぶことがある。また、マスター計算機が故障等で失われて存在せず、レプリカ計算機のみが存在する場合に、1つのレプリカ計算機をマスターに設定することもマスター切替と呼ぶ。さらに、設定や起動のタイミング等で、マスター計算機が複数存在してしまったとき、複数のマスター計算機または他のレプリカ計算機の1つをマスターに設定することもマスター切替と呼ぶ。
(4)データファイル:
等価対象となる目的データのデータ本体が格納されたファイルである。具体的には、計算機のハードディスクや主記憶メモリ等の記憶装置上に配置される。データファイルは、複数のアプリケーションからアクセス可能な共有領域に配置されて、各アプリケーションから更新・参照される。一般的には、データファイルは、データ本体と、更新シリアル番号を格納するデータ状態表から構成される。この場合、データ本体は、それぞれが、テーブル、リスト、キュー等のデータ構造を持つ1個または複数個のデータから構成される。以下の実施形態では、一例として、データ本体が、複数個の表形式データ(テーブル)から構成されている場合について説明している。また、本発明のデータファイルは、ハードディスク上のデータと後述するマッピングデータの両方を含む概念である。
(5)データ状態表:
データ本体をいくつかの単位に分けて、各単位毎にそれぞれの更新シリアル番号を格納した表である。具体的に、データ本体が、複数のテーブルから構成される場合、データ状態表は、各テーブルのシリアル番号を格納したものになる。また、テーブルをカラム別に分けて考えた場合、データ状態表は、テーブルとカラムのシリアル番号を格納したものになる。
(6)シリアル番号:
データ更新される毎に増分される番号である。一般的には、データを構成する各単位毎にシリアル番号を振る。例えば、テーブルとカラムの単位でシリアル番号を振る場合に、更新があったならば、更新されたテーブルのシリアル番号と、そのテーブルの該当カラムのシリアル番号をそれぞれ更新する。
(7)更新キャッシュ:
アプリケーション毎に設けられた一時的な記憶領域である。すなわち、各アプリケーションでなされたデータ更新内容をそれぞれ溜めておく領域である。
(8)データ更新:
アプリケーションによる「データ更新」とは、データの書き換え、追加、削除の全てを含む概念である。このような操作を行うと、通常は、一旦キャッシュに溜められて、即座にデータファイルに変更が加えられることはない。1つのアプリケーションがデータ更新した場合、そのデータ更新結果のコミットが行われない段階では、他のアプリケーションにそのデータ更新結果は示されない。
(9)コミット:
キャッシュに溜められたデータ更新結果を、複数のアプリケーションが共有するデータファイルに反映することである。反映とは、データファイル中の特定のデータを更新対象とするデータ更新が行われた場合に、その特定データのデータ更新前のデータ値を、データ更新結果として得られたデータ値に変更することである。1つのアプリケーションがデータ更新した場合、そのデータ更新結果のコミットが行われた段階で初めて、他のアプリケーションにもデータ更新結果が示されることになる。また、コミットされた1回毎のデータはコミットデータと呼ぶが、コミットと略称することもある。
(10)モード:
計算機の状態である。少なくとも、マスターモードとレプリカモードがある。以下の実施形態では、マスターモードである「マスター運用中」、レプリカモードである「レプリカ運用中」に加えて、「マスター遷移中」、「レプリカ遷移中」のモードを用いている。また、説明の簡略化の観点から、概して、自計算機または他計算機のモードを示すモード情報を「モード」と略している。
(11)モード管理:
少なくとも自計算機のモードを維持することであり、必要であれば、特定の計算機をマスター計算機に維持することも含む。さらに、全計算機のモードを維持する場合もあり得る。基本的なモード管理は、他計算機からのモード情報を受信して、自計算機のモードを変更したり、モード変更後にその変更後のモード情報を送信したりするものである。また、モード情報を受信したり、自計算機のモードを変更したりした場合は、必要に応じて、レプリケーションやリトリーブを連携して働かせることも行う。
(12)モード管理表:
モード管理表には少なくとも自計算機のモード情報が格納されている。実際には、モード管理、リトリーブ、レプリケーションの機能に利用するために、モード管理表には、自計算機が認識するマスター計算機名(名称またはIPアドレス等のユニークな識別子)や、モード送受信をやり取りした他計算機のモードを格納することもある。
(13)モード変更:
計算機のモードを変更することである。モードを変更した際に、必要があれば、モード管理の一部として変更後のモード情報を送信する。
(14)リトリーブ:
1つの計算機から、データファイルの全体または一部を一括してコピーすることである。例えば、テーブルデータファイルならば、1つのテーブル全体をコピーする操作や、テーブルの一部のカラムをコピーする操作がリトリーブである。通常のリトリーブにおいては、コピーを受けようとする側がリトリーブ要求を発して、要求を受けた側が必要な部分(例えば、テーブルやカラム)を送信する。送信は1対1となる。
(15)リトリーブ状態表:
データファイル中のデータ本体のリトリーブ送受信する単位ごとに、当該データがリトリーブのどのような状態にあるかを示す情報を格納した表である。例えば、状態としては、「リトリーブ中」、「リトリーブ完了」などの状態がある。テーブルデータの場合、リトリーブ送受信する単位としては、カラム単位、テーブル単位等が考えられる。この場合、リトリーブ状態表は、カラム毎の状態、テーブル毎の状態等が記述された表となる。
(16)レプリケーション:
マスター計算機においてデータファイルが更新された際に、更新内容を1つまたは複数のレプリカ計算機に送信することである。通常は、同一の送信内容を複数のレプリカ計算機に同時に送る。送信される更新内容をレプリケーションデータと呼ぶ。また、レプリカ計算機において自計算機がレプリケーションデータの受信対象であることをマスター計算機に通知することをレプリケーション接続と呼ぶ。レプリカ計算機においては、このレプリケーション接続を行うことにより、マスター計算機からのレプリケーションデータの受信が可能となる。
(17)レプリケーション管理表:
レプリケーションの送受信側において、それぞれ送受信相手側の計算機を示す情報を格納した表である。すなわち、レプリケーションの送信側では、レプリケーション送信先計算機名を格納し、レプリケーションの受信側では、レプリケーション送信元計算機名を格納し、送信側でありかつ受信側でもある場合は、両方を格納した表である。
(18)マージ:
複数のコミットデータを一体的にまとめて扱うことである。まとめられたものをマージデータと呼ぶ。逆に、マージデータを元の複数のコミットに分けることをマージ展開と呼ぶ。
(19)マージ番号:
マージデータごとに振られた番号である。以下の実施形態では、マージ展開処理においてマージ番号の抜けをチェックすることで、リトリーブ要求を発するきっかけとなる。
(20)マッピングデータ:
複数のアプリケーションが共有するデータファイルの実現方法の1つである。データベースの中身を固定的なハードディスク上に配置し、データベースを起動した際に、ハードディスクにあるデータを主記憶メモリ上のプロセス空間に映したデータである。主記憶メモリ上のプロセス空間に映されたマッピングデータを更新すれば、(OSの実装によるが)ハードディスク上のデータについても直ちに更新される。また、マッピングデータを参照すれば、ハードディスク上のデータを読み出したことになる。
(21)一斉同報通信:
複数の計算機に対して同時一斉に送信を行うことである。受信側の受信状況に関わらず送信する一方的な通信である。複数の計算機が特定のグループである場合と不特定多数である場合がある。IP網におけるマルチキャスト通信マルチブロードキャスト通信は、一斉同報通信の一例である。
(22)アプリケーション:
各計算機上で動作するアプリケーションであるが、特に、分散データ等価システムのデータ処理やモード処理を発生させるシステム外部の外部アプリケーションを示している。
[2.システム構成]
図1は、本発明を適用した一つの実施形態に係る分散データ等価システム(以下には、本システムと略称する)を構成する各計算機を示すブロック構成図である。この図1に示すように、各計算機は、分散データ等価処理を実現するための構成要素として、データベース11、データ処理部12、マージデータ処理部13、レプリケーション処理部14、モード処理部15、リトリーブ処理部16、等を備えている。また、データ操作アプリケーション17とモード設定アプリケーション18は、各計算機上で動作して本システムのデータ処理やモード処理を発生させるシステム外部の外部アプリケーションである。なお、本システムの各構成要素11〜16の機能および構成は、次の通りである。
データベース11は、分散データ等価システム監視制御データ等の目的データを格納する部分であり、ハードディスク上に配置されたデータファイル111とそのマッピングデータ112を備えている。このうち、データファイル111は、ハードディスク上において、複数のアプリケーションからアクセス可能な共有領域に配置されている。また、マッピングデータ112は、データファイル111を主記憶メモリ上のプロセス空間に映したデータである。このようにデータファイル111とマッピングデータ112からデータベース11を構成するのは、本発明を計算機にて実現する方法の一つである。
データ処理部12は、データベース11中のデータを処理する部分であり、データ参照処理部121、データ更新処理部122、受信データ反映部123、更新データキャッシュ124を備えている。このうち、データ参照処理部121は、マスターモード時とレプリカモード時の両方で動作する部分であり、データ操作アプリケーション17からのデータ参照要求に応じて、データベース11中のデータの参照を行う。
また、データ更新処理部122は、マスターモード時に動作してデータベース11中のデータの更新を行う部分であり、データ操作アプリケーション17からのデータ更新要求に応じて、データ更新操作の結果を更新データキャッシュ124に一旦格納すると共に、コミット要求に応じて更新データキャッシュ124の内容を1個の更新内容コミットデータとし、固有のシリアル番号を付加してデータベース11に格納する。
また、受信データ反映部123は、レプリカモード時に動作してマスター計算機側におけるデータベース11のデータ更新内容を自計算機のデータベース11に反映する部分である。この受信データ反映部123は、マスター計算機側で得られた更新内容コミットデータを、自計算機のマージデータ処理部13を通じて取得し、各更新内容コミットデータ毎に、後述するリトリーブ状態表に基づき、自計算機のデータベース11に反映するか否か判定して、反映すると判定した更新内容コミットデータをそのシリアル番号と共にデータベース11に反映する。
マージデータ処理部13は、更新内容コミットデータのマージおよびマージされたデータのマージ展開を行う部分であり、更新データマージ部131とマージデータ展開部132を備えている。このうち、更新データマージ部131は、マスターモード時に動作する部分であり、予め設定されたマージ併合条件に従って決められる1個または複数個の更新内容コミットデータをマージしてマージデータを生成する。また、マージデータ展開部132は、レプリカモード時に動作する部分であり、マスター計算機側で得られたマージデータを、自計算機のレプリケーション処理部14を通じて取得し、元の1個または複数個の更新内容コミットデータに展開する。
レプリケーション処理部14は、更新内容コミットデータのマージデータをレプリケーションデータとして送受信する部分であり、レプリケーション管理部141、レプリケーション通信部142、レプリケーション管理表143を備えている。このうち、レプリケーション管理部141は、マスターモード時とレプリカモード時の両方で動作する部分であり、レプリケーション管理表143を管理する。
また、レプリケーション管理表143には、マスターモード時には、等価対象となる各レプリカ計算機を示すレプリカ計算機情報(送信先情報)が格納され、レプリカモード時には、レプリケーションデータの送信元となるマスター計算機を示すマスター計算機情報(送信元情報)が格納される。また、レプリケーション通信部142は、マスターモード時とレプリカモード時の両方で動作する部分であり、マスターモード時には、レプリカ計算機情報に基づき各レプリカ計算機に対してマージデータをレプリケーションデータとして送信し、レプリカモード時には、マスター計算機情報に基づきマスター計算機にレプリケーション接続してレプリケーションデータを受信する。
モード処理部15は、モード情報の送受信を含む管理と、自計算機のモード管理およびモード変更を行う部分であり、モード管理部151、モード送信部152、モード受信部153、モード管理表154を備えている。ここで、モード情報は、どの計算機が前記マスター計算機であるかを特定するマスター計算機情報と自計算機のモードを特定する自計算機モード情報を含む情報であり、モード管理表154に格納される。
モード管理部151は、マスターモード時とレプリカモード時の両方で動作する部分であり、モード管理表154を管理すると共に、モード設定アプリケーション18からのモード変更要求に応じて、モード変更が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行する。また、モード送信部152とモード受信部153は、マスターモード時とレプリカモード時の両方で動作する部分であり、他計算機との間でモード情報の送受信を行う。
リトリーブ処理部16は、リトリーブに必要なデータをリトリーブデータとして他計算機との間で送受信する部分であり、リトリーブ要求受理部161、リトリーブデータ送信部162、リトリーブ要求送信部163、リトリーブデータ受信部164、リトリーブ状態表165を備えている。
このうち、リトリーブ要求受理部161とリトリーブデータ送信部162は、マスターモード時に動作する部分であり、リトリーブ要求受理部161はレプリカ計算機からのリトリーブ要求を受理し、リトリーブデータ送信部162は要求元のレプリカ計算機にリトリーブデータを送信する。
また、リトリーブ要求送信部163とリトリーブデータ受信部164は、レプリカモード時に動作する部分であり、リトリーブ要求送信部163はマスター計算機にリトリーブ要求を送信し、リトリーブデータ受信部164はマスター計算機からのリトリーブデータを受信する。また、リトリーブ状態表165は、レプリカモード時に使用され、リトリーブデータとして送受信するデータ単位毎に、そのデータがリトリーブのどのような状態にあるかを示すリトリーブ状態情報が格納されている。このリトリーブ状態表165は、リトリーブ状態に応じてリトリーブ要求送信部163により更新される。
図2は、図1に示す複数の計算機を通信ネットワークで接続することによって構成される分散データ等価システムを示すブロック構成図である。複数の計算機のうち、特定の1つの計算機を、データベース11のオリジナルなデータ更新が可能なマスターモード、その他の計算機を、オリジナルなデータ更新はできずマスター側のデータ更新内容を複製するレプリカモードで運用することにより、マスター計算機およびレプリカ計算機としてそれぞれ動作させる。
図3は、図2に示す複数の計算機を、マスター計算機およびレプリカ計算機として動作させた場合のシステム構成を示すブロック構成図である。この図3においては、図1に示す各構成要素のうち、マスター計算機、レプリカ計算機として動作する際に使用される構成要素のみを示しており、マスター計算機とレプリカ計算機におけるそれらの構成要素の関係を示している。
以下には、これらの図1〜図3に示す計算機の各構成要素11〜16の詳細について順次説明する。
[2−1.データベース]
データベース11のデータファイル111には、表形式データファイルとデータ状態表という2種類のデータが格納されている。
表形式データファイルは、図4(a)に示すような、行、列からなる表形式データファイルであり、データファイル111内に1つまたは複数格納されている。以下の説明では、簡略化の観点から、表形式データファイルを「テーブル」と略称する。テーブルには、計算機間でデータファイル内のテーブルを一意に識別するための固有の名称が与えられており、この名称により個々のテーブルの識別を行う。この名称は、テーブルを一意に識別できるものであればよく、番号や記号からなる単なる文字列、記号列などでもよい。
データ状態表は、図4(b)に示すように、テーブル、列、行、のいずれかの単位のデータのそれぞれに、シリアル番号値が割り当てられた表であり、図4(b)においては、一例として列番号毎にシリアル番号値が割り当てられている。このシリアル番号は各単位のデータが計算機間で同一であるか否かを判断するために次のように使用される。すなわち、データファイル111において、あるテーブルの列番号、行番号により特定できる1つのデータ値が変更された際に、テーブル、列番号に対応するデータ状態表のシリアル番号値を加算して変更前と異なるシリアル番号値とすることで、計算機間ではシリアル番号値が一致していればテーブルの列番号により示されるデータ内容は同一であると判断し、一致していなければ同一でないと判断する。
なお、図4(b)では、列番号毎にシリアル番号値を与えているが、テーブル毎、行番号毎またはテーブル、行番号、列番号毎にシリアル番号値を与えて管理してもよい。また、本実施形態では、一例として、データファイル111のデータ本体を表形式のテーブルとしているが、変形例として、データファイル111のデータ本体の形式は、表形式データに限らず、データ内容の追加、削除、更新、参照を行うことが可能な形式であれば、どのような形式でもよい。
また、データベース11のマッピングデータ112は、ハードディスク上に配置されたデータファイル111中のテーブルおよびデータ状態表を、本システムおよび複数のデータ操作アプリケーション17から主記憶メモリ上の仮想メモリ・ページに直接マッピングしたものである。複数のデータ操作アプリケーション17が動作する場合には、データ操作アプリケーション17毎にマッピングデータ112が作成される。
データベース11へのデータ更新内容の反映処理においては、データファイル111へ直接反映処理を行うことなく、マッピングデータ112へ一旦反映することで、データファイル111への反映が間接的に行われ、同時に、本システムおよび複数のデータ操作アプリケーション17の仮想メモリ・ページにマッピングされているマッピングデータ112への反映が行われる。なお、変形例として、マッピングデータ112を作成せず、データベース11への更新、参照処理を行う毎にデータファイル111上のテーブル、データ状態表を構成するファイルへの書込み、読込み処理を行ってもよい。
[2−2.データ処理部]
更新データキャッシュ124は、図5に示すように、変更されたデータのテーブル名称、行番号、列番号、シリアル番号値、変更後データ値などにより管理されており、マスター計算機上で動作するデータ操作アプリケーション17に対して個別に作成・管理される。マスター計算機において、データ操作アプリケーション17が複数動作する場合には、各データ操作アプリケーション17に対して更新データキャッシュ124がそれぞれ作成され、データ更新処理部122によりデータの追加、変更、消去、データ参照処理部121によりデータの参照が行われる。
データ参照処理部121は、データ操作アプリケーション17からのデータ参照要求を受けた場合に、次のようなデータ参照処理を行う。すなわち、自計算機がマスター計算機として動作している場合には、対応するテーブル名称、行番号、列番号のデータが更新データキャッシュ124に存在するか否かを確認し、存在する場合には更新データキャッシュ124内のデータ値を返却する。マスター計算機として動作している場合にそのような更新データキャッシュデータが存在しない場合およびレプリカ計算機として動作している場合には、テーブルの行番号、列番号のデータ値を返却する。
データ更新処理部122は、マスター計算機として動作している自計算機上のデータ操作アプリケーション17からのデータ変更要求を受けた場合に、データ変更処理として、更新データキャッシュ124へ変更内容(データ更新操作の結果)の追加を行い、データ操作アプリケーション17からのコミット要求を受けた場合に、次のようなコミット処理を行う。
すなわち、コミット処理において、データ更新処理部122はまず、更新データキャッシュ124に格納された変更後データ値をテーブルへ反映すると共に、データ状態表の対応するテーブル名称、列番号のシリアル番号値に「1」加算し、加算したシリアル番号値を更新データキャッシュ124のシリアル番号値へ格納する。この後、更新データマージ部131へ更新データキャッシュ124の内容と共に通知を行い、更新データキャッシュ124の内容を空とする。
受信データ反映部123は、レプリカ計算機として動作している自計算機のマージデータ展開部132から、マスター計算機によるデータベースへの変更内容の通知を受けた場合に、次のようなデータ反映処理を行う。すなわち、データ反映処理において、受信データ反映部123は、リトリーブ状態表165を参照し、その変更内容が反映可能な場合にはテーブルへ反映し、データ状態表のシリアル番号値を更新する。また、変更内容が反映可能でない場合には一時保存し、反映可能となったタイミングでテーブルへ反映し、データ状態表のシリアル番号値の更新を行う。
[2−3.マージデータ処理部]
更新データマージ部131は、マスター計算機として動作している自計算機のデータ更新処理部122から更新データキャッシュ124の内容の通知を受けた場合に、今回通知された更新データキャッシュ124の内容と、以前に通知された一時保存中の更新データキャッシュ内容とのマージ処理を行う。ここで、以前に通知された一時保存中の更新データキャッシュ内容が存在する場合には、その更新データキャッシュ内容とのマージを行い、そのような一時保存中の更新データキャッシュ内容が存在しない場合には、今回通知された更新データキャッシュ内容を一時保存する。
このようなマージ処理は、予め設定されたマージ併合条件に従って行われる。すなわち、マージ併合条件を満たした場合には、一時保存中の複数の更新データキャッシュ内容をマージしてマージデータを作成し、このマージデータをそのままあるいは必要に応じて分割を行ってレプリケーションデータとし、レプリケーション通信部142に対してレプリケーションデータの送信依頼通知を行い、一時保存中の更新データキャッシュ内容を空にする。
ここで、マージ併合条件とは、次のような各種の条件項目の中から選択された単数または複数の条件項目を組み合わせたものである。各種の条件項目としては、一時保存中の更新データキャッシュ内容のデータサイズ、前回のマージ処理(レプリケーション通信部142への送信依頼通知を行い一時保存中の更新データキャッシュ内容を空にするまでの処理)完了後にデータ更新処理部122から通知を受けた回数、前回のマージ処理完了からの経過時間、などが考えられる。
マージデータ展開部132は、レプリカ計算機として動作している自計算機のレプリケーション通信部142から通知を受けたレプリケーションデータを、テーブルへ反映可能な更新内容コミットデータへ展開し、受信データ反映部123へ通知を行う。
[2−4.レプリケーション処理部]
レプリケーション管理表143には、図6に示すように、自計算機がマスター計算機として動作している場合には、データ等価対象である1または複数のレプリカ計算機の情報が格納されており、また、自計算機がレプリカ計算機として動作している場合には、マスター計算機の情報が格納されている。
レプリケーション管理部141は、モード管理部151からの要求を受け、レプリケーション管理表143の初期化や、マスター計算機情報の追加を行う。
レプリケーション通信部142は、マスター計算機として動作している場合に、レプリカ計算機からのレプリケーション接続を受けた場合には、そのレプリカ計算機を示すレプリカ計算機情報をレプリケーション管理表143に追加する。また、マスター計算機として動作している自計算機の更新データマージ部131より送信依頼通知を受けた場合には、レプリケーション管理表143に従い、レプリケーションデータ内容を1または複数のレプリカ計算機のレプリケーション通信部142へ送信する。
レプリケーション通信部142はまた、レプリカ計算機として動作している場合に、レプリケーション管理表143に格納されたマスター計算機情報に従い、マスター計算機へレプリケーション接続してマスター計算機からレプリケーションデータを受信し、マージデータ展開部132への通知を行う。
[2−5.モード処理部]
本実施形態において、モード管理表154は、図7に示すように、「自計算機モード情報」と「マスター計算機情報」から構成されている。「自計算機モード情報」には自計算機のモード情報が格納される。「マスター計算機情報」には、ネットワーク内にマスター計算機が存在する場合に、そのマスター計算機の情報が格納される。
なお、変形例として、自計算機モード情報のみ、あるいは、全ての計算機のモード情報を格納してもよい。また、モード情報の通信に一斉同報通信を利用して、モード変更した計算機がそのモード情報を複数の計算機に同時一斉に送信することにより、各計算機が他計算機のモード情報を自動的に取得してモード管理表154をリアルタイム更新することも可能である。
モード管理部151は、モード設定アプリケーション18からのマスターモードへのモード設定変更要求を受けた場合や、モード受信部153を通じて他計算機からのモード情報を受信した場合に、自計算機のモード変更およびモード管理表154の変更、モード送信部152への自計算機のモード情報の送信要求、レプリケーション管理部141へのレプリカ計算機追加通知やマスター計算機変更通知、リトリーブ要求送信部163へのリトリーブ開始要求通知、等を行う。
モード送信部152は、モード管理部151からの送信要求に従い、ブロードキャストやマルチキャスト等の一斉同報通信を使用して、ネットワーク上の1または複数の計算機のモード受信部153へモード情報データの送信を行う。
モード受信部153は、他の計算機のモード送信部152から送信されたモード情報データを受信し、モード管理部151へ通知する。
本発明において、モード管理で扱うモード種別は、最低限「マスター」と「レプリカ」が識別できることであるが、本実施形態では、本発明におけるマスターモードとレプリカモードに加えて、これらのモードになる途中の状態についても独立したモードとして取り扱うものとする。
以下には、マスターモードとレプリカモードをそれぞれ「マスター運用中」、「レプリカ運用中」と呼ぶと共に、レプリカモードおよびマスターモードへの各遷移状態をそれぞれ「マスター遷移中」、「レプリカ遷移中」と呼ぶ。すなわち、本実施形態では、モード種別として、「マスター運用中」、「レプリカ運用中」、「マスター遷移中」、「レプリカ遷移中」という4つのモードを取り扱う。
これらのモードのうち、マスターモードである「マスター運用中」だけが、データベース11中のデータに対して、単なる複製ではなく、オリジナルなデータ更新が可能なモードである。レプリカモードである「レプリカ運用中」は、データベース11のオリジナルなデータ更新ができず、マスター計算機でオリジナルにデータ更新されたデータの複製とその参照のみが可能なモードである。
「マスター遷移中」は、「マスター運用中」に遷移する途中のモードであるため、「マスター運用中」に遷移する場合には、常に「マスター遷移中」を経た上で「マスター運用中」に遷移する。例えば、「レプリカ運用中」の計算機において、外部アプリケーションからマスター計算機として動作するようにマスター切替を設定された場合には、「マスター遷移中」に遷移して他にマスター計算機が存在するか否かを確認した後、「マスター運用中」に遷移する。同様に、「レプリカ遷移中」は、「レプリカ運用中」に遷移する途中のモードであるため、「レプリカ運用中」に遷移する場合には、常に「レプリカ遷移中」を経た上で「レプリカ運用中」に遷移する。
なお、計算機が「マスター遷移中」、「レプリカ遷移中」のいずれかのモードである場合、その計算機は、アプリケーションとの関係ではいずれもレプリカ計算機と同様の存在となる。
図8は、4種類のモードから他のモードに遷移する場合の遷移条件として、各モードにおける遷移のトリガー(きっかけ、契機となる事象)と遷移先を示す図である。矢印上に記載された内容が「トリガー」である。この図8においては、4種類のモードの他に、データベースがない状態(データベースの初期化前または停止後の状態)として「データベースなし」モードを便宜的に導入しているが、この「データベースなし」モードは、モード管理表151には現れないモードである。以下には、図8を参照しながら、この「データベースなし」モードを含む計5種類のモードでの遷移フローを説明する。
まず、5種類のモード間の遷移トリガーは、大別して、「データベース起動/停止」、「外部アプリケーションのモード設定」、「他計算機からのモード情報受信」、という3種類に分類できる。
第1のトリガー「データベース起動/停止」は、「データベースなし」モードを遷移先または遷移元とするトリガーである。データベースの起動時直前のモードは、「データベースなし」である。この場合に、データベース11を起動すると、まず、「レプリカ遷移中」に遷移する。「データベースなし」モードへは、他の4つのいずれかのモードからも遷移可能であり、そのためのトリガーはデータベース11の停止である。
第2のトリガー「外部アプリケーションのモード設定」は、システム外部のモード設定アプリケーション18によってモード設定されることである。自計算機をマスター計算機に設定するというモード設定操作が行われた場合に、自計算機のモードが「レプリカ運用中」または「レプリカ遷移中」ならば、「マスター遷移中」に遷移する。
第3のトリガー「他計算機からのモード情報受信」は、他計算機からその計算機のモードを示すモード情報を受信することである。他計算機からモード情報を受信した場合には、自計算機のモードをそのモード情報に応じた遷移先モードに変更する。図9は、このようなモード受信時の遷移条件を示す表であり、左の欄に示す現在のモードにおいて右上欄に示すモードであることを示すモード情報を受信した場合における、自計算機の遷移先モードを、現在モードと受信モードの交差する中央の各欄にそれぞれ示したものである。
この図9に示すように、自計算機が「マスター運用中」モードである時に、他の計算機から「マスター遷移中」モードを受信した場合、自計算機を最終的には「レプリカ運用中」モードに変更することになるので、モード管理部151は、そのための前段階としてまず、自計算機を途中のモードである「レプリカ遷移中」モードに変更し、モード管理表154の「自計算機モード」欄を「レプリカ遷移中」に変更する。
また、自計算機が「レプリカ運用中」モードである時に、他の計算機から「マスター遷移中」モードを受信した場合、この場合にも最終的には「レプリカ運用中」モードになるので、モード管理部151は、そのための前段階として自計算機を「レプリカ遷移中」モードに変更し、モード管理表154の「自計算機モード」欄を「レプリカ遷移中」に変更する。
なお、このように、最終的に「レプリカ運用中」モードにすべき状況で現在モードが「レプリカ運用中」モードである場合は、変形例として、「レプリカ遷移中」モードに変更せずに、そのまま「レプリカ運用中」モードを維持することも考えられるが、本実施形態では、他の計算機から「マスター遷移中」モードを受信した場合の処理を現在モードに関わらず等しくする観点から、現在モードが「レプリカ運用中」であっても、「レプリカ遷移中」に一旦変更するものとする。
また、自計算機が「マスター遷移中」モードである時に、以前のマスター計算機から「レプリカ遷移中」モードを受信した場合には、以前のマスター計算機がマスター計算機でなくなったことを確認したことになるので、モード管理部151は、自計算機を「マスター運用中」モードに変更し、モード管理表154の「自計算機モード」欄を「マスター運用中」に変更する。
これに対して、自計算機が「レプリカ遷移中」モードである時に、新マスター計算機から「マスター運用中」モードを受信した場合には、新たにマスター計算機が確立したことを確認したことになるので、モード管理部151は、自計算機を「レプリカ運用中」モードに変更し、モード管理表154の「自計算機モード」欄を「レプリカ運用中」に変更する。
モード管理部151は、以上のような各モード遷移を行った後、遷移後の新モードに応じて決定される各動作を実行する。図10は、そのようなモード遷移後に行う動作を示したものである。
この図10に示すように、「マスター運用中」にモード遷移した場合には、モード管理部151は、単純に、モード送信部152により新モード「マスター運用中」の送信のみを行う。
また、「レプリカ運用中」にモード遷移した場合には、モード管理部151は、モード送信部152により新モード「レプリカ運用中」を送信すると共に、レプリケーション管理部141とレプリケーション通信部142によりマスター計算機に対してレプリケーション接続し、リトリーブ要求送信部163によりリトリーブ要求を送信する。
また、「マスター遷移中」にモード遷移した場合には、モード管理部151は、モード送信部152により新モード「マスター遷移中」を送信すると共に、最終的に「マスター運用中」にモード遷移した際の動作の準備として、レプリケーション管理部141とレプリケーション通信部142によりレプリケーション送信を開始し、リトリーブ要求受理部161を起動する。ここで、レプリケーション送信の開始においては、以前のレプリケーション管理表143を抹消してレプリケーション接続を待つ。
また、「レプリカ遷移中」にモード遷移した場合には、モード管理部151は、単純に、モード送信部152により新モード「レプリカ遷移中」の送信のみを行う。
以上のように、モード処理部15は、図8および図9に示すような予め決められた遷移条件に基づき、モード遷移を行うと共に、モード遷移後には、レプリケーション処理部14およびリトリーブ処理部16と連携して、図10に示すような予め決められた内容のモード遷移後の動作を実行する。
[2−6.リトリーブ処理部]
リトリーブ状態表165には、図11に示すように、各テーブルのリトリーブ状態が格納されている。
リトリーブ要求受理部161は、自計算機がマスター計算機である場合にのみ動作し、レプリカ計算機である他の計算機のリトリーブ要求送信部163から「データ状態表」の送信要求、または「テーブルの列に関するデータ」および「データ状態表」の送信要求を受けた場合に、リトリーブデータ送信部162へその送信要求を行う。
リトリーブデータ送信部162は、自計算機がマスター計算機である場合にのみ動作し、リトリーブ要求受理部161で受け付けた送信要求の要求内容に応じて、自計算機のデータベース11中のテーブルおよびデータ状態表からデータを取得し、取得したデータを「送信要求内容に応じたデータ」として、要求元レプリカ計算機のリトリーブデータ受信部164へ送信する。
リトリーブ要求送信部163は、自計算機がレプリカ計算機である場合にのみ動作し、自計算機のモード管理部151、マージデータ展開部132、受信データ反映部123からの通知を受けた場合に、「データ状態表」の送信要求、または「テーブルの列に関するデータ」および「データ状態表」の送信要求をマスター計算機のリトリーブデータ送信部162に行い、リトリーブ状態表165の更新を行う。
リトリーブ要求送信部163は、行った送信要求が「データ状態表の送信要求」である場合には、要求先マスター計算機から「送信要求内容に応じたデータ」として送信される「データ状態表」を、リトリーブデータ受信部164を通じて受信し、自計算機のデータベース11のデータ状態表全体と比較する。このデータ状態表比較の結果として、シリアル番号値の異なる「テーブル、列」が得られた場合に、その「テーブル、列」についての「テーブルの列に関するデータ」および「データ状態表」の送信要求をマスター計算機のリトリーブデータ送信部162へ行い、リトリーブ状態表165の更新を行う。
リトリーブ要求送信部163はまた、行った送信要求が、上記のような「テーブル、列」についての「テーブルの列に関するデータ」および「データ状態表」の送信要求である場合には、要求先マスター計算機のリトリーブデータ送信部162から、それらのデータを含む完了通知を、リトリーブデータ受信部164を通じて受信し、リトリーブ状態表165の更新を行う。
リトリーブデータ受信部164は、要求先マスター計算機のリトリーブデータ送信部162から受信した内容が、「データ状態表」である場合には、リトリーブ要求送信部163へその内容を通知する。これに対して、受信した内容が「テーブル、列」についての「テーブルの列に関するデータ」および「データ状態表」である場合には、自計算機のデータベース11中のテーブルおよびデータ状態表へ反映し、完了結果をリトリーブ要求送信部163へ通知する。
[3.初期起動・モード変更処理]
図12は、図1〜図3に示す分散データ等価システムの各計算機による初期起動からシステム停止に至るまでの動作概要を示すフローチャートである。
この図12に示すように、各計算機は、モード処理部15とレプリケーション処理部14およびリトリーブ処理部16の連携により、「初期起動処理」を行う(S1201)ことで、「レプリカ遷移中」モードまたは「レプリカ運用中」モードとなり、レプリカ計算機として動作する(S1202)。その後、モード設定アプリケーション18で自計算機のマスター設定が行われた場合(S1203のYES)には、モード処理部15とレプリケーション処理部14およびリトリーブ処理部16の連携により、「自計算機マスター設定時のモード変更処理」を行う(S1204)ことで、マスター運用中モードとなり、マスター計算機として動作する(S1205)。
また、他の計算機のマスター設定が行われた場合(S1206のYES)には、モード処理部15とレプリケーション処理部14およびリトリーブ処理部16の連携により、「他計算機マスター設定時のモード変更処理」を行う(S1207)ことで、レプリカ運用中モードとなり、レプリカ計算機として動作する(S1208)。各計算機は、自計算機のデータベース11が停止するまで(S1209のNO)、自計算機または他計算機のマスター設定に応じたモード変更処理(S1203〜S1208)を繰り返し、自計算機のデータベース11が停止した時点(S1209のYES)で動作を終了する。
以下には、図12に示す動作のうち、初期起動処理(S1201)、自計算機マスター設定時のモード変更処理(S1204)、他計算機マスター設定時のモード変更処理(S1207)の詳細について順次説明する。
[3−1.初期起動処理]
図13は、図12に示す初期起動処理(S1201)の処理手順の概要を示すフローチャートである。この処理は、モード管理部151を処理主体とし、レプリケーション管理部141およびリトリーブ要求送信部163と連携して行われる。
なお、初期起動時には、計算機はレプリカ計算機として起動させるため、モード管理表154の最初の自計算機モードをレプリカ遷移中と設定する。なお、初期起動時の最初のモードは4つのモードのどれでもよいが、処理フローを簡略化する観点から、本実施形態においては最初のモードを「レプリカ遷移中」とした場合について説明する。
まず、モード管理部151により、通信ネットワーク内にマスター計算機が存在するか否かの確認を行う(S1301)。モード管理部151は、この確認を行うための処理として、具体的には、モード送信部152を通じて、マスター計算機が存在するかの「問い合わせ」をマルチキャストまたはブロードキャストにてネットワーク上へ送信し、一定時間応答を待つ。
この「問い合わせ」に対して、通信ネットワーク内にマスター計算機として動作している計算機が存在する場合には、そのマスター計算機上のモード受信部153により「問い合わせ」が受信され、マスター計算機上のモード管理部151へ通知が行われる。この場合に、そのマスター計算機上のモード管理部151は、モード送信部152を通じて自計算機がマスター計算機であることを示す情報を送信する。そして、問い合わせ元の計算機において、モード受信部153によりマスター計算機の情報を受信し、その通知をモード管理部151により受けた場合には、マスター計算機の存在を確認したことになる。
このようなマスター計算機の確認処理(S1301)の結果、マスター計算機が存在しない場合(S1302のNO)には、自計算機または通信ネットワーク上の他計算機がマスター計算機となるまで、モード管理部151により自計算機モードおよびモード管理表154の自計算機モード情報を「レプリカ遷移中」に維持し、レプリカ計算機として動作する(S1303)。
これに対して、マスター計算機が存在する場合(S1302のYES)には、モード管理部151によりモード管理表154のマスター計算機情報の設定を行い(S1304)、モード管理部151からリトリーブ要求送信部163に通知を行うことで、リトリーブ要求送信部163により、リトリーブ状態表165の初期化を行う(S1305)。このリトリーブ状態表165の初期化において、リトリーブ要求送信部163は、データファイル111内の全てのテーブルについて、リトリーブ状態表165の状態を「リトリーブ未」に設定する。
リトリーブ状態表165の初期化(S1305)を完了した後、モード管理部151からレプリケーション管理部141にマスター計算機情報の通知を行うことで、レプリケーション管理部141により、レプリケーション受信開始のための処理を行う(S1306)。
この場合、レプリケーション管理部141は、レプリケーション受信するための処理として、具体的には、モード管理部151から通知されたマスター計算機情報をレプリケーション管理表143へ格納し、レプリケーション通信部142によりマスター計算機へのレプリケーション接続処理を行う。レプリケーション接続処理とは、自計算機がレプリケーション受信する対象であることをマスター計算機に通知することである。これにより、レプリケーション通信部142は、マスター計算機からのレプリケーション受信が可能となる。
このようなレプリケーション受信開始処理(S1306)の結果、レプリケーション受信可能となった後、モード管理部151からリトリーブ要求送信部163に通知を行うことで、リトリーブ要求送信部163により、データベース全体のリトリーブ処理を行う(S1307)。
図14(a)は、このデータベース全体のリトリーブ処理(S1307)の処理手順を示すフローチャートである。この処理は、リトリーブ要求送信部163を処理主体として行われる。
まず、マスター計算機からデータ状態表の取得を行い(S1401)、各テーブルについて(S1402)、自計算機のデータ状態表との比較を行い(S1403)、テーブルの列全てのバージョン番号値が等しいテーブルについて(S1404のYES)は、リトリーブ状態表165の該当テーブルの状態を「リトリーブ済」とし(S1405)、その他の、バージョン番号値の異なる列を持つテーブルについて(S1404のNO)は、「テーブル、列のリトリーブ要求処理」を行う(S1406)。
図14(b)は、この「テーブル、列のリトリーブ要求処理」(S1406)の処理手順を示すフローチャートである。初めに、要求を受けたテーブルについて「リトリーブ中」とし(S14061)、テーブル毎にバージョン番号の異なるカラムについての情報とともにマスター計算機へ送信要求を行う(S14062)。
この送信要求を受けたマスター計算機のリトリーブ要求受理部161からリトリーブデータ送信部162へ通知を行い、送信要求内容に応じたデータがリトリーブデータとして送信されることにより、このリトリーブデータは、「送信要求内容に応じたリトリーブデータ」として、リトリーブ要求元の計算機のリトリーブデータ受信部164により受信される(S14063)。その結果、「リトリーブ実行処理」として、リトリーブデータ受信部164によりテーブルおよびデータ状態表へリトリーブデータが一括的に反映されると共に、リトリーブ要求送信部163へのリトリーブ完了通知が行われる(S14064)。
図14(a)に示すデータベース全体のリトリーブ処理においては、全てのテーブルについて一連の処理手順(S1402〜S1407)が完了した後、リトリーブ要求送信部163によってリトリーブデータ受信部164からのリトリーブ完了通知を受ける(S1410)。その結果、リトリーブ要求送信部163は、リトリーブ状態表165の該当するテーブルの状態を「リトリーブ済」とし(S1411)、全てのテーブルについて「リトリーブ済」となった時点(S1408の”YES”)で、データベース全体のリトリーブ処理は完了となる(S1409)。
図13に示す「初期起動処理」においては、図14(a)に示す「データベース全体のリトリーブ処理」(S1307)が完了した後、モード管理部151により、自計算機モードおよびモード管理表154の自計算機モード情報を「レプリカ運用中」へ変更し(S1308)、これ以降、自計算機は、マスター変更が発生するまで「レプリカ運用中」モードを維持し、レプリカ計算機として動作する(S1309)。
なお、図13中の「レプリケーション受信開始処理」(S1306)における「レプリケーション接続」とは、通信層(IP層)での接続ではなく、本システムでのレプリケーションの管理層(レプリケーション処理部14)での接続である。また、レプリケーション通信には、IP層のTCPやUDP(マルチキャスト、ブロードキャスト)が用いられる。接続型IP通信であるTCPを用いる時は、レプリケーション接続処理と同期してTCPレベルでの接続処理を行う。
[3−2.自計算機マスター設定時のモード変更処理]
図15は、図12に示す自計算機マスター設定時のモード変更処理(S1204)の処理手順の概要を示すフローチャートである。この処理は、モード管理部151を処理主体とし、レプリケーション管理部141およびリトリーブ要求受理部161と連携して行われる。
なお、この「自計算機マスター設定時のモード変更処理」の具体的な処理手順は、自計算機がマスター計算機とレプリカ計算機のいずれであるかにより異なり、レプリカ計算機である場合には、現在のモードがレプリカ運用中とレプリカ遷移中のいずれであるかにより異なる。以下では、これらの状況別における処理手順について説明する。
前述した初期起動時に通信ネットワーク内にマスター計算機が存在しない場合には、各計算機において、モード管理表154の自計算機モード情報は「レプリカ遷移中」に設定され、マスター計算機情報は空となっている。一方、初期起動時にスター計算機が存在する場合には、それ以外の計算機において、モード管理表154の自計算機モード情報は「レプリカ運用中」に設定され、マスター計算機情報には、マスター計算機として現在動作している計算機の情報が格納されている。
さらに、初期起動後に1回またはそれ以上のマスター設定によるモード変更処理が行われた後には、各計算機において、モード管理表154の自計算機モード情報は「マスター運用中」、「レプリカ運用中」、「マスター遷移中」、「レプリカ遷移中」、のいずれかに設定され、マスター計算機情報には、マスター計算機として現在動作している計算機の情報が格納されている。ここで、自計算機がマスター計算機として動作している場合には、モード管理表154の自計算機モード情報は「マスター運用中」に設定され、マスター計算機情報には自計算機の情報が格納されている。
このような各種の状況において、モード設定アプリケーション18により自計算機のマスター設定が行われると(S1501)、モード管理部151により処理が行われる。モード管理部151は、モード管理表154の自計算機モード情報を参照し、マスター計算機であるか否かの確認を行う(S1502)。自計算機がマスター計算機である場合には(S1502のYES)、そのままマスター設定処理を完了する。
また、自計算機がマスター計算機でない場合には(S1502のNO)、モード管理表154の自計算機モード情報を「マスター遷移中」へ変更する(S1503)。
自計算機モード情報を「マスター遷移中」へ変更後、モード管理部151は、モード送信部152によりマスター遷移中情報の送信を行う(S1504)。マスター遷移中情報の送信では、自計算機モード情報としてマスター遷移中情報をマルチキャストまたはブロードキャストにてネットワーク上へ送信する。
次に、モード管理部151は、自計算機のモード管理表154にて「マスター運用中」モードで現在動作中のマスター計算機(現マスター計算機)が存在するか否かを確認し(S1505)、現マスター計算機が存在する場合には(S1505のYES)、現マスター計算機からレプリカ遷移中情報が送信されてくるまで一定時間受信待ちを行い、モード受信部153により現マスター計算機からのレプリカ遷移中情報を受信する(S1506)。モード管理部151は、現マスター計算機からのレプリカ遷移中情報を受信した場合、または、現マスター計算機が存在しない場合には(S1505のNO)、モード管理表154のマスター計算機情報へ自計算機の情報を格納する(S1507)。
その後、モード管理部151からレプリケーション管理部141に自計算機マスター情報の通知を行い、レプリケーション管理部141により、レプリケーション送信開始処理を行う(S1508)。レプリケーション管理部141は、このレプリケーション送信開始処理として、具体的には、レプリケーション管理表143の初期化を行い、レプリケーション通信部142がマスター計算機とレプリケーション接続している場合には切断処理を行い、レプリカ計算機からのレプリケーション接続要求の受付を可能とする。このようなレプリケーション送信開始処理を行うことにより、マスター計算機では、レプリカ計算機からのレプリケーション接続要求を受け、接続を行い、以降に発生するレプリケーションデータの送信が可能となる。
次に、モード管理部151からの通知により、リトリーブ要求送信部163の停止(S1509)を行う。リトリーブ要求送信部163は、現在要求中の処理がある場合には、その処理を停止する。
続いて、モード管理部151からの通知により、リトリーブ要求受理部161の開始(S1510)を行う。リトリーブ要求受理部161は、開始処理を行うことでレプリカ計算機からのリトリーブ要求に応答可能となる。
この後、モード管理部151は、モード管理表154の自計算機モード情報を「マスター運用中」へ変更し(S1511)、モード送信部152にてマスター運用中情報の送信を行い(S1512)、マスター計算機としての動作を開始する。
[3−3.他計算機マスター設定時のモード変更処理]
図16、図17は、図12に示す他計算機マスター設定時のモード変更処理(S1207)の処理手順の概要を示すフローチャートであり、図16は、「レプリカ遷移中」モードに遷移するまでの前半部分、図17は、その後「レプリカ運用中」モードに遷移するまでの後半部分を示している。この処理は、モード管理部151を処理主体とし、レプリケーション管理部141およびリトリーブ要求送信部163と連携して行われる。
なお、この「自計算機マスター設定時のモード変更処理」の具体的な処理手順は、自計算機がマスター計算機とレプリカ計算機のいずれであるかにより異なり、レプリカ計算機である場合には、現在のモードがレプリカ運用中とレプリカ遷移中のいずれであるかにより異なる。以下では、これらの状況別における処理手順について説明する。
前述した初期起動時に通信ネットワーク内にマスター計算機が存在しない場合には、各計算機において、モード管理表154の自計算機モード情報は「レプリカ遷移中」に設定され、マスター計算機情報は空となっている。一方、初期起動時にスター計算機が存在する場合には、それ以外の計算機において、モード管理表154の自計算機モード情報は「レプリカ運用中」に設定され、マスター計算機情報には、マスター計算機として現在動作している計算機の情報が格納されている。
さらに、初期起動後に1回またはそれ以上のマスター設定によるモード変更処理が行われた後には、各計算機において、モード管理表154の自計算機モード情報は「マスター運用中」、「レプリカ運用中」、「マスター遷移中」、「レプリカ遷移中」、のいずれかに設定され、マスター計算機情報には、マスター計算機として現在動作している計算機の情報が格納されている。ここで、自計算機がマスター計算機として動作している場合には、モード管理表154の自計算機モード情報は「マスター運用中」に設定され、マスター計算機情報には自計算機の情報が格納されている。
他計算機の1つでマスター設定が行われると、その計算機において前述した「自計算機マスター設定時のモード変更処理」が行われ、マスター遷移中情報が送信される(S1504)。
自計算機において、そのような他計算機からのマスター遷移中情報をモード受信部153により受信すると(S1601)、モード管理部151は、モード管理表154の自計算機モード情報を参照して、自計算機のモードが「マスター運用中」または「レプリカ運用中」であるか否かの確認を行う(S1602)。
確認の結果、自計算機のモードが「マスター運用中」と「レプリカ運用中」のいずれでもない場合、すなわち、「マスター遷移中」または「レプリカ遷移中」である場合には(S1602のNO)、そのまま処理を完了する。例えば、初期起動時にマスター計算機が存在しなかった場合の処理では、自計算機は「レプリカ遷移中」であるが、この際に、他計算機からのマスター遷移中情報を受信してもモード変更処理を行うことはない。
また、確認の結果、自計算機のモードが「マスター運用中」または「レプリカ運用中」である(S1602のYES)場合には、モード管理部151からレプリケーション管理部141に通知を行い、レプリケーション管理部141によりレプリケーション停止処理を行う(S1603)。レプリケーション管理部141は、このレプリケーション停止処理として、具体的には、レプリケーション管理表143の初期化を行い、レプリケーション通信部142がマスター計算機とレプリケーション接続している場合には切断処理を行い、レプリカ計算機からのレプリケーション接続を受けている場合には切断処理を行う。このようなレプリケーション停止処理処理を行うことにより、以降、レプリケーション処理の開始を行うまでは、レプリケーションの送信・受信処理は発生しなくなる。
次に、モード管理部151は、自計算機のモードが「マスター運用中」であるか否かを判定する(S1604)。自計算機のモードが「マスター運用中」である(S1604のYES)場合には、モード管理部151からの通知により、リトリーブ要求受理部161の停止(S1605)を行う。リトリーブ要求受理部161は、この時点で、現在受付済みの要求処理がリトリーブデータ送信部162において実行されている場合にその処理を停止する。
また、自計算機のモードが「マスター運用中」でない(S1604のNO)場合には、モード管理部151からの通知により、リトリーブ要求送信部163の停止(S1606)を行う。リトリーブ要求送信部163は、現在要求中の処理がある場合には、その処理を停止する。
次に、モード管理部151は、モード管理表154の自計算機モード情報を「レプリカ遷移中」へ変更する(S1607)。変更前のモード情報もまた、以降の処理で必要なため、変更前の時点で記憶しておく。
モード管理部151は、自計算機のモードを「レプリカ遷移中」へ変更した後、モード送信部152によりレプリカ遷移中情報の送信を行う(S1608)。このレプリカ遷移中情報の送信処理においては、レプリカ遷移中情報をマルチキャストまたはブロードキャストにてネットワーク上へ送信する。ここで、自計算機の変更前のモードが「マスター運用中」であった場合には、このレプリカ遷移中情報に対して、新規マスター計算機による受信待ちが行われている。
レプリカ遷移中情報の送信処理(S1608)を行った後は、モード管理部151は、新規マスター計算機からのマスター運用中情報の受信待ちを行う。
その後、前記マスター遷移中情報の送信元である新規マスター計算機から、その計算機の前記「自計算機マスター設定時のモード変更処理」によりマスター運用中情報が送信されると(S1512)、図17に示すように、自計算機においては、その新規マスター計算機からのマスター運用中情報をモード受信部153により受信する(S1701)。この場合に、モード管理部151は、自計算機のモード管理表154のマスター計算機情報を、その新規マスター計算機の情報に変更し(S1702)、リトリーブ状態表165の初期化を行い(S1703)、レプリケーション受信開始処理(S1704)、データベース全体のリトリーブ処理(S1705)を行い、データベース全体のリトリーブ処理が完了した後、自計算機モード情報を「レプリカ運用中」へ変更し(S1706)、レプリカ計算機として動作する(S1707)。
ここで、マスター計算機情報の設定からレプリカ計算機として動作するまでの一連の処理(S1702〜S1707)は、図13の初期起動処理における一連の処理(S1304〜S1309)と同様である。
[4.データ変更・反映処理]
図18は、図1〜図3に示す分散データ等価システムにおいて、マスター計算機のデータ変更処理からレプリカ計算機のデータ反映処理に至るまでの分散データ等価処理手順の概要を示すフローチャートである。
この図18に示すように、「マスター運用中」モード(S1205)で動作しているマスター計算機において、データ処理部12により、データベース11中のデータの変更内容を更新データキャッシュ124に格納するデータ変更処理(S1801)を行い、その変更内容を更新内容コミットデータとしてデータベース11に反映するコミット処理(S1802)を行う。次に、更新データマージ部131により、マージ併合条件に従って、更新内容コミットデータである更新データキャッシュ内容をマージするマージ処理(S1803)を行い、続いて、レプリケーション処理部14により、マージされたデータをレプリケーションデータとしてレプリカ計算機に送信するレプリケーション送信処理(S1804)を行う。
この後、「レプリカ運用中」モード(S1208)で動作しているレプリカ計算機において、レプリケーション処理部14により、マスター側から送信されたレプリケーションデータを受信するレプリケーション受信処理(S1811)を行う。次に、マージデータ処理部13により、レプリケーションデータをデータベース11に反映可能な更新内容コミットデータへ展開するマージデータ展開処理(S1812)を行い、続いて、データ処理部12により、展開された更新内容コミットデータを、自計算機のデータベース11に反映するデータ反映処理(S1813)を行うことで、マスター計算機のデータベース11と同一内容に等価する。
以下には、図18に示す各処理の詳細について順次説明する。
[4−1.データ変更処理]
図19は、図3に示すマスター計算機のデータ処理部12によるデータ変更処理手順の概要を示すフローチャートである。
この図19に示すように、データ操作アプリケーション17によりデータ変更要求が行われた場合(S1901)には、データ更新処理部122により、そのデータ変更要求に応じた変更内容を更新データキャッシュ123に格納するデータ変更処理が行われる。ここでは、一例として、データ変更要求は、変更するテーブルの「テーブルのテーブル名称」、変更するデータの「テーブル内での行番号」、「テーブル内での列番号」、「変更後データ値」により与えられるものとする。
データ更新処理部122は、まず、モード管理表154の自計算機モード情報を参照し、自計算機が「マスター運用中」モードで動作しているマスター計算機であるか否かの確認を行う(S1902)。自計算機がマスター計算機でない場合(S1902のNO)には、そのままデータ変更処理を終了する。
また、自計算機がマスター計算機である場合(S1902のYES)には、データ更新処理部122は、「テーブルのテーブル名称」、「テーブル内での行番号」、「テーブル内での列番号」により、更新データキャッシュ123内にそのデータ変更要求に該当するキャッシュデータが既に存在するか否かを確認する(S1903)。該当するキャッシュデータが存在する場合(S1903のYES)には、該当するキャッシュデータの「変更後データ値」の更新を行う(S1905)。
また、更新データキャッシュ123内にデータ変更要求に該当するキャッシュデータが存在しない場合(S1903のNO)には、更新データキャッシュ123内に、新たにキャッシュデータを追加し、追加したキャッシュデータの情報として、「テーブルのテーブル名称」、「テーブル内での行番号」、「テーブル内での列番号」、「変更後データ値」を格納する(S1904)。
[4−2.変更内容のコミット処理]
図20は、図3に示すマスター計算機のデータ処理部12による変更内容のコミット処理手順の概要を示すフローチャートである。
この図20に示すように、データ操作アプリケーション17により変更内容のコミット要求が行われた場合(S2001)には、データ更新処理部122により、更新データキャッシュ123内にキャッシュデータが格納されているか否かを確認する(S2002)。更新データキャッシュ123内にキャッシュデータが格納されている場合(S2002のYES)には、個々のキャッシュデータについて(S2003)、次のような一連の処理(S2004〜S2006)を行う。
すなわち、個々のキャッシュデータについて(S2003)、「変更後データ値」をデータファイル111の該当するテーブル名称のテーブルの行番号、列番号のデータ値へ反映し(S2004)、データ状態表112の該当するテーブル名称、列番号のシリアル番号値を加算し(S2005)、加算後のシリアル番号値をキャッシュデータの「シリアル番号値」へ格納する(S2006)。
全てのキャッシュデータについて一連の処理(S2004〜S2006)が完了(S2007)した後、その時点での更新データキャッシュ123の内容を更新データマージ部131に通知してマージ要求する「更新データキャッシュのマージ要求処理」(S2008)を行い、続いて、更新データキャッシュ123内のキャッシュデータを空の状態にする(S2009)。
[4−3.コミットデータのマージ処理]
図21は、図3に示すマスター計算機のマージデータ処理部13によるコミットデータのマージ処理手順の概要を示すフローチャートである。
ここでは、マージ要求を受けた複数のキャッシュデータの内容を、どのタイミングでマージしてレプリケーション通信部142へ送信要求を行うかについてのマージ併合条件が、次のような複数の条件項目の組み合わせであるものとする。すなわち、マージ併合条件は、「『現在マージされている複数のキャッシュデータの総データサイズ』、『前回レプリケーション通信部142へ送信要求を行ってからの時間』、『前回レプリケーション通信部142へ送信要求を行ってからマージ要求を受付けた回数』、という複数の項目のいずれかが設定済みの閾値を超えること」、として設定されているものとする。
図21に示すように、マージ処理において、更新データマージ部131は、データ更新処理部122からの更新データキャッシュ内容のマージ要求をタイムアウト付きで「受付待ち」しており(S2101)、いずれかの事象の発生により「受付待ち」が解除された場合(S2102)には、その発生した事象がタイムアウトとマージ要求の受付のいずれであるかの判定(S2103)を行う。
タイムアウトが発生した場合には(S2103のNO)、一時保存領域に現在保存中のマージ中データがあるか否かの判定を行う(S2104)。なお、「マージ中データ」とは、更新データキャッシュ内容をマージして得られたマージデータのうち、特に、レプリケーション送信要求用のデータとして確定する前の処理途中のデータを示しており、マージ併合条件に基づいてさらに別の更新データキャッシュ内容とマージされる可能性のあるデータを意味している。
一時保存領域に現在保存中のマージ中データが存在しない場合(S2104のNO)には、要求受付回数、タイムアウト時間のリセットを行い(S2106)、再び、マージ要求受付待ち(S2102)を行う。また、一時保存領域に現在保存中のマージデータが存在する場合(S2104のYES)には、一時保存中のマージ中データをレプリケーション送信要求用のデータとして確定してレプリケーション通信部142に対してレプリケーション送信要求を行う(S2105)。続いて、送信要求済のマージデータ、要求受付回数、タイムアウト時間のリセットを行い(S2106)、再び、マージ要求受付待ち(S2101)を行う。
一方、マージ要求を受け付けた場合(S2103のYES)には、一時保存領域に現在保存中のマージ中データがあるか否かの判定を行う(S2107)。一時保存領域に現在保存中のマージ中データが存在する場合(S2107のYES)には、その現在保存中のマージ中データと、今回要求を受け付けた更新データキャッシュ内容とのマージを行う(S2108)。また、現在保存中のマージ中データが存在しない場合(S2107のNO)には、要求を受けた更新データキャッシュ内容をマージ中データとして一時保存領域に保存する(S2109)。
その後、マージ併合条件に基づいて、「現在保存中のマージ中データのサイズが閾値を超えているか」(S2110)、「現在保存中のマージ中データを構成するために受け付けた要求受付回数が閾値を超えているか」(S2111)の判定を行い、いずれかの閾値を超えている場合(S2110のYESまたはS2111のYES)には、レプリケーション通信部142へレプリケーション送信要求(S2105)を行い、その要求に使用された現在保存中のマージ中データ、要求受付回数、タイムアウト時間のリセットを行い(S2106)、再びマージ要求受付待ち(S2101)を行う。
マージ併合条件に基づく上記の判定において、いずれの閾値も超えていない場合(S2110のNOおよびS2111のNO)には、タイムアウト時間の設定を行い(S2112)、再びマージ要求受付待ち(S2102)を行う。
なお、以上のようなマージ処理において、レプリケーション送信要求(S2105)を行う際には、確定された元のマージデータをそのまま使用してもよいが、別の手法として、元のマージデータを分割または圧縮して得られたデータを使用してもよい。すなわち、元のマージデータの内容を複数に分割して得られたデータ、あるいは、元のマージデータをハフマン符号化等のデータ圧縮手段を用いて圧縮して得られたデータ、またはそれらの分割、圧縮の両方を共に実行して得られたデータ、のいずれかのデータを用いてレプリケーション送信要求を行ってもよい。
[4−4.レプリケーション送受信処理]
図22は、図3に示すマスター計算機とレプリカ計算機のレプリケーション処理部14によるレプリケーション送信処理手順とレプリケーション受信処理手順の概要を示すフローチャートである。
この図22に示すように、マスター計算機のレプリーション管理部141は、レプリケーション送信要求待ちを行っており(S2201)、自計算機の更新データマージ部131からレプリケーション送信要求を受けると、レプリケーション管理表143を参照して、レプリケーションデータの送信先となるレプリカ計算機が存在するか否かを判定する(S2202)。
送信先レプリカ計算機が存在しない場合(S2202のNO)には、要求を受けたデータ内容を破棄して、再び送信要求待ち(S2201)を行う。また、送信先レプリカ計算機が存在する場合(S2202の”YES”)には、レプリケーション管理表143中のその送信先レプリカ計算機の情報を参照して、レプリケーション通信部142により送信先レプリカ計算機のレプリケーション通信部142へデータ送信を行う(S2203)。
一方、レプリカ計算機のレプリケーション管理部141は、マスター計算機からのレプリケーションデータの受信待ちを行っており(S2211)、マスター計算機からのレプリケーションデータを受信すると(S2212)、その受信したデータ内容について、自計算機のマージデータ展開部132にマージデータ展開要求を行う(S2213)。
[4−5.マージデータ展開・データ反映処理]
図23、図24は、図3に示すレプリカ計算機のマージデータ処理部13とデータ処理部12によるマージデータ展開処理手順とデータ反映処理手順の概要をそれぞれ示すフローチャートである。
図23に示すように、マージデータ展開部132は、レプリケーション通信部142からマージ展開要求を受けると(S2301)、レプリケーション通信部142の受信したレプリケーションデータであるマージデータ内容を、個々の更新内容を表す更新内容コミットデータへと展開する(S2302)。次に、その展開した更新内容コミットデータについて、受信データ反映部123にデータ反映要求を行う(S2303)。
図24に示すように、受信データ反映部123は、マージデータ展開部132からのデータ反映要求を受けると、個々の更新内容コミットデータについて(S2401)処理を行い、その処理中更新内容コミットデータに該当するテーブルのリトリーブ状態をリトリーブ状態表165で確認し(S2402)、「リトリーブ済」であるか否かを判定する(S2403)。
処理中更新内容コミットデータに該当するテーブルのリトリーブ状態が「リトリーブ済」でない場合(S2403のNO)には、その更新内容コミットデータを一時保存領域へ保存した(S2404)後、次の更新内容コミットデータの処理を行う。
また、受信データ反映部123は、該当するテーブルのリトリーブ状態が「リトリーブ済」である場合(S2403のYES)には、一時保存領域において「該当するテーブルについての更新内容コミットデータ」の確認を行い(S2406)、該当するテーブルについての保存中更新内容コミットデータの存在の有無を判定する(S2407)。
該当するテーブルについて保存中更新内容コミットデータが存在する場合(S2407のYES)には、その保存中更新内容コミットデータについて、マッピングデータ112内のデータ状態表を参照して、データ状態表中の該当するテーブル、列のシリアル番号値と、保存中更新内容データのシリアル番号値との比較を行い(S2411)、その保存中更新内容コミットデータをマッピングデータ112に反映可能であるか否かの判定を行う(S2412)。
保存中更新内容コミットデータをマッピングデータ112に反映可能である場合(S2412のYES)には、その保存中更新内容コミットデータのデータ値をマッピングデータ112内の該当テーブルへ反映し(S2413)、データ状態表のシリアル番号値の加算を行う(S2414)。
また、保存中更新内容コミットデータをマッピングデータ112に反映できない場合(S2412のNO)には、その「保存中更新内容コミットデータ」、および、個別の処理対象である「処理中更新内容コミットデータ」の破棄を行い(S2415)、該当するテーブル、列について、「テーブル、列のリトリーブ要求処理」を行い(S2416)、次の更新内容コミットデータの処理を行う。
一方、保存中更新内容コミットデータの反映(S2413)とそれに続くシリアル番号値加算が完了した場合(S2414)、または、一時保存領域に、該当するテーブルについての保存中更新内容データが存在しない場合(S2407のNO)には、個別の処理対象である「処理中更新内容コミットデータ」について、次のような一連の処理(S2421〜S2426)を行う。
すなわち、処理中更新内容コミットデータについて、マッピングデータ112内のデータ状態表とのシリアル番号値の比較を行い(S2421)、反映可能か否かの判定を行い(S2422)、反映可能である場合(S2422のYES)には、そのデータ値をマッピングデータ112へ反映し(S2423)、データ状態表のシリアル番号値の加算を行い(S2424)、次の更新内容データの処理を行う。
また、処理中更新内容コミットデータが反映可能でない場合(S2422のNO)には、その処理中更新内容コミットデータを破棄すると共に、反映済の保存中更新内容コミットデータが存在する場合にはその保存中更新内容コミットデータを破棄し(S2425)、「テーブル、列のリトリーブ要求処理」を行い(S2426)、次の更新内容コミットデータの処理を行う。
このような「処理中更新内容コミットデータ」についての一連の処理(S2421〜S2426)は、前述した「保存中更新内容コミットデータ」についての一連の処理(S2411〜S2416)と同様である。
なお、以上のようなデータ反映処理において、個々の更新内容コミットデータがテーブル単位、またはテーブルの列単位である場合には、データ反映処理を高速に行うために、複数の更新内容コミットデータについての個々のデータ反映処理を並列に実行してもよい。
また、リトリーブ状態表165の確認を行い、リトリーブ中であるために一時保存領域へ保存していたデータについては、リトリーブ要求送信部163にてリトリーブ完了となった際に、そのリトリーブ完了について受信データ反映部123に通知を行うようにしてもよい。この場合には、受信データ反映部123は、一時保存領域に、リトリーブが完了したテーブルのデータが保存されているか否かを確認し、保存されている場合に、前述したような一連の処理(S2411〜S2414、または、S2416)を行うことで、リトリーブ完了直後に保存中のデータを反映させることが可能である。
あるいはまた、図21に示すように、マスター計算機の更新データマージ部131によりレプリケーション送信要求(S2105)を行う際に、マージされたマージデータに個々のマージデータ毎に割り振られるマージ番号を付加して送信し、レプリカ計算機の処理部12〜14のいずれかで、受信したマージデータについてマージ番号のチェックを行うようにしてもよい。この構成において、通信障害が発生した場合には、レプリカ計算機の受信データ反映部123からリトリーブ要求送信部163に通知を行い、マージ番号チェック結果に応じたデータのリトリーブ要求処理を行うことにより、マージデータを展開した個々の更新内容データについて、データ状態表と更新内容データとの比較を行う必要なしに、障害から復旧することも可能である。
[5.効果]
以上のような本実施形態によれば、次のような効果が得られる。
(1)マスター計算機においては、複数のデータ操作アプリケーションによるデータ更新操作結果について、データ変更処理とコミット処理を行うことによってデータベースが更新された場合に、更新された複数の変更内容コミットデータのマージが行われ、マージが行われたデータを分割・圧縮した後にレプリケーション送信する。これにより、コミット処理の都度、レプリケーション送信する場合と比較して通信ネットワークへ与える負荷を低減することができ、結果として、複数のレプリカ計算機へデータ更新内容を反映する場合のスループットを向上することができる。
(2)レプリカ計算機においては、レプリケーション受信後に分割・圧縮されたレプリケーションデータを、複数の変更内容コミットデータへ展開し、変更内容コミットデータをデータベースへ反映する場合には、データ状態表を用いて反映可能な変更内容であるかを確認し、必要な場合にはテーブル、列のデータをマスター計算機からリトリーブする。これにより、通信ネットワーク内に一時的に障害が発生してレプリケーションデータが紛失した場合にも、マスター計算機のデータベースの複製データを確実に維持することができる。
(3)初期起動時およびマスター切替時においてリトリーブ処理を行う場合に、マスター計算機からデータ状態表を取得して自計算機のデータ状態表と比較し、リトリーブが必要なテーブルおよび列のデータについてのみマスター計算機からデータ取得を行う。これにより、マスター計算機とのデータ内容の違いが少ない場合には、データベースの全内容を取得する場合と比較して、初期起動時およびマスター切替時のリトリーブ処理時間を大幅に短縮することができる。
(4)マスター切替を行う場合に、モード管理により、マスター計算機ではマスター遷移中を経てマスター運用中となり、レプリカ計算機ではレプリカ遷移中を経てレプリカ計算機となる。新マスター計算機では、現マスター計算機からのレプリカ遷移中情報を受信した段階で、マスター運用中へ遷移する。またレプリカ計算機では、新マスター計算機からのマスター運用中情報を受信した段階でレプリカ運用中へ遷移する。これにより、ネットワーク内に存在するマスター計算機を、常に1台のみに保つことができる。ネットワーク障害等により、万一、マスター計算機が複数存在する状況が発生した場合にも、レプリカ計算機では、常に自計算機が認識しているマスター計算機からのレプリケーションデータのみを反映するため、データベースに不整合が発生することはない。
(5)また、マスター計算機が複数存在する状況が発生した場合にも、その中の1台の計算機において、モード管理により、マスター遷移中、マスター運用中を送信することで、他の計算機は、全てレプリカ計算機へ遷移し、データベース全体のリトリーブ処理を行い、マスター計算機のデータベースのリトリーブを行うことができるため、このような障害発生時のリカバリ処理を容易に行うことが可能となる。
[6.他の実施形態]
なお、本発明は、前述した実施形態に限定されるものではなく、本発明の範囲内で他にも多種多様な変形例が実施可能である。例えば、図面に示したシステム構成や計算機の機能構成は、一例にすぎず、具体的なシステム構成や機能構成は適宜選択可能である。また、図面に示したデータ構成も一例にすぎず、具体的なデータ構成は適宜選択可能である。同様に、図面に示したフローチャートは、一例にすぎず、具体的な動作手順や各処理の詳細は適宜選択可能である。
例えば、前述した実施形態においては、リトリーブ要求時におけるデータ状態表(データ特定情報)の比較を、レプリカ計算機側で行う場合について説明したが、データ状態表をレプリカ計算機からマスター計算機に送信することで、マスター計算機側でデータ状態表の比較を行い、比較結果に応じて送信するリトリーブデータを特定するようにしてもよい。
本発明を適用した一つの実施形態に係る分散データ等価システムを構成する各計算機を示すブロック構成図。 図1に示す複数の計算機を通信ネットワークで接続することによって構成される分散データ等価システムを示すブロック構成図。 図2に示す複数の計算機を、マスター計算機およびレプリカ計算機として動作させた場合のシステム構成を示すブロック構成図。 図3に示すデータファイルに格納される表形式データファイル(a)とデータ状態表(b)のデータ構造の一例を示す図。 図3に示す更新データキャッシュのデータ構造の一例を示す図。 図3に示すレプリケーション管理表のデータ構造の一例を示す図。 図3に示すモード管理表のデータ構造の一例を示す図。 図3に示すモード管理部で管理される4種類のモードから他のモードに遷移する場合の遷移条件として、モード遷移のトリガーと遷移先を示す図。 図8に示す遷移条件のうち、モード受信時の遷移条件として、現在のモードにおいてモード情報を受信した場合の遷移先モードを示す図。 図8、図9に示す遷移条件で各モード遷移を行った後、遷移後の新モードに応じて決定される各動作を示す図。 図3に示すリトリーブ状態表のデータ構造の一例を示す図。 図1〜図3に示す分散データ等価システムの各計算機による初期起動からシステム停止に至るまでの動作概要を示すフローチャート。 図12に示す初期起動処理の処理手順の概要を示すフローチャート。 (a)は、図13に示すデータベース全体のリトリーブ処理の処理手順を示すフローチャート、(b)は、(a)中のテーブル、列のリトリーブ要求処理の処理手順を示すフローチャート。 図12に示す自計算機マスター設定時のモード変更処理における処理手順の概要を示すフローチャート。 図12に示す他計算機マスター設定時のモード変更処理における処理手順のうち、レプリカ遷移中モードに遷移するまでの前半部分の概要を示すフローチャート。 図12に示す他計算機マスター設定時のモード変更処理における処理手順のうち、レプリカ運用中モードに遷移するまでの後半部分の概要を示すフローチャート。 図1〜図3に示す分散データ等価システムにおいて、マスター計算機のデータ変更処理からレプリカ計算機のデータ反映処理に至るまでの分散データ等価処理手順の概要を示すフローチャート。 図3に示すマスター計算機のデータ処理部によるデータ変更処理手順の概要を示すフローチャート。 図3に示すマスター計算機のデータ処理部による変更内容のコミット処理手順の概要を示すフローチャート。 図3に示すマスター計算機のマージデータ処理部によるコミット実行後のマージ処理手順の概要を示すフローチャート。 図3に示すマスター計算機とレプリカ計算機のレプリケーション処理部によるレプリケーション送信処理手順とレプリケーション受信処理手順の概要を示すフローチャート。 図3に示すレプリカ計算機のマージデータ処理部によるマージデータ展開処理手順の概要を示すフローチャート。 図3に示すレプリカ計算機のデータ処理部によるデータ反映処理手順の概要を示すフローチャート。
符号の説明
11…データベース
12…データ処理部
13…マージデータ処理部
14…レプリケーション処理部
15…モード処理部
16…リトリーブ処理部
17…データ操作アプリケーション
18…モード設定アプリケーション
111…データファイル
112…マッピングデータ
121…データ参照処理部
122…データ更新処理部
123…受信データ反映部
123…更新データキャッシュ
131…更新データマージ部
132…マージデータ展開部
141…レプリケーション管理部
142…レプリケーション通信部
143…レプリケーション管理表
151…モード管理部
152…モード送信部
153…モード受信部
154…モード管理テーブル
161…リトリーブ要求受理部
162…リトリーブデータ送信部
163…リトリーブ要求送信部
164…リトリーブデータ受信部
165…リトリーブ状態表

Claims (14)

  1. ネットワークを介して接続された複数の計算機に目的データをそれぞれ格納し、特定の1つの計算機をマスターモード、その他の各計算機をレプリカモードで運用することによりマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機でデータ更新操作により目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価する分散データ等価方法において
    前記各計算機は、
    複数のアプリケーションからアクセス可能な共有領域に前記目的データを格納するデータファイルを配置してなるデータベースを備え、
    前記複数の計算機のうち、どの計算機が前記マスター計算機であるかを特定するモード情報と自計算機のモードを特定するモード情報を含むモード情報を管理して、他計算機との間でモード情報の送受信を行うと共に、モード切替が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行するモード処理ステップを行い、
    前記マスター計算機により、
    前記データ更新操作の結果を更新キャッシュに一旦格納すると共に、コミット要求に応じて更新キャッシュの内容を1個の更新内容コミットデータとし、固有のデータ特定情報を付加して前記データファイルに格納するデータ更新ステップと、
    予め設定されたマージ併合条件に従って決められる1個または複数個の前記更新内容コミットデータをマージしてマージデータを生成する更新データマージステップと、
    前記モード情報に基づき、等価対象となる前記各レプリカ計算機を示す送信先情報を管理して、この送信先情報に基づき各レプリカ計算機に対して前記マージデータをレプリケーションデータとして送信するレプリケーション送信ステップを行い、
    前記レプリカ計算機により、
    前記モード情報に基づき、レプリケーションデータの送信元となる前記マスター計算機を示す送信元情報を管理して、この送信元情報に基づきマスター計算機からのレプリケーションデータを受信するレプリケーション受信ステップと、
    前記レプリケーションデータである前記マージデータを、元の1個または複数個の前記更新内容コミットデータに展開するマージデータ展開ステップと、
    展開された前記更新内容コミットデータを、各更新内容コミットデータ毎に、そのデータのリトリーブ状態を示すリトリーブ状態情報に基づき、前記データファイルに反映するか否か判定して、反映すると判定した更新内容コミットデータをその前記データ特定情報と共にデータファイルに反映する受信データ反映ステップを行い、
    前記レプリカ計算機により、
    自計算機と前記マスター計算機の前記データファイル間の差異をなくすためにデータファイルの一部または全部を一括してコピーするリトリーブに必要なリトリーブデータを要求するリトリーブ要求をマスター計算機に送信するリトリーブ要求送信ステップを行い、
    前記マスター計算機により、
    前記レプリカ計算機からの前記リトリーブ要求の受信に応答して前記リトリーブデータをそのレプリカ計算機に送信するリトリーブデータ送信ステップを行い、
    前記レプリカ計算機により、
    前記マスター計算機から前記リトリーブデータを受信した場合に、前記リトリーブを実行して前記リトリーブ状態情報を更新するリトリーブデータ受信ステップを行う、
    ことを特徴とする分散データ等価方法。
  2. 前記データファイルは、前記目的データのデータ本体として、行と列から構成される表形式データを格納すると共に、その表形式データまたはそれを構成する列、行のいずれかの単位のデータを特定するデータ特定情報とそれぞれに割り当てられたシリアル番号から構成されるデータ状態表を格納しており、
    前記リトリーブ状態情報は、前記表形式データまたはそれを構成する列、行のいずれかの単位の前記データを特定するデータ特定情報とそれぞれの前記リトリーブ状態から構成されるリトリーブ状態表であり、
    前記リトリーブデータは、前記データ状態表を比較した結果として得られる前記表形式データまたはそれを構成する列、行のいずれかの単位のデータである、
    ことを特徴とする請求項1に記載の分散データ等価方法。
  3. 前記各計算機で管理される前記モード情報は、どの計算機が前記マスター計算機であるかを特定するマスター計算機情報と自計算機のモードを特定する自計算機モード情報を含むモード管理情報として管理され、
    前記各計算機による前記モード処理ステップは、
    自計算機の初期起動時において、他計算機がマスター計算機であることを特定するモード情報を受信した場合に、前記マスター計算機情報を当該他計算機に設定して維持すると共に、前記自計算機モード情報を前記レプリカモードに設定して維持する初期起動ステップと、
    前記初期起動ステップ後に、自計算機上で前記アプリケーションによるマスター設定が行われた場合に、前記マスター計算機情報を自計算機に設定して維持し、かつ、前記自計算機モード情報を前記マスターモードに設定して維持すると共に、他計算機に自計算機がマスター計算機であることを特定するモード情報を送信するマスターモード変更ステップと、
    前記初期起動ステップ後に、他計算機で前記アプリケーションによるマスター設定が行われた結果、当該他計算機がマスター計算機であることを特定するモード情報を受信した場合に、前記マスター計算機情報を当該他計算機に設定して維持すると共に、前記自計算機モード情報を前記レプリカモードに設定して維持するレプリカモード変更ステップを含む、
    ことを特徴とする請求項1または請求項2に記載の分散データ等価方法。
  4. 前記初期起動ステップおよび前記レプリカモード変更ステップの各々は、
    他計算機がマスター計算機であることを特定するモード情報を受信した場合に、前記マスター計算機情報を当該他計算機に設定して維持するステップと、
    前記レプリケーション受信ステップを開始可能にするステップと、
    前記マスター計算機に対して前記リトリーブ要求送信ステップと前記リトリーブデータ受信ステップを行うことにより、そのマスター計算機と前記データファイル中のデータを一括等価するステップと、
    前記自計算機モード情報を前記レプリカモードに設定して維持するステップを含み、
    前記マスターモード変更ステップは、
    自計算機上で前記アプリケーションによるマスター設定が行われた場合に、前記マスター計算機情報または他計算機からのモード情報の受信に基づき、前記マスター計算機として動作中の他計算機の有無を確認するステップと、
    前記マスター計算機として動作中の他計算機が存在していないことを確認した場合に、前記マスター計算機情報を自計算機に設定して維持するステップと、
    前記レプリケーション送信ステップを開始可能にするステップと、
    前記リトリーブデータ送信ステップを開始可能にするステップと、
    前記自計算機モード情報を前記マスターモードに設定して維持するステップと、
    他計算機に自計算機が前記マスター計算機であることを特定するモード情報を送信するステップを含む、
    ことを特徴とする請求項3に記載の分散データ等価方法。
  5. 前記各計算機による前記モード処理ステップは、前記マスターモードと前記レプリカモードに加えて、マスターモードまたはレプリカモードになる途中の状態を、遷移中モードとして取り扱い、
    前記マスターモード変更ステップは、
    前記自計算機モード情報を前記遷移中モードに一旦設定して維持するステップと、遷移中モードから前記マスターモードに変更して維持するステップを含み、
    前記レプリカモード変更ステップは、
    前記自計算機モード情報を前記遷移中モードに一旦設定して維持するステップと、遷移中モードから前記マスターモードに変更して維持するステップを含む、
    ことを特徴とする請求項3または請求項4に記載の分散データ等価方法。
  6. 前記各計算機による前記モード処理ステップは、前記マスターモードと前記レプリカモードに加えて、マスターモードになる途中の状態とレプリカモードになる途中の状態を、マスター遷移中モードおよびレプリカ遷移中モードとしてそれぞれ取り扱い、
    前記マスターモード変更ステップは、
    前記自計算機モード情報を前記マスター遷移中モードに一旦設定して維持するステップと、マスター遷移中モードから前記マスターモードに変更して維持するステップを含み、
    前記レプリカモード変更ステップは、
    前記自計算機モード情報を前記レプリカ遷移中モードに一旦設定して維持するステップと、レプリカ遷移中モードから前記マスターモードに変更して維持するステップを含む、
    ことを特徴とする請求項5に記載の分散データ等価方法。
  7. 前記マスターモード変更ステップは、
    自計算機上で前記アプリケーションによるマスター設定が行われた場合に、前記自計算機モード情報を前記マスター遷移中モードに設定して維持するステップと、
    他計算機に自計算機が前記マスター遷移中モードであることを示すマスター遷移中情報を送信するステップと、
    前記マスター計算機情報または他計算機からのモード情報の受信に基づき、前記マスター計算機として動作中の他計算機の有無を確認するステップと、
    前記マスター計算機として動作中の他計算機が存在していないことを確認した場合に、前記マスター計算機情報を自計算機に設定して維持するステップと、
    前記レプリケーション送信ステップを開始可能にするステップと、
    前記リトリーブデータ送信ステップを開始可能にするステップと、
    前記自計算機モード情報を前記マスターモードに設定して維持するステップと、
    他計算機に自計算機が前記マスターモードで前記マスター計算機として動作していることを示すマスター運用中情報を送信するステップを含み、
    前記レプリカモード変更ステップは、
    他計算機から前記マスター遷移中情報を受信した場合に、前記自計算機モード情報を前記レプリカ遷移中モードに設定して維持するステップと、
    他計算機から前記マスター運用中情報を受信した場合に、前記マスター計算機情報を当該他計算機に設定して維持するステップと、
    前記レプリケーション受信ステップを開始可能にするステップと、
    前記マスター計算機に対して前記リトリーブ要求送信ステップと前記リトリーブデータ受信ステップを行うことにより、そのマスター計算機と前記データファイル中のデータを一括等価するステップと、
    前記自計算機モード情報を前記レプリカモードに設定して維持するステップを含む、
    ことを特徴とする請求項6に記載の分散データ等価方法。
  8. 前記初期起動ステップは、
    自計算機の初期起動時において、他計算機がマスター計算機であることを特定するモード情報が得られない場合に、前記自計算機モード情報を前記遷移中モードまたは前記レプリカ遷移中モードに設定して維持するステップを含む、
    ことを特徴とする請求項5乃至請求項7のいずれかに記載の分散データ等価方法。
  9. 前記初期起動ステップおよび前記レプリカモード変更ステップの各々は、
    前記マスター計算機に対して前記リトリーブ要求送信ステップと前記リトリーブデータ受信ステップを行うことにより、そのマスター計算機と前記データファイル中のデータを一括等価するステップを含み、
    前記リトリーブ要求送信ステップまたは前記リトリーブデータ送信ステップは、
    前記リトリーブ要求について要求元である前記レプリカ計算機と要求先である前記マスター計算機の前記データファイル中に格納された前記データ特定情報の比較を行い、その比較結果に応じて前記リトリーブデータを特定するデータ特定情報比較ステップを含む、
    ことを特徴とする請求項3乃至請求項5のいずれかに記載の分散データ等価方法。
  10. 前記リトリーブ要求送信ステップは、前記マスター計算機に前記リトリーブ要求を送信する場合に、自計算機の前記データ特定情報をそのマスター計算機に送信するステップを含み、
    前記リトリーブデータ送信ステップは、前記リトリーブ要求元である前記レプリカ計算機から送信された前記リトリーブ要求と前記データ特定情報を受信した場合に、前記データ特定情報比較ステップとして、そのデータ特定情報と自計算機のデータ特定情報の比較を行い、その比較結果に応じて前記リトリーブデータを特定するステップを含む、
    ことを特徴とする請求項9に記載の分散データ等価方法。
  11. 前記リトリーブ要求送信ステップは、
    前記マスター計算機に前記リトリーブ要求を送信する前に、そのマスター計算機の前記データ特定情報の送信要求を送信するステップと、
    前記マスター計算機から前記データ特定情報の送信要求に応じたデータ特定情報を受信した場合に、前記データ特定情報比較ステップとして、そのデータ特定情報と自計算機のデータ特定情報の比較を行い、その比較結果に応じて前記リトリーブデータを特定するステップを含み、
    前記リトリーブデータ送信ステップは、前記レプリカ計算機から送信された前記データ特定情報の送信要求を受信した場合に、自計算機の前記データ特定情報をそのレプリカ計算機に送信するステップを含む、
    ことを特徴とする請求項9に記載の分散データ等価方法。
  12. 前記更新データマージステップは、
    前記マージ併合条件として、前回のマージ後に得られた前記更新内容コミットデータの総数、総データサイズ、前回のマージからの経過時間、を含む複数の条件項目の中から選択された単数または複数の条件項目の組み合わせから構成されたマージ併合条件が成立するか否かを判定するステップと、
    前記マージ併合条件が成立した時点で、マージする前記更新内容コミットデータの数を決定するステップを含む、
    ことを特徴とする請求項1乃至請求項11のいずれかに記載の分散データ等価方法。
  13. ネットワークを介して接続された複数の計算機に目的データをそれぞれ格納し、特定の1つの計算機をマスターモード、その他の各計算機をレプリカモードで運用することによりマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機でデータ更新操作により目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価する分散データ等価システムにおいて、
    前記各計算機は、
    複数のアプリケーションからアクセス可能な共有領域に前記目的データを格納するデータファイルを配置してなるデータベースと、
    前記複数の計算機のうち、どの計算機が前記マスター計算機であるかを特定する情報と自計算機のモードを特定する情報を含むモード情報を管理して、モード切替が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行すると共に、他計算機との間でモード情報の送受信を行うモード処理部と、
    前記マスターモード時に、前記データ更新操作の結果を更新キャッシュに一旦格納すると共に、コミット要求に応じて更新キャッシュの内容を1個の更新内容コミットデータとし、固有のデータ特定情報を付加して前記データファイルに格納するデータ更新処理部と、
    前記マスターモード時に、予め設定されたマージ併合条件に従って決められる1個または複数個の前記更新内容コミットデータをマージしてマージデータを生成する更新データマージ部と、
    前記マスターモード時に、前記モード情報に基づき、等価対象となる前記各レプリカ計算機を示す送信先情報を管理して、この送信先情報に基づき各レプリカ計算機に対して前記マージデータをレプリケーションデータとして送信し、前記レプリカモード時に、モード情報に基づき、レプリケーションデータの送信元となる前記マスター計算機を示す送信元情報を管理して、この送信元情報に基づきマスター計算機からのレプリケーションデータを受信するレプリケーション処理部と、
    前記レプリカモード時に、前記レプリケーションデータである前記マージデータを、元の1個または複数個の前記更新内容コミットデータに展開するマージデータ展開部と、
    前記レプリカモード時に、展開された前記更新内容コミットデータを、各更新内容コミットデータ毎に、そのデータのリトリーブ状態を示すリトリーブ状態情報に基づき、前記データファイルに反映するか否か判定して、反映すると判定した更新内容コミットデータをその前記データ特定情報と共にデータファイルに反映する受信データ反映部と、
    前記レプリカモード時に、自計算機と前記マスター計算機の前記データファイル間の差異をなくすためにデータファイルの一部または全部を一括してコピーするリトリーブに必要なリトリーブデータを要求するリトリーブ要求をマスター計算機に送信すると共に、マスター計算機からリトリーブデータを受信した場合に、リトリーブを実行して前記リトリーブ状態情報を更新し、前記マスターモード時に、前記レプリカ計算機からのリトリーブ要求の受信に応答してリトリーブデータをそのレプリカ計算機に送信するリトリーブ処理部を備えている、
    ことを特徴とする分散データ等価システム。
  14. ネットワークを介して接続された複数の計算機に目的データをそれぞれ格納し、特定の1つの計算機をマスターモード、その他の各計算機をレプリカモードで運用することによりマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機でデータ更新操作により目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価する分散データ等価システムを構築するために各計算機に適用される分散データ等価システム構築用プログラムにおいて、
    前記計算機が、複数のアプリケーションからアクセス可能な共有領域に前記目的データを格納するデータファイルを配置してなるデータベースを備えている場合に、この計算機に、
    前記複数の計算機のうち、どの計算機が前記マスター計算機であるかを特定する情報と自計算機のモードを特定する情報を含むモード情報を管理して、モード切替が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行すると共に、他計算機との間でモード情報の送受信を行うモード処理機能と、
    前記マスターモード時に、前記データ更新操作の結果を更新キャッシュに一旦格納すると共に、コミット要求に応じて更新キャッシュの内容を1個の更新内容コミットデータとし、固有のデータ特定情報を付加して前記データファイルに格納するデータ更新処理機能と、
    前記マスターモード時に、予め設定されたマージ併合条件に従って決められる1個または複数個の前記更新内容コミットデータをマージしてマージデータを生成する更新データマージ機能と、
    前記マスターモード時に、前記モード情報に基づき、等価対象となる前記各レプリカ計算機を示す送信先情報を管理して、この送信先情報に基づき各レプリカ計算機に対して前記マージデータをレプリケーションデータとして送信し、前記レプリカモード時に、モード情報に基づき、レプリケーションデータの送信元となる前記マスター計算機を示す送信元情報を管理して、この送信元情報に基づきマスター計算機からのレプリケーションデータを受信するレプリケーション処理機能と、
    前記レプリカモード時に、前記レプリケーションデータである前記マージデータを、元の1個または複数個の前記更新内容コミットデータに展開するマージデータ展開機能と、
    前記レプリカモード時に、展開された前記更新内容コミットデータを、各更新内容コミットデータ毎に、そのデータのリトリーブ状態を示すリトリーブ状態情報に基づき、前記データファイルに反映するか否か判定して、反映すると判定した更新内容コミットデータをその前記データ特定情報と共にデータファイルに反映する受信データ反映機能と、
    前記レプリカモード時に、自計算機と前記マスター計算機の前記データファイル間の差異をなくすためにデータファイルの一部または全部を一括してコピーするリトリーブに必要なリトリーブデータを要求するリトリーブ要求をマスター計算機に送信すると共に、マスター計算機からリトリーブデータを受信した場合に、リトリーブを実行して前記リトリーブ状態情報を更新し、前記マスターモード時に、前記レプリカ計算機からのリトリーブ要求の受信に応答してリトリーブデータをそのレプリカ計算機に送信するリトリーブ処理機能、
    を実現させることを特徴とする分散データ等価システム構築用プログラム。
JP2004160356A 2004-05-28 2004-05-28 分散データ等価方法とシステム、およびプログラム Expired - Fee Related JP4434838B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004160356A JP4434838B2 (ja) 2004-05-28 2004-05-28 分散データ等価方法とシステム、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004160356A JP4434838B2 (ja) 2004-05-28 2004-05-28 分散データ等価方法とシステム、およびプログラム

Publications (2)

Publication Number Publication Date
JP2005339411A JP2005339411A (ja) 2005-12-08
JP4434838B2 true JP4434838B2 (ja) 2010-03-17

Family

ID=35492882

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004160356A Expired - Fee Related JP4434838B2 (ja) 2004-05-28 2004-05-28 分散データ等価方法とシステム、およびプログラム

Country Status (1)

Country Link
JP (1) JP4434838B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7940908B2 (en) * 2006-02-23 2011-05-10 Qualcomm Incorporated Sharing profile data between telecommunication devices
JP4989295B2 (ja) * 2007-04-27 2012-08-01 三菱電機株式会社 データベース等価システムおよびデータベース等価方法
JP5366184B2 (ja) * 2008-09-12 2013-12-11 株式会社Nec情報システムズ データ記憶システム、データ記憶方法
JP4871980B2 (ja) * 2009-08-10 2012-02-08 株式会社日立製作所 データ処理方法とデータ処理プログラムおよびデータ処理システム
JP2011253500A (ja) * 2010-06-04 2011-12-15 Mitsubishi Electric Corp データ配布システム、分散監視制御システム及びデータ配布方法
JP6088450B2 (ja) * 2014-02-18 2017-03-01 日本電信電話株式会社 冗長化データベースシステム、データベース装置及びマスタ交代方法

Also Published As

Publication number Publication date
JP2005339411A (ja) 2005-12-08

Similar Documents

Publication Publication Date Title
CN110502507B (zh) 一种分布式数据库的管理系统、方法、设备和存储介质
AU2019236685B2 (en) Distributed file system using consensus nodes
JP5192226B2 (ja) 待機系計算機の追加方法、計算機及び計算機システム
EP1704470B1 (en) Geographically distributed clusters
US7266718B2 (en) Computer system for recovering data based on priority of the data
US8666939B2 (en) Approaches for the replication of write sets
EP1814035B1 (en) Storage controller and data management method
US20190129976A1 (en) Apparatus for controlling synchronization of metadata on network and method for the same
CN103207867A (zh) 处理数据块的方法、发起恢复操作的方法和节点
CN110196755A (zh) 一种虚拟机快照管理方法、装置、服务器及存储介质
JP7117338B2 (ja) リモートコピーシステム及びリモートコピー管理方法
JP2012221419A (ja) 情報記憶システム及びそのデータ複製方法
CN112334888B (zh) 服务器信息的分布式恢复
CN118606398B (zh) 数据分片处理方法、装置、设备、存储介质及程序产品
JP2005309793A (ja) データ処理システム
EP1704480B1 (en) Cluster database with remote data mirroring
JP4434838B2 (ja) 分散データ等価方法とシステム、およびプログラム
JP2004133598A (ja) 複数データベースの二重化制御プログラム
JP4129353B2 (ja) 分散データ管理システム、分散データ管理方法及び分散データ管理プログラム
CN107896248A (zh) 一种基于客户端通信的并行文件系统应用方法
JP2024179710A (ja) ストレージシステム及び記憶制御方法
JP2021114130A (ja) 情報処理装置、情報処理システムおよびデータ再配置プログラム
CN116756165B (zh) 数据库的数据恢复系统、方法、装置以及存储介质
JP6291977B2 (ja) 分散ファイルシステム、バックアップファイル取得方法、制御装置及び管理装置
JP5002636B2 (ja) データ処理装置及びデータベース管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070112

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20071017

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091125

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091222

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130108

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130108

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140108

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees