(57)【要約】【課題】データベースへのアクセスの信頼性の低下を抑制する。【解決手段】クライアントからのデータベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、データベースに対して第１のデータベースアクセス要求を発行し、第１のデータベースアクセス要求への応答の受信後に第２のデータベースアクセス要求を行なうことにより、クライアントアクセス要求に対応するデータベースへのアクセスを実行するとともに、クライアントアクセス要求を受け取ったアクセス開始時刻から、アクセス開始時刻と第２のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時する。アクセス経過時間が基準時間以上経過したことが検出された場合に、第２のデータベースアクセス要求の実行をキャンセルする。【選択図】図２
2009282907.tif 000002
【特許請求の範囲】
【請求項１】
データベースへのアクセスを実行するデータベースアクセスサーバであって、
クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第１のデータベースアクセス要求を発行し、前記第１のデータベースアクセス要求への応答の受信後に第２のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行するデータベースアクセス処理部と、
前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第２のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時するデータベースアクセス計時部と、
を備え、
前記データベースアクセス処理部は、
前記データベースアクセス計時部において前記アクセス経過時間が基準時間以上経過したことが検出された場合に、前記第２のデータベースアクセス要求の実行をキャンセルする
ことを特徴とするデータベースアクセスサーバ。
【請求項２】
請求項１記載のデータベースアクセスサーバであって、
前記クライアントアクセス要求は前記データベースへの書き込み要求であって、前記第１のデータベースアクセス要求は前記データベースへの検索要求であり、前記第２のデータベースアクセス要求は前記データベースへの実際の書き込み要求であることを特徴とするデータベースアクセスサーバ。
【請求項３】
請求項１または請求項２記載のデータベースアクセスサーバであって、
前記データベースアクセス処理部は、
前記データベースアクセス計時部において前記アクセス経過時間が前記基準時間以上経過したことを検出した場合に、前記クライアントアクセス要求に対する応答として、前記クライアントアクセス要求を完了できなかったことを示すメッセージを前記クライアントに返す
ことを特徴とするデータベースアクセスサーバ。
【請求項４】
請求項３記載のデータベースアクセスサーバであって、
前記基準時間は、前記クライアントにおいて前記クライアントアクセス要求に対するタイムアウトが発生する前に、前記メッセージを返すように設定される
ことを特徴とするデータベースアクセスサーバ。
【請求項５】
請求項１ないし請求項４のいずれかに記載のデータベースアクセスサーバであって、
前記所定の処理タイミングは、前記第１のデータベースアクセス要求に対する応答を前記データベースから受け取ったタイミングであることを特徴とするデータベースアクセスサーバ。
【請求項６】
請求項１ないし請求項４のいずれかに記載のデータベースアクセスサーバであって、
前記所定の処理タイミングは、前記第２のデータベースアクセス要求を前記データベースに対して行なう直前のタイミングであることを特徴とするデータベースアクセスサーバ。
【請求項７】
クライアントとデータベースアクセスサーバとデータベースとを有するデータベースアクセスシステムであって、
前記データベースアクセスサーバは、
前記クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第１のデータベースアクセス要求を発行し、前記第１のデータベースアクセス要求への応答の受信後に第２のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行するとともに、前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第２のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時しており、
前記アクセス経過時間が基準時間以上経過したことを検出した場合に、前記第２のデータベースアクセス要求の実行をキャンセルする
ことを特徴とするデータベースアクセスシステム。
【請求項８】
請求項７記載のデータベースアクセスシステムであって、
前記データベースアクセスサーバは、さらに、前記アクセス経過時間が前記基準時間以上経過したことを検出した場合に、前記クライアントアクセス要求に対する応答として、前記クライアントアクセス要求を完了できなかったことを示すメッセージを前記クライアントに返すことを特徴とするデータベースアクセスシステム。
【請求項９】
請求項８記載のデータベースアクセスシステムであって、
前記データベースアクセスサーバは、
前記クライアントアクセス要求を受け付ける第１のサーバと、
前記データベースへのアクセスを実行する第２のサーバと、
を備え、
前記第１のサーバが、前記アクセス経過時間が前記基準時間以上経過したことを検出した場合に、前記クライアントアクセス要求に対する応答として、前記クライアントアクセス要求を完了できなかったことを示すメッセージを前記クライアントに返す
ことを特徴とするデータベースアクセスシステム。
【請求項１０】
データベースへのアクセスを実行するデータベースアクセスサーバのアクセス方法であって、
（ａ）クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第１のデータベースアクセス要求を発行し、前記第１のデータベースアクセス要求への応答の受信後に第２のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行する工程と、
（ｂ）前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第２のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時する工程と、
を備え、
前記工程（ａ）は、前記工程（ｂ）において、前記アクセス経過時間が基準時間以上経過したことを検出した場合に、前記第２のデータベースアクセス要求の実行をキャンセルする工程を含む
ことを特徴とするアクセス方法。
【請求項１１】
クライアントとデータベースアクセスサーバとデータベースとを有するデータベースアクセスシステムにおいて、データベースへのアクセスを実行するアクセス方法であって、
（ａ）前記クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を前記データベースアクセスサーバが受け取った際に、前記データベースアクセスサーバが前記データベースに対して第１のデータベースアクセス要求を発行し、前記第１のデータベースアクセス要求への応答の受信後に第２のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行する工程と、
（ｂ）前記データベースアクセスサーバが前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第２のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時する工程と、
を備え、
前記工程（ａ）は、前記工程（ｂ）において、前記アクセス経過時間が基準時間以上経過したことを検出した場合に、前記第２のデータベースアクセス要求の実行をキャンセルする工程を含む
ことを特徴とするアクセス方法。
【請求項１２】
データベースへのアクセスを実行するためのコンピュータプログラムであって、
クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第１のデータベースアクセス要求を発行し、前記第１のデータベースアクセス要求への応答の受信後に第２のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行する機能と、
前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第２のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時する機能と、
前記アクセス経過時間が基準時間以上経過したことを検出した場合に、前記第２のデータベースアクセス要求の実行をキャンセルする機能と、
をコンピュータに実現させるためのコンピュータプログラム
【請求項１３】
請求項１２記載のコンピュータプログラムをコンピュータ読み取り可能にした記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントからのデータベースへのアクセス要求を受け付けたサーバがデータベースに対して要求したアクセスの処理に滞留が発生することにより、データベースへのアクセスの信頼性が低下することを抑制する技術に関する。
【背景技術】
【０００２】
クライアントが直接的にデータベースに対してアクセスを実行するのではなく、データベースにアクセス可能なサーバ（以下、「データベースアクセスサーバ」とも呼ぶ）を介してアクセスを実行する構成のクライアント・サーバシステム（以下、「データベースアクセスシステム」とも呼ぶ）がある。
【０００３】
上記のようなデータベースアクセスシステムでは、以下で説明するような問題が確認されている。すなわち、アクセス間隔がある程度あいた後、例えば、２〜３時間程度あいた後、クライアントからのアクセス要求を受けて、データベースへのアクセス要求を行なうと、そのアクセス要求に対応する処理が滞留する場合がある。そして、このような滞留が発生している間に、クライアントからの次のアクセス要求を受けてデータベースへのアクセス要求を行なうと、このアクセス要求に対応する処理は滞留することなく処理される。一方、滞留したアクセス要求に対応する処理は、一定時間経過後、例えば、１５分程度経過後、処理される。したがって、最初のアクセス要求に対応する処理が滞留している間に、クライアントからのアクセス要求があると、データベースへのアクセスの順番が入れ替わってしまい、データベースへのアクセスの信頼性が低下する、という問題が発生する。
【０００４】
【特許文献１】特開２００３−８７６２３号公報
【特許文献２】特開２００２−２２９９４３号公報
【特許文献３】特開平９−３１９７０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上記した問題点を解決し、データベースへのアクセスの信頼性が低下することを抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【０００７】
［適用例１］
データベースへのアクセスを実行するデータベースアクセスサーバであって、
クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第１のデータベースアクセス要求を発行し、前記第１のデータベースアクセス要求への応答の受信後に第２のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行するデータベースアクセス処理部と、
前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第２のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時するデータベースアクセス計時部と、
を備え、
前記データベースアクセス処理部は、
前記データベースアクセス計時部において前記アクセス経過時間が基準時間以上経過したことが検出された場合に、前記第２のデータベースアクセス要求の実行をキャンセルする
ことを特徴とするデータベースアクセスサーバ。
このデータアクセスサーバによれば、データベースへのアクセスの信頼性が低下することを抑制することが可能である。
【０００８】
［適用例２］
適用例１記載のデータベースアクセスサーバであって、
前記クライアントアクセス要求は前記データベースへの書き込み要求であって、前記第１のデータベースアクセス要求は前記データベースへの検索要求であり、前記第２のデータベースアクセス要求は前記データベースへの実際の書き込み要求であることを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによれば、クライアントアクセス要求はデータベースへの書き込み要求であって、第１のデータベースアクセス要求はデータベースへの検索要求であり、第２のデータベースアクセス要求はデータベースへの実際の書き込み要求である場合において、データベースへのアクセスの信頼性が低下することを抑制することが可能である。
【０００９】
［適用例３］
適用例１または適用例２記載のデータベースアクセスサーバであって、
前記データベースアクセス処理部は、
前記データベースアクセス計時部において前記アクセス経過時間が前記基準時間以上経過したことを検出した場合に、前記クライアントアクセス要求に対する応答として、前記クライアントアクセス要求を完了できなかったことを示すメッセージを前記クライアントに返す
ことを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによれば、アクセス経過時間が所定の時間以上経過したことをクライアントに通知することにより、例えば、クライアントが再度クライアントアクセス要求を実行することができるので、データベースへのアクセスの信頼性が低下することを抑制することが可能である。
【００１０】
［適用例４］
適用例３記載のデータベースアクセスサーバであって、
前記基準時間は、前記クライアントにおいて前記クライアントアクセス要求に対するタイムアウトが発生する前に、前記メッセージを返すように設定される
ことを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによれば、クライアントにおいて発生するタイムアウトよりも前に、クライアントアクセス要求を完了できなかったことを示すメッセージをクライアントに返すことができるので、データベースへのアクセスの信頼性が低下することを抑制することが可能である。
【００１１】
［適用例５］
適用例１ないし適用例４のいずれかに記載のデータベースアクセスサーバであって、
前記所定の処理タイミングは、前記第１のデータベースアクセス要求に対する応答を前記データベースから受け取ったタイミングであることを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによれば、アクセス経過時間を容易に監視することが可能である。
【００１２】
［適用例６］
適用例１ないし適用例４のいずれかに記載のデータベースアクセスサーバであって、
前記所定の処理タイミングは、前記第２のデータベースアクセス要求を前記データベースに対して行なう直前のタイミングであることを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによっても、アクセス経過時間を容易に監視することが可能である。
【００１３】
なお、本発明は、上述した種々の特徴を必ずしも全て備えている必要はなく、その一部を省略したり、適宜、組み合わせたりして構成することができる。また、本発明は、種々の形態で実現することが可能であり、例えば、データベースアクセスサーバやデータベースサーバのアクセス方法、データベースアクセスシステムやデータベースアクセスシステムにおけるアクセス方法、それらの方法やシステムの機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。なお、それぞれの態様において、先に示した種々の付加的要素を適用することが可能である。
【００１４】
本発明をコンピュータプログラムまたはそのプログラムを記録した記録媒体等として構成する場合には、データベースアクセスサーバの動作を制御するプログラム全体として構成するものとしてもよいし、本発明の機能を果たす部分のみを構成するものとしてもよい。また、記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、ＩＣカード、ＲＯＭカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ）および外部記憶装置などコンピュータが読み取り可能な種々の媒体を利用できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
Ａ．実施例：
Ｂ．変形例：
【００１６】
Ａ．実施例：
図１は、本発明の一実施例としてのデータベースアクセスシステムの構成例を示す説明図である。このデータベースアクセスシステム１０は、クライアント１００が存在するクライアント側ネットワークＮＷ１と、データベース２００が存在するサーバ側ネットワークＮＷ２とを、インターネットＩＮＴを介して接続する構成とされている。
【００１７】
サーバ側ネットワークＮＷ２には、Ｗｅｂサーバ３００と、ＡＰサーバ４００と、データベース２００とが接続されている。ただし、Ｗｅｂサーバ３００と、ＡＰ（アプリケーション）サーバ４００およびデータベース２００との間には、ファイアウォール５００が設けられている。ファオアウォール５００は、Ｗｅｂサーバ３００とＡＰサーバ４００との間の通信は許可するが、クライアント１００等の他の機器との間の通信を禁止するように設定されている。
【００１８】
なお、図示した例では、サーバ側ネットワークＮＷ２にはＷｅｂサーバ３００とＡＰサーバ４００とデータベース２００とがそれぞれ１台接続されている例が示されているが、これに限定されるものではなく、それぞれの機器の数は、任意に設定可能である。
【００１９】
クライアント１００によるデータベース２００へのアクセスは概ね以下のように実行される。まず、クライアント１００が、データベース２００へのアクセス（データの読み出しや書き込み）の要求を、データベース２００ではなく、Ｗｅｂサーバ３００に対して行なう。Ｗｅｂサーバ３００は、クライアント１００からの要求を受け付けると、その要求をＡＰサーバ４００に対して受け渡す。ＡＰサーバ４００は、受け付けた要求に応じてデータベース２００に対して、第１のデータベースアクセス要求を発行し、第１のデータベースアクセス要求への応答を受け取った後に第２のデータベースアクセス要求を行なうことにより、アクセスを実行してＷｅｂサーバ３００に応答し、Ｗｅｂサーバ３００は、ＡＰサーバ４００から受け取ったアクセスの結果をクライアント１００に応答する。
【００２０】
なお、Ｗｅｂサーバ３００における上記動作は、主にアクセス処理部３１０およびアクセス監視部３２０によって実行される。また、ＡＰサーバ４００における上記動作は、主にデータベース（以下、「ＤＢ」とも略す）アクセス処理部４１０およびＤＢアクセス監視部４２０によって実行される。
【００２１】
図２は、データベースアクセスシステム１０において実行されるクライアント１００からデータベース２００へのアクセスのフローを示す説明図である。なお、図２は、クライアント１００からデータベース２００へのアクセスの要求（リクエスト）として、データの書き込みを要求する場合を例に示している。
【００２２】
まず、クライアント１００とＷｅｂサーバ３００との間で実行される処理のフローについて説明する。クライアント１００が、Ｗｅｂサーバ３００に対してデータの書き込みの要求(リクエスト)を実行し（ステップＳ１０２）、Ｗｅｂサーバ３００からリクエストに対する応答が有るまで、待機する（ステップＳ１０４）。
【００２３】
このとき、Ｗｅｂサーバ３００は、クライアント１００からのリクエストを受け付けるとともに、このリクエストを受け付けた時点の時刻をＷｅｂサーバ３００におけるアクセス開始時刻Ｔ０として記憶する（ステップＳ２０２）。そして、Ｗｅｂサーバ３００は、受け付けたリクエストをＡＰサーバ４００に通知した（ステップＳ２０４）後、ＡＰサーバ４００からのリクエストに対する応答が無いままアクセス開始時刻Ｔ０からタイムアウト時間Ｔｏｕｔが経過してタイムアウトとなるか、ＡＰサーバ４００からのリクエストに対する応答を受け取るまで、待機する（ステップＳ２０６，ステップＳ２０８）。なお、Ｗｅｂサーバ３００は、ＡＰサーバ４００からのリクエストに対する応答を受け取った場合には、その応答をクライアント１００に返し（ステップＳ２１０）、タイムアウトの場合には、タイムアウトであることを示す応答（タイムアウト応答）をクライアント１００に返す（ステップＳ２１２）。
【００２４】
クライアント１００は、Ｗｅｂサーバ３００から返された応答を受け取ると、受け取った応答が自身のリクエストに対する応答であるかタイムアウト応答であるか判断し（ステップＳ１０６）、リクエストに対する応答である場合には、アクセス処理を終了する。一方、タイムアウト応答である場合には、再度アクセスの要求（リトライ）を実行し（ステップＳ１０８）、Ｗｅｂサーバ３００からリトライのリクエストに対する応答が有るまで、待機する（ステップＳ１０４）。
【００２５】
次に、Ｗｅｂサーバ３００からＡＰサーバ４００にクライアント１００からのリクエストが通知された際に、ＡＰサーバ４００とデータベース２００との間で実行される処理のフローについて説明する。ＡＰサーバ４００は、Ｗｅｂサーバ３００から通知されたクライアント１００からのリクエストを受け取とると、このリクエストを受け取った時点の時刻をＡＰサーバ４００におけるアクセス開始時時刻Ｔ１として記憶する（ステップＳ３０２）。そして、ＡＰサーバ３００は、まず、データベースに対して第１のデータベースアクセス要求としての検索要求を行なう（ステップＳ３０４）。
【００２６】
検索要求を受け取ったデータベース２００は、検索を実行し（ステップ４０２）、その応答として検索結果をＡＰサーバ４００に返す。
【００２７】
データベース２００から検索結果を受け取ったＡＰサーバ４００は、例えば、データを書き込むべき領域が存在しているか否かを判定する判定処理等の種々の検索結果処理を、検索結果に基づいて実行する（ステップＳ３０６）。そして、検索結果処理の終了時点における現在時刻Ｔ２を取得し（ステップＳ３０８）、アクセス開示時刻Ｔ１から現在時刻Ｔ２までのアクセス経過時間（Ｔ２−Ｔ１）が、Ｗｅｂサーバ３００におけるタイムアウト時間Ｔｏｕｔから所定のマージンαを減じて得られるＡＰサーバ４００におけるタイムアウト時間（Ｔｏｕｔ−α）以上となっているか否か判断する（ステップＳ３１０）。このとき、アクセス経過時間（Ｔ２−ｔ１）がタイムアウト時間（Ｔｏｕｔ−α）よりも小さい場合には、ＡＰサーバ４００は、データベース２００に対して、第２のデータベースアクセス要求としての書き込み要求を行なう（ステップＳ３１２）。一方、アクセス経過時間（Ｔ２−Ｔ１）が、タイムアウト時間（Ｔｏｕｔ−α）以上となっている場合には、ＡＰサーバ４００は、データベース２００に対しての書き込み要求をキャンセルし（ステップＳ３１６）、クライアント１００からのリクエストに対応するデータベース２００へのアクセスの処理をキャンセルする。
【００２８】
書き込み要求を受け取ったデータベース２００は、書き込みを実行し（ステップＳ４０４）、書き込み結果をその応答としてＡＰサーバ４００に返す。
【００２９】
データベース２００から書き込み結果を受け取ったＡＰサーバ４００は、書き込み結果をＷｅｂサーバ３００に対して応答する（ステップＳ３１４）。これにより、Ｗｅｂサーバ３００では、上記したように、クライアント１００からのリクエストに対する応答として、受け取った処理結果を返す（ステップＳ２１０）。
【００３０】
ここで、データベース２００に対する検索処理の後に実行する書き込み処理のための書き込み要求をキャンセルするか否かの判断の基準として、Ｗｅｂサーバ３００におけるタイムアウトの判断と同様にタイムアウト時間Ｔｏｕｔを基準として判断した場合には、以下のような問題が発生する。すなわち、ＡＰサーバ４００のアクセス開始時刻Ｔ１はＷｅｂサーバ３００におけるアクセス開始時刻Ｔ０よりも必ず遅れている。このため、アクセス経過時間（Ｔ２−Ｔ１）を仮にタイムアウト時間Ｔｏｕｔを基準に判断すると、Ｗｅｂサーバ３００では既にタイムアウトとなっているのに、ＡＰサーバ４００ではまだキャンセルの対象とならない状態が発生する可能性がある。そこで、Ｗｅｂサーバ３００でタイムアウトとなる状況においては、かならずＡＰサーバ４００では対応する書き込み要求がキャンセルされるようにすることが好ましい。このため、ＡＰサーバ４００におけるタイムアウト時間は、Ｔｏｕｔからマージンαを減じた（Ｔｏｕｔ-α）とされている。
【００３１】
データベースアクセスシステム１０において、以上説明したようにクライアント１００からデータベース２００へのアクセスを実行することにより、以下で説明する効果を得ることができる。
【００３２】
図３は、図２に示したフローに従って実行されるクライアント１００からデータベース２００へのアクセスの具体例を示す説明図である。図４は、比較例としてのクライアント１００からデータベース２００へのアクセスの具体例を示す説明図である。なお、比較例では、実施例のＷｅｂサーバ３００に含まれるアクセス監視部３２０（図１参照）を有しておらず、アクセス監視部３２０によるタイムアウトの監視およびアクセス処理部３１０によるクライアント１００へのタイムアウト応答が行なわれない。また、比較例では、実施例のＡＰサーバ４００に含まれるＤＢアクセス監視部４２０（図１参照）を有しておらず、ＤＢアクセス監視部４２０によるタイムアウトの監視およびＤＢアクセス処理部３２０によるデータベースへの書き込み要求のキャンセルは行なわれない。
【００３３】
まず、図４の比較例の場合について説明する。図４の比較例は、クライアント１００からＷｅｂサーバ３００に対して、データベース２００への書き込みアクセスの要求を示す２つのリクエストＲ１，Ｒ２が送られる場合を示している。
【００３４】
第１のリクエストＲ１がクライアント１００からＷｅｂサーバ３００に送られると、Ｗｅｂサーバ３００は、送られた第１のリクエストＲ１を受け付けてＡＰサーバ４００に送る。ＡＰサーバ４００は、第１のリクエストＲ１を受け取ると、まず、データベース２００に対して、第１のリクエストＲ１に対応する第１の検索要求ＳＲ１を送る。このとき、データベース２００では、受け取った第１の検索要求ＳＲ１に応じた検索処理を実行する。ただし、この第１の検索要求ＳＲ１に対応する検索処理は直ちに実行されて第１の検索応答ＳＲＳ１が返されるのではなく、この検索処理に滞留が発生して、ＡＰサーバ４００からＷｅｂサーバ３００に対して、第１のリクエストＲ１に対応する応答ＲＳ１が返されないものとする。
【００３５】
上記のように滞留が発生している間に、クライアント１００において第１のリクエストＲ１に対するタイムアウトが発生すると、第１のリクエストＲ１がキャンセルされてしまい、次のリクエストの発行が可能となる。このとき、第２のリクエストＲ２がクライアント１００からＷｅｂサーバ３００に送られると、Ｗｅｂサーバ３００は、第１のリクエストＲ１の場合と同様に、送られた第２のリクエストＲ２を受け付けてＡＰサーバ４００に送る。ＡＰサーバ４００は、第２のリクエストＲ２を受け取ると、第１のリクエストＲ１の場合と同様に、データベース２００に対して、第２のリクエストＲ２に対応する第２の検索要求ＳＲ２を送る。第２の検索要求ＳＲ２を受けたデータベース２００は、第１の検索要求ＳＲ１とは異なり、滞留せずに、第２の検索要求ＳＲ２に対応する検索処理を実行し、ＡＰサーバ４００に対して、対応する第２の検索応答ＳＲＳ２を返す。第２の検索応答ＳＲＳ２を受けたＡＰサーバ４００は、データベース２００に対して、第２のリクエストＲ２に対応する第２の書き込み要求ＷＲ２を送る。第２の書き込み要求ＷＲ２を受けたデータベース２００は、第２の書き込み要求ＷＲ２に応じた書き込み処理を実行し、ＡＰサーバ４００に対して第２の書き込み応答ＷＲＳ２を返す。第２の書き込み応答ＷＲＳ２を受けたＡＰサーバ４００は、Ｗｅｂサーバ３００に対して、第２のリクエストＲ２に対する第２の応答ＲＳ２を返す。第２の応答ＲＳ２を受けたＷｅｂサーバ３００は、クライアント１００に対して、第２の応答ＲＳ２を返す。
【００３６】
一方、滞留していた第１の検索要求ＳＲ１に対する第１の検索応答ＳＲＳ１は、第２の書き込み要求ＷＲ２に対応する書き込み処理の実行後に、データベース２００からＡＰサーバ４００に対して返される。このとき、第１の検索応答ＳＲＳ１を受けたＡＰサーバ４００は、データベース２００に対して、第１の書き込み要求ＷＲ１を送る。そして、第１の書き込み要求ＷＲ１を受けたデータベース２００は、第１の書き込み要求ＷＲ１に応じた書き込み処理を実行し、ＡＰサーバ４００に対して第１の書き込み応答ＷＲＳ１を返す。第１の書き込み応答ＷＲＳ１を受けたＡＰサーバ４００は、Ｗｅｂサーバ３００に対して、第１のリクエストＲ１に対する第１の応答ＲＳ１を返す。そして、第１の応答ＲＳ１を受けたＷｅｂサーバ３００は、クライアント１００に対して、第１の応答ＲＳ１を返す。
【００３７】
以上のように比較例の場合には、第１のリクエストＲ１に対応するデータベース２００への書き込みと、第２のリクエストＲ２に対応するデータベース２００への書き込みの順番が逆転することになる。
【００３８】
次に、図３の本実施例の場合について説明する。本実施例も比較例と同様に、クライアント１００からＷｅｂサーバ３００に対して、データベース２００への書き込みアクセスの要求を示す２つのリクエストＲ１，Ｒ２が送られる場合を示している。
【００３９】
比較例の場合と同様に、第１のリクエストＲ１がクライアント１００からＷｅｂサーバ３００に送られると、Ｗｅｂサーバ３００は、送られた第１のリクエストＲ１を受け付けてＡＰサーバ４００に送る。ＡＰサーバ４００は、第１のリクエストＲ１を受け取ると、まず、データベース２００に対して、第１のリクエストＲ１に対応する第１の検索要求ＳＲ１を送る。このとき、データベース２００では、受け取った第１の検索要求ＳＲ１に応じた検索処理を実行する。ただし、本実施例においても、この第１の検索要求ＳＲ１に対応する検索処理は直ちに実行されて検索応答ＳＲＳ１が返されるのではなく、この検索処理に滞留が発生して、ＡＰサーバ４００からＷｅｂサーバ３００に対して、第１のリクエストＲ１に対応する応答ＲＳ１が返されないものとする。
【００４０】
ここで、Ｗｅｂサーバ３００は、第１のリクエストＲ１を受け付けてから、第１のリクエストＲ１に対応する第１の応答ＲＳ１を受け取るまでの経過時間を監視する。第１のリクエストＲ１に対応する処理に滞留が発生して経過時間がタイムアウト時間Ｔｏｕｔを経過した場合には、第１のリクエストＲ１に対するタイムアウト応答ＲＴ１を、クライアント１００に返す。なお、このタイムアウト時間Ｔｏｕｔは、クライアント１００において第１のリクエストＲ１に対するタイムアウトが発生する前に、第１のリクエストＲ１に対するタイムアウト応答ＲＴ１を、クライアント１００に返すように設定される。具体的には、例えば、クライアント１００におけるタイムアウトの時間よりも若干短い時間に設定される。
【００４１】
タイムアウト応答ＲＴ１を受け取ったクライアント１００は、第１のリクエストＲ１と同じ内容のリトライリクエストＲ１＿Ｒの送付をＷｅｂサーバ３００に対して実行する。
【００４２】
リトライリクエストＲ１＿Ｒがクライアント１００からＷｅｂサーバ３００に送られると、Ｗｅｂサーバ３００は、第１のリクエストＲ１の場合と同様に、送られたリトライリクエストＲ１＿Ｒを受け付けてＡＰサーバ４００に送る。ＡＰサーバ４００は、リトライリクエストＲ１＿Ｒを受け取ると、第１のリクエストＲ１の場合と同様に、データベース２００に対して、リトライ検索要求ＳＲ１＿Ｒを送る。リトライ検索要求ＳＲ１＿Ｒを受けたデータベース２００は、第１の検索要求ＳＲ１とは異なり、検索処理に滞留は発生せず、リトライ検索要求ＳＲ１＿Ｒに対応する検索処理を実行し、ＡＰサーバ４００に対して、対応するリトライ検索応答ＳＲＳ１＿Ｒを返す。リトライ検索応答ＳＲＳ１＿Ｒを受けたＡＰサーバ４００は、データベース２００に対して、リトライ書き込み要求ＷＲ１＿Ｒを送る。リトライ書き込み要求ＷＲ１＿Ｒを受けたデータベース２００は、リトライ書き込み要求ＷＲ１ Ｒに応じた書き込み処理を実行し、ＡＰサーバ４００に対してリトライ書き込み応答ＷＲＳ１＿Ｒを返す。リトライ書き込み応答ＷＲＳ１＿Ｒを受けたＡＰサーバ４００は、Ｗｅｂサーバ３００に対して、リトラリクエストＲ１＿Ｒに対するリトライ応答ＲＳ１＿Ｒを返す。リトライ応答ＲＳ１＿Ｒを受けたＷｅｂサーバ３００は、クライアント１００に対して、リトライ応答ＲＳ１＿Ｒを返す。リトライ応答ＲＳ１＿Ｒを受け取ったクライアント１００は、次のリクエストを実行することが可能となる。
【００４３】
そして、第２のリクエストＲ２がクライアント１００からＷｅｂサーバ３００に送られると、Ｗｅｂサーバ３００は、第１のリクエストＲ１の場合と同様に、送られた第２のリクエストＲ２を受け付けてＡＰサーバ４００に送る。ＡＰサーバ４００は、第２のリクエストＲ２を受け取ると、第１のリクエストＲ１の場合と同様に、データベース２００に対して、第２の検索要求ＳＲ２を送る。第２の検索要求ＳＲ２を受けたデータベース２００は、第２の検索要求ＳＲ２に対応する検索処理を実行し、ＡＰサーバ４００に対して、対応する第２の検索応答ＳＲＳ２を返す。第２の検索応答ＳＲＳ２を受けたＡＰサーバ４００は、データベース２００に対して、第２の書き込み要求ＷＲ２を送る。第２の書き込み要求ＷＲ２を受けたデータベース２００は、第２の書き込み要求ＷＲ２に応じた書き込み処理を実行し、ＡＰサーバ４００に対して第２の書き込み応答ＷＲＳ２を返す。第２の書き込み応答ＷＲＳ２を受けたＡＰサーバ４００は、Ｗｅｂサーバ３００に対して、第２のリクエストＲ２に対する第２の応答ＲＳ２を返す。第２の応答ＲＳ２を受けたＷｅｂサーバ３００は、クライアント１００に対して、第２の応答ＲＳ２を返す。
【００４４】
一方、滞留していた第１の検索要求ＳＲ１に対する第１の検索応答ＳＲＳ１は、第２の書き込み要求ＷＲ２に対応する書き込み処理の実行後に、データベース２００からＡＰサーバ４００に対して返される。このとき、第１の検索応答ＳＲＳ１を受けたＡＰサーバ４００は、第１のリクエストＲ１を受け取ってから、第１の検索応答ＳＲＳ１を受け取って検索結果処理を行なったタイミングの時刻まで、言い換えると、第１の書き込み要求ＷＲ１を行なう直前の時刻まで、の経過時間（アクセス時間（Ｔ２−Ｔ１））が、タイムアウト時間（Ｔｏｕｔ−α）を経過しているか否かを判断し、タイムアウト時間（Ｔｏｕｔ−α）を経過している場合には、第１の書き込み要求ＷＲ１のデータベース２００への送付をキャンセルする。これにより、第１のリクエストＲ１に対応する処理がキャンセルされる。
【００４５】
以上説明したように、図４の比較例の場合においては、第１のリクエストＲ１に対応する第１の検索要求ＳＲ１に滞留が発生している間に、第２のリクエストＲ２が行なわれた場合には、データの書き込みの順番が逆転し、データベース２００では第２のリクエストＲ２に対応するデータの書き込みが先に行われて、第１のリクエストＲ１に対応するデータの書き込みが後から行われてしまう、という不具合が発生する。
【００４６】
一方、実施例の場合には、第１のリクエストＲ１に対応する検索要求ＳＲ１に対応する第１の検索要求ＳＲ１に滞留が発生しても、Ｗｅｂサーバ３００において、第１のリクエストＲ１を受け付けてから第１の応答ＲＳ１を受け取るまでの経過時間を監視し、この経過時間がタイムアウト時間Ｔｏｕｔを経過した場合には、クライアント１００に対してタイムアウト応答ＲＴ１を返す。これにより、クライアント１００が第１のリクエストＲ１と同じ内容のリトライリクエストＲ１＿Ｒの送付をＷｅｂサーバ３００に対して実行することができる。この結果、リトライリクエストＲ１＿Ｒに対応するデータベース２００へのアクセス処理は、滞留することなく実行され、実質的に第１のリクエストＲ１に対応する書き込みを実行することができる。
【００４７】
また、滞留していた第１のリクエストＲ１に対応する第１の検索要求ＳＲ１に対応する第１の検索応答ＳＲＳ１がＡＰサーバ４００に返されたとしても、アクセス時間（Ｔ２−Ｔ１）がタイムアウト時間（Ｔｏｕｔ−α）を経過している場合には、第１の書き込み要求ＷＲ１のデータベース２００への送付をキャンセルすることにより、第１のリクエストＲ１に対応するアクセス処理をキャンセルすることができる。
【００４８】
以上のように、滞留の発生した第１のリクエストＲ１に対応する応答ＲＳ１を受け取るまでの時間を監視し、タイムアウト時間Ｔｏｕｔを経過している場合には、リトライを実行するとともに、滞留の発生したリクエストに対応する書き込み要求の実行をキャンセルすることにより、第１のリクエストに対応するデータの書き込みと第２のリクエストに対応するデータの書きこみの順番が逆転してしまうのを、抑制することが可能である。
【００４９】
なお、本実施例のＷｅｂサーバ３００およびＡＰサーバ４００が本発明のデータベースアクセスサーバに相当する。また、アクセス監視部３２０およびＤＢアクセス監視部４２０が本発明のアクセス計時部に相当する。
【００５０】
Ｂ．変形例：
なお、本発明は上記した実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様にて実施することが可能である。
【００５１】
上記実施例では、ＡＰサーバ４００において、アクセス経過時間（Ｔ２−Ｔ１）として、リクエストを受け取った時刻から、検索要求に対応する検索応答を受け取り、これに基づいて検索結果処理を行なった後の時刻までの経過時間を監視する場合を例に説明しているが、これに限定されるものではなく、例えば、検索応答を受け取った時刻までの経過時間を監視するようにしてもよい。すなわち、リクエストを受け取った時刻（アクセス開始時刻）から、アクセス開始時刻と書き込み要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を監視するようにしてもよい。
【００５２】
上記実施例では、本発明のデータベースアクセスサーバが、Ｗｅｂサーバ３００とＡＰサーバ４００の２つのサーバで構成されている場合を例に説明しているが、必ずしもこれに限定されるものではなく、１つのサーバで構成されるようにしてもよい。
【００５３】
上記実施例では、クライアント１００からデータベース２００へのアクセスの要求として、データの書き込みを要求する場合を例として、第１のデータベースアクセス要求として検索要求を行い、第２のデータベースアクセス要求として書き込み要求を行なう場合について説明しているが、これに限定されるものでない。例えば、クライアント１００からデータベース２００へのアクセスの要求として、データの読み出しを要求することとし、第１のデータベースアクセス要求として検索要求を行い、第２のデータベースアクセス要求として読み出し要求を行なう場合であってもよい。すなわち、クライアントからのデータベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、データベースに対して第１のデータベースアクセス要求を発行し、第１のデータベースアクセス要求への応答の受信後に第２のデータベースアクセス要求を行なうことにより、クライアントアクセス要求に対応するデータベースへのアクセスを実行する種々の場合に適用可能である。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施例としてのデータベースアクセスシステムの構成例を示す説明図である。
【図２】データベースアクセスシステム１０において実行されるクライアント１００からデータベース２００へのアクセスのフローを示す説明図である。
【図３】図２に示したフローに従って実行されるクライアント１００からデータベース２００へのアクセスの具体例を示す説明図である。
【図４】比較例としてのクライアント１００からデータベース２００へのアクセスの具体例を示す説明図である。
【符号の説明】
【００５５】
１０…データベースアクセスシステム
１００…クライアント
２００…データベース
３００…Ｗｅｂサーバ
３１０…アクセス処理部
３２０…アクセス監視部
４００…ＡＰサーバ
４１０…ＤＢアクセス処理部
４２０…ＤＢアクセス監視部
５００…ファオアウォール
ＮＷ１…クライアント側ネットワーク
ＮＷ２…サーバ側ネットワーク
ＩＮＴ…インターネット
【図１】
2009282907.tif 000003
【図２】
2009282907.tif 000004
【図３】
2009282907.tif 000005
【図４】
2009282907.tif 000006