(57)【要約】【課題】データを蓄積して配送するシステムにおいて良好なデータの配送を可能にする技術を提供する。【解決手段】  本発明の一態様によるデータストア装置は、複数の記憶装置と、データを受信して前記記憶装置に格納し、データ取得要求を受けて前記記憶装置からデータを取得して送信するデータ制御部と、を有し、前記データ制御部は、前記複数の記憶装置のそれぞれに格納されている前記データに関する格納状況情報に基づいて、前記データ取得要求にかかるデータを検索する対象の記憶装置を選択する。【選択図】図１
2018032115.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置と、
データを受信して前記記憶装置に格納し、データ取得要求を受けて前記記憶装置からデータを取得して送信するデータ制御部と、を有し、
前記データ制御部は、前記複数の記憶装置のそれぞれに格納されている前記データに関する格納状況情報に基づいて、前記データ取得要求にかかるデータを検索する対象の記憶装置を選択する、
データストア装置。
【請求項２】
前記データにはそれぞれ優先度が付与され、
前記格納状況情報は、前記複数の記憶装置のそれぞれに格納されている優先度毎のデータのデータ数に関する優先度毎格納状況情報を含み、
前記データ制御部は、優先度の高いデータを取得できる可能性の高い記憶装置を選択する、
請求項１に記載のデータストア装置。
【請求項３】
前記データ制御部が複数あり、
前記複数のデータ制御部は、前記複数の記憶装置にデータを格納し、前記複数の記憶装置からデータを取得することが可能であり、
前記複数のデータ制御部がそれぞれに前記格納状況情報を保持し、
前記複数のデータ制御部は、前記データ取得要求を受けると、それぞれの保持する前記格納状況情報を用いて、前記データを検索する記憶装置を選択する、
請求項１に記載のデータストア装置。
【請求項４】
前記格納状況情報は、所定の時刻に取得された情報を含み、
前記複数のデータ制御部は、同じ記憶装置に格納されているデータに関し、互いに依存しない時刻の格納状況情報を用いる、
請求項３に記載のデータストア装置。
【請求項５】
前記格納状況情報には、前記優先度毎格納状況情報が取得された時刻に関する時刻情報が含まれており、
前記データ制御部は、前記優先度毎格納状況情報と該優先度毎格納状況情報が取得された時刻に関する時刻情報とに基づいて、前記データを検索する記憶装置を選択する、
請求項２に記載のデータストア装置。
【請求項６】
前記データ制御部は、前記時刻情報に基づいて、現在時刻の優先度とデータ数の関係を予測し、予測結果に基づいて、前記データを検索する記憶装置を選択する、請求項５に記載のデータストア装置。
【請求項７】
前記データ制御部は、現在時刻と前記時刻情報が示す時刻との差分と、単位時間に取得されるデータ数の平均値との積を、前記時刻情報が示す時刻における優先度毎のデータ数から減算して、現在時刻の優先度とデータ数の関係を予測する、請求項６に記載のデータストア装置。
【請求項８】
単位時間に取得されるデータ数の平均値は、１つの前記データ制御部の単位時間に前記記憶装置から取得するデータ数の平均値と、前記データ制御部の個数との積である、請求項７に記載のデータストア装置。
【請求項９】
複数の記憶装置と、データを受信して前記記憶装置に格納し、データ取得要求を受けて前記記憶装置からデータを取得して送信するデータ制御部と、を有するデータストア装置におけるデータ管理方法であって、
前記データ制御部が、前記複数の記憶装置のそれぞれに格納されている前記データに関する格納状況情報を取得し、
前記データ制御部が、前記格納状況情報に基づいて、前記データ取得要求にかかるデータを検索する対象の記憶装置を選択する、
データ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントから受信したメッセージデータをサービス提供サーバへ転送するメッセージキューシステムに関する。
【背景技術】
【０００２】
近年、インターネットや通信機器の発達に伴い、個人のスマートデバイスから送信されるメッセージデータのデータ数もデータ量も増大している。これらのメッセージデータを処理するシステムでは、システムの拡張性や可用性を向上させるために、分散データストアを利用してシステムを構築することが求められている。
【０００３】
分散データストアにメッセージデータを格納し、メッセージデータを分散処理する分散処理型メッセージキューシステムは一例として複数のメッセージキューサーバで構成される。各メッセージキューサーバは、メッセージデータを格納するストレージデバイスを備え、複数のメッセージキューサーバのストレージデバイスを共有し、クライアントとサービス提供サーバの間に、ストレージデバイス毎のメッセージキューを提供する。
【０００４】
複数のメッセージキューサーバが相互にストレージデバイスを共有することで大容量のストレージを実現することを可能にしている。また、メッセージキューサーバを増設することで容易にストレージの容量を増加することが可能である。また、メッセージデータをメッセージキューサーバ間で複製することにより、可用性を向上させることも可能である。
【０００５】
関連する技術として特許文献１に開示されたものがある。この文献には、同一メッセージキュー内における、他のメッセージとの相互関係に基づいて処理順序を制御する技術である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−１８２２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したような分散処理型メッセージキューシステムでは、各ストレージデバイスを均等に利用するために、メッセージデータをどのストレージデバイスに格納するか、あるいはどのストレージデバイスからメッセージデータを取得するかを決定するとき、一般的にラウンドロビン方式が用いられる。
【０００８】
しかし、メッセージデータに優先度が付与される場合にも優先度と無関係にメッセージデータの格納先あるいは取得先のストレージデバイスが決定されるので、優先度の高いメッセージデータのサービス提供サーバへの配送が遅延する可能性がある。
【０００９】
本発明の目的は、データを蓄積して配送するシステムにおいて良好なデータの配送を可能にする技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一態様によるデータストア装置は、複数の記憶装置と、データを受信して前記記憶装置に格納し、データ取得要求を受けて前記記憶装置からデータを取得して送信するデータ制御部と、を有し、前記データ制御部は、前記複数の記憶装置のそれぞれに格納されている前記データに関する格納状況情報に基づいて、前記データ取得要求にかかるデータを検索する対象の記憶装置を選択する。
【発明の効果】
【００１１】
本発明の一態様によれば、複数の記憶装置によるデータストア装置において、各記憶装置のデータに関する格納状況に基づいて、どの記憶装置からデータを取得するかを判断するので、良好なデータの配送を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】分散処理型メッセージキューシステムの構成例を示す図である。
【図２】統計情報レジストリ３１７に格納される統計情報を例示する図である。
【図３】メッセージデータ情報サマリレジストリ３１８に格納されるメッセージデータ情報サマリを例示する図である。
【図４】メッセージデータ情報３３２ａを例示する図である。
【図５】メッセージキュー制御部３１０ａが実行するメッセージデータ情報サマリの更新処理を示すシーケンス図である。
【図６】メッセージキュー制御部３１０ａが実行するメッセージデータ情報サマリレジストリ３１８の更新処理を示すシーケンス図である。
【図７】メッセージキュー制御部３１０ａがクライアント１００ａからメッセージデータ取得のリクエストを受信したときに実行する処理を示すシーケンス図である。
【図８】データの取得先となるストレージデバイスの決定の具体例について説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について図面を参照して説明する。
【００１４】
（１）構成
図１は、分散処理型メッセージキューシステムの構成例を示す図である。メッセージキューシステムは、クライアント１００ａ、１００ｂ、ロードバランサー２００、メッセージキューサーバ３００ａ、３００ｂ、ロードバランサー４００、およびサービス提供サーバ５００ａ、５００ｂを有している。
【００１５】
サービス提供サーバ５００ａ、５００ｂは、クライアント１００ａ、１００ｂにサービスを提供するサーバである。サービス提供サーバ５００ａとサービス提供サーバ５００ｂは同じ構成であり、負荷を分散している。サービス提供サーバ５００ａにはサービス提供プログラム５１０ａが搭載されている。サービス提供サーバ５００ｂにはサービス提供プログラム５１０ｂが搭載されている。
【００１６】
クライアント１００ａ、１００ｂは、サービス提供サーバ５００ａ、５００ｂのサービスを利用するクライアントである。クライアント１００ａとクライアント１００ｂは同じ構成である。クライアント１００ａは、クライアントプログラム１１０ａが搭載されており、それを実行することで機能する。クライアント１００ｂは、クライアントプログラム１１０ｂが搭載されており、それを実行することで機能する。
【００１７】
ロードバランサー２００は、クライアント１００ａ、１００ｂのクライアントプログラム１１０ａ、１１０ｂが送信するリクエストを複数のメッセージキューサーバ３００ａ、３００ｂに振り分ける。
【００１８】
メッセージキューサーバ３００ａ、３００ｂは、クライアント１００ａ、１００ｂからサービス提供サーバ５００ａ、５００ｂへのリクエストのメッセージデータを一時的に蓄積し、メッセージキューのキュー制御を行うサーバである。メッセージキューサーバ３００ａとメッセージキューサーバ３００ｂは同じ構成であり、負荷を分散している。
【００１９】
メッセージキューサーバ３００ａは、メッセージキューシステムを構成するサーバであり、ストレージデバイス３３０ａ、分散データストア３２０ａ、およびメッセージキュー制御部３１０ａを有している。同様に、メッセージキューサーバ３００ｂは、メッセージキューシステムを構成するサーバであり、ストレージデバイス３３０ｂ、分散データストア３２０ｂ、およびメッセージキュー制御部３１０ｂを有している。メッセージキュー制御部３１０ａ、３１０ｂは、不図示のＣＰＵでソフトウェアプログラムを実行することにより実現され、メッセージデータのキューイングを制御する。メッセージキュー制御部３１０ａ、３１０ｂの内部構成および動作については後述する。
【００２０】
分散データストア３２０ａ、３２０ｂは、メッセージキューサーバ３００ａ、３００ｂのストレージデバイス３３０ａ、３３０ｂを共有化し、相互に利用可能にする。
【００２１】
ロードバランサー４００は、メッセージキューサーバ３００ａ，３００ｂのメッセージキュー制御部３１０ａ、３１０ｂが送信するメッセージデータをサービス提供サーバ５００ａ、５００ｂに振り分ける。
【００２２】
サービス提供サーバ５００ａ、５００ｂは、クライアント１００ａ、１００ｂに対してサービスを提供するサーバである。サービス提供サーバ５００ａは、サービス提供プログラム５１０ａが搭載されており、それを実行することで機能する。サービス提供サーバ５００ｂは、サービス提供プログラム５１０ｂが搭載され、それを実行することで機能する。
【００２３】
なお、図１ではクライアント、メッセージキューサーバ、サービス提供サーバをそれぞれ２台としているが、あくまで一例の構成であり、２台以上のクライアント、メッセージキューサーバ、サービス提供サーバが存在してもよい。
【００２４】
次に、メッセージキューサーバ３００ａ、３００ｂの詳細について説明する。ここではメッセージキューサーバ３００ａを例に説明する。
【００２５】
メッセージキュー制御部３１０ａは、ＣＰＵがソフトウェアプログラムを実行し、主記憶装置および補助記憶装置といったハードウェアリソースを利用することにより機能する。メッセージキュー制御部３１０ａは、リクエスト送受信部３１１、統計情報操作部３１２、メッセージデータ情報サマリ操作部３１３、レジストリ更新部３１５、メッセージデータ情報操作部３１６、メッセージデータ情報選択部３１９を含んでいる。
【００２６】
リクエスト送受信部３１１は、複数のクライアント１００ａ、１００ｂおよびサービス提供サーバ５００ａ、５００ｂとリクエストのメッセージデータを送受信する。
【００２７】
統計情報操作部３１２は、クライアント１００ａ、１００ｂから受信したリクエストのメッセージデータの統計情報を算出し、レジストリ更新部３１５を介して統計情報レジストリ３１７へ保存する。メッセージデータの統計情報は、ストレージデバイス３３０ａ、３３０ｂへのメッセージデータの追加、およびストレージデバイス３３０ａ、３３０ｂからのメッセージデータの取得を集計した情報である。
【００２８】
図２は、統計情報レジストリ３１７に格納される統計情報を例示する図である。図２には、統計情報操作部３１２が算出するメッセージデータの統計情報の一例が示されている。統計情報には、メッセージキュー名と、そのメッセージキューに対して送信されたリクエスト種別と、単位時間内に処理されるメッセージデータのデータ数の平均値とが含まれる。クライアント１００ａ、１００ｂはキューを指定してリクエストを送信する。ここではＱｕｅｕｅ＿ＡとＱｕｅｕｅ＿Ｂという２つのメッセージキューが定義されている。メッセージキューサーバ３００ａ、３００ｂはメッセージキュー毎にメッセージデータの追加および取得を制御する。
【００２９】
例えば、図２のＱｕｅｕｅ＿Ａの部分には、クライアント１００ａ、１００ｂのクライアントプログラム１１０ａ、１１０ｂは、Ｑｕｅｕｅ＿Ａに１秒間あたりに平均１．５件のメッセージを追加し、サービス提供サーバ５００ａ、５００ｂのサービス提供プログラム５１０ａ、５１０ｂは、Ｑｕｅｕｅ＿Ａから１秒間あたりに平均２．５件のメッセージを取得していることが示されている。
【００３０】
図１に戻り、レジストリ更新部３１５は、統計情報操作部３１２の指示で統計情報レジストリ３１７に統計情報を記録する。
【００３１】
メッセージデータ情報サマリ操作部３１３は、定期的もしくは不定期に、分散データストア３２０ａを介してメッセージデータ情報サマリ３３１の取得および更新を行う。メッセージデータ情報サマリ３３１は、メッセージデータ情報サマリレジストリ３１８に格納され、そこで更新される。
【００３２】
メッセージデータがストレージデバイス３３０ａ、３３０ｂに書き込まれると、そのメッセージデータの情報が記録される。メッセージデータに優先度が付与されている。メッセージの優先度には「高」と「低」の２段階がある。
【００３３】
図３は、メッセージデータ情報サマリレジストリ３１８に格納されるメッセージデータ情報サマリを例示する図である。メッセージデータ情報サマリ３３１は、メッセージデータの情報を集約した情報である。
【００３４】
メッセージデータ情報サマリ３３１には、ストレージデバイス３３０ａ、３３０ｂ毎かつメッセージキュー毎に、ストレージデバイス３３０ａ、３３０ｂに記録されているメッセージデータのデータ数（メッセージ数）を優先度毎に計数した結果がまとめられている。このメッセージデータ情報サマリ３３１は、定期的あるいは不定期に更新される。図３に示すように、メッセージデータ情報サマリ３３１には、ストレージデバイス３３０ａ、３３０ｂに対応するメッセージデータ情報名と、情報更新時刻と、メッセージキュー名と、優先度と、メッセージ数とが含まれている。
【００３５】
図３の例では、ストレージデバイス３３０ａ、３３０ｂにそれぞれ対応するメッセージデータ情報３３２ａ、３３２ｂについてのサマリ情報が含まれている。メッセージデータ情報３３２ａの部分を見ると、ストレージデバイス３３０ａには、全部で５件のメッセージデータが格納されている。そのうち１件がメッセージキューＱｕｅｕｅ＿Ａに格納された低優先度のメッセージであり、１件がＱｕｅｕｅ＿Ｂに格納された高優先度のメッセージである。２件がメッセージキューＱｕｅｕｅ＿Ｂに格納された低優先度のメッセージであり、１件がＱｕｅｕｅ＿Ｂに格納された高優先度のメッセージである。
【００３６】
図１に戻り、メッセージデータ情報操作部３１６は、クライアント１００ａ、１００Ｂからのメッセージデータの追加（ストレージデバイスへの格納）あるいは取得（ストレージデバイスから読み出し）のリクエストに応じて、メッセージデータ情報３３２ａ、３３２ｂを更新する。
【００３７】
図４は、メッセージデータ情報３３２ａを例示する図である。図４に示すように、メッセージデータ情報３３２ａには、各メッセージについて、そのメッセージデータを一意に特定するための識別子と、そのメッセージデータが登録されたメッセージキュー名、そのメッセージデータの優先度、およびメッセージデータ自体が含まれる。図４の例は、メッセージキューＱｕｅｕｅ＿Ａには、低優度のメッセージデータ”ＡＢＣ”と高優先度のメッセージデータ”ＤＥＦ”が格納されている。Ｑｕｅｕｅ＿Ｂには、低優度のメッセージデータ”ＥＦＧ”と高優先度のメッセージデータ”ＨＩＪ”が格納されている。
【００３８】
メッセージデータ情報操作部３１６が、どのメッセージデータのメッセージデータ情報を更新操作の対象とするかは、メッセージデータ情報選択部３１９により決定される。
【００３９】
メッセージデータ情報選択部３１９は、メッセージデータのリクエスト種別に応じた選択方法により、操作対象のメッセージデータを決定する。
【００４０】
リクエストが、クライアント１００ａ、１００ｂが送信したメッセージデータをストレージデバイス３３０ａ、３３０ｂに格納するリクエストである場合、メッセージデータ情報選択部３１９は、メッセージデータを格納するストレージデバイス３３０ａ、３３０ｂ（追加先）のメッセージデータ情報３３１をラウンドロビンで決定する。
【００４１】
一方、リクエストが、サービス提供サーバ５００ａ、５００ｂが送信したメッセージデータをストレージデバイス３３０ａ、３３０ｂから取得するリクエストである場合、メッセージデータ情報選択部３１９は、統計情報レジストリ３１７に格納された統計情報と、メッセージデータ情報サマリレジストリ３１８に格納されたメッセージデータ情報サマリとに基づいて、高優先度のメッセージデータを取得できる可能性が高いストレージデバイス３３０ａ、３３０ｂ（取得先）からメッセージデータを取得すると決定する。
【００４２】
次に、メッセージキュー制御部３１０ａ、３１０ｂが、どのストレージデバイス３３０ａ、３３０ｂ（取得先）からメッセージデータを取得するかを決定する具体的な方法について詳細に説明する。メッセージキュー制御部３１０ａ、３１０ｂは、定期的あるいは不定期にメッセージデータ情報サマリを作成し、更に、定期的あるいは不定期にメッセージデータ情報サマリをメッセージデータ情報サマリレジストリ３１８に保存しており、サービス提供サーバ５００ａ、５００ｂからのリクエストにより、ストレージデバイス３３０ａ、３３０ｂのいずれかからメッセージデータを取得してサービス提供サーバ５００ａ、５００ｂへ送信する。以下ではメッセージキューサーバ３００ａの動作を例に説明する
【００４３】
（２）動作
図５は、メッセージキュー制御部３１０ａが実行するメッセージデータ情報サマリの更新処理を示すシーケンス図である。
【００４４】
メッセージデータ情報操作部３１６は、分散データストア３２０ａに対して定期的もしくは不定期的にメッセージデータ情報の集計要求を送信する（ステップＡ１）。前記メッセージデータ情報の集計要求を受信した分散データストア３２０ａはストレージデバイス３３０ａのメッセージデータ情報３３２ａにアクセスし、高優先度のメッセージデータ数と低優先度のメッセージデータ数をメッセージキューごとに集計する（ステップＡ２）。それらメッセージデータ数を集計した後、分散データストア３２０ａは現在時刻を取得し（ステップＡ３）、前記ステップＡ２の集計結果と現在時刻をメッセージデータ情報操作部３１６へ送信する（ステップＡ４）。
【００４５】
ステップＡ４にて送信された、前記ステップＡ２の集計結果と現在時刻を受信したメッセージデータ情報操作部３１６は、メッセージデータ情報３３２ａについてメッセージデータ情報サマリを作成する。（ステップＡ５）
前記ステップＡ５で前記メッセージデータ情報サマリを作成したメッセージデータ情報操作部３１６は、作成したメッセージデータ情報サマリを含んだメッセージデータ情報サマリ更新要求を分散データストア３２０ａへ送信する（ステップＡ６）。
【００４６】
前記ステップＡ６で当該メッセージデータ情報サマリ更新要求を受信した分散データストア３２０ａは、受信したメッセージデータ情報サマリ更新要求に含まれるメッセージデータ情報サマリの内容を、メッセージデータ情報サマリ３３１に反映する（ステップＡ７）。
【００４７】
前記ステップＡ１〜ステップＡ７と同様の処理を各メッセージキューサーバ３００ａ、３００ｂのメッセージキュー制御部３１０ａ、３１０ｂがそれぞれ実施することで、全てのメッセージデータのメッセージデータ情報の集計結果がメッセージデータ情報サマリ３３１に反映される。
【００４８】
図６は、メッセージキュー制御部３１０ａが実行するメッセージデータ情報サマリレジストリ３１８の更新処理を示すシーケンス図である。
【００４９】
メッセージキュー制御部３１０ａのメッセージデータ情報サマリ操作部３１３は、定期的もしくは不定期的に分散データストア３２０ａに対し、メッセージデータ情報サマリの取得要求を送信する（ステップＢ１）。
【００５０】
前記取得要求を受信した分散データストア３２０ａは、ストレージデバイス３３０ａ、３３０ｂからメッセージデータ情報サマリ３３１を取得し（ステップＢ２）、メッセージデータ情報サマリ操作部３１３へ送信する（ステップＢ３）。メッセージデータ情報サマリ操作部３１３は取得した前記メッセージデータ情報サマリ３３１を、レジストリ更新部３１５にメッセージデータ情報サマリ３３１の保存を要求する（ステップＢ４）。レジストリ更新部３１５は、メッセージデータ情報サマリ３３１をメッセージデータ情報サマリレジストリ３１８に保存する（ステップＢ５）。
【００５１】
図７は、メッセージキュー制御部３１０ａがクライアント１００ａからメッセージデータ取得のリクエストを受信したときに実行する処理を示すシーケンス図である。
【００５２】
まず、クライアント１００ａは、メッセージキュー制御部３１０ａのリクエスト送受信部３１１に対して、メッセージデータ取得のリクエスト（メッセージデータ取得要求）を送信する（ステップＣ１）。前記メッセージデータ取得要求には、そのリクエストでメッセージデータを取得するメッセージキューが指定される。その際、クライアント１００ａは、指定するメッセージキューのメッセージキュー名称をリクエストに記載する。
【００５３】
図４に例示したように、メッセージキュー名称で指定される１つのメッセージキューには複数のメッセージデータが登録されうる。すわなち、メッセージデータ取得要求は、例えば、指定したメッセージキュー名称「Ｑｕｅｕｅ＿Ａ」のメッセージキューに属するいずれかのメッセージデータを要求するものである。メッセージキューに高優先のメッセージデータと低優先のメッセージデータが登録されていれば、高優先のメッセージデータが優先的に取得されることとなる。メッセージデータ取得要求には、更に、メッセージ取得数など様々な情報を含んで良いのはもちろんである。
【００５４】
前記メッセージデータ取得要求を受信したリクエスト送受信部３１１は、メッセージデータ情報操作部３１６に、受信したメッセージデータ取得要求を送信する（ステップＣ２）。
【００５５】
メッセージデータ情報操作部３１６は、メッセージデータの取得先となるストレージデバイス３３０ａ、３３０ｂを決定するために、メッセージデータ情報選択部３１９に取得先決定要求を送信する（ステップＣ３）。
【００５６】
取得先決定要求を受信したメッセージデータ情報選択部３１９は、統計情報レジストリ３１７、メッセージデータ情報サマリレジストリ３１８、およびメッセージキュー設定レジストリ３１４にアクセスし、平均取得メッセージデータ数、メッセージデータ情報サマリ、メッセージキュー制御主体数を取得する（ステップＣ４〜Ｃ６）。
【００５７】
なお、平均取得メッセージデータ数は、図２に例示した統計情報における、リクエスト種別が取得である平均処理メッセージデータ数である。
【００５８】
また、メッセージキュー設定レジストリ３１４には、メッセージキューに関する各種設定情報が予め登録されている。設定情報のひとつとして、メッセージキュー制御主体数が登録されている。メッセージキュー制御主体数は、メッセージキューを制御する主体の個数を示す情報である。メッセージキュー制御の主体となるのは、メッセージキュー制御部３１０ａ、３１０ｂであり、言い換えれば、メッセージキューサーバ３００ａ、３００ｂにてＣＰＵにより実行されるメッセージキュー制御プログラムと言っても良い。
【００５９】
次に、メッセージデータ情報選択部３１９は、取得した統計情報、メッセージデータ情報サマリ、およびメッセージキュー制御主体数に加えて更にＯＳ標準の機能で取得される現在時刻を用いて、現在時刻において、高優先のメッセージデータを取得できる可能性が最も高いストレージデバイスを予測する（ステップＣ７）。ここでは一例として、予測された当該ストレージデバイス３３０ａ、３３０ｂに対応するメッセージデータ情報３３２ａ、３３２ｂを、優先すべきメッセージデータ情報３３２ａ、３３２ｂとして出力する。
【００６０】
具体的には、まず、メッセージデータ情報選択部３１９は、式（１）を適用し、メッセージデータ情報サマリの情報更新時刻から現在時刻までに取得されたであろうメッセージデータのデータ数（取得メッセージデータ数）を求める。
【００６１】
取得メッセージデータ数＝（現在時刻−情報取得時刻）×平均取得メッセージデータ数×メッセージキュー制御主体数・・・（１）
取得メッセージデータ数が予測できると、当該取得メッセージデータ数と、メッセージデータ情報サマリのメッセージ数とに基づいて、現在時刻において各ストレージデバイス３３０ａ、３３０ｂに格納されているメッセージデータの個数（現在時刻メッセージデータ数）を予測することができる。そして、当該現在時刻メッセージ数から、高優先のメッセージデータを取得できる可能性が最も高いストレージデバイス３３０ａ、３３０ｂを予測することができる。予測方法としては様々なポリシによる様々な方法が採用可能である。
【００６２】
ここで、情報取得時刻とは、図５のステップＡ３で取得されるメッセージデータ情報サマリの更新時刻である。平均取得メッセージデータ数とは、単位時間当たりにストレージデバイス３３０ａ、３３０ｂから取得されたメッセージデータの個数の平均値である。平均取得メッセージデータ数は、メッセージ取得実績を基に平均値を算出すればよく、例えば、ストレージデータ情報毎に、あるいはメッセージキュー制御部３１０ａ、３１０ｂ毎に、あるいはメッセージキューシステム全体について、のいずれかの単位で算出すればよい。
【００６３】
なお、ここでは一例として、メッセージデータの取得先となるストレージデバイス３３０ａ、３３０ｂを決定するのに、時刻情報を用いたが、本発明がこれに限定されることは無い。他の例として、時刻情報を用いず、取得した統計情報、メッセージデータ情報サマリ、およびメッセージキュー制御主体数に基づいて判断してもよい。
【００６４】
また、ここでは一例として、情報更新時刻から現在時刻までに取得されたであろうメッセージデータのデータ数を用いて、メッセージデータの取得先となるストレージデバイス３３０ａ、３３０ｂを決定したが、本発明がこれに限定されることはない。他の例として、情報更新時刻から現在時刻までに取得されるメッセージデータだけでなく、さらに、追加されるメッセージデータをも考慮した演算により、メッセージデータの取得先となるストレージデバイス３３０ａ、３３０ｂを決定してもよい。その場合、統計情報に含まれる、リクエスト種別が追加である平均処理メッセージデータ数（平均追加メッセージデータ数）を、現在時刻におけるメッセージデータ数を予想するのに用いればよい。
【００６５】
高優先のメッセージデータを取得できる可能性が最も高いストレージデバイスを予測する手法について、図８を用いて具体的に説明する。高優先のメッセージデータを取得できる可能性が最も高いストレージデバイスを予測することは、すなわち、メッセージデータの取得先とするストレージデバイスを決定することである。
【００６６】
図８は、データの取得先となるストレージデバイスの決定の具体例について説明するための図である。上述したように、メッセージデータ情報サマリレジストリ３１８には、ある時刻に取得されたメッセージデータ情報サマリが格納されている。図８には、具体例の説明に用いるメッセージデータ情報サマリが示されている。ここではメッセージキューＱｕｅｕｅ＿Ａを例に説明を行うので、図８にはメッセージキューＱｕｅｕｅ＿Ａに関する情報だけを示している。さらに、具体例の説明では、現在時刻が１０：２０：３０．７５であり、平均取得メッセージデータ数が１０ｍｓｇ／ｓｅｃであり、メッセージキュー制御主体数が２台であるとする。
【００６７】
まず、メッセージキュー制御部３１０ａがサービス提供サーバ５００ａからメッセージキューＱｕｅｕｅ＿Ａを対象としたメッセージデータ取得要求を受信したと仮定する。
【００６８】
メッセージキュー制御部３１０ａは、図８に示したメッセージデータ情報サマリに上述した式（１）を適用し、メッセージデータ情報サマリの情報更新時刻から現在時刻までに既に取得されたであろうメッセージデータのデータ数を予測する。ストレージデバイス３３０ａに対応するメッセージデータ情報３３２ａについて、既に取得されたであろうメッセージデータのデータ数は５件（０．２５[sec]×１０[msg/sec]×２[台]）となる。ここでは高優先度のメッセージデータを優先的に取得するものと考えるので、ストレージデバイス３３０ａに保持されている高優先度のメッセージデータ数は最大（最多）で１２件、最小（最少）で７件であり、低優先度のメッセージデータは２件であると予測される。
【００６９】
同様に、ストレージデバイス３３０ｂに対応するメッセージデータ情報３３２ｂについて、既に取得されたであろうメッセージデータのデータ数は１５件（０．７５[sec]×１０[msg/sec]×２[台]）となる。よって、ストレージデバイス３３０ｂに保持されている高優先度のメッセージデータ数が最大（最多）１６件、最小（最少）で１件であり、低優先度のメッセージデータ数は５件であると予測される。
【００７０】
次に、メッセージキュー制御部３１０ａは、高優先のメッセージデータを取得できる可能性についてストレージデバイス３３０ａ、３３０ｂ間の相対的な順位を求める。メッセージキュー制御部３１０ａは、これに、式（１）により予測したメッセージデータのデータ数を用いる。具体的な順位付けの方法は任意であるが、例えば、現在時刻において格納されている高優先度のメッセージデータのデータ数の最小値（最小数）が大きい順に順位付けしてもよい。あるいは、現在時刻において格納されている高優先度のメッセージデータのデータ数の最大値（最多数）と最小値（最小数）の平均値が大きい順に順位付けしてもよい。
【００７１】
現在時刻において格納されている高優先度のメッセージデータのデータ数の最小値（最小数）が大きい順に順位付けした場合、図８の例では、ストレージデバイス３３０ａが一位となり、ストレージデバイス３３０ｂが二位となる。そのため、メッセージキュー制御部３１０ａは、ストレージデバイス３３０ａをメッセージデータの取得先と決定し、その対応するメッセージデータ情報３３２ａをメッセージデータ情報操作部３１６に通知する（ステップＣ８）。
【００７２】
次に、メッセージデータ情報操作部３１６は、通知された取得先のメッセージデータ情報３３２ａおよびそれに対応するストレージデバイス３３０ａを操作対象として、メッセージデータ取得要求を分散データストア３２０ａへ送信する。（ステップＣ９）。メッセージデータ取得要求を受信した分散データストア３２０ａは、メッセージデータ情報３３２ａからメッセージキュー名称Ｑｕｅｕｅ＿Ａに該当するメッセージデータのうち優先度の高いメッセージデータを検索し、該当するメッセージデータを含むメッセージデータ情報をストレージデバイス３３０ａから取得する（ステップＣ１０）。
【００７３】
サービス提供サーバ５００ａが要求したデータ数のメッセージデータがストレージデバイス３３０ａに格納されていなかった場合、分散データストア３２０ａは、次の順位のストレージデバイス３３０ｂのメッセージデータ情報３３２ｂからメッセージキュー名称Ｑｕｅｕｅ＿Ａに該当するメッセージデータのうち優先度の高いメッセージデータを検索し、該当するメッセージデータを含むメッセージデータ情報をストレージデバイス３３０ｂから取得する。
【００７４】
そして、分散データストア３２０ａは、取得したメッセージデータ情報をメッセージデータ情報操作部３１６へ送信する（ステップＣ１１）。前記メッセージデータ情報を受信したメッセージデータ情報操作部３１６は、識別子などの不要な制御情報を削除し（ステップＣ１２）、リクエスト送受信部３１１へメッセージデータを送信する（ステップＣ１３）。メッセージデータを受信したリクエスト送受信部３１１は前記メッセージデータをサービス提供サーバ５００ａへ送信する（ステップＣ１４）。
【００７５】
メッセージデータ取得要求を受信したメッセージキュー制御部３１０ａ、３１０ｂがそれぞれ上記処理を実行することで、優先度の高いメッセージデータの配送の遅延を短縮することができる。
【００７６】
従来はラウンドロビンによりリクエストが複数のストレージデバイスに分散されていたところ、本実施形態では、上述した処理方式を全てのメッセージキュー制御部３１０ａ、３１０ｂに適用するので、それだけでは特定のストレージデバイス（特定のメッセージデータ情報）にリクエストが集中することも考えられる。しかしながら、本実施形態では、各メッセージキュー制御部３１０ａ、３１０ｂｇメッセージデータ情報サマリを取得する時刻が異なる。そのため、同じストレージデバイスのメッセージデータ情報であっても各メッセージキュー制御部３１０ａ、３１０ｂの間で異なる情報となる。さらに、本実施形態の式（１）では、取得されるメッセージデータのみを考慮し、追加されるデータは考慮せずに、ストレージデバイス３３０ａ、３３０ｂの順位を決定している。本実施形態の手法では、メッセージデータ情報サマリの取得時刻が古いほど、高優先度メッセージデータを取得できる確率が小さくなる。これにおり、特定のストレージデバイスにリクエストが集中するのを抑制することが可能となっている。すなわち、情報取得時刻のばらつきを利用してリクエストの集中を抑制している。
【００７７】
以上説明した本実施形態は以下のように整理することができる。
【００７８】
本実施形態によるデータストア装置（メッセージキューサーバ３００ａ、３００ｂ）は、複数の記憶装置（ストレージデバイス３３０ａ、３３０ｂ）と、データを受信して記憶装置に格納し、データ取得要求を受けて記憶装置からデータを取得して送信するデータ制御部（メッセージキュー制御部３１０ａ、３１０ｂ）と、を有している。データ制御部は、複数の記憶装置のそれぞれに格納されているデータに関する格納状況情報（メッセージデータ情報サマリ）に基づいて、データ取得要求にかかるデータを検索する対象の記憶装置を選択する。複数の記憶装置によるデータストア装置において、各記憶装置のデータに関する格納状況に基づいて、どの記憶装置からデータを取得するかを判断するので、良好なデータの配送を行うことができる。
【００７９】
また、そのデータにはそれぞれ優先度が付与され、格納状況情報は、複数の記憶装置のそれぞれに格納されている優先度毎のデータのデータ数に関する優先度毎格納状況情報を含み、データ制御部は、優先度の高いデータを取得できる可能性の高い記憶装置を選択する。優先度毎にどれだけデータが格納されているかを考慮し、優先度の高いデータを取得できる記憶装置を選択するので、優先度を考慮して良好なデータ配信を行うことができる。
【００８０】
また、データ制御部が複数あり、複数のデータ制御部は、複数の記憶装置にデータを格納し、複数の記憶装置からデータを取得することが可能であり、複数のデータ制御部がそれぞれに格納状況情報を保持し、複数のデータ制御部は、データ取得要求を受けると、それぞれの保持する格納状況情報を用いて、データを検索する記憶装置を選択する。複数のデータ制御部が複数の記憶装置を共有する構成において、格納状況情報に基づく適切な判断で良好なデータの配信を実現することができる。
【００８１】
また、格状況情報は、所定の時刻に取得された情報を含み、複数のデータ制御部は、同じ記憶装置に格納されているデータに関し、互いに依存しない時刻の格納状況情報を用いる。各データ制御部が異なる時刻の格納状況情報を用いることになるので、特定の記憶装置にデータの検索が集中するのを緩和することができる。
【００８２】
また、格納状況情報には、優先度毎格納状況情報が取得された時刻に関する時刻情報が含まれており、データ制御部は、優先度毎格納状況情報とその優先度毎格納状況情報が取得された時刻に関する時刻情報とに基づいて、データを検索する記憶装置を選択する。時刻の情報を含む優先度とデータ数との関係に基づいて、データを検索する記憶装置を選択するので、時間の経過も考慮して良好なデータの配送を行うことができる。
【００８３】
また、データ制御部は、時刻情報に基づいて、現在時刻の優先度とデータ数の関係を予測し、予測結果に基づいて、データを検索する記憶装置を選択する。現在時刻のデータの状態を予測してデータを検索する記憶装置を選択するので、高い精度で良好なデータの配信を行うことができる。
【００８４】
また、データ制御部は、現在時刻と時刻情報が示す時刻との差分と、単位時間に取得されるデータ数の平均値との積を、時刻情報が示す時刻における優先度毎のデータ数から減算して、現在時刻の優先度とデータ数の関係を予測する。現在時刻と時刻情報が示す時刻との差分と、単位時間に取得されるデータ数の平均値との積を用いることにより、現在時刻の優先度とデータ数の関係を予測できるので、現在時刻の状態を良好に予測し、高い精度で良好なデータの配信を行うことができる。
【００８５】
また、単位時間に取得されるデータ数の平均値は、１つのデータ制御部の単位時間に記憶装置から取得するデータ数の平均値と、データ制御部の個数との積である。単位時間に取得されるデータ数の平均値を算出し、それを予測に用いるので、より精度の高いデータを配信する。
【００８６】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【００８７】
１００ａ…クライアント、１００ｂ…クライアント、１１０ａ…クライアントプログラム、１１０ｂ…クライアントプログラム、２００…ロードバランサー、３００ａ…メッセージキューサーバ、３００ｂ…メッセージキューサーバ、３１０ａ…メッセージキュー制御部、３１０ｂ…メッセージキュー制御部、３１１…リクエスト送受信部、３１２…統計情報操作部、３１３…メッセージデータ情報サマリ操作部、３１４…メッセージキュー設定レジストリ、３１５…レジストリ更新部、３１６…メッセージデータ情報操作部、３１７…統計情報レジストリ、３１８…メッセージデータ情報サマリレジストリ、３１９…メッセージデータ情報選択部、３２０ａ…分散データストア、３２０ｂ…分散データストア、３３０ａ…ストレージデバイス、３３０ｂ…ストレージデバイス、３３１…メッセージデータ情報サマリ、３３２ａ…メッセージデータ情報、３３２ｂ…メッセージデータ情報、４００…ロードバランサー、５００ａ…サービス提供サーバ、５００ｂ…サービス提供サーバ、５１０ａ…サービス提供プログラム、５１０ｂ…サービス提供プログラム
【図１】
2018032115.tif 000003
【図２】
2018032115.tif 000004
【図３】
2018032115.tif 000005
【図４】
2018032115.tif 000006
【図５】
2018032115.tif 000007
【図６】
2018032115.tif 000008
【図７】
2018032115.tif 000009
【図８】
2018032115.tif 000010