本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
実施形態は、データをブロックチェーンから抽出するための簡潔なメカニズムを提供するという有益な効果を有することができる。データを抽出するために、追加のコネクタを実装する必要がなくてよい。例えば各データの分析を実行することによって、ブロックチェーン・データから多くの有益な情報が抽出可能であることがある。そのような分析を実行可能にするために、データが抽出され、分析用に構成されたブロックチェーン・ネットワークの外部にある外部データ構造に提供されてよい。
イベントは、追加データを提供すること、既存のデータを変更すること、または既存のデータを削除すること、あるいはその組合せを含んでよい。イベントは、ブロックチェーンのブロックに各イベントを記録するトランザクションを呼び出すことによって提供されてよい。実施形態によれば、イベントはデータの照会を含むか、またはトリガーしてよい。例えば、データの削除がイベントとして検出されている場合、データの削除を実行するために、どのデータを削除するかを決定するための削除時のコールバックが必要になることがある。以下では、ブロックチェーンは台帳と呼ばれてもよい。実施形態によれば、台帳はブロックチェーンと同一であってよい。代替の実施形態によれば、台帳は、ブロックチェーンに加えて、追加のデータの集合に格納される追加のデータ(例えば、世界状態(world state)またはプライベート・データ)を含んでよい。
ブロックチェーンは、任意の種類の情報を格納するための台帳として使用されてよい。しかし、ブロックチェーンは、主に金融トランザクションに使用され、資産(すなわち、製品、パッケージ、サービス、状態など)を含んでいる任意の種類の情報を格納してよい。ブロックチェーンは、任意の種類の情報を変更不可能な台帳に安全に格納するために使用されてよい。非集中型の合意は、1つの中央データベースがトランザクションの妥当性を規定するために使用される場合などの、従来の集中型の合意とは異なっている。非集中型の合意方式は、権限および信用を非集中型ネットワークに移し、そのノードが継続的かつ連続的にトランザクションをブロックに記録できるようにし、ブロックチェーンと呼ばれる一意のチェーンを作成する。したがって、トランザクション・ソースの認証を保護するために暗号を使用して(例えば、ハッシュ・コードによって)、非集中型の合意方式によって中央の仲介人の必要性を取り除くことができる。
ブロックチェーンは許可型分散データ・システムとして実装され、厳格なプライバシーおよびセキュリティの制御を考慮して設計されることがあるため、ブロックチェーンの現在の持続性の実装は、チェーン上の分析(すなわち、ブロックチェーン技術自体に基づいて機械学習、予測分析などの高度な分析を実行すること)に適していない。それに加えて、多くの分析が、単一のシステム内で異なるソース(例えば、Hadoopに基づくデータ・レイク、または通常は分析用の複数の他のシステムから入力を取得する企業のデータ・ウェアハウス)からのデータを必要とする。そのような状況では、ブロックチェーン・システムは、トランザクション・データをそのような中央分析システムに提供する必要のある、注文入力システムのような単なる別のトランザクション・システムである。許可型ブロックチェーン・ネットワークでは、すべてのユーザおよびコンポーネントが、既知の識別情報を有してよい。署名/検証論理がすべての通信接点で実装され、一連の署名および妥当性確認によって、トランザクションが合意されてよい。
ピアは、台帳を維持し、台帳に対して読み取り/書き込み動作を実行するためにチェーンコードを実行する、ネットワーク・エンティティである。ピアは、ブロックチェーン・ネットワークのメンバーによって所有され、維持される。
ブロックチェーンは、例えば、Hyperledger Fabricブロックチェーン・プロジェクトによって提供されるブロックチェーンであってよい。Hyperledger Fabricは、Linux Foundationの傘下にあるブロックチェーン・フレームワークの実装である。Hyperledger Fabricは、モジュール式アーキテクチャを使用してアプリケーションまたはソリューションを開発するための基盤を提供し、合意サービスおよびメンバーシップ・サービスなどのコンポーネントをプラグ・アンド・プレイにすることを可能にする。例えば、システムのアプリケーション論理を含んでいるチェーンコードとも呼ばれるスマート・コントラクトが提供されてよい。
Hyperledger Fabricは、例えばビジネスの目的で初期の信用および識別情報に対する要求を共有する実体(例えば、ビジネス・パートナー)間のプライベート台帳として使用されてよい。したがって、Hyperledger Fabric上のブロックチェーンは、許可され(すなわち、ブロックチェーンに対するアクセス権限が付与されるために、参加している実体による許可を含んでいる登録が要求され)、参加している実体を識別して許可するために使用されるユーザIDを示し、参加している匿名の実体間の初期の信用を欠いているパブリック・ブロックチェーンのような網羅的なマイニングなしで、合意を実施する、プライベート・ブロックチェーンの形態で提供されてよい。
許可型ブロックチェーン・ネットワークのプラットフォームとして、Hyperledger Fabricは、ブロックチェーン・ネットワークのすべてのメンバーに割り当てられたブロックチェーン・ネットワーク識別情報を管理するためのモジュール式認証局コンポーネントを備える。したがって、アクセス制御リスト(ACL:access control lists)に基づくネットワーク活動に対する制御が有効化され、すべてのトランザクションがブロックチェーン・ネットワークの登録済みメンバーまでトレース可能であることを保証する。認証局は、ルート証明書によってブロックチェーン・ネットワークに参加することが許可されているメンバーごとに、登録証明書に署名するためのルート証明書を保持することができる。そのルート証明書の完全性の保護における信頼によって、信用が作り出される。得られた証明書は、更新されるか、または取り消されてよい。さらに、登録証明書は、各メンバーのコンポーネント、サーバ側のアプリケーション、およびときにはユーザに発行されてよい。各登録済みユーザは、トランザクション証明書の割り当てがさらに付与されてよい。各トランザクション証明書は、1つのネットワーク・トランザクションを許可することができる。ネットワークのメンバーシップおよび活動に対する証明書に基づく制御は、メンバーがプライベートな機密のチャネル、アプリケーション、およびデータに対するアクセスを制限することを可能にしてよい。
Hyperledger Fabricは、証明書の発行および妥当性確認ならびにユーザ認証の背後ですべての暗号メカニズムおよびプロトコルの抽象化を提供するメンバーシップ・サービス・プロバイダ(MSP:membership service provider)コンポーネントを備える。メンバーシップ・サービス・プロバイダは、各ピアにインストールされ、各ピアに発行されたトランザクション要求が、認証されて許可されたユーザ識別情報から生じることを保証することができる。Hyperledger Fabricは、順序付けノード(ordering nodes)(順序付けノード(orderers)とも呼ばれる)によって実施される順序付けサービスをさらに提供する。順序付けノードは、トランザクションを順序付け、順序付けられたトランザクションをブロックにパッケージ化し、これらのブロックがピアに送信され、ピアの台帳のインスタンスに書き込まれる。
Hyperledger Fabricは、クライアントの認証、署名、順序付け、および台帳へのコミットを含むトランザクション・フロー全体を通じてデータの一貫性および完全性を保証する複数のチェックポイントを実装する。Hyperledger Fabricブロックチェーン・ネットワークでは、照会およびトランザクションのためのデータのフローは、クライアント側のアプリケーションがトランザクション要求をブロックチェーン・チャネル上のピアにサブミットすることによって開始される。クライアント・アプリケーションは、APIを使用してトランザクション提案に署名し、そのトランザクション提案を、指定されたブロックチェーン・チャネル上の適切な署名ピアにサブミットする。この最初のトランザクション提案は、署名の要求である。各ブロックチェーン・チャネル上の各ピアは、サブミットしているクライアントの識別情報および権限を検証する。有効である場合、各ピアは、クライアントによって提供された入力に対して、指定されたチェーンコードを実行する。トランザクション結果および呼び出されたチェーンコードの署名ポリシーに基づいて、各ピアが署名された応答をアプリケーションに返す。トランザクションに同意する各署名された応答は、トランザクションの署名である。提案が、チェーンコード内で照会機能を呼び出した場合、アプリケーションはデータをクライアントに返す。提案が、チェーンコード内である機能を呼び出して台帳を更新した場合、アプリケーションは次のステップを続行する。アプリケーションは、読み取り/書き込みのセットおよび署名を含んでいるトランザクションを順序付けサービスに転送する。使用されるブロックチェーン・チャネル上のすべてのピアは、チェーンコード固有の妥当性確認ポリシーを適用し、同時実行制御バージョン・チェック(concurrency control version check)を実行することによって、ブロック内の各トランザクションの妥当性を確認する。チャネル上の各ピアは、トランザクションの順序付けられたブロックの妥当性を確認してから、それらのブロックをチャネル台帳のローカル・レプリカにコミットする(すなわち、追加する)。ピアは、各ブロック内の各トランザクションに、有効または無効としてマーク付けも行う。妥当性確認プロセスに失敗したすべてのトランザクションは、ブロック内で無効としてマーク付けされる。すべての有効なトランザクションは、変更されたキー/値の対に応じて、状態データベース(すなわち、世界状態)の更新に使用される。台帳データをブロックチェーン・チャネル全体に継続的にブロードキャストし、各ブロックチェーン・チャネルに割り当てられたピア間で同期された台帳を保証するために、ゴシップ・データ配布プロトコル(gossip data dissemination protocol)が使用される。
実施形態は、台帳に対するイベントを単純にリッスンすることよりも多くのことを可能にするという有益な効果を有することができる。追加ブロックが、イベントがブロックチェーンに追加されるということを表すイベント・データを含んでいる場合、追加ブロックが外部リスナーに転送されるだけでなく、ブロックチェーン・ネットワークの一部であるETLピアの形態で提供されたETLデバイスによって、外部データ構造を変更するために使用される得られたデータのセットが、外部データ構造のデータ・モデルに従うように、ブロックチェーンからイベント・データを抽出し、変換し、読み込むために、ETLコードが実行される。ブロックチェーン・ネットワーク内のETLピアによってETLコードが実行されるため、プライバシーを保つことができ、登録要件も満たされる。さらに、イベント・データに一致するイベント・スキーマに適応された適切なETLコード、および外部データ構造のデータ・モデルを使用することによって、外部データ構造を変更するために、すべての関連するデータ要素が抽出され、考慮されることを保証することができる。
実施形態は、ETLピアがブロックチェーン・ネットワークの一部である(すなわち、ETLコードがブロックチェーン・ネットワークのセキュリティ境界内で実行される)という有益な効果を有することができる。したがって、ブロックチェーン・ネットワークのセキュリティ境界の一部としてのETLピアは、ブロックチェーン・ネットワークで処理されるすべてのイベント・データに対するフル・アクセス権限を備えることができる。特に、ETLピアは、このようにしてブロックチェーン・ネットワーク内の通信全体(例えば、ブロックチェーン・ネットワーク内のデータをルーティングするために使用されるブロックチェーン・ネットワークの通信プロトコル全体)をリッスンすることを可能にされてよい。ブロックチェーン・ネットワークの通信プロトコルは、例えばゴシップ・プロトコル(すなわち、ゴシップ・データ配布)の形態で提供されてよい。ゴシップ・プロトコルは、データの完全性および一貫性を保証するために、信頼できる拡張可能なデータ配布プロトコルを提供する。ブロックチェーン・ネットワークの性能、セキュリティ、および拡張性を向上させるために、一方では署名ピアおよびコミット・ピア、他方ではトランザクション順序付けノードなどの、トランザクション実行ピア全体で、ワークロードが分割されてよい。
ゴシップ・プロトコルに従うメッセージングは、複数のピアから現在の一貫性のある台帳データを常に受信しているブロックチェーン・チャネル上の各ピアで、連続的であってよい。各ゴシップ・メッセージは、署名されてよい。ゴシップ・プロトコルは、ピアの検出およびブロックチェーン・チャネルのメンバーシップを管理してよい。このために、ゴシップ・プロトコルは、使用可能なピアを継続的に識別し、オフラインになったピアを検出してよい。ゴシップ・プロトコルは、ブロックチェーン・チャネルのすべてのピアにわたって台帳データを配布してよい。例えば遅延、ネットワークの分割、またはその他の理由に起因して、ブロックチェーン・チャネルの他のピアと同期していない(すなわち、台帳データを失った)すべてのピアは、失ったデータを保有しているピアに接触することによって、最終的に現在の台帳の状態まで同期されてよい。新たに接続されたピアは、台帳データのピアツーピア状態転送更新を可能にすることによって、加速するように育成されてよい。
ゴシップ・プロトコルに基づくブロードキャストは、ピアによって、同じチャネルの他のピアからメッセージを受信することと、受信されたメッセージを各チャネル上の複数のランダムに選択されたピアに転送することとを含んでよい。ピアは、メッセージの配信を待つのではなく、プル・メカニズムをさらに用いてよい。このサイクルを繰り返すことによって、チャネルのメンバーシップ、台帳、および状態情報を最新かつ同期した状態に継続的に保つことができる。ブロックチェーンの追加ブロックの配布のために、チャネル上のリーダー・ピアは、順序付けサービスからデータをプルしてよく、順序付けサービスは、トランザクションを順序付けてブロックにパッケージ化し、ゴシップ・プロトコルを使用して、ブロックチェーン・ネットワークの同じメンバーに割り当てられた他のピアへのブロックの配布を開始する。ブロックは、順序付けサービスによって署名され、ブロックチェーン・チャネル上のリーダー・ピアに配信されてよい。ブロックチェーン・ネットワークの各メンバーは、リーダー・ピアとして選ばれた1つのピアを含んでよく、リーダー・ピアは、順序付けサービスとの接続を維持し、各メンバーの他のピア全体へのブロックチェーンの追加ブロックの配布を開始してよい。
ブロックチェーン・ネットワークのオンラインのピアは、アライブ・メッセージを継続的にブロードキャストして、それらのピアの使用可能性を示してよい。これらのメッセージの各々は、例えば、公開鍵基盤(PKI:public key infrastructure)ID、およびメッセージ上の送信者の署名を含んでよい。ブロックチェーン・チャネルのピアが特定のピアからアライブ・メッセージを受信しない場合、このピアは死んでいると見なされ、最終的にブロードキャスト・チャネルのメンバーシップから除去されてよい。アライブ・メッセージは暗号によって署名されており、悪意のあるピアはルート認証局(CA:certificate authority)によって許可された署名鍵を持っていないため、悪意のあるピアが他のピアになりすますのが防がれる。
受信されたメッセージの自動転送に加えて、状態調整プロセスが、各ブロックチェーン・チャネル上のピア全体で世界状態を同期させてよい。ゴシップ・プロトコルに基づいてデータの配布を維持するために、固定された接続が必要でないため、プロセスは、ノードのクラッシュに対する耐性を含めて、データの一貫性および完全性を共有台帳に確実に提供することができる。
ブロックチェーン・チャネルは分離されているため、あるチャネル上のピアは、他のどのチャネル上でメッセージを送信することも、情報を共有することもできなくてよい。ピアは、複数のチャネルに属してよいが、分割されたメッセージングは、ピアのブロックチェーン・チャネル・サブスクリプション(blockchain channel subscriptions)に基づいてメッセージ・ルーティング・ポリシーを適用することによって、同じブロックチェーン・チャネルに割り当てられていないピアにデータが配布されるのを防ぐことができる。
ポイントツーポイント・メッセージのセキュリティは、署名を必要とせずに、例えばピアのTLS層によって処理されてよい。ピアは、CAによって割り当てられたピアの証明書によって認証されてよい。ピア証明書は、ゴシップ・プロトコルに従って認証されてよい。認証は、ブロックチェーン・ネットワークのメンバーシップ・サービス・プロバイダによって制御されてよい。ピアがブロックチェーン・チャネルに初めて接続するときに、TLSセッションがメンバーシップ識別情報に結び付けられてよい。それによって各ピアは、ブロックチェーン・ネットワークおよびブロックチェーン・チャネル内のメンバーシップに関して、接続しているピアに対して、基本的に認証されてよい。
ブロックチェーン・ネットワークのピア間の通信全体は、ブロックチェーンに含まれているブロックのデータの内容を超えてよい。ブロックチェーン・ネットワークによって処理されたデータは、台帳を使用して格納されてよい。台帳は、オブジェクトに関する事実情報を格納する。事実情報は、オブジェクトの現在の状態(例えば、オブジェクトの属性の値)、および各状態をもたらしているトランザクションの履歴に関する事実を含んでよい。ブロックチェーンに加えて、台帳は世界状態を含んでよい。したがって、台帳に含まれ、ブロックチェーン・ネットワークによって処理されるデータは、ブロックチェーンに含まれているデータを超えてよい。ブロックチェーンおよび世界状態は、オブジェクトのセットに関する事実情報のセットをそれぞれ表す。世界状態は、オブジェクトのセットの現在の状態のキャッシュを含んでいるデータの集合(例えば、データベース)の形態で提供されてよい。台帳の世界状態に含まれているオブジェクトの現在の状態のセットは、台帳の状態と呼ばれることもある。世界状態は、ブロックチェーンによって提供された、各現在の状態をもたらしているトランザクション・ログ全体を調べることによって現在の状態を計算することを必要とせずに、現在の状態への直接アクセスを提供するという有益な効果を有することができる。台帳の状態は、例えば、キーと値の対として表されてよい。世界状態は、台帳の状態が作成されるか、更新されるか、または削除されるか、あるいはその組合せが実行されるときに、頻繁に変化してよい。ブロックチェーンは、ブロック構造を使用して、現在の世界状態をもたらしたすべての変化を記録するトランザクション・ログを提供する。トランザクションは、ブロック内に収集されて、ブロックチェーンに追加される。世界状態とは対照的に、ブロックチェーンは、一旦書き込まれると、変更され得ない(すなわち、変更不可能なように設計されている)。
ETLピアは、ブロックチェーン・ネットワークの一部として登録され、ブロックチェーンにアクセスすることが許可されている。したがって、ブロックチェーンの所有者は、データにアクセスしているETLピアが存在するということを知る。ETLピアは、前もってチェックされてよく、ブロックチェーン上のデータにアクセスするためのETLピアのアクセス権限が必要に応じて定義されてよい。実行時に、有効な認証情報またはデジタル証明書あるいはその両方によって証明された有効なアクセス権限を有するETLピアなどの実体のみがデータを読み取ることを許可されることを保証するために、認証情報またはデジタル証明書あるいはその両方が、妥当性に関してチェックされてよい。このようにして、不正利用を防ぐことができる。
既知のパブリック・ブロックチェーンは、ほとんど通貨に集中しており、すなわち、銀行口座のような、金銭の送信および受信という2種類のトランザクションに集中している。これらのトランザクションは、例えば、販売および購入(すなわち、提供された製品またはサービスあるいはその両方に関する金銭の受け取りまたは金銭の支払い)に基づいてよい。これは、パブリック・ブロックチェーンの主な目的の1つが、(仮想)金銭(暗号通貨とも呼ばれる)の取引であるということを意味する。これは、パブリック・ブロックチェーンにおいて実装された合意メカニズムの結果として理解され得る。トランザクションの順序および正しさに基づいて同意(すなわち、合意)を達成するために、ブロックチェーンに記録されたトランザクションを検証するための網羅的計算プロセスが実施される。この網羅的計算プロセスは、例えば、ブロックチェーンに追加されるトランザクションを含むブロックに関して、1つまたは複数の事前に定義された基準を満たすハッシュ値を見つけることなどの、数値的パズルを解くことを含む。ハッシュ値は予測不可能であり、すなわち、ブロックに対して行った小さい変更が、この小さい変更なしで得られるハッシュ値と相関関係がないように見えるほど、得られるハッシュ値を大きく変更するため、事前に定義された基準を満たすハッシュ値が偶然検出されるまで、入力データの変化が体系的にテストされる必要がある。数値的パズルの解の証明は、ブロックが本物であるということの証拠として役立つ。あるブロックを操作する場合、このブロックおよびブロックチェーン内のすべての後続のブロックを生成するために実行されるすべての計算量が、繰り返される必要がある。十分な数のピアが、真実に興味を持っている場合、この計算は不可能であるか、または少なくとも経済的に非常に好ましくないと考えられる。ピアまたは少なくともピアの一部は、必ずしも真実に対して固有の興味を持っていないことがあるため、ピアが、証明を実施することに計算能力を投資するためには、何らかの報酬が必要であり、すなわち、信頼できない関係者間で信用を確立する必要がある。パブリック・ブロックチェーン内で提供される報酬は、例えば、特定の量の暗号通貨である。プライベート・ブロックチェーンについて考えると、参加している実体(例えば、企業)が真実に対して固有の興味を持っているため、そのような報酬は不要である。例えば、信頼できる関係者のみに、ブロックチェーンに対するアクセス権限が付与されてよい。したがって、暗号通貨は、プライベート・ブロックチェーンの必要な部分ではない。
実施形態は、ブロックチェーン(例えば、プライベート・ブロックチェーン)上で行われる複数の異なる種類のトランザクションを処理するのに適しているという有益な効果を有することができる。したがって、データ抽出は、パブリック・ブロックチェーン内で通常実施されるような単一の種類のトランザクションに限定されない。イベント・データの可変論理構造が処理されてよい。暗号通貨について考えると、ブロックチェーンに含まれている情報は単純な構造であってよく、したがって受信情報のスキーマが前もって知られていてよい。しかし、Hyperledger Fabricのようなプライベート・ブロックチェーンの場合、これが当てはまらない。データ構造に関してどのような要件も強制されることなく、任意の種類のイベント・データが記録されてよい。
そのような多目的利用の場合のデータ抽出はかなり困難であるということが、判明することがある。そのような場合、すべてのアプリケーションおよびすべてのデータタイプを別々に処理する必要があり、エンド・ユーザごとの個別のカスタマイズが必要になるため、企業のソリューションを陳腐化することがある。
実施形態は、データのモデル駆動型抽出を使用するという有益な効果を有することができる。イベント・データの論理構造を識別し、識別された構造要素をマッピングするためのイベント・スキーマが、例えば複数のイベント・スキーマを提供するライブラリを使用して、自動的に決定される。さらに、例えばデータ・スチュワードまたは機械学習の使用によって、新しい使用事例に合わせて簡単に調整できる多目的の変換が適用される。このようにして、ソース・コードの変更の必要性を回避することができ、データを重視するアプリケーションのための大きい利益を提案する。ブロックチェーン・ネットワークの通信プロトコル(例えば、ゴシップ・プロトコル)が、ブロックチェーン・ネットワーク内のピアを同期させるために使用されてよい。
データのモデル駆動型抽出は、ブロックチェーン・ネットワークに統合されたETLピアを使用して任意のブロックチェーン・ネットワークに接続されてよい。したがって、リスナーとしてのETLピアは、ネットワーク自体の一部であり、ブロックチェーン・ネットワークの通信プロトコル全体をリッスンできるようにし、ETLピアが関連するすべてのデータを考慮できるようにし、プライベート・データの集合(すなわち、ブロックチェーンの一部ではないデータを含んでいる、ブロックチェーン・ネットワークの限定された数の選択されたメンバーのみによって共有されたデータの集合)に格納されたデータでさえ、考慮できるようにする。
ブロックチェーン・チャネルとは、ブロックチェーン・ネットワークの2つ以上の選択されたメンバー間の通信のプライベート・サブネットのことを指す。そのようなブロックチェーン・チャネルが、プライベートな機密のトランザクションを実施する目的で使用されてよい。ブロックチェーン・チャネルは、通信のプライベート・サブネットに参加する、選択されたブロックチェーン・ネットワークのメンバー(例えば、組織)、メンバーごとのアンカー・ピア、共有台帳、チェーンコード・アプリケーション、および順序付けサービス・ノードのうちの1つまたは複数によって定義されてよい。ブロックチェーン・ネットワーク上の各トランザクションは、ブロックチェーン・チャネル上で実行されてよく、トランザクションに参加する各関係者は、その特定のブロックチェーン・チャネル上でトランザクションを実行するために、認証されて許可される必要がある。ブロックチェーン・チャネルに参加する(すなわち、例えば各ブロックチェーン・チャネルを使用するために登録されて許可されている)各ピアは、例えば、チャネルに対して各ピアを認証するメンバーシップ・サービス・プロバイダによって割り当てられた、それ自身の識別情報を有してよい。
アンカー・ピアには、複数の台帳を維持する複数のチャネルが割り当てられてよいが、台帳データは、あるチャネルから別のチャネルに渡されなくてよい。ブロックチェーン・チャネルによる台帳のそのような分離は、構成チェーンコード、識別情報メンバーシップ・サービス(identity membership service)、およびゴシップ・プロトコルを使用して定義され、実施されてよい。ブロックチェーン・ネットワーク上のトランザクション、台帳の状態、およびチャネルのメンバーシップに関する情報を含んでいるデータの配布は、特定のブロックチェーン・チャネルへの検証可能なメンバーシップを有するピアに制限されてよい。ブロックチェーン・チャネルによるピアおよび台帳データのこの分離を使用することによって、プライベートな機密のトランザクションを必要とするブロックチェーン・ネットワークのメンバーが、同じブロックチェーン・ネットワーク上で他の制限されたブロックチェーン・ネットワークのメンバーと(競合他社とさえ)共存できるようにしてよい。
データを、同じブロックチェーン・チャネルに割り当てられているネットワークの他のメンバーからプライベートに保つために、プライベート・データの集合が使用されてよい。プライベート・データの集合に含まれている実際のプライベート・データが、ピアツーピアで、例えばゴシップ・プロトコルを介して、プライベート・データを見ることが許可されているブロックチェーンのメンバーに割り当てられたピアのみに、送信されてよい。プライベート・データの集合は、各ピアに含まれているプライベート・データベース(プライベート状態データベースとも呼ばれる)を使用して、許可されたピア上に実装されてよい。許可されたピア上のこれらのプライベート・データベースは、これらの許可されたピア上のチェーンコードからアクセス可能であってよい。実施形態によれば、順序付けサービスがプライベート・データを見ないように、順序付けサービスが含まれなくてよい。許可されたピア全体へのピアツーピアでのプライベート・データの配布は、追加のブロックチェーン・チャネルの設定を必要とせずに、各ピア間のセキュア通信チャネルを使用することを含んでよい。したがって、プライベート・データの集合は、同じブロックチェーン・チャネルに割り当てられたブロックチェーン・ネットワークの限定された数の選択されたメンバーが、プライベート・データを署名すること、コミットすること、または照会すること、あるいはその組合せを実行することを可能にし、一方、同じチャネルに割り当てられたブロックチェーン・ネットワークの残りのすべてのメンバーは、プライベート・データに対するアクセス権限を有さず、分離したブロックチェーン・チャネルを作成する必要がない。プライベート・データのハッシュ値が計算され、署名され、順序付けられ、各ブロックチェーン・チャネル上のすべてのピアの台帳に書き込まれてよい。ブロックチェーンに含まれ、各チャネルに割り当てられたブロックチェーン・ネットワークのすべてのメンバーによってアクセス可能なハッシュ値は、プライベート・データを含んでいるトランザクションの証拠としての役割を果たし、状態の妥当性確認および監査の目的に使用されてよい。プライベート・データの集合を共有しているブロックチェーン・ネットワークのメンバーのうちの限定された数の選択されたメンバーの各メンバーは、プライベート・データを他の第三者と共有することを決定してよい。したがって、この第三者は、共有されたプライベート・データのハッシュ値を計算し、計算されたハッシュ値がチャネルの台帳に記録された状態(すなわち、ブロックチェーンのトランザクションに格納されたハッシュ値)に一致するかどうかをチェックし、各状態が特定の時点に存在したということを証明することを可能にされてよい。
実施形態は、ブロックチェーン内のトランザクション全体で収集されたデータの分析を可能にするという有益な効果を有することができる。実施形態は、ブロックチェーン・ネットワークによって管理されているブロックチェーンに記録されたトランザクション・データの分析を可能にするという有益な効果を有することができる。
ETLデバイスは、ブロックチェーンを提供するブロックチェーン・ネットワーク内で、特殊な計算ピア・デバイス(本明細書ではETLピアとも呼ばれる)の形態で提供されてよい。ETLピアは、ブロックチェーンに記録されたトランザクション・データを、セキュアな方法で抽出し、変換し、外部データ構造(例えば、データベース)に読み込むように構成される。さらに、外部データ構造によって提供された、抽出されて変換されたデータの分析(例えば、予測分析)を実行するために、データ分析が提供されてよい。抽出されたデータの変換は、抽出されたデータの分類を含んでよい。
代替の実施形態によれば、ETLデバイスは、外部計算デバイスの形態で提供されてよく、すなわち、適切なセキュリティの統合を伴って、ブロックチェーン・ネットワークの外部で実行され、例えば、ブロックチェーン・ネットワークのピアへの暗号によって保護されたメッセージング接続を使用して、ブロックチェーン・ネットワーク上で交換されるデータを監視する。
ブロックチェーンの所有者は、特殊なETLピアがブロックチェーン・ネットワークの一部になり、ブロックチェーンに対するアクセス権限を獲得することに同意する必要があってよい。ブロックチェーンの所有者は、例えば、ブロックチェーンを初期化し、ブロックチェーンのユーザ(すなわち、ブロックチェーン・ネットワークを構成するピアを実行するか、または使用する、他の実体)の登録を管理するブロックチェーン・ネットワークを構成する1つまたは複数のピアを実行する実体であってよい。この登録は、ブロックチェーンの所有者による、ブロックチェーンの使用の許可を含んでよい。実施形態によれば、ブロックチェーンの所有者は、ブロックチェーン・ネットワークを構成するピアを実行し、ブロックチェーンの使用を許可されている、コンソーシアムを形成する実体のグループであってよい。
実施形態によれば、ETLピアは、同期しているため、常にブロックチェーン・ネットワーク内の他のすべてのピアと同じ情報レベルにある。実施形態によれば、ETLピアは、ブロックチェーン・ネットワークの他のピアと比較して、追加の能力を有している。ETLピアは、イベントを検出するように構成される。イベント・データを抽出できるようにするために、ETLピアは、抽出されるべきイベント・データを含んでいるイベントが発生したことを通知するように構成される。そのようなイベントは、ブロックチェーンのブロックに記録された1つまたは複数のトランザクションを含んでよい。実施形態によれば、そのようなイベントは、複数のトランザクションを内部に含む、ブロックチェーンの完全なブロックを含んでよい。ETLピアによるイベント検出は、ブロックチェーン・ネットワーク内のイベントの捕捉を可能にする。
ETLピアは、イベント・データをチェーン外の外部データ構造に送信する前に、受信イベント・データを、例えばブロックチェーンの前のブロック、またはETLピアによってアクセス可能なデータの集合のローカル・コピーに格納されている既存のイベント・データ・スキーマと比較し、それに応じて、送信されるイベント・データを調整してよい。検出されたイベントがデータの削除(例えば、台帳上の資産の削除)を含んでいる場合、ブロックチェーン・ネットワークのピアは、ブロックチェーンに記録されたデータの削除に起因して、ローカル・データの集合内の各データを削除してよい。しかし、ブロックチェーンに記録されたそのようなデータの削除は、外部データ構造に対する方法と同一の方法で実行可能でなくてよい。これは、チェーン外の外部データ構造(例えば、データベース)が、ブロックチェーンまたはローカル・データの集合あるいはその両方よりも複雑な論理構造を備えている場合に、特に当てはまることができる。チェーン外の外部データ構造からの同じデータの削除は、何らかの不具合を引き起こすことがある。ETLピアが、ブロックチェーンから、またはブロックチェーンの、あるいはその両方の受信イベント・データを、既存のデータと比較するように構成された場合、ETLピアは、著しくより包括的な削除の通知をチェーン外の外部データ構造に送信することを可能にされてよい。
実施形態によれば、ETLデバイスは、実行時イベント・スキーマ・セレクタ(runtime event schema selector)を備える。このスキーマ・セレクタは、既知のイベント・スキーマのライブラリを使用して、ブロックチェーンを使用して記録されたイベントを表すトランザクション・ペイロード・データからイベント・スキーマを推論するように構成されてよい。
ライブラリは、ブロックチェーン用に設定されてよく、発生することが期待されるイベント・データ(すなわち、トランザクション)のイベント・スキーマを含んでいる。ライブラリは、完全なトランザクションを提供する代わりに、資産スキーマの形態でイベント・スキーマを含んでよい。このようにして、取引される資産の自由な組合せが複雑化につながらないことを保証する、よりアトミックな方法が提供されてよい。ETLデバイスは、ライブラリに対するアクセス権限を有し、このアクセス権限を、検出されたイベントごとにイベント・スキーマを決定するために使用してよい。追加のイベント・スキーマが手動で、または自動的に設定されてよい。実行時イベント・スキーマ・セレクタは、イベント・データに使用されるイベント・スキーマ(すなわち、どのイベント・スキーマがイベント・データの論理構造に一致するか)を決定してよい。したがって、決定されるイベント・スキーマは、イベント・データの種類(すなわち、受信するイベント・データの論理構造)によって決まる。イベント・スキーマは、データ要素を、外部データ構造の論理構造によって定義された構造要素にマッピングするために使用される。イベント・スキーマは、適用されるマッピング、および適用されるマッピングの頻度を決定するために使用されてよい。例えば、トランザクションは、同じ種類の複数の資産の変更を定義するイベントを含んでよい。これらの複数の変更を完全に考慮するために、同じマッピングを複数回適用する必要があってよい。
実行中に、どの種類のデータ要素が受信ブロックのトランザクションに含まれているか(例えば、どの資産がいくつ含まれているか)を決定するために、ブロックチェーンに追加される受信ブロックが分析されてよい。例えばトランザクションの形態でのペイロード・データに加えて、ブロックは、メタデータをさらに含んでよい。ペイロード・データ(例えば、作成、変更、または削除、あるいはその組合せが実行されている資産)だけでなく、メタデータも、適切な変換が後のステップで適用されるように、イベント・スキーマを使用してタグ付けされてよい。
実施形態によれば、イベント・スキーマの決定は、例えばJSON(JavaScript Object Notation)スキーマ記述を使用して、ブラインドで実行されてよい。実施形態は、データ漏洩のないデータ要素の種類の決定を可能にするという有益な効果を有することができる。得られたスキーマは、マッピング・クリエイターを供給するために使用されてよい。スキーマ自体は、不明な構造が届いたときに、すぐに生成されてよい。そのような自動生成は、イベント・データの移行を容易にすることができる。
実施形態によれば、イベント・スキーマを生成するために、機械学習が使用されてよい。ETLデバイスは、入力および出力を含む機械学習モデルを備えてよい。機械学習モデルは、入力を介してイベント・データを受信することに応答して、出力を介してイベント・スキーマを提供するようにトレーニングされてよい。イベント・スキーマを提供するように構成された機械学習モデルを提供するためのトレーニングは、機械学習モデルを生成するための学習アルゴリズムを提供することを含んでよい。さらに、トレーニング・データセットが提供されてよい。各トレーニング・データセットは、トレーニング・イベント・データと、各トレーニング・イベント・データの論理構造を定義するトレーニング・イベント・スキーマとを含んでよい。学習アルゴリズムは、機械学習モデルを生成するためにトレーニング・データセットに対して実行されてよい。
「機械学習」という用語は、機械学習モデルと呼ばれる確率モデルを自動化された方法で構築することによって、トレーニング・データセットから有用な情報を抽出するために使用されるコンピュータ・アルゴリズムのことを指す。機械学習は、線形回帰、k最近傍手法、サポート・ベクター・マシン、または分類/回帰ツリーなどの1つまたは複数の学習アルゴリズムを使用して実行されてよい。「モデル」は、例えば、測定されていない値または値のセットを予測できるようにする方程式またはルールのセットであってよく、例えば、イベント・データの論理構造を他の既知の値(例えば、イベント・データ)から定義するイベント・スキーマである。
実施形態によれば、ETLデバイスは、ETLコード抽出器をさらに備える。ETLコード抽出器は、イベント・スキーマに基づいて、例えばjoltを使用して、ブロックまたはトランザクション・データあるいはその両方からイベント・データを抽出するためのメカニズムを実装するように構成される。joltは、JSON間の変換機能を提供するjavaライブラリである。実施形態によれば、JSON形式で提供されるイベント・データの場合、マッピングに基づくETLコードがjoltで実行されてよい。バックエンドにおいて、イベント・データの特定のデータ要素がソース形式で検出された場合、検出されたデータ要素をソース形式からメタ形式に変換するために、ETLコード抽出器が使用される。メタ形式は、まだJSONであってよい。メタ形式は、外部データ構造に投入される準備ができていなくてよい。例えば、JSON形式は、SQLまたは別のデータベース形式に投入される準備ができていなくてよい。さらに、データベース固有の要件がデータベース・コネクタで処理されてよく、データベース・コネクタは、例えば、JSON形式などのメタ形式からの、SQLの挿入ステートメントなどのデータベースと互換性のある挿入ステートメントの作成を処理してよい。
実施形態によれば、ETLデバイスは、メッセンジャー(例えば、ネットワーク通信インターフェイス)をさらに備え、メッセンジャーは、ブロックチェーンおよびブロックチェーン・ネットワークの外部の(すなわち、チェーン外の)外部データ構造(例えば、データベース)に接触する。メッセンジャーは、セキュアなチャネルを介してデータを送信するように構成されてよい。さらに、メッセンジャーは、メッセージング・プロセスの中断が発生した場合でも、メッセージングのために提供されたデータが失われないように、ある種のメモリを備えてよい。
実施形態は、イベントの捕捉のためのメカニズムを提供するために、ブロックチェーンのセキュリティとのイベント・データ抽出の統合を可能にし、変換を実装する大きい労力および長時間にわたる維持を回避し、追加のデータ管理またはデータ・リネージを必要としないという有益な効果を有することができる。
例示の目的で、ユーザが新商品の保険契約を購入する例について考えることができる。このイベントは、2つの追加の資産を書き込むトランザクションを含んでいる、ブロックチェーンに追加される追加ブロックの生成をトリガーしてよい。第1の追加の資産は、保険契約を購入したユーザに割り当てられたユーザ名、パスワード、および場合によっては他の情報を含んでいる、追加のユーザの資産であってよい。第2の追加の資産は、保険契約に関する情報および関心事である商品に関する情報を含んでいる追加の契約資産であってよい。関心事である商品に関する情報は、例えば、ネストされたキー値オブジェクトとして提供されてよい。イベント、すなわち、ブロックチェーンの追加ブロックに記録された保険契約の購入が、例えばETLピアの形態で提供された、ETLデバイスによって検出されてよい。ETLピアは、本質的に、ブロックチェーン・ネットワーク上の保険の購入に関するイベント・データを処理するために実装されたセキュリティ層を含み、維持してよい。したがって、外部の視点からは、すべての認証手段が考慮されてよい。実施形態によれば、どのような種類の故障時にもブロックチェーン・ネットワークの異なるピア・ノードへの自動再接続を保証する高度に利用可能な(HA:highly available)イベント捕捉に対する必要性が満たされてよい。
ブロックチェーン・ネットワーク上のブロックチェーンのブロックに格納されたデータのスキーマのないドキュメント形態に起因して、ペイロード・データ(例えば、資産)のデータ要素は、データ要素の構造を識別するタイトルも、どのような追加のメタ情報も含んでいないことがある。したがって、イベント・データの論理構造の分析、およびブロックチェーン上に存在することが知られているイベント・データの種類の論理構造要素との比較が、実施されてよい。この実施は、例えば、このイベントでは任意選択であるフィールドの欠落が存在する場合でも、イベント・データの種類を正しく予測することを含んでよい。
ETLデバイスは、抽出されるイベント・データの単純な平坦化と、特定の対象のデータ・モデルに向かって形式設定する多重プロセスの可能性との両方に取り組むように構成されてよい。SQLの事例では、追加のユーザの資産、追加の契約資産によって提供されたデータ、およびブロックによって提供されたメタデータ情報が、複数の対象のテーブル(例えば、ユーザ関連の情報を含んでいるユーザ・テーブル、契約関連の情報を含んでいる契約テーブル、および保険商品関連の情報を含んでいる商品テーブル)にマッピングされてよい。イベント・スキーマと組み合わせてイベント・データによって提供されたソース構造から、外部データ構造のデータ・モデル(例えば、関係データ・モデル)によって提供されたターゲット構造へのマッピングは、グラフィカル・インターフェイスを使用してソース・コードを変更せずに、ユーザによって実行されてよい。代替として、機械学習モジュールが使用されてよい。このために、例えば機械学習手法を使用してマッピングを正常に自動生成するために、メタデータ分析(例えば、列名、データの種類)が適用されてよい。
このマッピングは、メタデータおよびブロックチェーンによって提供された資産データに適用されるETLコードを生成するために使用される。実施形態によれば、ETLデバイスは、さらに処理する前にすべての変換が成功していること(例えば、外部データ構造の論理構造を定義するデータ・モデルへの、ブロックチェーンのブロックによって提供されたメタデータの「混入」が正常に処理されたこと、および外部キーの関係を使用して識別された依存しているテーブルの書き込み順序が保証されること)を保証するためのメカニズムを実装する。
実施形態によれば、変換されたイベント・データの読み込みは、ETLデバイスによって、変換されたイベント・データを、メッセージング・ネットワークを介してブロックチェーン・ネットワークの外部にある外部計算デバイスに送信することを含む。外部計算デバイスは、外部データ構造を管理する。実施形態は、変換されたイベント・データに従って外部データ構造のデータの内容を変更するために、変換されたイベント・データを外部計算デバイスに送信することによって、チェーンの外での使用(例えば、外部データ構造を使用して信頼できるデータ・アナライザによって実行されるデータ分析など)のために、イベント・データが提供されてよいという、有益な効果を有することができる。
実施形態によれば、ETLデバイスは、マッピング・クリエイターをさらに備える。マッピング・クリエイターは、イベント・スキーマをブロックまたはトランザクションあるいはその両方から分離するように構成されてよい。言い換えると、ペイロード・データおよびメタデータが、インスタンス・ブロックまたはトランザクションあるいはその両方のレベルで、適切なイベント・スキーマにマッピングされてよい。マッピング・クリエイターは、JSONの1つの例として、関係マッピングへの平坦化マッピングのために、データ・モデルに従う構造IDを、抽出されたイベント・データ(例えば、公開鍵または外部キーあるいはその両方)に挿入するか、または操作するか、あるいはその両方を実行するように、さらに構成されてよい。実施形態によれば、JSONからHBASEへなどの、その他のマッピングが存在してもよい。
マッピング・クリエイターは、受信データがトランザクションのメタデータまたはペイロード(例えば、資産)データのいずれであるかを判定するように構成される。マッピング・クリエイターは、ペイロード・データとメタデータの間の関係を認識するようにさらに構成される。実施形態によれば、ブロックチェーンのブロックに含まれているイベント・データは、トランザクションのメタデータに加えて、資産データのメタデータを含まなくてよい。実施形態によれば、マッピング・クリエイターは、資産データのメタデータを、ブロックチェーンのペイロード・データに関連するメタデータを提供するローカル・データの集合から決定してよい。実施形態によれば、決定された関係は、外部データ構造のデータの内容を変更するために抽出される関連するペイロード・データを識別するために使用されてよい。
マッピング・クリエイターは、ソース形式(例えば、ネストされたJSON形式)、および最適なターゲット形式(例えば、SQLデータベースのテーブル構造または非QLデータベースのその他の形式)を表示する使いやすいグラフィカル・インターフェイスを提供してよい。データ・スチュワードは、ソース形式をターゲット形式に結び付けてよい。実施形態によれば、このマッピングは、入力および出力を含む機械学習モデルを使用して実行されてよい。機械学習モデルは、入力を介して両方の形式を受信することに応答して、出力を介してターゲット形式へのソース形式のマッピングを提供するようにトレーニングされてよい。ソース形式をターゲット形式に変換するように構成された機械学習モデルを提供するためのトレーニングは、機械学習モデルを生成するための学習アルゴリズムを提供することを含んでよい。さらに、トレーニング・データセットが提供されてよい。各トレーニング・データセットは、トレーニング・ソース形式、トレーニング・ターゲット形式、および各トレーニング・ターゲット形式への各トレーニング・ソース形式のマッピングの定義を含んでよい。学習アルゴリズムは、機械学習モデルを生成するためにトレーニング・データセットに対して実行されてよい。
前述のマッピングは、変換コードを作成するために使用されてよい。実施形態は、任意のソース形式およびターゲット形式へのこのマッピング・クリエイターの使用を可能にする多目的の方法を実装するという有益な効果を有することができる。実施形態によれば、このマッピングは、完全に自動化された方法で実施されてよい。
実施形態によれば、ETLデバイスは、決定されたイベント・スキーマに基づいてETLコードを生成するためのETLコード生成器をさらに備える。ETLコードは、受信イベント・データを、外部データ構造(例えば、データベース)と互換性があるデータ形式に変換するために使用される。ETLコード生成器は、例えばJSON間の変換のためのjoltを使用して、ターゲット形式へのソース形式のマッピングを変換してよい。joltは、JSON間の変換機能を提供するjavaライブラリである。ETLコード生成器は、マッピングを受け取り、マッピングを使用してjolt変換仕様を作成してよい。
実施形態によれば、ETLコードの提供は、外部データ構造の論理構造へのイベント・データのマッピングを含む。このマッピングのために、決定されたイベント・スキーマおよび外部データ構造のデータ・モデルが使用される。さらに、ETLコードの提供は、マッピングを使用してイベントのためのETLコードを生成することを含む。実施形態は、変換されたイベント・データに従って外部データ構造のデータの内容を変更するために、検出されたイベントを表すイベント・データを抽出し、変換し、読み込むためのETLコードを自動的に提供するという有益な効果を有することができる。このマッピングは、外部データ構造の論理構造を定義するデータ・モデルに応じて、ETLデバイスが抽出されたイベント・データを異なるデータ形式に変換することを可能にする動的マッピングとして実装されてよい。例えば、外部データ構造を管理する外部計算デバイスによって、外部データ構造のデータ・モデルを定義する情報がETLデバイスに提供されてよい。
実施形態によれば、イベントの検出は、ブロックチェーンのブロックの一部としてブロックチェーンに追加される、ETLピアによって提供されているイベント・データを検出することによって、イベントを直接捕捉することを含む。実施形態は、イベントがブロックチェーンに記録される前でさえ、イベントを検出するという有益な効果を有することができる。
実施形態によれば、イベントは、クライアントまたは順序付けノードから直接捕捉される。クライアントは、ブロックチェーンに記録されるトランザクションを提案してよく、すなわち、トランザクションを追加するためのチェーンコードの呼び出しを提案してよい。実施形態によれば、クライアントは、1つまたは複数の署名ピアに対して、提案されたチェーンコードの呼び出しの結果に同意する(例えば、署名する)よう要求する必要があってよい。署名ピアは、署名ポリシーによって定義され、サービス検出を用いて検出されてよい。
順序付けノードは、トランザクションをブロックにパッケージ化する責任を負ってよく、それらのブロックを、ブロックチェーン・ネットワーク全体の主要なピアに配布してよい。組織とも呼ばれる、ブロックチェーン・ネットワークの各メンバーは、各メンバーが加入している各チャネル上に複数のピアを所有してよい。これらのピアのうちの1つまたは複数は、各メンバーの代理として順序付けノードの形態で提供されるネットワークの順序付けサービスと通信するために、各チャネルの主要なピアとして機能してよい。順序付けサービスは、ブロックをチャネル上の主要なピアに配信する。主要なピアは、ブロックを受信し、同じメンバーに割り当てられた他のピアに配布する。トランザクション・フローは、トランザクションの提案、ブロックへの提案されたトランザクションのパッケージ化、およびブロックの妥当性確認を含んでよい。順序付けノードは、パッケージ化の責任を負ってよく、ブロックチェーン・ネットワーク上のブロックの配布によって、妥当性確認にさらに関与してよい。順序付けノードの実装は、例えばApache Kafkaに基づいてよい。Apache Kafkaは、高スループットの耐故障性の特徴を有するメッセージング・ソフトウェアを提供する。順序付けノードは、持続性を有さなくてよく、データベースを含まなくてよく、それ自身の台帳も持たなくてよい。
順序付けノードを使用して実装された順序付けサービスは、共有された通信チャネルをクライアントおよびピアに提供し、トランザクションを含んでいるメッセージのためのブロードキャスト・サービスを提供してよい。クライアントは、このチャネルに接続し、各チャネル上でメッセージをブロードキャストしてよく、その後それらのメッセージが、すべてのピアに配信される。チャネルは、すべてのメッセージのアトミックな配信(すなわち、全順序配信および実装に固有の信頼性を有するメッセージ通信)をサポートしてよい。したがってチャネルは、同じメッセージを接続されたすべてのピアに出力してよく、同じメッセージを、同じ論理的順序で、これらのピアのすべてに出力してよい。
実施形態によれば、イベントの検出は、ブロックチェーン・ネットワークの通信プロトコルを使用してETLピアを介してブロックチェーン・ネットワーク上でルーティングされているデータを監視することを含む。通信プロトコルは、例えば、ゴシップ・プロトコルの形態で実装されてよい。実施形態は、ブロックチェーン・ネットワーク通信間のセキュリティを損なわずに、ブロックチェーン・ネットワーク上でルーティングされているデータに対するアクセス権限が、ブロックチェーン・ネットワークのメンバーとしてのETLピアに提供されるという有益な効果を有することができる。特に、許可型ブロックチェーン・ネットワークのセキュリティが維持されてよい。ブロックチェーン・ネットワーク内のトランザクションは、通信プロトコルを介してピア間で送信および受信されてよい。
ETLピアは、通信プロトコル(例えば、ゴシップ・プロトコル)を介してブロックチェーンに追加される伝搬されたイベント・データを受信し、ブロックチェーン内で伝搬されたイベント・データを受け入れるピアの合意を待ってよい。この合意が達成されるとすぐに、ETLピアは、ゴシップ・プロトコルを介して各イベント・データを受信しているブロックチェーン・ネットワークの他のすべてのピアと同様に、受信されたイベント・データを、ローカル・データの集合(例えば、内部状態データベース)に追加してよい。さらに、ETLピアは、ETLコードを使用して、イベント・データを、外部データ構造のデータの内容を変更するのに適しているイベントを表しているデータとして検出し、このイベント・データを外部の世界(すなわち、ブロックチェーン・ネットワークの外部の計算デバイス)の外部データ構造に提供する。ゴシップ・プロトコルをリッスンしているETLピアは、イベント・データの前述の方法を参照し、ゴシップ・プロトコルを介して、ピアの合意の場合に、イベント・データを外部データ構造に提供することに加えて、イベント・データをローカル・データ接続に格納する。
実施形態によれば、ETLデバイスは、ブロックチェーン・ネットワークによって提供された複数のブロックチェーンに対するアクセス権限を有する。実施形態は、ETLデバイスが、外部データ構造を使用している信頼できるデータ・アナライザに、複数のブロックチェーンに対するアクセス権限を提供してよいという有益な効果を有することができる。ブロックチェーンは、同じ所有者または異なる所有者によって所有されてよい。
例えば、信頼できるデータ・アナライザは、外部データ構造を介して、異なる所有者(例えば、保険)の異なるブロックチェーンに対するアクセス権限を有してよい。信頼できるデータ・アナライザは、外部データ構造によって提供されたイベント・データを分析し、イベント・データによって表されたイベントに応答して、実行される必要のある動作を予測してよい。例えば、信頼できるデータ・アナライザは、同じ領域で発生している同じ種類の莫大な数のトランザクション(例えば、山火事、洪水などのような自然災害の場合の、保険に関連するトランザクション)を検出することがある。信頼できるデータ・アナライザは、莫大な数のトランザクションに関して、外部調整インスタンス(external regulation instance)に知らせ、大きい損害金額の可能性に起因して、これらのトランザクションに関与している保険会社に関する問題が生じる可能性があるということを示してよい。
ETLデバイスは、それらの予測を実行しているそのような信頼できるデータ・アナライザに、ブロックチェーンを使用して管理されている関連するイベント・データを提供するための、有益なインフラストラクチャを提供することができる。したがって、関連する情報を取得し、分析を実行するか、分析に基づいて必要な動作を決定するか、または各必要な動作を任意のブロックチェーン・アプリケーションから時間通りにトリガーするか、あるいはその組合せを実行するための、包括的で使いやすい方法を、ETLデバイスによって、信頼できるデータ・アナライザに提供することができる。
実施形態によれば、ブロックチェーンの所有者は同じであってよい。例えば、企業は、複数のブロックチェーンを所有または使用し、ブロックチェーンに記録されたイベント・データを、企業、ビジネス・インテリジェンスなどを管理するために使用することがある。信頼できるデータ・アナライザは、ETLデバイスを使用して、すべてのブロックチェーンを使用するデータ分析を各企業に提供してよい。
実施形態によれば、外部データ構造は、変換されたイベント・データを複数のETLピアから受信し、各ETLピアは、異なるブロックチェーンを提供する異なるブロックチェーン・ネットワークのメンバーである。実施形態は、外部データ構造が複数のブロックチェーンからのイベント・データを考慮するという有益な効果を有することができる。前述したように、このイベント・データは、すべてのブロックチェーンまたはすべてのブロックチェーン・ネットワークあるいはその両方へのデータ・アナライザの直接アクセスを必要とせずに、データ分析を実行するために、信頼できるデータ・アナライザによって使用されてよい。この場合、複数のETLピアが、分析に必要な情報を信頼できるデータ・アナライザに提供するインフラストラクチャを実装するために使用される。
実施形態によれば、イベント・スキーマは、ブロックチェーン・ネットワーク上に発生する可能性のあるイベントの種類を表すイベント・データの論理構造を識別する1つまたは複数のイベント・スキーマを提供するライブラリを使用して決定される。このライブラリは、例えば、ブロックチェーンに含まれている可能性があるイベントの種類を表すイベント・データの論理構造を識別するイベント・スキーマを提供してよい。実施形態は、イベント・スキーマが、イベントを表すイベント・データを、ライブラリによって提供されたイベント・スキーマと比較することによって決定されてよいという有益な効果を有することができる。ライブラリによって提供されたイベント・スキーマが、検出されたイベントのイベント・データの論理構造に一致する場合、論理構造を識別する(すなわち、イベント・データのデータ要素の論理的役割または意味を決定する)ための各イベント・スキーマが選択されてよい。実施形態によれば、論理スキーマは、特定のイベント・スキーマに一致するイベント・データに含まれてよいが、イベント・データが各イベント・スキーマに一致するために存在する必要はない、任意選択的なデータ要素を考慮してよい。
実施形態によれば、ライブラリによって提供されたどのイベント・スキーマも、検出されたイベントのイベント・データの論理構造に一致しない場合、この方法は、検出されたイベントのイベント・データの論理構造を分析することと、検出されたイベントのイベント・データの論理構造に一致する追加のイベント・スキーマを決定することと、追加のイベント・スキーマをライブラリに追加することとをさらに含む。実施形態は、イベントを表すイベント・データが、不明な(すなわち、ライブラリに含まれているどのイベント・スキーマにも一致しない)論理構造を含んでいる場合でも、イベント・スキーマを提供するための方法を提供するという有益な効果を有することができる。実施形態によれば、イベント・データの論理構造の分析、または検出されたイベントのイベント・データの論理構造に一致する追加のイベント・スキーマの決定、あるいはその両方が、手動で実行される。実施形態によれば、論理構造の各分析または追加のイベント・スキーマの決定あるいはその両方が、自動的に実行される。例えば、分析または決定あるいはその両方は、機械学習を使用して実施される。
実施形態によれば、イベント・スキーマの決定は、決定されたイベント・スキーマを使用して、イベント・データに含まれている1つまたは複数のデータ要素にタグ付けすることを含む。これらのタグは、決定されたイベント・スキーマによって定義されたデータ要素の構造の種類を識別する。実施形態は、イベント・データのデータ要素の構造の種類を識別するタグの形態で情報を含むイベント・データを提供するという有益な効果を有することができる。この情報は、イベント・データに含まれているデータ要素を、外部データ構造のデータ・モデルによって定義された外部データ構造の論理構造にマッピングするために使用されてよい。
実施形態によれば、タグは、タグ付けされたデータ要素を、外部データ構造の論理構造によって定義された構造要素にマッピングするために使用される。実施形態は、イベント・データのデータ要素と外部データ構造の論理構造の論理的カテゴリの間の論理的対応を識別するためにタグを使用するという有益な効果を有することができる。
実施形態によれば、外部データ構造は、データベース、およびデータ・モデルを使用してデータベースを管理するためのデータベース管理システムの形態で提供される。実施形態は、外部データ構造を使用して、効果的かつ効率的な方法で、イベント・データに対するアクセス権限をチェーン外の実体に付与するという有益な効果を有することができる。チェーン外の実体、すなわち、ブロックチェーン・ネットワークの一部ではない実体は、例えば、イベント・データの内容を分析するためにイベント・データに対するアクセス権限を必要とするデータ・アナライザであってよい。したがって、ETLデバイスを使用して、ブロックチェーン・ネットワークまたはブロックチェーン・ネットワークに含まれているピアのいずれかをさらに変更することを必要とせずに、さまざまな種類の外部の実体に、イベント・データに対するアクセス権限が付与されてよい。データベースおよびデータベース管理システムは、外部の実体がデータベースをイベント・データのソースとして使用する目的で、例えばデータ分析動作を実行するために、最適化されてよい。
実施形態によれば、データベースを管理するためにデータベース管理システムによって使用されるデータ・モデルは、関係データ・モデル、階層的データ・モデル、ネットワーク・データ・モデル、オブジェクト指向データ・モデル、グラフ・データ・モデル、実体関係モデル・データ・モデル、キー値データ・モデル、多次元データ・モデル、列指向データ・モデル、ドキュメント指向データ・モデル、およびデータ・ストリーム・データ・モデルのうちの1つである。実施形態は、ETLデバイスによって、ETLコードを使用して、任意のターゲット・データ形式への抽出されたイベント・データの変換を可能にするという有益な効果を有することができる。ターゲット・データ形式は、イベント・データを使用して変更される外部データベースのデータ・モデルによって決定されてよい。各データベースは、SQLデータベースまたは非SQLデータベースであってよい。
実施形態によれば、抽出されたイベント・データの変換は、データ・モデルに従って1つまたは複数の構造IDを抽出されたイベント・データに追加することを含む。実施形態は、変換されたデータが、データ・モデルによって定義された外部データ構造の論理構造によく似ることができるという有益な効果を有することができる。したがって、よりコンパクトな、例えば正規化される方法で、変換されたデータが提供されてよい。例えば、このようにして、メッセージの重複が抑制され、二重送信を防ぐことができる。
実施形態によれば、構造IDは、主キーおよび外部キーのうちの1つまたは複数を含む。実施形態は、関係ターゲット(すなわち、関係外部データ構造(relational external data structure))の場合に、主キー(PK:primary keys)および外部キー(FK:foreign keys)の使用に起因して、イベントの重複を防ぐという有益な効果を有することができる。SQLに特有の状況では、PKおよびFKは、メッセージの重複を抑制し、二重送信を防ぐために使用されてよい。
実施形態によれば、構造IDは関係エッジを含む。そのような関係エッジは、例えば、グラフ・データベース(すなわち、データを表して格納するためにノード、関係エッジ、およびプロパティを含む意味照会のためのグラフ構造を使用するデータベース)において使用されてよい。関係エッジは、ノードとして表されたデータ項目間の関係を表すことによって、データ項目を直接関連付ける。グラフ・データベース内の関係の照会は、それらの関係がデータベース自体の内部に存在するということに起因して、高速であることができる。グラフ・データベースは、このようにして、重度に相互接続されたデータにとって有益な関係の直感的な視覚化を可能にすることができる。実施形態は、外部データ構造がグラフ・データベースである場合に、外部データ構造のデータ形式へのイベント・データの変換を可能にするという有益な効果を有することができる。非SQLに特有の状況では、例えば、関係エッジの形態での構造IDが追加されてよい。
データベースの関係モデルでは、主キーとは、関係(すなわち、テーブル)においてタプル(すなわち、行)を一意に指定する属性(すなわち、列)の最小セットの特定の選択のことを指す。主キーは、例えば、レコード(すなわち、一意のID)を識別する属性であってよい。さらに一般的には、主キーは、候補キー(すなわち、最小スーパーキー)の選択である。任意のその他の候補キーが、代替のキーと見なされてよい。リレーショナル・データベースとの関連において、外部キーとは、別のテーブルまたは同じテーブルの行を一意に識別するテーブル内のフィールドまたはフィールドの集合のことを指す。このようにして、第1のテーブル内の主キーを参照している外部キーが、第2のテーブル内で定義される。正規化されたデータベースでは、別のテーブルに格納された値を参照する外部キーの形態でのインデックス・キーが、実際の値の代わりに使用されてよい。例えば、user tableというテーブルが、user_idという主キーを含んでいる。contract tableという別のテーブルが、2つのテーブル間の関係を一意に識別するために、user_idを参照する外部キーを含んでいる。
実施形態によれば、ETLデバイスは、外部データ構造の一貫性を保証するために使用される。ブロックチェーンの閉じたブロック内のデータを後で変更することはできないため、一貫性チェックを使用して、外部データベース内のエラーが検出され、修正されてよい。この一貫性チェックは、ETLデバイスから受信されたデータを外部データ構造に格納されているデータと照合することを含んでよい。ETLデバイスは、例えば、実行されたETLコードを記録し、それらのETLコードの一部またはすべてを再実行してよい。例えば、ETLデバイスは、外部データ構造を管理している計算デバイスによる要求に応答して、この再実行を行ってよい。したがって、抽出されたデータの一種の後方証明(backwards proofing)が実施されてよい。
実施形態によれば、抽出されたイベント・データの変換は、抽出されたイベント・データの平坦化を含む。実施形態は、構造調整をほとんどまたは全く強制せずに、抽出されたイベント・データを変換するという有益な効果を有することができる。外部データ構造のデータ・モデルは、少数の構造的要件の構造のみを定義してよく、すなわち、外部データ構造は非正規化されたデータベースであってよい。報告および分析の場合、平坦な構造が有利であることがあり、性能向上に役立つことがある。
実施形態によれば、抽出されたイベント・データは、メタデータおよびペイロード・データを含む。実施形態は、ブロックチェーンのブロック内の順序変更されたトランザクションによって提供されたペイロード・データだけでなく、メタデータも考慮されるという有益な効果を有することができる。メタデータは、例えば、各トランザクションを含んでいるブロックが生成された時点を識別するタイムスタンプを含んでよい。この時点は、トランザクションの形態でブロックチェーンに記録されている各イベントの発生時間として識別されてよい。例えば、メタデータは、各トランザクションを含んでいるブロックのクリエイターのクリエイターIDを含んでよい。各クリエイターは、各トランザクションの形態で提供されたイベント・データのクリエイターと見なされてよい。
実施形態によれば、イベント・データの抽出は、検出されたイベントがデータの削除を含んでいる場合に、ブロックチェーン・ネットワークから追加データを取り出すためにコールバックを実行することと、この追加データを使用して、データの削除に従って外部データ構造のデータの内容を変更するために、外部データ構造から削除される1つまたは複数のデータ要素を決定することとをさらに含む。実施形態は、外部データ構造のデータの内容を変更するためにデータの削除も考慮する効率的かつ効果的な方法を提供するという有益な効果を有することができる。実施形態は、外部データ構造において、論理的依存関係または構造的依存関係あるいはその両方が、ブロックチェーンと相対的に異なる場合でも、およびブロックチェーンが、各値ではなく、削除される実際の値を識別するIDのみを含んでいる場合でも、外部データ構造内のデータの削除を実施するために、ETLデバイスが、削除されるデータを決定できるようにすることができる。
ブロックチェーンは、ブロックチェーン・ネットワークによって提供されたブロックチェーンを使用してクライアントによって管理されている基礎になるデータ構造のイベントを記録するために使用されてよい。基礎になるデータ構造は、例えば、データベースなどのデータの集合であってよい。実施形態によれば、ETLデバイスは、各基礎になるデータ構造のローカル・コピーに対するアクセス権限を備えるか、または有し、元の基礎になるデータ構造または基礎になるデータ構造の別のコピーあるいはその両方に対して発生するイベントごとに、このローカル・コピーを更新してよい。キー値ストアの形態の基礎になるデータ構造内のデータを削除する場合に、ブロックチェーンに記録されている削除を表すトランザクションは、削除される各データに割り当てられたキーを「ヌル」に設定するためのステートメントのみを含んでよい。言い換えると、ブロックチェーン内のデータの状態は、例えば、キー値データベースに格納されてよい。削除の場合、内容の指定がなければ、キーは無効に設定される。外部データ構造(すなわち、ターゲット・データベース)に向けての、基礎になるデータ構造(すなわち、ソース・データベース)内のデータの記録された削除を実施するために必要な変換の、場合によっては無作為な複雑さに起因して、各削除の処理は、複数のステップの処理を必要とすることがある。したがって、エントリが削除される場合でも、イベントの完全なデータ構造を捕捉することを可能にされたメカニズムが提供されてよい。ETLデバイスは、キーがキー値データストレージ(すなわち、基礎になるデータ構造のローカル・コピー)から削除される前に、コールバックを直接実行するように構成されてよい。したがって、キーが削除される前にキーを使用して、削除される実際の値が決定されてよい。実施形態によれば、代替的または追加的に、削除されるキーに割り当てられた値を識別する最新のエントリを検出するために、ETLデバイスによってブロックチェーンの照会が実行されてよい。通常はトランザクションが、ブロックチェーン構造に適切に統合された後に、ブロックチェーンから消去不可能であるため、この照会は常に可能であってよい。
コールバック機能は、トランザクションのwrite-setで「isDelete」がtrueである場合に実行されてよい。一例として、トランザクションの以下のread-setおよびwrite-setが検討されてよい。
<TxReadWriteSet>
<Ns ReadWriteSet name=”chaincode1”>
<read-set >
<read key=”K1”, version=”1”>
<read key=”K2”, version=”1”>
</read-set>
<write-set>
<write key=”K1”, value=”V1”
<write key=”K3”, value=”V2”
<write key=”K4”, is Delete=”true”
</write-set >
</NsReadWriteSet>
<TxReadWriteSet>
「<write key=”K4”...」を受信するときに、参照される値は空であり、「isDelete」が「true」に設定される。この情報だけに基づいて、どの値が削除されるかを決定することはできない。したがって、例えば台帳から、キー「K4」の実際の値を、削除される前に照会するために、コールバック機能が実行されてよい。外部データ構造は、ID「K4」を含まないか、または知らないか、あるいはその両方であってよい。したがって、トランザクションによって定義されたデータの削除に従って、どの値を削除する必要があるかを外部データ構造に知らせるために、実際の値が必要になる。
実施形態によれば、コールバックは、ブロックチェーン・ネットワークによって提供されたブロックチェーン、またはブロックチェーン・ネットワークのピアによって提供されたローカル・データの集合を対象にする。例えば、ローカル・データの集合は、ブロックチェーン・ネットワークのピアとして構成されたETLデバイス(すなわち、ETLピア)によって提供される。実施形態は、ブロックチェーンが、各データ値ではなく、削除される実際のデータ値を識別するIDのみを含んでいる場合でも、ETLピアが削除される実際のデータ値を決定することを可能にするという有益な効果を有することができる。実際のデータ値は、特に、各データ値を識別するIDが削除される前に、ローカル・データの集合から、またはIDを実際のデータ値に割り当てるトランザクションを含んでいるブロックチェーンの最新のブロックから、取り出されてよい。実際のデータ値が決定された後に、イベント・データによって定義されたデータの削除に従って、各IDまたは各データ値あるいはその両方がローカル・データの集合から削除されてよい。
実施形態によれば、イベント・データは、ブロックチェーン・ネットワークによって提供されたブロックチェーンのブロックから抽出される。
実施形態によれば、ブロックチェーンは、ブロックチェーンからデータを抽出するための制限されたアクセス権限を含む許可型ブロックチェーンである。ETLデバイスは、登録され、ETLデバイスがブロックチェーンからデータを抽出することを可能にするアクセス権限を備える。実施形態は、許可型ブロックチェーンを提供するブロックチェーン・ネットワークのセキュリティ設定に従いながら、レジスタおよびイベント・データを抽出するためのブロックチェーン・ネットワークの許可されたメンバーとして、例えばETLピアの形態でETLデバイスを使用して、ブロックチェーン・ネットワーク内で処理されたイベント・データにアクセスするための方法を実施するという有益な効果を有することができる。
したがって、ブロックチェーンに記録されたイベント・データに対するアクセス権限が、台帳へのETLピアの成功した登録に結び付けられてよい。IDの窃盗または偽造の結果としてのみ、有害なリスニングが可能であってよい。しかし、適切な暗号鍵またはセキュアなパスワードあるいはその両方を含んでいる証明書を使用して、そのような不正利用を効果的に防ぐことができる。有効な認証情報がなければ、ブロックチェーン・ネットワーク上で交換されるデータを読み取って復号することは不可能である。
実施形態は、ブロックチェーンに含まれているデータに対する完全なデータ・リネージの実施を可能にするという有益な効果を有することができる。さらに、ブロックチェーンに割り当てられ、ブロックチェーン・ネットワーク内に格納されたデータ(例えば、プライベート・データの集合)に対して完全なデータ・リネージが実施されてもよい。完全なデータ・リネージは、どの実体がシステム内(すなわち、ブロックチェーン・ネットワーク内)でデータを使用して何を実行するかが知られることを保証することができる。
実施形態によれば、ブロックチェーンは暗号化データを含み、ETLデバイスは復号鍵に対するアクセス権限を有する。イベント・データの抽出は、イベント・データを復号することを含む。実施形態は、ブロックチェーンによって提供された暗号化データに対するアクセス権限さえETLデバイスに付与されるという有益な効果を有することができる。
実施形態によれば、イベント・データの抽出は、ブロックチェーン・ネットワークのピアによって提供されたローカル・データの集合から追加のイベント・データを取り出すことをさらに含む。例えば、ローカル・データの集合は、ブロックチェーン・ネットワークのピアとして構成されたETLデバイス(すなわち、ETLピア)によって提供される。追加のイベント・データは、ブロックチェーンのブロックから抽出されたイベント・データに割り当てられる。実施形態は、ETLピアが、ブロックチェーンを介して記録されないか、またはルーティングされないか、あるいはその両方であるが、ローカル・データの集合の形態で管理される、追加のイベント・データに対するアクセス権限を有してよいという有益な効果を有することができる。
実施形態によれば、ローカル・データの集合は、ブロックチェーン・ネットワークのピアの限定されたセットによって共有されたプライベート・データの集合であり、プライベート・データの集合のプライベート・データは、ピアの限定されたセットのピアのみによって使用するように制限された、暗号によって保護された通信接続を使用してルーティングされる。例えば、ETLデバイスは、ブロックチェーン・ネットワークのピア(すなわち、ETLピア)、およびピアの限定されたセットのメンバーとして構成される。
プライバシーは、ブロックチェーン・アプリケーションにとって非常に重要であることがある。デフォルトのモードでは、トランザクションは、平文でブロックに書き込まれてよい。しかし、そのような方法は、実行トランザクションの内容ではなく、実行トランザクション自体が透明であるべきである場合には、望ましくないことがある。例えば、業務アプリケーションは、ブロックチェーンに対するアクセス権限を有しているエンド・ユーザからは見えるべきではない、オブジェクトの卸売価格に関するデータを含んでいるサプライ・チェーン来歴追跡を備えることがある。対策は、例えば、プライベートな(すなわち、機密の)データのハッシュ値のみをブロックチェーンのブロックに含め、プライベート・データを、プライベート・データにアクセスする許可を有する台帳上の許可された実体に属する、ETLピアなどの、ブロックチェーン・ネットワークのピア上の許可されたストレージにあるプライベート・データの集合の形態で提供することを含んでよい。これらのピアは、ブロックチェーン・ネットワークの通信プロトコルを使用して、例えばgRCP接続を使用して、代替手段によって通信してよい。したがって、セキュリティの特徴を損なうことなく、組み込まれたETLピアは、通信プロトコルによって実施されるプライベート・データの交換に参加することを可能にされてよい。
実施形態は、データ制限を実施して維持することを可能にするという有益な効果を有することができる。制限されたデータは、ブロックチェーンの一部ではないプライベート・データの集合に格納されてよい。ブロックチェーンは、例えば、プライベート・データのインジケータのみを、例えば各プライベート・データのハッシュ値の形態で含んでよい。
実施形態によれば、ブロックチェーンに含まれているイベント・データだけでなく、1つまたは複数のプライベート・データの集合に含まれているイベント・データも、抽出されてよい。プライベート・データは、台帳の他の参加者から隠された、例えば販売価格などの情報を含んでよく、ブロックチェーンのブロックに含まれず、各プライベート・データの証明するハッシュの形態で提供されてよい。これに対して、ブロックチェーンによって処理されるすべてのデータは、セキュアなチャネルを介して選択されたピア間でプライベート・データを共有することを含めて、ブロックチェーン・ネットワークの通信プロトコル上で処理されてよく、選択されたピアは、プライベート・データの集合に格納されたプライベート・データを含んでよい。したがって、実施形態は、ブロックチェーンの汚染されていない形態の部分の内外でのデータ転送を含む、通信プロトコル全体にアクセスすることができる包括的なデータ抽出を可能にするという有益な効果を有することができる。
実施形態によれば、読み込みは、変換されたデータを使用する書き込み要求を含む。実施形態は、変換されたデータを使用する外部データ構造のデータの内容の変更を可能にするという有益な効果を有することができる。
実施形態によれば、書き込み要求は、変換されたデータを使用して外部データ構造のデータの内容のデータ要素を更新することと、変換されたデータによって識別された外部データ構造のデータの内容のデータ要素を削除することと、変換されたデータによって提供された追加のデータ要素を外部データ構造のデータの内容に挿入することとのうちの少なくとも1つの要求を含む。実施形態は、変換されたイベント・データによって表されたイベントに起因して、追加のデータ要素だけでなく、更新または削除された既存のデータ要素も、外部データ構造のデータの内容に追加されてよいという有益な効果を有することができる。
したがって、ETLデバイスは、イベント・データをチェーン外の外部データ構造に送信する前に、受信イベント・データを、例えばブロックチェーンの前のブロック、またはETLデバイスによってアクセス可能なデータの集合のローカル・コピーに格納されている既存のイベント・データと比較し、それに応じて、送信されるイベント・データを調整してよい。検出されたイベントがデータの削除(例えば、台帳上の資産の削除)を含んでいる場合、ブロックチェーン・ネットワークのピアは、ブロックチェーンに記録されたデータの削除に起因して、ローカル・データの集合内の各データを削除してよい。しかし、ブロックチェーンに記録されたそのようなデータの削除は、外部データ構造に対する方法と同一の方法で実行可能でなくてよい。これは、チェーン外の外部データ構造(例えば、データベース)が、ブロックチェーンまたはローカル・データの集合あるいはその両方よりも複雑な論理構造を備えている場合に、特に当てはまることができる。チェーン外の外部データ構造からの同じデータの削除は、何らかの不具合を引き起こすことがある。ETLデバイスが、ブロックチェーンから、またはブロックチェーンの、あるいはその両方の受信イベント・データを、既存のデータと比較するように構成された場合、ETLデバイスは、著しくより包括的な削除の通知をチェーン外の外部データ構造に送信することを可能にされてよい。
実施形態によれば、コンピュータ・プログラム製品は、本明細書に記載されたブロックチェーン・ネットワークに対するアクセス権限を有する計算デバイスによってブロックチェーン・ネットワーク上に発生するイベントを表すイベント・データのモデル駆動型抽出のための方法の実施形態のいずれかを実施するように構成されたコンピュータ可読プログラム・コードをさらに備える。
実施形態によれば、ブロックチェーン・ネットワークに対するアクセス権限を有する計算デバイス(すなわち、ETLデバイス)は、本明細書に記載されたブロックチェーン・ネットワーク上に発生するイベントを表すイベント・データのモデル駆動型抽出のための方法の実施形態のいずれかを実行するようにさらに構成される。
実施形態は、ETLデバイスによって実行されるデータ抽出が、イベントによってトリガーされるため、ETLデバイスを使用してイベント・データのほぼリアルタイムの抽出が提供されてよいという利点を有することができる。例えば、イベント検出は、Hyperledger FabricおよびApache NiFiのEventHubまたはChannel Event Hubサブスクリプションを使用して実施されてよい。EventHubおよびChannel Event Hubは、イベント通知サービスをHyperledger Fabricに提供する。Apache NiFiは、フローベース・プログラミング・モデルに基づいてソフトウェア・システム間のデータのフローの自動化を可能にし、クラスター内で動作する能力などの機能、TLS暗号化を使用するセキュリティ、および拡張性を提供する。ETLピアの形態で提供されるETLデバイスは、メタデータなしでも、トランザクションの読み取りと書き込みのセットからのチェーン上のイベント・データ・スキーマ検出をさらに提供してよい。チェーン上のイベント・データのJSON形式から、外部データ構造によって使用される任意のデータ形式(例えば、SQL)へのグラフィカルなマッピングが実施されてよい。そのようなJSON形式からX形式への変換の場合、ETLデバイスは、例えば、joltライブラリまたはメタ形式あるいはその両方を使用してよい。実施形態は、変換のハード・コーディングが実装されず、したがって、同じETLデバイスが異なるターゲット形式への変換に使用されてよいという有益な効果を有することができる。ETLデバイスは、キー制約の挿入または更新あるいはその両方を実行するためのSQL挿入メカニズムまたはSQL挿入論理あるいはその両方をさらに提供してよい。実施形態によれば、データ・リネージが統合されてよい。NiFiの例が示すようなデータの統合が、Apache Atlasと共に使用されてよい。Apache Atlasは、拡張可能な一連の基礎的コア管理サービスを提供し、適合性要件を効果的かつ効率的に満たすことを可能にする。データ資産のカタログを構築し、それらのデータ資産を分類および制御し、それらのデータ資産に関する協調能力を実現するために、オープンなメタデータの管理および制御能力が提供される。
ETLデバイスは、メッセンジャー(例えば、ネットワーク通信インターフェイス)を備えてよく、ブロックチェーン・ネットワークの外部のネットワークを介して外部計算デバイスへの通信接続を提供して、外部データ構造を管理する。ETLデバイスは、ETLコードを生成するためのETLコード生成器によって入力として使用するために、モデル駆動型イベント・データ・マッピングを提供する、設計モジュールを備える。ETLコード生成器は、設計モジュールに含まれてよい。設計モジュールは、マッピング・クリエイターおよびコード生成器を備えてよい。ETLデバイスは、イベントを捕捉し、各イベントを表すイベント・データに含まれているデータ要素の種類を検出するために、実行時ソース抽出器を備えてよい。実行時ソース抽出器は、イベント検出器および実行時スキーマ・セレクタを備えてよい。ETLデバイスは、ETLコードを実行するための実行時ソース/ターゲット変換器をさらに備えてよい。このために、ソース/ターゲット変換器はETLコード実行器を備えてよい。
本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないということが、あらかじめ理解される。本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間とサービス・プロバイダとのやりとりを最小限に抑えて、それらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
ここで図1を参照すると、例示的な計算デバイス10の例の概略図が示されている。計算デバイス10は、ETLコードを実行するためのETLデバイスとして構成される。ETLデバイスは、ETLピアの形態でブロックチェーン・ネットワークに含まれてよい。代替として、ETLデバイスは、ブロックチェーン・ネットワークのピアへの暗号によって保護されたメッセージング接続を使用してブロックチェーン・ネットワーク上で交換されるデータを監視するように構成された外部計算デバイスである。実施形態によれば、この計算デバイスは、クラウド・コンピューティング・ノードとして実装されてよい。計算デバイス10は、適切な計算デバイスの一例に過ぎず、本明細書に記載された本発明の実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、計算デバイス10は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
計算デバイス10は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるコンピュータ・システム/サーバであってよい。コンピュータ・システム/サーバと共に使用するのに適した既知のコンピューティング・システム、環境、または構成、あるいはその組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
計算デバイス10は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連で説明することができる。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含んでよい。計算デバイス10は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境内で実践されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム記憶媒体に配置されてよい。
図1に示されているように、計算デバイス10は、汎用計算デバイスの形態で示されている。計算デバイス10のコンポーネントは、1つまたは複数のプロセッサまたはプロセッシング・ユニット16、システム・メモリ28、およびシステム・メモリ28を含むさまざまなシステム・コンポーネントをプロセッサ16に結合するバス18を含んでよいが、これらに限定されない。
バス18は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかのうちの1つまたは複数を表す。そのようなアーキテクチャの例としては、VESA(Video Electronics Standards Association)ローカル・バス、および例えばPCI、PCI-X、およびPCIeなどのPCI(Peripheral Component Interconnect)バスなどが挙げられるが、これらに限定されない。
計算デバイス10は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、計算デバイス10によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM:random access memory)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。計算デバイス10は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム34を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバス18に接続することができる。下でさらに示され、説明されているように、メモリ28は、本発明の実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含んでよい。
例えば、一連の(少なくとも1つの)プログラム・モジュール42を含んでいるプログラム/ユーティリティ40がメモリ28に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組合せの各々は、ネットワーク環境の実装を含んでよい。プログラム・モジュール42は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
計算デバイス10は、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部デバイス14、ユーザが計算デバイス10と情報をやりとりできるようにする1つまたは複数のデバイス、または計算デバイス10が1つまたは複数の他の計算デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組合せと通信してもよい。そのような通信は、入出力(I/O:Input/Output)インターフェイス22を介して行うことができる。さらに、計算デバイス10は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図に示されているように、ネットワーク・アダプタ20は、バス18を介して計算デバイス10の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、計算デバイス10と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
ここで図2を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、PDA(personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を備える。ノード10は、互いに通信してよい。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図2に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
ここで図3を参照すると、クラウド・コンピューティング環境50(図2)によって提供される機能的抽象レイヤのセットが示されている。図3に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム(一例を挙げると、IBM(R)zSeries(R)システム)、RISK(Reduced Instruction Set Computer)アーキテクチャ・ベース・サーバ(一例を挙げると、IBM pSeries(R)システム)、IBM xSeries(R)システム、IBM BladeCenter(R)システム、ストレージ・デバイス、ネットワークおよびネットワーク・コンポーネントが挙げられる。ソフトウェア・コンポーネントの例としては、ネットワーク・アプリケーション・サーバ・ソフトウェア(一例を挙げると、IBM WebSphere(R)アプリケーション・サーバ・ソフトウェア)、およびデータベース・ソフトウェア(一例を挙げると、IBM DB2(R)データベース・ソフトウェア)が挙げられる。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere、およびDB2は、世界中の多くの管轄区域で登録されているInternational Business Machines Corporationの商標である。)
仮想化レイヤ62は、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントなどの仮想的実体を提供できる抽象レイヤを備える。
一例を挙げると、管理レイヤ64は、以下で説明される機能を提供できる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。例えば、クラウド・ストレージの場所(例えば、仮想化レイヤ62の仮想ストレージ)が提供されてよい。計測および価格設定は、クラウド・コンピューティング環境内でリソースが利用された際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクの識別情報の検証を行うとともに、データおよびその他のリソースの保護を行う。例えば、クラウド・インフラストラクチャによって提供されたストレージの場所にアクセスしようとしているユーザの識別情報が検証されてよい。ユーザ・ポータルは、クラウド・コンピューティング環境に対するアクセス権限(例えば、クラウド・インフラストラクチャによって提供されたストレージの場所に対するアクセス権限)を利用者およびシステム管理者に提供する。サービス・レベル管理は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
ワークロード・レイヤ66は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供できるワークロードおよび機能の例には、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想クラスルーム教育の配信、データ解析処理、トランザクション処理、イベント・データを記録し、ブロックチェーンからの記録されたイベント・データのモデル駆動型抽出を実行するためのブロックチェーン・サービスが含まれる。
図4は、ETL機能100を提供しているピア126の形態で(すなわち、ETLピアとして構成されている)ETLデバイスを備えている例示的なブロックチェーン・ネットワーク120を説明する概略図を示している。ピア126は、例えば、図1の計算デバイス10の形態で実装されてよい。第1の組織「ORG1.Client」のクライアント122は、台帳とも呼ばれるブロックチェーン127を使用してトランザクションを記録してよい。トランザクションは、台帳127に格納される任意の種類の情報を含んでよい。台帳127は、許可された台帳であってよく、すなわち、登録されて許可されたメンバーのみが、台帳127にアクセスすることを許される。クライアント122は、ブロックチェーン・ネットワーク120の一部ではなく、ブロックチェーン・ネットワーク120の第1のピア126に接続してよい。ブロックチェーン・ネットワーク120は、さらにピア(例えば、ピア129)を含んでよい。ブロックチェーン・ネットワーク120のピア126、129は、ブロックチェーン・ネットワークの通信プロトコル(例えば、ゴシップ・データ配布プロトコル)を使用してデータを共有してよい。通信プロトコルは、ブロックチェーン・ネットワーク120のすべてのピアが同じデータを共有することを保証してよい。クライアント122は、例えば第1のピア126によって提供された、ETL機能100を開始してよい。したがって、第1のピア126は、ETLピアとして構成される。代替の実施形態によれば、ETL機能100は、ブロックチェーン・ネットワーク120の別の独立したピアによって提供されてよい。ETL機能100は、ETLコードを提供して実行するように構成されてよい。ETLコードは、台帳127のブロックからイベント・データを抽出することと、イベント・スキーマを使用して、外部データ構造(例えば、チェーン外のデータベース140)の論理構造を定義するデータ・モデルに従うように、抽出されたイベント・データを変換することと、チェーン外のデータベース140のデータの内容を変更するために、変換されたデータをチェーン外のデータベース140に読み込むこととを実行するように構成された機械実行可能命令のセットを含む。
クライアント122は、署名機能124(やはり第1のピア126によって提供され、エンドーサと呼ばれる)に対して、提案されたチェーンコードの呼び出しに同意する(例えば、署名する)ことを要求することによって、チェーンコード125を呼び出してよい。代替の実施形態によれば、エンドーサ124は、ブロックチェーン・ネットワーク120の別の独立したピアによって提供されてよい。エンドーサ124は、提案されたチェーンコードの呼び出しをチェックし、この呼び出しがエンドーサ124によって定義された署名ポリシーを満たす場合、この呼び出しに署名し、提案を含むチェーンコード125を呼び出す。チェーンコード125は、例えば、照会を生成するか、または台帳127を使用して提案の応答を更新してよい。提案の応答は、チェーンコード125の呼び出しに応えて、ピア126によってクライアント122に提供される。
トランザクション(tx)を台帳127に追加するために、クライアント122は、順序付けサービスを提供する順序付けノード122に要求トランザクションを送信してよい。順序付けノード122は、トランザクションを順序付け、順序付けられたトランザクションをブロックにパッケージ化する責任を負う。順序付けられたトランザクションは、順序付けノード122によって、ブロックで、ピア126によって提供されたコミット層123に送信される。ブロックをブロックチェーンに受け入れる合意を達成したときに、コミット層123によってブロックが台帳127にコミットされる。台帳127にコミットされたブロックは、ETL機能100に転送され、ブロックのストリームが生成される。例えば、台帳127に追加されている各ブロックは、ブロックに含まれているイベント・データによって表されたイベントとして検出されてよい。
ETL機能100は、ETLコードを実行して、トランザクションによって提供されたイベント・データを受信されたブロックから抽出し、チェーン外のデータベース140のデータ・モデルに従うようにイベント・データを変換し、変換されたイベント・データをチェーン外のデータベース140に読み込む。このようにして、チェーン外のデータベース140は、ETL機能100を使用して、ブロックに含まれているイベント・データを台帳127からフェッチすることを可能にされる。チェーン外のデータベース140は、例えば、ブロックチェーン・ネットワーク120の外部のイベント・データを分析するために、データ・アナライザによって使用されてよい。データベース管理システムは、例えば、抽出されたイベント・データの意図された使用(例えば、データ・アナライザによる分析)のために最適化された論理構造を使用して、チェーン外のデータベース140に含まれているデータを管理するために、データ・モデルを使用してよい。
図5は、ETLピア100の形態で提供されたETLデバイスを含む例示的なブロックチェーン・ネットワーク120を説明する概略図を示している。ETLピア100は、例えば、図1の計算デバイス10の形態で実装されてよい。図5に示されているブロックチェーン・ネットワーク120の場合、エンドーサ124「ORG1.ENDOSER」およびETL機能100は、第1のピア126から独立して(すなわち、独立した署名ピア124および独立したETLピア100の形態で)それぞれ提供される。ブロックチェーン・ネットワーク120内のデータは、ゴシップ・プロトコル(GP:gossip protocol)を使用して第1のピア126と署名ピア124の間でルーティングされてよい。クライアント122は、共通ブロックチェーン・チャネル121「CHANNEL1」を介して、ETLピア100、署名ピア124、第1のピア126、および順序付けノード128と通信してよい。ETLピア100は、イベント・データによって表されたイベントを検出するために、イベント検出器を備えてよい。イベントの検出は、直接のイベントの捕捉、またはゴシップ・プロトコルを介したイベントの捕捉、あるいはその両方を含んでよい。イベントの検出は、削除トランザクションでのコールバックをさらに含んでよい。検出されたイベントのイベント・データのイベント・スキーマを決定するために、スキーマ決定セレクタ104が提供される。各イベント・スキーマは、ETLピアによって使用される1つまたは複数のライブラリによって提供されてよい。イベント・スキーマは、イベント・データおよびイベント・データの論理構造を、イベント・スキーマによって識別された論理構造と比較することによって決定されてよい。イベント・スキーマ・セレクタ104によって決定されたイベント・スキーマは、マッピング・クリエイター106によって、チェーン外のデータベース140のデータ・モデルによって定義された論理構造への、イベント・データに含まれている、イベント・スキーマによって論理データ要素の種類が割り当てられた、データ要素のマッピングを作成するために使用されてよい。マッピングは、ブロックチェーン・ネットワーク120によって提供されたブロックチェーンのブロックのトランザクションに含まれているペイロード・データ(すなわち、資産データ)およびメタデータを考慮して、インスタンス・レベルで実行されてよい。実施形態によれば、秘密鍵または外部キーあるいはその両方などの構造IDが、イベント・データにさらに挿入されるか、または操作されるか、あるいはその両方が実行されてよい。ETLコード生成器108は、ブロックチェーンのブロックから検出されたイベントを表すイベント・データを抽出し、変換し、読み込むために、ETLピアによって実行されるETLコードを生成する。ETLコードは、イベント・データのイベント・スキーマに基づいて定義されたマッピング、およびチェーン外のデータベース140のデータ・モデルを使用して生成される。ETLコード生成器によって生成されたETLコードは、ETLピア100によって実行される。ETLコード抽出器110は、決定されたイベント・スキーマを使用して、ブロックおよびトランザクションからイベント・データを抽出するために使用される。抽出されたイベント・データは、チェーン外のデータベース140の論理構造を定義するデータ・モデルに従うように変換され、ブロックチェーン・ネットワーク120に含まれているETLピア100から、ブロックチェーン・ネットワーク120の外部にあるチェーン外の外部データベース140への通信接続を確立するように構成されたETLピア100のメッセンジャー112を使用して、チェーン外のデータベース140に読み込まれる。
図6は、ETLピア100の形態で提供されたETLデバイスを含む例示的なブロックチェーン・ネットワーク120を説明する概略図を示している。ETLピア100は、例えば、図1の計算デバイス10の形態で実装されてよい。図6のブロックチェーン・ネットワーク120およびETLピア100は、図5のETLピア100を含んでいるブロックチェーン・ネットワーク120と同一である。図6は、さらに詳細には、ETLピア100によって処理されるイベント・データを示している。ETLピア100は、ブロックチェーン・ネットワーク120の外部のクライアントによってインスタンス化され、ブロックチェーン・ネットワーク120によって提供されたブロックチェーンにコミットされたブロック130を受信してよい。ブロック130は、トランザクション・ペイロード・データ(例えば、次の形態のトランザクション)を含んでよい。
{
book: {
name:“JAVA EE“,
info: [
{loc: “DE“, price: “30 EUR“},
{loc: “UK“, price: “25 GRP”},
{loc: “US“, price: “40 USD”}
]
}
}
このトランザクションは、「JAVA EE」の名前を持つ本(book)の形態で追加の資産を定義し、この商品(すなわち、本)に関する追加情報を提供する。この追加情報は、ドイツ(DE)、イギリス(UK)、およびアメリカ(US)での本の価格を定義する。
チェーン外のデータベース140のデータ・モデルは、関係データ・モデルであってよい。したがって、ブロック130に含まれているイベント・データは、ブロック130のトランザクションに対して決定されたイベント・スキーマおよびチェーン外のデータベース140の関係データ・モデルを使用して、各データ・モデルに従う形式に変換されてよい。得られた変換済みのイベント・データは、2つのテーブルの論理構造を有してよい。第1のテーブルは、本を識別する、以下の形態を有する本テーブルであってよい。
テーブル「本」は、主キーが割り当てられた本の名前「JAVA EE」を含んでいる。さらに、第2のテーブルは、追加情報と共に提供される。第2のテーブルは以下の形態を有する。
表「情報」は、主キーが割り当てられた場所ごとに、価格を提供する。さらに、価格情報の各々には、本テーブルの第1のキーを指し示す同じ外部キー「1」が割り当てられている。このように、異なる価格情報ごとにコピーを格納する代わりに、本テーブルの1の情報を格納するだけで十分である。
図7は、ETLデバイスによってブロックチェーンからデータを抽出するための例示的な方法の概略フロー図を示している。ETLデバイスは、例えば、ブロックチェーンを提供するブロックチェーン・ネットワークに含まれているETLピアとして実装されてよい。ブロック200で、ETLデバイスによってイベントが検出される。イベントを検出するため、ETLデバイスの実行時ソース抽出器のイベント検出器が使用されてよい。ブロック202で、ETLデバイスによって、検出されたイベントのイベント・スキーマが決定される。この決定のために、イベント・スキーマを提供する1つまたは複数のライブラリに加えて、実行時ソース抽出器のスキーマ・セレクタが使用されてよい。決定されたイベント・スキーマは、検出されたイベントを表すイベント・データの論理構造を識別する。ブロック204で、ETLデバイスによってETLコードが提供される。ETLコードは、ブロックチェーン・ネットワークによって提供されたブロックチェーンのブロックから、検出されたイベントのイベント・データを抽出するように構成された機械実行可能命令のセットを含む。ETLコードは、外部データ構造(例えば、チェーン外のデータベース)の論理構造を定義するデータ・モデルに従うように、決定されたイベント・スキーマを使用して、抽出されたイベント・データを変換することであって、外部データ構造のデータの内容が、抽出されたイベント・データを使用して変更される、変換することと、変換されたデータを外部データ構造に読み込んで、外部データ構造のデータの内容を変更することとを実行するように、さらに構成されてよい。ETLコードの提供は、ETLデバイスのマッピング・クリエイターを使用して、イベント・データを外部データ構造の論理構造にマッピングすることを含んでよい。このマッピングのために、決定されたイベント・スキーマおよび外部データ構造のデータ・モデルが使用されてよい。さらに、ETLコードの提供は、マッピングを使用してイベントのためのETLコードを生成することを含んでよい。ブロック206で、ETLデバイスによって、提供されたETLコードが実行される。ETLデバイスは、ETLコードを実行するための実行時ソース/ターゲット変換器のコード実行器を使用してよい。ETLコードの実行は、ETLデバイスに、ブロックチェーンのブロックから、検出されたイベントを表すイベント・データを抽出することと、イベント・スキーマを使用して、外部データ構造のデータ・モデルに従うように、抽出されたイベント・データを変換することと、変換されたイベント・データを外部データ構造に読み込み、検出されたイベントに従って、外部データ構造のデータの内容を変更することとを実行させる。変換されたイベント・データの読み込みは、ETLデバイスによって、変換されたイベント・データを、メッセージング・ネットワークを介してブロックチェーン・ネットワークの外部にある外部計算デバイスに送信することを含んでよい。外部計算デバイスは、外部データ構造を管理してよい。
図8は、イベント・データ134、136、138を含むトランザクション132を含んでいるブロックチェーンの例示的なブロック130を説明する概略図を示している。このトランザクションは、ユーザによる保険の購入を表している。このために、トランザクションは、2つの追加の資産(すなわち、追加のユーザ資産136および追加の契約資産138)を書き込む。ユーザ資産136は、ユーザに関連するデータ(ユーザ名、パスワードなど)を含んでよい。契約資産138は、保険契約に関する情報(例えば、契約ID)、および関心事である商品に関する追加情報(例えば、価値、ブランド、シリアル番号など)を含む。加えて、トランザクション132は、例えばトランザクションのタイムスタンプを提供する、トランザクション132のクリエイターを識別する、トランザクション132のエンドーサを識別するなどの、メタデータ134を含んでよい。
図9は、関係データ・モデルに従って定義された複数のテーブル142、144、146の形態で提供された外部データ構造への、図8のブロック130のイベント・データの例示的なマッピングを説明する概略図を示している。ユーザ・テーブル142は、メタデータ134からのタイムスタンプおよびクリエイターID、ならびにユーザ資産136からの主キーとしてのユーザ名およびパスワードなどの、ユーザに関連する情報を含んでいてよい。契約テーブル144は、ユーザ資産136からの外部キーとしてのユーザ名、契約資産138からの主キーとしての契約IDおよび商品シリアル番号、ならびにメタデータ134からのタイムスタンプおよびクリエイターIDなどの、契約に関連する情報を含んでよい。最後に、商品テーブル146は、外部キーまたは主キーとしての商品のシリアル番号、契約資産136からのブランドおよび価値を含んでよい。
図10は、イベント・データ134、136を含むトランザクション132を含んでいるブロックチェーンの例示的なブロック130をさらに説明する概略図を示している。例えばタイムスタンプ、クリエイターID、エンドーサIDなどのメタデータ134に加えて、イベント・データは、削除されるキー「1239DWDIAJ0Q」を識別するデータの削除136を含んでよい。外部データ構造に対しても、この削除を実行することを可能にするために、ETLデバイスは、キー「1239DWDIAJ0Q」によって参照される実際のデータ値を識別することが必要であってよい。各データ値を識別するために、ETLデバイスは、ローカル・データの集合に対してデータの削除を実行する前に、ローカル・データの集合を対象にするコールバック機能を使用してよく、またはETLデバイスは、キー「1239DWDIAJ0Q」の最新の割り当てについてブロックチェーンを検索してよい。キー「1239DWDIAJ0Q」によって参照される実際のデータ値を識別した後に、ETLデバイスは、トランザクション132によって定義されたデータの削除に従ってデータの内容を変更するために、外部データ構造のデータの内容から削除されるデータ要素を識別する削除要求を生成してよい。
図11は、イベント・データ134、136を含むトランザクション132を含んでいるブロックチェーンの例示的なブロック130を説明する概略図を示している。例えばタイムスタンプ、クリエイターID、エンドーサIDなどのメタデータ134に加えて、イベント・データは、プライベート・データの集合に追加されるデータ要素を定義するデータのハッシュ値(「WIDAJIWJXAOIJ21D0I9CDJZ40MFXH2CMCN9F0J82βMVCD32WJAOX」)を含んでよい。ブロックチェーンにアクセスするためのアクセス権限を有しているが、各データ要素にアクセスするためのアクセス権限を有していない実体による、各データ要素への不正なアクセスを防ぐために、ハッシュ値のみがトランザクション132に記録される。したがって、各プライベート・データの集合のコピーに対するアクセス権限を有する各実体は、各データ要素の実際の値を決定することを可能にされるが、他のすべての実体が各データ要素にアクセスするのが防がれる。実際のデータ要素は、セキュアなチャネルを介して、プライベート・データの集合のコピーに対するアクセス権限を有するETLデバイスなどの実体間でルーティングされてよい。各データ要素の抽出を可能にするために、ETLデバイスは、データのハッシュ値を使用してデータ要素を識別してよく、このデータ要素を、外部データ構造に提供するために、プライベート・データの集合から抽出してよい。
組み合わされた実施形態が互いに排他的でない限り、本発明の前述の実施形態のうちの1つまたは複数が組み合わされてよいということが理解される。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ・システムのコンピュータ上で全体的に実行すること、ユーザのコンピュータ・システムのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ・システムのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータ・システムのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
前述した特徴の可能性のある組合せは、次のとおりであってよい。
1.ブロックチェーン・ネットワークに対するアクセス権限を有する計算デバイスによってブロックチェーン・ネットワークに発生するイベントを表すイベント・データのモデル駆動型抽出のための方法であって、計算デバイスが、抽出されたイベント・データを使用してブロックチェーン・ネットワークの外部にある外部データ構造のデータの内容を変更するためにETLコードを実行するためのETLデバイスとして構成され、この方法が、
ブロックチェーン・ネットワークに発生するイベントを検出することと、
検出されたイベントのイベント・スキーマを決定することであって、イベント・スキーマが、検出されたイベントを表すイベント・データの論理構造を識別する、決定することと、
ETLコードを提供することであって、ETLコードが、検出されたイベントを表すイベント・データを抽出することと、イベント・スキーマを使用して、外部データ構造の論理構造を定義するデータ・モデルに従うように、抽出されたイベント・データを変換することと、変換されたデータを外部データ構造に読み込み、外部データ構造のデータの内容を変更することとを実行するように構成された機械実行可能命令のセットを含む、提供することと、
提供されたETLコードを実行することであって、ETLコードの実行が、ETLデバイスに、
検出されたイベントを表すイベント・データを抽出することと、
イベント・スキーマを使用して、外部データ構造のデータ・モデルに従うように、抽出されたイベント・データを変換することと、
変換されたイベント・データを外部データ構造に読み込み、外部データ構造のデータの内容を変更することとを実行させる、実行することとを含む、方法。
2.変換されたイベント・データの読み込みが、ETLデバイスによって、変換されたイベント・データを、メッセージング・ネットワークを介してブロックチェーン・ネットワークの外部にある外部計算デバイスに送信することを含み、外部計算デバイスが外部データ構造を管理する、項目1に記載の方法。
3.ETLコードを提供することが、
イベント・データを外部データ構造の論理構造にマッピングすることであって、このマッピングのために、決定されたイベント・スキーマおよび外部データ構造のデータ・モデルが使用される、マッピングすることと、
マッピングを使用してイベントのためのETLコードを生成することとを含む、項目1または2に記載の方法。
4.ETLデバイスが、ETLピアの形態でブロックチェーン・ネットワークに含まれる、項目1ないし3のいずれかに記載の方法。
5.ETLデバイスが、ブロックチェーン・ネットワークのピアへの暗号によって保護されたメッセージング接続を使用してブロックチェーン・ネットワーク上で交換されるデータを監視するように構成された外部計算デバイスである、項目1ないし3のいずれかに記載の方法。
6.イベントの検出が、ブロックチェーンのブロックの一部としてブロックチェーンに追加される、ETLピアによって提供されているイベント・データを検出することによって、イベントを直接捕捉することを含む、項目4に記載の方法。
7.イベントの検出が、ブロックチェーン・ネットワークの通信プロトコルを使用してETLピアを介してブロックチェーン・ネットワーク上でルーティングされているデータを監視することを含む、項目4に記載の方法。
8.イベント・スキーマが、ブロックチェーン・ネットワーク上に発生する可能性のあるイベントの種類を表すイベント・データの論理構造を識別する1つまたは複数のイベント・スキーマを提供するライブラリを使用して決定される、項目1ないし7のいずれかに記載の方法。
9.ライブラリによって提供されたどのイベント・スキーマも、検出されたイベントのイベント・データの論理構造に一致しない場合、この方法が、
検出されたイベントのイベント・データの論理構造を分析することと、
検出されたイベントのイベント・データの論理構造に一致する追加のイベント・スキーマを決定することと、
追加のイベント・スキーマをライブラリに追加することとをさらに含む、項目8に記載の方法。
10.イベント・スキーマの決定が、決定されたイベント・スキーマを使用して、イベント・データに含まれている1つまたは複数のデータ要素にタグ付けすることを含み、これらのタグが、決定されたイベント・スキーマによって定義されたデータ要素の構造の種類を識別する、項目1ないし9のいずれかに記載の方法。
11.タグが、タグ付けされたデータ要素を、外部データ構造の論理構造によって定義された構造要素にマッピングするために使用される、項目10に記載の方法。
12.外部データ構造が、データベース、およびデータ・モデルを使用してデータベースを管理するためのデータベース管理システムの形態で提供される、項目1ないし11のいずれかに記載の方法。
13.データベースを管理するためにデータベース管理システムによって使用されるデータ・モデルが、関係データ・モデル、階層的データ・モデル、ネットワーク・データ・モデル、オブジェクト指向データ・モデル、グラフ・データ・モデル、実体関係モデル・データ・モデル、キー値データ・モデル、多次元データ・モデル、列指向データ・モデル、ドキュメント指向データ・モデル、およびデータ・ストリーム・データ・モデルのうちの1つである、項目12に記載の方法。
14.抽出されたイベント・データの変換が、データ・モデルに従って1つまたは複数の構造IDを抽出されたイベント・データに追加することを含む、項目1ないし13のいずれかに記載の方法。
15.イベント・データの抽出が、検出されたイベントがデータの削除を含んでいる場合に、ブロックチェーン・ネットワークから追加データを取り出すためにコールバックを実行することと、この追加データを使用して、データの削除に従って外部データ構造のデータの内容を変更するために、外部データ構造から削除される1つまたは複数のデータ要素を決定することとをさらに含む、項目1ないし14のいずれかに記載の方法。
16.コールバックが、ブロックチェーン・ネットワークによって提供されたブロックチェーン、またはブロックチェーン・ネットワークのピアによって提供されたローカル・データの集合を対象にする、項目15に記載の方法。
17.イベント・データが、ブロックチェーン・ネットワークによって提供されたブロックチェーンのブロックから抽出される、項目1ないし16のいずれかに記載の方法。
18.ブロックチェーンが、ブロックチェーンからデータを抽出するための制限されたアクセス権限を含む許可型ブロックチェーンであり、ETLデバイスが、登録され、ETLデバイスがブロックチェーンからデータを抽出することを可能にするアクセス権限を備える、項目17に記載の方法。
19.ブロックチェーンが暗号化データを含み、ETLデバイスが復号鍵に対するアクセス権限を有し、イベント・データの抽出が、イベント・データを復号することを含む、項目17または18のいずれかに記載の方法。
20.イベント・データの抽出が、ブロックチェーン・ネットワークのピアによって提供されたローカル・データの集合から追加のイベント・データを取り出すことをさらに含み、追加のイベント・データが、ブロックチェーンのブロックから抽出されたイベント・データに割り当てられる、項目17ないし19のいずれかに記載の方法。
21.ローカル・データの集合が、ブロックチェーン・ネットワークのピアの限定されたセットによって共有されたプライベート・データの集合であり、プライベート・データの集合のプライベート・データが、ピアの限定されたセットのピアによって使用するように制限された、暗号によって保護された通信接続を使用してルーティングされる、項目20に記載の方法。
22.読み込みが、変換されたデータを使用する書き込み要求を含む、項目1ないし21のいずれかに記載の方法。
23.書き込み要求が、変換されたデータを使用して外部データ構造のデータの内容のデータ要素を更新することと、変換されたデータによって識別された外部データ構造のデータの内容のデータ要素を削除することと、変換されたデータによって提供された追加のデータ要素を外部データ構造のデータの内容に挿入することとのうちの少なくとも1つの要求を含む、項目22に記載の方法。
24.ブロックチェーン・ネットワークに対するアクセス権限を有する計算デバイスによってブロックチェーン・ネットワークに発生するイベントを表すイベント・データのモデル駆動型抽出のためのコンピュータ可読プログラム・コードが具現化されている不揮発性コンピュータ可読ストレージ媒体を備えているコンピュータ・プログラム製品であって、計算デバイスが、抽出されたイベント・データを使用してブロックチェーン・ネットワークの外部にある外部データ構造のデータの内容を変更するためにETLコードを実行するためのETLデバイスとして構成され、ETLデバイスのプロセッサによるプログラム・コードの実行が、プロセッサに、
ブロックチェーン・ネットワークに発生するイベントを検出することと、
検出されたイベントのイベント・スキーマを決定することであって、イベント・スキーマが、検出されたイベントを表すイベント・データの論理構造を識別する、決定することと、
ETLコードを提供することであって、ETLコードが、検出されたイベントを表すイベント・データを抽出することと、イベント・スキーマを使用して、外部データ構造の論理構造を定義するデータ・モデルに従うように、抽出されたイベント・データを変換することと、変換されたデータを外部データ構造に読み込み、外部データ構造のデータの内容を変更することとを実行するように構成された機械実行可能命令のセットを含む、提供することと、
提供されたETLコードを実行することであって、ETLコードの実行が、ETLデバイスに、
検出されたイベントを表すイベント・データを抽出することと、
イベント・スキーマを使用して、外部データ構造のデータ・モデルに従うように、抽出されたイベント・データを変換することと、
変換されたイベント・データを外部データ構造に読み込み、外部データ構造のデータの内容を変更することとを実行させる、実行することとを実行するようにETLデバイスを制御させる、コンピュータ・プログラム製品。
25.ブロックチェーン・ネットワークに発生するイベントを表すイベント・データのモデル駆動型抽出のための、ブロックチェーン・ネットワークに対するアクセス権限を有する計算デバイスであって、計算デバイスが、抽出されたイベント・データを使用してブロックチェーン・ネットワークの外部にある外部データ構造のデータの内容を変更するためにETLコードを実行するためのETLデバイスとして構成され、
ETLデバイスが、プロセッサと、機械実行可能プログラム命令を格納するメモリとを備え、プロセッサによるプログラム命令の実行が、プロセッサに、
ブロックチェーン・ネットワークに発生するイベントを検出することと、
検出されたイベントのイベント・スキーマを決定することであって、イベント・スキーマが、検出されたイベントを表すイベント・データの論理構造を識別する、決定することと、
ETLコードを提供することであって、ETLコードが、検出されたイベントを表すイベント・データを抽出することと、イベント・スキーマを使用して、外部データ構造の論理構造を定義するデータ・モデルに従うように、抽出されたイベント・データを変換することと、変換されたデータを外部データ構造に読み込み、外部データ構造のデータの内容を変更することとを実行するように構成された機械実行可能命令のセットを含む、提供することと、
提供されたETLコードを実行することであって、ETLコードの実行が、ETLデバイスに、
検出されたイベントを表すイベント・データを抽出することと、
イベント・スキーマを使用して、外部データ構造のデータ・モデルに従うように、抽出されたイベント・データを変換することと、
変換されたイベント・データを外部データ構造に読み込み、外部データ構造のデータの内容を変更することとを実行させる、実行することとを実行するようにETLデバイスを制御させる、計算デバイス。