本樣本介紹如何將區塊鏈上的資料匯出至資料庫中。您可使用樣本SQL在資料庫中建立中間表write_set,業務表taskmgr,以及trigger(負責將中間表的記錄轉換並寫入業務表)。當區塊鏈上發生交易時,您從中間表中可查詢鏈上原始的交易寫入集合,從業務表中查詢最終資訊。
前置條件
您需要先在區塊鏈執行個體中安裝雲端服務整合。
擁有一個公網可串連的資料庫執行個體(本樣本以 RDS for MySQL 為例, 版本 >= 5.6)。
本地安裝 nodev8 環境(>=8.17.0)。
操作步驟
串連到資料庫執行個體,建立相關的庫和表:
進入 DMS 控制台,登入資料庫執行個體;
在上方功能表列選擇 “SQL 視窗 -> SQL 視窗” 開啟一個新的 SQL 視窗。
將 SQL 檔案
./blockchain2db/taskmgr.sql中的內容複寫到 SQL 視窗中執行,確保語句全部執行成功;
按照發起樣本交易的步驟1,在通道上安裝並執行個體化鏈碼
taskmgr。在控制台建立雲端服務整合資料庫觸發器:
選擇通道
taskmgr及鏈碼taskmgr;配置觸發器的事件類型為
Tx;資料庫類型選擇
MySQL(這裡以 MySQL 為例,可以根據實際需要選擇不同的資料庫類型);根據協助,依次填寫資料庫執行個體的地址、使用者名稱和密碼;
資料庫填寫
octopus;表名填寫
write_set。
按照發起樣本交易的後續步驟,在通道上發起樣本交易。
之後您可以在資料庫
octopus中查看匯出的資料:查看中間表中的原始交易寫入集合:
SELECT * FROM write_set
查看業務表中的審批任務詳情:
SELECT * FROM taskmgr
發起樣本交易
進入
blockchain2sms目錄,按照注釋修改 main.js 中的配置參數,填入REST API地址、Refresh Token、通道名和智能合約名稱。更多資訊請參考文檔使用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=' }