(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-17
(45)【発行日】2023-08-25
(54)【発明の名称】更新装置、更新方法、更新プログラム、及びデータ構造
(51)【国際特許分類】
G06F 16/182 20190101AFI20230818BHJP
【FI】
G06F16/182
(21)【出願番号】P 2019099979
(22)【出願日】2019-05-29
【審査請求日】2021-12-24
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】504193837
【氏名又は名称】国立大学法人室蘭工業大学
(74)【代理人】
【識別番号】100083806
【氏名又は名称】三好 秀和
(74)【代理人】
【識別番号】100129230
【氏名又は名称】工藤 理恵
(72)【発明者】
【氏名】大橋 盛徳
(72)【発明者】
【氏名】藤村 滋
(72)【発明者】
【氏名】渡邊 大喜
(72)【発明者】
【氏名】石田 達郎
(72)【発明者】
【氏名】中平 篤
(72)【発明者】
【氏名】岸上 順一
【審査官】松尾 真人
(56)【参考文献】
【文献】特開2004-310244(JP,A)
【文献】特開2009-230316(JP,A)
【文献】米国特許出願公開第2011/0196900(US,A1)
【文献】特開2019-079577(JP,A)
【文献】中野 真那,バージョン管理を前提に負荷・容量均衡化を両立させる分散配置の応答性能への影響,DEWS2006論文集 [online],電子情報通信学会データ工学研究専門委員会,2006年06月30日,Internet<URL:http://www.ieice.org/iss/de/DEWS/DEWS2006/doc/4C-o2.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
分散ファイル管理システムに登録された元ファイルを更新した更新ファイルを前記分散ファイル管理システムに登録する更新装置であって、
前記元ファイルと前記更新ファイルとの差分データを生成する差分生成部と、
前記元ファイルへのリンクと前記差分データへのリンクを含むルートオブジェクトを生成するルートオブジェクト生成部と、
前記差分データと前記ルートオブジェクトを前記分散ファイル管理システムに登録するファイル管理制御部と、を備える
ことを特徴とする更新装置。
【請求項2】
請求項1に記載の更新装置であって、
前記元ファイルへのリンクは、別の更新ファイルのルートオブジェクトへのリンクである
ことを特徴とする更新装置。
【請求項3】
請求項1または2に記載の更新装置であって、
前記ルートオブジェクトは前記差分データの生成に使用したアルゴリズムの情報を含む
ことを特徴とする更新装置。
【請求項4】
請求項1ないし3のいずれかに記載の更新装置であって、
前記更新装置は分散台帳システムに属し、
前記ルートオブジェクトは、前記更新ファイルに関する情報と前記分散台帳システムにおいて実行されるコントラクトの識別子とを含み、
前記コントラクトに前記更新ファイルに関する情報と前記ルートオブジェクトへのリンクを登録する登録部と、を備える
ことを特徴とする更新装置。
【請求項5】
分散ファイル管理システムに登録された元ファイルを更新した更新ファイルを前記分散ファイル管理システムに登録する更新装置による更新方法であって、
前記元ファイルと前記更新ファイルとの差分データを生成するステップと、
前記元ファイルへのリンクと前記差分データへのリンクを含むルートオブジェクトを生成するステップと、
前記差分データと前記ルートオブジェクトを前記分散ファイル管理システムに登録するステップと、を有する
ことを特徴とする更新方法。
【請求項6】
請求項1ないし4のいずれかに記載の更新装置の各部としてコンピュータを動作させる更新プログラム。
【請求項7】
コンピュータに用いられ、分散ファイル管理システムに登録される更新ファイルのデータ構造であって、
第1のファイルへのリンクと、
前記第1のファイルと前記更新ファイルとの
第1の差分データへのリンクと、を含み、
前記第1のファイルが第2のファイルへのリンクと、前記第2のファイルと前記第1のファイルとの第2の差分データへのリンクとを含む場合、前記第2の差分データを前記第2のファイルに適用後、前記第1の差分データを前記第1のファイルに適用する処理に用いられる
ことを特徴とするデータ構造。
【請求項8】
請求項7に記載のデータ構造であって、
前記更新ファイルに関する情報と、
分散台帳システムにおいて実行されるコントラクトの識別子と、を含み、
前記分散台帳システムに属する前記コンピュータが、前記コントラクトに前記更新ファイルに関する情報と当該データ構造へのリンクが登録されているか否かを調べる処理に用いられる
ことを特徴とするデータ構造。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散ファイル管理システムで管理されるファイルを更新する技術に関する。
【背景技術】
【0002】
非中央集権型の分散ファイル管理システムとして、IPFS(InterPlanetary File System)が知られている(非特許文献1)。IPFSでは、ファイルは一定の大きさのチャンクに分割されて、IPFSに属する端末で管理される。各チャンクには、ハッシュ値から生成されるIDがつけられる。同じファイルを構成するチャンクはツリー状にまとめられる。ルートとなるチャンクには、ファイルを構成する各チャンクへのリンクが記載される。ルートとなるチャンクのIDがファイルを示すIDとなる。チャンクの設定サイズとファイルサイズにより分割数が決まる。チャンクサイズがファイルサイズに比べて大きい場合には、ファイルは分割されない。ここでは、分割されない場合も含めてチャンクと表現する。
【先行技術文献】
【非特許文献】
【0003】
【文献】Juan Benet, "IPFS - Content Addressed, Versioned, P2P File System (DRAFT3)", [online], インターネット〈 URL:https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf 〉
【発明の概要】
【発明が解決しようとする課題】
【0004】
ブロックチェーンは改ざんに対する極めて強固な耐性がある。この点に着目し、ブロックチェーンと分散ファイル管理システムとを連携されることが考えられる。ブロックチェーンと分散ファイル管理システムとを連携させる場合、分散ファイル管理システムは、更新後のファイルだけでなく、更新前のファイルも記録として保持し続ける必要がある。
【0005】
しかしながら、更新後のファイルを分散ファイル管理システムに新規に登録する方法では、系全体で管理するファイル容量が大きくなるという問題があった。
【0006】
本発明は、上記に鑑みてなされたものであり、ファイルシステム全体で管理する1ファイルあたりの平均ファイル容量を削減することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る更新装置は、分散ファイル管理システムに登録された元ファイルを更新した更新ファイルを前記分散ファイル管理システムに登録する更新装置であって、前記元ファイルと前記更新ファイルとの差分データを生成する差分生成部と、前記元ファイルへのリンクと前記差分データへのリンクを含むルートオブジェクトを生成するルートオブジェクト生成部と、前記差分データと前記ルートオブジェクトを前記分散ファイル管理システムに登録するファイル管理制御部と、を備えることを特徴とする。
【0008】
本発明に係る更新方法は、分散ファイル管理システムに登録された元ファイルを更新した更新ファイルを前記分散ファイル管理システムに登録する更新装置による更新方法であって、前記元ファイルと前記更新ファイルとの差分データを生成するステップと、前記元ファイルへのリンクと前記差分データへのリンクを含むルートオブジェクトを生成するステップと、前記差分データと前記ルートオブジェクトを前記分散ファイル管理システムに登録するステップと、を有することを特徴とする。
【0009】
本発明に係るデータ構造は、コンピュータに用いられ、分散ファイル管理システムに登録される更新ファイルのデータ構造であって、第1のファイルへのリンクと、前記第1のファイルと前記更新ファイルとの第1の差分データへのリンクと、を含み、前記第1のファイルが第2のファイルへのリンクと、前記第2のファイルと前記第1のファイルとの第2の差分データへのリンクとを含む場合、前記第2の差分データを前記第2のファイルに適用後、前記第1の差分データを前記第1のファイルに適用する処理に用いられることを特徴とする。
【発明の効果】
【0010】
本発明によれば、ファイルシステム全体で管理する1ファイルあたりの平均ファイル容量を削減することができる。
【図面の簡単な説明】
【0011】
【
図1】第1の実施形態の分散ファイル管理システムの全体構成を示す図である。
【
図2】第1の実施形態の分散ファイル管理システムで管理されるファイルの構成を説明するための図である。
【
図3】ルートオブジェクトのデータ構造の一例を示す図である。
【
図4】第1の実施形態の分散ファイル管理システムで管理されるデータ構造の一例を示す図である。
【
図5】第1の実施形態の分散ファイル管理システムの作成者端末および更新者端末の構成を示す図である。
【
図6】第1の実施形態において生成したファイルを登録する処理の流れを示すシーケンス図である。
【
図7】第1の実施形態において更新したファイルを登録する処理の流れを示すシーケンス図である。
【
図8】第2の実施形態の分散ファイル管理システムおよびブロックチェーンシステムの全体構成を示す図である。
【
図9】第2の実施形態の分散ファイル管理システムで管理されるデータ構造の一例を示す図である。
【
図10】ルートオブジェクトのデータ構造の一例を示す図である。
【
図11】第2の実施形態の分散ファイル管理システムで管理されるデータ構造の一例を示す図である。
【
図12】第2の実施形態の分散ファイル管理システムの作成者端末および更新者端末の構成を示す図である。
【
図13】第2の実施形態において生成したファイルを登録する処理の流れを示すシーケンス図である。
【
図14】第2の実施形態において更新したファイルを登録する処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について図面を用いて説明する。
【0013】
[第1の実施形態]
図1に示す第1の実施形態の分散ファイル管理システム100は、分散ファイル管理システム100に属する各端末が分散してファイルを管理する非中央集権型の分散ファイル管理システムである。分散ファイル管理システム100は、ファイルを一定の大きさで分割し、分割後の塊(チャンク)の有向非巡回グラフ(DAG)としてファイルを管理する。DAGのルートのハッシュ値がファイルのIDとなる。ファイルのIDを用いてファイルを要求することで、ファイルのロケーションを意識せずにファイルを取得できる。分散ファイル管理システム100も非特許文献1と同様の方法でファイルを分散管理してよい。
【0014】
図1の分散ファイル管理システム100は、作成者端末1、更新者端末2、およびファイル管理制御端末3を備える。分散ファイル管理システム100は、複数のファイル管理制御端末3を備えてもよい。分散ファイル管理システム100に属する端末(作成者端末1、更新者端末2、およびファイル管理制御端末3)は、分散ファイル管理ネットワークを介してP2P(Peer to Peer)接続し、各端末で分散してファイルを管理する。ここでは、ファイルを作成する作成者の使用する端末を作成者端末1とし、ファイルを更新する更新者の使用する端末を更新者端末2とした。作成者端末1がファイルを更新してもよいし、更新者端末2がファイルを作成してもよい。他の端末が作成者端末1または更新者端末2として動作してもよい。
【0015】
(ファイル管理データ)
図2および
図3を参照し、第1の実施形態の分散ファイル管理システム100におけるファイル管理について説明する。
【0016】
図2の例では、分散ファイル管理システム100に登録されたファイルF1を更新したファイルF2を分散ファイル管理システム100に登録した。
【0017】
更新者端末2は、ファイルF2を分散ファイル管理システム100に登録する際、ファイルF1とファイルF2の差分を取って差分ファイルD2を生成し、変更前の元ファイルF1と差分ファイルD2とを紐付けて管理するルートオブジェクトR2を生成する。更新者端末2は、差分ファイルD2およびルートオブジェクトR2を分散ファイル管理システム100に登録する。
【0018】
ルートオブジェクトR2は、ファイルF2を取得するためのオブジェクトであり、元ファイルF1へのリンクと差分ファイルD2へのリンクを保持する。具体的には、例えば、
図3に示すように、ルートオブジェクトは、元ファイルと差分ファイルのそれぞれについて、リンク先のファイルの種別、分散ファイル管理システム100上でのファイルのID(例えばファイルのハッシュ値を用いる)、およびファイルのサイズを含む。ルートオブジェクトは、差分ファイルに関して、差分ファイルの生成に用いた差分アルゴリズムの情報を含む。分散ファイル管理システム100では、ファイルのIDを用いてファイルの実体を取得できる。ルートオブジェクトは、ファイルのIDをファイルへのリンクとして保持する。
【0019】
本実施形態では、分散ファイル管理システム100に登録されたルートオブジェクトR2のIDを更新後のファイルF2のIDとして扱う。ルートオブジェクトR2のIDが分かればファイルF2を取得できる。分散ファイル管理システム100に属する端末(作成者端末1、更新者端末2、あるいはファイル管理制御端末3のいずれでもよい)がファイルF2を取得する場合、ルートオブジェクトR2のIDを用いて分散ファイル管理システム100からルートオブジェクトR2を取得する。端末は、ルートオブジェクトR2が保持する元ファイルのIDおよび差分ファイルのIDを用いて分散ファイル管理システム100から元ファイルF1および差分ファイルD2を取得する。端末は、元ファイルF1に差分ファイルD2を適用することで、ファイルF2を得る。
【0020】
なお、元ファイルF1についても、元ファイルF1へのリンクを保持するルートオブジェクトR1を分散ファイル管理システム100に登録し、ルートオブジェクトR1のIDを元ファイルF1のIDとして扱ってもよい。
【0021】
図4に、更新を繰り返した場合に、分散ファイル管理システム100に登録された各種ファイルの例を示す。
図4の例では、分散ファイル管理システム100には、元ファイルF1、元ファイルF1を更新したファイルF2のルートオブジェクトR2と差分ファイルD2、ファイルF2を更新したファイルF3のルートオブジェクトR3と差分ファイルD3、ファイルF3を更新したファイルF4のルートオブジェクトR4と差分ファイルD4、およびファイルF2を更新したファイルF5のルートオブジェクトR5と差分ファイルD5が登録されている。
【0022】
ファイルF2を更新したファイルF3を分散ファイル管理システム100に登録する場合、更新者端末2は、ファイルF2とファイルF3の差分ファイルD3およびファイルF2と差分ファイルD3とを紐付けるルートオブジェクトR3を分散ファイル管理システム100に登録する。ルートオブジェクトR3の元ファイルのリンク先はファイルF2のルートオブジェクトR2である。
【0023】
ファイルF3を取得したい場合、端末は、ファイルF3のルートオブジェクトR3のIDを用いて分散ファイル管理システム100からルートオブジェクトR3を取得する。ルートオブジェクトR3には元ファイルとしてルートオブジェクトR2がリンクされており、差分ファイルとして差分ファイルD3がリンクされている。端末は、ルートオブジェクトR3が保持する情報を用いて、分散ファイル管理システム100からルートオブジェクトR2と差分ファイルD3を取得する。端末は、ファイルF2を取得するために、ルートオブジェクトR2を再帰的に処理し、ルートオブジェクトR2が保持する情報を用いて、分散ファイル管理システム100からファイルF1と差分ファイルD2を取得する。端末は、ファイルF1に差分ファイルD2を適用してファイルF2を得る。そして、端末は、ファイルF2に差分ファイルD3を適用してファイルF3を得る。
【0024】
分散ファイル管理システム100は、あるファイルを更新した更新後のファイルの有無を確認する機能を提供してもよい。この機能は分散ファイル管理システムでファイルの所在を管理するために使われる分散ハッシュテーブルを利用することで容易に実現できる。更新者は、更新前のルートオブジェクトをキーに更新後のルートオブジェクトの値を分散ハッシュテーブルに登録する。更新の有無を確認したい人は、自身が持っているルートオブジェクトのIDをキーに分散ハッシュテーブルに問い合わせを行い、更新後のルートオブジェクトのIDを取得することができる。ルートオブジェクトを取得し、そのリンクを確認することで、そのオブジェクトがたしかに問い合わせキーで使用したルートオブジェクトからの更新オブジェクトであることを確認する事ができる。
【0025】
(端末の構成)
図5を参照し、第1の実施形態の作成者端末1および更新者端末2の構成について説明する。
【0026】
まず、作成者端末1について説明する。
図5に示す作成者端末1は、分散ファイル管理クライアント11およびファイル作成部121を備える。
【0027】
分散ファイル管理クライアント11は、分散ファイル記憶部111と分散ファイル管理制御部112を備える。
【0028】
分散ファイル記憶部111には、分散ファイル管理システム100で分散管理されるファイルおよび分散管理のために必要な情報が記憶される。例えば、分散ファイル記憶部111には、ファイルを所定サイズに分割したチャンク、ファイルのIDとそのファイルを有する端末の識別子を対応づけたルーティング情報が記憶される。ルーティング情報は分散ファイル管理システム100に属する各端末に分散して保持される。端末は、ファイルのIDを用いて分散ファイル管理システム100にファイルを要求することで、そのIDに対応するファイルを保持する端末を特定し、その端末からファイルを取得できる。
【0029】
分散ファイル管理制御部112は、分散ファイル管理システム100にファイルを登録したり、分散ファイル管理システム100からファイルを取得したり、分散ファイル記憶部111に記憶された情報を管理したりする。例えば、ファイル作成部121の作成したファイルを分散ファイル管理システム100に登録する際、分散ファイル管理制御部112は、ファイルを所定のサイズのチャンクに分割してDAGにまとめ、ファイルのIDを取得する。分散ファイル管理制御部112は、チャンクを分散ファイル記憶部111に記憶させるとともに、ファイルのIDと端末自身の識別子を分散ファイル管理システム100に通知する。これにより、分散ファイル管理システム100は、ファイルのIDで特定されるファイルの実体を保持する端末がわかる。分散ファイル管理制御部112は、ファイルのIDとなるルートのチャンクのIDだけでなく、ファイルを構成するすべてのチャンクのIDを分散ファイル管理システム100に通知してもよい。
【0030】
ファイル作成部121は、ファイルを作成する。ファイル作成部121は、ファイルを作成する市販のアプリケーションで構成できる。作成されるファイルは、例えば文書ファイル、画像ファイル、音楽ファイル、あるいは映像ファイルなど種類を問わない。
【0031】
続いて、更新者端末2について説明する。
図5に示す更新者端末2は、分散ファイル管理クライアント21、ファイル更新部221、差分作成部222、およびルートオブジェクト作成部223を備える。
【0032】
分散ファイル管理クライアント21は、分散ファイル記憶部211と分散ファイル管理制御部212を備える。分散ファイル記憶部211と分散ファイル管理制御部212は、作成者端末1の分散ファイル記憶部111と分散ファイル管理制御部112と同様である。
【0033】
ファイル更新部221は、分散ファイル管理システム100から取得したファイルを更新する。ファイル更新部221は、作成者端末1のファイル作成部121と同じアプリケーションで構成できる。
【0034】
差分作成部222は、更新前の元ファイルとファイル更新部221が更新した更新後のファイルと差分ファイルを生成する。元ファイルに差分ファイルを適用することで更新後のファイルを再構成できるならば、差分ファイルはどのような形式であってもよい。差分作成部222は、更新ファイル、元ファイルの形式に応じて複数あるアルゴリズムから最適なものを選択する。事前に拡張子と紐づけしたアルゴリズムを設定しておき、その設定に従い選択してもよいし、複数あるアルゴリズムで実際に差分ファイルを作成し、もっとも差分ファイルが小さくなるアルゴリズムを採用してもよい。差分ファイルと更新ファイルの差が小さい場合には、分散ファイル管理クライアント21は更新ファイルそのものを登録してもよい。差分ファイルは、分散ファイル管理クライアント21によって、分散ファイル管理システム100に登録される。
【0035】
ルートオブジェクト作成部223は、分散ファイル管理システム100に登録された元ファイルと差分ファイルを紐付けるルートオブジェクトを生成する。具体的には、ルートオブジェクト作成部223は、元ファイルのIDと差分ファイルのIDを含むルートオブジェクトを生成する。差分ファイルに関して、ルートオブジェクト作成部223は、使用した差分アルゴリズムの情報をルートオブジェクトに記録する。差分ファイルが更新ファイルそのものである場合、ルートオブジェクト作成部223は、ルートオブジェクトに紐づくファイルが更新ファイルであることをルートオブジェクトに記録する。例えば、差分アルゴリズムの記載がない場合、紐づくファイルは差分ファイルではなく、更新ファイルであると判断してもよい。ルートオブジェクトは、分散ファイル管理クライアント21によって、分散ファイル管理システム100に登録される。
【0036】
ファイル管理制御端末3は、分散ファイル管理クライアント11,21と同様の機能を有する。
【0037】
作成者端末1および更新者端末2が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは作成者端末1および更新者端末2が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0038】
(ファイルの生成)
図6を参照し、作成者端末1がファイルを生成し、分散ファイル管理システム100に登録する処理について説明する。
【0039】
ステップS101において、作成者端末1は、ファイルを作成する。
【0040】
ステップS102において、作成者端末1は、ファイルを分散ファイル管理システム100に登録する。具体的には、作成者端末1は、ファイルをチャンクに分割してDAGを構成し、ルートのチャンクのIDをファイルのIDとして取得する。分散ファイル記憶部111は、分割されたチャンクとそれらチャンクのIDを記録する。作成者端末1は、ファイルのIDと作成者端末1の識別子を分散ファイル管理システム100に属する端末に通知する。
【0041】
ステップS103において、更新者端末2はステップS102の通知を受ける。分散ファイル管理システム100に属する他の端末もステップS102の通知を受けてもよい。
【0042】
ステップS104において、更新者端末2は、通知された内容に基づき、更新者端末2が保持すべきルーティング情報があれば、分散ファイル記憶部211にルーティング情報を記憶させる。
【0043】
以上の処理により、作成者端末1の作成したファイルが分散ファイル管理システム100に登録される。分散ファイル管理システム100に属する端末は、ファイルのIDを用いて、分散ファイル管理システム100からファイルを取得できる。
【0044】
(ファイルの更新)
図7を参照し、更新者端末2がファイルを更新し、分散ファイル管理システム100に登録する処理について説明する。更新者端末2は、分散ファイル管理システム100から更新対象の元ファイルを取得しているものとする。
【0045】
ステップS201において、更新者端末2は、元ファイルを更新する。
【0046】
ステップS202において、更新者端末2は、元ファイルと更新後のファイルの差分ファイルを生成する。
【0047】
ステップS203において、更新者端末2は、元ファイルと差分ファイルとを紐付けるルートオブジェクトを作成する。例えば、更新者端末2は、元ファイルのIDおよび差分ファイルのIDを保持するルートオブジェクトを作成する。なお、差分ファイルを取得した際、差分ファイルが更新ファイルとほぼ同じサイズになるようなときは、差分ファイルではなく、更新ファイルを元ファイルと一緒にルートオブジェクトに紐付ける。
【0048】
ステップS204において、更新者端末2は、差分ファイルとルートオブジェクトを分散ファイル管理システム100に登録する。具体的には、更新者端末2は、差分ファイルのハッシュ値を求めて差分ファイルのIDとし、ルートオブジェクトのハッシュ値を求めてルートオブジェクトのIDとする。更新者端末2は、必要であればチャンクに分割し、差分ファイルとルートオブジェクトを分散ファイル記憶部211に記憶させる。更新者端末2は、差分ファイルのID、ルートオブジェクトのID、および更新者端末2の識別子を分散ファイル管理システム100に属する端末に通知する。
【0049】
ステップS205において、作成者端末1はステップS204の通知を受ける。分散ファイル管理システム100に属する他の端末もステップS204の通知を受けてもよい。
【0050】
ステップS206において、作成者端末1は、通知された内容に基づき、作成者端末1が保持すべきルーティング情報があれば、分散ファイル記憶部111にルーティング情報を記憶させる。
【0051】
以上の処理により、更新者端末2の更新したファイルが分散ファイル管理システム100に登録される。分散ファイル管理システム100に属する端末は、ルートオブジェクトのIDを用いて、分散ファイル管理システム100から更新後のファイルを取得できる。
【0052】
以上説明したように、本実施形態によれば、元ファイルを更新した更新後のファイルを分散ファイル管理システム100に登録する際、差分作成部222が元ファイルと更新後のファイルの差分ファイルを生成し、ルートオブジェクト作成部223が元ファイルのIDと差分ファイルのIDを含むルートオブジェクトを生成し、分散ファイル管理クライアント11が差分ファイルとルートオブジェクトを分散ファイル管理システム100に登録することにより、更新後のファイル全体ではなく差分ファイルが分散ファイル管理システム100に登録されるので、分散ファイル管理システム100全体で管理する1ファイルあたりの平均ファイル容量を削減できる。
【0053】
[第2の実施形態]
図8に示す第2の実施形態の作成者端末1および更新者端末2は、分散ファイル管理システム100およびブロックチェーンシステム200に属する。分散ファイル管理システム100は、第1の実施形態と同様である。
【0054】
図8のブロックチェーンシステム200は、作成者端末1、更新者端末2、およびブロックチェーン制御端末4を備える。ブロックチェーンシステム200は、複数のブロックチェーン制御端末4を備えてもよい。ブロックチェーンシステム200に属する端末(作成者端末1、更新者端末2、およびブロックチェーン制御端末4)は、ブロックチェーンネットワークを介してP2P接続し、端末間でブロックチェーンデータ(分散台帳)を共有する。ブロックチェーンデータは、ブロックチェーンシステム200に属する端末が発行したトランザクションを含むブロックがつながったデータである。
【0055】
本実施形態では、分散ファイル管理システム100に登録されたファイルを得るためのルートオブジェクトのIDとファイルの作成者または更新者のIDとを管理するコントラクトをブロックチェーンシステム200に登録する。コントラクトは、ブロックチェーン上でトランザクションを介してプログラムを実行する機構である。コントラクトを実行させるトランザクションが発行されると、ブロックチェーンシステム200においてトランザクションがブロックにまとめられる際にプログラムが実行される。本実施形態では、ルートオブジェクトのIDと当該ルートオブジェクトから取得できるファイルの作成者または更新者の情報とをブロックチェーンシステム200に登録することで、作成者および更新者の真正性を担保する。
【0056】
(ファイル管理データ)
図9および
図10を参照し、第2の実施形態の分散ファイル管理システム100におけるファイル管理について説明する。
【0057】
第2の実施形態では、ルートオブジェクトR1~R5は、情報ファイルI1~I5へのリンクと、ブロックチェーンシステム200に登録されたコントラクトの識別子を含む。情報ファイルI1は、ファイルに関する情報を保持するファイルである。ファイルに関する情報としては、例えば、ファイルの作成者および更新者など、ファイルの作成、更新、および権利に関する情報である。ブロックチェーンシステム200に属する端末は、コントラクトの識別子を用いて、コントラクトに登録された情報にアクセスできる。
【0058】
作成者端末1は、ファイルF1を分散ファイル管理システム100に登録する際、ファイルF1へのリンクと、ファイルF1に関する情報(例えばファイルF1の作成者のID)を保持する情報ファイルI1へのリンクと、コントラクトの識別子とを含むルートオブジェクトR1を分散ファイル管理システム100に登録する。ルートオブジェクトR1のIDはファイルF1のIDとして扱われる。
【0059】
図10の例に示すように、ルートオブジェクトは、元ファイル、差分ファイル、および情報ファイルのそれぞれについて、リンク先のファイルの種別、分散ファイル管理システム100上でのファイルのID、およびファイルのサイズを含む。さらに、ルートオブジェクトは、データとしてコントラクトの識別子を含む。
【0060】
なお、
図11に示すように、情報ファイルI1~I5の内容をルートオブジェクトのデータに含めても良い。
【0061】
(端末の構成)
図12を参照し、第2の実施形態の作成者端末1および更新者端末2の構成について説明する。
【0062】
まず、作成者端末1について説明する。
図12に示す作成者端末1は、分散ファイル管理クライアント11、ファイル作成部121、ルートオブジェクト作成部123、およびブロックチェーンクライアント13を備える。
【0063】
分散ファイル管理クライアント11とファイル作成部121は、第1の実施形態と同じである。ファイル作成部121によって作成されたファイルは、分散ファイル管理クライアント11によって分散ファイル管理システム100に登録される。
【0064】
ルートオブジェクト作成部123は、分散ファイル管理システム100に登録されたファイルへのリンクと、ファイルに関する情報と、コントラクトの識別子とを保持するルートオブジェクトを生成する。ルートオブジェクトは、分散ファイル管理クライアント11によって、分散ファイル管理システム100に登録される。
【0065】
ルートオブジェクト作成部123がファイルに関する情報を保持する情報ファイルを作成し、ルートオブジェクトが情報ファイルへのリンクを保持し、分散ファイル管理クライアント11が情報ファイルを分散ファイル管理システム100に登録してもよい。
【0066】
ブロックチェーンクライアント13は、ブロックチェーン記憶部131およびブロックチェーン制御部132を備える。ブロックチェーン記憶部131には、ブロックチェーンシステム200に属する全ての端末と緩やかに同期したブロックチェーンデータが記憶される。ブロックチェーン制御部132は、ブロックチェーンシステム200に属する端末と自律分散的に協調し、ブロックチェーンの系を維持する。本実施形態では、ブロックチェーンクライアント13は、ブロックチェーンシステム200にルートオブジェクトのIDと作成者のIDを登録する。
【0067】
続いて、更新者端末2について説明する。
図12に示す更新者端末2は、分散ファイル管理クライアント21、ファイル更新部221、差分作成部222、ルートオブジェクト作成部223、およびブロックチェーンクライアント23を備える。
【0068】
分散ファイル管理クライアント21、ファイル更新部221、および差分作成部222は、第1の実施形態と同じである。ファイル更新部221によって更新されたファイルおよび差分作成部222によって生成された差分ファイルは、分散ファイル管理クライアント21によって分散ファイル管理システム100に登録される。
【0069】
ルートオブジェクト作成部223は、元ファイルへのリンクと、差分ファイルへのリンクと、更新後のファイルに関する情報と、コントラクトの識別子とを保持するルートオブジェクトを生成する。ルートオブジェクトは、分散ファイル管理クライアント21によって、分散ファイル管理システム100に登録される。
【0070】
ルートオブジェクト作成部223が更新後のファイルに関する情報を保持する情報ファイルを作成し、ルートオブジェクトが情報ファイルへのリンクを保持し、分散ファイル管理クライアント21が情報ファイルを分散ファイル管理システム100に登録してもよい。
【0071】
ブロックチェーンクライアント23は、ブロックチェーン記憶部231とブロックチェーン制御部232を備える。ブロックチェーン記憶部231とブロックチェーン制御部232は、作成者端末1のブロックチェーン記憶部131とブロックチェーン制御部と同様である。本実施形態では、ブロックチェーンクライアント23は、ブロックチェーンシステム200にルートオブジェクトのIDと更新者のIDを登録する。ブロックチェーンクライアント23は、分散ファイル管理システム100から取得したファイルのルートオブジェクトのIDとファイルの作成者または更新者のIDがブロックチェーンシステム200に登録されているか否かを調べて、ファイルの作成者または更新者の真正性を確認してもよい。
【0072】
ブロックチェーン制御端末4は、ブロックチェーンクライアント13,23と同様の機能を有する。
【0073】
作成者端末1および更新者端末2が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは作成者端末1および更新者端末2が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0074】
(ファイルの生成)
図13を参照し、作成者端末1がファイルを生成し、分散ファイル管理システム100に登録する処理について説明する。
【0075】
ステップS301において、作成者端末1は、ファイルを作成する。
【0076】
ステップS302において、作成者端末1は、ファイルのID、ファイルに関する情報、およびコントラクトの識別子を含むルートオブジェクトを作成する。コントラクトはブロックチェーンシステム200に登録済であり、コントラクトの識別子は既知であるとする。ファイルに関する情報は、作成者のIDを含む。作成者端末1は、ファイルに関する情報を含む情報ファイルを作成し、ルートオブジェクトに情報ファイルのIDを含めてもよい。
【0077】
ステップS303において、作成者端末1は、コントラクトへ作成したファイルのルートオブジェクトのIDと作成者のIDを付与して登録する。作成者端末1は、さらに、コントラクトへファイルの更新を許可する更新者のIDを付与して登録してもよい。
【0078】
ステップS304において、作成者端末1は、ファイルとルートオブジェクトを分散ファイル管理システム100に登録する。具体的には、作成者端末1は、必要であればチャンクに分割し、ファイルとルートオブジェクトを分散ファイル記憶部111に記憶させて、ファイルのID、ルートオブジェクトのID、および作成者端末1の識別子を分散ファイル管理システム100に属する端末に通知する。
【0079】
ステップS305において、更新者端末2はステップS304の通知を受ける。
【0080】
ステップS306において、更新者端末2は、通知された内容に基づき、更新者端末2が保持すべきルーティング情報があれば、分散ファイル記憶部211にルーティング情報を記憶させる。
【0081】
以上の処理により、作成者端末1の作成したファイルが分散ファイル管理システム100に登録される。分散ファイル管理システム100に属する端末は、ファイルのルートオブジェクトのIDを用いて、分散ファイル管理システム100からファイルを取得できる。ブロックチェーンシステム200にルートオブジェクトのIDと作成者のIDが登録されていることを調べることで、作成者の真正性を確認できる
(ファイルの更新)
図14を参照し、更新者端末2がファイルを更新し、分散ファイル管理システム100に登録する処理について説明する。更新者端末2は、分散ファイル管理システム100から更新対象の元ファイルを取得しているものとする。
【0082】
ステップS401において、更新者端末2は、元ファイルを更新する。
【0083】
ステップS402において、更新者端末2は、元ファイルと更新後のファイルの差分ファイルを生成する。
【0084】
ステップS403において、更新者端末2は、元ファイルのID、差分ファイルのID、更新後のファイルに関する情報、およびコントラクトの識別子を含むルートオブジェクトを作成する。コントラクトの識別子は、元ファイルのルートオブジェクトから知ることができる。ファイルに関する情報は、更新者のIDを含む。更新者端末2は、更新後のファイルに関する情報を含む情報ファイルを作成し、ルートオブジェクトに情報ファイルのIDを含めてもよい。
【0085】
ステップS404において、更新者端末2は、コントラクトへ更新後のファイルのルートオブジェクトのIDと更新者のIDを付与して登録する。ここで、コントラクトの処理により、ルートオブジェクトのIDと更新者のIDが登録できなかった場合、ステップS405以降の処理を中止してもよい。例えば、更新者端末2が元ファイルを更新する権利を持たない場合に、コントラクトの処理でルートオブジェクトのIDと更新者のIDの登録が拒否される。
【0086】
ステップS405において、更新者端末2は、差分ファイルとルートオブジェクトを分散ファイル管理システム100に登録する。具体的には、更新者端末2は、必要であればチャンクに分割し、差分ファイルとルートオブジェクトを分散ファイル記憶部111に記憶させて、差分ファイルのID、ルートオブジェクトのID、および更新者端末2の識別子を分散ファイル管理システム100に属する端末に通知する。
【0087】
ステップS406において、作成者端末1はステップS405の通知を受ける。
【0088】
ステップS407において、作成者端末1は、通知された内容に基づき、作成者端末1が保持すべきルーティング情報があれば、分散ファイル記憶部111にルーティング情報を記憶させる。
【0089】
以上の処理により、更新者端末2の更新したファイルが分散ファイル管理システム100に登録される。分散ファイル管理システム100に属する端末は、更新後のファイルのルートオブジェクトのIDを用いて、分散ファイル管理システム100から更新後のファイルを取得できる。
【0090】
分散ファイル管理システム100とブロックチェーンシステム200の両方に属する端末は、分散ファイル管理システム100から取得したルートオブジェクトから更新者のIDとコントラクトの識別子を得て、コントラクトに更新者のIDとルートオブジェクトのIDが登録されているか否かを調べることで、更新者の真正性を確認できる。
【0091】
以上説明したように、本実施の形態によれば、ルートオブジェクト作成部223が更新者のIDとコントラクトの識別子とを保持するルートオブジェクトを生成し、ブロックチェーンクライアント23がコントラクトにルートオブジェクトのIDと更新者のIDとを登録することにより、ブロックチェーンシステム200にルートオブジェクトのIDと更新者のIDが登録されていることを調べることで、更新者の真正性を確認できる。
【符号の説明】
【0092】
1…作成者端末
11…分散ファイル管理クライアント
111…分散ファイル記憶部
112…分散ファイル管理制御部
121…ファイル作成部
123…ルートオブジェクト作成部
13…ブロックチェーンクライアント
131…ブロックチェーン記憶部
132…ブロックチェーン制御部
2…更新者端末
21…分散ファイル管理クライアント
211…分散ファイル記憶部
212…分散ファイル管理制御部
221…ファイル更新部
222…差分作成部
223…ルートオブジェクト作成部
23…ブロックチェーンクライアント
231…ブロックチェーン記憶部
232…ブロックチェーン制御部
3…ファイル管理制御端末
4…ブロックチェーン制御端末
100…分散ファイル管理システム
200…ブロックチェーンシステム