(57)【要約】  ストレージ装置内に格納されるデータが増えるほど、ユーザが所望するデータを検索することが困難となる。従って、未知のバイナリデータであっても、類似検索対象とすることができるストレージ装置が、望まれる。重複するファイルデータの格納を排除する重複排除制御部と、格納対象ファイルデータに基づく擬似乱数を索引語として格納する索引語格納部と、検索対象ファイルデータを取得する検索インターフェース部と、検索対象ファイルデータを分割して、検索チャンクデータ列を生成する検索チャンクデータ生成部と、検索チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する検索擬似乱数部と、擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索部と、を備えることを特徴とするストレージ装置が、提供される。（図１）
2013108745.tif 000002
【特許請求の範囲】
【請求項１】
重複するファイルデータの格納を排除する重複排除制御部と、
格納対象ファイルデータに基づく擬似乱数を索引語として格納する索引語格納部と、
検索対象ファイルデータを取得する検索インターフェース部と、
検索対象ファイルデータを分割して、検索チャンクデータ列を生成する検索チャンクデータ生成部と、
前記検索チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する検索擬似乱数部と、
前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索部と、
を備えることを特徴とするストレージ装置。
【請求項２】
前記重複排除制御部は、
格納対象ファイルデータを分割して、格納チャンクデータ列を生成する格納チャンクデータ生成部と、
前記格納チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する格納擬似乱数部と、
格納擬似乱数部で算出した擬似乱数に基づき、索引語を生成する格納処理制御部と、
を備える請求項１に記載のストレージ装置。
【請求項３】
前記類似基準は、
前記検索チャンクデータ列に基づく擬似乱数の列内に、索引語に含まれる擬似乱数を少なくとも１以上含むこと、
とする請求項１又は２に記載のストレージ装置。
【請求項４】
前記類似検索部は、
前記類似基準を満たした索引語をソートする、
請求項１乃至３のいずれか一に記載のストレージ装置。
【請求項５】
前記類似検索部は、
前記類似基準を満たした擬似乱数の個数に基づき、索引語をソートする、
請求項１乃至４のいずれか一に記載のストレージ装置。
【請求項６】
擬似乱数としてハッシュ値を算出する、
請求項１乃至５のいずれか一に記載のストレージ装置。
【請求項７】
固定サイズでファイルデータを分割する、
請求項１乃至６のいずれか一に記載のストレージ装置。
【請求項８】
二以上のデータ分割方法から一のデータ分割方法を選択する、
請求項１乃至７のいずれか一に記載のストレージ装置。
【請求項９】
重複するファイルデータの格納を排除する重複排除制御部と、
ファイルデータを取得する検索インターフェース部と、
を備えるストレージ装置の制御方法であって、
前記ファイルデータを分割して、チャンクデータ列を生成するチャンクデータ生成工程と、
前記チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する擬似乱数生成工程と、
前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索工程と、
を含むことを特徴とするストレージ装置の制御方法。
【請求項１０】
重複するファイルデータの格納を排除する重複排除制御部と、
ファイルデータを取得する検索インターフェース部と、
を備えるストレージ装置の制御するコンピュータに実行させるプログラムであって、
前記ファイルデータを分割して、チャンクデータ列を生成するチャンクデータ生成処理と、
前記チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する擬似乱数算出処理と、
前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索処理と、
を実行するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−００６５６６号（２０１２年１月１６日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ストレージ装置、その制御方法、及びプログラムに関する。特に検索対象ファイルデータに類似する複数のファイルのパスを検索結果とする検索システム、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ストレージ装置にデータを格納する際に、既に格納されているデータとの重複確認をすることは有用である。このような重複排除型ストレージ装置は、データの保存コストを低減する技術として、多数のシステムにおいて、活用が進んでいる。【０００３】
ここで、特許文献１において、ストレージ装置に重複排除処理を集中させることにより、高速にデータの書き込みをできる技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２０３８４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。【０００６】
上述のとおり、重複排除機能を備えるストレージ装置は、物理的な記憶容量を削減することができる。従って、ストレージ装置は、重複排除機能を備えることによって、膨大なデータを格納することができるようになる。しかし、ストレージ装置内に格納されるデータが増えるほど、ユーザが所望するデータを検索することが困難となる。【０００７】
特許文献１では、ストレージ装置の重複排除技術が開示されている。しかし、特許文献１では、ストレージ装置内に格納されたデータから、所望するデータを抽出する技術は開示されていない。【０００８】
ここで、検索用の索引語を予め作成することは、検索条件に類似するデータを抽出する上で有用な方法である。しかし、検索用の索引語作成にあたって、検索対象のファイルデータについての事前情報が必要となる。ファイルデータについての事前情報を抽出するには、様々な方法がある。例えば、文書データに対しては、検索用のインデックス作成のために、文書データから単語を抽出する方法がある。また、画像データに対しては、検索用のインデックス作成のために、画像データから色、形状を抽出する方法がある。【０００９】
しかし、ファイルデータのフォーマットが分からず、ファイルデータについての事前情報を抽出できない場合もある。そのため、ストレージ装置に格納されたデータを検索する際には、検索条件とするファイルデータの種類を限定する必要が生じている。【００１０】
従って、未知のバイナリデータであっても、類似検索対象とすることができるストレージ装置、その制御方法、及びプログラムが、提供される。
【課題を解決するための手段】
【００１１】
本発明の第１の視点によれば、重複するファイルデータの格納を排除する重複排除制御部と、格納対象ファイルデータに基づく擬似乱数を索引語として格納する索引語格納部と、検索対象ファイルデータを取得する検索インターフェース部と、検索対象ファイルデータを分割して、検索チャンクデータ列を生成する検索チャンクデータ生成部と、前記検索チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する検索擬似乱数部と、前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索部と、を備えるストレージ装置が、提供される。【００１２】
本発明の第２の視点によれば、重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置の制御方法であって、前記ファイルデータを分割して、チャンクデータ列を生成するチャンクデータ生成工程と、前記チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する擬似乱数生成工程と、前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索工程と、を含むストレージ装置の制御方法が、提供される。
なお、本方法は、上記したストレージ装置を構成するコンピュータというハードウェアを用いて、実施可能である。【００１３】
本発明の第３の視点によれば、重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置の制御するコンピュータに実行させるプログラムであって、前記ファイルデータを分割して、チャンクデータ列を生成するチャンクデータ生成処理と、前記チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する擬似乱数算出処理と、前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索処理と、を実行するプログラムが、提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（ｎｏｎ−ｔｒａｎｓｉｅｎｔ）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１４】
本発明の各視点によれば、未知のバイナリデータであっても、類似検索対象とすることができるストレージ装置、その制御方法、及びプログラムが提供される。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態を説明するための図である。
【図２】本発明の第１の実施形態に係るストレージ装置１を導入したシステム構成の一例を示す図である。
【図３】ストレージ装置１の内部構成の一例を示す図である。
【図４】重複排除制御部２０の内部構成の一例を示す図である。
【図５】類似検索制御部１０の内部構成の一例を示す図である。
【図６】索引語２５０の一例を示す図である。
【図７】ストレージ装置１へのデータ格納処理のフローチャートである。
【図８】索引語２５０の作成処理のフローチャートである。
【図９】索引語２５０の作成処理の一例を示す図である。
【図１０】類似検索処理のフローチャートである。
【発明を実施するための形態】
【００１６】
初めに、図１を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図したものではない。
【００１７】
上述のように、類似するファイルデータを検索するために、ファイルデータに関する事前情報が必要となる場合がある。しかし、フォーマットが分からず、ファイルデータに関する事前情報を抽出できない場合もある。そのため、ストレージ装置の検索機能は、検索条件とできるファイルデータの種類を限定している。従って、未知のバイナリデータであっても、類似検索対象とすることができるストレージ装置、その制御方法、及びプログラムが、望まれる。
【００１８】
そこで、一例として図１に示すストレージ装置１を提供する。図１に示すストレージ装置１は、重複するファイルデータの格納を排除する重複排除制御部と、格納対象ファイルデータに基づく擬似乱数を索引語として格納する索引語格納部と、検索対象ファイルデータを取得する検索インターフェース部と、検索対象ファイルデータを分割して、検索チャンクデータ列を生成する検索チャンクデータ生成部と、検索チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する検索擬似乱数部と、擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索部と、を備える。
【００１９】
まず、ストレージ装置１は、重複排除制御部２０を備えている。重複排除制御部２０は、２つの機能を有する。第１の機能は、重複するファイルデータの格納を排除する処理を行なうことである。第２の機能は、検索処理のための索引語を生成する処理を行なうことである。
【００２０】
また、ストレージ装置１は、検索インターフェース部１１を備えている。検索インターフェース部１１は、検索対象ファイルデータを取得する。ここで、検索対象ファイルデータは、外部から検索条件として指定されるファイルデータである。
【００２１】
さらに、ストレージ装置１は、検索チャンクデータ生成部１２を備えている。検索チャンクデータ生成部１２は、ファイルデータを複数のブロックデータ（以下、チャンクデータ）に分割する。チャンクデータとは、分割後のデータの塊のことである。従って、検索チャンクデータ生成部１２は、ファイルデータのチャンクデータ列を生成することができる。
【００２２】
そして、ストレージ装置１は、検索擬似乱数部１３を備えている。検索擬似乱数部１３は、擬似乱数生成法により、ファイルデータのチャンクデータの擬似乱数を算出する。
【００２３】
擬似乱数とは、乱数のように見えるが、実際には、確定的な計算によって求めている数列をいう。真の乱数は、本来、規則性も再現性もない数列である。一方、擬似乱数は、計算によって作り、再現性のある数列である。また擬似乱数生成法とは、擬似乱数を生成するアルゴリズムを意味する。
【００２４】
ここで、ストレージ装置１は、全てのファイルデータに対して、同一の擬似乱数生成法を用いる。なお、擬似乱数生成法は、ＳＨＡ１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  １）や、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）等、各種存在するがその方式は問わない。ただし、擬似乱数の衝突が発生しにくいアルゴリズムを選択することが好ましい。
【００２５】
さらに、ストレージ装置１は、類似検索部１４を備えている。類似検索部１４は、検索語として、検索擬似乱数部１３で生成される擬似乱数を用いる。この擬似乱数は、ファイルデータに関する事前情報に依存していない。
【００２６】
次に、ストレージ装置１は、索引語格納部３０を備えている。索引語格納部３０は、索引語を格納する。ここで、索引語は、格納対象ファイルデータに基づく擬似乱数を含むものとする。
【００２７】
ここで、重複排除制御部２０は、ファイルデータに基づく擬似乱数を索引語として登録する。まず、重複排除制御部２０は、検索チャンクデータ生成部１２と同一の方法で、格納対象ファイルデータのチャンクデータを生成する。そして、重複排除制御部２０は、検索擬似乱数部１３と同一の擬似乱数生成法により、擬似乱数を算出する。なお、重複排除制御部２０で生成される擬似乱数についても、ファイルデータに関する事前情報に依存していない。
【００２８】
そして、類似検索部１４は、検索語に含まれる擬似乱数と、索引語に含まれる擬似乱数を照合し、類似基準を満たす全ての索引語を抽出する。
【００２９】
以上より、ストレージ装置１は、擬似乱数によって、データに固有の特徴量を取得することができる。かつ、チャンクデータの擬似乱数の比較によって、データの一部が合致するか否かを、ストレージ装置１は判断できる。
【００３０】
従って、未知のバイナリデータであっても、類似検索対象とすることができるストレージ装置、その制御方法、及びプログラムを提供できる。
【００３１】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。
【００３２】
［第１の実施形態］
本発明の第１の実施形態について、図面を用いてより詳細に説明する。
【００３３】
図２は、本実施形態に係るストレージ装置１を導入したシステム構成の一例である。
【００３４】
ストレージ装置１を導入したシステムは、ストレージ装置１、データ格納クライアント２、検索クライアント３より構成される。そして、ストレージ装置１、及びデータ格納クライアント２、及び検索クライアント３はネットワークを介して接続されている。ネットワークは、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）や、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等の業界標準のプロトコルを用いて実現する。また、プロトコルの方式は問わない。
【００３５】
ここで、データ格納クライアント２は、ストレージ装置１へのデータの読み書きの要求を発行する。つまり、データ格納クライアント２は、ストレージ装置１に格納されているデータに対するアクセス要求を発行する。
【００３６】
また、検索クライアント３は、ストレージ装置１へのファイル検索要求を発行する。そして、検索クライアント３は、検索条件として、ファイルデータをストレージ装置１へ転送する。その後、ストレージ装置１は、検索を実行し、検索結果を検索クライアント３へ返送する。ここで、検索結果は、検索条件のファイルデータに類似するファイルのパスのリストである。
【００３７】
なお、データ格納クライアント２、及び検索クライアント３は、それぞれ複数のマシンから構成される形態でもよい。ただし、以下の説明では、簡単のため、データ格納クライアント２、及び検索クライアント３が、それぞれ一台のマシンから構成されるものとして説明する。
【００３８】
次に、図３は、ストレージ装置１の内部構成の一例を示す図である。
【００３９】
ストレージ装置１は、類似検索制御部１０、検索インターフェース部１１、重複排除制御部２０、索引語格納部３０、データ格納インターフェース部４０、ファイルシステム５０、データ格納部６０を備える。図３には、簡単のため、本実施形態に係るストレージ装置１に関係するモジュールのみを記載する。
【００４０】
まず、データ格納インターフェース部４０は、データ格納クライアント２との対話を行なう。つまり、データ格納インターフェース部４０は、データ格納クライアント２の発行した要求の授受、及び応答の送信を行なう。なお、データ格納インターフェース部４０は、ＮＦＳやＣＩＦＳ等のリモートファイルアクセスプロトコルに基づき、データ格納クライアント２との要求の送受信を行なう。上述のとおり、プロトコルの方式は問わない。
【００４１】
次に、ファイルシステム５０は、ストレージ装置１でのファイル管理を行なう。まず、ファイルシステム５０は、ファイルのメタデータの制御を行なう。ここで、ファイルのメタデータとは、あるデータについての抽象度の高い付加的なデータを指す。例えば、メタデータは、データの作成日時や作成者、データ形式、アクセス情報等を含む。また、メタデータは、データ格納部６０へのデータの格納先のアドレスを含む。かつ、ファイルシステム５０は、データ格納部６０へデータの保存管理を行なう。ここで、保存管理するデータは、ファイルデータ、及びそのメタデータである。
【００４２】
また、データ格納部６０は、記憶媒体を備える。ここで、データ格納部６０は、ファイルシステム５０からの読み書きの要求に応える。そして、データ格納部６０は、ファイルシステム５０から要求されたデータを記憶媒体に格納する。なお、データ格納部６０、及び索引語格納部３０が、同一の記憶媒体を共有する形態でもよい。
【００４３】
また、検索インターフェース部１１は、検索クライアント３との対話を行なう。つまり、検索インターフェース部１１は、検索クライアント３の発行した要求の授受、及び検索結果の返送を行なう。なお、検索インターフェース部１１は、ＮＦＳやＣＩＦＳ等のリモートファイルアクセスプロトコルに基づき、検索クライアント３との要求の送受信を行なう。上述のとおり、プロトコルの方式は問わない。
【００４４】
また、上述のとおり、索引語格納部３０は、索引語を格納する。ここで、索引語格納部３０は、記憶媒体を備える。例えば、記憶媒体には、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）が好ましい。そして、索引語格納部３０は、重複排除制御部２０で生成された索引語、及び重複検査用のデータを記憶媒体に格納する。
【００４５】
次に、図４は、重複排除制御部２０の内部構成の一例を示す図である。
【００４６】
重複排除制御部２０は、格納処理制御部２１、格納チャンクデータ生成部２２、格納擬似乱数部２３を備える。
【００４７】
まず、格納処理制御部２１は、格納対象ファイルデータの重複の有無の確認を行なう。ここで、格納対象ファイルデータとは、ファイルシステム５０に対して書き込み要求のあったファイルデータを指す。かつ、格納処理制御部２１は、索引語２５０の生成、及び更新を行なう。
【００４８】
次に、格納チャンクデータ生成部２２は、検索チャンクデータ生成部１２と同様の処理を行なう。従って、格納チャンクデータ生成部２２は、格納対象ファイルデータ２００のチャンクデータ列２１０を生成することができる。
【００４９】
格納擬似乱数部２３は、検索擬似乱数部１３と同様の処理を行なう。従って、格納擬似乱数部２３は、チャンクデータ列２１０から擬似乱数２４０を生成することができる。
【００５０】
次に、図５は、類似検索制御部１０の内部構成の一例を示す図である。
【００５１】
類似検索制御部１０は、検索チャンクデータ生成部１２、検索擬似乱数部１３、類似検索部１４、検索語制御部１５を備える。なお、検索チャンクデータ生成部１２、検索擬似乱数部１３は上述のとおりである。よって、さらなる説明を省略する。
【００５２】
上述のとおり、類似検索部１４は、検索語に含まれる擬似乱数と、索引語に含まれる擬似乱数を照合する。そして、類似基準を満たす全ての索引語２５０を抽出する。ここで、類似検索部１４は、索引語格納部３０から索引語２５０を参照する。そして、類似検索部１４は、索引語２５０に対応付けられたファイル識別子２０３のリストを取得する。次に、類似検索部１４は、ファイル識別子２０３のリストに基づき、ファイルパスのリストを取得する。ファイルパスは、ファイルシステム５０が管理している。従って、類似検索部１４は、ファイルシステム５０を介して、ファイルパスのリストを取得する。その後、類似検索部１４は、検索インターフェース部１１を介して、取得したファイルパスのリストを検索クライアント３へ返送する。
【００５３】
検索語制御部１５は、２つの機能を有する。第１の機能は、検索擬似乱数部１３で生成された擬似乱数１４０に基づき、検索語を生成する機能である。第２の機能は、類似検索制御部１０内部で、データの転送を仲介する機能である。
【００５４】
次に、ストレージ装置１の動作について説明する。
【００５５】
まず、ストレージ装置１に格納される索引語２５０のデータ構造について、説明する。
【００５６】
ここで、図６は、索引語２５０の一例を示す図である。図６の一行目の索引語２５０は、擬似乱数１と、２つのファイル識別子を対応付けている。また、図６の二行目の索引語２５０は、擬似乱数２と１つのファイル識別子を対応付けている。このように、ストレージ装置１に格納されている全てのファイルデータについて、索引語２５０が存在する。そして、それぞれの索引語２５０は、擬似乱数とファイル識別子を対応付ける構造となっている。
【００５７】
次に、図７のフローチャートを用いて、ストレージ装置１へのファイルデータ格納処理、及び索引語生成処理について説明する。
【００５８】
まず、データ格納クライアント２が、ストレージ装置１に対して、ファイルデータの書き込み要求２０２を発行する。ここで、書き込み要求２０２には、格納対象ファイルデータ２００、及び格納先を示すファイルの識別子２０３を含む。そして、データ格納インターフェース部４０は、格納対象ファイルデータ２００、及びファイル識別子２０３を取得する（ステップＳ１１０）。
【００５９】
次に、データ格納インターフェース部４０は、ファイルシステム５０を介して、書き込み要求２０２を格納処理制御部２１に転送する。そして、格納処理制御部２１は、格納対象ファイルデータ２００を格納チャンクデータ生成部２２へ転送する。その後、格納チャンクデータ生成部２２は、格納対象ファイルデータ２００を分割する（ステップＳ１２０）。なお、以下の説明では、ステップＳ１２０の処理で分割したデータ（チャンクデータ）列をチャンクデータ列２１０として説明する。ステップＳ１２０の処理の後、個々のチャンクデータ２３０に、序列に対応する番号を付与する。
【００６０】
ここで、格納チャンクデータ生成部２２は、ファイルデータの複数の分割方法を採用することも好ましい。例えば、ファイルデータを解析し、データの分割方法を選択することも好ましい。ただし、本実施形態に係るストレージ装置１では、全てのファイルデータを固定サイズで分割する方法について説明する。複数の分割方法を採用する形態については、実施形態２に係るストレージ装置１として、説明する。
【００６１】
次に、格納チャンクデータ生成部２２は、格納処理制御部２１を介して、それぞれのチャンクデータ２３０を格納擬似乱数部２３へ転送する。その後、格納擬似乱数部２３は、それぞれのチャンクデータ２３０について、擬似乱数２４０を算出する（ステップＳ１３０）。
【００６２】
そして、格納擬似乱数部２３は、擬似乱数２４０を格納処理制御部２１へ転送する。その後、格納対象ファイルデータ２００と重複するファイルデータがストレージ装置１に格納されているか否かを、格納処理制御部２１は確認する（ステップＳ１４０）。この場合に、格納処理制御部２１は、ステップＳ１３０で算出した擬似乱数２４０を含む索引語２５０が、索引語格納部３０に存在するかを確認する。
【００６３】
さらに、図８のフローチャートを用いて、ステップＳ１４０の処理について、詳細に説明する。
【００６４】
まず、格納処理制御部２１は、索引語格納部３０に格納されている索引語２５０を順に参照する。そして、擬似乱数２４０と合致する擬似乱数を含む索引語２５０が、索引語格納部３０に格納されているか否かを、格納処理制御部２１は判断する（ステップＳ２１０）。
【００６５】
ステップＳ２１０の条件を満たす場合には、格納処理制御部２１は、擬似乱数の合致した索引語２５０に対応付けられている格納先アドレス２０１を取得する。かつ、格納処理制御部２１は、擬似乱数の合致した索引語２５０に、書き込み要求２０２に含まれるファイル識別子２０３を追加する（ステップＳ２２０）。さらに、格納処理制御部２１は、擬似乱数２４０の算出元となったチャンクデータ２３０をファイルシステム５０へ転送する。あわせて、格納処理制御部２１は、チャンクデータ２３０の序列に対応する番号をファイルシステム５０へ転送する。さらに、格納処理制御部２１は、擬似乱数２４０をファイルシステム５０へ転送する。あわせて、格納処理制御部２１は、格納先アドレス２０１をファイルシステム５０へ転送する。そして、格納処理制御部２１は、擬似乱数２４０の算出元となったチャンクデータ２３０が重複している旨をファイルシステム５０へ通知する。その後、ファイルシステム５０は、格納処理制御部２１からの通知に基づき、ファイルシステム５０が管理しているメタデータを更新する（ステップＳ２３０）。
【００６６】
一方、ステップＳ２１０の条件を満たさない場合には、格納処理制御部２１は、索引語２５０を新規に作成する（ステップＳ２４０）。その場合に、格納処理制御部２１は、作成する索引語２５０に、擬似乱数２４０、及び書き込み要求２０２に含まれるファイル識別子２０３を対応付ける。そして、格納処理制御部２１は、作成した索引語２５０を索引語格納部３０に格納する。その後、格納処理制御部２１は、擬似乱数２４０の算出元となったチャンクデータ２３をファイルシステム５０へ転送する。あわせて、格納処理制御部２１は、チャンクデータの序列に対応する番号をファイルシステム５０へ転送する。さらに、格納処理制御部２１は、擬似乱数２４０をファイルシステム５０へ転送する。かつ、格納処理制御部２１は、ファイル識別子２０３をファイルシステム５０へ転送する。そして、格納処理部２１は、擬似乱数２４０の算出元となったチャンクデータ２３０が重複していない旨をファイルシステム５０へ通知する。
【００６７】
次に、ファイルシステム５０は、格納処理部２１からの通知に基づき、チャンクデータ２３０の格納領域をデータ格納部６０に確保する。その後、ファイルシステム５０は、データ格納部６０にチャンクデータ２３０を格納する（ステップＳ２５０）。そして、ファイルシステム５０は、ファイルのメタデータを更新する（ステップＳ２６０）。なお、更新するメタデータには、チャンクデータ２３０の格納先アドレス２０１を含む。
【００６８】
その後、ファイルシステム５０は、擬似乱数２４０を格納処理制御部２１に転送する。かつ、ファイルシステム５０は、チャンクデータ２３０の格納先アドレス２０１を格納処理制御部２１に転送する。そして、格納処理制御部２１は、ステップＳ２３０の処理で作成した索引語２５０に、受け取った格納先アドレス２０１を追加する（ステップＳ２７０）。
【００６９】
重複排除制御部２０は、全ての書き込み要求２０２に対して、以上の処理を行なう。その後、ファイルシステム５０は、データ格納インターフェース部４０を介して、データ格納クライアント２へ処理終了を通知する。
【００７０】
ここで、図９を用いて、索引語作成処理の一例を示す。
【００７１】
まず、ストレージ装置１は、書き込み要求２０２を取得する（ステップＳ１１０）。ここで、書き込み要求２０２は、格納対象ファイルデータ２００、及びファイル識別子２０３を含む。図９の場合、ファイル識別子２０３は、ｆｉｌｅ＿ｉｄ３を示す。そして、ストレージ装置１はチャンクデータ列２１０を生成する（ステップＳ１２０）。図９の場合、チャンクデータ列２１０は、２つのチャンクデータ２３０を有する。ステップＳ１２０の処理の後、ストレージ装置１は、チャンクデータ列２１０に基づき、擬似乱数列２２０を算出する（ステップＳ１３０）。図９の場合、擬似乱数列２２０は、２つの擬似乱数Ｄ２４０ｐとＤ２４０ｒを有する。ここで、図９の場合、索引語格納部３０は、索引語２５０ｐと索引語２５０ｑを格納している。また索引語２５０ｐは、擬似乱数Ｄ２４０ｐを含んでいる。さらに、索引語２５０ｐは、擬似乱数２４０ｐに、ファイル識別子ｆｉｌｅ＿ｉｄ１、及びｆｉｌｅ＿ｉｄ２を対応付けている。一方、索引語２５０ｑは、擬似乱数Ｄ２４０ｑを含んでいる。さらに、索引語２５０ｑは、擬似乱数Ｄ２４０ｑに、ファイル識別子ｆｉｌｅ＿ｉｄ４を対応付けている。
【００７２】
ここで、擬似乱数列２２０ｐ内の擬似乱数Ｄ２４０ｐは、擬似乱数列２５０ｐ内にも存在する。従って、ステップＳ２１０の条件を満たす。よって、ステップＳ２２０に遷移する。ステップＳ２２０の処理として、ストレージ装置１は、索引語２５０ｐにｆｉｌｅ＿ｉｄ３を追加する。
【００７３】
以上より、本実施形態に係るストレージ装置１は、重複データの格納を排除することができる。かつ、ストレージ装置１は、索引語の登録時に、ストレージ装置１で管理するデータの一部を利用している。従って、本実施形態に係るストレージ装置１では、索引語の格納のためのストレージリソースの消費を抑えることができる。
【００７４】
次に、図１０のフローチャートを用いて、類似検索処理について説明する。
【００７５】
本実施形態に係るストレージ装置１では、検索条件は、ファイルデータである。また、検索結果は、検索条件と類似するファイルが格納されているパス名のリストである。
【００７６】
まず、検索クライアント３は、検索条件として、検索ファイルデータ１５０をストレージ装置１へ転送する。その際に、ストレージ装置１は、検索インターフェース部１１を介して、検索ファイルデータ１５０を取得する（ステップＳ３１０）。そして、検索インターフェース部１１は、検索ファイルデータ１５０を類似検索部１４へ転送する。その後、類似検索部１４は、検索ファイルデータ１５０を検索語制御部１５へ転送する。
【００７７】
次に、検索語制御部１５は、検索ファイルデータ１５０を検索チャンクデータ生成部１２へ転送する。そして、検索チャンクデータ生成部１２は、格納チャンクデータ生成部と同様の処理を行なう。そして、検索チャンクデータ生成部１２はチャンクデータ列１１０を生成する（ステップＳ３２０）。ただし、検索チャンクデータ生成部１２は、格納チャンクデータ生成部２２と同一のチャンクデータ生成方法を採用するものとする。
【００７８】
次に、検索チャンクデータ生成部１２は、検索語制御部１５を介して、チャンクデータ列１１０を検索擬似乱数部１３へ転送する。その後、検索擬似乱数部１３は、索引擬似乱数部２３と同様の処理を行なう。そして、検索擬似乱数部１３は、チャンクデータ列１１０内のそれぞれのチャンクデータ１３０について、擬似乱数１４０を算出する（ステップＳ３３０）。ただし、検索擬似乱数部１３は、格納擬似乱数部２３と同一の擬似乱数生成法を採用するものとする。
【００７９】
次に、検索擬似乱数部１３は、検索語制御部１４を介して、全ての擬似乱数１４０を類似検索部１４へ転送する。そして、擬似乱数１４０を含む索引語２５０が、索引語格納部３０に存在するか否かを、類似検索部１４は判断する（ステップＳ３４０）。ステップＳ３４０の条件を満たす場合には、類似検索部１４は、合致した索引語２５０に対応付けられているファイル識別子２０３のリストを取得する（ステップＳ３５０）。そして、類似検索部１４は、すべての擬似乱数１４０について、ステップＳ３４０の条件を判断する。
【００８０】
その後、類似検索部１４は、全ての擬似乱数１４０について、ステップＳ３４０の条件を判断したとする。その場合、類似検索部１４は、取得したそれぞれのファイル識別子について、ファイルパスをファイルシステム５０から取得する。そして、類似検索部１４は、類似検索結果１６０として、取得したファイルパスのリストを検索インターフェース部１１へ転送する。最後に、検索インターフェース部１１は、類似検索結果１６０を検索クライアント３へ返送する（ステップＳ３６０）。
【００８１】
以上より、本実施形態に係るストレージ装置１の第１の効果は、ファイルデータの種類に依存せず、格納されたファイルデータに対して、類似検索を実現できることである。また、本実施形態に係るストレージ装置１では、類似検索時に、ファイルデータに関する事前情報が不要である。従って、本実施形態に係るストレージ装置１は、未知のバイナリデータであっても、類似検索の対象とすることができるストレージ装置、その制御方法、及びプログラムを提供できる。
【００８２】
本実施形態に係るストレージ装置１の第２の効果は、索引語の格納のためのストレージリソースの消費を抑えることができることである。なぜなら、本実施形態に係るストレージ装置１は、ストレージ管理データの一部を索引語として登録しているからである。従って、少ないメモリ資源で、上記第１の効果を有するストレージ装置を提供できる。
【００８３】
［第２の実施形態］
続いて、第２の実施形態について、詳細に説明する。
【００８４】
本実施形態は、複数のチャンクデータ生成方法を備え、適切なチャンクデータ生成方法を選択する実施形態である。なお、本実施形態における説明では、第１の実施形態と重複する部分の説明は省略する。さらに、本実施形態における説明では、第１の実施形態と同一の構成要素には、同一の符号を付し、その説明を省略する。
【００８５】
上述のとおり、本願発明では、ファイルデータに基づく擬似乱数を照合し、類似検索を実現する。しかし、非類似のファイルデータであっても、同一の擬似乱数が算出される場合がある。つまり、擬似乱数が衝突する場合がある。この擬似乱数の衝突は、チャンクデータが類似した場合に発生する。そこで、本実施形態に係るストレージ装置１では、ファイルデータに応じて、チャンクデータ生成方法を変更する。これにより、同一の擬似乱数が算出される可能性を低くすることができる。
【００８６】
まず、データフォーマットが既知の場合について説明する。データフォーマットが既知の場合には、データフォーマットの構造に基づき、チャンクデータを生成する。例えば、タグを利用したマークアップ言語で記述されたデータを考える。その場合には、それぞれのタグに基づき、チャンクデータを生成できる。
【００８７】
次に、データフォーマットが未知の場合について、説明する。データフォーマットが未知の場合、第１の実施形態では、固定サイズでの分割方法を採用している。しかし、本実施形態では、固定サイズでの分割方法に加えて、適切な分割サイズを決定する方法（可変長サイズでの分割方法）も採用する。例えば、可変長サイズでの分割方法として、ファイルデータへのデータ挿入に伴うデータの切れ目を検出する方法がある。ただし、本実施形態に係るストレージ装置１は、固定サイズでの分割方法または可変長サイズでの分割方法のいずれか一方のみを用いるものとする。
【００８８】
以上より、本実施形態に係るストレージ装置１では、ファイルデータ内部の解析に基づき、チャンクデータ生成方法を変更する。その結果、非類似のファイルデータに対して、同一の擬似乱数が算出される可能性が低くなる。従って、本実施形態に係るストレージ装置１は、実施形態１に係るストレージ装置１より、類似検索結果の精度が向上する。
【００８９】
［第３の実施形態］
続いて、第３の実施形態について、詳細に説明する。
【００９０】
本実施形態は、類似度に基づき、類似検索結果をソートして出力する実施形態である。なお、本実施形態における説明では、第１の実施形態と重複する部分の説明は省略する。さらに、本実施形態における説明では、第１の実施形態と同一の構成要素には、同一の符号を付し、その説明を省略する。
【００９１】
上述のとおり、擬似乱数１４０が、索引語格納部３０に格納されている擬似乱数２４０と合致するか否かを、類似検索部１４は判断する（ステップＳ３４０）。擬似乱数列１２０内の全ての擬似乱数１４０について、類似検索部１４はステップＳ３４０の条件を判断する。ここで、類似するファイルデータほど、多くのチャンクデータの擬似乱数が合致することとなる。つまり、擬似乱数１４０と擬似乱数２４０が合致する個数は、ファイルデータの類似度を表す。従って、ファイルデータの類似度をユーザに提示するには、擬似乱数１４０と擬似乱数２４０が合致する個数に基づき、対応するファイル識別子をソートすることが好ましい。
【００９２】
以上より、本実施形態に係るストレージ装置１では、類似度に基づき、類似検索結果をソートして出力する。その結果、ユーザは、検索条件としたファイルデータと、検索結果のファイルデータの類似度を把握できる。従って、本実施形態に係るストレージ装置１は、他の実施形態以上に有益なストレージ装置を提供できる。
【００９３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【００９４】
（付記１）重複するファイルデータの格納を排除する重複排除制御部と、格納対象ファイルデータに基づく擬似乱数を索引語として格納する索引語格納部と、検索対象ファイルデータを取得する検索インターフェース部と、検索対象ファイルデータを分割して、検索チャンクデータ列を生成する検索チャンクデータ生成部と、前記検索チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する検索擬似乱数部と、前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索部と、を備えるストレージ装置。
【００９５】
（付記２）前記重複排除制御部は、格納対象ファイルデータを分割して、格納チャンクデータ列を生成する格納チャンクデータ生成部と、前記格納チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する格納擬似乱数部と、格納擬似乱数部で算出した擬似乱数に基づき、索引語を生成する格納処理制御部と、を備えるストレージ装置。
【００９６】
（付記３）前記類似基準は、前記検索チャンクデータ列に基づく擬似乱数の列内に、索引語に含まれる擬似乱数を少なくとも１以上含むストレージ装置。
【００９７】
（付記４）前記類似検索部は、前記類似基準を満たした索引語をソートするストレージ装置。
【００９８】
（付記５）前記類似検索部は、前記類似基準を満たした擬似乱数の個数に基づき、索引語をソートするストレージ装置。
【００９９】
（付記６）擬似乱数としてハッシュ値を算出するストレージ装置。
【０１００】
（付記７）固定サイズでファイルデータを分割するストレージ装置。
【０１０１】
（付記８）二以上のデータ分割方法から一のデータ分割方法を選択するストレージ装置。
【０１０２】
（付記９）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置の制御方法であって、前記ファイルデータを分割して、チャンクデータ列を生成するチャンクデータ生成工程と、前記チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する擬似乱数生成工程と、前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索工程と、を含むストレージ装置の制御方法。
【０１０３】
（付記１０）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置の制御方法であって、擬似乱数に基づき、索引語を生成する索引語生成工程、を含むストレージ装置の制御方法。
【０１０４】
（付記１１）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置の制御方法であって、前記検索チャンクデータ列に基づく擬似乱数の列内に、索引語に含まれる擬似乱数を少なくとも１以上含む、とする類似基準を満たした索引語をソートする工程、を含むストレージ装置の制御方法。
【０１０５】
（付記１２）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置の制御方法であって、固定サイズでファイルデータを分割する工程、を含むストレージ装置の制御方法。
【０１０６】
（付記１３）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置の制御方法であって、二以上のデータ分割方法から一のデータ分割方法を選択する工程、を含むストレージ装置の制御方法。
【０１０７】
（付記１４）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置を制御するコンピュータに実行させるプログラムであって、前記ファイルデータを分割して、チャンクデータ列を生成するチャンクデータ生成処理と、前記チャンクデータ列内のそれぞれのチャンクデータに基づき、擬似乱数を算出する擬似乱数算出処理と、前記擬似乱数を検索語として、類似基準を満たす全ての索引語を抽出する類似検索処理と、を実行するプログラム。
【０１０８】
（付記１５）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置を制御するコンピュータに実行させるプログラムであって、擬似乱数に基づき、索引語を生成する索引語生成処理、を実行するプログラム。
【０１０９】
（付記１６）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置を制御するコンピュータに実行させるプログラムであって、前記検索チャンクデータ列に基づく擬似乱数の列内に、索引語に含まれる擬似乱数を少なくとも１以上含む、とする類似基準を満たした索引語をソートする処理、を実行するプログラム。
【０１１０】
（付記１７）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置を制御するコンピュータに実行させるプログラムであって、固定サイズでファイルデータを分割する処理、を実行するプログラム。
【０１１１】
（付記１８）重複するファイルデータの格納を排除する重複排除制御部と、ファイルデータを取得する検索インターフェース部と、を備えるストレージ装置を制御するコンピュータに実行させるプログラムであって、二以上のデータ分割方法から一のデータ分割方法を選択する処理、を実行するプログラム。
【０１１２】
なお、引用した上記の特許文献の開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１１３】
１  ストレージ装置
２  データ格納クライアント
３  検索クライアント
１０  類似検索制御部
１１  検索インターフェース部
１２  検索チャンクデータ生成部
１３  検索擬似乱数部
１４  類似検索部
１５  検索語制御部
２０  重複排除制御部
２１  格納処理制御部
２２  格納チャンクデータ生成部
２３  格納擬似乱数部
３０  索引語格納部
４０  データ格納インターフェース部
５０  ファイルシステム
６０  データ格納部
１１０、２１０  チャンクデータ列
１２０、２２０  擬似乱数列
１３０、２３０  チャンクデータ
１４０、２４０  擬似乱数
１５０  検索ファイルデータ
１６０  類似検索結果
２００  格納対象ファイルデータ
２０１  格納先アドレス
２０２  書き込み要求
２０３  ファイル識別子
２５０  索引語
【図１】
2013108745.tif 000003
【図２】
2013108745.tif 000004
【図３】
2013108745.tif 000005
【図４】
2013108745.tif 000006
【図５】
2013108745.tif 000007
【図６】
2013108745.tif 000008
【図７】
2013108745.tif 000009
【図８】
2013108745.tif 000010
【図９】
2013108745.tif 000011
【図１０】
2013108745.tif 000012
【国際調査報告】
2013108745.tif 000013
2013108745.tif 000014
2013108745.tif 000015
2013108745.tif 000016
2013108745.tif 000017
2013108745.tif 000018