このトピックでは、ブロックチェーン内のデータを外部データベースにエクスポートする方法について説明します。サンプル SQL 文を使用して、ステージングテーブル「write_set」、ビジネステーブル「taskmgr」、およびステージングテーブルのレコードをビジネステーブルに転送するトリガーを作成できます。ブロックチェーン トランザクションが開始された後、ステージングテーブルのトランザクション write_set と、ビジネステーブルの最終情報をクエリできます。
前提条件
クラウド サービス統合モジュール がブロックチェーン インスタンスにインストールされている。
クラウド サービス統合サンプルコード がダウンロードされている。
パブリックネットワークアクセスを持つデータベース インスタンスがある(例として RDS for MySQL、バージョン 5.6 以上)。
ローカルに node v8(バージョン 8.17.0 以上)をインストールしている。
手順
データベース インスタンスに接続し、関連するデータベースとテーブルを作成します。
DMS コンソール に入り、データベース インスタンスにログインします。
上部 [メニューバー] の「SQL 操作」->「SQL ウィンドウ」から新しい SQL ウィンドウを開きます。
SQL ファイル
./blockchain2db/taskmgr.sql
を SQL ウィンドウにコピーして実行し、すべての SQL 文が正常に実行されることを確認します。
サンプル トランザクションの開始 の手順 1 に従って、チャンネルにチェーンコードをインストールしてインスタンス化します。
BaaS コンソールでクラウド サービス統合のデータベース トリガーを作成します。
チャンネル
taskmgr
とスマートコントラクトtaskmgr
を選択します。Tx
をイベント タイプとして選択します。データベース タイプとして MySQL を選択します(ここでは MySQL を例として使用していますが、他のタイプを選択することもできます)。
データベース インスタンスのアドレス、ユーザー ID、パスワードを入力します。
octopus
をデータベース名として入力します。write_set
をテーブル名として入力します。
サンプル トランザクションの開始 の後続の手順に従って、チャンネルでトランザクションを生成します。
データベース
octopus
のデータを確認できます。SELECT * FROM write_set
を使用して、ステージングテーブルのトランザクションの write_set を確認します。SELECT * FROM taskmgr
を使用して、ビジネステーブルの承認タスクの詳細を確認します。
サンプル トランザクションの開始
チェーンコードのデプロイ を参照して、サンプル チェーンコード taskmgr をチャンネルにデプロイします。
blockchain2sms
ディレクトリに移動し、コメントに基づいて main.js のパラメーターを変更し、REST API アドレス、更新トークン、チャンネル名、およびスマートコントラクト名を入力します。詳細については、「REST API の使用」をご参照ください。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=' }