リッチ履歴データベースの作成

このトピックでは、Oracleデータベース接続の指定およびリッチ履歴データベースを作成するチャネルの選択に役立つ情報を示します。このデータベースを使用して、台帳のアクティビティのアナリティクス・レポートおよびビジュアライゼーションを作成します。

リッチ履歴データベースとは

リッチ履歴データベースは、Oracle Blockchain Platform外部のもので、選択したチャネル上のブロックチェーン台帳のトランザクションに関するデータが含まれています。このデータベースを使用して、台帳の活動に関するアナリティクス・レポートおよびビジュアライゼーションを作成します。

たとえば、リッチ履歴データベースを使用して、一定の期間内のすべてのカスタマの銀行の平均残高を確認したり、卸売業者から小売業者への商品の出荷にかかった時間を確認したりするアナリティクスを作成できます。

内部ではOracle Blockchain PlatformはHyperledger Fabric履歴データベースを使用して台帳を管理し、コンソールで台帳トランザクション情報を表示します。この履歴データベースにアクセスできるのはチェーンコードのみで、分析的な問合せのデータ・ソースとしてHyperledger Fabric履歴データベースを公開することはできません。リッチ履歴データベースでは、外部Oracleデータベースが使用され、チャネルでコミットされるすべてのトランザクションに関する詳細が多く含まれています。このレベルのデータ・コレクションでは、リッチ履歴データベースがアナリティクス用の優れたデータ・ソースになります。リッチ履歴データベースによって収集されるデータの詳細は、「リッチ履歴データベースの表と列」を参照してください。

リッチ履歴データベースを作成するには、Oracle Autonomous Data WarehouseOracle Database Cloud ServiceOracle Cloud Infrastructureの組合せなどのOracleデータベースのみ使用できます。Oracle Blockchain Platformのコンソールを使用して、Oracleデータベースへのアクセスと書込みを行うための接続文字列と資格証明を指定します。指定する資格証明はデータベースの資格証明で、Oracle Blockchain Platformでは管理されないことに注意してください。接続を作成した後、リッチ履歴データベースに含める台帳データが含まれるチャネルを選択します。「リッチ履歴データベースの有効化と構成」を参照してください。

Oracle Analytics CloudOracle Data Visualization Cloud Serviceなどの任意のアナリティクス・ツールを使用して、リッチ履歴データベースにアクセスし、アナリティクス・レポートまたはデータ・ビジュアライゼーションを作成できます。

Oracle Database Cloud Service接続文字列の作成

リッチ履歴データベースで必要な接続文字列を構築するには、Oracle Cloud InfrastructureにデプロイされたOracle Database Cloud Serviceから情報を収集する必要があります。また、ポート1521でデータベースへのアクセスを有効化する必要もあります。

Oracle Database Cloud Service情報の検索と記録

Oracle Database Cloud Serviceへの接続を作成するために必要な情報は、Oracle Cloud Infrastructureコンソールで取得できます。

  1. インフラストラクチャ・コンソールから左上隅にあるナビゲーション・メニューをクリックし、「データベース」をクリックします。

  2. 接続するデータベースを見つけ、パブリックIPアドレスを記録します。

  3. 接続先のデータベースの名前をクリックし、次のフィールドの値を記録します:

    • 一意のデータベース名

    • ホスト・ドメイン名

    • ポート

  4. このデータベースからの読取り権限を持つデータベース・ユーザーのユーザー名およびパスワードを調べ、ノートにとります。たとえば、ユーザーSYSTEMなどです。

ポート1521によるデータベース・アクセスの有効化

