(57)【要約】【課題】サイズが小さいデータを大量に保存する場合であっても、高い蓄積データの削減効率と、速い読み出し速度を得られるようにする。【解決手段】データ入出力部11は、入力された保存対象データを分割して分割データを生成する。その後、その分割データと同一内容の圧縮データがデータ保存部131に登録されていない分割データについては、その分割データを圧縮してデータ保存部131に書き出すと共に、共通部分管理テーブル141にその分割データのデータサイズおよび出現回数「１」を登録する。登録済みの分割データについては、共通部分管理テーブル141に登録されている該当する出現回数をインクリメントする。ソリッド圧縮制御手段121は、データサイズが第１の閾値未満で、且つ出現回数が第２の閾値未満の分割データについての圧縮データを一旦伸張後、それらをまとめてソリッド圧縮してデータ保存部131に登録する。【選択図】図１
2010061518.tif 000002
【特許請求の範囲】
【請求項１】
データ保存部と、
共通部分管理テーブルと、
所在情報管理テーブルと、
入力された保存対象データ毎に、その保存対象データを分割して分割データを生成する分割手段と、
該分割手段で生成された分割データの内、その分割データと同一内容の圧縮データが前記データ保存部に登録されていない分割データについては、その分割データを圧縮した圧縮データを前記データ保存部に登録すると共にその分割データのサイズ及び出現回数を前記共通部分管理テーブルに登録し、同一内容の圧縮データが前記データ保存部に登録されている分割データについては、前記共通部分管理テーブルに登録されている、その分割データと同一内容の分割データについての出現回数をインクリメントする共通部分判別手段と、
前記入力された保存対象データ毎に、その保存対象データを構成する分割データそれぞれについてその分割データと同一内容の圧縮データを指し示す指示情報を含んだ所在情報を前記所在情報管理テーブルに登録する所在情報登録手段と、
前記共通部分管理テーブルに登録されているデータサイズが第１の閾値未満で、且つ前記共通部分管理テーブルに登録されている出現回数が第２の閾値未満の分割データについての圧縮データを一旦伸張後、それらをまとめてソリッド圧縮して前記データ保存部に登録すると共に前記所在情報管理テーブルを更新するソリッド圧縮制御手段とを備えることを特徴とするデータ保存装置。
【請求項２】
請求項１記載のデータ保存装置において、
前記分割手段は、前記保存対象データを論理的な単位毎に分割することを特徴とするデータ保存装置。
【請求項３】
請求項１または２記載のデータ保存装置において、
前記保存対象データは、ヘッダと本体とから構成される電子メールデータであり、
前記分割手段は、前記電子メールデータをヘッダと本体とに分割することを特徴とするデータ保存装置。
【請求項４】
請求項１乃至３の何れか１項に記載のデータ保存装置において、
前記データ保存部に圧縮データが登録されている分割データそれぞれのハッシュ値が登録されたハッシュ値管理テーブルを備え、
前記共通部分判別手段は、前記分割手段で生成された分割データ毎にその分割データのハッシュ値を求め、該求めたハッシュ値と同一のハッシュ値が前記ハッシュ値管理テーブルに登録されているか否かに基づいて、前記分割データと同一内容の圧縮データが前記データ保存部に登録されているか否かを判定することを特徴とするデータ保存装置。
【請求項５】
請求項１乃至４の何れか１項に記載のデータ保存装置において、
前記所在情報登録手段は、前記圧縮データを指し示す指示情報として、前記圧縮データの前記データ保存部上のアドレスを用いることを特徴とするデータ保存装置。
【請求項６】
データ保存部と共通部分管理テーブルと所在情報管理テーブルとを備えたコンピュータが、入力された保存対象データ毎に、その保存対象データを分割して分割データを生成する第１のステップと、
前記コンピュータが、前記第１のステップで生成された分割データの内、その分割データと同一内容の圧縮データが前記データ保存部に登録されていない分割データについては、その分割データを圧縮した圧縮データを前記データ保存部に登録すると共にその分割データのサイズ及び出現回数を前記共通部分管理テーブルに登録し、同一内容の圧縮データが前記データ保存部に登録されている分割データについては、前記共通部分管理テーブルに登録されている、その分割データと同一内容の分割データについての出現回数をインクリメントする第２のステップと、
前記コンピュータが、前記入力された保存対象データ毎に、その保存対象データを構成する分割データそれぞれについてその分割データと同一内容の圧縮データを指し示す指示情報を含んだ所在情報を前記所在情報管理テーブルに登録する第３のステップと、
前記コンピュータが、前記共通部分管理テーブルに登録されているデータサイズが第１の閾値未満で、且つ前記共通部分管理テーブルに登録されている出現回数が第２の閾値未満の分割データについての圧縮データを一旦伸張後、それらをまとめてソリッド圧縮して前記データ保存部に登録すると共に前記所在情報管理テーブルを更新する第４のステップとを含むことを特徴とするデータ保存方法。
【請求項７】
請求項６記載のデータ保存方法において、
前記第１のステップでは、前記コンピュータが、前記保存対象データを論理的な単位毎に分割することを特徴とするデータ保存方法。
【請求項８】
請求項６または７記載のデータ保存方法において、
前記保存対象データは、ヘッダと本体とから構成される電子メールデータであり、
前記第１のステップでは、前記コンピュータが、前記電子メールデータをヘッダと本体とに分割することを特徴とするデータ保存方法。
【請求項９】
請求項６乃至８の何れか１項に記載のデータ保存方法において、
前記コンピュータは、前記データ保存部に圧縮データが登録されている分割データそれぞれのハッシュ値が登録されたハッシュ値管理テーブルを備え、且つ、
前記第２のステップでは、前記コンピュータが、前記第１のステップで生成された分割データ毎にその分割データのハッシュ値を求め、該求めたハッシュ値と同一のハッシュ値が前記ハッシュ値管理テーブルに登録されているか否かに基づいて、前記分割データと同一内容の圧縮データが前記データ保存部に登録されているか否かを判定することを特徴とするデータ保存方法。
【請求項１０】
請求項６乃至９の何れか１項に記載のデータ保存方法において、
前記第３のステップでは、前記コンピュータが前記圧縮データを指し示す指示情報として、前記圧縮データの前記データ保存部上のアドレスを用いることを特徴とするデータ保存方法。
【請求項１１】
データ保存部と共通部分管理テーブルと所在情報管理テーブルとを備えたコンピュータをデータ保存装置として機能させるためのプログラムであって、
前記コンピュータを、
入力された保存対象データ毎に、その保存対象データを分割して分割データを生成する分割手段、
該分割手段で生成された分割データの内、その分割データと同一内容の圧縮データが前記データ保存部に登録されていない分割データについては、その分割データを圧縮した圧縮データを前記データ保存部に登録すると共にその分割データのサイズ及び出現回数を前記共通部分管理テーブルに登録し、同一内容の圧縮データが前記データ保存部に登録されている分割データについては、前記共通部分管理テーブルに登録されている、その分割データと同一内容の分割データについての出現回数をインクリメントする共通部分判別手段、
前記入力された保存対象データ毎に、その保存対象データを構成する分割データそれぞれについてその分割データと同一内容の圧縮データを指し示す指示情報を含んだ所在情報を前記所在情報管理テーブルに登録する所在情報登録手段、
前記共通部分管理テーブルに登録されているデータサイズが第１の閾値未満で、且つ前記共通部分管理テーブルに登録されている出現回数が第２の閾値未満の分割データについての圧縮データを一旦伸張後、それらをまとめてソリッド圧縮して前記データ保存部に登録すると共に前記所在情報管理テーブルを更新するソリッド圧縮制御手段として機能させるためのプログラム。
【請求項１２】
請求項１１記載のプログラムにおいて、
前記分割手段は、前記保存対象データを論理的な単位毎に分割することを特徴とするプログラム。
【請求項１３】
請求項１１または１２記載のプログラムにおいて、
前記保存対象データは、ヘッダと本体とから構成される電子メールデータであり、
前記分割手段は、前記電子メールデータをヘッダと本体とに分割することを特徴とするプログラム。
【請求項１４】
請求項１１乃至１３の何れか１項に記載のプログラムにおいて、
前記コンピュータは、前記データ保存部に圧縮データが登録されている分割データそれぞれのハッシュ値が登録されたハッシュ値管理テーブルを備え、且つ、
前記共通部分判別手段は、前記分割手段で生成された分割データ毎にその分割データのハッシュ値を求め、該求めたハッシュ値と同一のハッシュ値が前記ハッシュ値管理テーブルに登録されているか否かに基づいて、前記分割データと同一内容の圧縮データが前記データ保存部に登録されているか否かを判定することを特徴とするプログラム。
【請求項１５】
請求項１１乃至１４の何れか１項に記載のプログラムにおいて、
前記所在情報登録手段は、前記圧縮データを指し示す指示情報として、前記圧縮データの前記データ保存部上のアドレスを用いることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大量のデータを保存するデータ保存技術に関する。
【背景技術】
【０００２】
コンピュータシステムに蓄積されるデータ量は年々急増しており、これに伴ってデータ記憶装置の大容量化が求められている。しかし、データ記憶装置を大容量化するためには、装置導入コストが発生すると共に運用コストが増加するので、蓄積データ量の増加を抑える対策が講じられている（例えば、特許文献１、２参照）。
【０００３】
特許文献１では、ファイル（登録対象ファイル）の登録時、そのファイルに含まれているデータブロックの内、以前に登録したファイル中のデータブロックと同一内容のデータブロックについては、記録媒体への書き出し処理を行わずに、既に登録されている同一内容のデータブロックを参照するための情報をファイル記述子に書き出すことにより、蓄積データ量を抑えるようにしている。なお、同一内容のデータブロックが登録済みでない、登録対象ファイル中のデータブロックについては、記録媒体への書き出し処理を行う。その際、引用文献１ではデータを圧縮せずにそのまま書き出すようにしている。
【０００４】
また、特許文献２では、被処理ファイルシステムイメージ（ＦＳＩ）上のファイルの内、基準ＦＳＩ上に存在しないファイルは汎用圧縮アルゴリズムにより圧縮して圧縮済ＦＳＩに書き出し、基準ＦＳＩ上に存在するファイルはそのファイルの基準ＦＳＩ上の位置を圧縮済ＦＳＩに書き出すことにより、蓄積データ量を抑えるようにしている。
【０００５】
【特許文献１】特開２００１−３２５１３１号公報
【特許文献２】特開２００５−２０２４４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１、２によれば、蓄積データ量を削減することができる。しかし、特許文献１では、データを記録媒体に書き出す際、圧縮せずにそのまま書き出しているため、蓄積データ量の削減効率が少ないという問題がある。
【０００７】
これに対して、引用文献２では、ファイルを圧縮してから圧縮済ＦＳＩに書き出しているため、引用文献１に比較して高い削減効率を得ることができる。しかし、引用文献２では、圧縮単位が個々のファイルであるため、ファイルのサイズが小さい場合、十分な削減効率を得ることができないという問題がある。このような問題を解決するためには、例えば、複数のファイルをまとめて圧縮（ソリッド圧縮）するということが考えられるが、このようにした場合は、データの読み出し速度が遅くなるという問題がある。すなわち、ソリッド圧縮データ中のデータを１つだけ読み出す場合であっても、ソリッド圧縮データ全体を伸張して該当データを取り出す必要があるため、読み出し速度が遅くなってしまう。
【０００８】
〔発明の目的〕
そこで、本発明の目的は、サイズが小さいデータを大量に保存する場合であっても、十分な蓄積データ量の削減効率を得ることができ、且つ読み出し速度の低下を極力抑えることができるデータ保存装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明にかかる第１のデータ保存装置は、
データ保存部と、
共通部分管理テーブルと、
所在情報管理テーブルと、
入力された保存対象データ毎に、その保存対象データを分割して分割データを生成する分割手段と、
該分割手段で生成された分割データの内、その分割データと同一内容の圧縮データが前記データ保存部に登録されていない分割データについては、その分割データを圧縮した圧縮データを前記データ保存部に登録すると共にその分割データのサイズ及び出現回数を前記共通部分管理テーブルに登録し、同一内容の圧縮データが前記データ保存部に登録されている分割データについては、前記共通部分管理テーブルに登録されている、その分割データと同一内容の分割データについての出現回数をインクリメントする共通部分判別手段と、
前記入力された保存対象データ毎に、その保存対象データを構成する分割データそれぞれについてその分割データと同一内容の圧縮データを指し示す指示情報を含んだ所在情報を前記所在情報管理テーブルに登録する所在情報登録手段と、
前記共通部分管理テーブルに登録されているデータサイズが第１の閾値未満で、且つ前記共通部分管理テーブルに登録されている出現回数が第２の閾値未満の分割データについての圧縮データを一旦伸張後、それらをまとめてソリッド圧縮して前記データ保存部に登録すると共に前記所在情報管理テーブルを更新するソリッド圧縮制御手段とを備える。
【００１０】
本発明にかかる第１のデータ保存方法は、
データ保存部と共通部分管理テーブルと所在情報管理テーブルとを備えたコンピュータが、入力された保存対象データ毎に、その保存対象データを分割して分割データを生成する第１のステップと、
前記コンピュータが、前記第１のステップで生成された分割データの内、その分割データと同一内容の圧縮データが前記データ保存部に登録されていない分割データについては、その分割データを圧縮した圧縮データを前記データ保存部に登録すると共にその分割データのサイズ及び出現回数を前記共通部分管理テーブルに登録し、同一内容の圧縮データが前記データ保存部に登録されている分割データについては、前記共通部分管理テーブルに登録されている、その分割データと同一内容の分割データについての出現回数をインクリメントする第２のステップと、
前記コンピュータが、前記入力された保存対象データ毎に、その保存対象データを構成する分割データそれぞれについてその分割データと同一内容の圧縮データを指し示す指示情報を含んだ所在情報を前記所在情報管理テーブルに登録する第３のステップと、
前記コンピュータが、前記共通部分管理テーブルに登録されているデータサイズが第１の閾値未満で、且つ前記共通部分管理テーブルに登録されている出現回数が第２の閾値未満の分割データについての圧縮データを一旦伸張後、それらをまとめてソリッド圧縮して前記データ保存部に登録すると共に前記所在情報管理テーブルを更新する第４のステップとを含む。
【００１１】
本発明にかかる第１のプログラムは、
データ保存部と共通部分管理テーブルと所在情報管理テーブルとを備えたコンピュータをデータ保存装置として機能させるためのプログラムであって、
前記コンピュータを、
入力された保存対象データ毎に、その保存対象データを分割して分割データを生成する分割手段、
該分割手段で生成された分割データの内、その分割データと同一内容の圧縮データが前記データ保存部に登録されていない分割データについては、その分割データを圧縮した圧縮データを前記データ保存部に登録すると共にその分割データのサイズ及び出現回数を前記共通部分管理テーブルに登録し、同一内容の圧縮データが前記データ保存部に登録されている分割データについては、前記共通部分管理テーブルに登録されている、その分割データと同一内容の分割データについての出現回数をインクリメントする共通部分判別手段、
前記入力された保存対象データ毎に、その保存対象データを構成する分割データそれぞれについてその分割データと同一内容の圧縮データを指し示す指示情報を含んだ所在情報を前記所在情報管理テーブルに登録する所在情報登録手段、
前記共通部分管理テーブルに登録されているデータサイズが第１の閾値未満で、且つ前記共通部分管理テーブルに登録されている出現回数が第２の閾値未満の分割データについての圧縮データを一旦伸張後、それらをまとめてソリッド圧縮して前記データ保存部に登録すると共に前記所在情報管理テーブルを更新するソリッド圧縮制御手段として機能させる。
【発明の効果】
【００１２】
本発明によれば、サイズが小さいデータを大量に保存する場合であっても、十分な蓄積データ量の削減効率を得ることができ、且つ読み出し速度の低下を極力抑えることができるという効果を得ることができる。
【発明を実施するための最良の形態】
【００１３】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１４】
〔本発明の第１の実施の形態〕
図１を参照すると、本発明の第１の実施の形態は、データ保存装置１と、ホストコンピュータ等の上位装置２とから構成されている。
【００１５】
データ保存装置１は、データ入出力部１１と、圧縮伸張処理部１２と、ディスク装置などのデータ記憶装置１３、１４とから構成されている。
【００１６】
データ記憶装置１３は、データ保存部１３１を備えている。
【００１７】
データ保存部１３１には、上位装置２から入力された保存対象データを所定の規則に従って分割することにより生成した分割データの圧縮データが登録される。
【００１８】
データ記憶装置１４は、共通部分管理テーブル１４１と、所在情報管理テーブル１４２と、条件記憶部１４３とを備えている。
【００１９】
共通部分管理テーブル１４１には、データ名に関連付けて分割データの圧縮前のデータサイズと、同一内容の分割データの出現回数とが登録される。
【００２０】
所在情報管理テーブル１４２には、保存対象データの所在（データ保存部１３１上の位置）を示す所在情報が登録される。
【００２１】
条件記憶部１４３には、ソリッド圧縮の対象にする分割データの条件が登録されている。本実施の形態では、上記条件としてデータサイズについての閾値（第１の閾値Ｔｈ１）と、出現回数についての閾値（第２の閾値Ｔｈ２）とが登録されており、データサイズが第１の閾値Ｔｈ１未満で、且つ出現回数が第２の閾値Ｔｈ２未満の分割データをソリッド圧縮の対象にする。
【００２２】
データ入出力部１１は、分割手段１１１と、共通部分判別手段１１２と、所在情報登録手段１１３とを備えている。
【００２３】
分割手段１１１は、上位装置２から入力された保存対象データを予め定められている所定の規則に従って分割し、分割データを生成する機能を有する。上記所定の規則としては、種々の規則を採用することができる。例えば、保存対象データがテキストデータと画像データとから構成されるデータである場合は、保存対象データをテキストデータと画像データとに分割すると言った、保存対象データを論理的な単位毎に分割する規則を採用することができる。また、保存対象データがデータベースに格納されているデータである場合は、データをレコード単位で分割するという規則を採用することができる。また、保存対象データがパワーポイントファイルである場合は、保存対象データをスライド単位に分割するという規則を採用することができる。
【００２４】
共通部分判別手段１１２は、次のような機能を有する。
【００２５】
・分割手段１１１で生成された分割データ毎に、その分割データと同一内容のデータ（圧縮データ）がデータ記憶装置１３上のデータ保存部１３１に登録されているか否かを判定する機能。
・未登録と判定した分割データについては、その分割データを圧縮してデータ記憶装置１３上のデータ保存部１３１に登録することを圧縮伸張処理部１２に依頼すると共に、上記分割データのデータサイズ（圧縮前のサイズ）及び出現回数「１」を共通部分管理テーブル１４１に登録する機能。
・登録済みと判定した分割データについては、共通部分管理テーブル１４１に登録されている、その分割データと同一内容の分割データについての出現回数をインクリメント（本実施の形態では＋１）する機能。
【００２６】
所在情報登録手段１１３は、保存対象データ毎に、その保存対象データを構成する分割データそれぞれについてその分割データと同一内容の圧縮データを指し示す指示情報を含んだ所在情報を所在情報管理テーブル１４２に登録する機能を有する。
【００２７】
圧縮伸張処理部１２は、ソリッド圧縮制御手段１２１と、圧縮手段１２２と、伸張手段１２３と、読み出し手段１２４とを備えている。
【００２８】
圧縮手段１２２は、データを汎用圧縮アルゴリズムに従って圧縮する機能を有し、伸張手段１２３は、圧縮データを汎用伸張アルゴリズムに従って伸張する機能を有する。
【００２９】
ソリッド圧縮制御手段１２１は、次のような機能を有する。
【００３０】
・条件記憶部１４３に登録されている条件を満たす分割データ（データサイズが第１の閾値Ｔｈ１未満で、且つ出現回数が第２の閾値Ｔｈ２未満の分割データ）を共通部分管理テーブル１４１から抽出し、抽出した分割データのデータ名が載ったソリッド圧縮対象リストを生成する機能。
・ソリッド圧縮対象リストに載っている分割データについての圧縮データを伸張手段１２３を用いて一旦伸張後、圧縮手段１２２を利用してそれらをまとめてソリッド圧縮してデータ保存部１３１に登録し、更に、所在情報管理テーブル１４２に登録されている所在情報を更新する機能。
【００３１】
読み出し手段１２４は、読み出し対象データのデータ名を含む読み出し要求の入力時、所在情報管理テーブル１４２から読み出し対象データの所在情報を検索する機能や、検索した所在情報によって示される圧縮データを伸張、連結して読み出し対象データを復元する機能を有する。
【００３２】
なお、データ保存装置１はコンピュータによって実現可能であり、コンピュータによって実現する場合は、例えば次のようにする。コンピュータをデータ保存装置１として機能させるためのプログラムを記録したディスク、半導体メモリ、その他の記録媒体を用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上にデータ入出力部１１及び圧縮伸張処理部１２を実現する。
【００３３】
〔第１の実施の形態の動作の説明〕
次に、本実施の形態の動作について詳細に説明する。
【００３４】
先ず、データ保存時の動作について説明する。今、例えば、データ保存部１３１に全くデータが登録されていない状態において、上位装置２から保存対象データとして図２（Ａ）に示す、データ名＃Ｄ１〜＃Ｄ８のデータが入力されたとする。なお、以下の説明ではデータ名＃Ｄｊのデータのことをデータ＃Ｄｊと記す場合もある。
【００３５】
これにより、データ入出力部１１内の分割手段１１１が、第１番目の保存対象データ＃Ｄ１（内容は「Ａ」である）を所定の規則に従って分割し、分割データを生成する（図３のステップＳ３１）。この処理により、内容「Ａ」の分割データ＃ｄ１が生成されたとする。
【００３６】
その後、共通部分判別手段１１２が、上記分割データ＃ｄ１と同一内容の圧縮データがデータ保存部１３１に登録されているか否かを判定する（ステップＳ３２）。この判定方法としては、例えば、データ保存部１３１に登録されている各圧縮データを伸張手段１２３により順次伸張し、伸張したデータと上記分割データとを比較する方法を採用することができる。また、データ保存部１３１に分割データの圧縮データを登録する際に、その分割データのハッシュ値を求めてハッシュ値管理テーブル（図示せず）に登録しておき、判定時には、判定対象にしている分割データのハッシュ値を求め、それとハッシュ値管理テーブルに登録されているハッシュ値とを比較する方法を採用することもできる。
【００３７】
この例の場合、分割データ＃ｄ１と同一内容の圧縮データはデータ保存部１３１に登録されていないので、共通部分判別手段１１２は、上記分割データ＃ｄ１を圧縮して保存することを圧縮伸張処理部１２に依頼すると共に、共通部分管理テーブル１４１に上記分割データのデータ名＃ｄ１と、データサイズ（圧縮前のデータサイズ）と、出現回数「１」とを関連付けて登録する（ステップＳ３３）。圧縮伸張処理部１２では、上記依頼を受けると、図２（Ｂ）に示すように、内容「Ａ」の分割データ＃ｄ１を圧縮手段１２２で圧縮してデータ保存部１３１に登録する。この例では、分割データ＃ｄ１の圧縮データはアドレスａに登録されている。
【００３８】
その後、所在情報登録手段１１３が、保存対象データ＃Ｄ１の所在情報を所在情報管理テーブル１４２に登録する（ステップＳ３４）。この例では、図４（Ａ）に示すように指示情報として「アドレスａ」を含んだ所在情報が所在情報管理テーブル１４２に登録される。
【００３９】
第１番目の保存対象データ＃Ｄ１についての処理が終了すると、データ入出力部１１は第２番目の保存対象データ＃Ｄ２に対する処理を開始する。
【００４０】
先ず、分割手段１１１が保存対象データ＃Ｄ２を所定の規則に従って分割し、内容が「Ｂ」「Ｃ」の２つの分割データ＃ｄ２−１、＃ｄ２−２を生成する（ステップＳ３１）。
【００４１】
次に、共通部分判別手段１１２が上記２つの分割データ＃ｄ２−１、＃ｄ２−２と同一内容の圧縮データがデータ保存部１３１に登録されていないと判定し、圧縮伸張処理部１２に対して上記２つの分割データ＃ｄ２−１、＃ｄ２−２を別々に圧縮してデータ保存部１３１に保存することを依頼する。更に、共通部分判別手段１１２は、共通部分管理テーブル１４１に、分割データ＃ｄ２−１、＃ｄ２−２のデータ名に関連付けてデータサイズ及び出現回数「１」を登録する（ステップＳ３２、Ｓ３３）。また、上記依頼を受けた圧縮伸張処理部１２では、分割データ＃ｄ２−１、＃ｄ２−２をそれぞれ圧縮手段１２２で圧縮して図２（Ｂ）に示すように、データ保存部１３１に登録する。この例の場合、２つの圧縮データはそれぞれアドレスｂ、ｃに登録されている。
【００４２】
その後、所在情報登録手段１１３が、図４（Ａ）に示すように、指示情報として「アドレスｂ、ｃ」を含んだ、保存対象データ＃Ｄ２の所在情報を所在情報管理テーブル１４２に登録する（ステップＳ３４）。
【００４３】
その後、データ入出力部１１は、第３番目の保存対象データ＃Ｄ３に対して、前述した処理と同様の処理を行う（ステップＳ３１〜Ｓ３４）。
【００４４】
そして、第３番目の保存対象データ＃Ｄ３に対する処理が終了すると、データ入出力部１１は、第４番目の保存対象データ＃Ｄ４に対して次のような処理を行う。
【００４５】
先ず、分割手段１１１が、保存対象データ＃Ｄ４を所定の規則で分割し、内容が「Ｃ」「Ｅ」「Ｂ」の３つの分割データ＃ｄ４−１、＃ｄ４−２、＃ｄ４−３を生成する（ステップＳ３１）。
【００４６】
次いで、共通部分判別手段１１２は、内容「Ｃ」、「Ｂ」の分割データ＃ｄ４−１、＃ｄ４−３については、同一内容の圧縮データがデータ保存部１３１に既に登録されていると判定し、内容「Ｅ」の分割データ＃ｄ４−２については同一内容の圧縮データが登録されていないと判定する（ステップＳ３２）。
【００４７】
この結果、内容が「Ｃ」「Ｂ」の分割データ＃ｄ４−１、＃ｄ４−３についてはデータの書き出し処理は行わずに、共通部分管理テーブル１４１中の該当する出現回数をインクリメントする。具体的には、データ名＃ｄ２−１、＃ｄ２−２に対応付けて登録されている出現回数をインクリメントする（ステップＳ３２、Ｓ３３）。これに対して、内容「Ｅ」の分割データ＃ｄ４−２については、圧縮伸張処理部１２に対して上記分割データ＃ｄ４−２を圧縮してデータ保存部１３１に保存することを依頼し、更に、共通部分管理テーブル１４１に分割データ＃ｄ４−２のデータサイズおよび出現回数「１」を登録する（Ｓ３２、Ｓ３３）。また、上記依頼を受けた圧縮伸張処理部１２では、図２（Ｂ）に示すように、分割データ＃ｄ４−２の圧縮データをアドレスｅに登録する。
【００４８】
その後、所在情報登録手段１１３が、図４（Ａ）に示すように、保存対象データ＃Ｄ４の所在情報としてアドレスｃ、ｅ、ｂを登録する（ステップＳ３４）。
【００４９】
以後、第５番目〜第８番目の保存対象データ＃Ｄ５〜＃Ｄ８に対して、前述した処理と同様の処理が行われる。この結果、データ保存部１３１、共通部分管理テーブル１４１および所在情報管理テーブル１４２の内容は、それぞれ図２（Ｂ）、図２（Ｃ）、図４（Ａ）に示すものとなる。
【００５０】
全ての保存対象データ＃Ｄ１〜＃Ｄ８について、データ入出力部１１による処理が終了すると、圧縮伸張処理部１２が図５のフローチャートに示す処理を行う。
【００５１】
先ず、圧縮伸張処理部１２内のソリッド圧縮制御手段１２１が、条件記憶部１４３に登録されている条件を満たす分割データを共通部分管理テーブル１４１から抽出し、抽出した分割データのデータ名を記載したソリッド圧縮対象リストＬを生成する（ステップＳ５１）。今、例えば、図６（Ａ）に示すように、条件記憶部１４３にデータサイズ、出現回数に関する第１、第２の閾値Ｔｈ１、Ｔｈ２としてそれぞれ「５０．０００」「２」が登録され、共通部分管理テーブル１４１の内容が図２（Ｃ）に示すものであるとすると、データサイズが「５０．０００」未満で、且つ出現回数が「２」未満の分割データが抽出され、図６（Ｂ）に示すソリッド圧縮対象リストＬが生成される。
【００５２】
その後、ソリッド圧縮制御手段１２１は、ソリッド圧縮対象リストＬに載っている５個の分割データ＃ｄ３、＃ｄ５−１、＃ｄ６−１、＃ｄ７−１、＃ｄ８の圧縮データをそれぞれ伸張手段１２３を用いて一旦伸張した後、圧縮手段１２２を利用してそれらをまとめてソリッド圧縮し、ソリッド圧縮データ＃ｓとしてデータ保存部１３１に登録する（ステップＳ５２）。なお、ソリッド圧縮データ＃ｓは、分割データ＃ｄ３、＃ｄ５−１、＃ｄ６−１、＃ｄ７−１、＃ｄ８をその順番で圧縮したものとする。また、ソリッド圧縮の基になった圧縮データ（分割データ＃ｄ３、＃ｄ５−１、＃ｄ６−１、＃ｄ７−１、＃ｄ８についての圧縮データ）は、データ保存部１３１から削除する。この結果、データ保存部１３１の内容は、図６（Ｃ）に示すものとなる。なお、図６（Ｃ）ではソリッド圧縮データ＃ｓは、アドレスｓに登録されている。
【００５３】
その後、ソリッド圧縮制御手段１２１は、ソリッド圧縮によって分割データ＃ｄ３、＃ｄ５−１、＃ｄ６−１、＃ｄ７−１、＃ｄ８の圧縮データの格納位置が変化したので、上記分割データを構成要素とする保存対象データ＃Ｄ３、＃Ｄ５〜＃Ｄ８の所在情報を変更する（ステップＳ５３）。本実施の形態では、ソリッド圧縮された各分割データのアドレスを、ソリッド圧縮データ＃ｓの先頭アドレスｓと、オフセット（ソリッド圧縮データ＃ｓを伸張した際の、先頭から該当分割データまでのバイト数）と、データサイズとの組に変換することにより、所在情報を更新する。
【００５４】
具体的には、保存対象データ＃Ｄ３については、その構成要素である分割データ＃ｄ３の指示情報「アドレスｄ」を「（ソリッド圧縮データ＃ｓの先頭アドレスｓ）と（オフセット＝０）と（データサイズ＝４００００）との組」に変換することにより、所在情報を更新する。ここで、オフセット＝０とするのは、分割データ＃ｄ３の圧縮データは、ソリッド圧縮データ＃ｓの先頭部分に位置するものであるからである。また、例えば、保存対象データ＃Ｄ６については、その構成要素である分割データ＃ｄ６−１のアドレス「ｇ」を「（ソリッド圧縮データ＃ｓの先頭アドレスｓ）と（オフセット＝７００００）と（データサイズ＝３５０００）との組」に変換することにより、所在情報を更新する。ここで、オフセット＝７００００とするのは、ソリッド圧縮データ＃ｓにおいて分割データ＃ｄ６−１よりも前に存在する分割データ＃ｄ３、＃ｄ５−１のデータサイズの合計値が７００００バイトであるからである。図４（Ｂ）にステップＳ５３の処理が終了した後の所在情報管理テーブル１４２の内容を示す。
【００５５】
次に、データ読み出し時の動作について説明する。データの読み出し時、上位装置２は読み出し対象データのデータ名を含んだ読み出し要求をデータ保存装置１に入力する。
【００５６】
データ保存装置１内のデータ入出力部１１は読み出し要求が入力されると、それを圧縮伸張処理部１２に渡す。これにより、圧縮伸張処理部１２内の読み出し手段１２４は、読み出し要求中のデータ名をキーにして、所在情報管理テーブル１４２から読み出し対象データの所在情報を検索する（ステップＳ７１）。
【００５７】
次いで、読み出し手段１２４は、ステップＳ７１で検索した所在情報中の各指示情報（アドレス、あるいはアドレスとオフセットとデータサイズとの組）によって示される各圧縮データをそれぞれ伸張手段１２３を用いて伸張し、伸張したデータを連結する（ステップＳ７２）。但し、アドレスとオフセットとデータサイズとの組によって示される圧縮データ（ソリッド圧縮データ）については、ソリッド圧縮データ全体を伸張し、伸張後のデータからオフセットとデータサイズとによって特定されるデータを抽出し、この抽出データを他のデータと連結する。
【００５８】
その後、読み出し手段１２４は、ステップＳ７２で連結したデータを、データ入出力部１１を介して要求元の上位装置２に返却する（ステップＳ７３）。
【００５９】
今、例えば、所在情報管理テーブル１４２の内容が図４（Ｂ）に示すものであり、データ保存部１３１の内容が図６（Ｃ）に示すものであるときに、上位装置２からデータ名＃Ｄ２を含む読み出し要求が入力されたとすると次のような処理が行われる。
【００６０】
読み出し手段１２４は、所在情報管理テーブル１４２からデータ＃Ｄ２の所在情報を検索する（ステップＳ７１）。この所在情報には、指示情報として「アドレスｂ、アドレスｃ」が含まれている。
【００６１】
その後、読み出し手段１２４は、所在情報の第１番目の指示情報（アドレスｂ）に従って、データ保存部１３１のアドレスｂに格納されている圧縮データを伸張し、内容Ｂの分割データ＃ｄ２−１を復元する。その後、第２番目の指示情報（アドレスｃ）に従って、データ保存部１３１のアドレスｃに格納されている圧縮データを伸張し、内容Ｃの分割データ＃ｄ２−２を復元する。その後、分割データ＃ｄ２−１と分割＃ｄ２−２とを連結し、連結後のデータを上位装置２へ返却する（ステップＳ７２、Ｓ７３）。
【００６２】
また、上位装置２からデータ名＃Ｄ６を含む読み出し要求が入力された場合は、次のような処理が行われる。
【００６３】
読み出し手段１２４は、所在情報管理テーブル１４２からデータ＃Ｄ６についての所在情報を検索する（ステップＳ７１）。この所在情報には、「アドレスｓと、オフセット＝７００００と、データサイズ＝３５０００との組」と、アドレスａとが指示情報として含まれている。
【００６４】
その後、読み出し手段１２４は、所在情報の第１番目の指示情報（アドレスｓと、オフセット＝７００００と、データサイズ＝３５０００との組）に従って、データ保存部１３１のアドレスｓに登録されているソリッド圧縮データｓを伸張する。これにより、図８に示すようなデータ（内容Ｄ、Ｆ、Ｇ、Ｈ、Ｉの分割データから構成されるデータ）が復元される。その後、読み出し手段１２４は、復元したデータからオフセット＝７００００及びデータサイズ＝３５０００によって特定されるデータ（内容Ｇの分割データ）を抽出する。次に、読み出し手段１２４は、所在情報の第２番目の指示情報（アドレスａ）に従ってデータ保存部１３１のアドレスａに登録されている圧縮データを伸張し、内容Ａの分割データを復元する。その後、内容Ｇの分割データと内容Ａの分割データとを結合し、結合後のデータを上位装置２へ返却する（ステップＳ７２、Ｓ７３）。
【００６５】
〔第１の実施の形態の効果〕
本実施の形態によれば、サイズが小さいデータを大量に保存する場合であっても、十分な蓄積データ量の削減効率を得ることができ、且つ読み出し速度の低下を極力抑えることができるという効果を得ることができる。
【００６６】
その理由は、データサイズが第１の閾値Ｔｈ１未満で、且つ出現回数が第２の閾値Ｔｈ２未満の分割データはまとめてソリッド圧縮し、データサイズが第１の閾値Ｔｈ１以上のデータおよび出現回数が第２の閾値Ｔｈ２以上のデータはそれぞれ単独で圧縮するようにしているからである。ここで、出現回数を考慮せずにデータサイズが第１の閾値Ｔｈ１未満の分割データを全てまとめてソリッド圧縮することも考えられるが、このようにした場合には、読み出し速度が遅くなってしまう。ソリッド圧縮データから分割データを読み出す場合は、ソリッド圧縮データを伸張し、伸張後のデータから該当データを取り出す必要があり、単独圧縮データから分割データを読み出す場合に比較してデータの読み出しに時間がかかる。そこで、本実施の形態では、何回も読み出される出現回数の多い分割データは、そのデータサイズが第１の閾値Ｔｈ１未満であってもソリッド圧縮せずに単独圧縮することにより、分割データの読み出し速度の低下を極力抑えるようにしてる。
【００６７】
また、本実施の形態によれば、分割データと同一内容の圧縮データがデータ保存部１３１に登録されているか否かを短時間で判定することができるという効果を得ることができる。
【００６８】
その理由は、データ保存部１３１に圧縮データが登録されている分割データそれぞれのハッシュ値が登録されたハッシュ値管理テーブルを備え、共通部分判別手段１１２が分割手段１１１で生成された分割データ毎にそのハッシュ値を求め、求めたハッシュ値と同一のハッシュ値がハッシュ値管理テーブルに登録されているか否かに基づいて、上記分割データと同一内容の圧縮データがデータ保存部１３１に登録されているか否かを判定するようにしているからである。
【００６９】
〔本発明の第２の実施の形態〕
次に、本発明の第２の実施の形態について説明する。本実施の形態は、電子メールデータを保存対象データとしている。
【００７０】
図９を参照すると、本実施の形態は、データ保存装置１ａと、電子メールサーバ９１と、電子メールアーカイブサーバ９２とを備えている。
【００７１】
データ保存装置１ａは、第１の実施の形態で説明したデータ保存装置１と同様の構成を有している。しかし、機能的には、分割手段１１１の機能が第１の実施の形態の分割手段１１１とは多少異なっている。本実施の形態の分割手段１１１は、保存対象データである電子メールデータを、ヘッダと本体とに分割する。
【００７２】
電子メールサーバ９１は、ネットワークを介して端末装置との間で電子メールデータを送受信する機能を有する。電子メールアーカイブサーバ９２は、電子メールサーバ９１が送受信した電子メールデータを保存対象データとしてデータ保存装置１ａに入力する機能や、読み出し対象データのデータ名を含んだ読み出し要求をデータ保存装置１ａに入力する機能を有する。
【００７３】
〔第２の実施の形態の動作の説明〕
次に、本実施の形態の動作について説明する。なお、データ読み出し時の動作は、第１の実施の形態と同じであるので、ここでは、データ保存時の動作について説明する。
【００７４】
電子メールサーバ９１は、図示を省略した端末装置との間で電子メールデータを送受信しており、電子メールアーカイブサーバ９２は、電子メールサーバ９１が送受信した電子メールデータを保存対象データとしてデータ保存装置１ａに入力する。
【００７５】
今、例えば、データ保存部１３１にデータが全く登録されていない状態において、電子メールアーカイブサーバ９２からデータ保存装置１ａに対して、図１０（Ａ）に示した８個の電子メールデータ＃Ｍ１〜＃Ｍ８が保存対象データとして入力されたとすると、次のような処理が行われる。ここで、電子メールデータ＃Ｍ１〜＃Ｍ４、電子メールデータ＃Ｍ５と＃Ｍ６、電子メールデータ＃Ｍ７と＃Ｍ８は、それぞれ同一送信元から同報送信された電子メールデータである。同報送信された電子メールデータは、本体の内容が同一で、ヘッダの内容が少しずつ異なっているという特徴を有する。
【００７６】
電子メールデータ＃Ｍ１〜＃Ｍ８が入力されると、データ入出力部１１内の分割手段１１１は、第１番目の電子メールデータ＃Ｍ１を処理対象にして、電子メールデータ＃Ｍ１をヘッダと本体とに分割する（図３のステップＳ３１）。これにより、ヘッダに対応する内容「Ａ」の分割データ＃ｍ１−１と、本体に対応する内容「Ｂ」の分割データ＃ｍ１−２とが生成される。
【００７７】
その後、共通部分判別手段１１２は、分割データ＃ｍ１−１、＃ｍ１−２と同一内容の圧縮データがデータ保存部１３１に登録されていないことから、圧縮伸張処理部１２を利用して分割データ＃ｍ１−１、＃ｍ１−２の圧縮データをデータ保存部１３１に登録する。この例では、分割データ＃ｍ１−１、＃ｍ１−２の圧縮データは、図１０（Ｂ）に示すように、それぞれアドレスａ、ｂに登録されている。更に、共通部分判別手段１１２は、分割データ＃ｍ１−１、＃ｍ１−２のデータサイズ及び出現回数「１」をデータ名に関連付けて共通部分管理テーブル１４１に登録する（ステップＳ３２、Ｓ３３）。
【００７８】
その後、所在情報登録手段１１３が、電子メールデータ＃Ｍ１の所在情報として、指示情報「アドレスａ、ｂ」を含んだ所在情報を所在情報管理テーブル１４２に登録する（ステップＳ３４）。
【００７９】
第１番目の電子メールデータ＃Ｍ１の処理が終了すると、第２番目の電子メールデータ＃Ｍ２に対する処理が行われる。
【００８０】
分割手段１１１は、第２番目の電子メールデータ＃Ｍ２をヘッダと本体とに分割する（ステップＳ３１）。これにより、ヘッダに対応する内容「Ｃ」の分割データ＃ｍ２−１と、本体に対応する内容「Ｂ」の分割データ＃２−２とが生成される。
【００８１】
共通部分判別手段１１２は、ヘッダに対応する分割データ＃ｍ２−１については、それと同一内容の圧縮データがデータ保存部１３１に登録されていないので、その圧縮データをデータ保存部１３１に登録する（アドレスｃに登録されたとする）と共に、そのデータサイズ及び出現回数「１」をデータ名に関連付けて共通部分管理テーブル１４１に登録する。これに対して、内容「Ｂ」の分割データ＃ｍ２−２については、それと同一内容の圧縮データがデータ保存部１３１のアドレスｂに登録されているので、データの書き出し処理は行わずに、共通部分管理テーブル１４１に登録されている分割データｍ１−２の出現回数をインクリメントする（ステップＳ３２、Ｓ３３）。
【００８２】
その後、所在情報登録手段１１３が、電子メールデータ＃Ｍ２の所在情報として、指示情報「アドレスｃ、ｂ」を含んだものを所在情報管理テーブル１４２に登録する。
【００８３】
以後、第３番目〜第８番目の電子メールデータ＃Ｍ３〜＃Ｍ８に対して前述した処理と同様の処理が行われ、データ保存部１３１及び共通部分管理テーブル１４１の内容がそれぞれ図１０（Ｂ）、（Ｃ）に示すものとなる。
【００８４】
電子メールデータ＃Ｍ１〜＃Ｍ８に対するデータ入出力部１１の処理が完了すると、圧縮伸張処理部１２内のソリッド圧縮制御手段１２１が、条件記憶部１４３に登録されている条件を満たす電子メールデータを所在情報管理テーブル１４２から抽出し、ソリッド圧縮対象リストを生成する（図５のステップＳ５１）。今、例えば、共通部分管理テーブル１４１および条件記憶部１４３に内容がそれぞれ図１０（Ｃ）、図１１（Ａ）に示すものであるとすると、図１１（Ｂ）に示すソリッド圧縮対象リストＬが生成される。
【００８５】
その後、ソリッド圧縮制御手段１２１は、ソリッド圧縮対象リストＬに載っている分割データをそれぞれ伸張手段１２３を用いて一旦伸張した後、圧縮手段１２２を利用してそれらをソリッド圧縮し、ソリッド圧縮データ＃ｓをデータ保存部１３１に格納する（ステップＳ５２）。これにより、データ保存部１３１の内容は、図１０（Ｂ）に示すものから図１１（Ｃ）に示すものに更新される。その後、ソリッド圧縮制御手段１２１は、所在情報管理テーブル１４２に格納されている所在情報を更新する（ステップＳ５３）。
【００８６】
〔第２の実施の形態の効果〕
本実施の形態によれば、電子メールデータを保存対象データとした場合、蓄積データ量の削減効率を極めて高いものにすることができるという効果を得ることができる。
【００８７】
その理由は、電子メールデータをヘッダと本体とに分割することにより分割データを生成し、データ保存部１３１にその分割データと同一内容の圧縮データが登録されていない分割データだけをデータ保存部１３１に書き出すようにしているからである。すなわち、同報送信によって送信される電子メールデータが多数ある場合、電子メールデータをヘッダと本体とに分割することにより、上記多数の電子メールデータに対して本体は１個だけ書き出せば良いので、高い削減効率を得ることができる。
【産業上の利用可能性】
【００８８】
本発明は、大量のデータを保存するバックアップシステム、アーカイブシステムなどに適用すると好適である。
【図面の簡単な説明】
【００８９】
【図１】本発明の第１の実施の形態の構成例を示すブロック図である。
【図２】データ入出力部１１の動作を説明するための図である。
【図３】データ入出力部１１の処理例を示すフローチャートである。
【図４】所在情報管理テーブル１４２の内容例を示す図である。
【図５】ソリッド圧縮制御手段１２１の処理例を示すフローチャートである。
【図６】ソリッド圧縮制御手段１２１の動作を説明するための図である。
【図７】読み出し手段１２４の処理例を示すフローチャートである。
【図８】読み出し手段１２４の動作を説明するための図である。
【図９】本発明の第２の実施の形態の構成例を示すブロック図である。
【図１０】第２の実施の形態におけるデータ入出力部１１の動作を説明するための図である。
【図１１】第２の実施の形態におけるソリッド圧縮制御手段１２１の動作を説明するための図である。
【符号の説明】
【００９０】
１、１ａ…データ保存装置
１１…データ入出力部
１１１…分割手段
１１２…共通部分判別手段
１１３…所在情報登録手段
１２…圧縮伸張処理部
１２１…ソリッド圧縮制御手段
１２２…圧縮手段
１２３…伸張手段
１２４…読み出し手段
１３…データ記憶装置
１３１…データ保存部
１４…データ記憶装置
１４１…共通部分管理テーブル
１４２…所在情報管理テーブル
１４３…条件記憶部
２…上位装置
９１…電子メールサーバ
９２…電子メールアーカイブサーバ
【図１】
2010061518.tif 000003
【図２】
2010061518.tif 000004
【図３】
2010061518.tif 000005
【図４】
2010061518.tif 000006
【図５】
2010061518.tif 000007
【図６】
2010061518.tif 000008
【図７】
2010061518.tif 000009
【図８】
2010061518.tif 000010
【図９】
2010061518.tif 000011
【図１０】
2010061518.tif 000012
【図１１】
2010061518.tif 000013