全部產品
Search
文件中心

:鏈上資料匯出到資料庫

更新時間:Jul 06, 2024

本樣本介紹如何將區塊鏈上的資料匯出至資料庫中。您可使用樣本SQL在資料庫中建立中間表write_set,業務表taskmgr,以及trigger(負責將中間表的記錄轉換並寫入業務表)。當區塊鏈上發生交易時,您從中間表中可查詢鏈上原始的交易寫入集合,從業務表中查詢最終資訊。

前置條件

  1. 您需要先在區塊鏈執行個體中安裝雲端服務整合

  2. 下載雲端服務整合範例程式碼

  3. 擁有一個公網可串連的資料庫執行個體(本樣本以 RDS for MySQL 為例, 版本 >= 5.6)。

  4. 本地安裝 nodev8 環境(>=8.17.0)。

操作步驟

  1. 串連到資料庫執行個體,建立相關的庫和表:

    1. 進入 DMS 控制台,登入資料庫執行個體;

    2. 在上方功能表列選擇 “SQL 視窗 -> SQL 視窗” 開啟一個新的 SQL 視窗。

    3. 將 SQL 檔案 ./blockchain2db/taskmgr.sql 中的內容複寫到 SQL 視窗中執行,確保語句全部執行成功;

  2. 按照發起樣本交易的步驟1,在通道上安裝並執行個體化鏈碼 taskmgr

  3. 在控制台建立雲端服務整合資料庫觸發器:

    1. 選擇通道 taskmgr 及鏈碼 taskmgr

    2. 配置觸發器的事件類型為 Tx

    3. 資料庫類型選擇 MySQL (這裡以 MySQL 為例,可以根據實際需要選擇不同的資料庫類型);

    4. 根據協助,依次填寫資料庫執行個體的地址、使用者名稱和密碼;

    5. 資料庫填寫 octopus

    6. 表名填寫 write_set

  4. 按照發起樣本交易的後續步驟,在通道上發起樣本交易。

  5. 之後您可以在資料庫 octopus 中查看匯出的資料:

    1. 查看中間表中的原始交易寫入集合: SELECT * FROM write_setwrite_set

    2. 查看業務表中的審批任務詳情: SELECT * FROM taskmgrtaskmgr

發起樣本交易

  1. 按照文檔部署鏈碼將樣本鏈碼 taskmgr 部署到通道中。

  2. 進入 blockchain2sms 目錄,按照注釋修改 main.js 中的配置參數,填入REST API地址、Refresh Token、通道名和智能合約名稱。更多資訊請參考文檔使用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=' }