リッチ履歴データベースの作成
このトピックでは、Oracleデータベース接続の指定およびリッチ履歴データベースを作成するチャネルの選択に役立つ情報を示します。このデータベースを使用して、レジャーのアクティビティのアナリティクス・レポートおよびビジュアライゼーションを作成します。
リッチ履歴データベースとは
リッチ履歴データベースは、Oracle Blockchain Platform外部のもので、選択したチャネル上のブロックチェーン・レジャーのトランザクションに関するデータが含まれています。このデータベースを使用して、レジャーの活動に関するアナリティクス・レポートおよびビジュアライゼーションを作成します。
たとえば、リッチ履歴データベースを使用して、一定の期間内のすべてのカスタマの銀行の平均残高を確認したり、卸売業者から小売業者への商品の出荷にかかった時間を確認したりするアナリティクスを作成できます。
内部では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 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システム」をクリックします。
-
接続するデータベースをクリックします。
-
「仮想クラウド・ネットワーク」リンクをクリックします。
-
適切なサブネットに移動し、「セキュリティ・リスト」の下の「<ターゲット・データベース>のデフォルト・セキュリティ・リスト」をクリックします。
「セキュリティ・リスト」ページが表示されます。
-
「すべてのルールの編集」をクリックします。
-
次の設定を使用してイングレス・ルールを追加し、パブリック・インターネットからの受信トラフィックがこのデータベース・ノードのポート1521に到達できるようにします:
-
ソースCIDR: 0.0.0.0/0
-
IPプロトコル: TCP
-
ソース・ポート範囲: すべて
-
宛先ポート範囲: 1521
-
次のポートでTCPトラフィックを許可: 1521
-
接続文字列の構築
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) |
key | VARCHAR2 (1024) |
txnIsValid | NUMBER (1) |
value | VARCHAR2 (4000) |
valueJson | CLOB |
blockNo | NUMBER NOT NULL |
txnNo NUMBER | 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) |
key | VARCHAR2 (1024) |
value | VARCHAR2 (4000) |
valueJson | CLOB |
blockNo | NUMBER |
txnNo | NUMBER |
最新の高さの表
<instanceName><channelName>_last表は、Oracle Blockchain Platformで内部的に使用され、リッチ履歴データベースに記録されたブロックの高さを追跡します。リッチ履歴データベースが最新か、すべてのチェーンコード・トランザクションがリッチ履歴データベースに記録されたかを判断するものです。アナリティクスのためにこのデータベースを問い合せることはできません。
トランザクション詳細表
<instanceName><channelName>_more表には、コミット済トランザクションに関連する属性が含まれます。リッチ履歴データベースを有効にする場合、この表に記録する属性を選択できます。トランザクション詳細表では、エンドーサ・トランザクションに関する情報のみが取得され、構成トランザクションやその他の種類のHyperledger Fabricトランザクションに関する情報は取得されません。
列 | データ型 |
---|---|
CHAINCODEID | VARCHAR2 (256) |
BLOCKNO | NUMBER |
TXNNO | NUMBER |
TXNID | VARCHAR2(128) |
TXNTIMESTAMP | TIMESTAMP |
SUBMITTERCN | VARCHAR2(512) |
SUBMITTERORG | VARCHAR2(512) |
SUBMITTEROU | VARCHAR2(512) |
CHAINCODETYPE | VARCHAR2(32) |
VALIDATIONCODENAME | VARCHAR2(32) |
ENDORSEMENTS | CLOB |
INPUTS | CLOB |
EVENTS | CLOB |
RESPONSESTATUS | NUMBER(0) |
RESPONSEPAYLOAD | VARCHAR2(1024) |
RWSET | CLOB |
BLOCKCREATORCN | VARCHAR2(512) |
BLOCKCREATORORG | VARCHAR2(512) |
BLOCKCREATOROU | VARCHAR2(512) |
CONFIGBLOCKNUMBER | NUMBER(0) |
CONFIGBLOCKCREATORCN | VARCHAR2(512) |
CONFIGBLOCKCREATORORG | VARCHAR2(512) |
CONFIGBLOCKCREATOROU | VARCHAR2(512) |
ノート:
- 組織(ORG)および組織単位(OU)はアイデンティティ証明書によって制御され、これは複数の値に割り当てることができるということです。表の値のカンマ区切りリストとして取得されます。
- アイデンティティの場合、表には証明書の「サブジェクト」部分に関する情報のみが含まれ、「発行者」に関する情報は含まれません。
RWSET
列には、エンドースメント中に実行されたすべてのチェーンコード(同じレジャー内)に対する操作が含まれます。そのため、通常はlsccの読取り操作と実際のチェーンコード・ネームスペース操作の両方が表示されます。