リッチ履歴データベースがポート1521を介してデータベースにアクセスできるようにするイングレス・ルールを追加します。

  1. Oracle Cloud Infrastructureホームページで、ナビゲーション・アイコンをクリックし、「データベース」の下の「DBシステム」をクリックします。

  2. 接続するデータベースをクリックします。

  3. 「仮想クラウド・ネットワーク」リンクをクリックします。

  4. 適切なサブネットに移動し、「セキュリティ・リスト」の下の「<ターゲット・データベース>のデフォルト・セキュリティ・リスト」をクリックします。

    「セキュリティ・リスト」ページが表示されます。

  5. 「すべてのルールの編集」をクリックします。

  6. 次の設定を使用してイングレス・ルールを追加し、パブリック・インターネットからの受信トラフィックがこのデータベース・ノードのポート1521に到達できるようにします:

    • ソースCIDR: 0.0.0.0/0

    • IPプロトコル: TCP

    • ソース・ポート範囲: すべて

    • 宛先ポート範囲: 1521

    • 次のポートでTCPトラフィックを許可: 1521

接続文字列の構築

Oracleデータベースへのアクセスを有効にした後、収集した情報を使用して、リッチ履歴の構成ダイアログで接続文字列を構築します。

次のように接続文字列を作成します: <publicIP>:<portNumber>/<database unique name>.<host domain name>

たとえば、123.213.85.123:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.comです

リッチ履歴データベースの有効化と構成

コンソールを使用して、データベース接続情報を指定し、リッチ履歴データベースに書き込むチェーンコード台帳データがあるチャネルを選択します。デフォルトでは、チャネルでリッチ履歴データベースにデータを書き込むことはできません。

次の点に注意してください。

  • 各ブロックチェーン・ネットワーク・メンバーは、それぞれリッチ履歴データベースを構成します。

  • Oracleデータベースを使用する必要があります。他のデータベース・タイプはサポートされません。

  1. リッチ履歴情報の格納に使用するOracleデータベースの接続情報および資格証明情報を入力します。
    1. コンソールに移動してオプション・ボタンをクリックし、「リッチ履歴の構成」をクリックします。このボタンは、ノード、チャネルおよびチェーンコードへの移動に使用するタブを含むバーの上にあります。
      リッチ履歴の構成ダイアログが表示されます。
    2. Oracleデータベースへのアクセスに必要なユーザー名とパスワードを入力します。
    3. 接続文字列フィールドに、リッチ履歴データの格納に使用するデータベースの接続文字列を入力します。ここに入力する内容は、使用するOracleデータベースによって異なります。
      • Oracle Autonomous Data Warehouseを使用する場合は、<username>adw_highのように入力します。Oracle Autonomous Data Warehouseの接続情報を確認するには、資格証明ウォレットZIPファイルに移動して、TNSファイルを開きます。
      • Oracle Database Cloud ServiceOracle Cloud Infrastructureの組合せを使用する場合は、「Oracle Database Cloud Service接続文字列の作成」を参照してください。
      • 自律型でないOracleデータベース(資格証明ウォレットを使用しないデータベース)を使用し、sysユーザーを使用してデータベースに接続する場合は、?as=sys[dba|asm|oper]を接続文字列に追加する必要があります。たとえば、123.123.123.123:1521/example.oraclevcn.com?as=sysdbaです
    4. Oracle Cloudの自律型データベース・インスタンス(Oracle Autonomous Data WarehouseOracle Autonomous Transaction Processingなど)を使用する場合、ウォレット・パッケージ・ファイル・フィールドを使用して必要な資格証明ウォレットのZIPファイルをアップロードします。このファイルにはクライアント資格証明が含まれ、Oracle自律型データベースから生成されます。
    5. 「保存」をクリックします。
  2. リッチ履歴データベースに書き込むチェーンコード・データを含むチャネルで、リッチ履歴を有効にします。
    1. コンソールに移動し、チャネル・タブを選択します。
    2. リッチ履歴データベースに書き込むチェーンコード・データを含むチャネルを特定します。詳細オプション・ボタンをクリックして、「リッチ履歴の構成」を選択します。
      リッチ履歴の構成ダイアログが表示されます。
    3. リッチ履歴の有効化チェックボックスをクリックします。「保存」をクリックします。

