リッチ履歴データベースの作成
このトピックでは、Oracle Database接続の指定およびリッチ履歴データ・データベースを作成するチャネルの選択に役立つ情報を示します。このデータベースを使用して、レジャーのアクティビティの分析レポートおよびビジュアライゼーションを作成します。
リッチ履歴データベースとは
リッチ履歴データベースは、Oracle Blockchain Platform外部のもので、選択されたチャネルのブロックチェーン・レジャーのトランザクションに関するデータが格納されます。このデータベースを使用して、元帳のアクティビティについて分析レポートおよびビジュアライゼーションを作成します。
たとえば、リッチ履歴データベースを使用すると、ある程度の期間の期間にわたる銀行のすべての顧客の平均残高や、卸売業から小売業者への商品の出荷にかかった時間を知るために分析を作成できます。
内部ではOracle Blockchain PlatformはHyperledger Fabric履歴データベースを使用してレジャーの管理を行い、コンソールでレジャーを管理したりレジャーのトランザクション情報を表示できます。この履歴データベースにアクセスできるのはチェーンコードのみです。また、Hyperledger Fabric履歴データベースを分析問合せのデータ・ソースとして公開することはできません。リッチ履歴データベースでは、Oracle Databaseの外部コピーが使用され、チャネルでコミットされるすべてのトランザクションに関する詳細情報が多く含まれています。このレベルのデータ収集により、リッチ履歴データベースは、分析用の優れたデータ・ソースとなります。リッチ履歴データベースにより収集されるデータの詳細は、「リッチ履歴データベースの表および列」をご覧ください。
You can only use a database such as Oracle Autonomous AI Lakehouse or Oracle Base Database Service with Oracle Cloud Infrastructure to create your rich history database. Oracle Blockchain Platformコンソールを使用して、データベースへのアクセスと書込みを行うための接続文字列および資格証明を指定します。指定する資格証明はデータベースの資格証明であり、Oracle Blockchain Platformではこれらを管理しません。接続を作成した後、リッチ履歴データベースに格納するレジャー・データが含まれるチャネルを選択します。「リッチ履歴データベースの有効化および構成」を参照してください。
標準表またはブロックチェーン表を使用して、リッチ履歴データベースを格納できます。ブロックチェーン表は改ざん防止された追加専用の表で、セキュアなレジャーとして他の表とのトランザクションおよび問合せにも使用できます。
Oracle Analytics CloudやOracle Data Visualization Cloud Serviceなどの任意のアナリティクス・ツールを使用して、リッチ履歴データベースにアクセスし、アナリティクス・レポートまたはデータ・ビジュアライゼーションを作成できます。
Oracle Base Database Service接続文字列の作成
You must collect information from the Oracle Base Database Service deployed on Oracle Cloud Infrastructure to build the connection string required by the rich history database. また、ポート1521を使用してデータベースへのアクセスを有効化する必要もあります。
Oracle Base Database Service情報の検索および記録
Oracle Base Database Serviceへの接続を作成するために必要な情報は、Oracle Cloud Infrastructureコンソールで入手できます。
- Infrastructureコンソールから、ナビゲーション・メニューから「データベース」を選択します。
- 接続するデータベースを探して、パブリックIPアドレスを記録します。
- 接続先のデータベースの名前を選択し、次のフィールドに値を記録します。
- 一意のデータベース名
- ホスト・ドメイン名
- ポート
- このデータベースから読取り権限を持つデータベース・ユーザーのユーザー名とパスワード(たとえば、ユーザーSYSTEM)を検索し、それらをノートにとります。
ポート1521経由のデータベース・アクセスの有効化
リッチ履歴インスタンスがポート1521を介してデータベースにアクセスできるイングレス・ルールを追加します。
- Oracle Cloud Infrastructureホームページで、ナビゲーション・アイコンを選択し、「データベース」で「DBシステム」を選択します。
- 接続先のデータベースを選択します。
- 「Virtual Cloud Network」リンクを選択します。
- 該当するサブネットに移動し、「セキュリティ・リスト」の下の「<ターゲット・データベース>のデフォルト・セキュリティ・リスト」を選択します。
「セキュリティ・リスト」ページが表示されます。
- 「すべてのルールの編集」を選択します。
- 次の設定を使用して、パブリック・インターネットからの受信トラフィックが、次の設定でこのデータベース・ノードのポート1521に到達できるようにするイングレス・ルールを追加:
-
ソースCIDR: 0.0.0.0/0
- IPプロトコル: TCP
- ソース・ポート範囲: すべて
- 宛先ポート範囲: 1521
- 許可: 次のポートに対するTCPトラフィック: 1521
-
接続文字の構築
Oracle Databaseへのアクセスを有効にした後、収集した情報を使用して、リッチ履歴の構成ダイアログ・ボックスで接続文字列をビルドします
<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 AI Lakehouseが使用されている場合、データベース・ユーザーには次の権限が必要です:grant unlimited tablespace to <user>;データベース・ユーザーにまだこれらの権限がない場合は、システム・データベース管理者が付与する必要があります。これらの権限がない場合、Oracle Blockchain Platformは、データベースにレプリケートできますが、破損したデータベース・セッションが生じる状況からリカバリできません。これにより、リッチ履歴は長期間最新のトランザクションにキャッチアップできなくなります。Oracle Autonomous AI Lakehouseに対するこれらの権限がない場合、リッチ履歴データは保存されません。
リッチ履歴データベースの有効化と構成
コンソールを使用して、データベース接続情報を指定し、リッチ履歴データベースに書き込むチェーンコード・レジャー・データが含まれるチャネルを選択します。デフォルトでは、チャネルではリッチ履歴データベースにデータを書き込めません。
- 各ブロックチェーン・ネットワーク・メンバーは、独自のリッチ履歴データベースを構成します。
- Oracle Databaseを使用する必要があります。他のデータベース・タイプはサポートされません。
- リッチ履歴データベースに書き込む各チャネルには、1つ以上のピア・ノードが含まれている必要があります。
- 豊富な履歴情報の格納に使用するOracle Databaseインスタンスの接続および資格証明情報を入力します。
- リッチ履歴データベースに書き込むチェーンコード・データを含むチャネルで、リッチ履歴を有効にします。
リッチ履歴データベースへの接続の変更
リッチ履歴データベースの接続情報は変更できます。
リッチ履歴データベースにデータを書き込むチャネルの構成
チェーンコード・レジャー・データをリッチ履歴データベースに書き込むためにチャネルを有効にしたり、チャネルがリッチ履歴データベースにデータを書き込むことを停止できます。グローバル設定とは異なるリッチ履歴データベース構成を使用するように個々のチャネルを構成することもできます。
表がチャネルのデータベースに作成された後は、ユーザー名とパスワードまたは接続文字列を変更しないかぎり、「保存」をクリックした後も、チャネルのリッチ履歴構成を変更しても効果はありません。ユーザー名とパスワードを変更すると、表が同じデータベースに作成されます。接続文字列および資格証明を変更すると、別のデータベースが構成され、関連する次のトランザクションまたはレジャー変更後に表が作成されます。リッチ履歴データベースを標準表からブロックチェーン表に変更することはできません。また、資格証明または接続文字列も変更しないかぎり、保持時間を変更することはできません。
リッチ履歴へのアクセス制限
チャネル・ポリシーおよびアクセス制御リスト(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 |
| TXNNO | NUMBER |
| TXNID | VARCHAR2(128) |
| トランザクション・タイムスタンプ | TIMESTAMP |
| 送信者 | VARCHAR2(512) |
| 送信者組織 | VARCHAR2(512) |
| 送信者 | VARCHAR2(512) |
| チェーンコードタイプ | VARCHAR2(32) |
| 検証コード名 | VARCHAR2(32) |
| 推薦 | CLOB |
| 入力 | CLOB |
| イベント | CLOB |
| 応答ステータス | NUMBER(0) |
| レスポンス・ペイロード | VARCHAR2(1024) |
| RWSET | CLOB |
| ブロッククリエータ | VARCHAR2(512) |
| ブロッククリエイター | VARCHAR2(512) |
| ブロッククリエーター | VARCHAR2(512) |
| 構成ブロック番号 | NUMBER(0) |
| CONFIGBLOCKCREATORCN | VARCHAR2(512) |
| 構成ブロック作成組織 | VARCHAR2(512) |
| CONFIGBLOCKCREATOROU | VARCHAR2(512) |
ノート:
- 組織(ORG)および組織単位(OU)はアイデンティティ証明書によって制御され、これは複数の値に割り当てることができるということです。表の値のカンマ区切りリストとして取得されます。
- アイデンティティの場合、表には証明書の「サブジェクト」部分に関する情報のみが含まれ、「発行者」に関する情報は含まれません。
RWSET列には、エンドースメント中に実行されたすべてのチェーンコード(同じレジャー内)に対する操作が含まれます。そのため、通常はlsccの読取り操作と実際のチェーンコード・ネームスペース操作の両方が表示されます。