JP2009282907A - データベースアクセスサーバおよびデータベースアクセスシステム - Google Patents

データベースアクセスサーバおよびデータベースアクセスシステム Download PDF

Info

Publication number
JP2009282907A
JP2009282907A JP2008136748A JP2008136748A JP2009282907A JP 2009282907 A JP2009282907 A JP 2009282907A JP 2008136748 A JP2008136748 A JP 2008136748A JP 2008136748 A JP2008136748 A JP 2008136748A JP 2009282907 A JP2009282907 A JP 2009282907A
Authority
JP
Japan
Prior art keywords
access
database
request
client
server
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.)
Pending
Application number
JP2008136748A
Other languages
English (en)
Inventor
Kosuke Matsunaga
浩輔 松永
Hironori Togashi
宏規 富樫
Eiichi Tokonami
栄一 床波
Minoru Ichimura
稔 市村
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2008136748A priority Critical patent/JP2009282907A/ja
Priority to US12/454,893 priority patent/US20090300027A1/en
Publication of JP2009282907A publication Critical patent/JP2009282907A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データベースへのアクセスの信頼性の低下を抑制する。
【解決手段】クライアントからのデータベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、データベースに対して第1のデータベースアクセス要求を発行し、第1のデータベースアクセス要求への応答の受信後に第2のデータベースアクセス要求を行なうことにより、クライアントアクセス要求に対応するデータベースへのアクセスを実行するとともに、クライアントアクセス要求を受け取ったアクセス開始時刻から、アクセス開始時刻と第2のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時する。アクセス経過時間が基準時間以上経過したことが検出された場合に、第2のデータベースアクセス要求の実行をキャンセルする。
【選択図】図2

Description