リッチ履歴データベースへの接続の変更

リッチ履歴データベースの接続情報を変更できます。

  1. コンソールに移動してオプション・ボタンをクリックし、「リッチ履歴の構成」をクリックします。このボタンは、ノード、チャネルおよびチェーンコードへの移動に使用するタブを含むバーの上にあります。
  2. 必要に応じて、Oracleデータベースへのアクセスに必要なユーザー名とパスワードを更新します。
  3. 必要に応じて、接続文字列フィールドで、リッチ履歴データの格納に使用するデータベースの接続文字列を変更します。ここに入力する内容は、使用するOracleデータベースによって異なります。
    • Oracle Autonomous Data Warehouseを使用する場合は、<username>adw_highのように入力します。Oracle Autonomous Data Warehouseの接続情報を確認するには、資格証明ウォレットZIPファイルに移動して、TNSファイルを開きます。
    • Oracle Database Cloud ServiceOracle Cloud Infrastructureの組合せを使用する場合は、「Oracle Database Cloud Service接続文字列の作成」を参照してください。
    • 自律型でないOracleデータベース(資格証明ウォレットを使用しないデータベース)を使用し、sysユーザーを使用してデータベースに接続する場合は、?as=sys[dba|asm|oper]を接続文字列に追加する必要があります。たとえば、123.123.123.123:1521/example.oraclevcn.com?as=sysdbaです
  4. Oracle Cloudの自律型データベース・インスタンス(Oracle Autonomous Data WarehouseOracle Autonomous Transaction Processingなど)を使用する場合、ウォレット・パッケージ・ファイル・フィールドを使用して必要な資格証明ウォレット・ファイルをアップロードまたは再アップロードします。このファイルにはクライアント資格証明が含まれ、Oracle自律型データベースから生成されます。
  5. 「保存」をクリックします。

リッチ履歴データベースにデータを書き込むチャネルの選択

チェーンコード台帳データをリッチ履歴データベースに書き込むためにチャネルを追加したり、チャネルがリッチ履歴データベースにデータを書き込むことを停止できます。

リッチ履歴データベースに書き込むチャネルを選択する前に、リッチ履歴のデータベースに接続するための情報を指定する必要があります。「リッチ履歴データベースの有効化と構成」を参照してください。
  1. コンソールに移動し、チャネル・タブを選択します。
  2. チャネルを追加または削除するには、アクセスを変更するチャネルを特定します。詳細オプション・ボタンをクリックして、「リッチ履歴の構成」を選択します。
    リッチ履歴の構成ダイアログが表示されます。
  3. チャネルを追加するには、リッチ履歴の有効化チェックボックスをクリックします。チャネルを削除するには、リッチ履歴の有効化チェックボックスをクリアします。
  4. 「保存」をクリックします。

リッチ履歴データベースの表と列

リッチ履歴データベースには、チャネルごとに履歴、状態および最新の高さの3つの表が含まれています。チェーンコードの台帳トランザクションに関するアナリティクスを作成するときは、履歴表および状態表を問い合せます。

履歴表

<instanceName><channelName>_hist表には、台帳履歴が含まれています。この表のデータは、チェーンコードID、使用されているキー、トランザクションが有効であったかどうか、キーに割り当てられている値などを示します。

valueおよびvalueJson列は、相互に排他的に使用されることに注意してください。キー値が有効なjsonの場合、その値はvalueJson列に設定されます。それ以外の場合は、値はvalue列に設定されます。valueJson列はデータベースでJSON列として設定されます。つまり、ユーザーが通常のOracle JSON固有の拡張機能を使用してその列を問い合せることができるということです。

データ型
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で内部的に使用され、リッチ履歴データベースに記録されたブロックの高さを追跡します。リッチ履歴データベースが最新か、すべてのチェーンコード・トランザクションがリッチ履歴データベースに記録されたかを判断するものです。アナリティクスのためにこのデータベースを問い合せることはできません。