(57)【要約】【課題】それぞれ一意なデータＩＤを付与した複数のデータを複数のリポジトリに分散して保管するデータサーバにおいて、たとえバックアップされたデータのリカバリを行っても、データに付与されたデータＩＤの一意性を保障できるようにする。【解決手段】データサーバ１０は、バックアップされたリポジトリをリポジトリグループ８０に追加する要求を受けた場合、バックアップされたリポジトリのリポジトリＩＤが、リポジトリグループ８０に含まれる各リポジトリ１２に付与されている各リポジトリＩＤのいずれかと一致するか否かを判定する。判定の結果、リポジトリグループに含まれるリポジトリに付与されているリポジトリＩＤの中にバックアップされたリポジトリＩＤと一致するリポジトリＩＤが存在しない場合に、データサーバ１０は、バックアップされたリポジトリをリポジトリグループ８０に追加する。【選択図】図２
2007086854.tif 000002
【特許請求の範囲】
【請求項１】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記バックアップされたリポジトリのリポジトリＩＤが、前記リポジトリグループに含まれる各リポジトリに付与されている各リポジトリＩＤのいずれとも一致しないかを判定し、
判定の結果、前記リポジトリグループに含まれるリポジトリに付与されているリポジトリＩＤの中に前記バックアップされたリポジトリＩＤと一致するリポジトリＩＤが存在しない場合に、前記バックアップされたリポジトリを前記リポジトリグループに追加する、
ようにコンピュータを機能させるためのプログラム。
【請求項２】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、
リポジトリの分割もしくは統合により生じるリポジトリＩＤ間の派生関係を示す情報を生成し、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記派生関係を示す情報を参照して、前記バックアップされたリポジトリが前記リポジトリグループに含まれる各リポジトリの前記派生関係における先祖もしくは子孫に該当しないかを判定し、
判定の結果、前記バックアップされたリポジトリが前記リポジトリグループに含まれる各リポジトリの先祖もしくは子孫に該当しない場合に、前記バックアップされたリポジトリを前記リポジトリグループに追加する、
ようにコンピュータを機能させるためのプログラム。
【請求項３】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、
あるリポジトリに保管されているデータが別のリポジトリに移動した場合に、移動元のリポジトリに付与されたリポジトリＩＤと、移動したデータに付与されたデータＩＤと、移動先のリポジトリに付与されたリポジトリＩＤとを関連づけた移動情報を生成し、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記移動情報を参照して、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在しないかを判定し、
判定の結果、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在しない場合、前記バックアップされたリポジトリを前記リポジトリグループに追加する、
ようにコンピュータを機能させるためのプログラム。
【請求項４】
請求項３に記載のプログラムにおいて、
判定の結果、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在する場合、そのデータを除いて前記バックアップされたリポジトリを前記リポジトリグループに追加する、
ようにコンピュータを機能させるためのプログラム。
【請求項５】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成するグループ構成部と、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記バックアップされたリポジトリのリポジトリＩＤが、前記リポジトリグループに含まれる各リポジトリに付与されている各リポジトリＩＤのいずれかとも一致しないかを判定するＩＤ判定部と、
判定の結果、前記リポジトリグループに含まれるリポジトリに付与されているリポジトリＩＤの中に前記バックアップされたリポジトリＩＤと一致するリポジトリＩＤが存在しない場合に、前記バックアップされたリポジトリを前記リポジトリグループに追加するグループ追加部とを、
を備えるデータサーバ。
【請求項６】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成するグループ構成部と、
リポジトリの分割もしくは統合により生じるリポジトリＩＤ間の派生関係を示す情報を生成する派生関係情報生成部と、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記派生関係を示す情報を参照して、前記バックアップされたリポジトリが前記リポジトリグループに含まれる各リポジトリの前記派生関係における先祖もしくは子孫に該当しないかを判定する派生関係判定部と、
判定の結果、前記バックアップされたリポジトリが前記リポジトリグループに含まれる各リポジトリの先祖もしくは子孫に該当しない場合に、前記バックアップされたリポジトリを前記リポジトリグループに追加するグループ追加部と、
を備えるデータサーバ。
【請求項７】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成するグループ構成部と、
あるリポジトリに保管されているデータが別のリポジトリに移動した場合に、移動元のリポジトリに付与されたリポジトリＩＤと、移動したデータに付与されたデータＩＤと、移動先のリポジトリに付与されたリポジトリＩＤとを関連づけた移動情報を生成する移動情報生成部と、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記移動情報を参照して、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在しないかを判定する移動判定部と、
判定の結果、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在しない場合、前記バックアップされたリポジトリを前記リポジトリグループに追加するグループ追加部と、
を備えるデータサーバ。
【請求項８】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記バックアップされたリポジトリのリポジトリＩＤが、前記リポジトリグループに含まれる各リポジトリに付与されている各リポジトリＩＤのいずれかとも一致しないかを判定し、
判定の結果、前記リポジトリグループに含まれるリポジトリに付与されているリポジトリＩＤの中に前記バックアップされたリポジトリＩＤと一致するリポジトリＩＤが存在しない場合に、前記バックアップされたリポジトリを前記リポジトリグループに追加する、
ことを特徴とするバックアップされたリポジトリをリポジトリグループに追加するためのリポジトリ追加方法。
【請求項９】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、
リポジトリの分割もしくは統合により生じるリポジトリＩＤ間の派生関係を示す情報を生成し、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記派生関係を示す情報を参照して、前記バックアップされたリポジトリが前記リポジトリグループに含まれる各リポジトリの前記派生関係における先祖もしくは子孫に該当しないかを判定し、
判定の結果、前記バックアップされたリポジトリが前記リポジトリグループに含まれる各リポジトリの先祖もしくは子孫に該当しない場合に、前記バックアップされたリポジトリを前記リポジトリグループに追加する、
ことを特徴とするバックアップされたリポジトリをリポジトリグループに追加するためのリポジトリ追加方法。
【請求項１０】
一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、
あるリポジトリに保管されているデータが別のリポジトリに移動した場合に、移動元のリポジトリに付与されたリポジトリＩＤと、移動したデータに付与されたデータＩＤと、移動先のリポジトリに付与されたリポジトリＩＤとを関連づけた移動情報を生成し、
バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記移動情報を参照して、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在しないかを判定し、
判定の結果、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在しない場合、前記バックアップされたリポジトリを前記リポジトリグループに追加する、
ことを特徴とするバックアップされたリポジトリをリポジトリグループに追加するためのリポジトリ追加方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一意なデータＩＤを付与した複数のデータを複数のリポジトリに分散して保管して管理するための技術に関する。
【背景技術】
【０００２】
この分野の従来の技術として、特許文献１や特許文献２に記載の技術がある。特許文献１には、局所的に一意な識別子を用いて、システム全体で一意にオブジェクトを識別する大規模分散計算機システムが開示されている。この大規模分散計算機システムは、オブジェクトを使用する場所によってオブジェクトの識別子の表現を変えることで、各場所におけるオブジェクトの一意性を保証する。
【０００３】
また、特許文献２には、画像データが格納されている画像保管装置を示す特定情報を管理し、外部装置より画像データの要求があった場合に、該格納されている特定情報に基づいて該画像データが格納されている画像保管装置を特定する画像位置管理装置が開示されている。
【０００４】
上記のようなシステムでは、それぞれデータに一意な識別子を付与することで、複数のデータを複数のリポジトリに分散して保管して管理することができる。また、データに付された識別子により一意にそのデータを特定することができるため、データの保管されているリポジトリが移動しても、同一の識別子に基づいてそのデータにアクセスすることができる。しかし、このようなシステムにおいて、バックアップされたデータをリカバリすると、データに付与された識別子の一意性の保障が維持できない場合がある。
【０００５】
【特許文献１】特開平５−１８９３８９号公報
【特許文献２】特開２０００−１０５６７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、それぞれ一意なデータＩＤを付与した複数のデータを複数のリポジトリに分散して保管するデータサーバにおいて、たとえバックアップされたデータのリカバリを行っても、データに付与されたデータＩＤの一意性を保障できるようにする。
【課題を解決するための手段】
【０００７】
本発明に係るプログラムの１つの態様では、一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記バックアップされたリポジトリのリポジトリＩＤが、前記リポジトリグループに含まれる各リポジトリに付与されている各リポジトリＩＤのいずれかとも一致しないかを判定し、判定の結果、前記リポジトリグループに含まれるリポジトリに付与されているリポジトリＩＤの中に前記バックアップされたリポジトリＩＤと一致するリポジトリＩＤが存在しない場合に、前記バックアップされたリポジトリを前記リポジトリグループに追加するようにコンピュータを機能させることを特徴とする。
【０００８】
また、本発明に係るプログラムの別の態様では、一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、リポジトリの分割もしくは統合により生じるリポジトリＩＤ間の派生関係を示す情報を生成し、バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記派生関係を示す情報を参照して、前記バックアップされたリポジトリが前記リポジトリグループに含まれる各リポジトリの前記派生関係における先祖もしくは子孫に該当しないかを判定し、判定の結果、前記バックアップされたリポジトリが前記リポジトリグループに含まれる各リポジトリの先祖もしくは子孫に該当しない場合に、前記バックアップされたリポジトリを前記リポジトリグループに追加するようにコンピュータを機能させることを特徴とする。
【０００９】
さらに、本発明に係るプログラムの別の態様では、一意なデータＩＤが付与された少なくとも１つのデータを保管する複数のリポジトリをそれぞれ一意なリポジトリＩＤと対応付けて、１つのリポジトリグループとして構成し、あるリポジトリに保管されているデータが別のリポジトリに移動した場合に、移動元のリポジトリに付与されたリポジトリＩＤと、移動したデータに付与されたデータＩＤと、移動先のリポジトリに付与されたリポジトリＩＤとを関連づけた移動情報を生成し、バックアップされたリポジトリを前記リポジトリグループに追加する要求を受けた場合、前記移動情報を参照して、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在しないかを判定し、判定の結果、前記バックアップされたリポジトリに保管されているデータ群の中に、前記リポジトリグループに含まれるリポジトリに移動されたデータが存在しない場合、前記バックアップされたリポジトリを前記リポジトリグループに追加するようにコンピュータを機能させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、それぞれ一意なデータＩＤを付与した複数のデータを複数のリポジトリに分散して保管するシステムにおいて、たとえバックアップされたデータのリカバリを行っても、データに付与されたデータＩＤの一意性を保障できる。
【発明を実施するための最良の形態】
【００１１】
本発明を実施するための最良の形態（以下、実施形態と称す）について、以下、図面を用いて説明する。
【００１２】
図１は、本実施形態に係るデータ管理システムのシステム構成を示す図である。図１に示すように、本システムでは、ＬＡＮ（ローカル・エリア・ネットワーク）やインターネットなどのネットワーク６０に接続されたデータサーバ１０とクライアント５０とから構成される。本システムは、ネットワーク６０上のクライアント５０からのデータ要求に応じて、要求対象のデータをデータサーバ１０がクライアント５０に提供する。また、データサーバ１０は、ネットワーク６０を介してクライアント５０から提供されたデータを保管する。ここで、データは、文書データ、画像データ、動画データなど、ネットワーク６０を介してデータサーバ１０とクライアント５０とがやり取り可能なデータ全般をいう。
【００１３】
図２は、実施形態におけるデータサーバ１０の機能ブロックを示す図である。データサーバ１０は、データを保管する複数のリポジトリ１２と、リポジトリ１２を管理するリポジトリ管理部３０とから構成される。リポジトリ管理部３０は、クライアント５０を介してユーザにより選択されたいくつかのリポジトリ１２をリポジトリグループ８０として構成し、そのグループに含まれるリポジトリ１２がそれぞれ連携して、複数のデータを分散して管理する。データサーバ１０は、リポジトリグループに属するリポジトリ１２に保管されているデータを、クライアント５０に提供する。つまり、クライアント５０は、リポジトリグループに属するリポジトリ１２が保管するデータにアクセスして、閲覧や編集などの処理をすることができる。以下、リポジトリグループに属するリポジトリを、「所属リポジトリ」と称す。なお、本実施形態では、データサーバ１０が備えるリポジトリ１２をリポジトリグループとして構成し、データを分散して管理する例について説明する。しかし、他のコンピュータが備えるリポジトリをネットワーク６０を介して接続して、そのコンピュータのリポジトリをリポジトリグループとして構成してもよい。
【００１４】
各リポジトリ１２は、データ格納部１４を備える。図２に示すように、データ格納部１４には、保管対象となるデータ２２とそのデータをグローバルに一意に特定するためのデータＩＤ２４とが関連づけて格納される。また、データ格納部１４には、リポジトリ１２をグローバルに一意に特定するためのリポジトリＩＤ２６が関連づけられている。
【００１５】
リポジトリ管理部３０は、ＩＤ生成部２０と、グループ編成部３２と、所属リポジトリＩＤ保持部３４と、バックアップ・リカバリ処理部３６とを備える。
【００１６】
ＩＤ生成部２０は、グローバルに一意なデータＩＤやリポジトリＩＤを生成し、各リポジトリ１２に提供する。ここで、グローバルに一意なＩＤとしては、例えばＵＵＩＤ（Universally Unique IDentifier）又はＧＵＩＤ（Globally Unique IDentifier）と呼ばれる１２８ビットの識別情報を用いることができる。ちなみに、ＵＵＩＤは、グローバルな一意性を保証するために、そのＵＵＩＤを作成した時刻や作成に使用したマシンに装着されたネットワークカードのＭＡＣ（Media Access Control）アドレス等を含んでいる。クライアント５０は、要求対象となるデータに対応するデータＩＤを示したデータ要求をデータサーバ１０に送信することで、データサーバ１０からそのデータ要求の応答として、要求対象データを受け取ることができる。
【００１７】
グループ編成部３２は、ユーザからの指示に応じて、リポジトリグループに新たなリポジトリを追加したり、既存の所属リポジトリをリポジトリグループから除外する。所属リポジトリＩＤ保持部３４は、現在リポジトリグループに属する所属リポジトリのリポジトリＩＤとその所属リポジトリの物理位置情報とを関連づけた所属リポジトリ情報を保持する。ここで、物理位置情報は、リポジトリ１２にアクセスするために必要な情報であり、例えば、ディレクトリ名、ＩＰアドレス、ＵＲＬ（Uniform Resource Locator）などである。
【００１８】
バックアップ・リカバリ処理部３６は、ユーザからの指示に応じて、所属リポジトリをバックアップしたり、バックアップされたリポジトリをリカバリする。ここで、バックアップとは、ある時点でのリポジトリのスナップショットを別の記憶領域や別の記憶メディアにコピーして保存する処理のことをいう。よって、バックアップを行うことで、ある時点においてデータ格納部１４に格納されているデータとそのデータＩＤ及びそのリポジトリのリポジトリＩＤがコピーされ、バックアップデータとして、別の記憶領域や別の記憶メディアに保存される。また、リカバリとは、別の記憶領域や別の記憶メディアに保存されたスナップショットをグループ編成部３２がアクセスできる状態にすることをいう。よって、リカバリを行うことで、グループ編成部３２がバックアップされたリポジトリにアクセスして、リポジトリグループに追加することができるようになる。
【００１９】
このように構成されたデータ管理システムによれば、データを複数のリポジトリ１２に分散して管理することができる。また、リポジトリ１２をバックアップすることができるため、リポジトリグループとして構成されているリポジトリ１２に障害が起きた場合にも、バックアップした時点でリポジトリ１２に保管されているデータを復元することができる。しかしながら、バックアップされたリポジトリ１２をリカバリして、新たにリポジトリグループ８０に追加する場合、データに付与されたデータＩＤの一意性が保障できない場合がある。例えば、図３Ａ，３Ｂに示すようなケースで、データＩＤの一意性が崩れる。
【００２０】
まず、図３Ａにおいて、リポジトリグループ８０にリポジトリ［Ｘ］、リポジトリ［Ｙ］などが属する場合に、リポジトリ［Ｘ］をバックアップする（なお、リポジトリ［Ｘ］は、リポジトリＩＤ［Ｘ］を付与されたリポジトリのことを意味する。他のリポジトリについても同様とする）。その後、図３Ｂに示すように、バックアップされたリポジトリ［Ｘ］をリカバリして、別のリポジトリ［Ｚ］としてリポジトリグループ８０に追加する。すると、リポジトリ［Ｘ］が保管するデータのデータＩＤとリポジトリ［Ｚ］が保管するデータのデータＩＤとは重複し、データＩＤの一意性が崩れてしまう。このように、バックアップされたリポジトリを、リカバリした後、リポジトリグループに追加すると、バックアップされたリポジトリが保管するデータのデータＩＤと既存の所属リポジトリが保管するデータのデータＩＤとの間でデータＩＤの一意性が保障できない場合がある。本システムでは、クライアント５０は、データに付与されているデータＩＤが一意性を保っているために、所望のデータを特定して、そのデータをデータサーバ１０から取得することができる。しかし、上記のように、データＩＤが重複し、データＩＤの一意性が崩れると、データを一意に特定することができず、クライアント５０は、所望のデータを取得できなくなる。
【００２１】
そこで、本実施形態では、バックアップされたリポジトリをリカバリして、リポジトリグループに追加する要求をユーザから受けた場合、リポジトリ管理部３０は、図４に示す手順に基づいて、バックアップされたリポジトリをリポジトリグループに追加するか否かを判定する。
【００２２】
まず、リポジトリ管理部３０は、グループ追加対象となるリポジトリのバックアップデータに付与されたリポジトリＩＤを取得する（Ｓ１００）。次いで、リポジトリ管理部３０は、所属リポジトリＩＤ保持部３４が保持する所属リポジトリ情報を参照することで、取得したリポジトリＩＤと一致する所属リポジトリのリポジトリＩＤが存在するか否かを判定する（Ｓ１０２）。判定の結果、取得したリポジトリＩＤと一致する所属リポジトリのリポジトリＩＤが存在する場合（Ｓ１０２の判定結果が、肯定「Ｙ」）、リポジトリ管理部３０は、バックアップされたリポジトリが保管するデータの中に、現在リポジトリグループに属する所属リポジトリが保管するデータと同一のデータＩＤが付与されたデータが存在すると判断して、そのバックアップされたリポジトリをリポジトリグループに追加せずに、処理を終了する。
【００２３】
一方、判定の結果、取得したリポジトリＩＤと一致する所属リポジトリのリポジトリＩＤが存在しない場合（Ｓ１０２の判定結果が、否定「Ｎ」）、リポジトリ管理部３０は、バックアップデータをリカバリする（Ｓ１０４）。次いで、リポジトリ管理部３０は、リカバリしたバックアップデータをリポジトリグループに新たなリポジトリとして追加する（Ｓ１０６）。
【００２４】
以上のように、本実施形態では、リポジトリ管理部３０は、バックアップデータのリポジトリに付与されたリポジトリＩＤと同一のリポジトリＩＤが付与された所属リポジトリが存在する場合、バックアップデータのリポジトリをリポジトリグループに追加することを許可しない。これにより、バックアップされたリポジトリをリポジトリグループに追加することが原因で、リポジトリグループ内においてデータＩＤの一意性が崩れることを防止することができる。
【００２５】
続いて、本実施形態の第１の変形例について説明する。第１の変形例では、リポジトリの分割および統合が行われた場合でも、バックアップされたリポジトリをリポジトリグループに追加されることが原因で、リポジトリグループ内においてデータＩＤの一意性が崩れることを防止する。
【００２６】
まず、本題に入る前に、リポジトリの分割及び統合について、図５，図６を用いて説明する。図５は、リポジトリの分割時におけるイメージを示す。図５に示すように、リポジトリの分割とは、１つのリポジトリに保管されているデータ群を、データＩＤを変更せずに、複数の新たなリポジトリに分配することをいう。なお、分割前のリポジトリは、分割により消失する。次に、図６は、リポジトリの統合時におけるイメージを示す。図６に示すように、リポジトリの統合とは、複数のリポジトリに保管されているデータ群を、データＩＤを変更せずに、新たな１つのリポジトリにまとめることをいう。なお、統合前のリポジトリは、統合により消失する。
【００２７】
ここで、リポジトリを分割した後に、バックアップされたリポジトリをリポジトリグループに追加した場合に、データＩＤの一意性が崩れるケースについて、図７Ａ，図７Ｂを用いて説明する。
【００２８】
まず、図７Ａに示す通り、リポジトリ［Ｘ］をバックアップする（Ｓ２００）。次いで、リポジトリ［Ｘ］を、リポジトリ［Ｇ］とリポジトリ［Ｈ］に分割する（Ｓ２０２）。その後、図７Ｂに示す通り、リポジトリ［Ｇ］が破損したため（Ｓ２０４）、リポジトリ［Ｇ］を破棄して、リポジトリ［Ｘ］のバックアップデータをリカバリして得られるリポジトリ［Ｊ］をリポジトリグループに追加する（Ｓ２０６）。すると、リポジトリ［Ｊ］に保管されているデータのデータＩＤと、リポジトリ［Ｈ］に保管されているデータのデータＩＤとが重複する。
【００２９】
このように、リポジトリの分割および統合が行われた後に、バックアップされたリポジトリをリポジトリグループに追加されることが原因で、リポジトリグループ内においてデータＩＤの一意性が崩れる場合がある。
【００３０】
そこで、第１の変形例では、バックアップされたリポジトリをリカバリして、リポジトリグループに追加する要求をユーザから受けた場合、リポジトリ管理部３０は、以下に示す手順に基づいて、バックアップされたリポジトリをリポジトリグループに追加するか否かを判定する。
【００３１】
図８は、第１の変形例におけるデータサーバ１０の機能ブロックを示す図である。図８において、図２と同一のブロックについては同一符号を付してある。上記の実施形態におけるデータサーバ１０との違いは、分割統合処理部３８と派生関係保持部２８とを備える点である。
【００３２】
分割統合処理部３８は、上記の通り、ユーザからの指示に基づいて、リポジトリの分割もしくは統合の処理を行う。派生関係保持部２８は、リポジトリの分割もしくは統合により発生するリポジトリの派生関係の情報を保持する。つまり、派生関係保持部２８には、リポジトリの分割や統合の履歴情報が保持される。
【００３３】
図９は、リポジトリの分割および統合によって発生するリポジトリ間の派生関係を示すイメージ図である。図９では、リポジトリ［Ａ］がリポジトリ［Ｂ］とリポジトリ［Ｃ］とに分割され、さらに、リポジトリ［Ｃ］が、リポジトリ［Ｄ］，リポジトリ［Ｅ］，リポジトリ［Ｆ］に分割されている。次いで、リポジトリ［Ｂ］とリポジトリ［Ｄ］とが統合され、リポジトリ［Ｇ］が生成されている。図９において、各リポジトリの各派生関係保持部２８には、それぞれ各リポジトリの下に描いた派生関係情報が保持される。
【００３４】
図１０は、リポジトリの分割時におけるリポジトリ管理部３０の処理手順を示す図である。リポジトリ管理部３０は、ユーザからリポジトリの分割指示を受けると、分割元のリポジトリが保持する派生関係情報を取得する（Ｓ３００）。さらに、リポジトリ管理部３０は、分割後の各リポジトリに対応するリポジトリＩＤをそれぞれ生成する（Ｓ３０２）。リポジトリ管理部３０は、生成した各リポジトリＩＤに応じて、派生関係情報を更新する（Ｓ３０４）。つまり、分割前のリポジトリを「親」、分割後の各リポジトリを「子」となるように派生関係情報を更新する。その後、リポジトリ管理部３０は、生成したリポジトリＩＤを分割後のリポジトリに提供するとともに、更新した派生関係情報も分割後のリポジトリに提供する（Ｓ３０６）。これにより、分割後のリポジトリ１２にそれぞれリポジトリＩＤが付与され、派生関係保持部２８に派生関係情報が格納される。
【００３５】
図１１は、リポジトリの統合時におけるリポジトリ管理部３０の処理手順を示す図である。リポジトリ管理部３０は、ユーザからリポジトリの統合指示を受けると、統合元の各リポジトリが保持する派生関係情報を取得する（Ｓ４００）。さらに、リポジトリ管理部３０は、統合後のリポジトリに対応するリポジトリＩＤを生成する（Ｓ４０２）。リポジトリ管理部３０は、生成したリポジトリＩＤに応じて、派生関係情報を更新する（Ｓ４０４）。その後、リポジトリ管理部３０は、生成したリポジトリＩＤを統合後のリポジトリに提供するとともに、更新した派生関係情報も統合後のリポジトリに提供する（Ｓ４０６）。これにより、統合後のリポジトリ１２にリポジトリＩＤが付与され、派生関係保持部２８に派生関係情報が格納される。
【００３６】
続いて、第１の変形例におけるリポジトリ管理部３０が、バックアップされたリポジトリをリポジトリグループに追加する要求をユーザから受けた場合の処理手順について、図１２に示すフローチャートを用いて説明する。
【００３７】
まず、リポジトリ管理部３０は、グループ追加対象となるリポジトリのバックアップデータに付与されたリポジトリＩＤを取得する（Ｓ５００）。さらに、リポジトリ管理部３０は、所属リポジトリＩＤ保持部３４に保持された所属リポジトリ情報を参照して、現在リポジトリグループに含まれる所属リポジトリを特定し、各所属リポジトリから派生関係情報を取得する（Ｓ５０２）。そして、リポジトリ管理部３０は、取得したリポジトリＩＤと、各派生関係情報とを参照して、グループ追加対象のリポジトリが、所属リポジトリの先祖または子孫に該当するか否かを判定する（Ｓ５０４）。判定の結果、グループ追加対象のリポジトリが、所属リポジトリの先祖または子孫に該当する場合には（Ｓ５０４での判定結果が、肯定「Ｙ」）、バックアップされたリポジトリが保管するデータの中に、現在リポジトリグループに属する所属リポジトリが保管するデータと同一のデータＩＤが付与されたデータが存在すると判断して、そのバックアップされたリポジトリをリポジトリグループに追加せずに、処理を終了する。
【００３８】
一方、判定の結果、グループ追加対象のリポジトリが、所属リポジトリの先祖または子孫に該当しない場合には（Ｓ５０４での判定結果が、否定「Ｎ」）、リポジトリ管理部３０は、バックアップデータをリカバリする（Ｓ５０６）。次いで、リポジトリ管理部３０は、リカバリしたバックアップデータをリポジトリグループに新たなリポジトリとして追加する（Ｓ５０８）。
【００３９】
このように、第１の変形例では、リポジトリ管理部３０は、バックアップされたリポジトリをリポジトリグループに追加する要求をユーザから受けた場合、グループ追加対象のリポジトリが、所属リポジトリの先祖または子孫に該当するかどうかを判定して、先祖または子孫に該当しない場合に、バックアップされたリポジトリをリポジトリグループに追加する。これにより、リポジトリの分割および統合が行われた後に、バックアップされたリポジトリをリポジトリグループに追加されることが原因で、リポジトリグループ内においてデータＩＤの一意性が崩れることを防止することができる。
【００４０】
ここで、Ｓ５０４の判定において、グループ追加対象のリポジトリが、所属リポジトリの先祖または子孫に該当する場合としない場合の具体例について説明する。
【００４１】
まず、図１３Ａは、グループ追加対象のリポジトリが、所属リポジトリの先祖に該当する場合の例を示す。
【００４２】
（Ａ−１）は、次のようなリポジトリ間の派生関係を示している。まず、リポジトリ［Ａ］がバックアップされた後、リポジトリ［Ｂ］とリポジトリ［Ｃ］とに分割されたこを示す。さらに、リポジトリ［Ｃ］がリポジトリ［Ｄ］，リポジトリ［Ｅ］とに分割されたことを示す。そして、（Ａ−２）は、（Ａ−１）の派生関係を持つリポジトリグループにおいて、破損等が原因によりリポジトリ［Ｂ］がリポジトリグループから除外されたことを示している。（Ａ−２）の派生関係を持つリポジトリグループにおいて、バックアップされたリポジトリ［Ａ］をリポジトリグループに追加しようとする。この場合、リポジトリ［Ａ］は、所属リポジトリであるリポジトリ［Ｄ］，リポジトリ［Ｅ］の先祖に該当する。よって、リポジトリ管理部３０は、バックアップされたリポジトリ［Ａ］をリポジトリグループに追加せずに、処理を終了する。
【００４３】
続いて、図１３Ｂは、グループ追加対象のリポジトリが、所属リポジトリの子孫に該当する場合の例を示す。
【００４４】
（Ｂ−１）は、次のようなリポジトリ間の派生関係を示している。まず、リポジトリ［Ａ］がバックアップされた後、リポジトリ［Ｂ］とリポジトリ［Ｃ］とに分割されたことを示す。さらに、リポジトリ［Ｃ］はバックアップされた後に、リポジトリ［Ｄ］，リポジトリ［Ｅ］とに分割されたことを示す。（Ｂ−２）は、（Ｂ−１）の派生関係を持つリポジトリグループにおいて、破損等が原因によりリポジトリ［Ｂ］，リポジトリ［Ｄ］，リポジトリ［Ｅ］がリポジトリグループから除外された後に、バックアップされたリポジトリ［Ａ］をリポジトリ［Ｔ］としてリポジトリグループに追加された場合のリポジトリ間の派生関係を示している。（Ｂ−２）の派生関係を持つリポジトリグループにおいて、バックアップされたリポジトリ［Ｃ］をさらにリポジトリグループに追加しようとする。この場合、リポジトリ［Ｃ］は、所属リポジトリであるリポジトリ［Ｔ］の子孫に該当する。よって、リポジトリ管理部３０は、バックアップされたリポジトリ［Ｃ］をリポジトリグループに追加せずに、処理を終了する。
【００４５】
一方、図１３Ｃは、グループ追加対象のリポジトリが、所属リポジトリの先祖および子孫に該当しない場合の例を示す。
【００４６】
（Ｃ−１）は、次のような分割及び統合が行われた場合のリポジトリ間の派生関係を示している。まず、リポジトリ［Ａ］がリポジトリ［Ｂ］とリポジトリ［Ｃ］とに分割された後、リポジトリ［Ｃ］がリポジトリ［Ｄ］とリポジトリ［Ｅ］とに分割されたことを示す。さらに、リポジトリ［Ｂ］がバックアップされた後に、リポジトリ［Ｂ］とリポジトリ［Ｄ］とが統合され、リポジトリ［Ｇ］がリポジトリグループに追加されたことを示す。（Ｃ−２）は、（Ｃ−１）の派生関係を持つリポジトリグループにおいて、破損等が原因によりリポジトリ［Ｇ］がリポジトリグループから除外されたことを示している。（Ｃ−２）の派生関係を持つリポジトリグループにおいて、バックアップされたリポジトリ［Ｂ］をリポジトリグループに追加しようとする。この場合、リポジトリ［Ｂ］は、所属リポジトリであるリポジトリ［Ｅ］の先祖にも子孫にも該当しない。よって、リポジトリ管理部３０は、バックアップされたリポジトリ［Ｂ］をリポジトリグループに追加することができる。
【００４７】
バックアップされたリポジトリが、所属リポジトリの先祖または子孫に該当する場合、バックアップされたリポジトリをリポジトリグループに追加すると、現在リポジトリグループに含まれる所属リポジトリとバックアップされたリポジトリとの間でデータＩＤの重複が生じる場合がある。そのため、第１の変形例では、バックアップされたリポジトリが、所属リポジトリの先祖または子孫に該当する場合は、バックアップされたリポジトリをリポジトリグループに追加することを禁止する。これにより、リポジトリの分割および統合が行われた後に、バックアップされたリポジトリをリポジトリグループに追加されることが原因で、リポジトリグループ内においてデータＩＤの一意性が崩れることを防止することができる。
【００４８】
続いて、本実施形態の第２の変形例について説明する。第２の変形例では、所属リポジトリ間でデータの移動が行われた場合でも、バックアップされたリポジトリをリポジトリグループに追加されることが原因で、リポジトリグループ内においてデータＩＤの一意性が崩れることを防止する。なお、データの移動とは、データとデータＩＤとを対にして、それらをある所属リポジトリから別の所属リポジトリへ移動させることをいう。この場合、移動元の所属リポジトリからは、移動対象となったデータおよびデータＩＤは消失する。
【００４９】
ここで、データを移動した後に、バックアップされたリポジトリをリポジトリグループに追加した場合に、データＩＤの一意性が崩れるケースについて、図１４を用いて説明する。
【００５０】
図１４では、リポジトリグループにリポジトリ［Ａ］とリポジトリ［Ｂ］とが存在する場合を想定する。まず、リポジトリ［Ａ］をバックアップした後（Ｓ６００）、リポジトリ［Ａ］からデータＩＤ［ａ］が付与されたデータをリポジトリ［Ｂ］へ移動する（Ｓ６０２）。その後、リポジトリ［Ａ］が破損したため（Ｓ６０４）、バックアップされたリポジトリ［Ａ］をリストアして、リポジトリ［Ｃ］として新たにリポジトリグループに追加したとする（Ｓ６０６）。すると、この場合、移動されたデータのデータＩＤ［ａ］が、リポジトリ［Ｂ］とリポジトリ［Ｃ］との間で重複してしまう。このように、所属リポジトリ間でデータの移動が行われていた場合、バックアップされたリポジトリをリポジトリグループに追加することにより、リポジトリグループ内においてデータＩＤの一意性が崩れる場合がある。
【００５１】
上記のようなデータＩＤの一意性の崩れを防止するために、リポジトリ管理部３０が、バックアップされたリポジトリをリポジトリグループに追加する前に、次のような処理を行うことが考えられる。すなわち、リポジトリ管理部３０が、バックアップされたリポジトリに保管されているデータのデータＩＤの中に、現在の所属リポジトリが保管するデータのデータＩＤと一致するデータＩＤが存在するか否かを判定する。そして、判定の結果、一致するデータＩＤが存在する場合には、リポジトリ管理部３０は、バックアップされたリポジトリをリポジトリグループに追加しない。もしくは、リポジトリ管理部３０は、データＩＤが一致したデータを除いて、バックアップされたリポジトリをリポジトリグループに追加する。このような処理を行うことにより、データＩＤの一意性の崩れを防止することができる。しかし、上記のような処理では、リポジトリグループに存在する所属リポジトリの保管するデータが大量に存在する場合、データＩＤが一致するデータを検索するのに時間がかかり、リポジトリ管理部３０が、バックアップデータをリカバリして、リポジトリグループに追加するまでの時間が非常にかかってしまう場合がある。
【００５２】
そこで、第２の変形例では、バックアップされたリポジトリをリカバリして、リポジトリグループに追加する要求をユーザから受けた場合、リポジトリ管理部３０は、以下に示す手順に基づいて、バックアップされたリポジトリをリポジトリグループに追加するか否かを判定する。
【００５３】
図１５は、第２の変形例におけるリポジトリ管理部３０の機能ブロックを示す図である。図１５において、図２と同一のブロックについては同一符号を付してある。上記の実施形態におけるデータサーバ１０との違いは、移動処理部４０と移動情報保持部４２とを備える点である。
【００５４】
移動処理部４０は、上述した所属リポジトリ間のデータの移動を行う。移動情報保持部４２は、移動処理部４０が行った際の移動情報を保持する。移動情報とは、図１６に示すように、移動元のリポジトリＩＤ１０２と移動先リポジトリＩＤ１０４と移動対象データＩＤ１０６とを関連づけた情報である。リポジトリ管理部３０は、この移動情報を参照することで、どのリポジトリからどのデータがそのリポジトリへ移動したのかを把握することができる。
【００５５】
ここで、第２の変形例におけるリポジトリ管理部３０が、バックアップされたリポジトリをリポジトリグループに追加する要求をユーザから受けた場合の処理手順について、図１７に示すフローチャートを用いて説明する。
【００５６】
まず、リポジトリ管理部３０は、グループ追加対象となるリポジトリのバックアップデータに付与されたリポジトリＩＤを取得する（Ｓ７００）。さらに、リポジトリ管理部３０は、移動情報保持部４２が保持する移動情報を取得する（Ｓ７０２）。次いで、リポジトリ管理部３０は、移動情報を参照することで、グループ追加対象となるリポジトリは、移動元リポジトリに該当するか否かを判定する（Ｓ７０４）。判定の結果、グループ追加対象となるリポジトリが移動元リポジトリに該当しない場合（Ｓ７０４での判定結果が、否定「Ｎ」）、リポジトリ管理部３０は、バックアップデータをリカバリする（Ｓ７０６）。次いで、リポジトリ管理部３０は、リカバリしたバックアップデータをリポジトリグループに新たなリポジトリとして追加する（Ｓ７０８）。
【００５７】
一方、判定の結果、グループ追加対象となるリポジトリが移動元リポジトリに該当する場合（Ｓ７０４での判定結果が、肯定「Ｙ」）、バックアップされたリポジトリが保管するデータの中に、現在リポジトリグループに属する所属リポジトリが保管するデータと同一のデータＩＤが付与されたデータが存在すると判断して、そのバックアップされたリポジトリをリポジトリグループに追加せずに、処理を終了する。
【００５８】
このように、第２の変形例では、リポジトリ管理部３０は、バックアップされたリポジトリがデータの移動元となるリポジトリに該当する場合には、そのバックアップされたリポジトリをリポジトリグループに追加しない。これにより、所属リポジトリ間でデータの移動が行われていた場合に、バックアップされたリポジトリをリポジトリグループに追加したことが原因で、リポジトリグループ内においてデータＩＤの一意性が崩れることを防止することができる。
【００５９】
なお、第２の変形例では、グループ追加対象のバックアップデータがデータの移動元となるリポジトリに該当する場合には、そのバックアップデータをリポジトリグループに追加しない例について説明した。しかし、バックアップデータに含まれる移動データを削除した後に、そのバックアップデータをリポジトリグループに追加してもよい。そこで、本実施形態の第３の変形例として、移動データを削除する場合を説明する。
【００６０】
図１８は、第３の変形例において、バックアップされたリポジトリをリポジトリグループに追加する要求をユーザから受けた場合のリポジトリ管理部３０の処理手順を示すフローチャートである。図１８において、図１７と同一の処理については同一符号を付してある。
【００６１】
図１８において、バックアップデータがデータの移動元となるリポジトリに該当する場合には（Ｓ７０４での判定結果が、肯定「Ｙ」）、リポジトリ管理部３０は、そのバックアップデータから移動対象データを削除した後（Ｓ７０５）、バックアップデータのリカバリ及びリポジトリグループの追加を行う（Ｓ７０６，Ｓ７０８）。
【００６２】
以上、実施形態および各変形例によれば、リポジトリ管理部３０が、バックアップされたリポジトリをリカバリして、リポジトリグループに追加することが原因で、リポジトリグループ内においてデータＩＤの一意性が崩れることを防止することができる。
【００６３】
なお、リポジトリ管理部３０は、バックアップされたリポジトリをリカバリして、リポジトリグループに追加する要求をユーザから受けた場合、上記の実施形態および各変形例において説明した各判定をすべて満たす場合に、バックアップされたリポジトリをリポジトリグループに追加してもよい。
【００６４】
つまり、以下の３つの条件を満たす場合に、リポジトリ管理部３０は、バックアップされたリポジトリをリポジトリグループに追加することを許可する。
（１）バックアップデータのリポジトリに付与されたリポジトリＩＤと同一のリポジトリＩＤを付与された所属リポジトリが存在しない。
（２）バックアップされたリポジトリが、所属リポジトリの先祖または子孫に該当しない。
（３）バックアップされたリポジトリがデータの移動元となるリポジトリに該当しない。
【図面の簡単な説明】
【００６５】
【図１】実施形態におけるデータ管理システムのシステム構成を示す図である。
【図２】実施形態におけるデータサーバの機能ブロックを示す図である。
【図３Ａ】バックアップされたリポジトリをリカバリして、新たにリポジトリグループに追加した場合に、リポジトリグループ内において、データＩＤの一意性が崩れるケースを説明するための図である。
【図３Ｂ】バックアップされたリポジトリをリポジトリグループに追加した場合に、リポジトリグループ内において、データＩＤの一意性が崩れるケースを説明するための図である。
【図４】実施形態において、バックアップされたリポジトリをリポジトリグループに追加する要求をユーザから受けた場合のリポジトリ管理部の処理手順を示すフローチャートである。
【図５】リポジトリの分割について説明するための図である。
【図６】リポジトリの統合について説明するための図である。
【図７Ａ】バックアップされたリポジトリをリポジトリの分割後にリポジトリグループに追加した場合に、リポジトリグループ内においてデータＩＤの一意性が崩れるケースを説明するための図である。
【図７Ｂ】バックアップされたリポジトリをリポジトリの分割後にリポジトリグループに追加した場合に、リポジトリグループ内においてデータＩＤの一意性が崩れるケースを説明するための図である。
【図８】第１の変形例におけるデータサーバの機能ブロックを示す図である。
【図９】リポジトリの分割および統合によって生じるリポジトリ間の派生関係を示すイメージ図である。
【図１０】リポジトリの分割時におけるリポジトリ管理部の処理手順を示すフローチャートである。
【図１１】リポジトリの統合時におけるリポジトリ管理部の処理手順を示すフローチャートである。
【図１２】第１の変形例において、バックアップされたリポジトリをリポジトリグループに追加する要求をユーザから受けた場合のリポジトリ管理部の処理手順を示すフローチャートである。
【図１３Ａ】グループ追加対象のリポジトリが、所属リポジトリの先祖に該当する場合の例を説明するための図である。
【図１３Ｂ】グループ追加対象のリポジトリが、所属リポジトリの子孫に該当する場合の例を説明するための図である。
【図１３Ｃ】グループ追加対象のリポジトリが、所属リポジトリの先祖もしくは子孫のいずれにも該当しない場合の例を説明するための図である。
【図１４】バックアップされたリポジトリを、リポジトリ間でデータ移動が行われた後に、リポジトリグループに追加した場合に、リポジトリグループ内においてデータＩＤの一意性が崩れるケースを説明するための図である。
【図１５】第２の変形例におけるデータサーバの機能ブロックを示す図である。
【図１６】移動情報保持部が保持する移動情報のデータ構造を示す図である。
【図１７】第２の変形例において、バックアップされたリポジトリをリポジトリグループに追加する要求をユーザから受けた場合のリポジトリ管理部の処理手順を示すフローチャートである。
【図１８】第３の変形例において、バックアップされたリポジトリをリポジトリグループに追加する要求をユーザから受けた場合のリポジトリ管理部の処理手順を示すフローチャートである。
【符号の説明】
【００６６】
１０  データサーバ、１２  リポジトリ、１４  データ格納部、２０  ＩＤ生成部、２８  派生関係保持部、３０  リポジトリ管理部、３２  グループ編成部、３４  所属リポジトリＩＤ保持部、３６  バックアップ・リカバリ処理部、３８  分割統合処理部、４０  移動処理部、４２  移動情報保持部、５０  クライアント、６０  ネットワーク、８０  リポジトリグループ。
【図１】
2007086854.tif 000003
【図２】
2007086854.tif 000004
【図３Ａ】
2007086854.tif 000005
【図３Ｂ】
2007086854.tif 000006
【図４】
2007086854.tif 000007
【図５】
2007086854.tif 000008
【図６】
2007086854.tif 000009
【図７Ａ】
2007086854.tif 000010
【図７Ｂ】
2007086854.tif 000011
【図８】
2007086854.tif 000012
【図９】
2007086854.tif 000013
【図１０】
2007086854.tif 000014
【図１１】
2007086854.tif 000015
【図１２】
2007086854.tif 000016
【図１３Ａ】
2007086854.tif 000017
【図１３Ｂ】
2007086854.tif 000018
【図１３Ｃ】
2007086854.tif 000019
【図１４】
2007086854.tif 000020
【図１５】
2007086854.tif 000021
【図１６】
2007086854.tif 000022
【図１７】
2007086854.tif 000023
【図１８】
2007086854.tif 000024