JP2022521915A - 分散型台帳技術(dlt)を使用したリレーショナルデータの管理と編成 - Google Patents
分散型台帳技術(dlt)を使用したリレーショナルデータの管理と編成 Download PDFInfo
- Publication number
- JP2022521915A JP2022521915A JP2021549147A JP2021549147A JP2022521915A JP 2022521915 A JP2022521915 A JP 2022521915A JP 2021549147 A JP2021549147 A JP 2021549147A JP 2021549147 A JP2021549147 A JP 2021549147A JP 2022521915 A JP2022521915 A JP 2022521915A
- Authority
- JP
- Japan
- Prior art keywords
- distributed ledger
- database
- sql
- query
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000005516 engineering process Methods 0.000 title description 23
- 230000008520 organization Effects 0.000 claims abstract description 145
- 238000013523 data management Methods 0.000 claims abstract description 114
- 238000000034 method Methods 0.000 claims description 187
- 230000008569 process Effects 0.000 claims description 68
- 238000007726 management method Methods 0.000 claims description 32
- 238000000926 separation method Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000006243 chemical reaction Methods 0.000 claims 1
- 238000001514 detection method Methods 0.000 claims 1
- 239000004744 fabric Substances 0.000 abstract description 216
- 238000010586 diagram Methods 0.000 abstract description 21
- 239000008358 core component Substances 0.000 abstract description 6
- 108091006146 Channels Proteins 0.000 description 98
- 230000006870 function Effects 0.000 description 64
- 239000000306 component Substances 0.000 description 58
- 230000004044 response Effects 0.000 description 43
- 238000003860 storage Methods 0.000 description 35
- 239000008186 active pharmaceutical agent Substances 0.000 description 33
- 230000008859 change Effects 0.000 description 30
- 230000000694 effects Effects 0.000 description 26
- 238000012545 processing Methods 0.000 description 18
- 238000010200 validation analysis Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 11
- 238000013500 data storage Methods 0.000 description 10
- 230000010354 integration Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000007792 addition Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 7
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000012790 confirmation Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 102100024633 Carbonic anhydrase 2 Human genes 0.000 description 3
- 101000760643 Homo sapiens Carbonic anhydrase 2 Proteins 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000001010 compromised effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000004579 marble Substances 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- WOLHOYHSEKDWQH-UHFFFAOYSA-N amantadine hydrochloride Chemical compound [Cl-].C1C(C2)CC3CC2CC1([NH3+])C3 WOLHOYHSEKDWQH-UHFFFAOYSA-N 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000000969 carrier Substances 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000001404 mediated effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000037361 pathway Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101100462297 Arabidopsis thaliana ORG2 gene Proteins 0.000 description 1
- 241000132092 Aster Species 0.000 description 1
- SPNQRCTZKIBOAX-UHFFFAOYSA-N Butralin Chemical compound CCC(C)NC1=C([N+]([O-])=O)C=C(C(C)(C)C)C=C1[N+]([O-])=O SPNQRCTZKIBOAX-UHFFFAOYSA-N 0.000 description 1
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 235000013305 food Nutrition 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
本明細書に記載されるリレーショナルデータ管理及び編成システムは、上述した利点を届け、異なる分散型台帳プラットフォーム及びプログラミング言語にわたるリレーショナルデータ管理及び編成システムの実装を標準化する1組の仕様を提供する。本明細書に記載されるリレーショナルデータ管理及び編成は、分散型台帳に向けてのリレーショナルデータの管理及び編成を指示するに当たり使用されるSQL(ストラクチャード・クエリ・ランゲージ)の標準ダイアレクトのサブセットも提供する。本明細書に記載されるリレーショナルデータ管理及び編成システムは、多種多様なプラットフォーム及び言語にわたる実装に向けて更に設計されてきた。サンプル実施形態では、リレーショナルデータ管理及び編成システムは、Hyperledger(登録商標)ファブリック分散型台帳ネットワーク及びNode.js(登録商標)プログラミング言語で実装され、Node.js(登録商標)で書かれたユーザプログラムをサポートするメカニズムを有する。しかしながら、他の分散型台帳プラットフォーム及びプログラミング言語が、そのようなプラットフォーム及び言語の付随する利点及び欠点と共に使用されてもよいことが理解されよう。
1.リレーショナル・データ・アクセス制御仕様122は、リレーショナルデータ管理及び編成システム100の全ての実装が続く5つのレベルの粒度の粗いアクセス制御モデルを指定する。この仕様は、ユーザの役割及びユーザが、データへのアクセスを含め、リレーショナルデータ管理及び編成システム100のシステム機能へのアクセスにいかに影響するかを文書化する。アクセス制御は、異なるプラットフォームで大きく異なる手法を使用する。仕様は付録Bは共通の態様を文書化する。
2.分散型台帳仕様上のリレーショナルデータ124は、データ表現の要件(JSONスキーマ)及びサポートされるデータ演算を定義する。この仕様は、付録Cにおいてリレーショナル・データ・ストレージについての要件を文書化する。
3.スマートコントラクト統合仕様126は、どのリレーショナルデータ特徴がスマートコントラクトからアクセス可能かを示す。
1.OPSTAT(Operation Broadcast Status:演算ブロードキャストステータス)-この演算は、特定の演算のトランザクションが、利用される特定の分散型台帳プラットフォームに関連する程度まで分散型台帳に進入したか否かをチェックする。DDL演算のOPSTATは、リレーショナルデータ管理及び編成システム100に向けてデフォルトにより設定されるが、OPSTATは、DML書き込み演算の終わりに追加して、そのトランザクションのより確定的なステータスをフェッチすることができる。OPSTATが使用されている間、予期される可能な3つのレスポンスがある-成功、失敗、又は時間切れ。
2.クエリレベル-クエリレベル特徴は、DML読み出し演算(例えば、SELECT)と共に専ら機能して、リレーショナルデータ管理及び編成システム100の特定のレコードについてのメタデータ情報をフェッチする。クエリレベルを使用することにより得られる2つのレベルの情報がある-第1のレベルの情報はレコードについての基本情報であり、第2のレベルの情報は、レコード作成日、最終変更日、ユーザによる変更、及び他の詳細等の粒度の細かい情報を提供するより深いクエリである。
3.ブックマーク-この特徴は、リレーショナルデータ管理及び編成システム100におけるレコードカウントにより定義されるページにおけるテーブルデータの検索に関連する。デフォルトにより、ローカウントに限度を有して実行されるあらゆるクエリは、同じ基準に基づいてデータの次の等サイズページへのリファレンスとして働くブックマーク値により達成される。ブックマークキーワードが提供される場合(SELECTクエリのみが該当する)、クエリ結果と共に含まれることになる。
4.ELEMENTカラムデフォルト(ELEMENT_COLUMN_DEFAULT)-このキーワードは、更新又は挿入SQL演算と併用されて、リレーショナルデータ管理及び編成システム100におけるテーブルカラムにデフォルト値が使用されるべきであることを示す。デフォルト値は、テーブル作成中、カラムに割り当てることができる。デフォルト値なしで構成されたカラムは、このキーワードにより影響されない。
付録EにおけるELEMENT SQL仕様は、リレーショナルデータ管理及び編成システム100による処理のためのクエリ及びコマンドを表すのに使用することができるSQLシンタックスの変形を形成するために、SQLシンタックスと組み合わせてこれらの各キーワードの追加詳細を提供する。
データベースの作成及びドロップ、
テーブルの作成、変更、及びドロップ、
データベース・オブジェクト・メタデータの検索、
DML演算、例えば、レコードの挿入及び選択、
インデックスの作成、変更、及びドロップ等の更なるDDL演算、
ユーザ特権管理
を含む。
なお、分散型台帳コンテキストでの変更及び削除は常に、分散型台帳データ履歴の不変性により、変更又は削除インジケータの添付により行われる。リレーショナルデータ管理及び編成システム100は、バルク・トランザクション・サポートを提供し、少なくともレコードレベル変更を包含することも求められる。
5つの馴染みのある抽象化が、リレーショナルデータ管理及び編成システム100でのリレーショナルデータ及び関連する機能の指定に使用される。それらはデータベース、テーブル、フィールド、インデックス、及びレコードである。これらの概念が異なる分散型台帳プラットフォームで実装される方法には大きな違いがあるが、以下はあらゆるプラットフォームで該当する:
1.5つの各要素タイプの各インスタンスは、標準ELEMENTフォーマットでスタンドアロンJSONドキュメントにより表され、
2.これらのドキュメントは、他の分散型台帳トランザクションと同じ方法及びコンセンサスを使用して分散型台帳に書き込まれ、
3.これらの要素の1つへの状態の各変更又は変化は、JSONドキュメントの完全な更新されたバージョンを分散型台帳に添付することにより表される。
5つのオブジェクトのJSONスキーマ定義及び索引付けの最小要件は、リレーショナルデータ管理及び編成システム100の設計において正式に指定される。
リレーショナルデータ管理及び編成システム100の実装は、データベースレベルで個々の分散型台帳アイデンティティに定義される粒度の粗いアクセス制御をサポートする。5つのアクセスレベルに認められた特権は以下である:
-SuperAdimn-作成及びドロップ等のデータベース管理に、Adimnアクセスレベルの全ての特権を加えたもの。
-Admin-特権管理機能へのアクセスに、DDLアクセスレベルの全ての特権を加えたもの。
-DDL-テーブル及びインデックスのスキーマを変える関数を含む(例えば)DDL等として分類される機能へのアクセスに、DML書き込みアクセスレベルの全ての特権を加えたもの。
-DML書き込み-挿入等のデータ書き込みを含むDML書き込みとして分類される機能へのアクセスに、DML読み出しアクセスレベルの特権を加えたもの。
-DML読み出し-DML読み出しとして分類される機能へのアクセス。リレーショナルデータの選択クエリ、スキーマ検索、統計の閲覧等を含む。
データ定義言語(Data Definition Language:DDL)は、リレーショナルデータの構造、編成、又は記述を変える演算を指す。データ操作言語(Data Manipulation Language:DML)は、リレーショナルデータ自体が関わる演算を指す。
述べたように、リレーショナルデータ管理及び編成システム100の主要態様は、スマートコントラクトから直接、リレーショナルデータ機能の大半にアクセスする能力である。スマートコントラクト統合では、スマートコントラクトは、DDLデータベース演算を除き、言語固有SDK102に指定された関数と同等の関数を実行する能力を有する。これらの呼び出しの分散型台帳考慮事項は、例えば、コンセンサス並びに入力及び結果の不変記録は、ネイティブのスマートコントラクト実行と同等である。また、これらの関数の呼び出しは、リレーショナルデータ管理及び編成システム100が実現されている分散型台帳プラットフォームで可能な程度まで、言語固有SDK102で記述される形態、ネーミング、及びセマンティクスに準拠すべきである。スキーマ変更等のDDL動作は、1つの分散型台帳トランザクション内での実行がサポート可能ではないような、リレーショナルストレージへの広範囲の更新を含むことが多いため、スマートコントラクト統合から除外される。
サンプル実施形態では、分散型台帳プラットフォームにHyperledger(登録商標)ファブリックを使用するNode.js(登録商標)アプリケーションのソフトウェア開発キットが提供される。
1.構成txからのチャネル構成-順序付けサービスは、チャネル構成ファイルからの情報を保持し、特に、チャネルデータが参加ノードに制限されることを保証するのにそれを使用する。
2.<<台帳>><データベース名>-チャネル/データベースの添付のみデータストレージが作成され、あらゆる参加ピアノードに複製される。
3.<<ワールドステート>><データベース名>-台帳における各項目の最新値のみを含む台帳へのコンパニオンストレージ(companion storage)が、はるかに効率的にクエリされる形態で提供される。リレーショナルデータ管理及び編成システム100では、このデータベースはCouchDB(登録商標)インスタンスであることができ、これは、ファブリックへの標準選択の1つである。
チャネルが作成された後、データベーススキーマ(リレーショナルデータ属性)のJSON表現を含む通常のファブリックトランザクションが処理される。
1.ELEMENTファブリック・サービス・レイヤ・ノード、
2.アイデンティティ・プロバイダ・ノード、例えば証明書プロバイダ(CA)、
3.Elementファブリック・ピア・ノード及び順序付けサービスノード。
図11は、本明細書に開示されるリレーショナルデータ管理及び編成システム100の1若しくはそれ以上の実施形態の実装に適した専用コンピュータにプログラムすることができる典型的な汎用コンピュータ1100のブロック図である。上述したリレーショナルデータ管理及び編成システム100は、課される必要な作業負荷に対処するのに十分な処理能力、メモリリソース、及び通信スループット能力を有するコンピュータ等の任意の汎用処理コンポーネントに実装することができる。コンピュータ1100は、セカンダリストレージ1104、読み取り専用メモリ(ROM)1106、ランダム・アクセス・メモリ(RAM)1108を含むメモリと通信するプロセッサ1102(中央演算処理装置又はCPUと呼ばれることもある)、入出力(I/O)デバイス1110、及びネットワーク接続デバイス1112を含む。プロセッサ1102は、1若しくはそれ以上のCPUチップとして実装されてもよく、又は1若しくはそれ以上の特定用途向け集積回路(ASIC)の一部であってもよい。
HYPERLEDGER(登録商標)ファブリック概説
Hyperledger(登録商標)ファブリックモデル
包括的でありながらカスタマイズ可能な企業分散型台帳解決策の約束を満たす、Hyperledger(登録商標)ファブリックに織り込まれた主要な設計特徴は以下を含む:
・アセット-アセット定義は、自然食品からアンティークカー、通貨先物まで略あらゆるものを、ネットワークを経由して金銭価値と交換できるようにする。
・チェーンコード-チェーンコード実行は、トランザクション順序付けから分割され、ノードタイプにわたり必要とされる信頼レベル及び確認を制限し、ネットワークのスケーラビリティ及び性能を最適化する。
・台帳特徴-不変の共有台帳は、各チャネルのトランザクション履歴全体を符号化し、効率的な監査及び紛争解決のためのSQLのようなクエリ機能を含む。
・プライバシー-チャネル及びプライベートデータ収集は、通常、競合するビジネス及びアセットを共通ネットワーク上で交換する規制産業により求められるプライベート及び機密マルチラテラルトランザクションを可能にする。
・セキュリティ&メンバーシップサービス-許可されたメンバーシップは、承認された規制者及び監査人により全てのトランザクションを検出しトレースすることができることを参加者が知る高信頼性分散型台帳ネットワークを提供する。
・コンセンサス-コンセンサスへの独自の手法は、企業に必要とされる柔軟性及びスケーラビリティを可能にする。
アセットは、有形(不動産及びハードウェア)から無形(契約及び知的財産)まで及ぶことができる。Hyperledger(登録商標)ファブリックは、チェーンコードトランザクションを使用してアセットを変更する能力を提供する。
チェーンコードは、スマートコントラクトにおいて、1若しくはそれ以上のアセット及びアセットを変更するトランザクション命令を定義するソフトウェアであり、換言すれば、ビジネス論理である。チェーンコードは、キー値対又は他の状態データベース情報の読み出し又は変更についてのルールを施行する。チェーンコード関数は、台帳の現在状態データベースと突き合わせて実行され、トランザクション提案を通して開始される。チェーンコードが実行されると、1組のキー値書き込み(書き込みセット)が生成され、これはネットワークに提出され、全てのピアにおける台帳に適用することができる。
台帳は、ファブリックにおける全ての状態遷移の順序付き耐改竄性レコードである。状態遷移は、参加当事者により提出されたチェーンコード呼び出し(「トランザクション)の結果である。各トランザクションは1組のアセットキー値対を生成し、これは、作成、更新、又は削除として台帳にコミットされる。
・キーベースの参照、範囲クエリ、及び合成キークエリを使用したクエリ及び更新台帳、
・リッチクエリ言語を使用した読み取り専用クエリ(CouchDB(登録商標)を状態データベースとして使用する場合)、
・読み取り専用履歴クエリ-キーのクエリ台帳履歴であり、データ出所シナリオを可能にする、
・トランザクションは、チェーンコードにおいて読み出されたキー/値のバージョン(読み出しセット)及びチェーンコードに書き込まれたキー/値(書き込みセット)から成り、
・トランザクションは、あらゆる是認ピアの署名を含み、順序付けサービスに提出され、
・トランザクションはブロックに並べられ、順序付けサービスからチャネル上のピアに「送られ」、
・ピアは、是認ポリシーと突き合わせてトランザクションを妥当性確認し、ポリシーを施行し、
・ブロックの添付に先立って、バージョンチェックが実行されて、チェーンコード実行時から、読み出されたアセットの状態が変わっていないことを保証し、
・トランザクションが妥当性確認されコミットされると、不変性があり、
・チャネルの台帳は、構成ブロック定義ポリシー、アクセス制御リスト、及び他の関連情報を含み、
・チャネルはメンバーシップ・サービス・プロバイダインスタンスを含み、暗号資料(crypto material)を異なる証明機関から送れるようにする。
Hyperledger(登録商標)ファブリックは、チャネル毎の不変台帳と、アセットの現在状態を操作、変更(すなわち、キー値対を更新)することができるチェーンコードとを利用する。台帳はチャネルの範囲に存在し-ネットワーク全体にわたり共有することができる(あらゆる参加者が1つの共通チャネルで動作していると仮定して)-又は特定の組の参加者のみを含むようにプライベート化することができる。
Hyperledger(登録商標)ファブリックは、全ての参加者がアイデンティティを知っているトランザクションネットワークを支える。公開鍵基盤を使用して、組織、ネットワークコンポーネント、及びエンドユーザ又はクライアントアプリケーションに結ばれた暗号証明書を生成する。その結果、データアクセス制御をより広いネットワーク及びチャネルレベルで維持し、支配することができる。チャネルの存在及び機能と併せたHyperledger(登録商標)ファブリックの「許可された」という表記は、プライバシー及び機密性が最高の考慮事項であるシナリオへの対処に役立つ。
分散型台帳技術では、コンセンサスは近年、1つの関数内の特定のアルゴリズムと同義になっている。しかしながら、コンセンサスは、トランザクションの順序への単なる合意よりも多くを包含し、この区別は、提案及び是認から順序付け、妥当性確認、及びコミットメントまでの全体トランザクションフローにおけるその基本的な役割を通してHyperledger(登録商標)ファブリックにおいて強調されている。極めて簡潔に言えば、コンセンサスは、ブロックを含む1組のトランザクションの正確性の全周(full-circle)確認として定義される。
ガバナンスは、コンソーシアムメンバ組織が意思決定プロセスに適切に参加していることを保証する、プロトコル実行時前後のプロセス及びポリシーである。
ブロックチェーンネットワークは主に、1組のピアノード(又は単にピア)で構成される。ピアは、台帳及びスマートコントラクトをホストするため、ネットワークの基本要素である。台帳は、スマートコントラクト(Hyperledger(登録商標)ファブリックでは、チェーンコードに含まれる)により生成される全てのトランザクションを不変に記録する。スマートコントラクト及び台帳は、ネットワークにおいて共有プロセス及び共有情報をそれぞれカプセル化するのに使用される。ピアのこれらの態様は、ピアを、ファブリックネットワークを理解する良好な開始点にする。
ファブリックは、チェーンコード-サポートされるプログラミング言語の1つで書かれた、台帳にアクセスする単なるコード片-を用いてスマートコントラクトを実装する。
台帳及びチェーンコードの両方をホストするのはピアである。より正確には、ピアは実際には、台帳のインスタンス及びチェーンコードのインスタンスをホストする。なお、これは、ファブリックネットワークに意図的な冗長を提供する-これは単一障害点を回避する。
ピアは2つ以上の台帳をホストすることが可能であり、これは、柔軟なシステム設計を可能にするため、有用である。最も単純な構成は、ピアが1つの台帳を管理することであるが、必要な場合、ピアが2つ以上の台帳をホストすることは極めて適切である。
ピアが有する台帳数と、その台帳にアクセスすることができるチェーンコード数との間に一定の関係はない。ピアは、多くのチェーンコードを有してもよく、多くの台帳がピアに提供されてもよい。
台帳-クエリ対話は、アプリケーションとピアとの間の単純な3ステップ会話を含み、台帳更新対話はわずかに関わる度合いが深く、2つの追加ステップを必要とする。
ピアは、チャネル-ブロックチェーンネットワーク内の1組のコンポーネントがプライベートで通信し、取引できるようにするメカニズム-を介して互いと及びアプリケーションと対話する。
ブロックチェーンネットワークは、1つの組織ではなくむしろ組織の集まりにより管理される。ピアは、この種の分散ネットワークがいかに構築されるかの中心であり、その理由は、ピアがこれらの組織により所有される-且つこれらの組織のネットワークへの接続点である-ためである。
ピアは、特定の証明機関からデジタル証明書を介して割り当てられたアイデンティティを有する。デジタル証明書は、ピアについての多くの確認情報を提供するIDカードのようなものである。ネットワークにおけるありとあらゆるピアには、その所有組織からの管理者によりデジタル証明書が割り当てられる。
アプリケーション及びピアが互いと対話して、あらゆるピアの台帳が一貫して保たれることを保証するメカニズムは、オーダラーと呼ばれる特別なノードにより仲介される。
トランザクションワークフローのフェーズ1は、アプリケーションと1組のピアとの間の対話を含む-オーダラーを含まない。フェーズ1は、異なる組織の是認ピアに、提案されたチェーンコード呼び出しの結果への合意を求めているアプリケーションのみに関わる。
トランザクションワークフローの第2のフェーズは、パッケージングフェーズである。オーダラーはこのプロセスの中心である-多くのアプリケーションから是認されたトランザクション提案レスポンスを含むトランザクションを受け取り、トランザクションを順序付けてブロックにする。順序付け及びパッケージングフェーズについての更なる詳細については、順序付けフェーズについての概念情報をチェックされたい。
フェーズ2の終了時、オーダラーは、トランザクション更新提案を収集し、それらを順序付け、ブロックにパッケージングし、ピアに配信できる状態にするという単純であるが重要なプロセスを受け持つ。
この全体トランザクション・ワークフロー・プロセスは、全てのピアが、オーダラーにより仲介されるプロセスにおいて、トランザクションの順序及び内容について合意に達したため、コンセンサスと呼ばれる。コンセンサスはマルチステッププロセスであり、アプリケーションには、プロセス完了時-異なるピアでわずかに異なる時間に生じる、台帳更新のみが通知される。
ワールドステートは、1組の台帳状態の現在値のキャッシュを保持するデータベースである。ワールドステートは、プログラムが、トランザクションログ全体を巡回することにより状態の現在値を計算する必要があるのではなく、状態の現在値に直接アクセスするのを容易にする。台帳状態は、デフォルトにより、キー値対として表される。状態が作成、更新、且つ削除されることができるため、ワールド状態は頻繁に変わることができる。
CouchDB(登録商標)は、任意選択の代替の外部状態データベースである。CouchDB(登録商標)は、チェーンコードでモデリングされた任意のバイナリデータを格納することができる(CouchDB(登録商標)付属機能は、非JSONバイナリデータに内部で使用される)。しかし、JSONドキュメントストアとして、CouchDB(登録商標)はさらに、チェーンコード値(例えばアセット)がJSONデータとしてモデリングされる場合、チェーンコードデータと突き合わせたリッチクエリを可能にする。
チェーンコードクエリ
チェーンコードシムAPIの大半、例えば、GetState、PutState、GetStateByRange、GetStateByPartialCompositeKeyは、CouchDB(登録商標)状態データベースと共に利用することができる。さらに、CouchDB(登録商標)を状態データベースとして利用し、モデルアセットをチェーンコードにおけるJSONとして利用する場合、GetQueryResult APIを使用し、CouchDB(登録商標)クエリ文字列を渡すことにより、リッチクエリを状態データベース中のJSONと突き合わせて実行することができる。クエリ文字列はCouchDB JSONクエリシンタックスに従う。
{"selector":{"docType":"marble","owner":}}
を使用して、ドキュメントタイプ「marble」及び所有者IDに一致するJSONドキュメントについて状態データをクエリする。
ファブリックは、リッチクエリ及び範囲ベースクエリのクエリ結果のページングをサポートする。ページネーションをサポートするAPIは、範囲クエリ及びリッチクエリの両方でページサイズの使用を可能にするとともに、ブックマークを使用できるようにする。効率的なページネーションをサポートするためには、ファブリックページネーションAPIを使用しなければならない。特に、ファブリック自体がクエリ結果のページネーションを管理し、CouchDB(登録商標)に渡されたページサイズ限度を暗黙的に設定するため、CouchDB(登録商標)のlimitキーワードは、CouchDB(登録商標)クエリでは尊重されない。
CouchDB(登録商標)におけるインデックスは、JSONクエリを効率的にするために必要であり、ソートを有する任意のJSONクエリに必要とされる。インデックスは、/META-INF/statedb/couchdb/indexesディレクトリでチェーンコードと共にパッケージングすることができる。各インデックスは、それ自体のテキストファイルにおいて、CouchDBインデックスJSONシンタックスに従ってJSONでフォーマットされたインデックス定義を用いて拡張*.jsonを用いて定義されなければならない。例えば、上記marbleクエリをサポートするために、ドキュメントタイプ及び所有者フィールドでのサンプルインデックスが提供される:
{"index":{"fields":["docType","owner"]},"ddoc":"indexOwnerDoc","name":"indexOwner","type":"json"}
CouchDB(登録商標)は、goleveldbからCouchDB(登録商標)に状態データベース構成選択肢を変えることにより状態データベースとしてイネーブルされる。さらに、couchDBAddressは、ピアにより使用されるCouchDB(登録商標)を指すように構成される必要がある。CouchDB(登録商標)にユーザ名及びパスワードが構成されている場合、ユーザ名及びパスワードプロパティには、adminユーザ名及びパスワードが記入されるべきである。追加の選択肢がcouchDBConfigセクションに提供され、適所に文書化される。core.yamlへの変更は、ピアの再開後、即座に有効になる。
状態:
# stateDatabase-選択肢は"goleveldb"、"CouchDB"
# goleveldb-goleveldbに格納されるデフォルト状態データベース。
# CouchDB-CouchDBに状態データベースを格納する
stateDatabase: goleveldb
# クエリ毎に返すレコード数への限度
totalQueryLimit: 10000
couchDBConfig:
# ピアと同じサーバでCouchDBを実行することが推奨され、
# ドッカーコンポーズにおいてCouchDBコンテナポートをサーバポートにマッピングせず、
# その他の場合、適切なセキュリティをCouchDBクライアント(ピア上)とサーバとの間に提供しなければならず、
couchDBAddress: couchdb:5984
# このユーザ名は、CouchDBユーザ名で読み出し及び書き込み権限を有さなければならず、
# スタートアップ中、パスワードは、環境変数として渡されることが推奨され(例えば、LEDGER_COUCHDBCONFIG_PASSWORD)、
# ここに格納される場合、意図されないユーザがパスワードを発見するのを阻止するために、ファイルにはアクセス制御保護付きでアクセスしなければならない。
パスワード:
# CouchDBエラーの場合の再試行数
最大再試行:3
# ピアスタートアップ中のCouchDBエラーお場合の再試行数
スタートアップ時の最大再試行:10
# CouchDBリクエスト時間切れ(単位:持続時間、例えば20秒)
リクエスト時間切れ:35秒
# 各CouchDBクエリ当たりのレコード数の限度
# なお、チェーンコードクエリはtotalQueryLimitによってのみ制限される。
# 内部的にチェーンコードは複数のCouchDBクエリを実行することができる
# サイズのinternalQueryLimitのそれぞれ
internalQueryLimit: 1000
# CouchDBバルク更新バッチ当たりのレコード数限度
maxBatchUpdateSize: 1000
# あらゆるNブロック後にウォームインデックス。
# この選択肢は、あらゆるNブロック後にCouchDBにデプロイされた任意のインデックスをウォームする。
# 高速セレクタクエリを保証するために、あらゆるブロックコミット後、値1がインデックスをウォームする。
# 値の増大は、ピア及びCouchDBの書き込み効率を改善する可能性があるが、クエリレスポンス時間を低下させる恐れがある。
warmIndexesAfterNBlocks: 1
ブロックチェーンネットワークにおける異なるアクターは、ピア、オーダラー、クライアントアプリケーション、管理者等を含む。これらのアクターのそれぞれ-サービスを消費することができるネットワーク内又は外の能動要素-は、X.509デジタル証明書にカプセル化されたデジタルアイデンティティを有する。これらのアイデンティティは、アクターがブロックチェーンネットワークにおいて有するリソースにわたる厳密な許可及び情報へのアクセスを決めるため、実に重要である。
スーパーマーケットに行き、幾つかの食料品を購入すると想像する。チェックアウト時、Visa、Mastercard、及びAMEXカードのみが許容されるという貼り紙を見る。別のカードで支払おうとする場合-これを「イマジンカード」と呼ぶことにする-そのカードが真正であるか否か及び口座に十分な資金があるか否かは重要ではない。そのカードが許容されることはない。
公開鍵基板(PKI)は、ネットワークにおいて安全な通信を提供するインターネット技術の集まりである。
・デジタル証明書、
・公開鍵及び秘密鍵、
・証明機関、
・証明書失効リスト。
デジタル証明書は、証明書の所持人に関連する1組の属性を保持するドキュメントである。最も一般的なタイプの証明書は、X.509規格に準拠するものであり、当事者の識別情報詳細をその構造に符号化できるようにする。
認証及びメッセージ保全性は、安全な通信において重要な概念である。認証は、メッセージを交換する当事者が、特定のメッセージを作成したことのアイデンティティが保証されることを要求する。メッセージが「保全性」を有することは、伝送中に変更されたはずがないことを意味する。例えば、あなたが、なりすましではなく実際のMary Morrisと通信していることを確かめたいことがある。又はMaryがあなたにメッセージを送信した場合、送信中、そのメッセージが誰によっても改竄されなかったことを確かめたいことがある。
アクター又はノードは、システムにより信頼される機関により発行されたデジタルアイデンティティの手段により、ブロックチェーンネットワークに参加することが可能である。最も一般的な事例では、デジタルアイデンティティ(又は単にアイデンティティ)は、X.509規格に準拠する暗号的に妥当性確認されたデジタル証明書の形態を有し、証明機関(CA)により発行される。
CAには2つの特色がある:ルートCA及び中間CA。ルートCA(Symantec、Geotrust等)は、何億もの証明書をインターネットユーザに安全に分配する必要があるため、このプロセスを中間CAと呼ばれるものにわたり拡散させることは道理に適う。これらの中間CAは、ルートCA又は別の中間期間により発行された証明書を有し、チェイン中の任意のCAにより発行された任意の証明書に「信頼チェイン」を確立できるようにする。ルートCAまで追跡して遡るこの能力は、セキュリティをなお提供しながらCAの機能をスケーリングできるようにするのみならず-証明書を消費する組織が、自信を持って中間CAを使用できるようにする-、損なわれた場合、信頼チェイン全体が危険に曝されるルートCAの露出を制限もする。他方、中間CAが損なわれた場合、露出ははるかに少ない。
ファブリックは、ユーザが、形成されたブロックチェーンネットワークでCAを作成できるようにする内蔵CAコンポーネントを提供する。このコンポーネント-ファブリックCAとして知られるのは、X.509証明書の形態を有するファブリック参加者のデジタルアイデンティティを管理可能なプライベートルートCAプロバイダである。ファブリックCAはファブリックのルートCAニーズに的を絞ったカスタムCAであるため、本質的に、ブラウザで一般的/自動的に使用されるSSL証明書を提供することができない。しかしながら、何らかのCAはアイデンティティの管理に使用しなければならない(テスト環境であってさえも)ため、ファブリックCAは、証明書の提供及び管理に使用される。公開/商用ルート又は中間CAを使用して識別を提供することも可能である-そして完全に適切である。
証明書失効リスト(CRL)は、CAが何らかの理由で失効したことが分かっている証明書への参照のリストである。店のシナリオでは、CRLは、盗まれたクレジットカードのリストのようなものである。
ファブリック及びCouchDB(登録商標)に関する上記情報は、以下のリンクで入手可能なソースから公に採用された。
https://hyperledger-fabric.readthedocs.io/en/release-1.4/fabric_model.html#
https://kaleido.io/enterprise-blockchain-protocols-ethereum-vs-fa
https://hyperledger-fabric.readthedocs.io/en/release-1.4/peers/peers.html#applications-and-peers
https://hyperledger-fabric.readthedocs.io/en/release-1.4/ledger/ledger.html#world-state-database-options
https://hyperledger-fabric.readthedocs.io/en/release-1.4/couchdb_as_state_database.html
https://hyperledger-fabric.readthedocs.io/en/release-1.4/identity/identity.html#identity
https://hyperledger-fabric.readthedocs.io/en/release-1.4/identity/identity.html#fabric-ca
リレーショナル・データ・アクセス制御
Super Admin:ルート許可
ELEMENTにおける他の全てのアクティビティの前提条件は、データベースの作成及びそのデータベースに対して演算を実行する少なくとも1つのアイデンティティの承認である。「Super Admin」アクセスレベルは、これを行う許可を認める。
ELEMENTシステムにおける残りのユーザ・アクセス・レベルは、データベース毎に認められる。
考察したように、Super AdminはELEMENTのルート許可レベルであり、データベースの作成を含む全ての演算の許可を有する:
- データベースの作成/ドロップ
- 特定/複数のデータベースへのAdminユーザの選任/選任解除
- 特定/複数のデータベースからのユーザの追加/除去
- ネットワークにわたる全てのユーザ及びユーザ情報の閲覧
- DDL演算の実行
- DML読み出し/書き込み演算の実行
Adminアクセスレベルは、指定されたデータベース内で最高特権を有するユーザである。Adminは、Super AdminユーザによりELEMENTデータベースに選任/登録される。Adminアクセスレベルの特権は:
- 割り当てられたデータベースでのユーザの追加/除去
- 割り当てられたデータベースにわたる全てのユーザ及びユーザ情報の閲覧
- DDL演算の実行
- DML読み出し/書き込み演算の実行
備考: Adminユーザは、指定されたデータベースにより多くのAdminを追加/除去することができる。
このアクセスレベルは、ユーザがDML演算と共に特定のDDL演算を実行できるようにする(より詳細についてはELEMENT SQL仕様参照)。しかし、このアクセスレベルからのユーザの追加は許可されない及び以下。
- 指定されたデータベース内のELEMENTテーブル、スキーマ、及びカラム(インデックス)の作成/変更/ドロップ等のDDL演算の実行
- DML読み出し/書き込み演算の実行
このアクセスレベルのユーザは、以下等の特定のDML機能を実行することができる:
- ELEMENTテーブルでのレコードの挿入/更新/削除
- LIMIT及びOPSTAT等のELEMENT SQL拡張は、DML Write演算と併せて使用することができる(ELEMENT SQL仕様参照)。
DML Readアクセスレベルは、ユーザがデータを読み出せるようにする最もベーシックなアクセスである。このレベルのユーザは、データベースのいかなるデータも変更するアクセスを有さない。このアクセスレベルにおいて以下の演算を行うことができる:
- 指定されたデータベースから種々のレコードを選択し、昇順又は降順にデータを配置する
- BOOKMARK、QUERYLEVEL、及びLIMIT等のELEMENT SQL拡張は、DML Read演算と併せて使用することができる(ELEMENT SQL仕様参照)
- 指定されたデータベース内のテーブル及びテーブル詳細の閲覧。
ELEMENTシステム(v1.0)は、招待者限定参加登録システムを有する。登録プロセスは公開されない:Super Adminのみが、ELEMENTデータベースを使用する新しいユーザを追加する特権を有する。続けて、super adminはデータベースオーナー(Admin)を割り当てることができ、データベースオーナーはその特定のデータベースに他のユーザを更に追加することができる。ELEMENT演算は分散型台帳ネットワーク機能を基礎とするため、ELEMENTユーザは必ず、分散型台帳ネットワークにおけるアイデンティティの既存のプールから構築される。
Endpoint: http://:3000/api/user/register
APIへのリクエストボディは3つの必須パラメータを含む:
1.username:メンバの一意/非既存の名前
2.database_id:既存のデータベースの名前
3.access_level:メンバのアクセス特権、このフィールドは以下の許された値を有することができる-"DDL"、"DML_WRITE"、"DML_READ"、"ADMIN"
{
"username": "Matthew",
"database_id": "Customer",
"access_level": "DDL"
}
Super Admin及びAdminアクセスレベルは、特定のユーザを特定のデータベース/複数のデータベースからディセーブルすることを選ぶことができる。これは、ネットワーク上の複数のデータベースへの選択的ユーザアクセスを可能にする。
Endpoint: http://:3000/api/user/revoke
APIへのリクエストボディは2つの必須パラメータを含む:
1.username:メンバの正確な名前
2.database_id:メンバが属する既存のデータベースの名前
ユーザ無効化リクエスト・ボディ・サンプル:
{
"username": "Matthew",
"database_id": "Customer",
}
Super Adminアクセスレベルは、ユーザをネットワークから完全に除去する特権を有する。これは、Delete User ELEMENT APIを使用することにより達成することができる。
Endpoint: http://:3000/api/user/delete
APIへのリクエストボディは1つの必須パラメータを含む:
1.username:メンバの正確な名前
ユーザ削除リクエスト・ボディ・サンプル
{
"username":"Matthew",
}
分散型台帳におけるリレーショナルデータ-高レベル要件
分散型台帳得及びコンセンサス
リレーショナルデータは、スマートコントラクトにアクセス可能でなければならない。
テーブルスキーマは、シングルフィールド一意プライマリキーをサポートする。テーブルの現在状態のプライマリキーの非クラスタリング索引付けがサポートされるべきである。
データ、スキーマ、及びログされた演算は、静止時又はトランスポート中、仕様「リレーショナル・データ・アクセス制御」において承認されるアイデンティティを除き、非暗号化形態では可視ではない。
リレーショナルデータ及びログされたリレーショナルデータ演算は、指定されたフォーマットでJSONとして分散型台帳(又は上記と同等)で表される。
ELEMENTリレーショナル・データ・オブジェクト
ELEMENT SQL:高レベル要件
SQLクエリ入力パスウェイ
ELEMENT1.0実現は、以下のテーブルに概説される3つのソースからのELEMENT SQLを受け入れる:
この仕様の残りにおける暗示は、ELEMENT実装が、以下を含む幾つかの一般的なSQLコンストラクトの均等物をサポートすることである:
カラム
データ型
識別子
ヌル値
ロー(ここではレコードとも呼ばれる)
スキーマ定義
SQLスキーマステートメント
SQLステートメント
テーブル
ELEMENにおけるデータ型-背景
ELEMENTシステムにおけるレコードには、特定のテーブルが関連付けられる。あらゆるセル値は、ELEMENTテーブルにおいて定義されるカラムによって決まるデータ型に属する。
1.Number
ELEMENTシステムの'Number'データ型は、全ての演算数タイプをサポートする。これは、十進値の精度もサポートするNUMERIC型、INTEGER型、及びDECIMAL型等の馴染みのあるSQLデータ型の組合せである。
ELEMENTシステムのStringデータ型は、全てのstring関連値をサポートする。これは、可変長文字列型の組合せであり、SQLにおけるTEXTデータ型に類似する。
Booleanデータ型の値はtrue又はfalseである。
このドキュメンテーションは、以下の表記及びシンタックス規定を含むバッカスナウア記法(Backus-Naur Form:BNF)の単純な変形のテキスト記述から成る:
標準SQLからのキーワード
ELEMENT1.0は、以下の標準キーワードを含むSQL言語のサブセットに、本明細書において後述する少数のELEMENT固有のキーワードを加えたものをサポートする:
ヌルは、キーワード及び値として使用される。
ヌル値は、レコードにデータ型'null'を使用することにより特定のフィールドが空白又は値がないことを示すのに使用される。キーワードとしてのヌルは、空のレコードをチェックする妥当性確認としてNOT演算子と共に使用されることがある。ヌルは、カラムのデフォルト値をヌルとして設定するのにも使用される。
ELEMENTv1.0は、ローカル言語として英語のみをサポートし、国際化(i18n)のサポートは将来のリリースで利用可能になる。2つのタイプの識別子がELEMENTにおいて定義される:
database_name identifiers match this regular expression:
/^(?=.{1,50}$)([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)$/
識別子は、以下の正規表現に合致するstringである:
/^(?=.{1,50}$)([a-zA-Z0-9]+((-|_)[a-zA-Z0-9]+)*)$/
全ての識別子は最大長50文字を有する。
table_name ::= identifier
column_name ::= identifier
old_column_name ::= identifier
new_column_name ::= identifier
ELEMENTv1.0は3つの予め定義されるデータ型をサポートする:上述したString、Number、及びBoolean。
データ型::=[NUMBER|STRING|BOOLEAN]
value::=
<value>(選択されたデータ型に対応)-Elementセクションでのデータ型を参照
ELEMENT SQLにおける比較演算子は、名前が示唆するように、2つの値を比較できるようにする。等式、大なり、又は小なり等の関係式のstring又はnumberに等しい。
[<|>|<>|!=|>=|<=|=]
ELEMENT SQLは、一般にWHERE節と併用される条件キーワードを使用して2つ以上の状況データ又は選択の評価をサポートする。論理は幾つかの比較演算子と一緒に、ELEMENTシステムにおける組合せ演算子を形成する。サポートされる組合せ演算子を以下に述べる。
ALL演算子は、値をサブクエリにより返された値のリスト又は1組の値と比較することによりデータをクエリする。
all_expression::=
column_name comparision_operator ALL({subquery|,,...})
ANY演算子は、値をサブクエリにより返された値のリスト又は1組の値と比較する。
any_expression::=
column_name comparision_operator ANY({subquery|,,...})
IN演算子は、WHERE節内で使用されて、値が値のリスト中の任意の値と一致するか否かをチェックする。
in_expression::=
column_name IN ({subquery|,,...})
ELEMENT SQLは、正規表現ベースのstringパターンマッチングをサポートする。パターンは、LIKE演算子を使用してテーブルカラムに存在するレコード値について照合される。LIKE演算子は、stringパターンを一致させる'等号'(=)演算子のように働く。LIKE演算子と併せて使用されることが多い2つのワイルドカードがある:
%-パーセント符号はゼロ、1、又は複数の文字を表す。
_-下線は一文字を表す。
備考:アスターリスク(*)及びクエスチョンマーク(?)もサポートされる。
like_clause::=
column_name LIKE''
pattern::=
{|}[|][|}...
wildcard::=
{%|_|$|*|?}
サブクエリは、より大きなSQLクエリの内部に入れ子され、通常はWHERE節内に組み込まれるSQLクエリである。
-サブクエリは、メインクエリの実行前に実行される。
-サブクエリ結果は、メインクエリの入力として処理される。
-サブクエリは括弧で囲まれるが、 INSERTの場合、サブクエリは通常のSELECTステートメントとして扱われる。
-サブクエリは、比較演算子の右側に配置される。
-サブクエリは、対応する結果を内部で操作することができず、したがって、ORDER BY節はサブクエリに追加することができない。ORDER BY節は、最後の節になるメインSELECTステートメントで使用することができる。
-SQL演算子は、サブクエリによる影響を受けるローの数に基づいて使用されるべきである。
-サブクエリがヌル値をメインクエリに返す場合、メインクエリは、WHERE節において特定の組合せ演算子を使用している間、いかなるローも返さない。
-ELEMENT固有のキーワード及び拡張は、サブクエリで使用できないことがある。
-シングル・ロー・サブクエリ:ゼロ又は1つのローを返す
-マルチ・ロー・サブクエリ:1若しくはそれ以上のローを返す
-マルチ・カラム・サブクエリ:1若しくはそれ以上のローを返す
-入れ子サブクエリ:サブクエリは別のサブクエリ内に配置される
サブクエリ::=
SELECT { * | | , , ... }
FROM
WHERE search_condition
[ LIMIT ]
search_condition ::=
search_clause [{ AND | OR } search_clause [ { AND | OR }
search_clause ] ... ]
search_clause::=
[ NOT ]{ comparison_clause | combination_clause | between_clause | like_clause }
comparison_clause ::=
comparision_operator { | NULL }
combination_clause ::=
{ all_expression | any_expression | in_expression }
between_clause ::=
{ ( [ NOT ] BETWEEN AND ) }
データ定義言語(DDL)は、データベースにおいてデータベースオブジェクトの構造を作成及び変更するのに使用されるコンピュータ言語である。ELEMENT SQLでサポートされるデータベースオブジェクトには、スキーマ、テーブル、及びインデックスがある。以下のDDL SQLステートメントは、記載されたシンタックスを使用してELEMENT実装によりサポートされる。
システムにおいて新しいデータベースを作成する
create_database_statement ::=
CREATE DATABASE database_name [ ; ]
database_name ::= Identifier
作成するデータベースの名前
現在尾データベースに新しいテーブルを作成する。テーブルは複数のカラムを有することができ、各カラム定義は、名前、データ型、及び任意選択のカラム定義から成る。
create_table_statement ::=
CREATE TABLE table_name
( {column_definition}, ... )[ ; ]
column_definition ::=
column_name [ DEFAULT | NULL | NOT NULL | PRIMARY KEY ] [ ; ]
table_name ::= identifier
作成するテーブルの名前
column_name ::= identifier
カラムの名前
既存のテーブルのプロパティ、カラム、又は制約を変更する。
alter_table_statement ::=
ALTER TABLE table_name { action }
action ::=
{
ADD column_name [DEFAULT] |
DROP column_name |
ALTER column_name TYPE (Only applicable when table has no records) |
RENAME COLUMN old_column_name TO new_column_name
} [ ; ]
table_name ::= identifier
変更するテーブルの名前
column_name ::= identifier
変更するカラムの名前
old_column_name ::= identifier
名前変更するカラムの名前
new_column_name ::= identifier
変更後のカラムの新しい名前
現在のデータベースからテーブルを除去する。
drop_table_statement ::=
DROP TABLE table_name [ ; ]
table_name ::= identifier
除去されるテーブルの名前
ELEMENTシステムからデータベースを除去する。
*備考:データベース上のデータはクリアされるが、データベースはネットワークから物理的に削除されない。データベース名は、データベースドロップ演算を使用した後であっても、一意であり、再使用することはできない。
drop_database_statement ::=
DROP DATABASE database_name [ ; ]
database_name ::= identifier
クリアするデータベースの名前
ユーザがアクセス特権を有するテーブルを列挙する。コマンドは、現在/指定されたデータベースのテーブルを列挙するのに使用される。
show_tables_statement ::=
SHOW TABLES [ ; ]
分散型台帳プラットフォームで可視であるドロップされたデータベースを含め、ユーザがアカウント全体にわたりアクセス特権を有するデータベースを列挙する。
show_databases_statement ::=
SHOW DATABASES [ ; ]
テーブル中のカラム又は現在の値の何れか一方を記述する。クエリ記述は、選択されたテーブルの全ての詳細及びメタデータを返す。
describe_table_statement ::=
DESC [ RIBE ] [ TABLE ] table_name [ ; ]
table_name ::= identifier
記述が消されるテーブルの名前
データ管理言語(DML)は、データベースにおいてデータを追加(挿入)、削除、及び変更(更新)するのに使用されるコンピュータプログラミング言語である。DMLは多くの場合、SQL等のより広いデータベース言語のサブ言語であり、DMLは、ここでの場合のように、言語に演算子の幾つかを含む。以下は、データの現在状態を変更することができ、ELEMENT実現によりサポートされるDML SQL書き込みコマンドである。
1若しくはそれ以上のローをテーブルに挿入することによりテーブルを更新する。テーブルの各カラムに挿入された値は明示的に指定することができる。
insert_statement ::=
INSERT INTO table_name [ column_name, column_name, ... ]
[ select_statement | subquery ]
VALUES { DEFAULT | NULL | , , ... }
[OPSTAT][ ; ]
table_name ::= identifier
データが追加されるテーブルの名前
column_name ::= identifier
データが追加されるカラムの名前
データをテーブルから除去する。特定のデータはWHERE節を使用して除去される。
delete_statement ::=
DELETE FROM table_name
WHERE search_condition
[ LIMIT | OPSTAT ] [ ; ]
table_name ::= identifier
レコードが除去されるテーブルの名前
標的テーブル中の指定されたローを新しい値で更新する。
update_statement ::=
UPDATE table_name
SET assignment
[ WHERE search_condition] [ ; ]
[ LIMIT | OPSTAT ] [ ; ]
assignment ::=
{ ( column_name = | NULL ,
[ column_name = | NULL ], ... ) }
table_name ::= identifier
変更されるテーブルの名前
column_name ::= identifier
特定のデータの比較又はサーチに使用されるカラムの名前
データの読み取りのみの選択は時に、別個のデータクエリ言語(DQL)の一環として区別されることがあるが、密に関連しており、DMLのコンポーネントと見なされることもある。以下のQL DML読み出しコマンドは、ELEMENT実装によりサポートされており、シンタックスについては説明した。
select_statement ::=
SELECT [ * | column_name | column_name , column_name ... ]
FROM table_name
WHERE search_condition
[ ORDER BY column_name ASC | DSC ]
[ LIMIT ]
[ QUERYLEVEL {INFO | SYSTEM }] | [ BOOKMARK ][ ; ]
table_name ::= identifier
データが読み出されるテーブルの名前
column_name ::= identifier
データが取り出されるカラム又は結果を並べるのに使用されるカラムの名前
ELEMENT1.0実現は、標準SQLへの拡張として以下のキーワードもサポートする。
OPSTATは、演算が台帳に組み込まれたことの指示を追跡するリクエストである。
I.成功:成功レスポンスは、SQL演算の更新が成功し、データがプラットフォームに適切な程度まで分散型台帳に組み込まれたことを意味する。
II.失敗:失敗ステータスは、SQLコマンドが実行に成功せず、データが台帳で決して更新されなかったことを表す。
III.時間切れ:SQLコマンドが予め定義された時間切れ期間を過ぎた場合、ユーザには時間切れレスポンスが返される。その時点で、クエリ結果が台帳に組み込まれたことの確認はない。
OPSTATは、有効クエリの末尾で使用され、これは、演算又は節がOPSTATキーワード後に出現しないことを意味する。
OPSTATキーワードは、SELECT、UPDATE、INSERT、及びDELETE演算とのみ併用される。
INSERT INTO sample_table[(`ABC`,`DEF`,123,false)] OPSTAT
DELETE FROM Task WHERE status = `Rejected LIMIT 50 OPSTAT
LIMITキーワードは、幾つかのELEMENT仕様ルールと併せて、従来のSQL LIMIT演算と同様である。限度は、クエリにより返されるローの最大数を制約する。
LIMITは、SELECT、UPDATE、及びDELETE演算と併用される。
LIMITは、更新及び削除クエリの場合、OPSTATキーワードの前に使用される。
選択クエリの場合、LIMITは、ブックマーク又はクエリレベルキーワードの前に使用される。
SELECT contact_id, last_name, first_name FROM contacts WHERE city = `Vienna` ORDER BY last_name ASC LIMIT 400 QUERYLEVEL SYSTEM BOOKMARK tldg213sd45sa7fd
DELETE FROM Task WHERE status = `Rejected` LIMIT 50 OPSTAT
クエリレベル特徴は、選択されたレコードについてのメタデータ情報を提供する。ユーザは、選択クエリを用いてクエリレベルコマンドを実行した後、クエリレスポンスにおいて情報を受け取る。
1.INFO:これは、ELEMENTにより設定されるデフォルト情報レベルである。このレベルでは、ユーザにはカラム名及びそれらの各値が提供される。
2.SYSTEM:SYS又はシステムクエリレベルは、選択されたレコードについての詳細情報を提供する。詳細なメタデータは以下等のフィールドを含む:
a.作成日
b.最後の変更日
c.作成者
d.一意のid:レコードid、テーブルid
e.バージョン詳細
-クエリレベルは、読み出し演算で使用され、すなわち、選択クエリとのみ使用される。
-限度キーワードの前で使用され、クエリの末尾に位置決めされる。
-クエリレベルの一はブックマークキーワードと相互交換することができる。
SELECT * FROM data WHERE city = `LA` LIMIT 70 BOOKMARK nw1e83ge6ds43uia QUERYLEVEL INFO
SELECT id FROM data WHERE city = `Newark` QUERYLEVEL SYSTEM BOOKMARK erttnkel63ze9fs02vfe
ブックマーククエリは、ELEMENTテーブルデータのページネーションに使用される。テーブルのページサイズは、ブックマークと共に限度キーワードを使用して設定される。デフォルトにより、全てのページは、ユーザがブックマーククエリを使用することによりアクセスすることができる指定された一意のマーカを有する。クエリは、ブックマーク及びクエリレスポンスを含むオブジェクトを返す。得られたブックマークを使用して、ユーザは続くページ上のデータを閲覧/アクセスすることができる。
-ブックマークキーワードは、選択クエリとのみ使用される。
-ブックマークはクエリの末尾で使用され、したがって、限度キーワードの後で使用される。
-ブックマークの位置は、クエリレベルキーワードと相互交換することができる。
SELECT * FROM data WHERE id = `j3` LIMIT 70 BOOKMARK nw1e83ge6ds43uia
SELECT * FROM data WHERE city = `LA` LIMIT 70 BOOKMARK nw1e83ge6ds43uia QUERYLEVEL INFO
5.レコードのバルク挿入
ELEMENTは、バルク挿入特徴を使用してELEMENTへのレコードの複数
BULK INSERT INTO EventLogs
[(799021, "saf89efuew099j", 78123.912341, "MINED", null), (235235, "wqknt32il23knafs", 43534.43523, "PENDING", true), (764654, "podn4bfjs24o45sa", null, "MINED", true),
(235354, "sdglmd49wtw32r3wq", 3554.34654, "MINED", false), (533246, "235oijasfsnsafioi", 457.47334, "FAILED", false)]
ELEMENT Node.js(登録商標)SDK関数ドキュメンテーション
序文
Elementの言語固有SDKは、開発者がアプリケーションコードから直接ELEMENT(商標)システムと対話できるようにするツールである。このドキュメントは、Node.js(登録商標)アプリケーションと併用されるのに開発されたSDKのバージョンを詳述する。
ファブリック実現では、Node.js(登録商標)はまた、分散型台帳プラットフォームを拡張するために許容される言語でもある(「システムチェーンコード」を介して)。このため、ファブリックプラットフォームでデプロイされるElement_ChaincodeにおいてNode.js(登録商標)ELEMENT_SDKへの作業を再使用する機会があった。その結果、ELEMENT_SDKは2つの類似するパッケージになった。第1のパッケージは、ELEMENT仕様に図示されるようにSDKとして使用される。パッケージの第2のバージョンは、ELEMENT特徴をファブリック・ピア・ノードに追加するElement_Chaincodeコンポーネントの一環としてデプロイされる。これは、executeQuery()関数を「ユーザチェーンコード」スマートコントラクトに提供し、ELEMENT仕様により求められるようなSQLの使用を可能にする。
ファブリック・サービス・レイヤ・インターフェース仕様
序文
ファブリックサービスは、ELEMENT1.0仕様においてプラットフォーム固有のサービスレイヤ抽象コンポーネントを実現し、APIレイヤと分散型台帳プラットフォームとの間の対話の仲介者として働くサービス・レイヤ・インターフェースを実装する。そのサービスは、RDBMS関連演算の実行に役立つ。
Element(商標)コンソールを用いてファブリックサービスをデプロイするには、以下の前提条件が要求される:
Node8.xがインストールされるべきである。
ファブリックセットアップが適宜構成されるべきである。
これらのサービスは、ファブリック分散型台帳プラットフォーム固有のサービスである。以下はサービス及びサービスのメソッドである。
ELEMENT(商標)パーサ:序文
Elementパーサは、以下の方法でクエリ文字列に対処するELEMENT(商標)のコンポーネントである:
・有効シンタックスについてクエリをチェックする
・パーズされた抽象シンタックスツリーを返す
・クエリが無効である場合、エラーを返す
・データベースID、テーブルID、及びカラム名等の識別子が、Element SQL仕様で言及される指定されたシンタックスに従っているか否かをチェックする
・ELEMENT SQL(商標)として既知のElement固有キーワードと組み合わせて種々の既存のSQLキーワードに対処
ELEMENTファブリック実現においてパーサの首尾よい消費を保証するには、以下の要件を満たす必要がある:
・Elementシステムチェーンコードがアップされ、実行中であるべきである。
・Elementコンソールをデプロイする必要がある。
・パーサはElementコンソールにNode.js(登録商標)モジュールとしてインストールされるべきである。
・システムチェーンコードがインストールされる全てのファブリックピアに存在すべきでもある。これは、システムチェーンコードがパーサにローカルにアクセスすることが可能なことを保証する。
実装されるELEMENTパーサは1つの統合されたコンポーネントである。しかしながら、パーサ機能は、履行中のELEMENT仕様の部分に基づいて2つの部分に分割される。具体的には、DDL及びDMLコンポーネント。
Elementパーサは、文字列フォーマットのクエリ入力をとり、「parseQuery」と呼ばれるパーサに存在する関数を使用して呼び出される。クエリはPostgres SQLのクエリ仕様に従う。仕様は、ELEMENT(商標)1.0ELEMENT SQL(商標)ドキュメントに詳細に見出すことができる。クエリは、追加されたElement固有キーワードを有し、データのよりよいハンドリングを提供する。
パーサは、ユーザ・アクセス・レベルと同じラインに沿って分類される4つの関数カテゴリから成る。以下の表はこれらの関数をまとめたものである:
Element(商標)システムチェーンコードでのパーズは以下のステップを含む:
1.パーサはシステムチェーンコードに存在する'クエリ実行'関数により消費される。システムチェーンコード。関数がDMLクエリを用いて呼び出された後、パーサはクエリをパーズしてASTオブジェクトにする。
2.オブジェクトは、Element(商標)DML演算のビジネスルールに従って妥当性確認される。無効オブジェクトはエラーに繋がる。
3.次に、妥当性確認されたASTオブジェクトは、クエリが意図される演算に基づいてElement(商標)システムチェーンコードに存在する関数に固有のキーを含むオブジェクトに変換される。
4.これにより、Element(商標)システムチェーンコードは、入力データを更に処理し、全てのDML演算に対処できるようになる。
Element(商標)コンソールでのパーズは以下のプロセスに従う:
1.Element(商標)コンソールに存在する'クエリ実行'関数は、呼び出された場合、パーサを利用して入力クエリをパーズする。
2.パーサがElement(商標)DDL及びDML演算のビジネスルールに従って妥当性確認すると、コンソール自体に存在する関数に固有のキーを含むオブジェクトをコンソールに返す。
3.次に、コンソールはクエリ関数に基づいてクエリを処理する。DDLの場合、コンソールの関数が呼び出され、DMLの場合、システムチェーンコードが呼び出される。
パーサは、それ自体の目的で入力クエリを妥当性確認することにより、不必要なELEMENT(商標)関数呼び出しを回避する。ELEMENT(商標)のビジネスルールを守らないデータはエラーを生じさせる。エラーは、エラーメッセージと、妥当性確認されたルールに関連するエラーコードとを含む。これは、クエリのデバッグの容易さを提供するとともに、システムがエラーに対処する方法も同様にクライアントに提供する。
[1] https://www.npmjs.com/package/pg-query-native
[2] https://github.com/lfittl/libpg_query
序文
エレメントチェーンコードは、ファブリックに対して全てのデータベース関連演算を実行するためのELEMENT(商標)の基本コンポーネントである。クエリの形態のユーザ入力は、エレメントチェーンコードを使用して分散型台帳で処理される。エレメントチェーンコードは、特定の機能を達成するために、アイデンティティプロバイダ及びワールド・ステート・データベースに依存する。
以下の前提条件が、エレメントチェーンコードの登録及びデプロイに必須である:
ファブリックネットワークが実行中であるべきである。
ピアは、「pluginsenabled」という名前のビルドタグを使用して構築される必要がある。
ユーザチェーンコードと異なり、システムチェーンコードは、SDK又はCLIの提案を使用してインストール及びインスタンス化されない。システムチェーンコードは、スタートアップ時にピアにより登録されデプロイされる。この機能は、デフォルトによりイネーブルされず、代わりに、ピアが「pluginsenabled」という名前のビルドタグを使用して構築されることがリクエストされる。
静的に-静的の場合、チェーンコードをピアプロセスの一環として構築するために、手法は、チェーンコードに`SelfDescribingSysCC`インターフェース[1]を実装させ、そのインスタンスをピア・スタートアップ・ファイルに登録する[2]。それに続き、ピアは、この変更されたコードを使用して構築される必要がある。
動的に-システムチェーンコードをプラグインとしてロードするほうがよい。この方法では、変更がチェーンコードに対して行われる津度、ピアを再構築する必要がない。プラグインをイネーブルするために、ピアは1回構築されるだけでよい。
デプロイステップ-
システムチェーンコードをgoに書き込む
-buildmode=pluginビルドフラグを使用してこのgoプラグインをコンパイルして、共有オブジェクト(.so)ライブラリファイルを生成する。
go build-buildmode=plugin-o.so.go
ピアを構築して、GOをロードできるようにする:
DOCKER_DYNAMIC_LINK=true GO_TAGS+="pluginsenabled"はピアドッカーを作成する
備考-goプラグインをファブリックバージョンのgoバージョンと同じgoバージョンに構築することを想起する。
形成されたドッカーイメージを使用してネットワークを開始する。
プラグインファイル及び.soファイルをドッカーピアにコピーする。
システムチェーンコード及びその情報をピアの構成ファイル(core.yaml)に追加する。
ピアを再起動する。
https://github.com/hyperledger/fabric/blob/release-1.3/core/scc/sysccapi.go#L78
https://github.com/hyperledger/fabric/blob/release-1.3/peer/node/start.go#L549
Init()
Initは、チェーンコード登録中に呼び出される。このメソッドは、configをロードし、他の全てのメソッドで使用されるグローバル変数を初期化するのに使用される。
このメソッドは、チェーンコードインターフェースの実装を返すため、動的にリンクされたあらゆるチェーンコードに存在しなければならない。チェーンコードインターフェースは、全てのメソッドをカプセル化し、ピアプロセスの一環として実行されるようにそれらを転送する。
このメソッドは、チェーンコードにおいてトランザクションを実行するのに使用される。これは、チェーンコードのAPIとファブリックピアとの間の交信ポイントとして働く。呼び出しエンティティはinvokeメソッドを呼び出して、チェーンコードの任意の他のメソッドを処理する。呼び出しエンティティが適切なアクセスを有し、入力が文字列化JSONとして正しく形成されているか否かをチェックした後。リクエストは、invokeが呼び出すことが意図される対応するメソッドに中継される。
このメソッドは、データベース作成開始時に呼び出される。リクエストは、その特定のデータベースに適切なメタデータを生成することにより処理される。このメタデータは、チェーンコードの他の全てのメソッドにより消費される。
このメソッドは、ユーザのバッチ演算として処理されるデータベースの削除を開始するのに呼び出される。このメソッドは、プロセスの開始をマークし、そのデータベースに存在する全てのテーブルのリストを返す。これに続き、テーブルのメタデータ及び全てのそのレコードを削除する特定の呼び出しが行われる。
このメソッドは、バッチ中の全てのリクエストの処理に成功した後、データベース削除の仕上げの呼び出しとして働く。
このメソッドは、新しいユーザをデータベースに追加するのに使用され、属性の証明書への追加に続く。
このメソッドはデータベースからユーザを削除するのに使用され、証明書からの属性の除去に続く。
このメソッドは、新しいテーブルを作成し、既存のデータベースに追加するのに使用される。まず、チェックが実行されて、現在のデータベースがアイドル状態ではないことを確認する。それに続き、ELEMENTシステムは、テーブルがデータベースに既に存在するか否かをチェックする。これらの確認と共に、入力データが一貫している場合、テーブルメタデータが形成され、台帳に追加される。テーブル情報もデータベースメタデータに追加される。テーブルメタデータは、そのテーブルで実行された全ての演算の確認に使用される。
このメソッドは、ユーザのバッチ演算として処理されるテーブルの削除を開始するのに呼び出される。このメソッドは、プロセスの開始をマークし、そのテーブルへの他の演算を制限するようにDDLフラグを設定する。
このメソッドは、そのテーブルのレコードを削除するのに使用される。これは、指定されたテーブルレコードに対して削除演算を再帰的に実行する。削除はレコードのバッチに対して実行され、一方、バッチのサイズは構成可能である。これは、トランザクションの時間限度を超えるのを避けるために行われる。
このメソッドは、バッチ中の全てのリクエストの処理に成功した後、テーブル削除の仕上げの呼び出しとして働く。呼び出しエンティティからのコールは、このプロセスの完了を示すために行われる。全ての中間トランザクションIDは、ユーザに1つのトランザクションIDを返すことができるように台帳に格納される。それに続き、そのテーブルのメタデータは削除され、テーブル名は、将来の演算での新しいテーブルの作成に再使用することができる。
このメソッドは、テーブルの構造の変更を開始するのに呼び出される。これはバッチ演算として処理される。このメソッドは、プロセスの開始をマークし、そのテーブルへの他の演算を制限するようにDDLフラグを設定する。リクエストにおいて与えられる入力を使用して、Elementシステムは、そのテーブルの全てのレコードの更新に使用されることになる更新テンプレートを形成する。その更新テンプレートは応答において返される。
このメソッドは、そのテーブルのレコードを変更するのに使用される。これは、テーブルに存在する全てのレコードを変更する。Alterはレコードのバッチに対して実行され、一方、バッチのサイズは構成可能である。これは、トランザクションの時間限度を超えるのを避けるために行われる。
このメソッドは、バッチ中の全てのリクエストの処理に成功した後、テーブル変更の仕上げの呼び出しとして働く。呼び出しエンティティからのコールは、このプロセスの完了を示すために行われる。全ての中間トランザクションIDは、ユーザに1つのトランザクションIDを返すことができるように台帳に格納される。それに続き、そのテーブルについてのリクエストを再び行うことができる。
このメソッドは、レコードをテーブルに追加するのに使用される。テーブルに追加されるあらゆるレコードは、そのテーブルを作成したときに設定されたルールに準拠しなければならない。したがって、各リクエスト時、まず、テーブルメタデータ中の制約に基づいてカラム値を追加することができるか否かがチェックされる。このメソッドには、呼び出しエンティティがカラムを渡す変形及びカラム名が省かれる変形という2つの変形がある。両変形の処理は同様であり、カラム名が省かれる場合のみ、カラム名がテーブルメタデータから取り出される。レコードが全てのチェック及び確認に合格した場合、レコードは台帳に追加され、プライマリキー値はレコードIDとして設定される。
このメソッドは、テーブルの既存のカラムの値を更新するのに使用される。レコードに対して行われたあらゆる更新はなお、テーブルメタデータにおいて設定された制約に準拠しなければならない。したがって、各リクエスト時、前のレコードデータが台帳から取り出され、意図される変更がレコードに対して行われる。レコードが全てのチェック及び妥当性確認に合格した場合、レコードIDは変わらないままで台帳において更新される。
このメソッドは、テーブルから先に存在していたレコードを削除するのに使用される。レコードが存在し、テーブルがいかなるDDLプロセス下でもない場合、レコードは台帳から削除される。その効果は、トランザクションがコミットされるとすぐに見られる。
このメソッドは、呼び出しエンティティが、インデックスを既存のカラムに追加したい場合、使用される。まず、リクエストが、索引付けを所与のカラムに対して実行することができるか否かについてチェックされる。それに続き、インデックスは状態データベースに追加される必要がある。この機能はファブリックには元々は存在せず、したがって、状態データベースにおいて、所与のカラムのインデックスを追加する別個のリクエストが行われる必要がある。
このメソッドは、呼び出しエンティティが既存のカラムにおけるインデックスを削除したい場合、使用される。まず、リクエストが、索引付けを所与のカラムに対して実行することができるか否かについてチェックされる。それに続き、前に作成されたインデックスは状態データベースから削除される。
このメソッドは、状態データベースで所与のクエリを実行するのに使用される。結果は、意図されるクエリレベルに基づいて呼び出しエンティティに返される。このメソッドは読み出し演算のみを実行し、したがって、台帳に影響しない。呼び出しエンティティが限度を指定しない場合、デフォルト限度が採用されて、トランザクションが時間を超えて実行されるのを回避する。
このメソッドは、挿入演算をバッチに対して実行するのに使用される。挿入演算は全てのレコードに対して実行され、それらの何れか1つが失敗する場合、台帳に影響することなくバッチは返される。挿入された全てのレコードは、カラム値がテーブルメタデータにおいて設定された制約を満たす場合のみ、追加されるべきである。
このメソッドは、更新演算をバッチで実行するのに使用される。更新演算は、クエリを状態データベースに対して実行した後で取得されるバッチ中の全てのレコードに対して実行される。それらの何れか1つが失敗する場合、台帳に影響することなくバッチは返される。更新された全てのレコードは、テーブルメタデータにおいて設定される制約に準拠すべきである。
このメソッドは、削除演算をバッチで実行するのに使用される。再帰的に、削除演算は、クエリを状態データベースに対して実行した後で取得されるバッチ中の全てのレコードに対して実行される。それらの何れか1つが失敗する場合、台帳に影響はない。
幾つかの演算は、呼び出しエンティティには1つのトランザクションとして見える1組のトランザクションとして処理される必要がある。それらの何れか1つが処理されない場合、先の全てのトランザクションは元に戻る必要がある。したがって、各メソッドにおいて、ロールバックのメタデータがキュレートされ、このメソッドは、所与のトランザクションIDを有する先のあらゆるトランザクションを元に戻すのに使用される。
幾つかの演算は、呼び出しエンティティには1つのトランザクションとして見える1組のトランザクションとして処理される必要がある。それらの何れか1つが処理されない場合、先の全てのトランザクションは元に戻る必要がある。したがって、各メソッドにおいて、ロールバックのメタデータがキュレートされる。全てのトランザクションの処理に成功した場合、このメソッドは、所与のトランザクションIDについてのメタデータを削除するのに使用される。
このメソッドは、チェーンコードでDMLクエリを実行するのに使用される。リクエスト中のクエリはパーサに送られ、パーサからの出力は、対応するメソッドの処理に使用される。そのメソッドへの呼び出しエンティティのアクセスをチェックした後。リクエストは適切なメソッドに中継される。
このメソッドは、任意の呼び出しエンティティがアクセスすることができる全てのデータベースを列挙するのに使用される。全てのデータベースは、呼び出しエンティティの証明書において言及され、したがって、呼び出しエンティティの証明書を使用して、全てのデータベースの名前をフェッチして返す。
このメソッドは、データベース中の全てのテーブルを列挙するのに使用される。全てのテーブルはデータベースメタデータにおいて言及され、したがって、データベースメタデータをフェッチし、全てのテーブルのリストを返す。
このメソッドは、テーブル作成時、全ての制約を取得するのに使用される。テーブルメタデータは、全てのカラムの制約を含む。したがって、リクエストが作成される場合、テーブルメタデータは、内部情報を削除した後、返される。
この出願の発明に関連する先行技術文献情報としては、以下のものがある(国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む)。
(先行技術文献)
(特許文献)
(特許文献1) 米国特許出願公開第20l9/0238525号明細書
(特許文献2) 米国特許出願公開第20l9/0179939号明細書
(特許文献3) 米国特許出願公開第20l9/0158594号明細書
(特許文献4) 米国特許出願公開第20l9/0236081号明細書
Claims (43)
- リレーショナルデータベース管理クエリを使用して、トランザクションデータを含む分散型台帳を実装する分散型台帳プラットフォームをクエリする方法であって、
前記分散型台帳プラットフォームの少なくとも1つのプロセッサにより、前記分散型台帳にデータベースを作成し、前記分散型台帳に前記データベースに関する情報を記録する工程と、
前記少なくとも1つのプロセッサにより、受信したリレーショナルデータベース管理クエリを、前記分散型台帳のデータベースで処理可能なクエリ操作に変換する工程と、
前記少なくとも1つのプロセッサにより、クエリ結果を生成するために、前記分散型台帳のデータベースに対して前記クエリ操作を実行する工程と、
前記少なくとも1つのプロセッサにより、前記クエリ結果を、前記分散型台帳に含めるために前記分散型台帳のデータベースによって処理可能な形式で当該データベースにログする工程と
を有する方法。 - 請求項1記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、前記リレーショナルデータベース管理クエリを、(1)ユーザインターフェースを介したユーザ、(2)アプリケーションプログラムインターフェイスを介したユーザーアプリケーション、および(3)スマートコントラクトのうちの1つからの構造化照会言語(SQL)として生成する工程を有するものである方法。 - 請求項2記載の方法において、前記スマートコントラクトが、前記分散型台帳の前記データベースのリレーショナルデータベース管理クエリの少なくともサブセットのSQLクエリを実行するものである方法。
- 請求項2記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、SQLデータ操作言語(SQL DML)書き込み操作、SQLDML読み取り操作、およびSQLデータ定義言語(SQL DDL)操作のうちの1つを有するSQL操作に前記SQLクエリを解析する工程と、前記SQL操作および前記SQL操作に含まれる任意のリレーショナルデータのJava(登録商標)ScriptObject Notation(JSON)表現を作成する工程とを有するものである方法。 - 請求項4記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、前記SQL操作の実行から生じるトランザクションが、プラットフォームに関連する範囲で前記分散型台帳への受け入れに向かって進行したかどうかを決定する工程を有するものである方法。 - 請求項5記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、対応するトランザクションのより明確なステータスをフェッチするために、前記DML書き込み操作の最後にoperation broadcast status(OPSTAT)命令を追加する工程を有するものである方法。 - 請求項4記載の方法において、前記分散型台帳で前記クエリ操作を実行する工程は、前記少なくとも1つのプロセッサにより、前記SQLクエリを呼び出すエンティティが前記SQL操作を実行する権限を有することを確認する工程を有するものである方法。
- 請求項4記載の方法において、前記分散型台帳で前記SQLクエリ操作を実行する工程は、前記少なくとも1つのプロセッサにより、前記クエリ操作のJSON表現、および前記分散型台帳で処理および格納することができるクエリ操作の結果を作成する工程を有するものである方法。
- 請求項8記載の方法において、前記SQL操作はSQL DML書き込み操作であり、当該SQL操作は、さらに、
前記少なくとも1つのプロセッサにより、前記SQL DML書き込み操作を実行するために必要に応じて前記分散型台帳からデータを取得する工程と、
前記少なくとも1つのプロセッサにより、前記取得したデータを含む前記SQL DML書き込み操作を実行する工程と、
前記少なくとも1つのプロセッサにより、前記クエリ結果における新規または更新された任意の記録のJSON表現を準備する工程と、
前記少なくとも1つのプロセッサにより、前記SQL DML書き込み操作および前記任意の更新された記録を、前記分散型台帳に含めるために前記分散型台帳のデータベースによって処理可能な形式で前記分散型台帳にコミットする工程と
を有するものである方法。 - 請求項9記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、前記分散型台帳への受け入れに向けた前記SQL DML書き込み操作の進行状況に関して、前記分散型台帳を監視する工程と、
前記少なくとも1つのプロセッサにより、前記SQLクエリを呼び出すエンティティに対して、前記SQL DML書き込み操作がプラットフォームに関連する範囲で前記分散型台帳への受け入れに向けて進行したかどうかを通知する工程と
を有するものである方法。 - 請求項8記載の方法において、前記SQL操作はSQL DML読み取り操作であり、当該SQL操作は、さらに、
前記少なくとも1つのプロセッサにより、前記SQL DML読み取り操作を実行するために必要に応じて前記分散型台帳からデータを取得する工程と、
前記少なくとも1つのプロセッサにより、前記取得したデータを含む前記SQL DML読み取り操作を実行する工程と、
前記少なくとも1つのプロセッサにより、前記クエリ結果のJSON表現を準備する工程と、
前記少なくとも1つのプロセッサにより、前記クエリ結果の前記JSON表現を、前記分散型台帳に含めるために前記分散型台帳のデータベースによって処理可能な形式で前記分散型台帳にログする工程と
を有するものである方法。 - 請求項11記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、前記クエリ結果のJSON表現を前記SQLクエリを呼び出すエンティティに返す工程を有するものである方法。 - 請求項1記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、チャネルを作成し、前記データベースのコピーおよび前記データベースに関するメタデータを書き込む通常のトランザクションを維持するピアコンピューターを定義する構成トランザクションを実行して、前記分散型台帳内に前記データベースを作成する工程と、
前記少なくとも1つのプロセッサにより、前記分散型台帳のトランザクションデータを定義するコードと、前記トランザクションデータを変更するためのトランザクション命令を作成する工程と
を有するものである方法。 - 請求項13記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、前記分散型台帳の前記トランザクションデータとしてJava(登録商標)ScriptObject Notation(JSON)で前記データベースの属性を定義するコードを作成する工程と、
前記少なくとも1つのプロセッサにより、前記データベースを前記データベースの属性で更新する工程と
を有するものである方法。 - 請求項1記載の方法において、さらに、
前記少なくとも1つのプロセッサにより、前記分散型台帳に含めるために、前記分散型台帳上のデータベースによって処理可能な形式を説明する、解析および変換された構造化照会言語(SQL)クエリを作成する工程を有するものである方法。 - 請求項1記載の方法において、前記リレーショナルデータベース管理クエリはスマートコントラクトから受信され、前記受信したリレーショナルデータベース管理クエリは、前記分散型台帳の前記データベースによって処理されることができる分散型台帳トランザクションに変換され、および前記分散型台帳の前記分散型台帳トランザクションがトランザクション結果を生成するために実行されるものであり、さらに、
少なくとも1つのプロセッサにより、前記トランザクション結果を前記スマートコントラクトに返す工程を有するものである方法。 - 請求項16記載の方法において、さらに、前記スマートコントラクトは、DDLデータベース操作およびスキーマ変更を除く前記分散型台帳のデータ定義言語(DDL)操作を実行することにより前記スマートコントラクトを前記分散型台帳の前記データベースと統合するものである工程を有するものである方法。
- 請求項17記載の方法において、さらに、チェーンコードで前記分散型台帳の前記データベース、前記スマートコントラクトの少なくとも1つの資産を定義する前記チェーンコード、および少なくとも1つの資産を変更するための少なくとも1つのトランザクション命令、のデータベース関連操作を実装する工程を有するものである方法。
- 請求項18記載の方法において、前記スマートコントラクトを前記分散型台帳の前記データベースと統合することは、前記チェーンコードを呼び出す前記スマートコントラクトを有するものである方法。
- 請求項18記載の方法において、さらに、前記チェーンコードからデータ操作言語(DML)読み取り操作を開始する前記スマートコントラクトを有するものである方法。
- 請求項16記載の方法において、さらに、データ操作言語(DML)クエリの実行、前記分散型台帳への前記データベースの作成、前記分散型台帳の前記データベースへのアクセス権の更新、またはデータ定義言語(DDL)クエリの実行を含む少なくとも1つの操作を実行する前記スマートコントラクトを有するものである方法。
- システムであって、
トランザクションデータを含む分散型台帳を実装する分散型台帳プラットフォームと、
前記分散型台帳のデータベースと、
リレーショナルデータ管理および編成システムを実装するための命令を実行する少なくとも1つのプロセッサであって、このリレーショナルデータ管理および編成システムは、
前記分散型台帳のデータベースに関する情報を記録する工程と、
受信したリレーショナルデータベース管理クエリを、前記分散型台帳のデータベースによって処理可能なクエリ操作に変換する工程と、
クエリ結果を生成するために、前記分散型台帳のデータベースに対して前記クエリ操作を実行する工程と、
前記クエリ結果を、前記分散型台帳に含めるために前記分散型台帳のデータベースによって処理可能な形式で当該データベースにログする工程と
を実行するものである、
前記少なくとも1つのプロセッサと
を有するシステム。 - 請求項22記載のシステムにおいて、さらに、
構造化照会言語(SQL)クエリとして前記リレーショナルデータベース管理クエリを生成する手段を有し、この手段は、(1)ユーザーが前記SQLクエリを提供するための前記リレーショナルデータ管理および前記編成システムに対するユーザーインターフェイス、(2)前記リレーショナルデータ管理および前記編成システムのアプリケーションプログラムインターフェイスを介して前記リレーショナルデータ管理および前記編成システムに前記SQLクエリを渡すユーザーアプリケーション、および(3)スマートコントラクトのうちの1つを有するものであるシステム。 - 請求項23記載のシステムにおいて、前記スマートコントラクトは、前記分散型台帳の前記データベースのリレーショナルデータベース管理クエリのSQLクエリの少なくともサブセットを実行するものであるシステム。
- 請求項23記載のシステムにおいて、前記少なくとも1つのプロセッサは、さらに、
SQLデータ操作言語(SQL DML)書き込み操作、SQLDML読み込み操作、およびデータ定義言語(SQL DDL)操作のうちの1つを有する前記SQLクエリをSQL操作に解析し、
前記SQL操作および前記SQL操作に含まれる任意のリレーショナルデータのJava(登録商標)ScriptObject Notation(JSON)表現を作成するための、命令を実行するものであるシステム。 - 請求項25記載のシステムにおいて、さらに、前記少なくとも1つのプロセッサは、前記SQL操作の実行から生じるトランザクションがプラットフォームに関連する範囲で前記分散型台帳への受け入れに向かって進行したかどうかを決定するための命令を実行するものであるシステム。
- 請求項26記載のシステムにおいて、さらに、前記少なくとも1つのプロセッサは、対応するトランザクションのより明確なステータスをフェッチするために、前記DML書き込み操作の最後にoperation broadcast status(OPSTAT)命令を追加する命令を実行するものであるシステム。
- 請求項25記載のシステムにおいて、前記少なくとも1つのプロセッサは、前記SQLクエリを呼び出すエンティティが前記SQL操作を実行する権限を持っていることを確認する命令を実行することによって、前記分散型台帳で前記クエリ操作を実行するものであるシステム。
- 請求項25記載のシステムにおいて、前記少なくとも1つのプロセッサは、さらに、前記クエリ操作のJSON表現と、前記分散型台帳に処理および格納することができる前記クエリ操作の結果を作成するための命令を実行するものであるシステム。
- 請求項29記載のシステムにおいて、
前記SQL操作はSQL DML書き込み操作であり、
前記少なくとも1つのプロセッサは、さらに、
前記SQL DML書き込み操作を実行するために必要に応じて前記分散型台帳からデータを取得し、
前記取得したデータを含む前記SQL DML書き込み操作を実行し、
前記クエリ結果における新規または更新された任意の記録のJSON表現を準備し、
前記SQL DML書き込み操作および前記更新された任意の記録を前記分散型台帳に含めるために前記分散型台帳のデータベースによって処理可能な形式で前記分散型台帳にコミットするための、命令を実行するものであるシステム。 - 請求項30記載のシステムにおいて、前記少なくとも1つのプロセッサは、さらに、
前記分散型台帳への受け入れに向けた前記SQL DML書き込み操作の進行に関して前記分散型台帳を監視し、
前記SQLクエリを呼び出すエンティティに対して、前記SQL DML書き込み操作がプラットフォームに関連する範囲で前記分散型台帳への受け入れに向けて進行したかどうかを通知するための、命令を実行するものであるシステム。 - 請求項29記載のシステムにおいて、
前記SQL操作はSQL DML読み取り操作であり、
前記少なくとも1つのプロセッサは、さらに、
前記SQL DML読み取り操作を実行するために必要に応じて前記分散型台帳からデータを取得し、
前記取得したデータを含む前記SQL DML読み取り操作を実行し、
前記クエリ結果のJSON表現を準備し、
前記分散型台帳への前記クエリ結果の前記JSON表現を、前記分散型台帳に含めるために前記分散型台帳のデータベースによって処理可能な形式でログするための、命令を実行するものであるシステム。 - 請求項32記載のシステムにおいて、前記少なくとも1つのプロセッサは、さらに、前記SQLクエリを呼び出すエンティティに前記クエリ結果の前記JSON表現を返すための命令を実行するものであるシステム。
- 請求項22記載のシステムにおいて、前記少なくとも1つのプロセッサは、
チャネルを作成し、前記データベースのコピーおよび前記データベースに関するメタデータを書き込む通常のトランザクションを維持するピアコンピュータを定義する構成トランザクションを実行することにより前記分散型台帳内に前記データベースを作成し、
前記分散型台帳にトランザクションデータおよび前記トランザクションデータを変更するためのトランザクション命令を定義するコード作成するための、命令を実行するものであるシステム。 - 請求項34記載のシステムにおいて、前記少なくとも1つのプロセッサは、さらに、
前記分散型台帳の前記トランザクションデータとしてJava(登録商標)ScriptObject Notation(JSON)で前記データベースの属性を定義するコードに対応する命令、および前記データベースを前記データベースの属性で更新するための命令を実行するものであるシステム。 - 請求項22記載のシステムにおいて、さらに、前記少なくとも1つのプロセッサは、前記分散型台帳に含めるために、前記分散型台帳のデータベースによって処理可能な形式を説明する、解析および変換された構造化照会言語(SQL)クエリを作成するための命令を実行するものであるシステム。
- 請求項22記載のシステムにおいて、前記リレーショナルデータベース管理クエリはスマートコントラクトから受信され、前記受信したリレーショナルデータベース管理クエリは、前記分散型台帳の前記データベースによって処理されることができる分散型台帳トランザクションに変換され、および前記分散型台帳の前記分散型台帳トランザクションは、トランザクション結果を生成するために実行されるものであり、さらに前記トランザクション結果を前記スマートコントラクトに返すための命令を実行する少なくとも1つのプロセッサを有するものであるシステム。
- 請求項37記載のシステムにおいて、前記スマートコントラクトは、DDLデータベース操作とスキーマ変更を除く前記分散型台帳のデータ定義言語(DDL)操作を実行するものであるシステム。
- 請求項38記載のシステムにおいて、前記データベースのデータベース関連操作は、チェーンコードの前記分散型台帳、前記スマートコントラクトの少なくとも1つの資産および前記少なくとも1つの資産を変更するための少なくとも1つのトランザクション命令を定義する前記チェーンコード、を実装するものであるシステム。
- 請求項39記載のシステムにおいて、前記スマートコントラクトが実行のために前記チェーンコードを呼び出すものであるシステム。
- 請求項39記載のシステムにおいて、前記スマートコントラクトは、前記チェーンコードからデータ操作言語(DML)読み取り操作を開始するものであるシステム。
- 請求項37記載のシステムにおいて、前記スマートコントラクトは、データ操作言語(DML)クエリの実行、前記分散型台帳への前記データベースの作成、またはデータ定義言語(DDL)クエリの実行を含む少なくとも1つの操作を実行するものであるシステム。
- 請求項42記載のシステムにおいて、前記スマートコントラクトは、前記分散型台帳のデータ分離を作成する構成トランザクションを実行することによって前記分散型台帳に前記データベースを作成し、前記データベースのコピーを維持するピアコンピュータと前記データベースに関するメタデータを書き込む通常のトランザクションの実行を定義するものであり、前記少なくとも1つのプロセッサは、さらに、前記分散型台帳のトランザクションデータと、前記トランザクションデータを変更するためのトランザクション命令を定義するコードの作成を有する動作を実行するために命令を実行するものであるシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/544,538 | 2019-08-19 | ||
US16/544,538 US10726002B1 (en) | 2019-08-19 | 2019-08-19 | Relational data management and organization using DLT |
US16/899,400 US11657039B2 (en) | 2019-08-19 | 2020-06-11 | Relational data management and organization using DLT |
US16/899,400 | 2020-06-11 | ||
PCT/CA2020/051131 WO2021030910A1 (en) | 2019-08-19 | 2020-08-19 | Relational data management and organization using dlt |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022521915A true JP2022521915A (ja) | 2022-04-13 |
JP7500589B2 JP7500589B2 (ja) | 2024-06-17 |
Family
ID=71783562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021549147A Active JP7500589B2 (ja) | 2019-08-19 | 2020-08-19 | 分散型台帳技術(dlt)を使用したリレーショナルデータの管理と編成 |
Country Status (9)
Country | Link |
---|---|
US (2) | US10726002B1 (ja) |
EP (1) | EP3884397A4 (ja) |
JP (1) | JP7500589B2 (ja) |
KR (2) | KR102579802B1 (ja) |
CN (1) | CN113454619A (ja) |
CA (1) | CA3125065C (ja) |
MX (1) | MX2021009969A (ja) |
SG (1) | SG11202106858TA (ja) |
WO (1) | WO2021030910A1 (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436039B2 (en) * | 2019-05-04 | 2022-09-06 | Prasaga Foundation | Systemic extensible blockchain object model comprising a first-class object model and a distributed ledger technology |
US11606442B2 (en) | 2019-06-07 | 2023-03-14 | Microsoft Technology Licensing, Llc | Subscription to edits of blockchain transaction |
US20210042737A1 (en) * | 2019-08-07 | 2021-02-11 | Seatig Inc. | Distributed computing architecture with settlement mechanism to enable traceability of credit tokenization, disbursement and repayment |
US11461324B2 (en) * | 2019-08-29 | 2022-10-04 | Oracle International Corporation | First futamura projection in the context of SQL expression evaluation |
US11442957B2 (en) * | 2019-09-03 | 2022-09-13 | Sap Se | Cloud-based fiscal year variant conversion |
US11115804B2 (en) * | 2019-10-04 | 2021-09-07 | Microsoft Technology Licensing, Llc | Subscription to dependencies in smart contracts |
US11641364B2 (en) * | 2020-03-03 | 2023-05-02 | International Business Machines Corporation | Cross-domain state synchronization |
US20210279690A1 (en) * | 2020-05-29 | 2021-09-09 | II Darrell Thompson | Pathfinder |
US11630649B2 (en) * | 2020-06-02 | 2023-04-18 | International Business Machines Corporation | Intelligent application library management |
US20210406876A1 (en) * | 2020-06-30 | 2021-12-30 | International Business Machines Corporation | Permissioned eventing in a decentralized database |
US20220075877A1 (en) | 2020-09-09 | 2022-03-10 | Self Financial, Inc. | Interface and system for updating isolated repositories |
US11641665B2 (en) | 2020-09-09 | 2023-05-02 | Self Financial, Inc. | Resource utilization retrieval and modification |
US11470037B2 (en) | 2020-09-09 | 2022-10-11 | Self Financial, Inc. | Navigation pathway generation |
US11475010B2 (en) * | 2020-09-09 | 2022-10-18 | Self Financial, Inc. | Asynchronous database caching |
US11386053B2 (en) * | 2020-10-15 | 2022-07-12 | Google Llc | Automatic generation of a data model from a structured query language (SQL) statement |
US11960469B2 (en) | 2020-12-07 | 2024-04-16 | Deixis, PBC | Heterogeneous integration with distributed ledger blockchain services |
US20220368533A1 (en) * | 2021-05-16 | 2022-11-17 | CodeNotary Inc. | System and method to cryptographically validate rich query results |
US11599532B1 (en) * | 2021-08-11 | 2023-03-07 | Amdocs Development Limited | System, method, and computer program for preventing user mistakes when making database changes |
US11704312B2 (en) * | 2021-08-19 | 2023-07-18 | Microsoft Technology Licensing, Llc | Conjunctive filtering with embedding models |
US11972012B2 (en) * | 2021-08-31 | 2024-04-30 | Sap Se | Authorization check for nested queries in database systems |
US20230076875A1 (en) * | 2021-09-03 | 2023-03-09 | International Business Machines Corporation | Avoiding data page updates after an insertion operation |
CN113626850B (zh) * | 2021-10-13 | 2022-03-11 | 北京百度网讯科技有限公司 | 基于联盟链的请求处理方法、装置、设备和存储介质 |
CN113918996B (zh) * | 2021-11-24 | 2024-03-26 | 企查查科技股份有限公司 | 分布式数据处理方法、装置、计算机设备和存储介质 |
US20230283488A1 (en) * | 2022-03-01 | 2023-09-07 | DLT Global, Inc. | Blockchain rules engine |
US11641280B1 (en) * | 2022-06-21 | 2023-05-02 | Northern Trust Corporation | Computing technologies for enabling blockchain-based digital tokens with asset-specific attributes |
US12019642B2 (en) | 2022-11-11 | 2024-06-25 | Microsoft Technology Licensing, Llc | Distributed query technique to efficiently retrieve and merge data from multiple shards |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005141280A (ja) * | 2003-11-04 | 2005-06-02 | Kureo:Kk | データベース移行装置及びそのプログラム |
WO2019152750A1 (en) * | 2018-01-31 | 2019-08-08 | Salesforce.Com.Inc. | Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10169439B2 (en) * | 2015-06-19 | 2019-01-01 | Sap Se | Multi-source asynchronous table replication |
US11042560B2 (en) * | 2016-06-19 | 2021-06-22 | data. world, Inc. | Extended computerized query language syntax for analyzing multiple tabular data arrangements in data-driven collaborative projects |
US10621233B2 (en) * | 2016-11-09 | 2020-04-14 | Cognitive Scale, Inc. | Cognitive session graphs including blockchains |
US10868865B2 (en) * | 2017-11-20 | 2020-12-15 | Moshe Shadmon | System and apparatus to manage data using a peer-to-peer network and the blockchain |
US10831764B2 (en) * | 2017-12-02 | 2020-11-10 | International Business Machines Corporation | Query processing and access control in a blockchain network |
US11243945B2 (en) * | 2017-12-11 | 2022-02-08 | International Business Machines Corporation | Distributed database having blockchain attributes |
US11257073B2 (en) * | 2018-01-31 | 2022-02-22 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing machine learning models for smart contracts using distributed ledger technologies in a cloud based computing environment |
US20190236606A1 (en) * | 2018-01-31 | 2019-08-01 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a virtual chain model for distributed ledger technologies in a cloud based computing environment |
CN108616578A (zh) * | 2018-04-09 | 2018-10-02 | 上海点融信息科技有限责任公司 | 跨区块链平台的业务处理方法、设备及计算机可读存储介质 |
CN108563796A (zh) * | 2018-05-04 | 2018-09-21 | 蔷薇信息技术有限公司 | 区块链的数据压缩处理方法、装置及电子设备 |
CN109614823B (zh) * | 2018-10-26 | 2022-05-13 | 蚂蚁双链科技(上海)有限公司 | 一种数据的处理方法、装置及设备 |
CN109492053B (zh) * | 2018-11-08 | 2023-07-18 | 北京百度网讯科技有限公司 | 用于访问数据的方法和装置 |
-
2019
- 2019-08-19 US US16/544,538 patent/US10726002B1/en active Active
-
2020
- 2020-06-11 US US16/899,400 patent/US11657039B2/en active Active
- 2020-08-19 CA CA3125065A patent/CA3125065C/en active Active
- 2020-08-19 WO PCT/CA2020/051131 patent/WO2021030910A1/en unknown
- 2020-08-19 MX MX2021009969A patent/MX2021009969A/es unknown
- 2020-08-19 EP EP20855133.3A patent/EP3884397A4/en active Pending
- 2020-08-19 CN CN202080015222.4A patent/CN113454619A/zh active Pending
- 2020-08-19 KR KR1020227004860A patent/KR102579802B1/ko active IP Right Grant
- 2020-08-19 JP JP2021549147A patent/JP7500589B2/ja active Active
- 2020-08-19 KR KR1020217026407A patent/KR102364877B1/ko active IP Right Grant
- 2020-08-19 SG SG11202106858TA patent/SG11202106858TA/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005141280A (ja) * | 2003-11-04 | 2005-06-02 | Kureo:Kk | データベース移行装置及びそのプログラム |
WO2019152750A1 (en) * | 2018-01-31 | 2019-08-08 | Salesforce.Com.Inc. | Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment |
Also Published As
Publication number | Publication date |
---|---|
KR102579802B1 (ko) | 2023-09-19 |
KR20220025243A (ko) | 2022-03-03 |
KR102364877B1 (ko) | 2022-02-17 |
EP3884397A4 (en) | 2022-01-19 |
JP7500589B2 (ja) | 2024-06-17 |
CA3125065C (en) | 2023-11-28 |
US11657039B2 (en) | 2023-05-23 |
MX2021009969A (es) | 2021-09-21 |
WO2021030910A1 (en) | 2021-02-25 |
CN113454619A (zh) | 2021-09-28 |
EP3884397A1 (en) | 2021-09-29 |
US20210056095A1 (en) | 2021-02-25 |
KR20210146890A (ko) | 2021-12-06 |
US10726002B1 (en) | 2020-07-28 |
SG11202106858TA (en) | 2021-07-29 |
CA3125065A1 (en) | 2021-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7500589B2 (ja) | 分散型台帳技術(dlt)を使用したリレーショナルデータの管理と編成 | |
US11824970B2 (en) | Systems, methods, and apparatuses for implementing user access controls in a metadata driven blockchain operating via distributed ledger technology (DLT) using granular access objects and ALFA/XACML visibility rules | |
US11899817B2 (en) | Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information | |
US11764950B2 (en) | System or method to implement right to be forgotten on metadata driven blockchain using shared secrets and consensus on read | |
US11811769B2 (en) | Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger | |
US11824864B2 (en) | Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT) | |
US11743137B2 (en) | Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT) | |
US11886421B2 (en) | Systems, methods, and apparatuses for distributing a metadata driven application to customers and non-customers of a host organization using distributed ledger technology (DLT) | |
US11803537B2 (en) | Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT) | |
US11783024B2 (en) | Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and IPFS integration | |
US11169985B2 (en) | System and method for supporting SQL-based rich queries in hyperledger fabric blockchains | |
US11917066B1 (en) | System for interacting objects as tokens on a blockchain using a class-based language | |
EP4071646A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
US20230097203A1 (en) | System and method for generating blockchain token support from a set of declarations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210819 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210819 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220921 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221011 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20230111 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230131 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20230418 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240605 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7500589 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |