以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
本発明の第1の実施の形態としての情報処理システム1の構成を図1に示す。図1において、情報処理システム1は、送信装置10と、受信装置50とを含む。送信装置10および受信装置50は、ネットワークを介して通信可能に接続されている。
次に、情報処理システム1を構成する各装置の機能ブロックを図2に示す。図2において、送信装置10は、データ送信部11と、ダミーデータ送信制御部12とを備える。また、受信装置50は、データ受信部51を備える。
ここで、送信装置10および受信装置50のハードウェア構成の一例を図3に示す。図3において、送信装置10は、CPU(Central Processing Unit)1001と、RAM(Random Access Memory)1002と、ROM(Read Only Memory)1003と、ハードディスク等の記憶装置1004と、ネットワークインタフェース1005とを備えたコンピュータ装置によって構成可能である。また、受信装置50は、CPU5001と、RAM5002と、ROM5003と、ハードディスク等の記憶装置5004と、ネットワークインタフェース5005とを備えたコンピュータ装置によって構成可能である。この場合、データ送信部11は、ネットワークインタフェース1005と、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001とによって構成される。また、ダミーデータ送信制御部12は、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。また、データ受信部51は、ネットワークインタフェース5005と、ROM5003および記憶装置5004に記憶されたコンピュータ・プログラムおよび各種データをRAM5002に読み込んで実行するCPU5001とによって構成される。なお、送信装置10および受信装置50、ならびに、各装置の各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、送信装置10の機能ブロックの詳細について説明する。
データ送信部11は、対象データまたはダミーデータを受信装置50に対して送信する。対象データは、受信装置50に対して送信するよう、外部または自装置上のアプリケーション(図示せず)から要求されたデータである。具体的には、データ送信部11は、送信要求元から対象データを受信すると、受信装置50との間に確立された通信コネクションを通して、その対象データを送信する。
また、ダミーデータは、受信装置50において破棄されるデータである。このため、ダミーデータは、どのような内容であってもよい。具体的には、データ送信部11は、後述のダミーデータ送信制御部12からの要求に応じて、受信装置50に対して所定条件を満たすサイズのダミーデータを送信する。なお、所定条件とは、その時点での輻輳ウィンドウサイズ以上であることであってもよい。
ダミーデータ送信制御部12は、所定期間の間に、受信装置50に対して所定条件を満たすサイズの対象データが送信されていない場合に、所定条件を満たすサイズのダミーデータを送信するようデータ送信部11を制御する。詳細には、ダミーデータ送信制御部12は、受信装置50との間に確立された通信コネクションにおいて、所定期間の間に、受信装置50に対して所定条件を満たすサイズの対象データが送信されているか否かを判断する。そして、ダミーデータ送信制御部12は、そのような対象データが所定期間に送信されていなければ、その通信コネクションを通して上述のダミーデータ送信制御を行う。
なお、所定条件とは、上述と同様に、その時点での輻輳ウィンドウサイズ以上であることであってもよい。つまり、ダミーデータ送信制御部12は、所定期間の間に、その時点での輻輳ウィンドウサイズ以上の対象データが送信されなかった場合に、輻輳ウィンドウサイズ以上のダミーデータを送信するようデータ送信部11に通知してもよい。
また、所定期間とは、輻輳ウィンドウサイズが縮小されることが規定された経過時間に基づく期間であってもよい。ここで、対象データを送信するための通信コネクションでは、送信装置10から受信装置50に対する最近の通信からの経過時間がこの規定された経過時間の長さに達すると、輻輳ウィンドウサイズが縮小される。したがって、例えば、ダミーデータ送信制御部12は、その規定された経過時間の長さの1/2未満の期間を、所定期間として定めてもよい。そして、ダミーデータ送信制御部12は、所定期間が経過する度に、その時点までの所定期間において所定条件を満たすサイズの対象データが送信されたか否かを判断するようにしてもよい。
次に、受信装置50の機能ブロックの詳細について説明する。
データ受信部51は、送信装置10から対象データまたはダミーデータを受信する。そして、データ受信部51は、受信した対象データに対する所定の処理を行う。所定の処理とは、例えば、記憶装置5004へ保存する処理であってもよい。また、データ受信部51は、受信したダミーデータを破棄する。
以上のように構成された情報処理システム1の動作について説明する。
まず、送信装置10のデータ送信部11の動作を図4に示す。
図4では、まず、データ送信部11は、データの送信要求を受信する(ステップS1でYes)。
ここで、受信した送信要求が、アプリケーションからの対象データの送信要求である場合(ステップS2で「対象データ」)、データ送信部11は、対象データを受信装置50に対して送信する(ステップS3)。
一方、ステップS1で受信した送信要求が、ダミーデータ送信制御部12からのダミーデータの送信要求である場合(ステップS2で「ダミーデータ」)、データ送信部11は、所定条件を満たすサイズのダミーデータを、受信装置50に対して送信する(ステップS4)。そして、データ送信部11の動作はステップS1に戻る。
以上で、送信装置10のデータ送信部11の動作の説明を終了する。
次に、送信装置10のダミーデータ送信制御部12の動作を図5に示す。
図5では、まず、ダミーデータ送信制御部12は、この時点までの所定期間の間に、所定条件を満たすサイズの対象データがデータ送信部11から送信されたか否かを判断する(ステップS11)。
ここで、所定条件を満たすサイズの対象データが送信されていたと判断した場合、ダミーデータ送信制御部12の動作はステップS13に進む。
一方、所定条件を満たすサイズの対象データが送信されていなかったと判断した場合、ダミーデータ送信制御部12は、所定条件を満たすサイズのダミーデータの送信を、データ送信部11に要求する(ステップS12)。
次に、ダミーデータ送信制御部12は、所定期間として定められた時間だけ待機する(ステップS13)。
そして、ダミーデータ送信制御部12の動作はステップS11に戻る。
以上で、送信装置10のダミーデータ送信制御部12の動作の説明を終了する。
次に、受信装置50の動作を図6に示す。
図6では、まず、データ受信部51は、送信装置10からデータを受信する(ステップS21でYes)。
ここで、受信したデータが対象データである場合(ステップS22で「対象データ」)、データ受信部51は、この対象データに対する所定の処理を実行する(ステップS23)。
一方、受信したデータがダミーデータである場合(ステップS22で「ダミーデータ」)、データ受信部51は、このダミーデータを破棄する(ステップS24)。
そして、受信装置50の動作はステップS21に戻る。
以上で、受信装置50の動作の説明を終了する。
次に、本発明の第1の実施の形態の効果について述べる。
本発明の第1の実施の形態としての情報処理システムは、断続的な通信における輻輳ウィンドウサイズの縮小をより十分に防ぐことができる。
その理由は、データ送信部が、アプリケーションから要求された対象データ、または、ダミーデータを受信装置に対して送信するからである。また、ダミーデータ送信制御部が、所定期間の間に、所定条件を満たすサイズの対象データが送信されていない場合に、所定条件を満たすサイズのダミーデータを、データ送信部を通して受信装置に送信するよう制御するからである。また、所定期間としては、対象データを送信するために確立された通信コネクションにおいて、輻輳ウィンドウサイズが縮小されることが規定された最近の通信からの経過時間に基づく期間が用いられるからである。
これにより、本実施の形態は、送信装置から受信装置への通信が断続的に発生する情報処理システムにおいて、長くても、所定期間の2倍未満の間隔で、所定条件を満たすサイズの対象データまたはダミーデータを送信することになる。したがって、本実施の形態は、輻輳ウィンドウサイズが所定条件を満たさなくなることを回避することができ、一度に送信することが可能なサイズが所定条件を満たすよう保つことができる。したがって、本実施の形態は、断続的な通信が行われる通信コネクションにおいて、輻輳ウィンドウサイズを所定条件を満たさないほど縮小させることがない。また、例えば、所定条件として、その時点での輻輳ウィンドウサイズ以上であることを適用すれば、本実施の形態は、いったん拡大した輻輳ウィンドウサイズをそれ以上縮小させないことになる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。本実施の形態では、本発明の情報処理システムをメモリデータベースシステムに適用した例について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本発明の第2の実施の形態としてのメモリデータベースシステム2の構成を図7に示す。図7において、メモリデータベースシステム2は、本発明の送信装置を含むマスタサーバ20と、本発明の受信装置を含むスレーブサーバ60とを備える。マスタサーバ20およびスレーブサーバ60は、ネットワークを介して通信可能に接続されている。
次に、メモリデータベースシステム2を構成する各装置の機能ブロックを図8に示す。図8において、マスタサーバ20は、データ送信部21と、ダミーデータ送信制御部22と、マスタデータ記憶部23と、アプリケーション部24とを備える。ここで、マスタサーバ20は、図3を参照して説明した本発明の第1の実施の形態としての送信装置と同一のハードウェア要素を含むコンピュータ装置によって構成可能である。この場合、マスタデータ記憶部23は、RAM1002によって構成される。また、アプリケーション部24は、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。
スレーブサーバ60は、データ受信部61と、複製データ記憶部62とを備える。ここで、スレーブサーバ60は、図3を参照して説明した本発明の第1の実施の形態としての受信装置と同一のハードウェア要素を含むコンピュータ装置によって構成可能である。この場合、複製データ記憶部62は、RAM5002によって構成される。
次に、マスタサーバ20の各機能ブロックの詳細について説明する。
マスタデータ記憶部23は、マスタデータを記憶する。
アプリケーション部24は、マスタデータを更新する。マスタデータの更新は、例えば、外部からの要求や、自装置における他の機能ブロック(図示せず)からの要求に応じて行われる。そして、アプリケーション部24は、マスタデータの更新に応じて、その更新前および更新後の差分を表す情報(更新ログ)を生成する。また、アプリケーション部24は、生成した更新ログを、スレーブサーバ60に対して送信するよう、データ送信部21に要求する。例えば、アプリケーション部24は、コミット要求を発行後、更新ログを生成してその送信を要求するようにしてもよい。
データ送信部21は、本発明の第1の実施の形態におけるデータ送信部11と略同様に動作するよう構成される。ただし、本実施の形態では、対象データに、アプリケーション部24から要求される更新ログを適用する。また、本実施の形態では、更新ログまたはダミーデータの送信先は、スレーブサーバ60となる。
また、データ送信部21は、ダミーデータ送信制御部22による判断処理のために、送信済フラグを保持するようにしてもよい。この場合、データ送信部21は、アプリケーション部24から要求されて送信した更新ログが所定条件を満たす場合、送信済フラグをオンに設定して保持する。なお、本実施の形態では、所定条件として、サイズがs(sは正の数)以上であるという条件を適用するものとする。
ダミーデータ送信制御部22は、所定期間の間に、サイズがs以上の更新ログが送信されたか否かに応じた処理を行う。ここで、所定期間とは、本発明の第1の実施の形態において説明した所定期間と同様の期間を適用するものとする。例えば、データ送信部21によって送信済フラグが保持されている場合、ダミーデータ送信制御部22は、次のように動作するよう構成される。
具体的には、ダミーデータ送信制御部22は、所定期間が経過する毎に送信済フラグをチェックする。そして、ダミーデータ送信制御部22は、送信済フラグがオフである場合に、サイズs以上のダミーデータを送信するようデータ送信部21を制御する。また、ダミーデータ送信制御部22は、送信済フラグがオンである場合に、送信済みフラグをオフに設定する。
次に、スレーブサーバ60の各機能ブロックの詳細について説明する。
複製データ記憶部62は、複製データを記憶する。複製データは、マスタサーバ20に記憶されるマスタデータの複製である。
データ受信部61は、本発明の第1の実施の形態におけるデータ受信部51と略同様に動作するよう構成される。詳細には、データ受信部61は、マスタサーバ20から、対象データとしての更新ログ、または、ダミーデータを受信する。また、データ受信部61は、更新ログを用いて、複製データ記憶部62の複製データを更新する。また、データ受信部61は、ダミーデータを破棄する。
以上のように構成されたメモリデータベースシステム2の動作について、図面を参照して説明する。
まず、マスタサーバ20におけるアプリケーション部24の動作を図9に示す。
図9では、まず、アプリケーション部24は、マスタデータ記憶部23のマスタデータを更新する(ステップS31)。
次に、アプリケーション部24は、更新前後のマスタデータの差分情報を更新ログとして生成する(ステップS32)。
次に、アプリケーション部24は、ステップS32で生成した更新ログの送信を、データ送信部21に対して要求する(ステップS33)。
以上で、アプリケーション部24の動作の説明を終了する。
次に、マスタサーバ20におけるデータ送信部21の動作を図10に示す。なお、動作の開始時点では、送信済フラグはオフに設定されているものとする。
図10では、まず、データ送信部21は、ステップS1〜S3まで、本発明の第1の実施の形態におけるデータ送信部11と略同様に動作する。ただし、本実施の形態では、対象データとして、アプリケーション部24から送信要求された更新ログが適用される。
また、データ送信部21は、ステップS3で更新ログをスレーブサーバ60に対して送信後、送信した更新ログのサイズが、s以上であるか否かを判断する(ステップS131)。
ここで、サイズがs以上であった場合、データ送信部21は、送信済フラグをオンに設定して保持する(ステップS132)。そして、データ送信部21の動作はステップS1に戻る。
一方、サイズがs未満であった場合、データ送信部21の動作はステップS1に戻る。
また、ステップS1で受信した送信要求が、ダミーデータの送信要求であれば(ステップS2で「ダミーデータ」)、データ送信部21は、サイズがs以上のダミーデータを、スレーブサーバ60に対して送信する(ステップS133)。そして、データ送信部21の動作はステップS1に戻る。
以上で、マスタサーバ20のデータ送信部21の動作の説明を終了する。
次に、マスタサーバ20におけるダミーデータ送信制御部22の動作を図11に示す。
図11では、まず、ダミーデータ送信制御部22は、送信済フラグの内容をチェックし、オンであるか否かを判断する(ステップS141)。
ここで、送信済フラグがオンである場合、ダミーデータ送信制御部22は、送信済フラグをオフに設定(リセット)する(ステップS142)。
一方、送信済フラグがオフである場合、ダミーデータ送信制御部22は、本発明の第1の実施の形態と同様にステップS12を実行し、ダミーデータの送信を、データ送信部21に要求する(ステップS12)。ただし、本実施の形態では、ダミーデータ送信制御部22は、サイズがs以上のダミーデータの送信を要求する。
次に、ダミーデータ送信制御部22は、所定期間だけ待機する(ステップS13)。
そして、ダミーデータ送信制御部22の動作はステップS141に戻る。
以上で、マスタサーバ20のダミーデータ送信制御部22の動作の説明を終了する。
次に、スレーブサーバ60の動作を図12に示す。
図12では、まず、データ受信部61は、マスタサーバ20からデータを受信する(ステップS41でYes)。
ここで、受信したデータが更新ログである場合(ステップS42で「更新ログ」)、データ受信部61は、その更新ログを用いて、複製データ記憶部62の複製データを更新する(ステップS43)。
一方、受信したデータがダミーデータである場合(ステップS42で「ダミーデータ」)、データ受信部61は、このダミーデータを破棄する(ステップS44)。
そして、データ受信部61の動作はステップS41に戻る。
以上で、データ受信部61の動作の説明を終了する。
次に、本発明の第2の実施の形態の効果について述べる。
本発明の第2の実施の形態としてのメモリデータベースシステムは、マスタサーバからスレーブサーバに対して断続的に更新ログの転送が行われる場合であっても、輻輳ウィンドウサイズが所定サイズ以下になることを十分に防ぐことができる。
その理由は、データ送信部が、所定のサイズs以上の更新ログをスレーブサーバに送信したときに送信済フラグをオンに設定し、ダミーデータ送信制御部が、所定期間が経過する度に送信済フラグをチェックするからである。そして、ダミーデータ送信制御部が、送信済フラグがオンであればオフにリセットし、送信済フラグがオフであれば、サイズがs以上のダミーデータを、データ送信部を通してスレーブサーバに送信するよう制御するからである。また、所定期間として、更新ログを送信する通信コネクションにおいてマスタサーバからスレーブサーバへの最近の通信からの経過時間について、輻輳ウィンドウサイズを縮小するよう定められた長さに基づく期間が用いられるからである。
これにより、本実施の形態は、マスタサーバおよびスレーブサーバ間で更新ログ転送による通信が発生していない間も、長くても、所定期間として定められた時間の2倍未満の間隔で、サイズs以上のダミーデータを送信することになる。したがって、本実施の形態は、輻輳ウィンドウサイズがs以下になる状態を回避することができる。したがって、本実施の形態は、ある期間マスタサーバからの更新ログの転送がなかった後にスレーブサーバに更新ログを転送する場合であっても、通信速度を極端に低下させない。その結果、本実施の形態は、高可用性および高速なレスポンスが同時に求められるようなオンライントランザクションシステムを構成するメモリデータベースシステムにおいて、常に高速なレプリケーション処理を行うことができる。
(第3の実施の形態)
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。本実施の形態では、本発明の第2の実施の形態と同様に、本発明の情報処理システムをメモリデータベースシステムに適用した例について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1および第2の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本発明の第3の実施の形態としてのメモリデータベースシステム3の構成を図13に示す。図13において、メモリデータベースシステム3は、マスタサーバ30と、n(nは1以上の整数)個のスレーブサーバ60(60_1〜60_n)とを備える。マスタサーバ30および各スレーブサーバ60は、それぞれネットワークを介して通信可能に接続されている。
次に、メモリデータベースシステム3を構成する各装置の機能ブロックを図14に示す。図14において、マスタサーバ30は、本発明の第2の実施の形態としてのマスタサーバ20に対して、データ送信部21に替えてn個のデータ送信部31(31_1〜31_n)と、ダミーデータ送信制御部22に替えてn個のダミーデータ送信制御部32(32_1〜32_n)と、所定期間算出部35と、開始制御部36とを備える点が異なる。なお、所定期間算出部35および開始制御部36は、本発明のダミーデータ送信制御部の一部分の一実施形態を構成する。ここで、マスタサーバ30は、図3を参照して説明した本発明の第1の実施の形態としての送信装置と同一のハードウェア要素を含むコンピュータ装置によって構成可能である。この場合、所定期間算出部35および開始制御部36は、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。
n個のスレーブサーバ60のそれぞれは、本発明の第2の実施の形態におけるスレーブサーバ60と同様に構成される。
次に、マスタサーバ30の各機能ブロックの詳細について説明する。
データ送信部31_i(i=1〜n)は、スレーブサーバ60_iに対応付けられる。また、データ送信部31_iは、対応するスレーブサーバ60_iに対して、更新ログまたはダミーデータを送信する。具体的には、データ送信部31_iは、対応するスレーブサーバ60_iとの間でTCPコネクションを保持して通信を行う。また、データ送信部31_iは、対応するスレーブサーバ60_iに関する送信済フラグを保持する。つまり、マスタサーバ30において、n個の送信済フラグがスレーブサーバ60_i毎に保持されることになる。
詳細には、データ送信部31_iは、更新ログの送信要求をアプリケーション部24から受信すると、対応するスレーブサーバ60_iに対して更新ログを、TCPコネクションを通して送信する。このとき、データ送信部31_iは、送信した更新ログのサイズがs以上であれば、対応するスレーブサーバ60_iに関する送信済フラグをオンに設定して保持する。
ここで、サイズsは、次式(1)で算出される値であってもよい。
s = 2 × MSS・・・(1)
なお、MSS(Maximum Segment Size)は、TCPにおいて1セグメントで転送可能なデータの最大サイズを表し、次式(2)で算出される。
MSS = MTU − 40・・・(2)
ここで、MTU(Maximum Transmission Unit)とは、1回の転送で送信できるデータの最大サイズを示す。MSSは、MTUから、IP(Internet Protocol)ヘッダ20バイトおよびTCPヘッダ20バイトを除いた値として計算される。そこで、データ送信部31_iは、サイズsを、システムから取得可能なMTUの値を基に式(1)にしたがって算出すればよい。また、データ送信部31_iは、上述の式(1)を用いてサイズsの値を算出する代わりに、ユーザによって設定されたsの値を取得するようにしてもよい。この場合、sの値は、式(1)を満たすように設定されることが望ましい。
また、データ送信部31_iは、後述のダミーデータ送信制御部32_iからの要求に応じて、スレーブサーバ60_iに対してサイズs以上のダミーデータを送信する。
所定期間算出部35は、所定期間tを、次式(3)を用いて決定し、ダミーデータ送信制御部32_1〜32_nにそれぞれ通知する。通知される所定期間tは、各ダミーデータ送信制御部32_iによって、送信済フラグをチェックする間隔として用いられる。
t = RTO × α (0<α<0.5)・・・(3)
ここで、RTOは、TCP通信における再送タイムアウト時間を表す。TCPでは、RTO時間以上の間通信が発生していないと、次の通信ではスロースタートが開始する。そこで、所定期間算出部35は、所定期間tを、OS(Operating System)から取得可能なRTO時間の値を基に式(3)にしたがって算出すればよい。なお、OSによっては、RTO時間の値がネットワークの負荷状況に応じて変化するものがある。このような場合、所定期間算出部35は、任意のタイミング毎にRTO時間の値を再取得し、所定期間tを再度算出してもよい。また、所定期間算出部35は、上述の式(3)を用いて所定期間tの値を算出する代わりに、ユーザにより設定されたtの値を取得してもよい。この場合、tの値は、式(3)を満たすように設定されることが望ましい。
開始制御部36は、ダミーデータ送信制御部32_1〜32_nを、それぞれ異なるタイミングで起動する。具体的には、例えば、開始制御部36は、次式(4)に基づき算出した起動間隔T毎に、ダミーデータ送信制御部32_1〜32_nを順次起動してもよい。
T = t ÷ n・・・(4)
これにより、n個のダミーデータ送信制御部32_iは、開始制御部36によって順次起動され、互いに異なるタイミングで所定期間t毎に送信済フラグの内容に応じた処理を実行する。具体的には、ダミーデータ送信制御部32_iは、起動された後、所定期間t毎に、対応するスレーブサーバ60_iに関する送信済フラグをチェックする。そして、ダミーデータ送信制御部32_iは、該当する送信済フラグがオフである場合に、サイズs以上のダミーデータをスレーブサーバ60_iに対して送信するよう、データ送信部31_iを制御する。また、ダミーデータ送信制御部32_iは、該当する送信済フラグがオンである場合に、その送信済フラグをオフに設定する。
以上のように構成されたメモリデータベースシステム3の動作について、図面を参照して説明する。
まず、マスタサーバ30におけるアプリケーション部24の動作について説明する。アプリケーション部24の動作は、図9を参照して説明した本発明の第2の実施の形態におけるアプリケーション部24の動作と略同様である。ただし、本実施の形態では、ステップS33において、アプリケーション部24は、データ送信部31_1〜31_nに対して、それぞれ更新ログの送信を要求する。
次に、マスタサーバ30におけるデータ送信部31_iの動作を図15に示す。なお、動作の開始時点では、それぞれのスレーブサーバ60_iに関する送信済フラグはオフに設定されているものとする。また、データ送信部31_iは、上述の式(1)に基づき所定のサイズsの値を算出済みであるものとする。
図15では、まず、データ送信部31_iは、データの送信要求を受信する(ステップS51でYes)。
次に、データ送信部31_iは、受信した送信要求が、アプリケーション部24からの更新ログの送信要求であれば(ステップS52で「更新ログ」)、更新ログを、スレーブサーバ60_iに対して送信する(ステップS53)。
次に、データ送信部31_iは、ステップS53で送信した更新ログのサイズが、s以上であるか否かを判断する(ステップS54)。
ここで、サイズがs以上であった場合、データ送信部31_iは、スレーブサーバ60_iに関する送信済フラグをオンに設定して保持する(ステップS55)。そして、データ送信部31_iの動作はステップS51に戻る。
一方、サイズがs未満であった場合、データ送信部31_iの動作はステップS51に戻る。
また、ステップS51で受信した送信要求が、ダミーデータの送信要求であれば(ステップS52で「ダミーデータ」)、データ送信部31_iは、サイズがs以上のダミーデータを、対応するスレーブサーバ60_iに対して送信する(ステップS56)。そして、データ送信部31_iの動作はステップS51に戻る。
以上で、データ送信部31_iの動作の説明を終了する。
次に、マスタサーバ30における所定期間算出部35の動作を図16に示す。例えば、所定期間算出部35は、この動作を、システム起動時等に行ってもよい。また、前述のように、RTO時間がネットワークの負荷状況に応じて変化するシステムの場合、所定期間算出部35は、この動作を、任意のタイミング毎に繰り返し実行してもよい。
図16では、所定期間算出部35は、OSからRTO時間を取得する(ステップS61)。
次に、所定期間算出部35は、式(3)を用いて所定期間tを算出する(ステップS62)。
次に、所定期間算出部35は、ステップS62で算出したtの値を、n個のダミーデータ送信制御部32_iにそれぞれ通知する(ステップS63)。
以上で、所定期間算出部35の動作の説明を終了する。
次に、マスタサーバ30における開始制御部36の動作を図17に示す。なお、開始制御部36は、上述の式(4)を用いて、既に起動間隔Tを算出済みであるものとする。
図17では、まず、開始制御部36は、スレーブサーバ番号iを1に初期化する(ステップS71)。
次に、開始制御部36は、起動間隔Tだけ待機する(ステップS72)。
次に、開始制御部36は、i番目のダミーデータ送信制御部32_iを起動する(ステップS73)。
次に、開始制御部36は、iがスレーブサーバ60の個数nより小さければ(ステップS74でYes)、iに1を加算し(ステップS75)、ステップS72からの動作を繰り返す。
一方、iがn以上になった場合(ステップS74でNo)、開始制御部36は、動作を終了する。
以上で、開始制御部36の動作の説明を終了する。
次に、マスタサーバ30におけるダミーデータ送信制御部32_iの動作を図18に示す。なお、ダミーデータ送信制御部32_iは、所定期間算出部35から、所定期間tを既に通知されているものとする。また、ダミーデータ送信制御部32_iは、開始制御部36によって起動されると、以下の動作を開始するものとする。
図18では、まず、ダミーデータ送信制御部32_iは、対応するスレーブサーバ60_iに関する送信済フラグの内容をチェックする(ステップS81)。
ここで、送信済フラグがオンである場合、ダミーデータ送信制御部32_iは、送信済フラグをオフに設定(リセット)する(ステップS82)。
一方、送信済フラグがオフである場合、ダミーデータ送信制御部32_iは、サイズがs以上のダミーデータをスレーブサーバ60_iに送信するよう、データ送信部31_iに要求する(ステップS83)。
次に、ダミーデータ送信制御部32_iは、所定期間tだけ待機する(ステップS84)。
そして、ダミーデータ送信制御部32_iの動作はステップS81に戻る。
以上で、ダミーデータ送信制御部32_iの動作の説明を終了する。
なお、n個のスレーブサーバ60_1〜60_nのそれぞれの動作については、図12を参照して説明した本発明の第2の実施の形態におけるスレーブサーバ60の動作と同様であるため、本実施の形態における説明を省略する。
次に、本発明の第3の実施の形態の効果について述べる。
本発明の第3の実施の形態としてのメモリデータベースシステムは、マスタサーバからスレーブサーバに対して断続的に更新ログの転送が行われる場合であっても、輻輳ウィンドウサイズが所定サイズ以下になることをさらに十分に防ぐことができる。
その理由は、データ送信部が、所定のサイズs以上の更新ログをスレーブサーバに送信したときに送信済フラグをオンに設定するからである。また、ダミーデータ送信制御部が、RTO時間にα(0<α<0.5)を乗じて求められる所定期間t毎に送信済フラグをチェックするからである。そして、ダミーデータ送信制御部が、送信済フラグがオンであればオフにリセットし、送信済フラグがオフであれば、サイズがs以上のダミーデータを、データ送信部を通してスレーブサーバに送信するよう制御するからである。
これにより、本実施の形態は、更新ログ転送による通信が発生していない間も、サイズs以上のダミーデータを、長くてもRTO時間以内に送信することができる。したがって、本実施の形態は、スロースタートを開始させてしまうことなく、輻輳ウィンドウサイズをs以上に保つ。このように、本実施の形態は、一旦拡大した輻輳ウィンドウサイズが所定のサイズs以下に縮小することを防ぐことにより、スロースタートを回避することができる。したがって、本実施の形態は、ある期間更新ログの転送がなかった後にスレーブサーバに更新ログを転送する場合であっても、通信遅延を解消することが可能である。このように、本実施の形態は、高可用性および高速なレスポンスが同時に求められるようなオンライントランザクションシステムを構成するメモリデータベースシステムにおいて、常に高速なレプリケーション処理を行うことができる。
さらに、本発明の第3の実施の形態としてのメモリデータベースシステムは、マスタサーバからスレーブサーバに対する更新ログの転送において、遅延ACKを発生させることがなく、より高速なデータ転送を可能とする。
その理由は、データ送信部が、ダミーデータのサイズをs以上とし、sの値に、TCPにおいて1セグメントで転送可能なデータの最大サイズ(MSS)の2倍を適用するからである。ここで、TCPでは、受信側は、サイズがMSSのセグメントを2つ受信すると即座にACKを返す。したがって、本実施の形態は、輻輳ウィンドウサイズをMSSの2倍以上に保つことにより、遅延ACKにより発生する通信遅延を抑えることができる。
また、本発明の第3の実施の形態としてのメモリデータベースシステムは、レプリケーション実行中におけるダミーデータの無用な転送による帯域の圧迫を避けることができる。
その理由は、データ転送部が、サイズs以上の更新ログを送信した場合には送信済フラグをオンにし、ダミーデータ転送制御部が、送信済フラグがオンであればオフにリセットしてダミーデータの送信を行わないからである。
これにより、本実施の形態は、前回の通信からRTO時間内に既にサイズs以上の更新ログの転送が行われていればダミーデータの送信を省略することができる。したがって、本実施の形態は、レプリケーション実行中に無用なダミーデータを転送することがない。
また、本発明の第3の実施の形態としてのメモリデータベースシステムは、複数のスレーブサーバに対するダミーデータの転送によりCPUの負荷およびネットワーク負荷を一時的に高騰させることがない。
その理由は、データ送信部が、複数のスレーブサーバに対してそれぞれ異なるコネクションを介して更新ログまたはダミーデータを送信し、送信済みフラグをスレーブサーバ毎に保持するからである。また、ダミーデータ送信制御部が、各スレーブサーバに関して送信済フラグの値に応じた処理を、スレーブサーバ毎に異なるタイミングで所定期間t毎に実行するからである。例えば、起動制御部が、所定期間tをスレーブサーバ数nで除した起動間隔T毎に、n個のダミーデータ送信制御部を順次起動していくからである。
これにより、本実施の形態は、複数のスレーブサーバに対するダミーデータの送信タイミングを分散させることができ、CPUの負荷およびネットワークの負荷を平準化する。その結果、本実施の形態は、ダミーデータの送信によるアプリケーション部またはその他重要プロセスの動作への影響を抑えることができる。
(第3の実施の形態の他の態様)
次に、本発明の第3の実施の形態の他の態様について説明する。
メモリデータベースシステム3は、図19に示すように、マスタサーバ30において、n個のデータ送信部31_iの代わりに1つのデータ送信部31を有し、開始制御部36を省略するように構成することも可能である。
この場合、データ送信部31は、図15に示した動作の代わりに、図20に示すよう動作する。
図20では、まず、データ送信部31は、データの送信要求を受信する(ステップS51でYes)。
次に、データ送信部31は、受信した送信要求が、アプリケーション部24からの更新ログの送信要求であれば(ステップS52で「更新ログ」)、更新ログを、スレーブサーバ60_1〜60_nに対してそれぞれ送信する(ステップS93)。
次に、データ送信部31は、ステップS93で送信した更新ログのサイズが、s以上であった場合(ステップS54でYes)、スレーブサーバ60_1〜60_nに関するn個の送信済フラグをそれぞれオンに設定して保持する(ステップS95)。そして、データ送信部31の動作はステップS51に戻る。
一方、サイズがs未満であった場合、データ送信部31の動作はステップS51に戻る。
また、ステップS51で受信した送信要求が、いずれかのスレーブサーバ60に対するダミーデータの送信要求であれば(ステップS52で「ダミーデータ」)、データ送信部31は、サイズがs以上のダミーデータを、対象のスレーブサーバ60に対して送信する(ステップS96)。そして、データ送信部31の動作はステップS51に戻る。
また、この場合、ダミーデータ送信制御部32_iは、図18に示した動作の代わりに、図21に示すように動作する。
図21では、まず、ダミーデータ送信制御部32_iは、所定期間算出部35から所定期間tを通知されると、次式(5)で算出される起動待機時間T1だけ動作開始を待つ(ステップS101)。
T1 = {(i − 1) ÷ n } × t・・・(5)
ここで、iは、何番目のダミーデータ送信制御部32であるかを表す番号である。また、nは、スレーブサーバ60の個数である。また、tは、所定期間算出部35から通知された所定期間である。
以降、ダミーデータ送信制御部32_iは、ステップS81〜ステップS84まで図18を用いて説明したように動作し、ステップS81の動作から繰り返す。
これにより、マスタサーバ30は、開始制御部36を省略した構成でも、各ダミーデータ送信制御部32_iによるダミーデータの送信タイミングを分散させることができる。
このように構成することにより、本発明の第3の実施の形態の他の態様は、データ送信部、ダミーデータ送信制御部、開始制御部を各々スレッドで構成することを想定した場合に、スレッドの種類および数を削減でき、CPU負荷をより小さくすることができる。
(第4の実施の形態)
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。本実施の形態では、本発明の第2および第3の実施の形態と同様に、本発明の情報処理システムをメモリデータベースシステムに適用した例について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1〜第3の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本発明の第4の実施の形態としてのメモリデータベースシステム4の構成を図22に示す。図22において、メモリデータベースシステム4は、本発明の第3の実施の形態としてのメモリデータベースシステム3に対して、マスタサーバ30に替えてマスタサーバ40と、n個のスレーブサーバ60に替えてn個のスレーブサーバ70(70_1〜70_n)とを備える点が異なる。また、マスタサーバ40は、本発明の第3の実施の形態におけるマスタサーバ30に対して、n個のデータ送信部31_iに替えてn個のデータ送信部41_iを備える点が異なる。また、スレーブサーバ70のそれぞれは、本発明の第2および第3の実施の形態におけるスレーブサーバ60に対して、データ受信部61に替えてデータ受信部71を備える点が異なる。
マスタサーバ40のデータ送信部41_iは、本発明の第3の実施の形態におけるデータ送信部31_iに対して、更新ログの送信要求およびダミーデータの送信要求を略同時に受けた場合の処理が異なる。具体的には、これらの送信要求を略同時に受けた場合、データ送信部41_iは、更新ログのサイズがs以上であれば、この更新ログをスレーブサーバ70_iに送信し、ダミーデータの送信を省略する。また、これらの送信要求を略同時に受けた場合、データ送信部41_iは、更新ログのサイズがs未満であれば、この更新ログにダミーデータを付加してサイズs以上にしてから、スレーブサーバ70_iに対して送信する。
なお、更新ログの送信要求およびダミーデータの送信要求を略同時に受けるとは、例えば、データ送信部41_iが、更新ログの送信要求を受けた後、更新ログの送信処理を開始する前に、ダミーデータの送信要求を受けた場合であってもよい。また、更新ログの送信要求およびダミーデータの送信要求を略同時に受けるとは、例えば、データ送信部41_iが、ダミーデータの送信要求を受けた後、ダミーデータの送信処理を開始する前に、更新ログの送信要求を受けた場合であってもよい。
なお、更新ログの送信要求およびダミーデータの送信要求を異なるタイミングで受けた場合には、データ送信部41_iは、本発明の第3の実施の形態におけるデータ送信部31_iと同様に動作するよう構成される。
スレーブサーバ70のデータ受信部71は、マスタサーバ40から、ダミーデータが付加された更新ログを受信すると、ダミーデータの部分を破棄して残りの更新ログを得る。そして、データ受信部71は、得られた更新ログを用いて、複製データ記憶部62に記憶された複製データの更新を行う。
なお、ダミーデータが付加されていない更新ログを受信した場合、および、ダミーデータのみを受信した場合には、データ受信部71は、本発明の第2および第3の実施の形態におけるデータ受信部61と同様に動作するよう構成される。
以上のように構成されたメモリデータベースシステム4の動作について説明する。メモリデータベースシステム4の動作は、本発明の第3の実施の形態としてのメモリデータベースシステム3の動作と略同様である。ただし、マスタサーバ40におけるデータ送信部41_iの動作およびスレーブサーバ70におけるデータ受信部71の動作の詳細が異なる。
まず、データ送信部41_iの動作を図23に示す。
図23において、まず、データ送信部41_iは、データの送信要求を受信する(ステップS111でYes)。
次に、データ送信部41_iは、ステップS111で受信した送信要求が、アプリケーション部24からの更新ログの送信要求であるか、ダミーデータの送信要求であるかを判断する(ステップS112)。
ここで、更新ログの送信要求であれば(ステップS112で「更新ログ」)、データ送信部41_iは、略同時にダミーデータの送信要求を受信しているか否かを判断する(ステップS113)。例えば、前述のように、データ送信部41_iは、この時点で、まだ処理を開始していないダミーデータの送信要求を既に受信していれば、略同時にダミーデータの送信要求を受信していると判断してもよい。
一方、ダミーデータの送信要求であれば(ステップS112で「ダミーデータ」)、データ送信部41_iは、略同時に更新ログの送信要求を受信しているか否かを判断する(ステップS114)。例えば、前述のように、データ送信部41_iは、この時点で、まだ処理を開始していない更新ログの送信要求を既に受信していれば、略同時に更新ログの送信要求を受信していると判断してもよい。
ステップS113またはステップS114において、更新ログの送信要求およびダミーデータの送信要求を略同時に受信していると判断した場合、データ送信部41_iは、更新ログのサイズがs以上であるか否かを判断する(ステップS115)。
ここで、更新ログのサイズがs未満である場合(ステップS115でNo)、データ送信部41_iは、全体のサイズがs以上になるよう更新ログにダミーデータを付加する(ステップS116)。
一方、更新ログのサイズがs以上であれば(ステップS115でYes)、データ送信部41_iの動作は、ステップS117に進む。
次に、データ送信部41_iは、更新ログをスレーブサーバ70_iに対して送信する(ステップS117)。ここで送信される更新ログは、ステップS116でダミーデータが付加された更新ログ、または、ステップS115でサイズがs以上あると判断された更新ログである。これにより、更新ログの送信要求およびダミーデータの送信要求を略同時に受信した場合に更新ログのサイズがs以上であれば、データ送信部41_iは、ダミーデータの送信を省略することになる。
次に、データ送信部41_iは、このスレーブサーバ70_iに関する送信済フラグをオンに設定して保持する(ステップS118)。
一方、ステップS112で更新ログの送信要求を受信したと判断され、ステップS113で略同時にダミーデータの送信要求を受信していないと判断された場合について説明する。この場合、データ送信部41_iは、ステップS53〜S55まで、本発明の第3の実施の形態におけるデータ送信部31_iと同様に動作する。
また、ステップS112でダミーデータの送信要求を受信したと判断され、ステップS114で略同時に更新ログの送信要求を受信していないと判断された場合について説明する。この場合、データ送信部41_iは、ステップS56を、本発明の第3の実施の形態におけるデータ送信部31_iと同様に実行する。
そして、データ送信部41_iの動作はステップS111に戻る。
以上で、データ送信部41_iの動作の説明を終了する。
次に、n個のスレーブサーバ70のそれぞれにおけるデータ受信部71の動作を図24に示す。
図24では、まず、データ受信部71は、マスタサーバ40からデータを受信する(ステップS41でYes)。
次に、データ受信部71は、受信したデータが更新ログである場合(ステップS42で「更新ログ」)、その更新ログに、ダミーデータが付加されているか否かを判断する(ステップS123)。
ここで、ダミーデータが付加されている場合、データ受信部71は、ダミーデータの部分を分離して破棄する(ステップS124)。
そして、データ受信部71は、更新ログを用いて、複製データ記憶部62の複製データを更新する(ステップS43)。
一方、ステップS123において、ダミーデータが付加されていないと判断した場合、データ受信部71は、ステップS41で受信した更新ログを用いて、ステップS43を実行する。
また、受信したデータがダミーデータである場合(ステップS42で「ダミーデータ」)、データ受信部71は、このダミーデータを破棄する(ステップS44)。
そして、データ受信部71の動作はステップS41に戻る。
以上で、データ受信部71の動作の説明を終了する。
次に、本発明の第4の実施の形態の効果について述べる。
本発明の第4の実施の形態としてのメモリデータベースシステムは、マスタサーバからスレーブサーバに対して断続的に更新ログの転送が行われる際に、より効率よく輻輳ウィンドウサイズの縮小を防ぐことができる。
その理由は、マスタサーバのデータ送信部が、更新ログの送信要求およびダミーデータの送信要求を略同時に受けた場合に、次のように動作するからである。すなわち、この場合、データ送信部は、更新ログのサイズがs以上であれば、スレーブサーバに対してダミーデータの送信を省略して更新ログを送信する。また、データ送信部は、更新ログのサイズがs未満であれば、サイズがs以上になるよう更新ログにダミーデータを付加してスレーブサーバに対して送信するからである。これにより、本実施の形態は、本発明の第2または第3の実施の形態に対して、送信するダミーデータの量を減らしながら同様の効果を奏することができる。したがって、本実施の形態は、CPU負荷およびネットワーク負荷をより小さくすることができ、より効率的に通信速度の低下を防止する。
なお、上述した本発明の第2から第4の実施の形態において、本発明の情報処理しシステムをメモリデータベースシステムに適用した例を中心に説明した。この他、各実施の形態は、マスタサーバおよびスレーブサーバ間でレプリケーションを行うその他のデータベースシステムにも適用可能である。
また、上述した本発明の第2から第4の実施の形態において、ダミーデータのサイズまたはダミーデータが付加された更新ログのサイズをs(MSSの2倍)以上とする例を中心に記載した。ただし、各実施の形態において、これらのサイズはsにより近い値(さらには、sに等しい値)であることが望ましい。これにより、各実施の形態は、不必要に大きなサイズのダミーデータを送信することによるCPUの負荷およびネットワークの負荷を高くすることがない。
また、上述した本発明の第2から第4の実施の形態において、所定条件として、s(MSSの2倍)以上であるという条件を適用する例を中心に説明した。なお、ここでいう所定条件は、送信済フラグをオンにするためにチェックする更新ログのサイズに関する所定条件、および、ダミーデータまたはダミーデータが付加された更新ログのサイズが満たすべき所定条件である。この他、各実施の形態において、所定条件は、その時点での輻輳ウィンドウサイズ以上であることであってもよい。その他、各実施の形態において、所定条件は、輻輳ウィンドウサイズの縮小をより十分に防止するためのデータサイズとして算出されるその他の値に基づく条件であってもよい。
また、上述した本発明の各実施の形態において、送信装置、受信装置、マスタサーバおよびスレーブサーバの各機能ブロックが、記憶装置またはROMに記憶されたコンピュータ・プログラムを実行するCPUによって実現される例を中心に説明した。この他、各装置の各機能ブロックの一部、全部、または、それらの組み合わせは、専用のハードウェアにより実現されていてもよい。
また、上述した本発明の各実施の形態において、送信装置、受信装置、マスタサーバおよびスレーブサーバの各機能ブロックは、複数の装置に分散されて実現されてもよい。
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した送信装置、受信装置、マスタサーバおよびスレーブサーバの各動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置(記憶媒体)に格納しておいてもよい。そして、係るコンピュータ・プログラムを当該CPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
以上、上述した各実施の形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した各実施の形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は、2013年11月5日に出願された日本出願特願2013−229313を基礎とする優先権を主張し、その開示の全てをここに取り込む。