本発明は、クライアントからのデータベースへのアクセス要求を受け付けたサーバがデータベースに対して要求したアクセスの処理に滞留が発生することにより、データベースへのアクセスの信頼性が低下することを抑制する技術に関する。
クライアントが直接的にデータベースに対してアクセスを実行するのではなく、データベースにアクセス可能なサーバ(以下、「データベースアクセスサーバ」とも呼ぶ)を介してアクセスを実行する構成のクライアント・サーバシステム(以下、「データベースアクセスシステム」とも呼ぶ)がある。
上記のようなデータベースアクセスシステムでは、以下で説明するような問題が確認されている。すなわち、アクセス間隔がある程度あいた後、例えば、2〜3時間程度あいた後、クライアントからのアクセス要求を受けて、データベースへのアクセス要求を行なうと、そのアクセス要求に対応する処理が滞留する場合がある。そして、このような滞留が発生している間に、クライアントからの次のアクセス要求を受けてデータベースへのアクセス要求を行なうと、このアクセス要求に対応する処理は滞留することなく処理される。一方、滞留したアクセス要求に対応する処理は、一定時間経過後、例えば、15分程度経過後、処理される。したがって、最初のアクセス要求に対応する処理が滞留している間に、クライアントからのアクセス要求があると、データベースへのアクセスの順番が入れ替わってしまい、データベースへのアクセスの信頼性が低下する、という問題が発生する。
特開2003−87623号公報 特開2002−229943号公報 特開平9−319708号公報
本発明は、上記した問題点を解決し、データベースへのアクセスの信頼性が低下することを抑制する技術を提供することを目的とする。
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
[適用例1]
データベースへのアクセスを実行するデータベースアクセスサーバであって、
クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第1のデータベースアクセス要求を発行し、前記第1のデータベースアクセス要求への応答の受信後に第2のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行するデータベースアクセス処理部と、
前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第2のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時するデータベースアクセス計時部と、
を備え、
前記データベースアクセス処理部は、
前記データベースアクセス計時部において前記アクセス経過時間が基準時間以上経過したことが検出された場合に、前記第2のデータベースアクセス要求の実行をキャンセルする
ことを特徴とするデータベースアクセスサーバ。
このデータアクセスサーバによれば、データベースへのアクセスの信頼性が低下することを抑制することが可能である。
[適用例2]
適用例1記載のデータベースアクセスサーバであって、
前記クライアントアクセス要求は前記データベースへの書き込み要求であって、前記第1のデータベースアクセス要求は前記データベースへの検索要求であり、前記第2のデータベースアクセス要求は前記データベースへの実際の書き込み要求であることを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによれば、クライアントアクセス要求はデータベースへの書き込み要求であって、第1のデータベースアクセス要求はデータベースへの検索要求であり、第2のデータベースアクセス要求はデータベースへの実際の書き込み要求である場合において、データベースへのアクセスの信頼性が低下することを抑制することが可能である。
[適用例3]
適用例1または適用例2記載のデータベースアクセスサーバであって、
前記データベースアクセス処理部は、
前記データベースアクセス計時部において前記アクセス経過時間が前記基準時間以上経過したことを検出した場合に、前記クライアントアクセス要求に対する応答として、前記クライアントアクセス要求を完了できなかったことを示すメッセージを前記クライアントに返す
ことを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによれば、アクセス経過時間が所定の時間以上経過したことをクライアントに通知することにより、例えば、クライアントが再度クライアントアクセス要求を実行することができるので、データベースへのアクセスの信頼性が低下することを抑制することが可能である。
[適用例4]
適用例3記載のデータベースアクセスサーバであって、
前記基準時間は、前記クライアントにおいて前記クライアントアクセス要求に対するタイムアウトが発生する前に、前記メッセージを返すように設定される
ことを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによれば、クライアントにおいて発生するタイムアウトよりも前に、クライアントアクセス要求を完了できなかったことを示すメッセージをクライアントに返すことができるので、データベースへのアクセスの信頼性が低下することを抑制することが可能である。
[適用例5]
適用例1ないし適用例4のいずれかに記載のデータベースアクセスサーバであって、
前記所定の処理タイミングは、前記第1のデータベースアクセス要求に対する応答を前記データベースから受け取ったタイミングであることを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによれば、アクセス経過時間を容易に監視することが可能である。
[適用例6]
適用例1ないし適用例4のいずれかに記載のデータベースアクセスサーバであって、
前記所定の処理タイミングは、前記第2のデータベースアクセス要求を前記データベースに対して行なう直前のタイミングであることを特徴とするデータベースアクセスサーバ。
このデータベースアクセスサーバによっても、アクセス経過時間を容易に監視することが可能である。
なお、本発明は、上述した種々の特徴を必ずしも全て備えている必要はなく、その一部を省略したり、適宜、組み合わせたりして構成することができる。また、本発明は、種々の形態で実現することが可能であり、例えば、データベースアクセスサーバやデータベースサーバのアクセス方法、データベースアクセスシステムやデータベースアクセスシステムにおけるアクセス方法、それらの方法やシステムの機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。なお、それぞれの態様において、先に示した種々の付加的要素を適用することが可能である。
本発明をコンピュータプログラムまたはそのプログラムを記録した記録媒体等として構成する場合には、データベースアクセスサーバの動作を制御するプログラム全体として構成するものとしてもよいし、本発明の機能を果たす部分のみを構成するものとしてもよい。また、記録媒体としては、フレキシブルディスクやCD−ROM、DVD−ROM、光磁気ディスク、ICカード、ROMカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置(RAMやROMなどのメモリ)および外部記憶装置などコンピュータが読み取り可能な種々の媒体を利用できる。
以下、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.実施例:
B.変形例:
A.実施例:
図1は、本発明の一実施例としてのデータベースアクセスシステムの構成例を示す説明図である。このデータベースアクセスシステム10は、クライアント100が存在するクライアント側ネットワークNW1と、データベース200が存在するサーバ側ネットワークNW2とを、インターネットINTを介して接続する構成とされている。
サーバ側ネットワークNW2には、Webサーバ300と、APサーバ400と、データベース200とが接続されている。ただし、Webサーバ300と、AP(アプリケーション)サーバ400およびデータベース200との間には、ファイアウォール500が設けられている。ファオアウォール500は、Webサーバ300とAPサーバ400との間の通信は許可するが、クライアント100等の他の機器との間の通信を禁止するように設定されている。
なお、図示した例では、サーバ側ネットワークNW2にはWebサーバ300とAPサーバ400とデータベース200とがそれぞれ1台接続されている例が示されているが、これに限定されるものではなく、それぞれの機器の数は、任意に設定可能である。
クライアント100によるデータベース200へのアクセスは概ね以下のように実行される。まず、クライアント100が、データベース200へのアクセス(データの読み出しや書き込み)の要求を、データベース200ではなく、Webサーバ300に対して行なう。Webサーバ300は、クライアント100からの要求を受け付けると、その要求をAPサーバ400に対して受け渡す。APサーバ400は、受け付けた要求に応じてデータベース200に対して、第1のデータベースアクセス要求を発行し、第1のデータベースアクセス要求への応答を受け取った後に第2のデータベースアクセス要求を行なうことにより、アクセスを実行してWebサーバ300に応答し、Webサーバ300は、APサーバ400から受け取ったアクセスの結果をクライアント100に応答する。
なお、Webサーバ300における上記動作は、主にアクセス処理部310およびアクセス監視部320によって実行される。また、APサーバ400における上記動作は、主にデータベース(以下、「DB」とも略す)アクセス処理部410およびDBアクセス監視部420によって実行される。
図2は、データベースアクセスシステム10において実行されるクライアント100からデータベース200へのアクセスのフローを示す説明図である。なお、図2は、クライアント100からデータベース200へのアクセスの要求(リクエスト)として、データの書き込みを要求する場合を例に示している。
まず、クライアント100とWebサーバ300との間で実行される処理のフローについて説明する。クライアント100が、Webサーバ300に対してデータの書き込みの要求(リクエスト)を実行し(ステップS102)、Webサーバ300からリクエストに対する応答が有るまで、待機する(ステップS104)。
このとき、Webサーバ300は、クライアント100からのリクエストを受け付けるとともに、このリクエストを受け付けた時点の時刻をWebサーバ300におけるアクセス開始時刻T0として記憶する(ステップS202)。そして、Webサーバ300は、受け付けたリクエストをAPサーバ400に通知した(ステップS204)後、APサーバ400からのリクエストに対する応答が無いままアクセス開始時刻T0からタイムアウト時間Toutが経過してタイムアウトとなるか、APサーバ400からのリクエストに対する応答を受け取るまで、待機する(ステップS206,ステップS208)。なお、Webサーバ300は、APサーバ400からのリクエストに対する応答を受け取った場合には、その応答をクライアント100に返し(ステップS210)、タイムアウトの場合には、タイムアウトであることを示す応答(タイムアウト応答)をクライアント100に返す(ステップS212)。
クライアント100は、Webサーバ300から返された応答を受け取ると、受け取った応答が自身のリクエストに対する応答であるかタイムアウト応答であるか判断し(ステップS106)、リクエストに対する応答である場合には、アクセス処理を終了する。一方、タイムアウト応答である場合には、再度アクセスの要求(リトライ)を実行し(ステップS108)、Webサーバ300からリトライのリクエストに対する応答が有るまで、待機する(ステップS104)。
次に、Webサーバ300からAPサーバ400にクライアント100からのリクエストが通知された際に、APサーバ400とデータベース200との間で実行される処理のフローについて説明する。APサーバ400は、Webサーバ300から通知されたクライアント100からのリクエストを受け取とると、このリクエストを受け取った時点の時刻をAPサーバ400におけるアクセス開始時時刻T1として記憶する(ステップS302)。そして、APサーバ300は、まず、データベースに対して第1のデータベースアクセス要求としての検索要求を行なう(ステップS304)。
検索要求を受け取ったデータベース200は、検索を実行し(ステップ402)、その応答として検索結果をAPサーバ400に返す。
データベース200から検索結果を受け取ったAPサーバ400は、例えば、データを書き込むべき領域が存在しているか否かを判定する判定処理等の種々の検索結果処理を、検索結果に基づいて実行する(ステップS306)。そして、検索結果処理の終了時点における現在時刻T2を取得し(ステップS308)、アクセス開示時刻T1から現在時刻T2までのアクセス経過時間(T2−T1)が、Webサーバ300におけるタイムアウト時間Toutから所定のマージンαを減じて得られるAPサーバ400におけるタイムアウト時間(Tout−α)以上となっているか否か判断する(ステップS310)。このとき、アクセス経過時間(T2−t1)がタイムアウト時間(Tout−α)よりも小さい場合には、APサーバ400は、データベース200に対して、第2のデータベースアクセス要求としての書き込み要求を行なう(ステップS312)。一方、アクセス経過時間(T2−T1)が、タイムアウト時間(Tout−α)以上となっている場合には、APサーバ400は、データベース200に対しての書き込み要求をキャンセルし(ステップS316)、クライアント100からのリクエストに対応するデータベース200へのアクセスの処理をキャンセルする。
書き込み要求を受け取ったデータベース200は、書き込みを実行し(ステップS404)、書き込み結果をその応答としてAPサーバ400に返す。
データベース200から書き込み結果を受け取ったAPサーバ400は、書き込み結果をWebサーバ300に対して応答する(ステップS314)。これにより、Webサーバ300では、上記したように、クライアント100からのリクエストに対する応答として、受け取った処理結果を返す(ステップS210)。
ここで、データベース200に対する検索処理の後に実行する書き込み処理のための書き込み要求をキャンセルするか否かの判断の基準として、Webサーバ300におけるタイムアウトの判断と同様にタイムアウト時間Toutを基準として判断した場合には、以下のような問題が発生する。すなわち、APサーバ400のアクセス開始時刻T1はWebサーバ300におけるアクセス開始時刻T0よりも必ず遅れている。このため、アクセス経過時間(T2−T1)を仮にタイムアウト時間Toutを基準に判断すると、Webサーバ300では既にタイムアウトとなっているのに、APサーバ400ではまだキャンセルの対象とならない状態が発生する可能性がある。そこで、Webサーバ300でタイムアウトとなる状況においては、かならずAPサーバ400では対応する書き込み要求がキャンセルされるようにすることが好ましい。このため、APサーバ400におけるタイムアウト時間は、Toutからマージンαを減じた(Tout-α)とされている。
データベースアクセスシステム10において、以上説明したようにクライアント100からデータベース200へのアクセスを実行することにより、以下で説明する効果を得ることができる。
図3は、図2に示したフローに従って実行されるクライアント100からデータベース200へのアクセスの具体例を示す説明図である。図4は、比較例としてのクライアント100からデータベース200へのアクセスの具体例を示す説明図である。なお、比較例では、実施例のWebサーバ300に含まれるアクセス監視部320(図1参照)を有しておらず、アクセス監視部320によるタイムアウトの監視およびアクセス処理部310によるクライアント100へのタイムアウト応答が行なわれない。また、比較例では、実施例のAPサーバ400に含まれるDBアクセス監視部420(図1参照)を有しておらず、DBアクセス監視部420によるタイムアウトの監視およびDBアクセス処理部320によるデータベースへの書き込み要求のキャンセルは行なわれない。
まず、図4の比較例の場合について説明する。図4の比較例は、クライアント100からWebサーバ300に対して、データベース200への書き込みアクセスの要求を示す2つのリクエストR1,R2が送られる場合を示している。
第1のリクエストR1がクライアント100からWebサーバ300に送られると、Webサーバ300は、送られた第1のリクエストR1を受け付けてAPサーバ400に送る。APサーバ400は、第1のリクエストR1を受け取ると、まず、データベース200に対して、第1のリクエストR1に対応する第1の検索要求SR1を送る。このとき、データベース200では、受け取った第1の検索要求SR1に応じた検索処理を実行する。ただし、この第1の検索要求SR1に対応する検索処理は直ちに実行されて第1の検索応答SRS1が返されるのではなく、この検索処理に滞留が発生して、APサーバ400からWebサーバ300に対して、第1のリクエストR1に対応する応答RS1が返されないものとする。
上記のように滞留が発生している間に、クライアント100において第1のリクエストR1に対するタイムアウトが発生すると、第1のリクエストR1がキャンセルされてしまい、次のリクエストの発行が可能となる。このとき、第2のリクエストR2がクライアント100からWebサーバ300に送られると、Webサーバ300は、第1のリクエストR1の場合と同様に、送られた第2のリクエストR2を受け付けてAPサーバ400に送る。APサーバ400は、第2のリクエストR2を受け取ると、第1のリクエストR1の場合と同様に、データベース200に対して、第2のリクエストR2に対応する第2の検索要求SR2を送る。第2の検索要求SR2を受けたデータベース200は、第1の検索要求SR1とは異なり、滞留せずに、第2の検索要求SR2に対応する検索処理を実行し、APサーバ400に対して、対応する第2の検索応答SRS2を返す。第2の検索応答SRS2を受けたAPサーバ400は、データベース200に対して、第2のリクエストR2に対応する第2の書き込み要求WR2を送る。第2の書き込み要求WR2を受けたデータベース200は、第2の書き込み要求WR2に応じた書き込み処理を実行し、APサーバ400に対して第2の書き込み応答WRS2を返す。第2の書き込み応答WRS2を受けたAPサーバ400は、Webサーバ300に対して、第2のリクエストR2に対する第2の応答RS2を返す。第2の応答RS2を受けたWebサーバ300は、クライアント100に対して、第2の応答RS2を返す。
一方、滞留していた第1の検索要求SR1に対する第1の検索応答SRS1は、第2の書き込み要求WR2に対応する書き込み処理の実行後に、データベース200からAPサーバ400に対して返される。このとき、第1の検索応答SRS1を受けたAPサーバ400は、データベース200に対して、第1の書き込み要求WR1を送る。そして、第1の書き込み要求WR1を受けたデータベース200は、第1の書き込み要求WR1に応じた書き込み処理を実行し、APサーバ400に対して第1の書き込み応答WRS1を返す。第1の書き込み応答WRS1を受けたAPサーバ400は、Webサーバ300に対して、第1のリクエストR1に対する第1の応答RS1を返す。そして、第1の応答RS1を受けたWebサーバ300は、クライアント100に対して、第1の応答RS1を返す。
以上のように比較例の場合には、第1のリクエストR1に対応するデータベース200への書き込みと、第2のリクエストR2に対応するデータベース200への書き込みの順番が逆転することになる。
次に、図3の本実施例の場合について説明する。本実施例も比較例と同様に、クライアント100からWebサーバ300に対して、データベース200への書き込みアクセスの要求を示す2つのリクエストR1,R2が送られる場合を示している。
比較例の場合と同様に、第1のリクエストR1がクライアント100からWebサーバ300に送られると、Webサーバ300は、送られた第1のリクエストR1を受け付けてAPサーバ400に送る。APサーバ400は、第1のリクエストR1を受け取ると、まず、データベース200に対して、第1のリクエストR1に対応する第1の検索要求SR1を送る。このとき、データベース200では、受け取った第1の検索要求SR1に応じた検索処理を実行する。ただし、本実施例においても、この第1の検索要求SR1に対応する検索処理は直ちに実行されて検索応答SRS1が返されるのではなく、この検索処理に滞留が発生して、APサーバ400からWebサーバ300に対して、第1のリクエストR1に対応する応答RS1が返されないものとする。
ここで、Webサーバ300は、第1のリクエストR1を受け付けてから、第1のリクエストR1に対応する第1の応答RS1を受け取るまでの経過時間を監視する。第1のリクエストR1に対応する処理に滞留が発生して経過時間がタイムアウト時間Toutを経過した場合には、第1のリクエストR1に対するタイムアウト応答RT1を、クライアント100に返す。なお、このタイムアウト時間Toutは、クライアント100において第1のリクエストR1に対するタイムアウトが発生する前に、第1のリクエストR1に対するタイムアウト応答RT1を、クライアント100に返すように設定される。具体的には、例えば、クライアント100におけるタイムアウトの時間よりも若干短い時間に設定される。
タイムアウト応答RT1を受け取ったクライアント100は、第1のリクエストR1と同じ内容のリトライリクエストR1_Rの送付をWebサーバ300に対して実行する。
リトライリクエストR1_Rがクライアント100からWebサーバ300に送られると、Webサーバ300は、第1のリクエストR1の場合と同様に、送られたリトライリクエストR1_Rを受け付けてAPサーバ400に送る。APサーバ400は、リトライリクエストR1_Rを受け取ると、第1のリクエストR1の場合と同様に、データベース200に対して、リトライ検索要求SR1_Rを送る。リトライ検索要求SR1_Rを受けたデータベース200は、第1の検索要求SR1とは異なり、検索処理に滞留は発生せず、リトライ検索要求SR1_Rに対応する検索処理を実行し、APサーバ400に対して、対応するリトライ検索応答SRS1_Rを返す。リトライ検索応答SRS1_Rを受けたAPサーバ400は、データベース200に対して、リトライ書き込み要求WR1_Rを送る。リトライ書き込み要求WR1_Rを受けたデータベース200は、リトライ書き込み要求WR1 Rに応じた書き込み処理を実行し、APサーバ400に対してリトライ書き込み応答WRS1_Rを返す。リトライ書き込み応答WRS1_Rを受けたAPサーバ400は、Webサーバ300に対して、リトラリクエストR1_Rに対するリトライ応答RS1_Rを返す。リトライ応答RS1_Rを受けたWebサーバ300は、クライアント100に対して、リトライ応答RS1_Rを返す。リトライ応答RS1_Rを受け取ったクライアント100は、次のリクエストを実行することが可能となる。
そして、第2のリクエストR2がクライアント100からWebサーバ300に送られると、Webサーバ300は、第1のリクエストR1の場合と同様に、送られた第2のリクエストR2を受け付けてAPサーバ400に送る。APサーバ400は、第2のリクエストR2を受け取ると、第1のリクエストR1の場合と同様に、データベース200に対して、第2の検索要求SR2を送る。第2の検索要求SR2を受けたデータベース200は、第2の検索要求SR2に対応する検索処理を実行し、APサーバ400に対して、対応する第2の検索応答SRS2を返す。第2の検索応答SRS2を受けたAPサーバ400は、データベース200に対して、第2の書き込み要求WR2を送る。第2の書き込み要求WR2を受けたデータベース200は、第2の書き込み要求WR2に応じた書き込み処理を実行し、APサーバ400に対して第2の書き込み応答WRS2を返す。第2の書き込み応答WRS2を受けたAPサーバ400は、Webサーバ300に対して、第2のリクエストR2に対する第2の応答RS2を返す。第2の応答RS2を受けたWebサーバ300は、クライアント100に対して、第2の応答RS2を返す。
一方、滞留していた第1の検索要求SR1に対する第1の検索応答SRS1は、第2の書き込み要求WR2に対応する書き込み処理の実行後に、データベース200からAPサーバ400に対して返される。このとき、第1の検索応答SRS1を受けたAPサーバ400は、第1のリクエストR1を受け取ってから、第1の検索応答SRS1を受け取って検索結果処理を行なったタイミングの時刻まで、言い換えると、第1の書き込み要求WR1を行なう直前の時刻まで、の経過時間(アクセス時間(T2−T1))が、タイムアウト時間(Tout−α)を経過しているか否かを判断し、タイムアウト時間(Tout−α)を経過している場合には、第1の書き込み要求WR1のデータベース200への送付をキャンセルする。これにより、第1のリクエストR1に対応する処理がキャンセルされる。
以上説明したように、図4の比較例の場合においては、第1のリクエストR1に対応する第1の検索要求SR1に滞留が発生している間に、第2のリクエストR2が行なわれた場合には、データの書き込みの順番が逆転し、データベース200では第2のリクエストR2に対応するデータの書き込みが先に行われて、第1のリクエストR1に対応するデータの書き込みが後から行われてしまう、という不具合が発生する。
一方、実施例の場合には、第1のリクエストR1に対応する検索要求SR1に対応する第1の検索要求SR1に滞留が発生しても、Webサーバ300において、第1のリクエストR1を受け付けてから第1の応答RS1を受け取るまでの経過時間を監視し、この経過時間がタイムアウト時間Toutを経過した場合には、クライアント100に対してタイムアウト応答RT1を返す。これにより、クライアント100が第1のリクエストR1と同じ内容のリトライリクエストR1_Rの送付をWebサーバ300に対して実行することができる。この結果、リトライリクエストR1_Rに対応するデータベース200へのアクセス処理は、滞留することなく実行され、実質的に第1のリクエストR1に対応する書き込みを実行することができる。
また、滞留していた第1のリクエストR1に対応する第1の検索要求SR1に対応する第1の検索応答SRS1がAPサーバ400に返されたとしても、アクセス時間(T2−T1)がタイムアウト時間(Tout−α)を経過している場合には、第1の書き込み要求WR1のデータベース200への送付をキャンセルすることにより、第1のリクエストR1に対応するアクセス処理をキャンセルすることができる。
以上のように、滞留の発生した第1のリクエストR1に対応する応答RS1を受け取るまでの時間を監視し、タイムアウト時間Toutを経過している場合には、リトライを実行するとともに、滞留の発生したリクエストに対応する書き込み要求の実行をキャンセルすることにより、第1のリクエストに対応するデータの書き込みと第2のリクエストに対応するデータの書きこみの順番が逆転してしまうのを、抑制することが可能である。
なお、本実施例のWebサーバ300およびAPサーバ400が本発明のデータベースアクセスサーバに相当する。また、アクセス監視部320およびDBアクセス監視部420が本発明のアクセス計時部に相当する。
B.変形例:
なお、本発明は上記した実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様にて実施することが可能である。
上記実施例では、APサーバ400において、アクセス経過時間(T2−T1)として、リクエストを受け取った時刻から、検索要求に対応する検索応答を受け取り、これに基づいて検索結果処理を行なった後の時刻までの経過時間を監視する場合を例に説明しているが、これに限定されるものではなく、例えば、検索応答を受け取った時刻までの経過時間を監視するようにしてもよい。すなわち、リクエストを受け取った時刻(アクセス開始時刻)から、アクセス開始時刻と書き込み要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を監視するようにしてもよい。
上記実施例では、本発明のデータベースアクセスサーバが、Webサーバ300とAPサーバ400の2つのサーバで構成されている場合を例に説明しているが、必ずしもこれに限定されるものではなく、1つのサーバで構成されるようにしてもよい。
上記実施例では、クライアント100からデータベース200へのアクセスの要求として、データの書き込みを要求する場合を例として、第1のデータベースアクセス要求として検索要求を行い、第2のデータベースアクセス要求として書き込み要求を行なう場合について説明しているが、これに限定されるものでない。例えば、クライアント100からデータベース200へのアクセスの要求として、データの読み出しを要求することとし、第1のデータベースアクセス要求として検索要求を行い、第2のデータベースアクセス要求として読み出し要求を行なう場合であってもよい。すなわち、クライアントからのデータベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、データベースに対して第1のデータベースアクセス要求を発行し、第1のデータベースアクセス要求への応答の受信後に第2のデータベースアクセス要求を行なうことにより、クライアントアクセス要求に対応するデータベースへのアクセスを実行する種々の場合に適用可能である。
本発明の一実施例としてのデータベースアクセスシステムの構成例を示す説明図である。 データベースアクセスシステム10において実行されるクライアント100からデータベース200へのアクセスのフローを示す説明図である。 図2に示したフローに従って実行されるクライアント100からデータベース200へのアクセスの具体例を示す説明図である。 比較例としてのクライアント100からデータベース200へのアクセスの具体例を示す説明図である。
符号の説明
10…データベースアクセスシステム
100…クライアント
200…データベース
300…Webサーバ
310…アクセス処理部
320…アクセス監視部
400…APサーバ
410…DBアクセス処理部
420…DBアクセス監視部
500…ファオアウォール
NW1…クライアント側ネットワーク
NW2…サーバ側ネットワーク
INT…インターネット

