すべてのプロダクト
Search
ドキュメントセンター

Blockchain as a Service:ブロックチェーンデータをデータベースにエクスポートする

最終更新日:Jan 19, 2025

このトピックでは、ブロックチェーン内のデータを外部データベースにエクスポートする方法について説明します。サンプル SQL 文を使用して、ステージングテーブル「write_set」、ビジネステーブル「taskmgr」、およびステージングテーブルのレコードをビジネステーブルに転送するトリガーを作成できます。ブロックチェーン トランザクションが開始された後、ステージングテーブルのトランザクション write_set と、ビジネステーブルの最終情報をクエリできます。

前提条件

  1. クラウド サービス統合モジュール がブロックチェーン インスタンスにインストールされている。

  2. クラウド サービス統合サンプルコード がダウンロードされている。

  3. パブリックネットワークアクセスを持つデータベース インスタンスがある(例として RDS for MySQL、バージョン 5.6 以上)。

  4. ローカルに node v8(バージョン 8.17.0 以上)をインストールしている。

手順

  1. データベース インスタンスに接続し、関連するデータベースとテーブルを作成します。

    1. DMS コンソール に入り、データベース インスタンスにログインします。

    2. 上部 [メニューバー] の「SQL 操作」->「SQL ウィンドウ」から新しい SQL ウィンドウを開きます。

    3. SQL ファイル ./blockchain2db/taskmgr.sql を SQL ウィンドウにコピーして実行し、すべての SQL 文が正常に実行されることを確認します。

  2. サンプル トランザクションの開始 の手順 1 に従って、チャンネルにチェーンコードをインストールしてインスタンス化します。

  3. BaaS コンソールでクラウド サービス統合のデータベース トリガーを作成します。

    1. チャンネル taskmgr とスマートコントラクト taskmgr を選択します。

    2. Tx をイベント タイプとして選択します。

    3. データベース タイプとして MySQL を選択します(ここでは MySQL を例として使用していますが、他のタイプを選択することもできます)。

    4. データベース インスタンスのアドレス、ユーザー ID、パスワードを入力します。

    5. octopus をデータベース名として入力します。

    6. write_set をテーブル名として入力します。

  4. サンプル トランザクションの開始 の後続の手順に従って、チャンネルでトランザクションを生成します。

  5. データベース octopus のデータを確認できます。

    1. SELECT * FROM write_set を使用して、ステージングテーブルのトランザクションの write_set を確認します。write_set

    2. SELECT * FROM taskmgr を使用して、ビジネステーブルの承認タスクの詳細を確認します。taskmgr

サンプル トランザクションの開始

  1. チェーンコードのデプロイ を参照して、サンプル チェーンコード taskmgr をチャンネルにデプロイします。

  2. blockchain2sms ディレクトリに移動し、コメントに基づいて main.js のパラメーターを変更し、REST API アドレス、更新トークン、チャンネル名、およびスマートコントラクト名を入力します。詳細については、「REST API の使用」をご参照ください。

  3. npm install を実行して依存パッケージをインストールし、node main.js を実行してサンプル トランザクションを開始します。

正常に出力されたサンプル

Data pushed to blockchain with transaction 701c7006f26aed8457273a00bbfcc8cea4d75eac958996e07837036ea7e2fdac
{ id: '701c7006f26aed8457273a00bbfcc8cea4d75eac958996e07837036ea7e2fdac',
  status: '200',
  events:
   [ { type: 'Contract',
       platform: 'Fabric',
       instance_id: 'csi-e2ehmfqasth-bcw7tzao2dzeo',
       network: '',
       id: '',
       name: 'event-create-task',
       content: 'eyJuY...TAz' }
Data pushed to blockchain with transaction 60a06a189415db587b49cbf91b46467bce1ea16490b19f6dfc8d520aa31240bc
{ id: '60a06a189415db587b49cbf91b46467bce1ea16490b19f6dfc8d520aa31240bc',
  status: '200',
  events:
   [ { type: 'Contract',
       platform: 'Fabric',
       instance_id: 'csi-e2ehmfqasth-bcw7tzao2dzeo',
       network: '',
       id: '',
       name: 'event-task-finished',
       content: 'eyJuY...p7In0=' } ],
  data: 'eyJu...In0=' }
Data pushed to blockchain with transaction 7810e0496a1c91a16102736b00a6f26da0baa42874a907fff26bff1b7eb3bf27
{ id: '7810e0496a1c91a16102736b00a6f26da0baa42874a907fff26bff1b7eb3bf27',
  status: '200',
  events: [],
  data: 'eyJu...nIn0=' }