IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社Skeedの特許一覧

<>
  • 特開-データ管理システム 図1
  • 特開-データ管理システム 図2
  • 特開-データ管理システム 図3
  • 特開-データ管理システム 図4
  • 特開-データ管理システム 図5
  • 特開-データ管理システム 図6
  • 特開-データ管理システム 図7
  • 特開-データ管理システム 図8
  • 特開-データ管理システム 図9
  • 特開-データ管理システム 図10
  • 特開-データ管理システム 図11
  • 特開-データ管理システム 図12
  • 特開-データ管理システム 図13
  • 特開-データ管理システム 図14
  • 特開-データ管理システム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023114480
(43)【公開日】2023-08-18
(54)【発明の名称】データ管理システム
(51)【国際特許分類】
   G06F 16/27 20190101AFI20230810BHJP
   G06F 16/24 20190101ALI20230810BHJP
【FI】
G06F16/27
G06F16/24
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2022016784
(22)【出願日】2022-02-06
(71)【出願人】
【識別番号】506149519
【氏名又は名称】株式会社Skeed
(74)【代理人】
【識別番号】100136146
【弁理士】
【氏名又は名称】小谷 明生
(72)【発明者】
【氏名】柴田 巧一
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175CA09
5B175DA10
(57)【要約】
【課題】台帳が肥大化しない分散型台帳方式のデータ管理システムを提供する。
【解決手段】データ管理システム1は複数のノードNを備える。いずれかのノードNがデータ管理システム1の外部から台帳Lの更新を指示する更新要求Rを取得すると、そのノードNは他のノードNに更新要求Rを送信する。各ノードNは、更新要求Rに従う台帳Lの更新が不可能である場合はその旨を通知する更新不可能通知Xを他のノードに送信し、更新可能の場合は更新要求Rに従い台帳Lを更新するための情報の候補である候補更新情報Vを他のノードNに送信する。各ノードNは、他のノードNから受信した更新不可能通知Xの数が所定条件を満たす場合、台帳Lを更新しない。また、各ノードNは、台帳Lを更新する場合、他のノードNから受信した候補更新情報Vのうち同一内容の候補更新情報Vが最多である候補更新情報Vを用いて台帳Lを更新する。
【選択図】図3
【特許請求の範囲】
【請求項1】
通信ネットワークに属する複数のノードが時系列順のデータの集まりである台帳を記憶するデータ管理システムを構成するノードであって、
前記データ管理システムを構成する複数のノードのうち自ノード以外のノードを他ノードとし、台帳の更新を指示する要求を更新要求とするとき、
前記データ管理システムの外部から台帳の更新要求を取得した場合、又は、いずれかの他ノードから台帳の更新要求を受信した場合、当該更新要求が自ノードの記憶している台帳に関する更新要求であれば当該更新要求に従い台帳を更新するための情報の候補である候補更新情報を生成し、当該候補更新情報を1以上の他ノードに送信し、他ノードから受信した当該更新要求に関する候補更新情報のうち同一内容の候補更新情報の数が所定条件を満たす候補更新情報を用いて自ノードの記憶している台帳を更新する
ノード。
【請求項2】
更新要求に従い生成し1以上の他のノードに送信した候補更新情報が他ノードから受信した当該更新要求に関する候補更新情報のうち同一内容の候補更新情報の数が所定条件を満たす候補更新情報と同一内容でない場合、自ノードの記憶している台帳を更新する代わりに当該台帳を消去する
請求項1に記載のノード。
【請求項3】
更新要求に応じて自ノードの記憶している台帳を更新する代わりに当該台帳を消去した場合、1以上の他ノードに当該更新要求に従い更新された台帳の送信を要求し、当該要求に応じていずれかの他ノードから送信されてきた台帳を記憶する
請求項2に記載のノード。
【請求項4】
前記データ管理システムの外部から自ノードの記憶している台帳に関する更新要求を取得した場合、又は、いずれかの他ノードから自ノードの記憶している台帳に関する更新要求を受信した場合、当該更新要求に従う台帳の更新が可能である場合は当該更新要求に従い生成した候補更新情報を1以上の他ノードに送信し、当該更新要求に従う台帳の更新が不可能である場合は候補更新情報に代えて当該更新要求に従う台帳の更新が不可能であることを示す更新不可能通知を1以上の他ノードに送信し、他ノードから受信した当該更新要求に関する更新不可能通知の数が所定条件を満たせば、当該更新要求に従う台帳の更新を行わない
請求項1乃至3のいずれか1項に記載のノード。
【請求項5】
前記データ管理システムの外部から自ノードの記憶している台帳を含む2以上の互いに関連する台帳に関する更新要求を取得した場合、又は、いずれかの他ノードから自ノードの記憶している台帳を含む2以上の互いに関連する台帳の更新要求を受信した場合、当該2以上の台帳の少なくとも1つに関し、他ノードから受信した当該更新要求に関する更新不可能通知の数が所定条件を満たせば、当該2以上の台帳の全てに関し当該更新要求に従う更新を行わない
請求項4に記載のノード。
【請求項6】
台帳から1以上の台帳を分離して2以上の台帳とする更新を指示する更新要求を分離要求とするとき、
前記データ管理システムの外部から自ノードの記憶している台帳に関する分離要求を取得した場合、又は、他ノードから自ノードの記憶している台帳に関する分離要求を受信した場合、自ノードのリソースに関する所定条件が満たされているか否かに基づき当該分離要求に従う台帳の分離が可能であるか否かを判定し、当該分離要求に従う台帳の分離が可能である場合は当該分離要求に従い台帳を分離するための情報の候補である候補更新情報を1以上の他ノードに送信し、当該分離要求に従う台帳の分離が不可能である場合は候補更新情報に代えて当該分離要求に従う台帳の分離が不可能であることを示す更新不可能通知を1以上の他ノードに送信する
請求項4に記載のノード。
【請求項7】
自ノードのリソースに関する所定条件が満たされた場合、自ノードの記憶している台帳と同じ台帳から1以上の台帳を分離して2以上の台帳とする更新を指示する更新要求である分離要求を1以上の他ノードに送信する
請求項4又は6に記載のノード。
【請求項8】
分離要求は、台帳から当該台帳に含まれるデータの新しさに基づき1以上の台帳を分離することを指示する
請求項6又は7に記載のノード。
【請求項9】
分離要求は、台帳から当該台帳に含まれるデータの属性に基づき1以上の台帳を分離することを指示する
請求項6又は7に記載のノード。
【請求項10】
分離要求は、分離元の台帳を更新不可の台帳とすることを指示する
請求項6乃至9のいずれか1項に記載のノード。
【請求項11】
第1の台帳に対し第2の台帳の情報を追加して当該第1の台帳を更新するとともに当該第2の台帳を更新不可とすることを指示する更新要求を統合要求とするとき、
前記データ管理システムの外部から統合要求を取得した場合、又は、いずれかの他ノードから統合要求を受信した場合、
自ノードが当該統合要求に関する第1の台帳及び第2の台帳の両方を記憶しているならば、当該統合要求に従い第1の台帳を更新するための情報の候補である候補更新情報を他ノードに送信し、他ノードから受信した当該統合要求に関する候補更新情報のうち同一内容の候補更新情報の数が所定条件を満たす候補更新情報を用いて自ノードの記憶している当該統合要求に関する第1の台帳を更新するとともに、自ノードの記憶している当該統合要求に関する第2の台帳を更新不可とし、
自ノードが当該統合要求に関する第1の台帳を記憶しており第2の台帳を記憶していないならば、他ノードから受信した当該統合要求に関する候補更新情報のうち同一内容の候補更新情報の数が所定条件を満たす候補更新情報を用いて自ノードの記憶している当該統合要求に関する第1の台帳を更新し、
自ノードが当該統合要求に関する第1の台帳を記憶しておらず第2の台帳を記憶しているならば、自ノードの記憶している第2の台帳を更新不可とする
請求項4に記載のノード。
【請求項12】
前記データ管理システムの外部から自ノードの記憶している台帳に関する統合要求を取得した場合、又は、他ノードから自ノードの記憶している台帳に関する統合要求を受信した場合、自ノードのリソースに関する所定条件が満たされているか否かに基づき当該統合要求に従う台帳の統合が可能であるか否かを判定し、当該統合要求に従う台帳の統合が可能である場合は当該統合要求に従い台帳を統合するための情報の候補である候補更新情報を1以上の他ノードに送信し、当該統合要求に従う台帳の統合が不可能である場合は候補更新情報に代えて当該統合要求に従う台帳の統合が不可能であることを示す更新不可能通知を1以上の他ノードに送信する
請求項11に記載のノード。
【請求項13】
自ノードのリソースに関する所定条件が満たされた場合、自ノードの記憶している第1の台帳と同じ台帳に対し自ノードの記憶している第2の台帳と同じ台帳の情報を追加して、自ノードの記憶している第1の台帳と同じ台帳を更新するとともに、自ノードの記憶している第2の台帳と同じ台帳を更新不可とすることを指示する更新要求である統合要求を1以上の他ノードに送信する
請求項11又は12に記載のノード。
【請求項14】
自ノードのリソースに関する所定条件が満たされた場合、自ノードの記憶している台帳を消去する
請求項1乃至13のいずれか1項に記載のノード。
【請求項15】
自ノードの記憶している台帳に関する更新要求の受信頻度に関する所定条件が満たされた場合、当該台帳を消去する
請求項1乃至14のいずれか1項に記載のノード。
【請求項16】
自ノードの記憶している台帳に関する更新要求に応じて他ノードから送信されてきた候補更新情報の数に関する所定条件が満たされた場合、当該台帳を消去する
請求項1乃至15のいずれか1項に記載のノード。
【請求項17】
自ノードの記憶していない台帳に関する更新要求の受信頻度に関する所定条件が満たされた場合、1以上の他ノードに当該台帳の送信を要求し、当該要求に応じていずれかの他ノードから送信されてきた台帳を記憶する
請求項1乃至16のいずれか1項に記載のノード。
【請求項18】
自ノードの記憶していない台帳に関する更新要求に応じて他ノードから送信されてきた候補更新情報の数に関する所定条件が満たされた場合、1以上の他ノードに当該台帳の送信を要求し、当該要求に応じていずれかの他ノードから送信されてきた台帳を記憶する
請求項1乃至17のいずれか1項に記載のノード。
【請求項19】
通信ネットワークを介して他のコンピュータとデータ通信が可能なコンピュータに、請求項1乃至18のいずれか1項に記載のノードが行う処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク内の多数のノードで共有されるデータを管理する技術に関する。
【背景技術】
【0002】
近年、ブロックチェーンが普及している。ブロックチェーンは、情報を記録するデータベース技術の一種であり、ブロックと呼ばれる単位でデータを管理し、新しいデータを含むブロックをチェーンのように順次連結して、経時変化してゆくデータの履歴を保管することができる。
【0003】
ブロックチェーンは分散型台帳技術の一種であり、多数のノードで共有されるため、いずれかのノードでデータが改ざんされても速やかにその改ざんが発見される。ブロックチェーンの改ざん困難性を活かして、ブロックチェーンは特にデータの正統性の保証が要求されるシステムにおいて活用されている。
【0004】
例えば、特許文献1には、ブロックチェーンを活用して、デジタルコンテンツのアクセス権を保証するシステムが提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2022-20557号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ブロックチェーンに代表される分散型台帳方式のデータ管理システムにおいては、台帳は過去の全てのデータを保持するため、時間の経過に伴いデータ量が増加の一途を辿る。台帳が肥大化すると、データ処理の負荷増大、通信量の増大による通信速度低下及び通信コストの増大、ストレージ容量の不足等のデメリットが大きくなる。
【0007】
上述した事情に鑑み、本発明は、台帳が肥大化しない分散型台帳方式のデータ管理システムを提供する。
【課題を解決するための手段】
【0008】
本発明は、通信ネットワークに属する複数のノードが時系列順のデータの集まりである台帳を記憶するデータ管理システムを構成するノードであって、前記データ管理システムを構成する複数のノードのうち自ノード以外のノードを他ノードとし、台帳の更新を指示する要求を更新要求とするとき、前記データ管理システムの外部から台帳の更新要求を取得した場合、又は、いずれかの他ノードから台帳の更新要求を受信した場合、当該更新要求が自ノードの記憶している台帳に関する更新要求であれば当該更新要求に従い台帳を更新するための情報の候補である候補更新情報を生成し、当該候補更新情報を1以上の他ノードに送信し、他ノードから受信した当該更新要求に関する候補更新情報のうち同一内容の候補更新情報の数が所定条件を満たす候補更新情報を用いて更新前の台帳を更新するノードを提案する。
【発明の効果】
【0009】
本発明によれば、分散型台帳方式のデータ管理システムにおいて台帳が肥大化しない。
【図面の簡単な説明】
【0010】
図1】一実施形態に係るデータ管理システムにおける台帳更新の手順を示した図。
図2】一実施形態に係るデータ管理システムにおける台帳更新の手順を示した図。
図3】一実施形態に係るデータ管理システムにおける台帳更新の手順を示した図。
図4】一実施形態に係るデータ管理システムにおいて各ノードが異なる台帳を記憶している様子を示した図。
図5】一実施形態に係るデータ管理システムにおいて台帳から新たな台帳が分離される様子を示した図。
図6】一実施形態に係るデータ管理システムにおいて台帳から新たな台帳が分離される様子を示した図。
図7】一実施形態に係るデータ管理システムにおいて台帳から新たな台帳が分離される様子を示した図。
図8】一実施形態に係るデータ管理システムにおいて台帳が統合される様子を示した図。
図9】一実施形態に係るデータ管理システムにおいて2つの互いに関連する台帳に関する更新要求に従い、2つの台帳の更新が行われる手順を示した図。
図10】一実施形態に係るデータ管理システムにおいて2つの互いに関連する台帳に関する更新要求に従い、2つの台帳の更新が行われる手順を示した図。
図11】一実施形態に係るデータ管理システムにおいて2つの互いに関連する台帳に関する更新要求に従い、2つの台帳の更新が行われる手順を示した図。
図12】従来技術に係るデータ管理システムと比較した場合の一実施形態に係るデータ管理システムのメリットを説明するための図。
図13】従来技術に係るデータ管理システムにおける台帳更新の手順を示した図。
図14】従来技術に係るデータ管理システムにおける台帳更新の手順を示した図。
図15】従来技術に係るデータ管理システムにおける台帳更新の手順を示した図。
【発明を実施するための形態】
【0011】
[対比例]
以下に、本発明の一実施形態に係るノードにより構成されるデータ管理システムと対比される、一般的な分散型台帳方式のデータ管理システムにおける台帳更新の手順の例を説明する。本願において台帳とは、時系列順のデータの集まりを意味する。また、以下の説明において、台帳は単位量のデータであるブロックが時系列順に連結された形式のデータであるものとする。
【0012】
図12図15は、一般的な分散型台帳方式のデータ管理システム9における台帳更新の手順を示した図である。データ管理システム9は、例えばブロックチェーンシステムである。データ管理システム9は、通信ネットワークに属する複数のノードNで構成される。ノードNの各々は、内容が同一の台帳L(1)を記憶している。
【0013】
いずれかのノードNがデータ管理システム9の外部から台帳L(1)の更新要求Rを取得すると、更新要求Rを受け取ったノードNは他のノードNに更新要求Rを送信する(図13)。なお、ノードN間のデータの送受信は、それらのノードN間で直接行われてもよいし、マルチホップ方式等の他のノードNを介した方法により行われてもよい。
【0014】
更新要求Rを受け取ったノードNのうち、所定の規則に従い定まる代表のノードN(R)1は、更新要求Rに従い台帳L(1)を更新するための情報である更新情報Uを生成し、他のノードNに送信する(図14)。更新情報Uは、例えば、更新要求Rに従い台帳L(1)に追加されるブロックBと、台帳L(1)にブロックBを追加した更新後の台帳L(2)のハッシュ値を含む。
【0015】
更新情報Uを受信したノードNの各々は、更新情報Uが正しい更新情報であるか否かの検証を行い、更新情報Uが正しい更新情報であると検証した場合に限り、更新情報Uを用いて台帳L(1)を更新し台帳L(2)を生成する(図15)。
【0016】
[実施形態]
続いて、本発明の一実施形態に係るノードにより構成されるデータ管理システム1を説明する。図1図3は、データ管理システム1における台帳更新の手順を示した図である。データ管理システム1は、通信ネットワークに属する複数のノードNで構成される。ノードNの各々は、内容が同一の台帳L(1)を記憶している。
【0017】
いずれかのノードNがデータ管理システム1の外部から台帳L(1)の更新要求Rを取得すると、更新要求Rを受け取ったノードNは他のノードNに更新要求Rを送信する(図1)。なお、ノードN間のデータの送受信は、それらのノードN間で直接行われてもよいし、マルチホップ方式等の他のノードNを介した方法により行われてもよい。
【0018】
更新要求Rを受け取ったノードNの各々は、まず、更新要求Rに従う台帳L(1)の更新が可能であるか否かを判定する。例えば、台帳L(1)が銀行口座の入出金の履歴及び残高を示す場合、台帳L(1)が示す残高より多額の金額の出金を台帳L(1)に反映させるための更新要求Rは通常、許可されない。
【0019】
ノードNは、更新要求Rに従う台帳L(1)の更新が不可能である判定した場合、更新要求Rに従う台帳Lの更新が不可能であることを示す更新不可能通知Xを他のノードNに送信する(図2)。
【0020】
一方、ノードNは、更新要求Rに従う台帳L(1)の更新が可能である判定した場合、更新要求Rに従い台帳L(1)を更新するための情報である候補更新情報Vを生成し、他のノードNに送信する(図2)。候補更新情報Vは、例えば、更新要求Rに従い台帳L(1)に追加されるブロックBと、台帳L(1)にブロックBを追加した更新後の台帳L(2)のハッシュ値を含む。候補更新情報Vは、各ノードNが提案する更新情報であり、まだ採用されるか否かが定まっていない状態の更新情報、すなわち、更新情報の候補である。
【0021】
各々のノードNは、他のノードNから受信した更新不可能通知Xの数が所定条件を満たす場合、更新要求Rに従う台帳L(1)の更新を行わない。また、各々のノードNは、更新要求Rに従う台帳L(1)の更新を行う場合、他のノードNから受信した候補更新情報Vのうち同一内容の候補更新情報Vの数が所定条件を満たす候補更新情報Vを用いて台帳L(1)を更新する(図3)。
【0022】
ノードNが台帳Lの更新を行うか否かを決定する手順、及び、ノードNが台帳Lの更新に用いる候補更新情報Vを決定する手順を以下に説明する。
【0023】
まず、ノードNは、手元の更新不可能通知X又は候補更新情報Vの数が所定の閾値S以上となると、手元の候補更新情報Vを内容が同一のもの毎にグループ化する。
【0024】
ここで、手元の更新不可能通知Xとは自ノードが送信した更新不可能通知Xと他のノードNから受信した更新不可能通知Xとの集まりを意味するものとする。ただし、これに代えて、手元の更新不可能通知Xが、自ノードが送信した更新不可能通知Xを含まず、他のノードNから受信した更新不可能通知Xのみの集まりを意味してもよい。同様に、手元の候補更新情報Vとは、自ノードが生成した候補更新情報Vと他のノードNから受信した候補更新情報Vとの集まりを意味するものとする。ただし、これに代えて、手元の候補更新情報Vが、自ノードが生成した候補更新情報Vを含まず、他のノードNから受信した候補更新情報Vのみの集まりを意味してもよい。
【0025】
上記の閾値Sは固定値でもよいし、例えば、過去の台帳Lの更新において更新要求Rを受信した後の所定時間長の期間内に他のノードNから受信した更新不可能通知X及び候補更新情報Vの数等に基づき変更される変動値であってもよい。従って、閾値SはノードN毎に異なってもよい。
【0026】
例えば、あるノードNの現在の閾値Sが100である場合、そのノードNが他のノードNから受信した更新不可能通知X又は候補更新情報Vの数が99以上となると、手元の更新不可能通知X又は候補更新情報Vの数が100以上となるため、そのノードNは以下の処理を行う。
【0027】
まず、ノードNは、手元の候補更新情報Vを、同一の内容のもの毎にグループ化する。
【0028】
続いて、ノードNは、手元の更新不可能通知Xの数と、各グループに含まれる候補更新情報Vの数をカウントする。
【0029】
カウントした数の最大値が更新不可能通知Xの数であれば、ノードNは更新要求Rに従う台帳L(1)の更新を行わない。
【0030】
一方、カウントした数の最大値がいずれかの候補更新情報Vのグループに含まれる候補更新情報Vの数であれば、ノードNはそのグループの候補更新情報Vが、自ノードが生成した候補更新情報Vと同一内容であるか否かを判定する。それらの候補更新情報Vが同一内容である場合、ノードNが記憶している台帳L(1)は最新であったことが確認されたことになる。その場合、ノードNは、数が最多の候補更新情報V、すなわち、自ノードが生成した候補更新情報Vを用いて台帳L(1)を更新し台帳L(2)を生成する。
【0031】
数が最多の候補更新情報Vと自ノードが生成した候補更新情報Vが同一内容でない場合、ノードNが記憶している台帳L(1)は最新ではなかったことが確認されたことになる。その場合、ノードNは、自ノードが記憶している台帳L(1)を記憶領域から消去する。そのように台帳L(1)を消去した場合、ノードNは、他のノードNに対し、更新要求に従い台帳L(1)を更新して生成された台帳L(2)の送信を要求し、その要求に応じていずれかの他のノードNから送信されてくる台帳L(2)を記憶してもよい。
【0032】
上記のように、データ管理システム1においては、多数のノードNの各々が候補更新情報Vを生成し、各ノードNは自ノード及び他ノードが生成した複数の候補更新情報Vのうち最多の候補更新情報Vを採用して台帳Lの更新を行う。このように、データ管理システム1においては、データ管理システム9における場合と比較し、台帳Lの更新がノードNの各々によって、より自律的に行われる点に特徴がある。
【0033】
また、データ管理システム1においては、各ノードNの手元の候補更新情報Vの中から多数決で台帳Lの更新に用いる候補更新情報Vを決定する。すなわち、全てのノードNの合意がなくても、各ノードNは独自の判断で更新要求Rに従う台帳Lの更新を実行できる。そのため、データ管理システム1においては、全てのノードNが同一の台帳Lを記憶する必要はない。
【0034】
すなわち、データ管理システム1を構成するノードNには、例えば、図4に示すように、台帳Lと台帳Lを記憶しているノードNと、台帳Lは記憶しているが台帳Lは記憶していないノードNと、台帳Lは記憶していないが台帳Lは記憶しているノードNと、台帳Lと台帳Lのいずれも記憶していないノードNが混在していてもよい。
【0035】
上記のように、データ管理システム1においては、全てのノードNが必ずしも同じ台帳Lを記憶していなくてもよいため、1つの台帳Lから1以上の台帳を分離して新たな2以上の台帳を生成することが許容され、分離により生成される新たな2以上の台帳のうちの一部のみを記憶するノードNの存在が許容される。
【0036】
図5は、台帳L(1)から、台帳L(1)に含まれるデータの新しさに基づき台帳L(2)が分離される様子を示した図である。図5(A)は分離前の台帳Lを示し、図5(B)は分離後の台帳Lを示す。図5に示される台帳L(1)は、例えば1つの銀行口座の入出金履歴及び残高を示すデータのように、不連続なブロックを集めて連結した場合に、その連結により得られるデータは意味を成さない種類のデータである。
【0037】
図5の例では、ブロックB(1)~B(5)を含む台帳L(1)から、最新のブロックB(5)が分離され、分離されたブロックB(5)を含む台帳L(2)が新たに生成される。すなわち、この分離によって、1つの台帳L(1)が、2つの台帳、すなわち、台帳L(1)及び台帳L(2)となる。そして、この場合、将来の更新は台帳L(2)に対し行われるため、台帳L(1)は更新不可の台帳とされる。
【0038】
図6は、台帳L(1)から、台帳L(1)に含まれるデータの属性に基づき台帳L(2)が分離される様子を示した図である。図6(A)は分離前の台帳Lを示し、図6(B)は分離後の台帳Lを示す。図6に示される台帳L(1)は、例えば、ユーザPの銀行口座の入出金履歴及び残高を示すデータと、ユーザQの銀行口座の入出金履歴及び残高を示すデータを含むデータのように、2以上の異なる属性のデータを含み、それらの属性毎に取り出して時系列順に連結した場合に、その連結により得られるデータが意味を成す種類のデータである。
【0039】
図6の例では、台帳L(1)はブロックB(1)、B(1)、B(2)、B(2)、B(3)を含む。ここで、ブロックB(1)、B(2)は属性Pに関するブロックであり、ブロックB(1)、B(2)、B(3)は属性Qに関するブロックである。そして、台帳L(1)から、属性Pに関する最新のブロックB(2)が分離され、分離されたブロックB(2)を含む台帳L(2)が新たに生成される。すなわち、この分離によって、1つの台帳L(1)が、2つの台帳、すなわち、台帳L(1)及び台帳L(2)となる。そして、この場合、属性Pに関する将来の更新は台帳L(2)に対し行われ、属性Qに関する将来の更新は台帳L(1)に対し行われる。
【0040】
図7は、台帳L(1)から、台帳L(1)に含まれるデータの属性に基づき台帳L(2)と台帳L(3)が分離される様子を示した図である。図7(A)は分離前の台帳Lを示し、図7(B)は分離後の台帳Lを示す。図7に示される台帳L(1)は、図6に示される台帳L(1)と同じものである。図7の例では、台帳L(1)から、属性Pに関する最新のブロックB(2)が分離され、分離されたブロックB(2)を含む台帳L(2)が新たに生成される。また、台帳L(1)から、属性Qに関する最新のブロックB(3)が分離され、分離されたブロックB(3)を含む台帳L(3)が新たに生成される。すなわち、この分離によって、1つの台帳L(1)が、3つの台帳、すなわち、台帳L(1)、台帳L(2)、及び、台帳L(3)となる。そして、この場合、属性Pに関する将来の更新は台帳L(2)に対し行われ、属性Qに関する将来の更新は台帳L(3)に対し行われるため、台帳L(1)は更新不可の台帳とされる。
【0041】
上記のような、1つの台帳からデータを分離し2以上の台帳とする更新要求Rを以下、分離要求Dという。分離要求Dは、例えば図5の例における台帳L(1)や図7の例における台帳L(1)のように、分離元の台帳を更新不可の台帳とすることを指示する場合がある。
【0042】
分離要求Dは更新要求Rの一種であるため、データ管理システム1において、分離要求Dに従いノードNが1つの台帳からデータを分離し2以上の台帳とする手順は、図1図3を用いて既に説明した手順と同様である。
【0043】
なお、分離要求Dに従いノードNが生成する候補更新情報V、すなわち、分離要求Dに従い台帳を分離するための情報の候補は、例えば、分離後の2以上の台帳の各々に関するハッシュ値と最新のブロックBを含む。
【0044】
分離要求Dを受け取ったノードNが、自ノードのリソースに関する所定条件が満たされているか否かに基づき、分離要求Dに従う台帳の分離が可能であるか否かを判定し、可能である場合は候補更新情報Vを他のノードNに送信し、不可能である場合は候補更新情報Vに代えて、分離要求Dに従う台帳の分離が不可能であることを示す更新不可能通知Xを他のノードNに送信するように構成されてもよい。
【0045】
ここで、ノードNのリソースとは、ノードNの記憶容量の空き容量、ノードNが他のノードNとの間で行うデータ通信の速度等を意味する。台帳の分離を行うと、分離後の台帳の数は増加する。従って、分離後の台帳を全て記憶し続ける場合、ノードNの記憶容量の消費量が増加する。また、記憶している台帳の数が増加すると、一般的にノードNが他のノードNとの間で行う通信量は増加する。従って、ノードNの記憶容量の空き容量が所定の閾値以下であったり、ノードNが他のノードNとの間で行うデータ通信の速度が所定の閾値以下であったりする場合は、ノードNはその分離要求Dに関する更新不可能通知Xを送信することで、その分離要求Dに対する反対を他のノードNに表明することができる。
【0046】
分離要求Dに関する更新不可能通知Xを送信したノードNは、手元の更新不可能通知Xが最多にならず、手元の候補更新情報Vのいずれかが最多となった場合、この分離要求Dに関する自ノードが記憶している台帳を記憶領域から消去してもよい。それに代えて、ノードNは、分離要求Dに従う台帳の分離を行った後、分離後の2以上の台帳のうち一部(例えば、更新不可とした台帳)を記憶領域から消去してもよい。
【0047】
なお、ノードNは、分離要求Dに従う台帳の分離を行った場合に限られず、例えば、自ノードのリソースに関する所定条件が満たされた場合に、自ノードの記憶している台帳を記憶領域から消去するように構成されてもよい。例えば、ノードNは、自ノードの記憶容量の空き容量が所定の閾値以下となった場合に自ノードの記憶している台帳を、例えば、最終更新のタイミングが遅いものから優先的に、消去することで、記憶容量の不足を回避することができる。
【0048】
また、ノードNが、自ノードの記憶している台帳に関する更新要求Rの受信頻度に関する所定条件が満たされた場合に、その台帳を自ノードの記憶領域から消去するように構成されてもよい。その場合、ノードNは、例えば、自ノードの記憶している台帳の各々に関し、過去の所定時間長の期間内に受信した更新要求Rの数をカウントし、その数が所定の閾値以下である台帳を消去することで、使用頻度の低い台帳を記憶し続ける無駄を回避することができる。
【0049】
また、ノードNが、自ノードの記憶している台帳に関する更新要求に応じて他のノードNから送信されてきた候補更新情報Vの数に関する所定条件が満たされた場合、その台帳を消去するように構成されてもよい。その場合、ノードNは、例えば、自ノードの記憶している台帳の各々に関し、過去に他のノードNから受信した候補更新情報Vの数、すなわち、その台帳を記憶している他のノードNの数が所定の閾値以上である台帳を消去することで、必要以上に多くのノードNが同じ台帳を記憶する無駄を回避することができる。
【0050】
なお、分離要求Dに応じた台帳の分離は、台帳の消去を伴う場合、むしろ、ノードNにリソースの節約をもたらす。
【0051】
従って、例えば、ノードNが、自ノードのリソースに関する所定条件が満たされた場合に、自ノードの記憶している台帳と同じ台帳から1以上の台帳を分離して2以上の台帳とする更新を指示する更新要求Rである分離要求Dを他のノードNに送信する構成が採用されてもよい。
【0052】
この場合、ノードNは、例えば、自ノードの記憶容量の空き容量が所定の閾値以下となった場合に、自ノードの記憶している台帳に関する分離要求Dを生成し、他のノードNに送信する。その後、その分離要求Dに関する候補更新情報Vが多数決により採用されると、分離要求Dの発出元のノードNは、その候補更新情報Vを用いて自ノードの記憶している台帳から1以上の台帳を分離し、分離後の2以上の台帳のうち一部(例えば、更新不可とした台帳)を記憶領域から消去することで、自ノードの記憶容量の空き容量を増やすことができる。
【0053】
データ管理システム1においては、台帳の統合、すなわち、第1の台帳に第2の台帳の情報を追加して第1の台帳を更新するとともに、第2の台帳を更新不可とすることも許容される。
【0054】
図8は、台帳L(1)に対し台帳L(2)の情報が追加されて、台帳L(3)(台帳L(1)を更新した台帳)が生成される様子を示した図である。図8(A)は統合前の台帳Lを示し、図8(B)は統合後の台帳Lを示す。図8に示される台帳L(1)は、例えば、ユーザPの銀行口座の入出金履歴及び残高を示すデータである。また、図8に示される台帳L(2)は、例えば、ユーザQの銀行口座の入出金履歴及び残高を示すデータである。
【0055】
図8の例では、ブロックB(1)、B(2)を含む台帳L(1)に対し、台帳L(2)の最新のブロックB(2)が追加されて、新たな台帳L(3)が生成される。そして、この場合、ユーザP及びユーザQに関する将来の更新はいずれも台帳L(3)に対し行われるため、台帳L(2)は更新不可の台帳とされる。
【0056】
上記のような、第1の台帳に対し第2の台帳の情報を追加して第1の台帳を更新するとともに、第2の台帳を更新不可とすることを指示する更新要求Rを以下、統合要求Eという。
【0057】
なお、統合要求Eに従いノードNが生成する候補更新情報V、すなわち、統合要求Eに従い台帳を統合するための情報の候補は、例えば、統合後の2以上の台帳(例えば、図8の例におけるL(2)及びL(3))の各々に関するハッシュ値と最新のブロックBを含む。
【0058】
統合要求Eは更新要求Rの一種であるため、データ管理システム1において、統合要求Eに従いノードNが台帳を統合する手順は、図1図3を用いて既に説明した手順と基本的に同様である。
【0059】
ただし、既述のように、データ管理システム1においては、図4に示したように、各ノードNが記憶している台帳は必ずしも同じではない。従って、ノードNは、統合要求Eに関する第1の台帳と第2の台帳のいずれを記憶しているかによって、以下のように異なる処理を行う。
【0060】
統合要求Eに関する第1の台帳と第2の台帳の両方を記憶しているノードNは、統合要求Eに従い第1の台帳を更新するための情報の候補である候補更新情報Vを他のノードNに送信する。その後、そのノードNは、手元の数が最多の候補更新情報Vを用いて、自ノードの記憶している第1の台帳を更新するとともに、自ノードの記憶している第2の台帳を更新不可とする。
【0061】
統合要求Eに関する第1の台帳を記憶しており、統合要求Eに関する第2の台帳を記憶していないノードNは、候補更新情報Vを生成できない。従って、そのノードNは、候補更新情報Vの送信は行わず、手元の数が最多の候補更新情報Vを用いた、自ノードの記憶している第1の台帳の更新のみを行う。
【0062】
統合要求Eに関する第1の台帳を記憶しておらず、統合要求Eに関する第2の台帳を記憶しているノードNは、候補更新情報Vを生成できない。従って、そのノードNは、候補更新情報Vの送信は行わず、自ノードの記憶している第2の台帳を更新不可とする処理のみを行う。
【0063】
一般的に、同じ量のデータを分割すると、分割後のデータの総量は分割前のデータの量よりも大きくなる。従って、自ノードのリソースが逼迫しているノードNは、台帳の統合を行うことで、リソース不足を軽減できる。一方、自ノードのリソースに十分な余裕があるノードNは、台帳の統合を行うメリットが乏しい。
【0064】
従って、データ管理システム1において、ノードNが、自ノードのリソースに関する所定条件が満たされた場合、自ノードの記憶している第1の台帳と同じ台帳に対し自ノードの記憶している第2の台帳と同じ台帳の情報を追加して、自ノードの記憶している第1の台帳と同じ台帳を更新するとともに、自ノードの記憶している第2の台帳と同じ台帳を更新不可とすることを指示する更新要求Rである統合要求Eを他のノードNに送信するように構成されてもよい。
【0065】
この場合、ノードNは、例えば、自ノードの記憶容量の空き容量が所定の閾値以下となると、自ノードの記憶している第1の台帳と第2の台帳に関する統合要求Eを他のノードNに送信する。
【0066】
統合要求Eを受け取ったノードNのうち、統合要求Eに関する第1の台帳及び第2の台帳を記憶しているノードNは、自ノードのリソースに関する所定条件が満たされているか否かに基づき、統合要求Eに従う台帳の統合が可能であるか否かを判定する。そして、統合要求Eに従う台帳の統合が可能である場合は、統合要求Eに従い台帳を統合するための情報の候補である候補更新情報Vを他のノードNに送信する。一方、統合要求Eに従う台帳の統合が不可能である場合は、候補更新情報Vに代えて、統合要求Eに従う台帳の統合が不可能であることを示す更新不可能通知Xを他のノードNに送信する。
【0067】
例えば、自ノードの記憶容量の空き容量が所定の閾値以下である場合、ノードNは候補更新情報Vを他のノードNに送信し、自ノードの記憶容量の空き容量が所定の閾値より大きい場合、ノードNは更新不可能通知Xを他のノードNに送信する。
【0068】
上記のように、リソースが逼迫しているノードNは、統合要求Eを他のノードNに送信することで、台帳の統合を提案することができる。そして、統合要求Eを受け取ったノードNは、自ノードのリソースの状況に応じて、その統合要求Eに対する賛成又は反対を他のノードNに対し表明することができる。
【0069】
ところで、データ管理システム1においては、例えば、ユーザPの銀行口座の入出金履歴及び残高を示す台帳L(P)と、ユーザQの銀行口座の入出金履歴及び残高を示す台帳L(Q)は個別の台帳として扱うことが許容される。従って、例えば、ユーザPの銀行口座の残高からユーザQの銀行口座に対し10,000円の送金をそれらの台帳に反映させるための更新要求は、台帳L(P)に対し10,000円の出金を示すデータを追加するとともに現在の残高から10,000円を減算した金額を新たな残高とする、という処理を指示する更新要求R(P)と、台帳L(Q)に対し10,000円の入金を示すデータを追加するとともに現在の残高に10,000円を加算した金額を新たな残高とする、という処理を指示する更新要求R(Q)という、2つの更新要求Rとなる。
【0070】
この場合、例えば、ユーザPの銀行口座の残高が5,000円である場合、更新要求R(Q)に従う台帳L(Q)の更新は可能であるが、更新要求R(P)に従う台帳L(P)の更新は残高不足のため不可能である。その場合、仮に更新要求R(Q)に従う台帳L(Q)の更新が実行され、更新要求R(P)に従う台帳L(P)の更新が実行されなければ、台帳L(P)と台帳L(Q)に不整合が生じる。
【0071】
上記の問題を回避するため、いずれかのノードNがデータ管理システム1の外部から自ノードの記憶している台帳を含む2以上の互いに関連する台帳に関する更新要求Rを取得した場合、又は、いずれかの他のノードNから自ノードの記憶している台帳を含む2以上の互いに関連する台帳の更新要求Rを受信した場合、それらの2以上の台帳の少なくとも1つに関し、他のノードNから受信した更新要求Rに関する更新不可能通知Xの数が所定条件を満たせば、それらの2以上の台帳の全てに関し更新要求Rに従う更新を行わない、という構成が採用されてもよい。
【0072】
図9図11は、2つの互いに関連する台帳に関する更新要求Rに従い、それらの台帳の更新が行われる手順を示した図である。図9図11において、ノードNが受け取る更新要求Rは、台帳L(P)の更新を要求する更新要求R(P)と、台帳L(Q)の更新を要求する更新要求R(Q)で構成される。そして、これらの更新要求R(P)と更新要求R(Q)に従う台帳Lの更新は、両方の更新要求Rに従う台帳Lの更新が可能と判定された場合に限り、実行される。
【0073】
まず、データ管理システム1の外部から更新要求Rを取得したノードNは、更新要求Rを他のノードNに送信する(図9)。
【0074】
台帳L(P)を記憶しているノードNは、更新要求R(P)に従う台帳L(P)の更新が可能か否かを判定し、可能であれば候補更新情報V(P)を生成し他のノードNに送信し、不可能であれば候補更新情報V(P)に代えて更新不可能通知X(P)を他のノードNに送信する(図10)。
【0075】
台帳L(Q)を記憶しているノードNは、更新要求R(Q)に従う台帳L(Q)の更新が可能か否かを判定し、可能であれば候補更新情報V(Q)を生成し他のノードNに送信し、不可能であれば候補更新情報V(Q)に代えて更新不可能通知X(Q)を他のノードNに送信する(図10)。
【0076】
なお、台帳L(P)と台帳L(Q)の両方を記憶しているノードNは、更新要求R(P)に応じた上記の処理と、更新要求R(Q)に応じた上記の処理との両方を行う(図10)。
【0077】
そして、台帳L(P)を記憶しているノードNは、手元の候補更新情報V(P)のいずれかが最多となり、かつ、手元の候補更新情報V(Q)のいずれかが最多となった場合に限り、最多の候補更新情報V(P)を用いて自ノードの記憶している台帳L(P)を更新し台帳L(P’)を生成する(図11)。すなわち、仮に手元の候補更新情報V(P)のいずれかが最多となり、更新要求R(P)に従う台帳L(P)の更新が可能と判定されても、手元の更新不可能通知X(Q)が最多となり、更新要求R(Q)に従う台帳L(Q)の更新が不可能と判定された場合、ノードNは候補更新情報V(P)を用いた台帳L(P)の更新を行わない。
【0078】
また、台帳L(Q)を記憶しているノードNは、手元の候補更新情報V(P)のいずれかが最多となり、かつ、手元の候補更新情報V(Q)のいずれかが最多となった場合に限り、最多の候補更新情報V(Q)を用いて自ノードの記憶している台帳L(Q)を更新し台帳L(Q’)を生成する(図11)。すなわち、仮に手元の候補更新情報V(Q)のいずれかが最多となり、更新要求R(Q)に従う台帳L(Q)の更新が可能と判定されても、手元の更新不可能通知X(P)が最多となり、更新要求R(P)に従う台帳L(P)の更新が不可能と判定された場合、ノードNは候補更新情報V(Q)を用いた台帳L(Q)の更新を行わない。
【0079】
なお、台帳L(P)と台帳L(Q)の両方を記憶しているノードNは、台帳L(P)を記憶しているノードNは、手元の候補更新情報V(P)のいずれかが最多となり、かつ、手元の候補更新情報V(Q)のいずれかが最多となった場合に限り、最多の候補更新情報V(P)を用いて自ノードの記憶している台帳L(P)を更新するとともに、最多の候補更新情報V(Q)を用いて自ノードの記憶している台帳L(Q)を更新し、手元の更新不可能通知X(P)が最多となったか、もしくは、手元の更新不可能通知X(Q)が最多となった場合、台帳L(P)と台帳L(Q)のいずれも更新しない(図11)。
【0080】
上記の処理により、互いに関連する台帳L(P)と台帳L(Q)の更新における整合性が保たれる。
【0081】
既述のように、データ管理システム1においては、各ノードNは自ノードが記憶する台帳を、例えば記憶容量の不足が生じないように、適宜消去することが許容される。従って、ある台帳に関し、その台帳を記憶しているノードNの数が少なくなりすぎて、多数決により決定される候補更新情報Vや更新不可能通知Xの信頼性が確保できなくなる場合が生じ得る。
【0082】
そのような問題を回避するために、各ノードNが、自ノードが記憶しておらず、記憶している他のノードNの数が少ない台帳を、他のノードNから取り寄せて記憶するように構成されてもよい。
【0083】
例えば、ノードNが、自ノードの記憶していない台帳に関する更新要求Rの受信頻度に関する所定条件が満たされた場合、他のノードNにその台帳の送信を要求し、その要求に応じていずれかの他のノードNから送信されてきた台帳を記憶するように構成されてもよい。その場合、ノードNは、例えば、過去の所定時間長の期間内に受信した更新要求Rの数を、その更新要求Rに関する台帳毎にカウントし、その数が所定の閾値以上である台帳を、他のノードNから取り寄せて記憶する。その結果、使用頻度の高い台帳を記憶するノードNの数が増えることになる。
【0084】
また、例えば、ノードNが、自ノードの記憶していない台帳に関する更新要求Rに応じて他のノードNから送信されてきた候補更新情報Vの数に関する所定条件が満たされた場合、他のノードNにその台帳の送信を要求し、その要求に応じていずれかの他のノードNから送信されてきた台帳を記憶するように構成されてもよい。その場合、ノードNは、例えば、自ノードの記憶していない台帳の各々に関し、過去に他のノードNから受信した候補更新情報Vの数、すなわち、その台帳を記憶している他のノードNの数が所定の閾値以下である台帳を他のノードNから取り寄せて記憶する。その結果、記憶しているノードNが不足している台帳を新たに記憶するノードNが増加し、その不足が解消する。
【0085】
なお、仮に、ノードNが、自ノードの記憶していない台帳を他のノードNから取り寄せて記憶するトリガとなる条件が、全てのノードNで共通であれば、全てのノードが同じ台帳をいっせいに記憶することになり、望ましくない。従って、ノードNが他のノードNから台帳を取り寄せて記憶するトリガとなる条件は、例えば乱数等を用いて、ノードN毎に異なるように構成されることが望ましい。
【0086】
同様に、仮に、ノードNが、自ノードの記憶している台帳を消去するトリガとなる条件が、全てのノードNで共通であれば、全てのノードが同じ台帳をいっせいに消去することになり、望ましくない。従って、ノードNが記憶している台帳を消去するトリガとなる条件は、例えば乱数等を用いて、ノードN毎に異なるように構成されることが望ましい。
【0087】
図12は、データ管理システム9と比較した場合のデータ管理システム1のメリットを説明するための図である。図12(A)はデータ管理システム9を示し、図12(B)はデータ管理システム1を示す。データ管理システム9においては、全てのノードが、全てのブロックを含む台帳を1つ記憶している。データ管理システム9においてノードが記憶する台帳のデータサイズは時間の経過に伴い肥大化する。また、台帳が更新される場合、全てのノードのコンセンサスを得るため、代表ノードの処理負荷が大きい。さらに、1つの台帳が全てのデータを含んでいるため、台帳の更新頻度が高く、通信ネットワークのトラフィックが大きい。
【0088】
一方、データ管理システム1においては、各ノードが必要なデータのみを含む小さいサイズの台帳を記憶すればよく、各ノードが記憶する台帳は異なってもよい。従って、各ノードが記憶する台帳が肥大化することはなく、台帳が各ノードの記憶容量の不足をもたらすことはない。また、台帳が更新される場合、各ノードが一部の他ノードから受信した候補更新情報に基づき正しい候補更新情報を決定するため、一部のノードに更新情報の検証のための処理負荷が集中することがなく、また、各ノードの処理負荷も小さい。さらに、各ノードは自ノードの記憶している台帳に関する更新のみを行えばよいため、台帳の更新頻度は低く、通信ネットワークのトラフィックが小さい。
【0089】
なお、上述した実施形態において、候補更新情報Vは更新後の台帳のハッシュ値と最新のブロックを含むものとしたが、台帳の更新を可能とする情報である限り、候補更新情報Vにどのような情報が含まれてもよい。例えば、候補更新情報Vが更新後の台帳全体を含んでもよい。
【0090】
候補更新情報Vが更新後の台帳全体を含む場合、更新要求Rに関する古い台帳を記憶しているノードNは、更新要求Rに従い、古い台帳を消去するとともに、他のノードNから受信した候補更新情報Vに含まれる台帳を記憶することで、自ノードの記憶する台帳を更新できる。
【0091】
また、上述した実施形態において、分離要求Dに従い生成される台帳の数は1つ(図5図6)又は2つ(図7)であるものとしたが、分離要求Dに従い生成される台帳の数は3つ以上であってもよい。
【0092】
また、上述した実施形態において、統合要求Eに従い第1の台帳に追加されるデータの出所となる台帳の数は1つ(第2の台帳のみ)であるものとしたが、第1の台帳に追加されるデータの出所となる台帳の数は2つ以上であってもよい。
【0093】
本発明は、上述したデータ管理システム1に例示されるシステム、上述したデータ管理システム1を構成するノードNに例示されるデータ処理装置、上述したデータ管理システム1を構成するノードNに例示されるデータ処理装置が行う処理をコンピュータに実行させるためのプログラム、当該プログラムを持続的に記憶し当該プログラムに従うデータ処理を実行するプロセッサを有するコンピュータ、当該プログラムをコンピュータ読み取り可能に記録している記録媒体等を含む。
【0094】
本発明に係るプログラムは、コンピュータ読み取り可能な記録媒体に記録された状態で提供され、当該記録媒体からコンピュータにより読み取られて実行されてもよいし、通信ネットワークを介してコンピュータにダウンロードされて実行されてもよい。
【符号の説明】
【0095】
1…データ管理システム、9…データ管理システム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15