Claims (13)

  1. データベースへのアクセスを実行するデータベースアクセスサーバであって、
    クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第1のデータベースアクセス要求を発行し、前記第1のデータベースアクセス要求への応答の受信後に第2のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行するデータベースアクセス処理部と、
    前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第2のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時するデータベースアクセス計時部と、
    を備え、
    前記データベースアクセス処理部は、
    前記データベースアクセス計時部において前記アクセス経過時間が基準時間以上経過したことが検出された場合に、前記第2のデータベースアクセス要求の実行をキャンセルする
    ことを特徴とするデータベースアクセスサーバ。
  2. 請求項1記載のデータベースアクセスサーバであって、
    前記クライアントアクセス要求は前記データベースへの書き込み要求であって、前記第1のデータベースアクセス要求は前記データベースへの検索要求であり、前記第2のデータベースアクセス要求は前記データベースへの実際の書き込み要求であることを特徴とするデータベースアクセスサーバ。
  3. 請求項1または請求項2記載のデータベースアクセスサーバであって、
    前記データベースアクセス処理部は、
    前記データベースアクセス計時部において前記アクセス経過時間が前記基準時間以上経過したことを検出した場合に、前記クライアントアクセス要求に対する応答として、前記クライアントアクセス要求を完了できなかったことを示すメッセージを前記クライアントに返す
    ことを特徴とするデータベースアクセスサーバ。
  4. 請求項3記載のデータベースアクセスサーバであって、
    前記基準時間は、前記クライアントにおいて前記クライアントアクセス要求に対するタイムアウトが発生する前に、前記メッセージを返すように設定される
    ことを特徴とするデータベースアクセスサーバ。
  5. 請求項1ないし請求項4のいずれかに記載のデータベースアクセスサーバであって、
    前記所定の処理タイミングは、前記第1のデータベースアクセス要求に対する応答を前記データベースから受け取ったタイミングであることを特徴とするデータベースアクセスサーバ。
  6. 請求項1ないし請求項4のいずれかに記載のデータベースアクセスサーバであって、
    前記所定の処理タイミングは、前記第2のデータベースアクセス要求を前記データベースに対して行なう直前のタイミングであることを特徴とするデータベースアクセスサーバ。
  7. クライアントとデータベースアクセスサーバとデータベースとを有するデータベースアクセスシステムであって、
    前記データベースアクセスサーバは、
    前記クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第1のデータベースアクセス要求を発行し、前記第1のデータベースアクセス要求への応答の受信後に第2のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行するとともに、前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第2のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時しており、
    前記アクセス経過時間が基準時間以上経過したことを検出した場合に、前記第2のデータベースアクセス要求の実行をキャンセルする
    ことを特徴とするデータベースアクセスシステム。
  8. 請求項7記載のデータベースアクセスシステムであって、
    前記データベースアクセスサーバは、さらに、前記アクセス経過時間が前記基準時間以上経過したことを検出した場合に、前記クライアントアクセス要求に対する応答として、前記クライアントアクセス要求を完了できなかったことを示すメッセージを前記クライアントに返すことを特徴とするデータベースアクセスシステム。
  9. 請求項8記載のデータベースアクセスシステムであって、
    前記データベースアクセスサーバは、
    前記クライアントアクセス要求を受け付ける第1のサーバと、
    前記データベースへのアクセスを実行する第2のサーバと、
    を備え、
    前記第1のサーバが、前記アクセス経過時間が前記基準時間以上経過したことを検出した場合に、前記クライアントアクセス要求に対する応答として、前記クライアントアクセス要求を完了できなかったことを示すメッセージを前記クライアントに返す
    ことを特徴とするデータベースアクセスシステム。
  10. データベースへのアクセスを実行するデータベースアクセスサーバのアクセス方法であって、
    (a)クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第1のデータベースアクセス要求を発行し、前記第1のデータベースアクセス要求への応答の受信後に第2のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行する工程と、
    (b)前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第2のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時する工程と、
    を備え、
    前記工程(a)は、前記工程(b)において、前記アクセス経過時間が基準時間以上経過したことを検出した場合に、前記第2のデータベースアクセス要求の実行をキャンセルする工程を含む
    ことを特徴とするアクセス方法。
  11. クライアントとデータベースアクセスサーバとデータベースとを有するデータベースアクセスシステムにおいて、データベースへのアクセスを実行するアクセス方法であって、
    (a)前記クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を前記データベースアクセスサーバが受け取った際に、前記データベースアクセスサーバが前記データベースに対して第1のデータベースアクセス要求を発行し、前記第1のデータベースアクセス要求への応答の受信後に第2のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行する工程と、
    (b)前記データベースアクセスサーバが前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第2のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時する工程と、
    を備え、
    前記工程(a)は、前記工程(b)において、前記アクセス経過時間が基準時間以上経過したことを検出した場合に、前記第2のデータベースアクセス要求の実行をキャンセルする工程を含む
    ことを特徴とするアクセス方法。
  12. データベースへのアクセスを実行するためのコンピュータプログラムであって、
    クライアントからの前記データベースへのアクセスの要求を示すクライアントアクセス要求を受け取った際に、前記データベースに対して第1のデータベースアクセス要求を発行し、前記第1のデータベースアクセス要求への応答の受信後に第2のデータベースアクセス要求を行なうことにより、前記クライアントアクセス要求に対応する前記データベースへのアクセスを実行する機能と、
    前記クライアントアクセス要求を受け取ったアクセス開始時刻から、前記アクセス開始時刻と前記第2のデータベースアクセス要求を行なうタイミングの時刻との間の所定の処理タイミングの時刻までのアクセス経過時間を計時する機能と、
    前記アクセス経過時間が基準時間以上経過したことを検出した場合に、前記第2のデータベースアクセス要求の実行をキャンセルする機能と、
    をコンピュータに実現させるためのコンピュータプログラム
  13. 請求項12記載のコンピュータプログラムをコンピュータ読み取り可能にした記録媒体。
