阿里云的PolarDB MySQL版是阿里巴巴自研的云原生HTAP數據庫,基于云原生架構、計算存儲分離、軟硬件一體化設計,為用戶提供具備超高彈性和性能、高可用和高可靠保障、高性價比的數據庫服務。物聯網平臺可以將設備的指定Topic消息,先經過解析腳本處理和過濾,再轉發到云原生數據庫PolarDB MySQL版數據表中存儲。本文以物模型數據上報Topic為例,介紹消息轉發至PolarDB MySQL版數據表的完整流程。
工作原理
云產品流轉將設備的Topic消息轉發到PolarDB MySQL版集群下數據庫的數據表中存儲,使用PolarDB MySQL版的數據庫服務。詳細內容,請參見PolarDB MySQL版。
在上圖中:
數據源:支持的Topic類型消息,請參見數據格式(非云網關產品和設備)、自定義Topic(MQTT云網關)、消息轉發Topic(GB/T 32960云網關)、消息轉發Topic(JT/T 808云網關)、消息轉發Topic(SL 651云網關)。
數據目的:創建的專有網絡下PolarDB MySQL版集群中數據庫下的數據表,用于接收設備數據。
解析器腳本:配置通過數據流轉函數
writePolarDB(destinationId, data)
將Topic數據轉發到PolarDB MySQL版數據表。data
僅支持Map類型數據,其中鍵(Key)值對應數據庫表列名,值(Value)對應列值。函數詳細說明,請參見函數列表。
應用場景
對設備存儲數據庫有如下要求的物聯網應用場景:
大中型企業相關設備的生產數據庫。
對設備數據安全性要求非常高的核心數據庫。
使用限制
前提條件
背景信息
轉發的數據目的配置完成后,會自動完成以下配置,實現設備數據通過物聯網平臺的消息轉發功能流轉到云原生數據庫PolarDB MySQL版。
物聯網平臺占用PolarDB MySQL版集群所在虛擬交換機的2個IP地址;將虛擬交換機的IPv4網段配置到PolarDB MySQL版集群的白名單中。
在PolarDB MySQL版集群所在的VPC網絡下創建托管安全組,安全組名稱默認以sg-nsm-開頭。
創建數據目的
登錄物聯網平臺控制臺。
在實例概覽頁簽的全部環境下,找到對應的實例,單擊實例卡片。
在左側導航欄,選擇
。在云產品流轉頁面,單擊右上角體驗新版,進入新版功能頁面。
說明如果您已執行過此操作,再次進入云產品流轉頁面,會直接進入新版功能頁面。
單擊數據目的頁簽,然后單擊創建數據目的。
在創建數據目的對話框,輸入數據目的名稱,例如
DataPurpose
,按照以下參數說明,完成配置,然后單擊確定。參數
描述
選擇操作
選擇存儲到云原生數據庫(PolarDB MySQL版)中。
授權
單擊授權,系統創建角色和授權策略,授權物聯網平臺將數據寫入PolarDB MySQL版數據表。詳細說明,請參見數據轉發到云原生數據庫PolarDB MySQL版的服務關聯角色。
說明若已授權,忽略此操作。
地域
固定與您的物聯網平臺實例所在地域一致。
PolarDB集群
選擇數據轉發目的為您已創建的專有網絡(VPC)下的PolarDB集群。
您可單擊創建集群,新增PolarDB MySQL版集群。具體操作,請參見購買集群。
數據庫
選擇PolarDB MySQL版集群下接收數據的目標數據庫名稱。
創建數據庫的具體操作,請參見創建數據庫。
賬號
輸入管理數據庫的賬號和密碼。賬號應具有該數據庫的讀寫權限,否則消息轉發無法將數據寫入PolarDB MySQL版數據庫。
數據庫管理賬號和密碼說明,請參見創建和管理數據庫賬號。
密碼
表名
輸入目標數據庫下接收數據的數據表名稱。消息轉發會把數據寫入這張表中。
配置并啟動解析器
創建解析器,例如DataParser。具體操作,請參見創建解析器。
在解析器詳情頁面,關聯數據源。
在配置向導的數據源下,單擊關聯數據源。
在彈出的對話框中,單擊數據源下拉列表,選擇已創建的數據源DataSource,單擊確定。
在解析器詳情頁面,關聯數據目的。
單擊配置向導的數據目的,然后單擊數據目的列表右上方的關聯數據目的。
在彈出的對話框中,單擊數據目的下拉列表,選擇已創建的數據目的DataPurpose,單擊確定。
在數據目的列表,查看并保存數據目的ID,例如為1000。
后續解析腳本中,需使用此處的數據目的ID。
在解析器詳情頁面,單擊解析器。
在腳本輸入框,輸入如下解析腳本。
腳本編輯方法,請參見腳本示例。函數參數說明,請參見函數列表。
// 通過payload函數,獲取設備上報的消息內容,并按照JSON格式轉換。 var data = payload("json"); // 篩選出上報的溫濕度值。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; // PolarDB MySQL表結構為id[自增主鍵] deviceName、temperature、humidity、time,在writePolarDB方法中,可以按column:value的形式,將值寫入對應的列。 // 設置溫度值大于30時觸發規則。 if (t > 30) { writePolarDB(1000, {"deviceName":deviceName(), "temperature":t, "time":timestamp(), "humidity":h}); }
單擊調試,根據頁面提示,選擇產品和設備,輸入Topic和Payload數據,驗證腳本可執行。
調試參數示例:
運行結果如下,表示腳本執行成功。
action: transmit to polardb[destinationId=1000], data:{"temperature":38,"humidity":25,"time":1700631588609,"deviceName":"devce****"} variables: data : {"deviceType":"CustomCategory","iotId":"JCp9***","requestId":"16269*******7","checkFailedData":{},"productKey":"ic*******z","gmtCreate":1626948134445,"deviceName":"devce****","items":{"temperature":{"time":1626948134319,"value":38},"humidity":{"time":1626948134319,"value":25}}} t : 38 h : 25
單擊發布。
回到云產品流轉頁面的解析器頁簽,單擊解析器DataParser對應的操作列的啟動,啟動解析器。
后續操作
您可在物聯網平臺控制臺對應實例下云端運行日志。
頁面的云端運行日志頁簽,查看設備到云消息及云產品流轉的運行日志。具體操作,請參見您可登錄PolarDB控制臺,連接數據庫查詢存儲的物聯網平臺數據。具體操作,請參見連接數據庫集群。
相關文檔
設備接入物聯網平臺上報數據的操作指導,請參見設備接入引導。
您可在實例詳情頁面,查看消息轉發TPS可用資源,確保設備消息能正常轉發到PolarDB MySQL版存儲。具體操作,請參見查看實例信息和運行數據。如果可用資源不足,可進行升配。具體內容,請參見升配。
使用PolarDB MySQL版存儲數據時,費用、集群訪問(讀寫分離)、性能和容量、穩定性和存儲空間等常見問題,請參見PolarDB MySQL版的常見問題和解答。