(57)【要約】【課題】効率良くデータを検索する。【解決手段】複数のストレージサーバに接続されたプロキシサーバと、複数のインデックスサーバとを備えるストレージシステムであって、インデックスサーバは、ストレージサーバに記憶されるデータの分類を示す分類情報に対応付けて、データを検索するための検索情報と、データをストレージサーバから読出すためのデータ名とを対応付けたインデックス情報を記憶し、プロキシサーバは、ストレージサーバに記憶させるデータに分類情報を対応付けてストレージサーバに記憶させ、分類情報に基づいて、複数のインデックスサーバのうち、データを検索するためのインデックス情報を記憶させるインデックスサーバを判定する。【選択図】図１
2015153034.tif 000002
【特許請求の範囲】
【請求項１】
データが記憶される複数のストレージサーバに接続されたプロキシサーバと、当該プロキシサーバに接続された複数のインデックスサーバとを備えるストレージシステムであって、
前記インデックスサーバは、
前記ストレージサーバに記憶されるデータの分類を示す分類情報に対応付けて、当該データを検索するための検索情報と、当該データを前記ストレージサーバから読出すためのデータ名とを対応付けたインデックス情報が記憶されるインデックス情報記憶部と、
前記プロキシサーバから送信されるインデックス生成要求に応じて前記インデックス情報を生成し、生成したインデックス情報を前記インデックス情報記憶部に記憶させるインデックス格納部と、を備え、
前記プロキシサーバは、
データの書込要求を受信する書込要求受信部と、
前記書込要求受信部が受信した前記データに、当該データに対応する前記分類情報を対応付け、分類情報を対応付けた前記データを、前記複数のストレージサーバのうちいずれかのストレージサーバに記憶させるデータ分散配置部と、
前記書込要求受信部が受信した前記データに対応付ける前記分類情報に基づいて、複数の前記インデックスサーバのうち、当該データを検索するためのインデックス情報を記憶させるインデックスサーバを判定し、判定した当該インデックスサーバに、前記書込要求受信部が受信した前記データのインデックス生成要求を送信するインデックス分散配置部と、
を備えることを特徴とするストレージシステム。
【請求項２】
前記プロキシサーバは、
前記ストレージサーバに記憶されたデータを検索する検索条件が含まれる検索要求を受信する検索要求受信部と、
前記検索要求受信部が前記検索要求を受信すると、前記分類情報に基づいて、前記複数のインデックスサーバのうち、検索要求を送信するインデックスサーバを判定し、判定したインデックスサーバに検索要求を送信し、当該インデックスサーバから送信される検索結果を受信する検索処理部と、
を備え、
前記インデックスサーバは、
前記プロキシサーバから送信される前記検索要求に含まれる検索条件と、前記インデックス情報記憶部に記憶されている前記インデックス情報に含まれる検索情報とを比較して、前記検索要求に対応する前記データ名を検索結果として前記プロキシサーバに送信するインデックス検索部と、
を備えることを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記プロキシサーバは、
前記検索処理部が受信した前記検索結果に基づいて、前記複数のストレージサーバのうち、いずれかのストレージサーバから、前記検索結果に応じた前記データを読出すデータ読出部
を備えることを特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記分類情報は、前記データの書込要求の送信元であるユーザ端末のユーザ名である
ことを特徴とする請求項１から請求項３までのいずれか１項に記載のストレージシステム。
【請求項５】
前記検索情報は、前記データの属性情報に含まれる文字列である
ことを特徴とする請求項１から請求項４までのいずれか１項に記載のストレージシステム。
【請求項６】
前記インデックス分散配置部は、前記分類情報に基づいて算出するハッシュ値に基づいて、前記複数のインデックスサーバのうち、当該分類情報に対応するインデックス情報を記憶させるインデックスサーバを判定する
ことを特徴とする請求項１から請求項５までのいずれか１項に記載のストレージシステム。
【請求項７】
データが記憶される複数のストレージサーバに接続されたプロキシサーバと、当該プロキシサーバに接続され、前記ストレージサーバに記憶されるデータの分類を示す分類情報に対応付けて、当該データを検索するための検索情報と、当該データを前記ストレージサーバから読出すためのデータ名とを対応付けたインデックス情報が記憶されるインデックス情報記憶部を備えた複数のインデックスサーバとを備えるストレージシステムのインデクシング方法であって、
前記プロキシサーバが、
データの書込要求を受信するステップと、
受信した前記データに、当該データに対応する前記分類情報を対応付け、分類情報を対応付けた前記データを、前記複数のストレージサーバのうちいずれかのストレージサーバに記憶させるステップと、
受信した前記データに対応付ける前記分類情報に基づいて、複数の前記インデックスサーバのうち、当該データを検索するためのインデックス情報を記憶させるインデックスサーバを判定し、判定した当該インデックスサーバに、受信した前記データのインデックス生成要求を送信するステップと、
前記インデックスサーバが、
前記プロキシサーバから送信されるインデックス生成要求に応じて前記インデックス情報を生成し、生成したインデックス情報を前記インデックス情報記憶部に記憶させるステップと、
を備えることを特徴とするインデクシング方法。
【請求項８】
データが記憶される複数のストレージサーバに接続されたプロキシサーバと、当該プロキシサーバに接続され、前記ストレージサーバに記憶されるデータの分類を示す分類情報に対応付けて、当該データを検索するための検索情報と、当該データを前記ストレージサーバから読出すためのデータ名とを対応付けたインデックス情報が記憶されるインデックス情報記憶部を備えた複数のインデックスサーバとを備えるストレージシステムのコンピュータに、
前記プロキシサーバが、
データの書込要求を受信するステップと、
受信した前記データに、当該データに対応する前記分類情報を対応付け、分類情報を対応付けた前記データを、前記複数のストレージサーバのうちいずれかのストレージサーバに記憶させるステップと、
受信した前記データに対応付ける前記分類情報に基づいて、複数の前記インデックスサーバのうち、当該データを検索するためのインデックス情報を記憶させるインデックスサーバを判定し、判定した当該インデックスサーバに、受信した前記データのインデックス生成要求を送信するステップと、
前記インデックスサーバが、
前記プロキシサーバから送信されるインデックス生成要求に応じて前記インデックス情報を生成し、生成したインデックス情報を前記インデックス情報記憶部に記憶させるステップと、
を実行させるインデクシングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、インデクシング方法、インデクシングプログラムに関する。
【背景技術】
【０００２】
ネットワークを介してユーザ端末と通信し、ストレージサーバにデータを読み書きさせるストレージシステムが提供されている。このようなストレージシステムが提供するストレージサービス（例えば、クラウドストレージサービス、オンラインストレージサービスなどともよばれる）によれば、ユーザ端末は、自端末には記憶させておけないような大容量のデータをストレージサーバに記憶させておくことができるとともに、ネットワークに接続する環境があればどこからでもデータを読み書きすることが可能である。このようなストレージシステムに、複数のユーザのユーザ端末から送信される複数のデータを記憶させておく場合、データ容量が大きくなれば１台のストレージサーバに全てのデータを記憶できない。このため、ストレージシステムに複数のストレージサーバを用意しておき、ユーザ端末と複数のストレージサーバとの間のプロキシサーバが、ユーザ端末からのデータの書込要求や読出要求を複数のストレージサーバに分散する。
ところで、大容量のテキストデータから、任意の文字列である検索条件に対応するデータを素早く検索するためのインデックス情報を作成しておき、インデックス情報に基づいてデータ検索を行う方法が存在する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１１−５２３１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ストレージシステムにおいて複数のストレージサーバにデータを分散して記憶させる場合、プロキシサーバはユーザ端末からの読出要求に応じたデータが記憶されているストレージサーバを、複数のストレージサーバのうちから検索する必要がある。このような検索を効率良く行うために、上述したようなインデックス情報を生成しておくことが考えられる。ただし、複数のストレージサーバに記憶させるデータの容量が大きくなればなるほど、インデックス情報の容量も大きくなり、検索の負荷が増大することになる。そこで、このような大容量のデータを記憶するストレージシステムにおいて、所望のデータを効率良く検索することが望ましい。
【０００５】
本発明は、このような状況に鑑みてなされたもので、効率良くデータを検索するストレージシステム、インデクシング方法、インデクシングプログラムを提供する。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明の一態様は、データが記憶される複数のストレージサーバに接続されたプロキシサーバと、プロキシサーバに接続された複数のインデックスサーバとを備えるストレージシステムであって、インデックスサーバは、ストレージサーバに記憶されるデータの分類を示す分類情報に対応付けて、データを検索するための検索情報と、データをストレージサーバから読出すためのデータ名とを対応付けたインデックス情報が記憶されるインデックス情報記憶部と、プロキシサーバから送信されるインデックス生成要求に応じてインデックス情報を生成し、生成したインデックス情報をインデックス情報記憶部に記憶させるインデックス格納部と、を備え、プロキシサーバは、データの書込要求を受信する書込要求受信部と、書込要求受信部が受信したデータに、データに対応する分類情報を対応付け、分類情報を対応付けたデータを、複数のストレージサーバのうちいずれかのストレージサーバに記憶させるデータ分散配置部と、書込要求受信部が受信したデータに対応付ける分類情報に基づいて、複数のインデックスサーバのうち、データを検索するためのインデックス情報を記憶させるインデックスサーバを判定し、判定したインデックスサーバに、書込要求受信部が受信したデータのインデックス生成要求を送信するインデックス分散配置部と、を備えることを特徴とするストレージシステムである。
【０００７】
また、本発明の一態様は、プロキシサーバが、ストレージサーバに記憶されたデータを検索する検索条件が含まれる検索要求を受信する検索要求受信部と、検索要求受信部が検索要求を受信すると、分類情報に基づいて、複数のインデックスサーバのうち、検索要求を送信するインデックスサーバを判定し、判定したインデックスサーバに検索要求を送信し、インデックスサーバから送信される検索結果を受信する検索処理部と、を備え、インデックスサーバは、プロキシサーバから送信される検索要求に含まれる検索条件と、インデックス情報記憶部に記憶されているインデックス情報に含まれる検索情報とを比較して、検索要求に対応するデータ名を検索結果としてプロキシサーバに送信するインデックス検索部と、を備えることを特徴とする請求項１に記載のストレージシステムである。
【０００８】
また、本発明の一態様は、プロキシサーバが、検索処理部が受信した検索結果に基づいて、複数のストレージサーバのうち、いずれかのストレージサーバから、検索結果に応じたデータを読出すデータ読出部を備えることを特徴とする。
【０００９】
また、本発明の一態様は、分類情報が、データの書込要求の送信元であるユーザ端末のユーザ名であることを特徴とする。
【００１０】
また、本発明の一態様は、検索情報が、データの属性情報に含まれる文字列であることを特徴とする。
【００１１】
また、本発明の一態様は、インデックス分散配置部が、分類情報に基づいて算出するハッシュ値に基づいて、複数のインデックスサーバのうち、分類情報に対応するインデックス情報を記憶させるインデックスサーバを判定することを特徴とする。
【００１２】
また、本発明の一態様は、データが記憶される複数のストレージサーバに接続されたプロキシサーバと、プロキシサーバに接続され、ストレージサーバに記憶されるデータの分類を示す分類情報に対応付けて、データを検索するための検索情報と、データをストレージサーバから読出すためのデータ名とを対応付けたインデックス情報が記憶されるインデックス情報記憶部を備えた複数のインデックスサーバとを備えるストレージシステムのインデクシング方法であって、プロキシサーバが、データの書込要求を受信するステップと、受信したデータに、データに対応する分類情報を対応付け、分類情報を対応付けたデータを、複数のストレージサーバのうちいずれかのストレージサーバに記憶させるステップと、受信したデータに対応付ける分類情報に基づいて、複数のインデックスサーバのうち、データを検索するためのインデックス情報を記憶させるインデックスサーバを判定し、判定したインデックスサーバに、受信したデータのインデックス生成要求を送信するステップと、インデックスサーバが、プロキシサーバから送信されるインデックス生成要求に応じてインデックス情報を生成し、生成したインデックス情報をインデックス情報記憶部に記憶させるステップと、を備えることを特徴とするインデクシング方法である。
【００１３】
また、本発明の一態様は、データが記憶される複数のストレージサーバに接続されたプロキシサーバと、プロキシサーバに接続され、ストレージサーバに記憶されるデータの分類を示す分類情報に対応付けて、データを検索するための検索情報と、データをストレージサーバから読出すためのデータ名とを対応付けたインデックス情報が記憶されるインデックス情報記憶部を備えた複数のインデックスサーバとを備えるストレージシステムのコンピュータに、プロキシサーバが、データの書込要求を受信するステップと、受信したデータに、データに対応する分類情報を対応付け、分類情報を対応付けたデータを、複数のストレージサーバのうちいずれかのストレージサーバに記憶させるステップと、受信したデータに対応付ける分類情報に基づいて、複数のインデックスサーバのうち、データを検索するためのインデックス情報を記憶させるインデックスサーバを判定し、判定したインデックスサーバに、受信したデータのインデックス生成要求を送信するステップと、インデックスサーバが、プロキシサーバから送信されるインデックス生成要求に応じてインデックス情報を生成し、生成したインデックス情報をインデックス情報記憶部に記憶させるステップと、を実行させるインデクシングプログラムである。
【発明の効果】
【００１４】
以上説明したように、本発明によれば、複数のストレージサーバに接続されたプロキシサーバと、複数のインデックスサーバとを備えるストレージシステムであって、インデックスサーバは、ストレージサーバに記憶されるデータの分類を示す分類情報に対応付けて、データを検索するための検索情報と、データをストレージサーバから読出すためのデータ名とを対応付けたインデックス情報を記憶し、プロキシサーバは、ストレージサーバに記憶させるデータに分類情報を対応付けてストレージサーバに記憶させ、分類情報に基づいて、複数のインデックスサーバのうち、データを検索するためのインデックス情報を記憶させるインデックスサーバを判定するようにしたので、効率良くデータを検索することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態によるストレージシステムの構成を示すブロック図である。
【図２】本発明の一実施形態による初期画面の例を示す図である。
【図３】本発明の一実施形態によるアップロードファイル選択画面の例を示す図である。
【図４】本発明の一実施形態によるメタデータ入力画面の例を示す図である。
【図５】本発明の一実施形態による初期画面に検索条件が入力された例を示す図である。
【図６】本発明の一実施形態による検索結果画面の例を示す図である。
【図７】本発明の一実施形態によるデータ表示画面の例を示す図である。
【図８】本発明の一実施形態によるインデックス情報のデータ例を示す図である。
【図９】本発明の一実施形態によるストレージシステムによるデータ書込処理の動作例を示す図である。
【図１０】本発明の一実施形態によるデータ検索処理の動作例を示す図である。
【図１１】本発明の一実施形態によるメタデータ等を表示する検索結果画面の例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態について、図面を参照して説明する。
図１は、本実施形態によるストレージシステム１の構成を示すブロック図である。ストレージシステム１は、ユーザ端末１０と、アプリケーションサーバ２０と、複数のストレージサーバ３０（ストレージサーバ３０−１、ストレージサーバ３０−２、ストレージサーバ３０−３、・・・）と、複数のインデックスサーバ４０（インデックスサーバ４０−１、インデックスサーバ４０−２、インデックスサーバ４０−３、・・・）と、プロキシサーバ５０とのコンピュータ装置を備えており、これらのコンピュータ装置はネットワークを介して接続されている。
【００１７】
複数のストレージサーバ３０−Ｎ（Ｎは正の整数）はプロキシサーバ５０に接続されており、同様の構成であるので、特に区別しない場合には「−Ｎ」を省略してストレージサーバ３０として説明する。同様に、複数のインデックスサーバ４０−Ｎ（Ｎは正の整数）はプロキシサーバ５０に接続されており、同様の構成であるので、特に区別しない場合には「−Ｎ」を省略してインデックスサーバ４０として説明する。ストレージシステム１は、ネットワークを介してユーザ端末１０にデータを読み書きさせるストレージサービスを提供する。
【００１８】
ユーザ端末１０は、ストレージシステム１によって管理されるデータを読み書きするコンピュータ装置である。例えば、ユーザ端末１０には、ＰＣ（personal computer）、タブレットＰＣ、スマートフォン等のコンピュータ装置が適用できる。ここでは、１台のユーザ端末１０を示して説明するが、複数のユーザ端末１０がアプリケーションサーバ２０に接続されていてよく、複数のユーザ端末１０は、それぞれ異なるユーザに利用されるものであってよい。
【００１９】
アプリケーションサーバ２０は、ストレージシステム１によって管理されるストレージサービスのＵＩ（user interface）を提供するコンピュータ装置である。アプリケーションサーバ２０は、例えば、ウェブサーバの機能を備えており、ストレージサービスを利用するためのアプリケーション画面をユーザ端末１０に送信する。アプリケーションサーバ２０は、例えば、ストレージシステム１を利用するユーザのユーザ名とパスワード等のアカウント情報を予め記憶しておく。アプリケーションサーバ２０は、ユーザ端末１０から送信されるユーザ名とパスワードとの組み合わせに一致するアカウント情報を予め記憶している場合にはログイン成功と判定し、一致するアカウント情報を予め記憶している場合にログイン失敗と判定するログイン認証処理を行う。
【００２０】
ここで、図面を参照して、アプリケーションサーバ２０がユーザ端末１０に送信するアプリケーション画面の例を説明する。
図２は、アプリケーションサーバ２０がユーザ端末１０に送信する初期画面の例を示す図である。アプリケーションサーバ２０は、ユーザのログイン認証処理によりログイン成功と判定すると、このような初期画面をユーザ端末１０に送信する。初期画面には、アップロードボタンｃ１と、検索条件入力テキストボックスｃ２と、検索実行ボタンｃ３とを表示する。アップロードボタンｃ１は、ストレージサーバ３０に対するデータの書込みを行うための操作子である。検索条件入力テキストボックスｃ２は、ストレージシステム１に記憶されたデータから、所望のデータを読出すための検索条件を入力するための操作子である。検索実行ボタンｃ３は、検索条件入力テキストボックスｃ２に入力された検索条件に基づいてプロキシサーバ５０にデータの検索要求を送信するための操作子である。
【００２１】
図３は、アプリケーションサーバ２０がユーザ端末１０に送信するアップロードファイル選択画面の例を示す図である。初期画面においてアップロードボタンｃ１が押下されると、アプリケーションサーバ２０は、アップロードファイル選択画面をユーザ端末１０に送信する。アップロードファイル選択画面には、アップロードファイル名入力ボックスｃ４と、参照ボタンｃ５と、アップロードボタンｃ６とを表示する。アップロードファイル名入力ボックスｃ４は、ストレージサーバ３０に記憶させるデータ（ファイル）のデータ名を入力するための操作子である。この例では、データ名として「動画Ｍ１．ｍｐ４」との文字列が入力されている例を示すが、アップロードファイル名入力ボックスｃ４に入力されるデータ名は、データのフルパスを示す文字列であってよい。参照ボタンｃ５は、アップロードファイル名入力ボックスｃ４に入力するデータ名を選択するための操作子である。例えば、参照ボタンｃ５を押下すると、ユーザ端末１０に記憶されているデータ（ファイル）から任意のデータを選択するためのデータ選択ポップアップ画面を表示し、データ選択ポップアップ画面においていずれかのデータが選択されると、選択されたデータのデータ名がアップロードファイル名入力ボックスｃ４に入力される。アップロードボタンｃ６は、アップロードファイル名入力ボックスｃ４に入力されたデータ名のデータをストレージサーバ３０に送信するための操作子である。
【００２２】
図４は、アプリケーションサーバ２０がユーザ端末１０に送信するメタデータ入力画面の例を示す図である。アップロードファイル選択画面においてアップロードボタンｃ６が押下されると、アプリケーションサーバ２０は、メタデータ入力画面をユーザ端末１０に送信する。メタデータ入力画面には、タイトルｃ７と、概要ｃ８と、ジャンルｃ９と、登録ボタンｃ１０とを表示する。タイトルｃ７は、アップロードファイル選択画面において選択されたデータのタイトルを入力する操作子である。概要ｃ８は、アップロードファイル選択画面において選択されたデータの概要を入力する操作子である。ジャンルｃ９は、アップロードファイル選択画面において選択されたデータのジャンルを入力する操作子である。この例では、タイトルとして「東京風景」、概要として「東京都撮影」、ジャンルとして「デモ動画」の文字列が入力された例を示している。登録ボタンｃ１０は、アップロードファイル選択画面において選択されたデータと、メタデータ入力画面において入力されたメタデータ（属性情報）とを対応付けてストレージサーバ３０に記憶させるための書込要求を送信するための操作子である。
【００２３】
図５は、初期画面における検索条件入力テキストボックスｃ２に検索条件が入力された例を示す図である。ここでは、「東京」の文字列が検索条件として検索条件入力テキストボックスｃ２に入力されている。初期画面において検索条件入力テキストボックスｃ２に検索条件が入力され、検索実行ボタンｃ３が押下されると、プロキシサーバ５０は、検索条件入力テキストボックスｃ２に入力された検索条件によってデータの検索を行う検索要求を、インデックスサーバ４０に送信する。ここで入力される検索条件は、検索対象のデータのメタデータに含まれる文字列である。
【００２４】
図６は、アプリケーションサーバ２０がユーザ端末１０に送信する検索結果画面の例を示す図である。初期画面において検索条件入力テキストボックスｃ２に検索条件が入力され、検索実行ボタンｃ３が押下されてプロキシサーバ５０からインデックスサーバ４０に検索要求が送信され、プロキシサーバ５０がインデックスサーバ４０から送信された検索結果を受信すると、アプリケーションサーバ２０は、このような検索結果画面をユーザ端末１０に送信する。検索結果画面には、検索結果リストｃ１１を表示する。検索結果リストｃ１１は、検索条件に応じて検索されたデータの一覧をリスト形式で表示する操作子である。
【００２５】
図７は、アプリケーションサーバ２０がユーザ端末１０に送信するデータ表示画面の例を示す図である。検索結果画面において表示した検索結果リストｃ１１において、いずれかのデータが選択されると、アプリケーションサーバ２０は、選択されたデータが含まれるデータ表示画面をユーザ端末１０に送信する。ここでは、検索結果リストｃ１１において動画が選択され、ストリーミング再生により、選択された動画ｃ１２を表示するデータ表示画面の例を示している。
【００２６】
図１に戻り、ストレージサーバ３０は、ネットワークを介してユーザ端末１０から送信されるデータを記憶する記憶部を備えるコンピュータ装置である。
インデックスサーバ４０は、複数のストレージサーバ３０に記憶されたデータを検索するためのインデックス情報を記憶するコンピュータ装置である。インデックスサーバ４０は、インデックス情報記憶部４１と、インデックス格納部４２と、インデックス検索部４３とを備えている。
【００２７】
インデックス情報記憶部４１は、ストレージサーバ３０に記憶されるデータの分類を示す分類情報に対応付けて、そのデータを検索するための検索情報と、そのデータをストレージサーバ３０から読出すためのデータ名とを対応付けたインデックス情報が記憶される。図８は、インデックス情報記憶部４１に記憶されるインデックス情報のデータ例を示す図である。インデックス情報には、単語と、データ名とが含まれ、分類情報ごとに対応付けられて記憶される。分類情報とは、ストレージサーバ３０に記憶されるデータのうち、検索対象または読出対象とするデータの範囲（スコープ）を定めるための情報である。ここでは、分類情報は、データの書込要求の送信元であるユーザ端末１０のユーザ名（例えば、ユーザＡ）である例を説明する。インデックス情報に含まれる単語は、データを検索するための検索情報であり、例えば、データのメタデータに含まれる文字列である。インデックス情報に含まれるデータ名は、ストレージサーバ３０に記憶されているデータのデータ名である。
【００２８】
この例では、単語「東京」に、データ名「写真Ｐ１．ｊｐｇ」、「写真Ｐ２．ｊｐｇ」、「動画Ｍ１．ｍｐ４」が対応付けられている。また、単語「都」に、データ名「動画Ｍ１．ｍｐ４」が対応付けられている。また、単語「撮影」に、データ名「写真Ｐ１．ｊｐｇ」、「写真Ｐ２．ｊｐｇ」、「動画Ｍ１．ｍｐ４」、「写真Ｐ３．ｊｐｇ」が対応付けられている。すなわち、ここでは、上述した例において示した、概要に「東京都撮影」を含むメタデータが対応付けられたデータである「動画Ｍ１」に基づいて生成されたインデックス情報を示しており、「東京都撮影」の文字列が「東京」、「都」、「撮影」に形態素解析され、それぞれの形態素にデータ名「動画Ｍ１．ｍｐ４」が対応付けられている。
【００２９】
このように、インデックス情報記憶部４１には、インデックス情報が、分類情報（ユーザ名）ごとに分類されて記憶されている。例えば、ユーザＡのユーザ端末１０が、ストレージサーバ３０に記憶させたデータを検索する際、ユーザＡのユーザ名が分類情報として対応付けられたインデックス情報のみからデータ名を検索すれば、ストレージサーバ３０に記憶されているデータを検索することができる。このように分類されたインデックス情報の容量は、ストレージサーバ３０に記憶されたデータの全てに対してひとつのインデックス情報を生成した場合の容量に比べて小さくなる。すなわち、ストレージサーバ３０に記憶されたデータの全てに対するひとつのインデックス情報を用いる場合に比べて、検索対象であるインデックス情報の容量を低減することができる。これにより、ストレージサーバ３０に記憶されているデータを効率良く特定し、効率良くデータを読み書きすることが可能となる。
【００３０】
図１に戻り、インデックス格納部４２は、プロキシサーバ５０から送信されるインデックス生成要求に応じてインデックス情報を生成し、生成したインデックス情報をインデックス情報記憶部４１に記憶させる。
インデックス検索部４３は、プロキシサーバ５０から送信される検索要求に含まれる検索条件と、インデックス情報記憶部４１に記憶されているインデックス情報に含まれる検索情報とを比較して、検索要求に対応するデータ名を検索結果としてプロキシサーバ５０に送信する。
【００３１】
プロキシサーバ５０は、データが記憶される複数のストレージサーバ３０に接続されたコンピュータ装置であり、ユーザ端末１０からアプリケーションサーバ２０に送信される情報に基づいてストレージサーバ３０に対するデータの読み書きを行う。プロキシサーバ５０は、書込要求受信部５１と、データ分散配置部５２と、インデックス分散配置部５３と、検索要求受信部５４と、検索処理部５５と、データ読出部５６とを備えている。
【００３２】
書込要求受信部５１は、ユーザ端末１０からアプリケーションサーバ２０に送信されるデータの書込要求を受信する。
データ分散配置部５２は、書込要求受信部５１が受信したデータに、そのデータに対応する分類情報を対応付け、分類情報を対応付けたそのデータを、複数のストレージサーバ３０のうちいずれかのストレージサーバ３０に記憶させる。ここで、データ分散配置部５２は、分類情報に基づいて算出するハッシュ値に基づいて、複数のストレージサーバ３０のうち、そのデータを記憶させるストレージサーバ３０を判定することができる。
【００３３】
例えば、データ分散配置部５２は、複数のストレージサーバ３０ごとに、所定のハッシュ関数に基づいて算出されるハッシュ値を対応付けたハッシュ表（オブジェクトリング）を予め記憶しておく。データ分散配置部５２は、書込要求受信部５１が受信した書込要求の送信元であるユーザ端末１０のユーザ名（分類情報）とデータ名とを連結した文字列に基づいてハッシュ値を算出し、算出したハッシュ値に対応付けられたストレージサーバ３０をハッシュ表から読出す。データ分散配置部５２は、読出したストレージサーバ３０を、そのデータを記憶させるストレージサーバ３０として判定する。
【００３４】
インデックス分散配置部５３は、書込要求受信部５１が受信したデータに対応付ける分類情報に基づいて、複数のインデックスサーバ４０のうち、そのデータを検索するためのインデックス情報を記憶させるインデックスサーバ４０を判定し、判定したそのインデックスサーバ４０に、書込要求受信部５１が受信したデータのインデックス生成要求を送信する。ここで、インデックス分散配置部５３は、分類情報に基づいて算出するハッシュ値に基づいて、複数のインデックスサーバ４０のうち、その分類情報に対応するインデックス情報を記憶させるインデックスサーバ４０を判定することができる。
【００３５】
例えば、インデックス分散配置部５３は、複数のインデックスサーバ４０ごとに、所定のハッシュ関数に基づいて算出されるハッシュ値を対応付けたハッシュ表（インデックスリング）を予め記憶しておく。インデックス分散配置部５３は、書込要求受信部５１が受信した書込要求の送信元であるユーザ端末１０のユーザ名（分類情報）に基づいてハッシュ値を算出し、算出したハッシュ値に対応付けられたインデックスサーバ４０をハッシュ表から読出す。インデックス分散配置部５３は、読出したインデックスサーバ４０を、その分類情報に対応するインデックス情報を記憶させるインデックスサーバ４０として判定する。
【００３６】
検索要求受信部５４は、ストレージサーバ３０に記憶されたデータを検索する検索条件が含まれる検索要求を受信する。
検索処理部５５は、検索要求受信部５４が検索要求を受信すると、検索要求の送信元であるユーザ端末１０のユーザ名（分類情報）に基づいて、複数のインデックスサーバ４０のうち、検索要求を送信するインデックスサーバ４０を判定し、判定したインデックスサーバ４０に検索要求を送信し、そのインデックスサーバ４０から送信される検索結果を受信する。
【００３７】
データ読出部５６は、検索処理部５５が受信した検索結果に基づいて、複数のストレージサーバ３０のうち、いずれかのストレージサーバ３０から、検索結果に応じたデータを読出す。例えば、データ読出部５６は、検索処理部５５が受信した検索結果を示す検索結果画面がアプリケーションサーバ２０によってユーザ端末１０に送信され、ユーザ端末１０によって検索結果画面からいずれかのデータが選択されて読出要求が送信されると、読出要求の送信元のユーザ名（分類情報）に対応するストレージサーバ３０をハッシュ表から読出し、読出したストレージサーバ３０から、検索結果に応じたデータを読出す。
【００３８】
次に、図面を参照して、本実施形態によるストレージシステム１の動作例を説明する。図９は、本実施形態のストレージシステム１によるデータ書込処理の動作例を示す図である。
ユーザ端末１０は、アプリケーションサーバ２０にアクセスしてストレージシステム１が提供するストレージサービスにログインすると、アプリケーションサーバ２０から送信される初期画面を表示する。初期画面においてアップロードボタンｃ１が押下されると、アプリケーションサーバ２０は、アップロードファイル選択画面をユーザ端末１０に送信する。ユーザ端末１０が、アプリケーションサーバ２０から送信されたアップロードファイル選択画面を表示し、ユーザからの操作によって参照ボタンｃ５が押下されて選択されたデータのデータ名がアップロードファイル名入力ボックスｃ４に入力され、アップロードボタンｃ６が押下されると、アプリケーションサーバ２０は、メタデータ入力画面をユーザ端末１０に送信する。
【００３９】
ユーザ端末１０が、アプリケーションサーバ２０から送信されたメタデータ入力画面を表示し、メタデータが入力されて登録ボタンｃ１０が押下されると、ユーザ端末１０は、選択されたデータと、入力されたメタデータとを対応付けた情報が含まれる書込要求を、アプリケーションサーバ２０に送信する（ステップＳ１）。アプリケーションサーバ２０は、ユーザ端末１０から送信された書込要求を、プロキシサーバ５０に送信する（ステップＳ２）。プロキシサーバ５０の書込要求受信部５１が、アプリケーションサーバ２０から送信された書込要求を受信すると、データ分散配置部５２は、書込要求の送信元であるユーザ端末１０のユーザ名（分類情報）に基づいて、複数のストレージサーバ３０のうちから、データを書込むストレージサーバ３０を判定する（ステップＳ３）。
【００４０】
プロキシサーバ５０は、判定したストレージサーバ３０に、データの書込要求を送信する（ステップＳ４）。プロキシサーバ５０から送信された書込要求を受信したストレージサーバ３０は、受信した書込要求に含まれるデータとメタデータとを自装置の記憶部に記憶させ（ステップＳ５）、処理結果をプロキシサーバ５０に送信する（ステップＳ６）。
インデックス分散配置部５３は、書込要求の送信元であるユーザ端末１０のユーザ名（分類情報）に基づいて、複数のインデックスサーバ４０のうちから、インデックス情報を記憶させるインデックスサーバ４０を判定する（ステップＳ７）。
【００４１】
プロキシサーバ５０は、判定したインデックスサーバ４０に、データ名とメタデータとが含まれるインデックス生成要求を送信する（ステップＳ８）。プロキシサーバ５０から送信されたインデックス生成要求を受信したインデックスサーバ４０は、受信したインデックス生成要求に含まれるメタデータを形態素解析し、解析した形態素（単語）とデータ名とを対応付けたインデックス情報を生成してインデックス情報記憶部４１に記憶させ（ステップＳ９）、処理結果をプロキシサーバ５０に送信する（ステップＳ１０）。
【００４２】
図１０は、本実施形態のストレージシステム１によるデータ検索処理の動作例を示す図である。
ユーザ端末１０は、アプリケーションサーバ２０にアクセスしてストレージシステム１が提供するストレージサービスにログインすると、アプリケーションサーバ２０から送信される初期画面を表示する。初期画面において検索条件入力テキストボックスｃ２に検索条件が入力され、検索実行ボタンｃ３が押下されると、ユーザ端末１０は、検索条件入力テキストボックスｃ２に入力された検索条件によってデータの検索を行う検索要求を、アプリケーションサーバ２０に送信する（ステップＳ２１）。
【００４３】
アプリケーションサーバ２０は、ユーザ端末１０から送信された検索要求を、プロキシサーバ５０に送信する（ステップＳ２２）。プロキシサーバ５０の検索要求受信部５４が、アプリケーションサーバ２０から送信された検索要求を受信すると、検索処理部５５は、検索要求の送信元であるユーザ端末１０のユーザ名（分類情報）に基づいて、複数のインデックスサーバ４０のうちから、インデックス情報を検索するインデックスサーバ４０を判定する（ステップＳ２３）。
【００４４】
プロキシサーバ５０は、判定したインデックスサーバ４０に、データの検索要求を送信する（ステップＳ２４）。プロキシサーバ５０から送信された検索要求を受信したインデックスサーバ４０のインデックス検索部４３は、検索要求の送信元であるユーザ端末１０のユーザ名に対応付けられてインデックス情報記憶部４１に記憶されたインデックス情報のうち、インデックス情報に含まれる検索情報が、検索要求に含まれる検索条件に一致するインデックス情報に含まれるデータ名を読出す（ステップＳ２５）。インデックス検索部４３は、読出したデータ名の一覧を、検索結果としてプロキシサーバ５０に送信する（ステップＳ２６）。
【００４５】
プロキシサーバ５０の検索処理部５５は、インデックスサーバ４０から送信された検索結果を受信し、アプリケーションサーバ２０に送信する（ステップＳ２７）。アプリケーションサーバ２０は、プロキシサーバ５０から送信された検索結果を含む検索結果画面を、ユーザ端末１０に送信する（ステップＳ２８）。ユーザ端末１０は、アプリケーションサーバ２０から送信された検索結果画面を表示する。ユーザ端末１０は、ユーザからの操作によって、表示した検索結果画面からいずれかのデータが選択されると、選択されたデータの読出要求をアプリケーションサーバ２０に送信する（ステップＳ２９）。
【００４６】
アプリケーションサーバ２０は、ユーザ端末１０から送信された読出要求を、プロキシサーバ５０に送信する（ステップＳ３０）。プロキシサーバ５０のデータ読出部５６は、読出要求の送信元であるユーザ端末１０のユーザ名に基づいて、複数のストレージサーバ３０のうちから、データを読出すストレージサーバ３０を判定する（ステップＳ３１）。プロキシサーバ５０のデータ読出部５６は、判定したストレージサーバ３０に、読出要求を送信する（ステップＳ３２）。ストレージサーバ３０は、読出要求に応じたデータを自装置の記憶部から読出し、読出したデータをプロキシサーバ５０に送信する（ステップＳ３３）。プロキシサーバ５０は、読出したデータをアプリケーションサーバ２０に送信する（ステップＳ３４）。アプリケーションサーバ２０は、プロキシサーバ５０から送信されたデータを、ユーザ端末１０に送信する（ステップＳ３５）。
【００４７】
以上説明したように、本実施形態によれば、ストレージサーバ３０に記憶させたデータを検索するためのインデックス情報を、分類情報に基づいて分類して管理するようにしたので、全てのデータに対してひとつのインデックス情報によって検索する場合に比べて、検索範囲を小さくすることができる。このため、ユーザ端末１０からの要求に応じたデータを、効率良く、高速に検索することが可能となる。
【００４８】
上述したストレージシステム１は、大規模のデータを管理するあらゆるストレージシステムに適用することができ、例えば、大規模のデータを、信頼性高く、安価に管理するためのオブジェクトストレージシステムに適用することができる。オブジェクトストレージは、データをオブジェクトという単位で管理するストレージシステムであり、従来のＲＡＩＤ（Redundant Arrays of Inexpensive Disks、Redundant Arrays of Independent Disks）等の技術に対して以下のような特徴を持つ。
【００４９】
すなわち、オブジェクトストレージシステムは、単純な読み書きに操作を限定することで、処理を単純化してシステムのスケーラビリティを向上している。アクセス制御やロック機能などの複雑な操作はしない代わりに、サーバ数を増やすだけでストレージの容量を増やすことが出来る仕組みとしている。
【００５０】
また、オブジェクトストレージシステムは、格納したデータの信頼性を確保するため、同じデータを複数のサーバに分散して格納する。その際に数学的な演算処理を行わず、そのままファイルのコピーを保持する。このため、復旧が必要なデータはバックアップ先からコピーをするだけで済む。
【００５１】
また、オブジェクトストレージシステムは、地域を分けてデータ格納用のサーバを拠点配置することで、激震災害などで一部の拠点が利用不能になった場合でも、データが保全される（ディザスタリカバリー用途）。
【００５２】
このような特徴をもつオブジェクトストレージは、処理の受付と振り分けを行うプロキシサーバ（プロキシノード）と、実際にファイルの格納をするストレージサーバ（ストレージノード）から構成される。プロキシサーバが受け付けたデータの書込要求は、冗長化のため、複数のストレージサーバに同時に送信される。書込要求が送信されたストレージサーバは、送信されたデータを記憶する。データの読出要求に対しては、プロキシサーバは対応するストレージサーバのうちのひとつを選択し、そこに読出要求を送信する。
【００５３】
ここで、オブジェクトストレージにおけるストレージサーバに蓄積したデータから、必要とするデータを探すために、検索専用のデータストア（インデックス情報）を作成して検索を行うインデックスサーバを設置することが考えられる。インデックスサーバは、データから検索対象となる語彙を抽出してインデックス情報を作成・更新し、検索を行う場合はインデックス情報に対して検索クエリを実行して検索結果を取得する。
【００５４】
インデックスサーバによる検索では、検索対象とする全てのデータに対して単一のインデックス情報を作成することが一般的であるが、検索クエリに対して即座に検索結果を返却するためには、インデックス情報を高速でアクセス可能な状態にしておく必要がある。ただし、検索対象とするデータが大規模化すると、対応するインデックス情報のデータサイズも大規模化し、単一のインデックスサーバで全てのインデックス情報を保管することが困難となる。このため、インデックス情報を、複数のインデックスサーバに分散させる必要が生じる。この場合、単一の検索クエリに対して全てのインデックス情報を参照する場合、分割したサーバ全てにクエリを投げて分散検索することが必要となり、結果として検索処理時間が増大する。また、複数サーバに負荷がかかるため、検索処理の負荷も大きい。
【００５５】
そこで、上述した本実施形態のストレージシステム１によれば、検索対象のデータに分類情報を付与して管理することで、検索対象を論理的に分割することが可能となる。そして、データ記憶時および検索時に、分類情報によって検索エンジンを振り分ける。また、データ登録時（インデックス作成時）には複数の検索エンジンに振り分け、冗長化してインデックス情報を保持する。検索実行時には、検索対象のデータに対応するインデックス情報を保持する検索エンジンのうちのひとつに検索処理を振り分けることで、故障時にも検索を実施可能とする。検索エンジンは、オブジェクトストレージのストレージノードに併設して配置することが可能である。
【００５６】
すなわち、本実施形態では、ストレージサーバ３０に記憶させる各データに検索の際に指定する分類情報（タグ、識別子）を付加する。各データには複数の分類情報を付与することができ、また複数のデータが同じ分類情報を持つことができる。分類情報としてオブジェクトストレージの階層構造を利用できる。各分類情報には対応する１つのインデックス情報を生成する。ストレージサーバ３０にデータを記憶させる際には、ストレージサーバ３０に記憶させるデータの分類情報を読み取り、分類情報に対応するインデックス情報に対してインデクシングを行う。検索時には、検索クエリと検索対象の分類情報を読み取り、分類情報に対応するインデックス情報に対して検索を行う。
【００５７】
これにより、大規模データに対する検索処理時間を短縮することが可能となる。また、検索処理にかかるインデックスサーバの数を減らすことで、検索処理の処理負荷を減らすことが可能となる。また、ストレージシステム１に検索機能を付加することで、単一のシステムとして管理することが可能になり、運用負荷が減る。さらに、増設時にはストレージサーバ３０を増設するだけでインデックス情報も増加させることができる。また、インデックス情報を冗長化して保存すれば、サーバ故障時にも検索処理が実施可能である。
【００５８】
なお、上述した例では、ユーザのログイン認証をユーザ名とパスワードとの組み合わせによって行う例を示したが、他の方法によりユーザのログイン認証を行ってもよい。
また、上述の例では、初期画面には、アップロードボタンｃ１と、検索条件入力テキストボックスｃ２と、検索実行ボタンｃ３とを表示する例を示したが、この他の情報を表示することもできる。例えば、ログインしたユーザがストレージサーバ３０に記憶させているデータの一覧を、初期画面に表示することができる。
【００５９】
また、上述の例では、メタデータ入力画面には、タイトルｃ７と、概要ｃ８と、ジャンルｃ９とのメタデータを表示し、入力する例を示したが、この他の情報をメタデータとして表示し、入力するようにしてもよい。
また、検索結果画面において表示する検索結果リストｃ１１には、データごとに、データ名やメタデータを表示するようにしてもよい。図１１は、メタデータ等を表示する検索結果画面の例を示す図である。ここでは、ユーザ名（Ａｃｃｏｕｎｔ）や、データが記憶されている領域の情報（Ｃｏｎｔａｉｎｅｒ）、データ種別（Ｃｏｎｔｅｎｔ−Ｔｙｐｅ）、データサイズ（Ｓｉｚｅ）、最終更新日（Ｌａｓｔ−ｍｏｄｉｆｉｅｄ）、タイトル（Ｔｉｔｌｅ）、概要（Ａｂｓｔｒａｃｔ）、ジャンル（Ｇｅｎｒｅ）等のメタデータを表示している。また、検索結果を複数ページに亘って表示する場合には、ページ遷移のための操作子を表示してページ遷移するようにしてもよい。
【００６０】
また、上述の例では、プロキシサーバ５０は、アプリケーションサーバ２０からデータの書込要求が送信されると、ストレージサーバ３０にデータの書込要求を送信してデータ書込む処理を行った後に、インデックスサーバ４０にインデックス生成要求を送信する処理を行う例を説明したが、この処理の順序は逆でもよい。すなわち、プロキシサーバ５０は、アプリケーションサーバ２０からデータの書込要求が送信されると、インデックスサーバ４０にインデックス生成要求を送信する処理を行った後に、ストレージサーバ３０にデータの書込要求を送信してデータ書込む処理を行うようにしてもよい。あるいは、これらの処理を並行して行うこともできる。
【００６１】
また、上述の例では、分類情報としてユーザ名を適用する例を説明したが、この他の情報を分類情報として適用してもよい。例えば、ジャンルや日付等の情報を分類情報として適用してもよいし、ひとつのデータに対して複数の分類情報を付与することもできる。
また、上述の例では、インデックス情報は単語とデータ名との組み合わせである例を説明したが、単語はメタデータに含まれるどのような項目のデータに含まれるものでもよく、またデータ自体に含まれる単語でもよい。あるいは、単語ではない情報を、データ名と組み合わせたインデックス情報を生成することもできる。例えば、ジャンルや日付等の情報にデータ名を組み合わせたインデックス情報を生成することもできる。
【００６２】
また、上述の例では、ユーザ端末１０からの読出要求に応じてストレージサーバ３０から読出されたデータが、プロキシサーバ５０と、アプリケーションサーバ２０とを経由してユーザ端末１０に送信される例を示したが、読出しの際には、ストレージサーバ３０からデータを直接ユーザ端末１０に送信するようにしてもよい。
【００６３】
また、上述の例では、検索条件と検索情報とは、データのメタデータ（属性情報）に含まれる文字列である例を説明したが、データに含まれるテキストデータ自体を形態素解析して検索情報としてインデックス情報を生成しておき、このように生成されたインデックス情報に対してテキストデータ自体に含まれる文字列を検索条件として入力し、検索するようにしてもよい。
【００６４】
また、インデックスサーバは、自身が記憶するインデックス情報を、他のインデックスサーバにレプリケーションとして記憶させ、冗長化させることもできる。このとき、管理者によって新たなインデックスリングが作成された場合、そのインデックスリングに対応するインデックスサーバは、自装置のレプリケーションを持つ他のインデックスサーバを特定し、所持しているインデックス情報を問い合わせて自装置が持っていないインデックス情報を取得し、自装置が持つ必要のないインデックスを自装置から削除する。
【００６５】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりインデクシングを行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００６６】
また、上述した機能の一部または全部を、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はＬＳＩに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【００６７】
１  ストレージシステム
１０  ユーザ端末
２０  アプリケーションサーバ
３０  ストレージサーバ
４０  インデックスサーバ
４１  インデックス情報記憶部
４２  インデックス格納部
４３  インデックス検索部
５０  プロキシサーバ
５１  書込要求受信部
５２  データ分散配置部
５３  インデックス分散配置部
５４  検索要求受信部
５５  検索処理部
５６  データ読出部
【図１】
2015153034.tif 000003
【図２】
2015153034.tif 000004
【図３】
2015153034.tif 000005
【図４】
2015153034.tif 000006
【図５】
2015153034.tif 000007
【図６】
2015153034.tif 000008
【図７】
2015153034.tif 000009
【図８】
2015153034.tif 000010
【図９】
2015153034.tif 000011
【図１０】
2015153034.tif 000012
【図１１】
2015153034.tif 000013