JP2008136748A 2008-05-26 2008-05-26 データベースアクセスサーバおよびデータベースアクセスシステム Pending JP2009282907A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008136748A JP2009282907A (ja) 2008-05-26 2008-05-26 データベースアクセスサーバおよびデータベースアクセスシステム
US12/454,893 US20090300027A1 (en) 2008-05-26 2009-05-26 Database access server and database access system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008136748A JP2009282907A (ja) 2008-05-26 2008-05-26 データベースアクセスサーバおよびデータベースアクセスシステム

Publications (1)

Publication Number Publication Date
JP2009282907A true JP2009282907A (ja) 2009-12-03

Family

ID=41381066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008136748A Pending JP2009282907A (ja) 2008-05-26 2008-05-26 データベースアクセスサーバおよびデータベースアクセスシステム

Country Status (2)

Country Link
US (1) US20090300027A1 (ja)
JP (1) JP2009282907A (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266262B2 (en) * 2009-11-30 2012-09-11 Red Hat, Inc. Providing network security services for multiple requesters
US8909916B2 (en) 2009-11-30 2014-12-09 Red Hat, Inc. Using a PKCS module for opening multiple databases
CN103020169A (zh) * 2012-11-27 2013-04-03 山东黄金矿业(莱州)有限公司 一种电力数据的有效性及唯一性处理方法
US9582604B2 (en) 2013-03-27 2017-02-28 Thomson Licensing Caching mechanism to improve user interface responsiveness
US20150169529A1 (en) * 2013-12-16 2015-06-18 Sap Ag Mobile device data rendering
US10585696B2 (en) * 2016-11-08 2020-03-10 International Business Machines Corporation Predicting transaction outcome based on artifacts in a transaction processing environment
CN111277551A (zh) * 2018-12-05 2020-06-12 中国移动通信集团四川有限公司 一种应用服务器as系统内部检测方法、装置、设备及介质
US10915418B1 (en) * 2019-08-29 2021-02-09 Snowflake Inc. Automated query retry in a database environment
US11211140B1 (en) * 2019-09-24 2021-12-28 Facebook Technologies, Llc Device authentication based on inconsistent responses

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4603382A (en) * 1984-02-27 1986-07-29 International Business Machines Corporation Dynamic buffer reallocation
ATE193607T1 (de) * 1993-11-26 2000-06-15 Siemens Ag Recheneinheit mit mehreren ausführbaren tasks
US5768620A (en) * 1996-04-09 1998-06-16 International Business Machines Corporation Variable timeout method in a missing-interrupt-handler for I/O requests issued by the same operating system
JPH11194963A (ja) * 1997-12-26 1999-07-21 Fujitsu Ltd コマンド実行監視方法、及び、コマンド実行監視装置
US6446225B1 (en) * 1998-04-23 2002-09-03 Microsoft Corporation Server system with scalable session timeout mechanism
US6279026B1 (en) * 1998-12-04 2001-08-21 Honeywell International Inc Timeout object for object-oriented, real-time process control system and method of operation thereof
US20030069981A1 (en) * 2001-10-09 2003-04-10 Koninklijke Philips Electronics N.V. IP hopping for secure data transfer
US7146427B2 (en) * 2002-04-23 2006-12-05 Lsi Logic Corporation Polling-based mechanism for improved RPC timeout handling
US6898600B2 (en) * 2002-05-16 2005-05-24 International Business Machines Corporation Method, system, and program for managing database operations
US7251700B2 (en) * 2003-05-27 2007-07-31 Oracle International Corporation Time-to-live timeout on a logical connection from a connection cache
US20050262309A1 (en) * 2004-04-28 2005-11-24 Frey Robert T Proactive transfer ready resource management in storage area networks
US7653828B2 (en) * 2004-05-28 2010-01-26 Sap Ag Timeout manager
JP4492858B2 (ja) * 2004-07-20 2010-06-30 株式会社ニデック 眼科装置及び眼内屈折力分布算出プログラム
US7620750B2 (en) * 2004-07-20 2009-11-17 Koninklijke Philips Electronics N.V. Time budgeting by determining status of a streaming buffer during an autonomous non-data transfer operations in drive units
US20060095685A1 (en) * 2004-11-03 2006-05-04 Bonola Thomas J System and method to coordinate access to a sharable data structure using deferred cycles
JP4564390B2 (ja) * 2005-03-31 2010-10-20 東芝ストレージデバイス株式会社 情報処理装置
US7362663B2 (en) * 2005-09-21 2008-04-22 Timestrip Uk Limited Elapsed time indicator device
US8032609B2 (en) * 2006-06-09 2011-10-04 Research In Motion Limited Dynamic endpoint aggregator for web services
US7506218B2 (en) * 2006-08-18 2009-03-17 International Business Machines Corporation Timeout request scheduling using grouping and nonsynchronized processing to enhance performance
US8131983B2 (en) * 2008-04-28 2012-03-06 International Business Machines Corporation Method, apparatus and article of manufacture for timeout waits on locks

Also Published As

Publication number Publication date
US20090300027A1 (en) 2009-12-03

Similar Documents

Publication Publication Date Title
JP2009282907A (ja) データベースアクセスサーバおよびデータベースアクセスシステム
JP4107676B2 (ja) トランザクション引継ぎシステム
CN108156013B (zh) 一种页面服务容灾方法、装置及电子设备
WO2016191610A1 (en) Method and apparatus for real-time data migration
US20150256622A1 (en) Connection management device, communication system, connection management method, and computer program product
CN107864209B (zh) 数据写入的方法、装置及服务器
CN110740064A (zh) 分布式集群节点故障处理方法、装置、设备及存储介质
CN107819754B (zh) 一种防劫持方法、监控服务器、终端及系统
CN116866650B (zh) 实时音视频录制方法、系统及电子设备
CN104639666B (zh) 域名访问方法及装置
JP2017536623A (ja) ハードドライブ電力消費を制御し、ハードドライブ電力消費の管理サービスを制御するための方法及び装置
WO2014199585A1 (ja) 配信制御装置及びその方法、プッシュ配信システム、並びに記憶媒体
CN106302364B (zh) 代理方法、辅助代理方法与设备
CN105389127B (zh) 在存储系统中传输消息的方法、装置及存储系统、控制器
JP2008251066A (ja) メモリ制御方法、メモリシステム、およびプログラム
CN102752159A (zh) 链路连通性检测方法和设备
CN113300966B (zh) 流量控制方法、装置、系统以及电子设备
KR102071107B1 (ko) 데이터 처리를 위한 방법 및 시스템
US8671307B2 (en) Task relay system, apparatus, and recording medium
CN110602026B (zh) 文件访问方法、控制节点、客户端和电子设备
JP5150696B2 (ja) 記憶処理装置及びフェイルオーバ制御方法
JP2008033787A (ja) セッションタイムアウト時間決定装置、コンピュータプログラム、およびアプリケーション提供システム
CN111858529B (zh) 一种日志回放方法、装置、设备及计算机可读存储介质
JP2009151388A (ja) 監視処理プログラム、方法及び装置
CN116962416A (zh) 一种服务下线方法、装置及存储介质