本示例介紹如何將區塊鏈上的數據導出至數據庫中。您可使用示例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=' }