【文献】
田村 雅寿 ほか,高速ネットワークを流れるパケットデータの蓄積・活用に向けた分散オブジェクトストレージの提案,第6回データ工学と情報マネジメントに関するフォーラム (第12回日本データベース学会年次大会) [online] The 6th Forum on Data Engineering and Information Management,日本,電子情報通信学会データ工学研究専門委員会 日本データベース学会 情報処理学会データベースシステム研究会,2014年
(58)【調査した分野】(Int.Cl.,DB名)
受信したデータを一定サイズで区切った単位をオブジェクトとし、前記オブジェクトは複数のセッションを含むものとして前記受信したデータが記憶装置に記憶されており、
プロセッサが、プログラムが有するプロセスを実行することにより、コンピュータに、
前記記憶装置から前記セッションの単位で前記データを取得する第1方式でのデータ取得、及び前記記憶装置から前記オブジェクトの単位で前記データを取得する第2方式を含む複数のデータ取得方式の各々の、前記記憶装置からの取得における取得時間に関する値を算出して、前記取得時間に関する値に基づいて、前記データ取得方式を前記第1方式及び前記第2方式のいずれとするかを決定させ、
前記データの取得方式が決定された場合には、前記決定された前記データの取得方式で前記データの取得を実行させ、
前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得させて、前記取得時間に関する値を更新させ、前記取得時間に関する値に基づいて前記データ取得方式を前記第1方式及び前記第2方式のいずれとするかを決定させることを特徴とするデータ取得方法。
【発明を実施するための形態】
【0012】
本実施形態の詳細を説明する前に、パケットキャプチャシステムについて説明する。
【0013】
パケットキャプチャシステムは、
図1に示すように、クライアントと、クライアントがアクセスする観測対象システムとの間を流れるデータを、ネットワークスイッチを介してポートミラーし、キャプチャサーバによって、記憶装置に格納する。また、ネットワーク流量が多い場合には、
図2に示すように、キャプチャサーバからネットワークスイッチを経由して複数のストレージサーバを接続してもよい。ストレージサーバを設ける場合には、ストレージサーバにデータを一時的にキャッシュすると共に、ストレージサーバを介して記憶装置にデータを格納する。これにより、ストレージサーバにキャッシュされたデータは高速に取得することができる。
【0014】
図1、及び
図2に示すようなパケットキャプチャシステムでは、キャプチャサーバ上のメモリにデータ構造を持ち、データ構造を参照して、記憶装置のディスクからデータを取得する。
【0015】
パケットキャプチャシステムにおいて、記憶装置のディスクに格納されるデータの構造を
図3に示す。キャプチャしたデータは、データを一定のサイズに区切ったオブジェクトという単位で管理される。オブジェクトは、パケットの単位をセッションとして、複数のセッションを一定のサイズに区切ったもので構成されており、セッションの単位でパケット群が格納されている。
【0016】
次に、キャプチャサーバのメモリに格納されるセッションに関するデータ構造を
図4に示す。キャプチャサーバは、
図4に示すように、セッションに関するデータ構造として、オブジェクトに格納されたセッションに関する情報、及びオブジェクト内の実体のデータの参照先の情報を記憶している。セッションに関する情報とは、時刻(パケットの送出時刻、パケットのキャプチャ時刻等)、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、及び通信タイプの6つである。オブジェクト内の実体のデータの参照先の情報は、オブジェクト名、オフセット(オブジェクト内の当該セッションの参照先)、及びサイズ(バイト)である。
【0017】
次に、キャプチャサーバのメモリに格納されるオブジェクトに関するデータ構造を
図5に示す。キャプチャサーバは、
図5に示すように、オブジェクトに関するデータ構造として、オブジェクトに関する情報を記憶している。オブジェクトに関する情報は、オブジェクト名、オフセット(Logical Block Addressing:LBA)、及びサイズ(バイト)である。
【0018】
パケットキャプチャシステムでは、以上のデータ構造を参照して、データ取得クライアントからの要求に応じて、記憶装置からデータを取得する。
【0019】
次に、パケットキャプチャシステムにおける、キャプチャサーバ上の動作について説明する。
【0020】
キャプチャサーバが、記憶装置のディスクに格納されたデータを取得するためのデータ取得方式は複数ある。主なデータ取得方式として、オブジェクトの単位でまとめてデータを取得する第1方式、オブジェクトとセッションを指定してセッションの単位でデータを取得する第2方式の2種類の方式が挙げられる。データ取得クライアントは、取得したいセッションの時刻、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、及び通信タイプのうちの1つ、又は複数の条件を指定して、キャプチャサーバにデータ取得要求を送る。キャプチャサーバは、記憶装置から条件を満たすデータを取得する。第1方式の場合は、いったんオブジェクト単位でデータを取得してから必要なセッションのデータを抽出して、データ取得クライアントに送信する。
【0021】
また、別のデータ取得方式としてオブジェクトと連続する複数のセッションを指定して連続する複数のセッション単位でデータを取得する第3方式が挙げられる。また、上記第1〜第3方式以外のデータ取得方式も考えられる。
【0022】
しかし、特定の条件を満たすデータを取得するときに、複数のデータ取得方式のうち、いずれのデータ取得方式でデータを取得すれば効率よくデータを取得できるかは、データの内容や、データ取得の運用状況によって異なる。よって、いずれの方式が良いかを判断することが困難である。例えば、第1方式のように、データをオブジェクト単位でまとめて取得すると、一部のセッションのデータのみが必要な場合には、無駄なディスクアクセス量が増えることが問題となる。また、第2方式のように、データをセッション単位で取得する場合には、取得対象とするセッション数が多いと、ディスクアクセスが断片化し、処理負荷が高くなるという問題がある。
【0023】
また、パケットキャプチャシステムでは、データの内容の変化や、データ取得の運用の変化に対応して、適切な方式でデータを取得することが望ましい。そこで、例えば、未知のワークロードのデータを取得するときに全てのデータ取得方式を試して適切なデータ取得方式を選択することが考えられる。しかし、この場合、データの内容や、データ取得の運用が変化する都度、全てのデータ取得方式を試すこととなり、手間がかかる。なお、ここでいうワークロードとは、どのような内容のデータが蓄積されていて、そのうちどのような内容のデータを取得するか、という意味である。例えば、Webアクセスの通信とファイル転送の通信とのデータの比率が1:1の割合で蓄積されていて、このうちWebアクセスの通信を取得する、というのがワークロードの一例である。
【0024】
また、ワークロードが変化すると、現在採用されているデータ取得方式が最適ではなくなる場合があり、データ取得の効率が悪くなる場合がある。ワークロードの変化とは、Webアクセスの通信とファイル転送の通信とのデータの比率の割合が1:1から3:1に変化した場合や、データの取得において、Webアクセスの通信とファイル転送の通信の両方を取得するように変更した場合をいう。また、例えば、Webアクセスのデータのテキスト、画像、映像等の割合に変化が生じたこともワークロードの変化と捉えられる。
【0025】
また、データを取得する際の条件は、運用によって変化するため、データを取得する際の条件を変更するたびに、データ取得方式を改めて試して、効率のよい方式を選ぶ必要が出てくる。
【0026】
そこで、本実施形態では、データの内容及び運用の変化に応じた適切なデータ取得方式を簡易に決定する。
【0027】
以下、図面を参照して本実施形態の一例を詳細に説明する。
【0028】
本実施形態では、キャプチャサーバのデータ取得方式に、次の第1方式、及び第2方式を用いる場合を例に説明する。以下では、第1方式、及び第2方式の2つのデータ取得方式によりパケットキャプチャシステムを運用する場合について説明するが、3つ以上のデータ取得方式でも同様に動作する。
【0029】
図6に示すように、本実施形態に係るパケットキャプチャシステム100は、クライアント10と、ネットワークスイッチ12と、観測対象システム14と、キャプチャサーバ20と、記憶装置22と、データ取得クライアント24とを備えている。クライアント10と、観測対象システム14とは、ネットワークスイッチ12を介して接続されている。キャプチャサーバ20は、ネットワークスイッチ12と、記憶装置22と、データ取得クライアント24と接続されている。
【0030】
クライアント10は、観測対象システム14にアクセスする端末である。クライアント10は、例えば、ノート型PC、タブレット端末、スマートフォン等で実現することができる。
【0031】
ネットワークスイッチ12は、ポートミラー機能により、クライアント10と観測対象システム14との間で通信されるデータをミラーリングして、キャプチャサーバ20に転送する。データは、パケット単位で転送される。各パケットには、パケットが送信元から送出された時刻、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、及び通信タイプを含むセッションの情報が付与されている。
【0032】
観測対象システム14は、クライアント10との間でデータ通信を行うことにより、クライアント10にWebサイトなどのサービスを提供するシステムである。
【0033】
キャプチャサーバ20は、ポートミラーにより転送されたデータを記憶装置22にオブジェクトの単位で保存する。また、キャプチャサーバ20は、データを記憶装置22に記憶する際に、上記
図4に示すセッションに関するデータ構造、及び上記
図5に示すオブジェクトに関するデータ構造をメモリに保存する。また、キャプチャサーバ20は、データ取得クライアント24から、取得するデータに関する条件を含むデータ取得要求を受け付ける。キャプチャサーバ20は、データ取得要求に基づいて、記憶装置22から条件に該当するデータを取得し、必要に応じてデータを抽出してデータ取得クライアント24に返却する。なお、データを記憶装置22に記憶する際の処理については、詳細な説明は省略する。
【0034】
データ取得クライアント24は、キャプチャサーバ20にデータ取得要求を送信する。データ取得要求は、例えば、時刻の範囲、送信元アドレス、及び宛先ポートなどに関する条件が、取得するデータに関する条件として指定された要求である。
【0035】
キャプチャサーバ20は、
図7に示すように、機能的には、データ取得要求受付部31と、データ取得方式判断部32と、取得時間記憶部33と、取得方式記憶部34と、データ取得部35とを含む。
【0036】
データ取得要求受付部31は、データ取得クライアント24からデータ取得要求を受け取ると、データ取得方式判断部32にデータ取得方式を問い合わせてデータ取得方式を決定する。データ取得要求受付部31は、決定したデータ取得方式及びデータ取得要求を、データ取得部35に出力し、データ取得部35により取得したデータを取得する。そして、データ取得要求受付部31は、データ取得部35から取得したデータから、データ取得要求の条件に応じたデータを抽出し、抽出したデータをデータ取得クライアント24へ返却する。また、データ取得要求受付部31は、データ取得方式判断部32にデータの取得時間の記憶を指示する。ここでいうデータ取得時間は、データ取得要求の条件に応じた全てのデータをデータ取得部35が受信するまでの時間である。例えば、第2方式のセッションの単位での取得であれば、データ取得要求の条件に応じた全てのセッションのデータを受信するまでの時間である。
【0037】
データ取得方式判断部32は、データ取得要求受付部31からデータ取得方式の問い合わせ要求を受け取ると、データ取得の運用を開始してから、データの取得を所定回数実行したかを判定する。データ取得方式判断部32は、データの取得を所定回数実行していなければ、所定回数中で第1方式と第2方式とが同じ頻度で実行されるように、今回実行するデータ取得方式を決定する。例えば、データ取得方式判断部32は、0〜1の乱数を生成して、0.5未満であれば、データ取得方式を第1方式と決定し、0.5以上であればデータ取得方式を第2方式と決定して、データ取得要求受付部31に返却する。
【0038】
また、データ取得方式判断部32は、データの取得を所定回数実行していれば、取得方式記憶部34に記憶されているデータ取得方式が実行される頻度が、その他のデータ取得方式が実行される頻度よりも高くなるように、今回実行するデータ取得方式を決定する。例えば、データ取得方式判断部32は、0〜1の乱数の値を生成して、一定の値(例えば0.99)以上でなければ、取得方式記憶部34から現在決定されているデータ取得方式を取得して、データ取得要求受付部31に返却する。生成した乱数の値が一定の値以上であれば、取得方式記憶部34から現在決定されているデータ取得方式を取得して、現在決定されているデータ取得方式ではないデータ取得方式を、データ取得要求受付部31に返却する。このように、現在決定されているデータ取得方式ではないデータ取得方式でのデータ取得も定期的に実行する。
【0039】
また、データ取得方式判断部32は、データ取得要求受付部31からデータの取得時間を記憶する指示を受け付ける。データ取得方式判断部32は指示を受け付けると、データ取得を行ったデータ取得方式と共にデータ取得部35から出力されたデータの取得時間、及びデータを取得した時刻を取得時間記憶部33に記憶し、取得時間記憶部33のデータ構造を更新する。
【0040】
また、データ取得方式判断部32は、所定のタイミングで、取得時間記憶部33から、データ取得方式の各々のデータの取得時間を取得し、データ取得方式の各々について、平均取得時間を算出し、現在のデータ取得方式を決定する。ここでは、平均取得時間が最も短いデータ取得方式を現在のデータ取得方式と決定する。なお、データ取得方式の平均取得時間は、直近のデータ取得(例えば100回分)の取得時間から算出する。また、特定の時刻(例えば1ヶ月前)から現在までの取得時間から平均取得時間を算出するようにしてもよい。
【0041】
取得時間記憶部33には、
図8に示すように、データを取得したデータ取得方式に対するデータの取得時間、及びデータを取得した時刻がデータ構造として格納されている。例えば、1行目のレコードには、取得方式が第1方式、データの取得時間が2秒、データを取得した時刻が2016-12-27 14:30:00と記憶されている。
【0042】
取得方式記憶部34には、データ取得方式判断部32によって決定された現在のデータ取得方式が格納されている。本実施形態では、第1方式、又は第2方式いずれかである。
【0043】
データ取得部35は、データ取得要求受付部31から受け付けたデータ取得方式により、記憶装置22から、データ取得要求に含まれる条件に該当するデータを取得する。具体的には、メモリに格納された上記
図4に示すセッションに関するデータ構造、及び上記
図5に示すオブジェクトに関するデータ構造を参照し、データ取得要求に含まれる条件に該当するデータを特定する。データ取得方式が、第1方式である場合には、記憶装置22から、オブジェクト単位で、データ取得要求に含まれる条件に該当するデータを取得する。データ取得方式が、第2方式である場合には、記憶装置22から、セッション単位で、データ取得要求に含まれる条件に該当するデータを取得する。データ取得部35は、データ取得要求に含まれる条件に該当するデータを記憶装置22から取得するのにかかった時間を、データの取得時間として計測し、データ取得要求受付部31へ出力する。
【0044】
キャプチャサーバ20は、例えば
図9に示すコンピュータ40で実現することができる。コンピュータ40は、Central Processing Unit(CPU)41と、一時記憶領域としてのメモリ42と、不揮発性の記憶部43とを備える。また、コンピュータ40は、入出力装置44と、記憶媒体49に対するデータの読み込み及び書き込みを制御するRead/Write(R/W)部45と、インターネット等のネットワークに接続される通信インターフェース(I/F)46とを備える。CPU41、メモリ42、記憶部43、入出力装置44、R/W部45、及び通信I/F46は、バス47を介して互いに接続される。
【0045】
記憶部43は、Hard Disk Drive(HDD)、Solid State Drive(SSD)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部43には、コンピュータ40をキャプチャサーバ20として機能させるためのデータ取得処理プログラム50が記憶される。データ取得処理プログラム50は、受付プロセス52と、取得判断プロセス54と、取得プロセス56とを有する。また、記憶部43は、取得時間記憶部33、及び取得方式記憶部34に記憶される情報が保持される情報記憶領域59を有する。
【0046】
CPU41は、データ取得処理プログラム50を記憶部43から読み出してメモリ42に展開し、データ取得処理プログラム50が有するプロセスを順次実行する。CPU41は、受付プロセス52を実行することで、
図7に示すデータ取得要求受付部31として動作する。また、CPU41は、取得判断プロセス54を実行することで、
図7に示すデータ取得方式判断部32として動作する。また、CPU41は、取得プロセス56を実行することで、
図7に示すデータ取得部35として動作する。また、CPU41は、情報記憶領域59から情報を読み出して、取得時間記憶部33、及び取得方式記憶部34の内容をメモリ42に展開する。これにより、データ取得処理プログラム50を実行したコンピュータ40が、キャプチャサーバ20として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
【0047】
なお、データ取得処理プログラム50により実現される機能は、例えば半導体集積回路、より詳しくはApplication Specific Integrated Circuit(ASIC)等で実現することも可能である。
【0048】
次に、本実施形態に係るパケットキャプチャシステム100の作用について説明する。まず、
図10のフローチャートを参照して、データ取得処理について説明する。データ取得要求受付部31が、データ取得クライアント24からデータ取得要求を受け付けると、キャプチャサーバ20は、データ取得処理を開始する。
【0049】
ステップS100で、データ取得方式判断部32が、データ取得の運用を開始してから、データの取得を所定回数実行したかを判定する。判定の結果、所定回数実行していなければ、ステップS102に移行し、所定回数実行していれば、ステップS110に移行する。
【0050】
ステップS102で、データ取得方式判断部32が、0〜1の乱数を生成する。
【0051】
ステップS104で、データ取得方式判断部32が、ステップS102で生成した乱数が、0.5以上か否かを判定する。乱数が0.5以上であれば、ステップS106で、データ取得方式判断部32が、データ取得方式として第1方式を決定してデータ取得要求受付部31に返却する。乱数が0.5以上でなければ、ステップS108で、データ取得方式として第2方式を決定して、データ取得要求受付部31に返却する。
【0052】
ステップS110で、データ取得方式判断部32が、0〜1の乱数を生成する。
【0053】
ステップS112で、データ取得方式判断部32が、ステップS110で生成した乱数が、0.99以上か否かを判定する。乱数が一定の値、ここでは0.99以上でなければ、ステップS114へ移行する。乱数が0.99以上であれば、ステップS120へ移行する。
【0054】
ステップS114で、データ取得方式判断部32が、現在のデータ取得方式が決定されているか否かを判定し、決定されている場合には、ステップS118へ移行し、決定されていない場合には、ステップS116へ移行する。
【0055】
ステップS116で、データ取得方式判断部32が、取得時間記憶部33から、データ取得方式の各々のデータの取得時間を取得し、データ取得方式の各々について、平均取得時間を算出する。そして、算出した平均取得時間に基づいて、現在のデータ取得方式を決定し、取得方式記憶部34に記憶し、ステップS118へ移行する。
【0056】
ステップS118で、データ取得方式判断部32が、取得方式記憶部34から現在決定されているデータ取得方式を取得して、データ取得要求受付部31に返却する。
【0057】
ステップS120で、データ取得方式判断部32が、取得方式記憶部34から現在決定されているデータ取得方式を取得して、現在決定されているデータ取得方式ではないデータ取得方式を、データ取得要求受付部31に返却する。
【0058】
ステップS122で、データ取得要求受付部31は、決定したデータ取得方式及びデータ取得要求を、データ取得部35に出力する。データ取得部35により取得した、データ取得要求に含まれる条件に該当するデータを取得し、データ取得クライアント24に返却する。また、データ取得要求受付部31は、データ取得部35から出力されたデータの取得時間を取得し、データ取得方式判断部32にデータの取得時間の記憶を指示する。
【0059】
ステップS124で、データ取得方式判断部32が、データ取得を行ったデータ取得方式と共にデータの取得時間、及びデータを取得した時刻を取得時間記憶部33に記憶し、取得時間記憶部33のデータ構造を更新する。
【0060】
ステップS126では、データ取得方式判断部32が、ステップS122でデータ取得を行ったデータ取得方式が、現在決定されているデータ取得方式ではないデータ取得方式であったか否かを判定する。現在決定されているデータ取得方式であった場合には、処理を終了する。現在決定されているデータ取得方式ではないデータ取得方式であった場合には、ステップS128で、更新された取得時間記憶部33のデータ構造を用いて、平均取得時間を算出し、現在のデータ取得方式を決定して処理を終了する。これは、取得時間記憶部33における、現在決定されているデータ取得方式ではないデータ取得方式についての取得時間が更新されたため、平均取得時間を再計算した場合に、データ取得方式が変更される可能性があるためである。なお、データ取得の運用が開始されてから、データの取得が所定回数実行されていない場合には、ステップS126の処理は省略することができる。
【0061】
次に、上記ステップS116及びS128においてデータ取得方式判断部32が実行する処理の詳細を説明する。
【0062】
図10に示すように、まず、ステップS200で、取得時間記憶部33から、第1方式のデータの取得時間を取得し、第1方式の平均取得時間を算出する。
【0063】
ステップS202で、取得時間記憶部33から、第2方式のデータの取得時間を取得し、第2方式の平均取得時間を算出する。
【0064】
ステップS204で、ステップS200で算出した第1方式の平均取得時間と、ステップS204で算出した第2方式の平均取得時間とを比較し、平均取得時間が短い方式を、現在のデータ取得方式として、取得方式記憶部34に記憶する。
【0065】
以上説明したように、本実施形態に係るパケットキャプチャシステム100によれば、セッションの単位でデータを取得する第1方式、及びオブジェクトの単位でデータを取得する第2方式を含む複数のデータ取得方式をもつ。データの取得要求があった場合に、複数のデータ取得方式でのデータの取得を、データの取得の運用を開始してから所定回数実行する。データ取得方式の各々の平均取得時間を算出して、平均取得時間に基づいて、データ取得方式を決定する。決定されたデータ取得方式以外のデータ取得方式で定期的にデータを取得して、平均取得時間を更新し、平均取得時間に基づいてデータ取得方式を決定する。このため、データの内容及び運用に応じた取得方式を決定することができる。
【0066】
また、データの取得の運用開始時において、ワークロードが未知の状況に対して、データを取得するときに複数のデータ取得方式を試す必要がなくなる。また、ワークロードが変化したときにも、データ取得の効率が悪くならないという利点がある。
【0067】
また、上述した実施形態では、複数のデータ取得方式を第1方式、及び第2取得方式としたが、これに限定されるものではない。例えば、他の方式として、オブジェクト内の連続する複数のセッションを指定して、連続する複数のセッション単位でデータを取得する方式、などの方式を加えて、3以上のデータ取得方式の中からデータ取得方式を決定するようにしてもよい。例えば、第1〜第3方式の中からデータ取得方式を決定するとする。この場合には、上記ステップS104では、0〜0.33までを第1方式、0.33〜0.66までを第2方式、0.67〜1までを第3方式と判定するなど、各方式が均等に選択されるようにする。また、上記ステップS120では、例えば、乱数を生成し、0.5以上であれば第2方式、0.5未満であれば第3方式を選択して、返却するようにすればよい。
【0068】
また、上述した実施形態では、生成した乱数の値が一定の値、0.99以上の場合に現在決定されているデータ取得方式以外のデータ取得方式によるデータの取得を行っていたが、これに限定されるものではない。例えば、別の実施態様として、一定の値を動的に変更することも考えられる。これは、ワークロードの変化に柔軟に対応するためである。例えば、1つの態様として、ワークロードの急激な変化を検出すると、一定の値を0.5に変更し、0.5以上であれば、現在決定されているデータ取得方式以外のデータ取得方式によるデータの取得を行うようにする。ワークロードの急激な変化とは、例えば、取得したデータの平均取得容量が1/2以下になった場合、又は2倍以上になった場合、などである。この場合には、例えば、取得時間記憶部33のデータ構造に、データの取得容量の項目を加えて記憶しておき、平均取得容量を算出すればよい。また、データの取得要求に含まれる条件が変更された場合もワークロードの変化に当たる。この場合には、例えば、取得時間記憶部33のデータ構造に、取得するデータの条件を加えて記憶して、出現頻度の高い条件を求めておき、出現頻度の高い条件の変化を検出すればよい。出現頻度の高い条件とは、例えば、直近100回の取得のうち30回出現したなどとすればよい。また、出現頻度の高い条件の変化とは、例えば、出現頻度の高い条件に、宛先ポート80が新たに現れるなどの変化である。
【0069】
また、ワークロードが頻繁に変化する場合に、変化にすぐに追随するため、過去に決定されたデータ取得方式を一定回数(例えば100回分)記憶しておき、データ取得方式が切り替わる回数をカウントして、切り替えが多い場合(例えば20回以上)には、一定の値を変更し、現在のデータ取得方式以外のデータ取得方式によってデータ取得を行う頻度を増やすこともできる。
【0070】
また、決定された現在のデータ取得方式による平均取得時間と、決定された現在のデータ取得方式以外のデータ取得方式による平均取得時間との差が予め定めた閾値以上である場合には、現在の取得方式でない取得方式を出力する頻度を減らすものが考えられる。これにより、平均取得時間の差が圧倒的に大きい場合(現在決定している方式による平均取得時間が速い場合)には、これにより、別の方式を試す回数が減ってデータ取得の効率が向上する。
【0071】
また、乱数を発生させていずれのデータ取得方式を選択するかを判定するようにして複数のデータ取得方式を所定回数実行する場合を例に説明したが、これに限定されるものではない。例えば、所定のタイミングを予め定めておいてもよい。一例として、上記ステップS104であれば、1回ずつデータ取得方式の各々を実行するように定めておけばよい。また、上記ステップS112であれば、100回に1回、決定されているデータ取得方式以外のデータ取得方式を選択するように定めておけばよい。
【0072】
また、上述した実施形態では、平均取得時間に基づいてデータ取得方式を決定していたが、これに限定されるものではない。例えば、平均取得時間と、取得したデータの平均取得容量とに基づいて、平均取得速度を算出して、平均取得速度が短いデータ取得方式でデータを取得するように決定してもよい。この場合には、取得時間記憶部33のデータ構造に、データの取得容量の項目を加えて記憶しておき、データ取得方式ごとに平均取得容量を算出して、平均取得容量に平均取得時間を除して平均取得速度を算出するようにすればよい。
【0073】
また、データ取得クライアントが複数ある場合には、
図11に示すように、取得時間記憶部33のデータ構造にユーザの項目を追加し、ユーザごとに、データ取得方式を決定することもできる。この場合には、ユーザからデータの取得要求があった場合に、ユーザごとに、複数のデータ取得方式でのデータの取得を、データの取得の運用を開始してから所定回数実行する。また、ユーザごとに、データ取得方式の各々の平均取得時間を算出して、平均取得時間に基づいて、データ取得方式を決定する。また、データの取得方式が決定された場合には、ユーザごとに、決定されたデータの取得方式でデータの取得を実行する。また、ユーザごとに、決定されたデータ取得方式以外のデータ取得方式で定期的にデータを取得して、平均取得時間を更新し、平均取得時間に基づいてデータ取得方式を決定する。
【0074】
また、データ取得の際に指定される条件ごとに取得時間を取得時間記憶部33に記憶し、条件ごとに平均取得時間を算出するようにし、条件ごとに、データ取得方式を決定することもできる。
【0075】
なお、上記実施形態では、記憶装置からのデータの取得に要する時間を方式ごとに比較する場合について説明したが、これに限定されるものではない。例えば、キャプチャサーバにおいて、取得したデータから所定のデータを抽出してデータ取得クライアントに返却する場合には、データの抽出に要する時間も含め、データの取得要求があってからデータを返却するまでの時間を比較するようにしてもよい。ただし、データの取得要求からデータの返却までに要する時間のうち、記憶装置からのデータ取得に要する時間が大部分を占めるため、上記実施形態のように、記憶装置からのデータ取得に要する時間を比較するだけでも有効である。
【0076】
以上の実施形態に関し、更に以下の付記を開示する。
【0077】
(付記1)
受信したデータを一定サイズで区切った単位をオブジェクトとし、前記オブジェクトは複数のセッションを含むものとして記憶し、
前記セッションの単位で前記データを取得する第1方式でのデータ取得、及び前記オブジェクトの単位で前記データを取得する第2方式を含む複数のデータ取得方式の各々の取得時間に関する値を算出して、前記取得時間に関する値に基づいて、前記データ取得方式を決定し、
前記データの取得方式が決定された場合には、前記決定された前記データの取得方式で前記データの取得を実行し、
前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得して、前記取得時間に関する値を更新し、前記取得時間に関する値に基づいて前記データ取得方式を決定することを特徴とするデータ取得プログラム。
【0078】
(付記2)
前記受信した前記データの内容又は前記取得された前記データの内容が変化した場合に、前記決定された前記データ取得方式以外の前記データ取得方式を定期的に実行する頻度を上げる付記1に記載のデータ取得プログラム。
【0079】
(付記3)
前記決定された前記データ取得方式を記憶し、
前記データ取得方式の決定において前記データ取得方式が切り替わる回数をカウントし、前記回数が予め定めた回数以上となる場合には、前記決定された前記データ取得方式以外の前記データ取得方式を定期的に実行する頻度を上げる付記1又は付記2に記載のデータ取得プログラム。
【0080】
(付記4)
前記複数のデータ取得方式の各々の前記データの取得時間に関する値を比較し、前記決定された前記データ取得方式の前記取得時間に関する値と、前記決定された前記データ取得方式以外の前記データ取得方式の前記取得時間に関する値との差が予め定めた閾値以上である場合には、前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得する頻度を下げる付記1〜付記3のいずれかに記載のデータ取得プログラム。
【0081】
(付記5)
前記取得時間に関する値は、平均取得時間、又は平均取得速度とする付記1〜付記4のいずれかに記載のデータ取得プログラム。
【0082】
(付記6)
複数のユーザがデータの取得要求をする場合において、
前記ユーザごとに、前記セッションの単位で前記データを取得する第1方式でのデータ取得、及び前記オブジェクトの単位で前記データを取得する第2方式を含む複数のデータ取得方式の各々の取得時間に関する値を算出して、前記取得時間に関する値に基づいて、前記データ取得方式を決定し、
前記データの取得方式が決定された場合には、前記ユーザごとに、前記決定された前記データの取得方式で前記データの取得を実行し、
前前記ユーザごとに、前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得して、前記取得時間に関する値を更新し、前記取得時間に関する値に基づいて前記データ取得方式を決定する付記1〜付記5のいずれかに記載のデータ取得プログラム。
【0083】
(付記7)
受信したデータを一定サイズで区切った単位をオブジェクトとし、前記オブジェクトは複数のセッションを含むものとして記憶するメモリと、
前記セッションの単位で前記データを取得する第1方式でのデータ取得、及び前記オブジェクトの単位で前記データを取得する第2方式を含む複数のデータ取得方式の各々の取得時間に関する値を算出して、前記取得時間に関する値に基づいて、前記データ取得方式を決定するデータ取得方式判断部と、
前記データの取得方式が決定された場合には、前記決定された前記データの取得方式で前記データの取得を実行するデータ取得部と、を含み、
前記データ取得部により、前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得し、前記データ取得方式判断部により、前記取得時間に関する値を更新し、前記取得時間に関する値に基づいて前記データ取得方式を決定するデータ取得装置。
【0084】
(付記8)
前記受信した前記データの内容又は前記取得された前記データの内容が変化した場合に、前記決定された前記データ取得方式以外の前記データ取得方式を定期的に実行する頻度を上げる付記7に記載のデータ取得装置。
【0085】
(付記9)
前記決定された前記データ取得方式を記憶し、
前記データ取得方式の決定において前記データ取得方式が切り替わる回数をカウントし、前記回数が予め定めた回数以上となる場合には、前記決定された前記データ取得方式以外の前記データ取得方式を定期的に実行する頻度を上げる付記7又は付記8に記載のデータ取得装置。
【0086】
(付記10)
前記複数のデータ取得方式の各々の前記データの取得時間に関する値を比較し、前記決定された前記データ取得方式の前記取得時間に関する値と、前記決定された前記データ取得方式以外の前記データ取得方式の前記取得時間に関する値との差が予め定めた閾値以上である場合には、前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得する頻度を下げる付記7〜付記9のいずれかに記載のデータ取得装置。
【0087】
(付記11)
前記取得時間に関する値は、平均取得時間、又は平均取得速度とする付記7〜付記10のいずれかに記載のデータ取得装置。
【0088】
(付記12)
複数のユーザがデータの取得要求をする場合において、
前記データ取得方式判断部は、前記ユーザごとに、前記セッションの単位で前記データを取得する第1方式でのデータ取得、及び前記オブジェクトの単位で前記データを取得する第2方式を含む複数のデータ取得方式の各々の取得時間に関する値を算出して、前記取得時間に関する値に基づいて、前記データ取得方式を決定し、
前記データ取得部は、前記データの取得方式が決定された場合には、前記ユーザごとに、前記決定された前記データの取得方式で前記データの取得を実行し、
前記データ取得部において、前記ユーザごとに、前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得して、前記データ取得方式判断部において、前記取得時間に関する値を更新し、前記取得時間に関する値に基づいて前記データ取得方式を決定する付記7〜付記11のいずれかに記載のデータ取得装置。
【0089】
(付記13)
受信したデータを一定サイズで区切った単位をオブジェクトとし、前記オブジェクトは複数のセッションを含むものとして記憶し、
前記セッションの単位で前記データを取得する第1方式でのデータ取得、及び前記オブジェクトの単位で前記データを取得する第2方式を含む複数のデータ取得方式の各々の取得時間に関する値を算出して、前記取得時間に関する値に基づいて、前記データ取得方式を決定し、
前記データの取得方式が決定された場合には、前記決定された前記データの取得方式で前記データの取得を実行し、
前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得して、前記取得時間に関する値を更新し、前記取得時間に関する値に基づいて前記データ取得方式を決定することを特徴とするデータ取得方法。
【0090】
(付記14)
前記受信した前記データの内容又は前記取得された前記データの内容が変化した場合に、前記決定された前記データ取得方式以外の前記データ取得方式を定期的に実行する頻度を上げる付記13に記載のデータ取得方法。
【0091】
(付記15)
前記決定された前記データ取得方式を記憶し、
前記データ取得方式の決定において前記データ取得方式が切り替わる回数をカウントし、前記回数が予め定めた回数以上となる場合には、前記決定された前記データ取得方式以外の前記データ取得方式を定期的に実行する頻度を上げる付記13又は付記14に記載のデータ取得方法。
【0092】
(付記16)
前記複数のデータ取得方式の各々の前記データの取得時間に関する値を比較し、前記決定された前記データ取得方式の前記取得時間に関する値と、前記決定された前記データ取得方式以外の前記データ取得方式の前記取得時間に関する値との差が予め定めた閾値以上である場合には、前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得する頻度を下げる付記13〜付記15のいずれかに記載のデータ取得方法。
【0093】
(付記17)
前記取得時間に関する値は、平均取得時間、又は平均取得速度とする付記13〜付記16のいずれかに記載のデータ取得プログラム。
【0094】
(付記18)
複数のユーザがデータの取得要求をする場合において、
前記ユーザごとに、前記セッションの単位で前記データを取得する第1方式でのデータ取得、及び前記オブジェクトの単位で前記データを取得する第2方式を含む複数のデータ取得方式の各々の取得時間に関する値を算出して、前記取得時間に関する値に基づいて、前記データ取得方式を決定し、
前記データの取得方式が決定された場合には、前記ユーザごとに、前記決定された前記データの取得方式で前記データの取得を実行し、
前記ユーザごとに、前記決定された前記データ取得方式以外の前記データ取得方式で定期的に前記データを取得して、前記取得時間に関する値を更新し、前記取得時間に関する値に基づいて前記データ取得方式を決定する付記13〜付記17のいずれかに記載のデータ取得方法。