(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献1に示すアクセス頻度が高い順にキャッシュを行う方法の場合、一時的にアクセスが集中し、その後のアクセスがほとんどない状態でも、キャッシュの優先順序が高いままで、アクセスがほとんどないにも関わらずキャッシュデータがサーバ内に残るという問題がある。
【0005】
例えば、企業のコールセンタ等に利用される着課金サービスをサーバが提供する場合、一般にコールセンタの受付可能時間は平日の日中帯で、夜間や休日は受付不可となっている。このようなケースでは、コールセンタを提供している加入者データのアクセス頻度は、平日日中は高く、夜間・休日は低くなるが、平日日中のアクセス頻度が高ければ、アクセス頻度が低い夜間・休日にもサーバにキャッシュデータが残り続けるという問題がある。
【0006】
本発明は、上記の事情に鑑みなされたもので、本発明の目的は、ある期間にアクセス頻度が高く、その後、アクセス頻度が低下するデータを、データの利用状況に応じて適切にキャッシュから削除し、キャッシュを有効利用するアプリケーションサーバ、およびキャッシュ制御方法を提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、請求項1記載の本発明は、アプリケーションサーバであって、データを記憶するキャッシュ記憶手段と、前記キャッシュ記憶手段に記憶された各データの優先度を制御する優先度制御手段と、前記キャッシュ記憶手段の容量が不足した場合、優先度が低いデータから順に削除する削除手段と、を備え、前記優先度制御手段は、前記キャッシュ記憶手段に記憶されたデータの優先度を時間の経過に従って低下させるとともに、データへのアクセスが発生した場合、当該データの優先度を増加させ
、前記優先度制御手段は、サービス提供時間外において時間の経過に従って優先度を低下させる速度を、サービス提供時間内において時間の経過に従って優先度を低下させる速度よりも早くする。
【0008】
請求項2記載の本発明は、上記アプリケーションサーバにおいて、前記優先度制御手段は、データへのアクセスが発生した場合、当該データの最終アクセス日時と現在時刻とを用いて増加値を算出し、当該増加値を加算して優先度を増加させる。
【0010】
請求項3記載の本発明は、上記アプリケーションサーバにおいて、前記キャッシュ記憶手段に記憶されるデータは、加入者データであって、呼制御サーバから受け付けた要求で使用する加入者データが、前記キャッシュ記憶手段に存在しない場合、加入者データベースから当該加入者データを読み出して、前記キャッシュ記憶手段に記憶するデータ取得手段をさらに備える。
【0011】
請求項4記載の本発明は、キャッシュ記憶部を備えるアプリケーションサーバが行う、キャッシュ制御方法であって、前記キャッシュ記憶部に記憶された各データの優先度を制御する優先度制御ステップと、前記キャッシュ記憶部の容量が不足した場合、優先度が低いデータから順に削除する削除ステップと、を行い、前記優先度制御ステップは、前記キャッシュ記憶部に記憶されたデータの優先度を時間の経過に従って低下させるとともに、データへのアクセスが発生した場合、当該データの優先度を増加させ
、前記優先度制御ステップは、サービス提供時間外において時間の経過に従って優先度を低下させる速度を、サービス提供時間内において時間の経過に従って優先度を低下させる速度よりも早くする。
【0012】
請求項5記載の本発明は、上記キャッシュ制御方法であって、前記優先度制御ステップは、データへのアクセスが発生した場合、当該データの最終アクセス日時と現在時刻とを用いて増加値を算出し、当該増加値を加算して優先度を増加させる。
【0014】
請求項6記載の本発明は、上記キャッシュ制御方法あって、前記キャッシュ記憶部に記憶されるデータは、加入者データであって、呼制御サーバから受け付けた要求で使用する加入者データが、前記キャッシュ記憶部に存在しない場合、加入者データベースから当該加入者データを読み出して、前記キャッシュ記憶部に記憶するデータ取得ステップを、さらに備える。
【発明の効果】
【0015】
本発明によれば、ある期間にアクセス頻度が高く、その後、アクセス頻度が低下するデータを、データの利用状況に応じて適切にキャッシュから削除し、キャッシュを有効利用するアプリケーションサーバ、およびキャッシュ制御方法を提供することができる。
【発明を実施するための形態】
【0017】
以下、本発明の実施の形態を、図面を用いて説明する。
【0018】
図1は、本発明の実施形態におけるネットワークシステムの構成例を示す図である。本実施形態のネットワークシステムは、例えばIMS(IP Multimedia Subsystem)のようなSIPを用いたシステムであって、アプリケーションサーバ1と、加入者データベース2と、複数の呼制御サーバ3と、各呼制御サーバ3に接続される複数の端末4と、を備える。
【0019】
アプリケーションサーバ1は、着信課金サービス等のサービスを端末4に提供する。アプリケーションサーバ1は、加入者データベース2と接続され、サービスの提供に必要な加入者データを、加入者データベース2から読み出し(ダウンロードし)、サービスを提供する。また、サービス要求の度にアプリケーションサーバ1から加入者データベース2への問合せを行うと、セッション確立の遅延、アプリケーションサーバ1と加入者データベース2間の通信頻度の増加による帯域の圧迫等の問題が有るため、アプリケーションサーバ1はキャッシュ記憶部を備え、加入者データベース2から読み出した加入者データをアプリケーションサーバ1内に保存するものとする。なお、アプリケーションサーバ1は、IMSでは、AS(Application Server)に相当する。
【0020】
加入者データベース2には、端末4を使用する各加入者(ユーザ)の加入者データの原本が格納されており、IMSではHSS(Home Subscriber Server)に相当する。
【0021】
呼制御サーバ3は、配下の各端末4の登録および認証、セッションの確立および制御などの呼制御を行う。呼制御サーバ3は、IMSではCFCS(call session control function)に相当する。
【0022】
端末4は、例えば、スマートフォン、携帯電話、PCなどのユーザが使用する通信装置である。
【0023】
なお、本実施形態では、加入者データベース2の加入者データをアプリケーションサーバ1のキャッシュ記憶部に保存する実施形態を例として以下に説明するが、アプリケーションサーバのキャッシュ記憶部に保存されるデータは、加入者データに限定されることなく、他のデータであってもよい。
【0024】
図2は、本実施形態のアプリケーションサーバ1の構成を示すブロック図である。図示するアプリケーションサーバ1は、サービス提供部11と、データ取得部12と、優先度制御部13と、キャッシュ記憶部14(キャッシュメモリ)とを備える。
【0025】
サービス提供部11は、呼制御サーバ3を介して、端末4から送信された要求を受信すると、要求されたサービス処理を行う。データ取得部12(データ取得手段、削除手段)は、呼制御サーバ3から受け付けた要求で使用する加入者データが、キャッシュ記憶部14に存在しない場合、加入者データベース2から当該加入者データを読み出して、キャッシュ記憶部14に記憶する。また、データ取得部12は、キャッシュ記憶部14の容量が不足した場合、優先度が低いデータから順に削除する。
【0026】
優先度制御部13は、キャッシュ記憶部14に記憶された各データの優先度を制御する。具体的には、優先度制御部13は、キャッシュ記憶部14に記憶されたデータの優先度を時間の経過に従って低下させるとともに、データへのアクセスが発生した場合、当該データの優先度を増加させる。
【0027】
キャッシュ記憶部14には、加入者データベース2から読み出した加入者データが記憶される。
図3は、キャッシュ記憶部14に記憶・保存される加入者データの構成例を示す図である。本実施形態では、キャッシュ記憶部14に記憶される加入者データには、優先度と、最終利用日時とが付加されるものとする。優先度は、キャッシュ記憶部14に記憶されるデータの中で、削除されず優先的に残る度合いを示すものである。最終利用日時は、キャッシュのデータを最後(直前)に利用した日時を示すものである。
【0028】
なお、上記説明したアプリケーションサーバ1は、例えば、CPUと、メモリと、HDD等の外部記憶装置などを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、CPUがメモリ上にロードされたアプリケーションサーバ1のプログラムを実行することにより、アプリケーションサーバ1の各機能が実現される。また、アプリケーションサーバ1用のプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD−ROMなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
【0029】
次に、本実施形態の処理について説明する。
【0030】
図4は、本実施形態のキャッシュ記憶部14に記憶される加入者データの優先度の設定処理を示すフローチャートである。
【0031】
アプリケーションサーバ1のサービス提供部11は、端末4が呼制御サーバ3を介して送信した要求(例えば、新規INVITE信号)を受信する(S11)。サービス提供部11は、受信した要求で使用する加入者データの取得指示を、データ取得部12に送出する。これにより、データ取得部12は、指示された加入者データが当該アプリケーションサーバ1のキャッシュ記憶部14の中に存在するか否かを判別する(S12)。
【0032】
キャッシュ記憶部14内に指示された加入者データが存在する場合(S13:YES)、データ取得部12は、キャッシュ記憶部14内に格納された当該加入者データを取得する(S14)。そして、サービス提供部11は、データ取得部12が取得した加入者データを用いて端末4に提供するサービス処理を実施する。
【0033】
そして、優先度制御部13は、キャッシュ記憶部14に記憶された当該加入者データに付加された優先度Pの値を更新する(S15)。ここでは、優先度制御部13は、キャッシュ記憶部14に記憶された優先度Pに、増加値Qを加算して優先度Pを増加させる(P+Q→P)。なお、優先度Pに加算する増加値Qは、定数であってもよく、あるいは関数g(s,t)によって表わされる値であってもよい。関数g(s,t)は、キャッシュ記憶部14の当該加入者データを最後に利用した最終利用日時sと、現在の時刻tとを用いて増加値Qを算出する関数である。なお、関数g(s,t)の具体例については、後述する。
【0034】
そして、優先度制御部13は、キャッシュ記憶部14に記憶された当該加入者データに付加された最終利用日時を、現在の時刻に更新する。
【0035】
一方、キャッシュ記憶部14内に指示された加入者データが存在しない場合(S13:NO)、データ取得部12は、加入者データベース2にアクセスして当該加入者データを取得(ダウンロード)し、取得した加入者データをキャッシュ記憶部14に記憶する(S16)。サービス提供部11は、データ取得部12が取得した加入者データを用いて端末4に提供するサービス処理を実施する。
【0036】
そして、優先度制御部13は、キャッシュ記憶部14に記憶された当該加入者データに対して、優先度Pに初期値P0を、最終利用日時に現在の時刻を設定する(S17)。
【0037】
なお、S16で加入者データベース2から取得した新たな加入者データをキャッシュ記憶部14に記憶する際に、キャッシュ記憶部14の容量が不足した場合、すなわち、当該加入者データを記憶するための空き容量がキャッシュ記憶部14に存在しない場合(当該加入者データのデータサイズがキャッシュ記憶部14の空き記憶領域の容量を超える場合)、データ取得部12は、当該加入者データが格納可能な空き容量を確保できるまで、優先度Pが低いデータから順に削除し、当該加入者データを格納する。
【0038】
次に、キャッシュ記憶部14に記憶されるキャッシュデータの優先度の変化について説明する。
【0039】
図5は、キャッシュ記憶部14に記憶される加入者データの優先度の変化を示すイメージ図である。優先度制御部13は、各データの優先度Pを、所定の関数(f1(t)またはf2(t))に従って、時間とともに単調減少させるものとする。ただし、優先度Pは、P≧0とする。
【0040】
ここで、加入者データからサービス提供時間が分かる場合は、サービス提供時間内と、サービス提供時間外とで異なる関数を用いて、各時間帯で各データの優先度の減少速度を変えることとしてもよい。例えば、着課金サービスでは、加入者データに着端末への接続可能な時間帯が設定されており、接続可能な時間帯をサービス提供時間内、接続が不可の時間帯をサービス提供時間外と判別することが考えられる。
【0041】
図5に示す例では、サービス提供時間内においてはf1(t)の関数に従って、時間の経過とともに優先度を減少させている。また、サービス提供時間外においては、f1(t)とは異なるf2(t)の関数に従って、時間の経過とともに優先度Pを減少させている。
図5では、 サービス提供時間外において優先度を低下させる速度を、サービス提供時間内において優先度を低下させる速度よりも早くなるように、関数f1(t)、f2(t)を設定している。
【0042】
なお、加入者データからサービス提供時間が不明なサービスの場合は、 常時、関数f1(t)のみを用いることとする。また、f1(t)と、f2(t)が同じ関数であってもかまわない。
【0043】
図5では、t4からt6の時間帯はサービス提供時間外であって、それ以外のt1からt4およびt6からt7の時間帯はサービス提供時間内であるもとする。まず、t1時点で加入者データベース2から取得した新たな加入者データがキャッシュ記憶部14に記憶される(
図4:S16)。このとき、当該データの優先度には初期値P0が設定される(
図4:S17)。そして、t1からt2の間は、サービス提供時間内の関数f1(t)を用いて優先度を減少させる。そして、t2時点でキャッシュ記憶部14に記憶されている当該データが利用され(
図4:S14)、t2時点の当該データの優先度Pに増加値Qを加算して、優先度Pを増加する(
図4:S15)。
【0044】
そして、t2からt3の間は、関数f1(t)を用いて優先度を減少させ、t3時点で当該データが利用されると、t3時点の当該データの優先度Pに増加値Qを加算して、優先度Pを増加させ、t3からt4の間は関数f1(t)を用いて優先度を減少させる。
【0045】
そして、t4からt6の間はサービス提供時間外であるため、t4以降は、サービス提供時間外の関数f2(t)を用いて優先度を減少させる。t5時点で当該データが利用され、t5時点の当該データの優先度Pに増加値Qを加算して、優先度Pを増加させ、t5からt6の間は関数f2(t)を用いて優先度を減少させる。
【0046】
そして、t6らt7の間はサービス提供時間内であるため、t6以降は関数f1(t)を用いて優先度を減少させる。t7時点では、優先度Pが小さいため、他の新たなデータをキャッシュ記憶部14に記憶するために当該データはキャッシュ記憶部14から削除されるものとする。
【0047】
なお、本実施形態において、加入者データベース2内の原本の加入者データが更新された場合は、加入者データベース2からアプリケーションサーバ1に更新通知が送信され、アプリケーションサーバ1のデータ取得部12は、更新された加入者データがキャッシュ記憶部14内に存在する場合は、当該加入者データの更新を行う。なお、更新時には優先度の値および最終利用日時の変更は行わない。
【0048】
<着課金サービスの実施例>
次に、本実施形態の実施例として、着課金サービスの加入者データをキャッシュ記憶部14に作成する場合について説明する。
【0049】
図6は、本実施例の加入者データベース2に記憶されている加入者データの例を示すものである。図示する加入者データベース2では、加入者データとして、加入者テーブル21と、加入者毎に設けられたサービス時間テーブル22とを有する。加入者テーブル21には、加入者毎に、加入者IDと、論理番号と、物理番号と、サービス提供時間とが対応付けて記憶されている。ここでは、サービス提供時間には、当該加入者IDのサービス時間テーブル22へのポインタが設定されているものとする。なお、サービス時間テーブル22のデータを加入者テーブル21の各加入者IDのサービス提供時間に設定することで、サービス時間テーブル22を加入者テーブル21に統合することしてもよい。
【0050】
次に、本実施例の着課金サービスの動作について説明する。
【0051】
アプリケーションサーバ1は、呼制御サーバ3から受信したINVITE信号のRequest-URIに設定されている電話番号(論理番号)を、0AB-Jの電話番号(物理番号)に変換して、呼制御サーバ3に返送する。呼制御サーバ3は、変換後の0AB-Jの電話番号を用いてINVITE信号を着端末4に送信する。また、着課金サービス用の加入者データには、
図6に示すようにサービス提供時間が設定されているものとする。アプリケーションサーバ1は、サービス提供時間外のときに、呼制御サーバ3からINVITE信号を受信した場合は、「サービス提供時間外」である旨のガイダンスを発端末4に送出する。なお、ガイダンスを送出するのは、アプリケーションサーバ1以外の他の装置(例えば、ガイダンス再生用のメディアサーバなど)であってもよい。
【0052】
図7および
図8は、本実施例における着課金サービスの動作例を示すシーケンス図である。
図7は、着課金サービスのサービス提供時間内における動作例を示すシーケンスである。なお、
図7に示す2つの呼制御サーバ3は同一のサーバである。
【0053】
発端末4は、着課金サービスの対象の端末4を着信先として発信する。これにより、Request-URI(着信先)に着課金サービスであることを示す0120が設定されたINVITE信号が呼制御サーバ3に送信される(S21)。呼制御サーバ3は、Request-URIに0120が設定されているため、当該INVITE信号をアプリケーションサーバ1に送信する(S22)。
【0054】
アプリケーションサーバ1は、Request-URIに設定されている0120から始まる電話番号(論理番号)を、0AB-Jの電話番号(物理番号)に変換して、呼制御サーバ3に返送する(S23)。すなわち、アプリケーションサーバ1のサービス提供部11は、データ取得部12に、当該論理番号を有する加入者データの取得を依頼する。データ取得部12は、
図4で説明した処理により、指示された加入者データを取得する。ここでは、
図6に示す論理番号が「0120XXXXXX」の加入者データ(サービス提供時間を含む)を、加入者データベース2またはキャッシュ記憶部14から取得するものとする。サービス提供部11は、データ取得部12が取得した加入者データに含まれるサービス提供時間と、現在時刻とを比較する。ここでは、サービス提供時間内であるため、INVITE信号のRequest-URIに設定された論理番号を、取得した加入者データの物理番号に変換して、呼制御サーバ3に返送する。
【0055】
呼制御サーバ3は、変換した物理番号の着端末4にINVITE信号を送信する(S25)。着端末4が応答すると、200:OKメッセージが呼制御サーバ3、アプリケーションサーバ1および発端末4にそれぞれ送信され(S26)、発端末4と着端末4との間でセッションが確立され通話が開始される(S27)。
【0056】
図8は、着課金サービスのサービス提供時間外における動作例を示すシーケンスである。
図7のS21およびS22と同様に、INVITE信号がアプリケーションサーバ1に送信される(S31、S32)。アプリケーションサーバ1は、Request-URIに設定されている論理番号の加入者データを取得し、取得した加入者データのサービス提供時間と現在時刻とを比較し(S33)、ここではサービス提供時間外であるため、番号変換処理を行うことなく、200:OKメッセージを送信して発端末4とのセッションを確立し(S34、S35)、サービス時間外である旨を通知するガイダンスを発端末に送出する(S36)。
【0057】
なお、
図7および
図8では、1xx系のレスポンスについては省略している。
【0058】
図9は、
図6に示す「0120xxxxxx」の電話番号を持つ加入者ID1234567の優先度の変化を説明するためのイメージ図である。
【0059】
図9では、18:00まではサービス提供時間内であって、18:00以降はサービス提供時間外であるもとする。また、
図9では、優先度制御部13は、以下の値および関数を用いて優先度Pを制御するものとする。
【0060】
・初期値:P0=100
・サービス提供時間内の関数:f1(t)=t
・サービス提供時間外の関数:f2(t)=2t
・増加値Qの関数:g(s,t)=1/2{P0−(t−s)}
ただし、P0<(t−s)の場合は、g(s,t)=0
なお、tおよびsは、時間を分単位で表現する変数とする。例えば、17:30は1050となり、18:10は1090となる。
【0061】
まず、17:10に、アプリケーションサーバ1のキャッシュ記憶部14に「加入者ID1234567」の加入者データがキャッシュされていない状態で、アプリケーションサーバ1がRequest-URIに「0120xxxxxx」が設定されたINVITE信号を受信する(S41)。キャッシュ記憶部14には当該加入者データがないため、アプリケーションサーバ1は、加入者データベース2から、加入者ID「1234567」の加入者データをダウンロードし、キャッシュ記憶部14に格納し、番号変換を行う。このとき優先度Pには初期値P0(=100)が設定される。
【0062】
その後、17:30に、アプリケーションサーバ1は、再度Request-URIに0120xxxxxxが設定されたINVITE信号を受信する(S42)。キャッシュ記憶部14には当該加入者データがあるため、アプリケーションサーバ1は、当該加入者データを用いて番号変換処理を行う。このとき、優先度Pは、関数f1(t)にしたがって減算され、80まで減少している(すなわち、17:10から17:30までに20分経過しているため、100-20=80となる)。そして、当該加入者データへのアクセスが発生したことにより、現時点の優先度P(80)に関数g(17:10、17:30)の算出結果(40)が加算され、優先度Pは120となる。
【0063】
その後、17:40に、アプリケーションサーバ1は、再度Request-URIに0120xxxxxxが設定されたINVITE信号を受信し(S43)、キャッシュ記憶部14の加入者データを用いて番号変換処理を行う。このとき、優先度Pは、関数f1(t)にしたがって減算され、110まで減少している。そして、当該加入者データへのアクセスが発生したことにより、現時点の優先度P(110)に、関数g(17:30、17:40)の算出結果(45)が加算され、優先度P は155となる。
【0064】
18:00以降はサービス提供時間外であるため、優先度Pはf2(t)に従って減算される。
【0065】
そして、18:30に、アプリケーションサーバ1は、再度Request-URIに0120xxxxxxが設定されたINVITE信号を受信し(S44)、ここでは、サービス時間外であるためガイダンスを送出する。このとき、優先度Pは、18:00以降は関数f2(t)にしたがって減算され、75まで減少している。そして、当該加入者データへのアクセスが発生したことにより、現時点の優先度P(75)に、関数g(17:40、18:30)の算出結果(25)が加算され、100となる。
【0066】
以上説明した本実施形態では、キャッシュ記憶部14に記憶された各データの優先度を、時間の経過にしたがって低下させるとともに、データへのアクセスが発生した場合、当該データの優先度を増加させる。これにより、本実施形態では、ある期間にアクセス頻度が増加し、その後、アクセス頻度が低下するようなデータであっても、データの利用状況に応じて適切にキャッシュから削除し、キャッシュ記憶部14の領域を有効に利用することができる。
【0067】
また、本実施形態では、キャッシュ記憶部14のデータへのアクセスが発生した場合、当該データの最終アクセス日時と現在時刻とを用いて増加値を算出し、当該増加値を加算して優先度を増加させる。このように、最終アクセス日時から次にアクセスが発生するまでの時間を用いて優先度に加算する値を算出することで、優先度をデータの利用状況に応じて適切に制御することができる。
【0068】
また、本実施形態では、データのサービス提供時間が判定可能な場合、サービス提供時間外において優先度を低下させる速度を、サービス提供時間内において優先度を低下させる速度よりも早くする。このように、サービス提供時間外のデータについては優先度の低下速度を早くすることで、サービス提供時間外の利用頻度の低いデータが削除されずにキャッシュ記憶部14に残り続けることを防止することができる。
【0069】
なお、本発明は上記実施形態に限定されるものではなく、特許請求の範囲内において、種々変更・応用が可能である。