(57)【要約】    【課題】リポジトリの間のデータの移動に関する情報を特別な仕組みを採用することなく管理する。    【解決手段】文書管理システム１００は、複数のリポジトリ１２と、リポジトリ１２を管理するリポジトリ管理部３０とから構成される。リポジトリ管理部３０は、ＩＤ生成部２０と、グループ編成部３２と、所属リポジトリＩＤ保持部３４と、バックアップ・リストア処理部３６、分割統合処理部３８と、移動処理部４０とを備える。分割統合処理部３８は、ユーザからの指示に基づいて、リポジトリの分割・統合の処理を行う。分割・統合履歴情報保持部２８は、リポジトリの分割・統合により発生するリポジトリの分割・統合履歴の情報を保持する。移動処理部４０は、ユーザからの指示に基づいてデータを１のリポジトリから他のリポジトリに移動させ、データの移動をリポジトリの分割・統合で表し、対応する分割・統合履歴の情報を分割・統合履歴情報保持部２８に記録する。【選択図】図２
2010122768.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
一意な識別子が割り当てられたデータを記憶し、一意の識別子が割り当てられるデータ記憶部の分割または統合を行ったときに、当該分割または統合の履歴をデータ記憶部の識別子を用いて記述したリポジトリ変更履歴情報を記録する手段であって、当該分割または統合の後の新たなデータ記憶部に対する変更履歴情報を、当該分割または統合の前のデータ記憶部に対して記憶されているリポジトリ変更履歴情報に付加して記録するリポジトリ変更履歴記録手段、
上記データ記憶部の間におけるデータの移動を行ったときに、移動元のデータ記憶部および移動先のデータ記憶部に新たな識別子をそれぞれ割り当て、当該移動の履歴を上記リポジトリ変更履歴情報を用いて記述した移動履歴情報を記録する手段であって、当該移動前の移動元のデータ記憶部から当該移動後の移動元のデータ記憶部および仮想のデータ記憶部への分割に関するリポジトリ変更履歴情報と、当該移動前の移動先のデータ記憶部および上記仮想のデータ記憶部から当該移動後の移動先のデータ記憶部への統合に関するリポジトリ変更履歴情報とにより記述した移動履歴情報を、当該移動前の移動元のデータ記憶部に対して記録されているリポジトリ変更履歴情報および当該移動前の移動先のデータ記憶部に対して記録されているリポジトリ変更履歴情報に付加して記録する移動履歴記録手段
として機能させるためのリポジトリ管理用プログラム。
【請求項２】
バックアップしたデータ記憶部を対象としたリストアを行った場合に、当該リストアの対象のデータ記憶部に記憶されているデータと他の既存のデータ記憶部に記憶されているデータとの間で識別子が重複しないようにするデータ処理手段
として上記コンピュータをさらに機能させる請求項１記載のリポジトリ管理用プログラム。
【請求項３】
上記データ処理手段は、上記移動前の移動先のデータ記憶部に記録されている変更履歴情報に、上記移動前の移動元のデータ記憶部の祖先からの移動履歴情報を記述する変更履歴情報が含まれる場合に、当該祖先からの移動履歴情報を記述する変更履歴情報を、当該祖先から今回の移動先への移動が行われたことを記述する変更履歴情報に基づいて書き換える請求項２記載のリポジトリ管理用プログラム。
【請求項４】
上記データ処理手段は、上記リストアの対象のバックアップ済みデータ記憶部と他の既存のデータ記憶部との間で識別子が同一でなく、一方が他の祖先でない場合に、リストアの対象のデータ記憶部に記憶されているデータと他の既存のデータ記憶部に記憶されているデータとの間で識別子が重複しないと判定する請求項２に記載のリポジトリ管理用プログラム。
【請求項５】
上記データ処理手段は、リストアの対象のデータ記憶部に記憶されているデータの識別子が他の既存のデータ記憶部に記憶されているデータの識別子と同一の場合に、上記リストアの対象のデータ記憶部に記憶されている当該識別子が同一のデータを削除する請求項２から４のいずれかに記載のリポジトリ管理用プログラム。
【請求項６】
一意な識別子が割り当てられたデータをそれぞれ記憶し、それぞれ一意の識別子が割り当てられるデータ記憶部の分割または統合を行ったときに、当該分割または統合の履歴をデータ記憶部の識別子を用いて記述したリポジトリ変更履歴情報を記録する手段であって、当該分割または統合の後の新たなデータ記憶部に対する変更履歴情報を、当該分割または統合の前のデータ記憶部に対して記憶されているリポジトリ変更履歴情報に付加して記録するリポジトリ変更履歴記録手段と、
上記データ記憶部の間におけるデータの移動を行ったときに、移動元のデータ記憶部および移動先のデータ記憶部に新たな識別子をそれぞれ割り当て、当該移動の履歴を上記リポジトリ変更履歴情報を用いて記述した移動履歴情報を記録する手段であって、当該移動前の移動元のデータ記憶部から当該移動後の移動元のデータ記憶部および仮想のデータ記憶部への分割に関するリポジトリ変更履歴情報と、当該移動前の移動先のデータ記憶部および上記仮想のデータ記憶部から当該移動後の移動先のデータ記憶部への統合に関するリポジトリ変更履歴情報とにより記述した移動履歴情報を、当該移動前の移動元のデータ記憶部に対して記録されているリポジトリ変更履歴情報および当該移動前の移動先データ記憶部に対して記録されているリポジトリ変更履歴情報に付加して記録する移動履歴記録手段とを有するリポジトリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、リポジトリ管理用プログラムおよびリポジトリ管理装置に関する。
【背景技術】
【０００２】
分散したリポジトリを有するシステム、例えば複数の文書リポジトリを連携させたシステムにおいて、リポジトリに記憶されたデータにグローバルに一意な識別子、例えばＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  ＩＤｅｎｔｉｆｉｅｒ）やＧＵＩＤ（Ｇｌｏｂａｌｌｙ  Ｕｎｉｑｕｅ  ＩＤｅｎｔｉｆｉｅｒ）を付与し、データの一意性を保障する場合がある。その場合、文書リポジトリに記憶された文書データが識別子により一意に特定できるため、文書データを記憶する文書リポジトリが変わっても、同じ識別子によりその文書データにアクセスできる。
【０００３】
特許文献１は、各リポジトリで文書に対するローカルな識別子を管理すると同時に、複数のリポジトリを管理する装置で、文書に対するグローバルな識別子を管理している。リポジトリのバックアップ・リストア操作や、文書の移動操作により、文書の識別子の重複が検出した場合には、文書の識別子を更新することで、文書の一意性を保障することを提案している。
【０００４】
特許文献２は、リポジトリにもグローバルな識別子を付与することで、リポジトリのバックアップ・リストア操作を行っても、文書の一意性を保障することを提案している。また、この特許文献は、リポジトリの分割・統合履歴を、分割・統合したリポジトリでそれぞれ保持することで、リポジトリの分割・統合する前後でリポジトリのバックアップ・リストア操作を行っても、文書の一意性を保障することを提案している。さらに、この特許文献は、移動情報（移動元リポジトリ識別子・移動先リポジトリ識別子・移動文書識別子の三つ組み）を、リポジトリ外の記憶装置に保持することで、文書を移動する前後でリポジトリのバックアップ・リストア操作を行っても、文書の一意性を保障することを提案している。
【特許文献１】特開２００７−２９９２８８号公報
【特許文献２】特開２００７−０８６８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この発明は、データ記憶部の間におけるデータの移動が行われる場合において、各データ記憶部に記憶されたデータの移動元のデータ記憶部を示す情報をデータ記憶部毎に記録するリポジトリ管理技術を提供することを目的としている。
【課題を解決するための手段】
【０００６】
請求項１の発明によれば、コンピュータを：一意な識別子が割り当てられたデータを記憶し、一意の識別子が割り当てられるデータ記憶部の分割または統合を行ったときに、当該分割または統合の履歴をデータ記憶部の識別子を用いて記述したリポジトリ変更履歴情報を記録する手段であって、当該分割または統合の後の新たなデータ記憶部に対する変更履歴情報を、当該分割または統合の前のデータ記憶部に対して記憶されているリポジトリ変更履歴情報に付加して記録するリポジトリ変更履歴記録手段；および、上記データ記憶部の間におけるデータの移動を行ったときに、移動元のデータ記憶部および移動先のデータ記憶部に新たな識別子をそれぞれ割り当て、当該移動の履歴を上記リポジトリ変更履歴情報を用いて記述した移動履歴情報を記録する手段であって、当該移動前の移動元のデータ記憶部から当該移動後の移動元のデータ記憶部および仮想のデータ記憶部への分割に関するリポジトリ変更履歴情報と、当該移動前の移動先のデータ記憶部および上記仮想のデータ記憶部から当該移動後の移動先のデータ記憶部への統合に関するリポジトリ変更履歴情報とにより記述した移動履歴情報を、当該移動前の移動元のデータ記憶部に対して記録されているリポジトリ変更履歴情報および当該移動前の移動先のデータ記憶部に対して記録されているリポジトリ変更履歴情報に付加して記録する移動履歴記録手段として機能させるためのリポジトリ管理用プログラム
が実現される。
請求項２の発明によれば、請求項１記載のリポジトリ管理用プログラムにおいて、バックアップしたデータ記憶部を対象としたリストアを行った場合に、当該リストアの対象のデータ記憶部に記憶されているデータと他の既存のデータ記憶部に記憶されているデータとの間で識別子が重複しないようにするデータ処理手段として上記コンピュータをさらに機能させる。
請求項３の発明によれば、請求項２記載のリポジトリ管理用プログラムにおいて、上記データ処理手段は、上記移動前の移動先のデータ記憶部に記録されている変更履歴情報に、上記移動前の移動元のデータ記憶部の祖先からの移動履歴情報を記述する変更履歴情報が含まれる場合に、当該祖先からの移動履歴情報を記述する変更履歴情報を、当該祖先から今回の移動先への移動が行われたことを記述する変更履歴情報に基づいて書き換える。
請求項４の発明によれば、請求項２に記載のリポジトリ管理用プログラムにおいて、上記データ処理手段は、上記リストアの対象のバックアップ済みデータ記憶部と他の既存のデータ記憶部との間で識別子が同一でなく、一方が他の祖先でない場合に、リストアの対象のデータ記憶部に記憶されているデータと他の既存のデータ記憶部に記憶されているデータとの間で識別子が重複しないと判定する。
請求項５の発明によれば、請求項２〜４のいずれかに記載のリポジトリ管理用プログラムにおいて、上記データ処理手段は、リストアの対象のデータ記憶部に記憶されているデータの識別子が他の既存のデータ記憶部に記憶されているデータの識別子と同一の場合に、上記リストアの対象のデータ記憶部に記憶されている当該識別子が同一のデータを削除する。
請求項６の発明によれば、一意な識別子が割り当てられたデータをそれぞれ記憶し、それぞれ一意の識別子が割り当てられるデータ記憶部の分割または統合を行ったときに、当該分割または統合の履歴をデータ記憶部の識別子を用いて記述したリポジトリ変更履歴情報を記録する手段であって、当該分割または統合の後の新たなデータ記憶部に対する変更履歴情報を、当該分割または統合の前のデータ記憶部に対して記憶されているリポジトリ変更履歴情報に付加して記録するリポジトリ変更履歴記録手段と；上記データ記憶部の間におけるデータの移動を行ったときに、移動元のデータ記憶部および移動先のデータ記憶部に新たな識別子をそれぞれ割り当て、当該移動の履歴を上記リポジトリ変更履歴情報を用いて記述した移動履歴情報を記録する手段であって、当該移動前の移動元のデータ記憶部から当該移動後の移動元のデータ記憶部および仮想のデータ記憶部への分割に関するリポジトリ変更履歴情報と、当該移動前の移動先のデータ記憶部および上記仮想のデータ記憶部から当該移動後の移動先のデータ記憶部への統合に関するリポジトリ変更履歴情報とにより記述した移動履歴情報を、当該移動前の移動元のデータ記憶部に対して記録されているリポジトリ変更履歴情報および当該移動前の移動先データ記憶部に対して記録されているリポジトリ変更履歴情報に付加して記録する移動履歴記録手段と；を有するリポジトリ管理装置を実現する。
【発明の効果】
【０００７】
請求項１の発明によれば、データ記憶部の間におけるデータの移動が行われる場合において、各データ記憶部に記憶されたデータの移動元のデータ記憶部を示す情報をデータ記憶部毎に記録することができる。
請求項２の発明によれば、さらに、バックアップ済みデータ記憶部のリストアによりデータの一意性が崩れないようにできる。
請求項３の発明によれば、さらに、データ記憶部の変更履歴を示す情報のサイズを低減させることができる。
請求項４の発明によれば、さらに、祖先および子孫の関係に基づいてデータの識別子の重複がない場合を判定できる。
請求項５の発明によれば、さらに、バックアップ済みデータ記憶部を対象にしてリストアする場合、データの識別子に重複があったときに、その重複を解消することができる。
請求項６の発明によれば、データ記憶部の間におけるデータの移動が行われる場合において、各データ記憶部に記憶されたデータの移動元のデータ記憶部を示す情報をデータ記憶部毎に記録することができる。
【発明を実施するための最良の形態】
【０００８】
以下、この発明の実施例について説明する。
【０００９】
図１は、この発明の実施例の文書管理システム１００の利用環境を示しており、この図において、文書管理システム１００は、ＬＡＮ（ローカル・エリア・ネットワーク）やインターネットなどのネットワーク３００を介してクライアント装置２００に接続されている。文書管理システム１００は、ネットワーク３００上のクライアント装置２００からの文書操作要求に応じて、要求対象の文書に対する文書操作サービスを提供する。ここで、文書は広くデータを意味し、文書データ、画像データ、動画データなど、ネットワーク３００を介して文書管理システム１００とクライアント装置２００とがやり取り可能なデータ全般をいう。以下では、単にデータと呼ぶこともある。
【００１０】
図２は、文書管理システム１００を機能ブロックを用いて例示している。文書管理システム１００は典型的にはコンピュータに記録媒体または通信媒体１０１（図１参照）を介してプログラムをインストールして実現される。コンピュータは周知のとおりＣＰＵ、主メモリ、補助記憶装置、入出力装置、バスシステム等を具備して構成される。文書管理システム１００の各種の機能ブロックはコンピュータのハードウェア資源および各種のプログラムを協働させて実現される。
【００１１】
文書管理システム１００は、データを保管する複数のリポジトリ（文書リポジトリとも呼ぶ）１２と、リポジトリ１２を管理するリポジトリ管理部３０とから構成される。リポジトリ管理部３０は、クライアント装置２００を介してユーザにより選択された、１または複数のリポジトリ１２をリポジトリグループ８０として構成し、そのグループに含まれるリポジトリ１２がそれぞれ連携して、複数のデータを分散して管理する。文書管理システム１００は、リポジトリグループに属するリポジトリ１２に保管されているデータを、クライアント装置２００に提供する。つまり、クライアント装置２００は、リポジトリグループに属するリポジトリ１２が保管するデータにアクセスして、閲覧や編集などの処理をすることができる。以下、リポジトリグループに属するリポジトリを、「所属リポジトリ」と称す。なお、この実施例では、文書管理システム１００が備えるリポジトリ１２をリポジトリグループとして構成し、データを分散して管理する例について説明する。しかし、他のコンピュータが備えるリポジトリをネットワーク３００を介して接続して、そのコンピュータのリポジトリをリポジトリグループとして構成してもよい。リポジトリは、データや情報、プログラムなどを体系立てて保管するシステムであり（ここではデータ記憶部ともいう）、バックアップ、リストア、データ等の書き込み、読み出し、移動等を行え、この例では分割、統合の履歴等の情報をその内部に保管管理できるものであるが、これに限定されない。
【００１２】
各リポジトリ１２は、データ格納部（文書格納部とも呼ぶ）１４を備える。図２に示すように、データ格納部１４には、保管対象となるデータ（文書データとも呼ぶ）２２とそのデータをグローバルに一意に特定するためのデータＩＤ（文書識別子とも呼ぶ）２４とが関連づけて格納される。また、データ格納部１４には、リポジトリ１２をグローバルに一意に特定するためのリポジトリＩＤ２６が関連づけられている。
【００１３】
リポジトリ管理部３０は、ＩＤ生成部２０と、グループ編成部３２と、所属リポジトリＩＤ保持部３４と、バックアップ・リストア処理部３６、分割統合処理部３８と、移動処理部４０とを備える。
【００１４】
ＩＤ生成部２０は、グローバルに一意なデータＩＤやリポジトリＩＤを生成し、各リポジトリ１２に提供する。ここで、グローバルに一意なＩＤとしては、例えばＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  ＩＤｅｎｔｉｆｉｅｒ）又はＧＵＩＤ（Ｇｌｏｂａｌｌｙ  Ｕｎｉｑｕｅ  ＩＤｅｎｔｉｆｉｅｒ）と呼ばれる１２８ビットの識別情報を用いることができる。ちなみに、ＵＵＩＤは、グローバルな一意性を保証するために、そのＵＵＩＤを作成した時刻や作成に使用したマシンに装着されたネットワークカードのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス等を含んでいる。クライアント装置２００は、要求対象となるデータに対応するデータＩＤを示したデータ要求を文書管理システム１００に送信することで、文書管理システム１００からそのデータ要求の応答として、要求対象データを受け取ることができる。
【００１５】
グループ編成部３２は、ユーザからの指示に応じて、リポジトリグループに新たなリポジトリを追加したり、既存の所属リポジトリをリポジトリグループから除外する。所属リポジトリＩＤ保持部３４は、現在リポジトリグループに属する所属リポジトリのリポジトリＩＤとその所属リポジトリの物理位置情報とを関連づけた所属リポジトリ情報を保持する。ここで、物理位置情報は、リポジトリ１２にアクセスするために必要な情報であり、例えば、ディレクトリ名、ＩＰアドレス、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）などである。
【００１６】
バックアップ・リストア処理部３６は、ユーザからの指示に応じて、所属リポジトリをバックアップしたり、バックアップされたリポジトリをリストアする。ここで、バックアップとは、ある時点でのリポジトリのスナップショットを別の記憶領域や別の記憶メディアにコピーして保存する処理のことをいう。よって、バックアップを行うことで、ある時点においてデータ格納部１４に格納されているデータとそのデータＩＤ及びそのリポジトリのリポジトリＩＤがコピーされ、バックアップデータとして、別の記憶領域や別の記憶メディアに保存される。また、リストアとは、別の記憶領域や別の記憶メディアに保存されたスナップショットをグループ編成部３２がアクセスできる状態にすることをいう。よって、リストアを行った後、グループ編成部３２がバックアップされたリポジトリにアクセスすると、リポジトリグループに追加される。
【００１７】
分割統合処理部３８は、上記の通り、ユーザからの指示に基づいて、リポジトリの分割もしくは統合の処理を行う。文書リポジトリ１２の各々には分割・統合履歴情報保持部２８が設けられ、この分割・統合履歴情報保持部２８は、リポジトリの分割もしくは統合により発生するリポジトリの分割・統合履歴（リポジトリ変更履歴とも呼ぶ）の情報を保持する。文書リポジトリ１２の各々の分割・統合履歴情報保持部２８は、分散して配置され、文書リポジトリ１２が破損してもその文書リポジトリ１２の分割・統合履歴情報保持部２８が失われるだけで済む。
【００１８】
なお、以下の説明では、図３に例示するように、リポジトリ１２のリポジトリ識別子を四角で囲み、その上に分割・統合履歴の情報を付記する。
【００１９】
移動処理部４０は、ユーザからの指示に基づいてデータを１のリポジトリから他のリポジトリに移動させる。さらに、移動処理部４０は、データの移動をリポジトリの分割・統合で表し、対応する分割・統合履歴の情報を分割・統合履歴情報保持部２８に記録する。
【００２０】
データの移動は、仮想的なリポジトリを介在させて１回のリポジトリ分割および１回のリポジトリ統合として把握される。図４〜図６を参照してデータの移動がどのように記述されるかについての例を説明する。図４のＡ０を移動元のリポジトリ、Ｂ０を移動先のリポジトリとする。まず、図５に例示するように、移動元のリポジトリＡ０を移動対象のデータｏｇｊ以外のすべてのデータを残すリポジトリＡ１＿１と、移動対象のデータｏｂｊのみを含むリポジトリＡ１＿２とに分割する。リポジトリＡ１＿１およびＡ１＿２には、ともに分割の履歴である「Ａ０→Ａ１＿１＋Ａ１＿２」が記録される。つぎに、図６に例示するように、移動対象のデータｏｂｊを含むリポジトリＡ１＿２と移動先のリポジトリＢ０とを統合してリポジトリＢ１を得る。移動先のリポジトリには、先の分割の履歴である「Ａ０→Ａ１＿１＋Ａ１＿２」と今回の統合の履歴である「Ａ１＿２＋Ｂ０→Ｂ１」が記録される。移動元のリポジトリのＩＤはＡ０からＡ１＿１に変更され、移動先のリポジトリのＩＤはＢｏからＢ１に変更される。このようにデータの移動をリポジトリの分割および統合により記述してその移動の履歴をリポジトリの分割・統合履歴の情報で記述される。
【００２１】
ここで、事前にリポジトリＡ０をバックアップしておいたとして、リポジトリＡ１＿１を削除し、リポジトリＡ０をリストアしようとした場合を考える。リポジトリＢ１のリポジトリ分割・統合履歴には、リポジトリＡ０を先祖とするリポジトリを含んでいることが記録されているが、リポジトリＡ０にはその履歴がないので、リポジトリＡ０とリポジトリＢ１には同一の識別子を持つ文書が存在する可能性があることが分かり、リポジトリＡ０のリストアを中止する。
【００２２】
また、事前にリポジトリＡ０とリポジトリＢ０の両方をバックアップしておいたとして、リポジトリＡ１＿１とリポジトリＢ１を削除し、リポジトリＡ０、リポジトリＢ０の順にリストアしようとした場合を考える。リポジトリＡ０をリストアするときには、他のリポジトリが存在しないので、何もチェックせずにリストアを行う。リポジトリＢ０をリストアするときには、リポジトリＡ０、リポジトリＢ０の両方ともリポジトリ分割・統合履歴がなく、同一の識別子を持つ文書が存在しないことが分かり、リポジトリＢ０のリストアを行う。
【００２３】
図７〜図８は、さらにデータを移動した場合の一例を示し、この移動もリポジトリの分割・統合の履歴として付加されていく。典型的には、データを移動するたびに分割・統合の履歴が増大していく。ただし、リポジトリのＩＤに先祖、子孫の関係がわかる表記を含ませておき、最初の起点と現在の到達点のみを残し、他の履歴を削除して分割・統合履歴を圧縮してもよい。図の例では、「Ａ」、「Ｂ」はグローバルに一意な識別子から構成し、その分岐関係（先祖−子孫の関係）をサフィックスや記号「＿」で表している。図９に示す例では、中間のリポジトリの表記を削除して圧縮している。この処理は、後に説明するように図１０のステップＳ１１、Ｓ１２に例示するように、移動元リポジトリの祖先からのデータの移動による分割・統合履歴がすでに存在する場合に、以前のデータ移動によるリポジトリの分割・統合履歴のうちの分岐先のレポジトンリの識別子を、最新の分割・統合履歴の識別子に更新し、同様に、リポジトリ群内のすべてのリポジトリの分割・統合履歴を更新することにより実行される。
【００２４】
すなわち、単純にリポジトリ分割・統合履歴を増やしてしまうと、リストア操作時のリポジトリ分割・統合履歴のチェックに時間がかかってしまう。文書の移動中に一時的にできるリポジトリ（Ａ１＿２やＡ２＿２）をバックアップすることはできないので、その一時的なリポジトリの情報をリポジトリ分割・統合履歴に複数保持しておく必要はない。そこで、リポジトリ識別子に一時的なリポジトリかどうかの情報を持たせて、文書の移動によるリポジトリ分割・統合履歴を区別できるようにし、直前のリポジトリ分割・統合履歴が文書の移動によるものであれば、リポジトリ分割・統合履歴をマージしてしまう（図９）。
【００２５】
事前にリポジトリＡ１＿１をバックアップしておいたとして、リポジトリＡ２＿１を削除し、リポジトリＡ１＿１をリストアしようとした場合を考える。リポジトリＢ２のリポジトリ分割・統合履歴には、リポジトリＡ１＿１を先祖とするリポジトリを含んでいることが記録されているが、リポジトリＡ１＿１にはその履歴がないので、リポジトリＡ１＿１とリポジトリＢ２には同一の識別子を持つ文書が存在する可能性があることが分かり、リポジトリＡ１＿１のリストアを中止する。
【００２６】
また、事前にリポジトリＡ１＿１とリポジトリＢ１の両方をバックアップしておいたとして、リポジトリＡ２＿１とリポジトリＢ２を削除し、リポジトリＡ１＿１、リポジトリＢ１の順にリストアしようとした場合を考える。リポジトリＡ１＿１をリストアするときには、他のリポジトリが存在しないので、何もチェックせずにリストアを行う。リポジトリＢ１をリストアするときには、リポジトリＢ１のリポジトリ分割・統合履歴から、リポジトリＡ１＿１の親のリポジトリＡ０から分割されたリポジトリＡ１＿２を統合していることが分かり、リポジトリＡ１＿１には同一の識別子を持つ文書が存在しないことが分かり、リポジトリＢ１のリストアを行う。
【００２７】
実際のリポジトリ分割・統合では、分割されたリポジトリをバックアップすることができる。文書移動によるリポジトリ分割・統合履歴を追加するときに、直前のリポジトリ分割・統合履歴が実際のリポジトリ分割・統合によるものであれば、リポジトリ分割・統合履歴をマージしない。
【００２８】
なお、文書の移動によるリポジトリ分割・統合のたびにリポジトリ識別子を変更していたが、これは説明を容易にするためである。一時的なリポジトリに新しいリポジトリ識別子を割り当て、そのリポジトリ識別子を含むリポジトリ分割・統合履歴を記録できればよいので、文書の移動によるリポジトリ分割・統合のたびにリポジトリ識別子を変更しなくてもよい。
【００２９】
リポジトリ間の文書の移動は一方向ではなく両方向である。リポジトリＣからリポジトリＤに文書を移動する際、直前のリポジトリ分割・統合履歴が、リポジトリＤからリポジトリＣへの文書移動による履歴である場合は、さらに１つ前のリポジトリ分割・統合履歴を見て、リポジトリＣからリポジトリＤへの文書移動による履歴であれば、マージしてしまう。２つのリポジトリ間だけでなく、３つ、４つ、…のリポジトリ間でも同様に直前だけではなくさらに前のリポジトリ分割・統合履歴とマージすることができる。
【００３０】
以上により、文書の移動を繰り返してもリポジトリのリストア操作時のチェックにかかる時間を少なく抑えることができる。また、リポジトリ外の記憶装置を用いないので、リポジトリ外の記憶装置のバックアップ・リストア操作を考慮する必要がなくなる。
【００３１】
つぎにこの実施例の動作例を説明する。まず、図１０はデータ移動時の分割・統合履歴の記録動作例を説明している。この動作の詳細は以下のとおりである。
［ステップＳ１０］：移動先リポジトリの分割・統合履歴を過去ｎ回分見る。この場合、分割・統合履歴のサイズ縮小を重視するのであればｎを大きくし、文書移動時の処理時間短縮を重視するのであればｎを小さくする。
［ステップＳ１１］：移動元リポジトリの祖先からの文書の移動による分割・統合履歴が存在するかどうか判別する。存在する場合にはステップＳ１２へ進み、そうでない場合にはステップＳ１３へ進む。
［ステップＳ１２］：以前の文書移動によるリポジトリの分割・統合履歴のうち、最新の分割・統合履歴の識別子を更新し、リポジトリ群内のすべてのリポジトリの分割・統合履歴を更新する。この後、移動に関連する記録処理を終了する。
［ステップＳ１３］：移動元リポジトリに、分割履歴を記録する。
［ステップＳ１４］：移動先リポジトリに、移動元リポジトリの分割履歴を記録する。
［ステップＳ１５］：移動先リポジトリに、移動元リポジトリから分割されたリポジトリとの統合履歴を記録する。この後、移動に関連する記録処理を終了する
【００３２】
つぎにバックアップ済みのリポジトリのリストアの前処理の動作例を図１１を参照して説明する。この処理は以下のとおりである。
［ステップＳ２０］：リポジトリ群のすべてのリポジトリについて以下の処理を繰り返す。
［ステップＳ２１］：判断対象のリポジトリが、リストアするリポジトリと同一の識別子を持つかどうかを判定して、持つ場合にはリポジトリのリストアを中止し、そうでない場合にはステップＳ２２へ進む。
［ステップＳ２２］：判断対象のリポジトリが、リストアするリポジトリの祖先にあたるかどうかを判別して、祖先に当たる場合にはリポジトリのリストアを中止し、そうでない場合にはステップ２３へ進む。
［ステップＳ２３］：判断対象のリポジトリが、リストアするリポジトリの子孫にあたるかどうかを判別して、子孫に当たる場合にはリポジトリのリストアを中止し、そうでない場合にはステップ２３へ進む。
［ステップＳ２４］：判断対象の理ポジ取りとリストアするリポジトリとの間の分割・統合履歴がすべて互いに記録されているが（圧縮により削除されているか）どうかを判別し、すべてが記録されていない場合にはステップＳ２５へ進み、すべてか記録されている場合にはステップＳ３２へ進む。
［ステップＳ２５］：リストアを中止するかどうかをユーザに問い合わせる。ユーザがリストアの中止を選択した場合にはステップＳ２６へ進み、そうでない場合にはステップＳ２７へ進む。
［ステップＳ２６］：リポジトリのリストアを中止する。
［ステップＳ２７］：リストアするリポジトリとの間の分割・統合履歴で、不足している履歴を互いに記録する。
［ステップＳ２８］：リストアするリポジトリと対象のリポジトリで、同じ識別子を持つ文書を探す。
［ステップＳ２９］：同じ識別子を持つ文書が存在するかどうかを偏呈して存在しなければステップＳ３２へ進み、存在する場合にはステップＳ３０へ進む。
［ステップＳ３０］：リストアするリポジトリから、対象のリポジトリと同じ識別子を持つ文書を削除する。
［ステップＳ３１］：削除した文書を、対象のリポジトリに移動したものとして、分割・統合履歴を記録する。
［ステップＳ３２］：リポジトリ群のすべてが処理されたかどうかを判断して、処理されていなければステップＳ２０へ戻り、処理されていればリストアの前処理を終了する。この後、リストアを行う。
【００３３】
なお、リポジトリのリポジトリ群への追加も同様の処理となる。文書の識別子が重複している可能性があると判定されたときにリストアを中止するかどうかは、システムの運用ポリシーによる。
【００３４】
ここでは、ステップＳ２５〜ステップＳ３１の処理を例を挙げて補足的に説明する。
【００３５】
図１２に例示するように、Ａ０からＢ０へ文書ｏｂｊ３を移動するように操作者から指示されたとする。このとき、図１０にしたがって、文書の移動処理を行う。
【００３６】
移行先リポジトリＢ０には、分割・統合履歴が存在しないので、新規に分割・統合履歴を記録し、例えば図１２から図１４のようにリポジトリは変化する。なお、図１３は処理の中間状態を例示したもので、この状態が見えることはない。
【００３７】
さらに図１４において、Ａ１＿１からＢ１へ文書ｏｂｊ２を移動するように操作者から指示されたとする。この場合も、図１０にしたがって、文書の移動処理を行う。
【００３８】
ｎ＝０（分割・統合履歴をマージしない）であれば、新規に分割・統合履歴を記録し、図１４から図１６のようにリポジトリは変化する。なお、図１５は処理の中間状態を例示したもので、この状態が見えることはない。
【００３９】
ｎ＞０であれば、移行先リポジトリＢ１に、移動元リポジトリＡ１＿１の祖先からの文書の移動による分割・統合履歴Ａ０−＞Ａ１＿１＋Ａ１＿２、Ａ１＿２＋Ｂ０−＞Ｂ１が存在する。そこで、この分割・統合履歴の識別子をそれぞれ、Ａ１＿１を新しく生成した識別子Ａ２＿１に、Ａ１＿２を新しく生成した識別子Ａ２＿２に、Ｂ１を新しく生成した識別子Ｂ２に更新する。これにより、図１４から図１７のようにリポジトリは変化する。
【００４０】
図１４の時点でリポジトリＡ１＿１がバックアップしてあり、図１７の時点でリポジトリＡ２＿１が壊れたので削除し、Ａ１＿１をリポジトリ群にリストアするように操作者から指示されたとする（図１８）。リストアの指示に応じて、図１１にしたがって、リポジトリのリストア前処理を行う。
【００４１】
図１８において、Ｂ２はリストアするリポジトリＡ１＿１と同一の識別子ではない（図１１のステップＳ２１の「ｎｏ」）。また、Ｂ２は保持している履歴からは、Ａ１＿１の祖先にあたらないし、Ａ１＿１の子孫にもあたらない（図１１のステップＳ２２、Ｓ２３の「ｎｏ」）。
【００４２】
Ｂ２は保持している履歴からは、Ａ０の子孫にあたる。また、Ａ１＿１もＡ０の子孫にあたる。ところが、Ｂ２はＡ１＿１に関する履歴を保持していないし、Ａ１＿１もＢ２に関する履歴を保持していない（図１１のステップＳ２４の「ｎｏ」）。そこで、リストアを中止するかの判断を操作者に尋ねる。操作者はリストアを継続することを選択したとする（図１１のステップＳ２５の「ｎｏ」）。
【００４３】
Ｂ２はＡ１＿１が保持するＡ０−＞Ａ１＿１＋Ａ１＿２という履歴を保持しないので、この履歴をＢ２に記録する。また、Ａ１＿１はＢ２が保持するＡ０−＞Ａ２＿１＋Ａ２＿２という履歴を保持しないので、この履歴をＡ１＿１に記録する（図１９）。なお、Ａ０−＞Ａ１＿１＋Ａ１＿２とＡ０−＞Ａ２＿１＋Ａ２＿２の２つの履歴は、リポジトリＡ０がＡ１＿１、Ａ１＿２、Ａ２＿１、Ａ２＿２の４つのリポジトリに分割された、という意味で扱う。
【００４４】
Ｂ２とＡ１＿１では同じ識別子を持つ文書ｏｂｊ２が存在する。そこで、リストアするリポジトリＡ１＿１から文書ｏｂｊ２を削除する（図２０。図１１のステップＳ３０）。
【００４５】
文書ｏｂｊ２はＡ１＿１からＢ２へ移動したものとして、Ａ１＿１をＡ３＿１とＡ３＿２に分割し、Ａ３＿２とＢ２を統合してＢ３ができたという、分割・統合履歴を記録する（図２１。図１１のステップＳ３１）。なお、Ａ３＿１、Ａ３＿２、Ｂ３は新しく生成した識別子である。
【００４６】
Ｂ２（文書の移動によりＢ３になっている）の処理はこれで終了し、リポジトリＡ１＿１（文書の移動によりＡ３＿１になっている）のリストア処理を行う（図２２）。
【００４７】
図１７の時点でＢ２ではＡ１＿１との分割・統合履歴をマージしてしまっているが、残った分割・統合履歴からＢ２とＡ１＿１に関連があって、同じ識別子を持つ文書が存在する可能性があることを検出できる。また、同じ識別子を持つ文書を探す時間をかけてもよいのであれば、Ａ１＿１をリポジトリ群にリストアすることもできる。
【００４８】
このように、バックアップ後に文書のリポジトリ間の移動があったかどうかを検知し、検知しなかった場合には、バックアップされたリポジトリ内の文書が、リポジトリ群内に重複がないかをチェックせずに、リストアすることができる。従来はバックアップ後に文書のリポジトリ間の移動があったかを検知できなかったため、常にバックアップされたリポジトリ内の文書が、リポジトリ群内に重複がないかをチェックする必要があった。
【００４９】
なお、この発明は特許請求の範囲の記載に基づいて決定されるものであり、実施例の具体的な構成、課題、および効果には限定されない。この発明は上述の実施例に限定されるものではなくその趣旨を逸脱しない範囲で種々変更が可能である。例えば、移動するデータは典型的には文書データであるが、１回の移動操作で処理される複数のデータ、例えば複数の文書データを１つのデータとして扱い、１組の分割・統合履歴で当該一まとまりのデータを移動履歴を記録してよい。また、各リポジトリが関連する分割・統合履歴情報を保持するようにしたが、分割・統合履歴を集中的に管理してもよい。
【図面の簡単な説明】
【００５０】
【図１】この発明の実施例のリポジトリ管理システムの利用環境を説明する図である。
【図２】上述実施例の全体構成を説明する図である。
【図３】上述実施例のデータ移動の記録の表記を説明する図である。
【図４】上述実施例のデータ移動の記録を説明する図である。
【図５】上述実施例のデータ移動の記録を説明する図である。
【図６】上述実施例のデータ移動の記録を説明する図である。
【図７】上述実施例のさらなるデータ移動の記録を説明する図である。
【図８】上述実施例のさらなるデータ移動の記録を説明する図である。
【図９】上述実施例の記録の圧縮を説明する図である。
【図１０】データ移動の記録処理の例を説明するフローチャートである。
【図１１】リポジトリのリストアの前処理の例を説明するフローチャートである。
【図１２】図１１の前処理の一部の処理を説明する図である。
【図１３】図１１の前処理の一部の処理を説明する図である。
【図１４】図１１の前処理の一部の処理を説明する図である。
【図１５】図１１の前処理の一部の処理を説明する図である。
【図１６】図１１の前処理の一部の処理を説明する図である。
【図１７】図１１の前処理の一部の処理を説明する図である。
【図１８】図１１の前処理の一部の処理を説明する図である。
【図１９】図１１の前処理の一部の処理を説明する図である。
【図２０】図１１の前処理の一部の処理を説明する図である。
【図２１】図１１の前処理の一部の処理を説明する図である。
【図２２】図１１の前処理の一部の処理を説明する図である。
【符号の説明】
【００５１】
１２    リポジトリ
１４    データ格納部
２０    ＩＤ生成部
２８    分割・統合履歴情報保持部
３０    リポジトリ管理部
３２    グループ編成部
３４    所属リポジトリＩＤ保持部
３６    バックアップ・リストア処理部
３８    分割統合処理部
４０    移動処理部
８０    リポジトリグループ
１００    文書管理システム
１０１    通信媒体
２００    クライアント装置
３００    ネットワーク
【図１】
2010122768.tif 000003
【図２】
2010122768.tif 000004
【図３】
2010122768.tif 000005
【図４】
2010122768.tif 000006
【図５】
2010122768.tif 000007
【図６】
2010122768.tif 000008
【図７】
2010122768.tif 000009
【図８】
2010122768.tif 000010
【図９】
2010122768.tif 000011
【図１０】
2010122768.tif 000012
【図１１】
2010122768.tif 000013
【図１２】
2010122768.tif 000014
【図１３】
2010122768.tif 000015
【図１４】
2010122768.tif 000016
【図１５】
2010122768.tif 000017
【図１６】
2010122768.tif 000018
【図１７】
2010122768.tif 000019
【図１８】
2010122768.tif 000020
【図１９】
2010122768.tif 000021
【図２０】
2010122768.tif 000022
【図２１】
2010122768.tif 000023
【図２２】
2010122768.tif 000024