リッチ履歴データベースの作成
このトピックでは、リッチ履歴データベースを作成するOracleデータベース接続を指定し、チャネルを選択するのに役立つ情報を示します。このデータベースを使用して、レジャーのアクティビティの分析レポートを作成し、視覚化します。
リッチ履歴データベースとは
The rich history database is external to Oracle Blockchain Platform and contains data about the blockchain ledger’s transactions on the channels you select.このデータベースを使用して、レジャーの活動に関する分析レポートおよびビジュアライゼーションを作成します。
たとえば、リッチ履歴データベースを使用して、一定期間内のすべての顧客の平均残高を把握するための分析を作成したり、卸売業者から小売業者への商品の出荷に要した時間を作成できます。
内部的にOracle Blockchain Platformでは、Hyperledger Fabric履歴データベースを使用して、コンソールでレジャーを管理したり、レジャー・トランザクション情報を表示します。この履歴データベースにアクセスできるのはチェーンコードのみで、Hyperledger Fabric履歴データベースを分析問合せのデータ・ソースとして公開することはできません。リッチ履歴データベースでは外部Oracleデータベースを使用し、チャネルでコミットされた各トランザクションに関する詳細が数多く格納されます。このレベルのデータ収集により、リッチ履歴データベースは、分析用の優れたデータ・ソースになります。リッチ履歴データベースによって収集されるデータの詳細は、「リッチ履歴データベースの表および列」を参照してください。
リッチ履歴データベースを作成するには、Oracle Autonomous Data WarehouseやOracle Database Classic Cloud ServiceとOracle Cloud Infrastructureの組合せなどのOracleデータベースのみ使用できます。Oracle Blockchain Platformのコンソールを使用して、Oracleデータベースにアクセスして書き込む接続文字列と資格証明を指定します。指定する資格証明はデータベースの資格証明で、Oracle Blockchain Platformでは管理されないことに注意してください。接続を作成した後、リッチ履歴データベースに追加するレジャー・データが含まれるチャネルを選択します。リッチ履歴データベースの有効化および構成を参照してください。
標準表またはブロックチェーン表を使用して、リッチ履歴データベースを格納できます。ブロックチェーン表は改ざん防止された追加専用の表で、セキュアなレジャーとして他の表とのトランザクションおよび問合せにも使用できます。詳細は、Oracle Blockchain表に関する項を参照してください。
Oracle Analytics CloudやOracle Data Visualization Cloud Serviceなどの任意のアナリティクス・ツールを使用して、リッチ履歴データベースにアクセスし、アナリティクス・レポートまたはデータ・ビジュアライゼーションを作成できます。
Oracle Database Classic Cloud Service接続文字列の作成
Oracle Cloud InfrastructureにデプロイされたOracle Database Classic Cloud Serviceから情報を収集して、リッチ履歴データベースで必要な接続文字列を構築する必要があります。データベースへのアクセスは、ポート1521で有効にする必要もあります。
Oracle Database Classic Cloud Service情報の検索および記録
Oracle Database Classic Cloud Serviceへの接続を作成するために必要な情報は、Oracle Cloud Infrastructureコンソールで取得できます。
-
インフラストラクチャ・コンソールから左上隅にあるナビゲーション・メニューをクリックし、「データベース」をクリックします。
-
接続するデータベースを見つけて、パブリックIPアドレスを記録します。
-
接続先のデータベースの名前をクリックして、これらのフィールドの値を記録します:
-
一意のデータベース名
-
ホスト・ドメイン名
-
ポート
-
-
このデータベースからの読取り権限を持つデータベース・ユーザーのユーザー名およびパスワードを見つけて、ノートにとります。たとえば、ユーザーSYSTEMなどです。
ポート1521を使用したデータベース・アクセスの有効化
リッチ履歴データベースがポート1521を使用してデータベースにアクセスできるイングレス・ルールを追加します。
-
Oracle Cloud Infrastructureホームページでナビゲーション・アイコンをクリックし、「データベース」で「DBシステム」をクリックします。
-
接続するデータベースをクリックします。
-
「Virtual Cloud Network」リンクをクリックします。
-
適切なサブネットに移動し、「セキュリティ・リスト」で「<ターゲット・データベース>のデフォルト・セキュリティ・リスト」をクリックします。
「セキュリティ・リスト」ページが表示されます。
-
「すべてのルールの編集」をクリックします。
-
次の設定を使用してイングレス・ルールを追加し、パブリック・インターネットからの受信トラフィックがこのデータベース・ノードのポート1521に到達できるようにします:
-
ソースID: 0.0.0.0/0
-
IPプロトコル: TCP
-
ソース・ポート範囲: All
-
宛先ポート範囲: 1521
-
許可: ポートのTCPトラフィック: 1521
-
Build the Connection String
Oracleデータベースへのアクセスを有効にした後、収集した情報を使用して、リッチ履歴の構成ダイアログで接続文字列を構築します。
<publicIP>:<portNumber>/<database unique name>.<host domain name>という構文を使用して接続文字列を構築します。
たとえば、192.0.2.0:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.example.comです。
データベース・ユーザーが適切な権限を持っていることの確認
grant select on v_$session to <user>;
grant alter system to <user>;
また、リッチ履歴データベースでOracle Autonomous Data Warehouseが使用されている場合、データベース・ユーザーには次の権限が必要です:grant unlimited tablespace to <user>;
データベース・ユーザーにまだこれらの権限がない場合は、システム・データベース管理者が付与する必要があります。これらの権限がない場合、Oracle Blockchain Platformはデータベースにレプリケートできますが、破損したデータベース・セッションの原因となる状況からリカバリできないため、リッチ履歴が長時間最新のトランザクションに追い付くことができません。Oracle Autonomous Data Warehouseに対するこれらの権限がない場合、リッチ履歴データは保存されません。
リッチ履歴データベースの有効化と構成
コンソールを使用して、データベース接続情報を指定し、リッチ履歴データベースに書き込むチェーンコード・元帳データがあるチャネルを選択します。デフォルトでは、チャネルでリッチ履歴データベースにデータを書込みできません。
次の点に注意してください。
-
各ブロックチェーン・ネットワーク・メンバーは、それぞれリッチ履歴データベースを構成します。
-
Oracleデータベースを使用する必要があります。その他のデータベース・タイプはサポートされていません。
-
リッチ履歴データベースに書き込む各チャネルには、1つ以上のピア・ノードが含まれている必要があります。
- リッチ履歴情報の格納に使用するOracleデータベースの接続情報および資格証明情報を入力します。
- リッチ履歴データベースに書き込むチェーンコード・データを含むチャネルのリッチ履歴を有効にします。
リッチ履歴データベースへの接続の変更
リッチ履歴データベースの接続情報を変更できます。
リッチ履歴データベースにデータを書き込むチャネルの構成
チェーンコード・レジャー・データをリッチ履歴データベースに書き込むためにチャネルを有効にしたり、チャネルによるリッチ履歴データベースへのデータの書込みを停止できます。グローバル設定とは異なるリッチ履歴データベース構成を使用するように個々のチャネルを構成することもできます。
表がチャネルのデータベースに作成された後は、ユーザー名とパスワードまたは接続文字列を変更しないかぎり、「保存」をクリックした後も、チャネルのリッチ履歴構成を変更しても効果はありません。ユーザー名とパスワードを変更すると、表が同じデータベースに作成されます。接続文字列および資格証明を変更すると、別のデータベースが構成され、関連する次のトランザクションまたはレジャーの変更後に表が作成されます。リッチ履歴データベースを標準表からブロックチェーン表に変更することはできません。また、資格証明または接続文字列も変更しないかぎり、保持時間を変更することはできません。
リッチ履歴へのアクセス制限
チャネル・ポリシーおよびアクセス制御リスト(ACL)を使用して、リッチ履歴データベースを構成し、リッチ履歴ステータスまたは構成情報を取得できる組織を制限できます。
リッチ履歴データベースの表および列
リッチ履歴データベースには、履歴、状態および最新の高さという3つの表がチャネルごとにあります。チェーンコードのレジャー・トランザクションに関する分析を作成する場合、履歴表および状態表を問い合せます。リッチ履歴を有効にするときにトランザクション詳細を選択することを選択した場合は、トランザクション詳細を含む追加の表が作成されます。
「履歴」表
<instanceName><channelName>_hist表には、レジャー履歴が格納されます。この表は、チェーンコードID、トランザクションが有効であった場合に使用されたキー、キーに割り当てられている値などを示しています。
valueおよびvalueJson列は、相互排他的な方法で使用されます。つまり、キー値が有効なjsonの場合、値はvalueJson列に設定されます。そうでない場合は、値はvalue列に設定されます。valueJson列はデータベースでJSON列として設定されます。つまり、ユーザーは通常のOracle JSON固有の拡張機能を使用してその列を問合せできます。
構成されている場合、プライベート・データもこの表に格納されます。プライベート・データの場合は、チェーンコードIDの書式<chaincodeName>$$<collectionName>が使用されます。
列 | データ型 |
---|---|
chaincodeId | VARCHAR2 (256) |
鍵 | VARCHAR2 (1024) |
txnIsValid | NUMBER (1) |
値 | VARCHAR2 (4000) |
valueJson | CLOB |
blockNo | NULLでない数値 |
txnNo番号 | NOT NULL |
txnId | VARCHAR2 (128) |
txnTimestamp | TIMESTAMP |
txnIsDelete | NUMBER (1) |
状態表
<instanceName><channelName>_state表には、状態データベースからレプリケートされたデータ値が格納されます。レジャーの状態に関する分析を作成する場合、状態表に問合せを行います。
valueおよびvalueJson列は、相互排他的な方法で使用されます。つまり、キー値が有効なjsonの場合、値はvalueJson列に設定されます。そうでない場合は、値はvalue列に設定されます。valueJson列はデータベースでJSON列として設定されます。つまり、ユーザーは通常のOracle JSON固有の拡張機能を使用してその列を問合せできます。
列 | データ型 |
---|---|
chaincodeId | VARCHAR2 (256) |
キー | VARCHAR2 (1024) |
値 | VARCHAR2 (4000) |
valueJson | CLOB |
blockNo | NUMBER |
txnNo | NUMBER |
最新の高さの表
<instanceName><channelName>_last表は、Oracle Blockchain Platformで内部を使用して、リッチ履歴データベースに記録されたブロックの高さを追跡します。これは、リッチ履歴データベースが最新か、すべてのチェーンコード・トランザクションがリッチ履歴データベースに記録されたかを判断します。このデータベースに分析を問い合せることはできません。
トランザクション詳細表
<instanceName><channelName>_more表には、コミット済トランザクションに関連する属性が含まれます。リッチ履歴データベースを有効にする場合、この表に記録する属性を選択できます。トランザクション詳細表では、エンドーサ・トランザクションに関する情報のみが取得され、構成トランザクションやその他の種類のHyperledger Fabricトランザクションに関する情報は取得されません。
列 | データ型 |
---|---|
チェーンコードID | VARCHAR2 (256) |
ブロック番号 | NUMBER |
ログイン | NUMBER |
TXNID | VARCHAR2(128) |
トランザクションタイムスタンプ | TIMESTAMP |
送信者CN | VARCHAR2(512) |
発行者組織 | VARCHAR2(512) |
発行者 | VARCHAR2(512) |
チェーンコードタイプ | VARCHAR2(32) |
検証コード名 | VARCHAR2(32) |
承認 | CLOB |
入力 | CLOB |
イベント | CLOB |
応答ステータス | NUMBER(0) |
RESPONSEPAYLOAD | VARCHAR2(1024) |
ルセット | CLOB |
BLOCKCREATORCN | VARCHAR2(512) |
ブロック作成組織 | VARCHAR2(512) |
ブロッククリエイター | VARCHAR2(512) |
構成ブロック番号 | NUMBER(0) |
構成BLOCKCREATORCN | VARCHAR2(512) |
構成ブロック作成組織 | VARCHAR2(512) |
構成ブロック作成 | VARCHAR2(512) |
ノート:
- 組織(ORG)および組織単位(OU)はアイデンティティ証明書によって制御され、これは複数の値に割り当てることができるということです。表の値のカンマ区切りリストとして取得されます。
- アイデンティティの場合、表には証明書の「サブジェクト」部分に関する情報のみが含まれ、「発行者」に関する情報は含まれません。
RWSET
列には、エンドースメント中に実行されたすべてのチェーンコード(同じレジャー内)に対する操作が含まれます。そのため、通常はlsccの読取り操作と実際のチェーンコード・ネームスペース操作の両方が表示されます。