日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

前言

DolphinDB 是由浙江智臾科技有限公司研發(fā)的一款高性能分布式時(shí)序數(shù)據(jù)庫,集成了功能強(qiáng)大的編程語言和高容量高速度的流數(shù)據(jù)分析系統(tǒng),為海量結(jié)構(gòu)化數(shù)據(jù)的快速存儲(chǔ)、檢索、分析及計(jì)算提供一站式解決方案。DolphinDB 數(shù)據(jù)庫支持每秒百萬級(jí)數(shù)據(jù)寫入,萬億級(jí)別數(shù)據(jù)毫秒級(jí)查詢響應(yīng),以及高壓縮比的數(shù)據(jù)存儲(chǔ),適用于工業(yè)物聯(lián)網(wǎng)及量化金融等領(lǐng)域。

為了進(jìn)一步簡化 DolphinDB 的使用方式,我們?cè)?Node-RED 上構(gòu)建了一個(gè) DolphinDB 低代碼平臺(tái)。通過可視化編程工具,我們將 DolphinDB 的功能抽象成易于理解的節(jié)點(diǎn),使操作流程更加清晰明了。這種可視化方式不僅提高了用戶使用平臺(tái)的便捷性,還大大降低了用戶的學(xué)習(xí)門檻。即使用戶不了解 DolphinDB 的編程語言,也能輕松完成各種操作。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

在我們的低代碼平臺(tái)上,用戶只需使用簡單的拖拉拽操作,便能實(shí)現(xiàn)無模式寫入、數(shù)據(jù)清洗、降采樣、設(shè)備監(jiān)控、異常監(jiān)測等功能,從而讓數(shù)據(jù)處理變得更加便捷高效。

以下內(nèi)容將詳細(xì)介紹 node-RED 平臺(tái)的特點(diǎn)、DolphinDB 低代碼平臺(tái)的情況,以及開發(fā) DolphinDB 節(jié)點(diǎn)的方法。

關(guān)于 Node-RED

Node-RED 是一個(gè)開源的可視化編程工具,它讓連接、編排和自動(dòng)化物聯(lián)網(wǎng)設(shè)備、API 和在線服務(wù)變得非常簡單。它使用戶能夠通過簡單地拖拽和連接節(jié)點(diǎn)來創(chuàng)建應(yīng)用程序,其中每個(gè)節(jié)點(diǎn)代表一個(gè)特定的功能或服務(wù)。你可以把它想象成一個(gè)拼圖游戲,通過拖拽和連接不同的拼圖,就可以創(chuàng)建出各種應(yīng)用程序。

舉個(gè)例子,人們會(huì)希望在回家的路上就能開啟空調(diào),到家即享清涼。借助 Node-RED 可以輕松實(shí)現(xiàn)這個(gè)需求。通過簡單地拖拽微信節(jié)點(diǎn)、消息處理節(jié)點(diǎn)和空調(diào)控制節(jié)點(diǎn),然后連接設(shè)置它們,就能實(shí)現(xiàn)這個(gè)流程。這樣,只需在微信上發(fā)送一條消息,就能控制家中空調(diào)的開關(guān)。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

Node-RED 是基于Node.js構(gòu)建的,因此具有輕量化和高效的特點(diǎn)。它充分利用了 Node.js 的事件驅(qū)動(dòng)和非阻塞模型,在網(wǎng)絡(luò)邊緣的低成本硬件(如 Raspberry Pi)和云中表現(xiàn)出色。這使得 Node-RED 成為一個(gè)非常適用于各種場景的工具。

Node-RED 的節(jié)點(diǎn)擴(kuò)展庫中包含了許多內(nèi)置節(jié)點(diǎn)和功能,例如數(shù)據(jù)庫訪問、Web 服務(wù)和電子郵件通知,這些功能大大簡化了開發(fā)過程。它提供了強(qiáng)大的功能組件,讓用戶能夠快速搭建復(fù)雜的物聯(lián)網(wǎng)設(shè)備、API 和在線服務(wù),無需編寫繁瑣的代碼。

此外,Node-RED 使用 JSON 格式來存儲(chǔ)流程,這使得共享和導(dǎo)入導(dǎo)出變得非常方便。用戶可以輕松地與其他人分享自己的流程,并從社區(qū)中獲取更多的解決方案和靈感。這種開放性和合作性為用戶提供了更多的可能性和靈活性。

總的來說,Node-RED 是一個(gè)強(qiáng)大且易于使用的工具,提供了一個(gè)可視化編程環(huán)境,使用戶能夠輕松地連接、編排和自動(dòng)化物聯(lián)網(wǎng)設(shè)備、API 和在線服務(wù)。無論在物聯(lián)網(wǎng)、自動(dòng)化還是數(shù)據(jù)流處理領(lǐng)域,Node-RED 都是一個(gè)非常實(shí)用和受歡迎的工具,為用戶帶來了極大的便利和效率。

DolphinDB 低代碼平臺(tái)

平臺(tái)介紹

DolphinDB 低代碼平臺(tái)是一個(gè)基于 Node-RED 的 DolphinDB 功能可視化平臺(tái)。具有強(qiáng)大的可擴(kuò)展性,為用戶提供了開發(fā)自定義功能節(jié)點(diǎn)的可能性。用戶可以根據(jù)自身需求開發(fā)適合自己業(yè)務(wù)場景的功能節(jié)點(diǎn),從而進(jìn)一步增強(qiáng)平臺(tái)的功能和適應(yīng)性。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

在案例介紹章節(jié)中,我們將介紹 DolphinDB 節(jié)點(diǎn)的開發(fā)方法,幫助用戶更好地利用該低代碼平臺(tái),實(shí)現(xiàn)更多個(gè)性化需求。

本文所提供的 DolphinDB 低代碼平臺(tái)案例提供了十余個(gè)節(jié)點(diǎn),劃分為文件操作、數(shù)據(jù)清洗和 DolphinDB 功能節(jié)點(diǎn)三個(gè)類別。文件操作類別提供了數(shù)據(jù)加載節(jié)點(diǎn),方便用戶將本地文件加載到 DolphinDB 的內(nèi)存表中。數(shù)據(jù)清洗類別則提供了格式轉(zhuǎn)換、NULL 填充、數(shù)據(jù)去重和數(shù)據(jù)歸一化等功能節(jié)點(diǎn),幫助用戶實(shí)現(xiàn)各種數(shù)據(jù)清洗操作。而在DolphinDB 功能節(jié)點(diǎn)類別中,提供了數(shù)據(jù)入庫、降采樣、無模式寫入、流表創(chuàng)建和流數(shù)據(jù)引擎等功能節(jié)點(diǎn),使用戶能夠輕松使用 DolphinDB 的功能,而無需掌握其編程語言。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

使用說明

DolphinDB 低代碼平臺(tái)是基于 Node-RED 構(gòu)建的,所以需先安裝 Node-RED, Node-RED 的官方安裝教程可參考:Getting Started : Node-RED 。在完成 Node-RED 的安裝之后,可按以下步驟安裝 DolphinDB 節(jié)點(diǎn)。

1. 下載 DolphinDB 節(jié)點(diǎn)。下載附件中的 DolphinDB 節(jié)點(diǎn) node-red-contrib-dolphindb-main 安裝包。例如在下例中,下載并解壓至 D:Node_Red_Project 文件夾下,文件里的內(nèi)容如下:

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

2. 將 DolphinDB 節(jié)點(diǎn)安裝到 Node-RED 中。進(jìn)入到 .node-red 目錄(此目錄應(yīng)該在 C:Users<用戶名> 目錄下面),然后用 npm 安裝 node-red-contrib-dolphindb-main。具體指令如下,


其中
D:Node_Red_Projectnode-red-contrib-dolphindb-main 是 DolphinDB 節(jié)點(diǎn)安裝包的下載路徑。

cd C:Users<用戶名>.node-rednpm install D:Node_Red_Projectnode-red-contrib-dolphindb-main

安裝成功后會(huì)出現(xiàn)以下內(nèi)容。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

3. 使用 DolphinDB 節(jié)點(diǎn)。在 cmd 中輸入指令 node-red 以開啟 Node-RED 服務(wù)。出現(xiàn)以下內(nèi)容表示 Node-RED 服務(wù)啟動(dòng)成功。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

4. 打開網(wǎng)頁 http://localhost:1880 在左側(cè)選項(xiàng)板中會(huì)出現(xiàn) DolphinDB 節(jié)點(diǎn),拖出來使用即可。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

DolphinDB 低代碼平臺(tái)

案例介紹

數(shù)據(jù)處理流程

在本文的 DolphinDB 低代碼平臺(tái)案例中,用戶可以輕松地以拖拽的方式實(shí)現(xiàn)數(shù)據(jù)清洗流程。下文將介紹如何加載 CSV 文件中的數(shù)據(jù),對(duì)其進(jìn)行數(shù)據(jù)清洗,最后將清洗后的數(shù)據(jù)存入 DolphinDB 數(shù)據(jù)庫。

首先,我們有以下 CSV 文件中的數(shù)據(jù):

id

date

price

qty

tmp

1

2018.01.02

70.832104

1719

1.2

1

2018.01.03

12.22557

3.2

3

2018.01.04

8.695886

1656

0.4

4

2018.01.05

24.324535

2860

2

5

2018.01.06

0.443173

6874

3.8

6

2018.01.07

90.302176

3277

-1.8

7

2018.01.08

78.556843

3424

-0.6

8

2018.01.09

45.836447

8636

0.4

9

2018.01.10

57.416425

707

1.6

10

2018.01.11

98.879764

2267

4.2

數(shù)據(jù)清洗的具體操作過程如下:

  1. 將 CSV 文件中的數(shù)據(jù)加載到 DolphinDB 內(nèi)存表中。
  2. 去除 id 列的重復(fù)值,確保每個(gè)id的數(shù)據(jù)是唯一的。
  3. 對(duì) price 列進(jìn)行格式轉(zhuǎn)換,將數(shù)據(jù)統(tǒng)一為兩位小數(shù)。
  4. 對(duì) qty 列的 NULL 值,使用平均值進(jìn)行填充,確保數(shù)據(jù)完整性。
  5. 對(duì) tmp 列進(jìn)行 Max-Min 歸一化,將數(shù)據(jù)縮放到0到1的范圍。
  6. 將清洗之后的數(shù)據(jù)存入 DolphinDB 數(shù)據(jù)庫,以便后續(xù)的數(shù)據(jù)分析和應(yīng)用。

以下為在 DolphinDB 低代碼平臺(tái)上實(shí)現(xiàn)上訴數(shù)據(jù)處理操作的過程。

  • 將 inject,加載文件,格式轉(zhuǎn)換,null 填充,去重,數(shù)據(jù)歸一化和數(shù)據(jù)入庫節(jié)點(diǎn)拖拽到工作區(qū)中
  • 按照數(shù)據(jù)清洗的邏輯順序?qū)⒐?jié)點(diǎn)連接起來。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

  • 點(diǎn)擊節(jié)點(diǎn),對(duì)節(jié)點(diǎn)進(jìn)行相應(yīng)的參數(shù)配置。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

  • 點(diǎn)擊工作區(qū)右上角的 部署 按鈕。
  • 點(diǎn)擊時(shí)間戳節(jié)點(diǎn),觸發(fā)流程啟動(dòng)。隨后可在 DolphinDB 數(shù)據(jù)庫中查看經(jīng)過清洗之后的數(shù)據(jù)。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

無模式寫入

無模式寫入是一種數(shù)據(jù)庫寫入方式,特別適用于物聯(lián)網(wǎng)場景的設(shè)備采集數(shù)據(jù)。在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)寫入需要事先定義好數(shù)據(jù)表的結(jié)構(gòu),包括字段名稱、數(shù)據(jù)類型和約束等信息。然而,在現(xiàn)實(shí)世界中,很多數(shù)據(jù)并不適合嚴(yán)格的表結(jié)構(gòu),例如采集頻率不同的各類傳感器數(shù)據(jù)等。

無模式寫入解決了這個(gè)問題,它允許將數(shù)據(jù)直接寫入數(shù)據(jù)庫中,無需提前定義表結(jié)構(gòu)。數(shù)據(jù)可以按照其原始格式靈活存儲(chǔ),無需額外的數(shù)據(jù)轉(zhuǎn)換和處理,從而大大簡化了數(shù)據(jù)寫入的過程。

在 DolphinDB 低代碼平臺(tái)上,實(shí)現(xiàn)無模式寫入的流程可以通過兩個(gè)節(jié)點(diǎn)輕松完成。以下為實(shí)現(xiàn)無模式寫入的具體過程:

  • 將 Mqtt In 節(jié)點(diǎn)和 無模式寫入 節(jié)點(diǎn)拖拽到工作區(qū)
  • 將兩個(gè)節(jié)點(diǎn)連接起來
  • 點(diǎn)擊節(jié)點(diǎn),進(jìn)行參數(shù)設(shè)置。在 Mqtt In 節(jié)點(diǎn)中設(shè)置服務(wù)端和消息主題,在無模式寫入節(jié)點(diǎn)中設(shè)置數(shù)據(jù)庫名稱。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

  • 點(diǎn)擊部署按鈕。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

之后就可以向 mqtt 發(fā)消息,實(shí)現(xiàn)無模式寫入。無模式寫入中,在向 mqtt 發(fā)消息時(shí),需要按照一定的格式要求,發(fā)送消息。這里發(fā)送多條類似以下內(nèi)容的消息給 mqtt。

{ "tags":{ "deviceCode": "361RP01", "logicalPositionId": "1", "physicalPositionId": "AI361RP01T" }, "fields":{ "propertyValue":1505 }, "time": "2023-07-22 15:53:08"}

如果運(yùn)行成功,DolphinDB 中將出現(xiàn)名為 "Mqtt_DDB" 的數(shù)據(jù)庫,并且數(shù)據(jù)庫會(huì)不斷接收來自 "Mqtt" 的消息。

使用 Node-RED 構(gòu)建 DolphinDB 低代碼平臺(tái)

DolphinDB 節(jié)點(diǎn)開發(fā)方法

DolphinDB 節(jié)點(diǎn)是基于 Node-RED 的,因此開發(fā) DolphinDB 節(jié)點(diǎn)需要先掌握 Node-RED 節(jié)點(diǎn)開發(fā)的基礎(chǔ)知識(shí)。可參照:Node-RED 節(jié)點(diǎn)開發(fā)教程。

DolphinDB 的安裝包中包含核心文件 dolphindb.htmldolphindb.js。其中,dolphindb.html 主要用于定義DolphinDB 節(jié)點(diǎn)的屬性、編輯對(duì)話框和幫助文本,而 dolphindb.js 則主要用于定義 DolphinDB 節(jié)點(diǎn)的功能。

在 DolphinDB 節(jié)點(diǎn)的 html 文件部分與普通 Node-RED 節(jié)點(diǎn)開發(fā)流程相似,因此這里不再贅述。我們重點(diǎn)介紹 dolphindb.js 中的節(jié)點(diǎn)功能實(shí)現(xiàn)方法,可參照:JavaScript API 進(jìn)行開發(fā)。

在 JavaScript 中連接 DolphinDB

  • 在 JavaScript 中導(dǎo)入 DolphinDB,并設(shè)置連接配置,建立與 DolphinDB 的連接。

import { DDB } from 'dolphindb'// 使用 WebSocket URL 初始化連接到 DolphinDB 的實(shí)例(不建立實(shí)際的網(wǎng)絡(luò)連接)let ddb = new DDB('ws://127.0.0.1:8848', { // 是否在建立連接后自動(dòng)登錄,默認(rèn) `true` autologin: true, // DolphinDB 登錄用戶名,默認(rèn) `'admin'` username: 'admin', // DolphinDB 登錄密碼,默認(rèn) `'123456'` password: '123456', // 設(shè)置 python session flag,默認(rèn) `false` python: false, // 設(shè)置該選項(xiàng)后,該數(shù)據(jù)庫連接只用于流數(shù)據(jù) streaming: undefined})// 建立到 DolphinDB 的連接await ddb.connect()

  • 建立配置節(jié)點(diǎn),連接到 DolphinDB

function DolphinConfigNode(n) { RED.nodes.createNode(this, n); this.url = n.url this.name = n.name this.client = new DDB(this.url, { autologin: true, username: this.credentials.username, password: this.credentials.password, python: false, streaming: undefined }) } RED.nodes.registerType("dolphindb", DolphinconfigNode, { credentials: { username: { type: "text" }, password: { type: "password" } } });

  • DolphinDB 節(jié)點(diǎn)構(gòu)造:

a. 節(jié)點(diǎn)構(gòu)造函數(shù)。節(jié)點(diǎn)由構(gòu)造函數(shù)定義,該函數(shù)可用于創(chuàng)建節(jié)點(diǎn)的新實(shí)例。該函數(shù)傳遞一個(gè)包含流編輯器中設(shè)置的屬性的對(duì)象。它必須做的第一件事是調(diào)用該 RED.nodes.createNode 函數(shù)來初始化所有節(jié)點(diǎn)共享的特征,然后就可以執(zhí)行特定于節(jié)點(diǎn)的代碼。

//構(gòu)造函數(shù) function DolphinDBNode(config) { RED.nodes.createNode(this,config); // 獲取 DolphinDB 配置結(jié)點(diǎn) this.dolphindb = n.dolphindb; this.dolphindbConfig = RED.nodes.getNode(this.dolphindb); var client = this.dolphindbConfig.client; //功能語句 } //注冊(cè)節(jié)點(diǎn) RED.nodes.registerType("DolphinDB",DolphinDBNode);

b. 接收消息。節(jié)點(diǎn)注冊(cè)該事件的偵聽器input,以接收來自流中上游節(jié)點(diǎn)的消息。一旦收到消息,就執(zhí)行相應(yīng)的功能。

this.on('input', function(msg, send, done) { //執(zhí)行功能});

  • 函數(shù)語句。在 JavaScript 中,我們使用eval()函數(shù)來執(zhí)行 DolphinDB 腳本。一般來說,我們將 DolphinDB 腳本分為函數(shù)func和函數(shù)調(diào)用funcall兩個(gè)部分,然后將它們拼接在一起,并調(diào)用eval()函數(shù)來執(zhí)行 DolphinDB 腳本。

var func=`def foo(a,b){ return a b; }`var funcall=`foo(11,11)`var secipt=func funcallconst result = await ddb.eval(script)

案例

最后,我們以數(shù)據(jù)歸一化節(jié)點(diǎn)為例,來介紹 DolphinDB 節(jié)點(diǎn)的功能實(shí)現(xiàn)代碼。

//構(gòu)造函數(shù)function DolphinDataNormalizationNode(n) { RED.nodes.createNode(this, n); // 獲取 DolphinDB 配置結(jié)點(diǎn) this.dolphindb = n.dolphindb; this.dolphindbConfig = RED.nodes.getNode(this.dolphindb); if (!this.dolphindbConfig) { //檢查是否成功獲取了 DolphinDB 配置節(jié)點(diǎn) this.error(RED._("dolphindb.errors.missingconfig")); return; } var client = this.dolphindbConfig.client; //將當(dāng)前節(jié)點(diǎn)的上下文保存在變量 node 中 this.name=n.name; this.tableName=n.tableName; this.colName=n.colName; this.normalizeType=n.normalizeType; var node = this; //DolphinDB 腳本 var func=`def minMaxNormalization(tableName,colName){ pt=objByName(tableName); minNum=min(pt[colName]); maxNum=max(pt[colName]); pt[colName]=(pt[colName]-minNum)/(maxNum-minNum); } def ZSoreNormalization(tableName,colName){ pt=objByName(tableName); meanNum=mean(pt[colName]); stdNum=std(pt[colName]); pt[colName]=(pt[colName]-meanNum)/stdNum; } def dataNormalization(tableName,colName,type){ if(type==1){ minMaxNormalization(tableName,colName); }else if(type==2){ ZSoreNormalization(tableName,colName); } }`; var funcall =`dataNormalization("${this.tableName}",`${this.colName},${this.normalizeType})`; var script =func funcall; console.log(script) //打印生成的 DolphinDB 腳本,用于調(diào)試和查看。 //注冊(cè)監(jiān)聽器 input,一旦收到消息,則執(zhí)行 DolphinDB 腳本 node.on('input', async function (msg, send, done) { client.eval(script).then(res => { send(msg) done() }).catch(err => { console.log(err) done(err) }) }); } //注冊(cè)節(jié)點(diǎn)RED.nodes.registerType("數(shù)據(jù)歸一化", DolphinDataNormalizationNode);

總結(jié)

本文介紹了 Node-RED 平臺(tái),Node-RED 以其簡單的拖拽和連接節(jié)點(diǎn)的方式,讓用戶能夠輕松創(chuàng)建各種應(yīng)用程序,無需編寫繁瑣的代碼。

DolphinDB 低代碼平臺(tái)的構(gòu)建基于Node-RED。通過可視化編程方式將 DolphinDB 功能可視化為節(jié)點(diǎn),使操作流程清晰明了。其中,數(shù)據(jù)清洗和無模式寫入案例,展示了 DolphinDB 低代碼平臺(tái)的簡便性和高效性。

更重要的是,DolphinDB 低代碼平臺(tái)具有很強(qiáng)的可擴(kuò)展性。用戶可以根據(jù)自身需求開發(fā)自定義功能節(jié)點(diǎn),進(jìn)一步增強(qiáng)平臺(tái)的功能和適應(yīng)性。這種開放性為用戶提供了更多可能性和靈活性,使他們能夠在平臺(tái)上實(shí)現(xiàn)更多個(gè)性化需求。

通過 Node-RED 平臺(tái)和 DolphinDB 低代碼平臺(tái),用戶能夠輕松構(gòu)建復(fù)雜的物聯(lián)網(wǎng)設(shè)備、API 和在線服務(wù),實(shí)現(xiàn)數(shù)據(jù)處理和存儲(chǔ),加速創(chuàng)新和數(shù)字化轉(zhuǎn)型的進(jìn)程。

附件

  • DolphinDB 節(jié)點(diǎn)安裝包(請(qǐng)移步知乎下載:鏈接https://zhuanlan.zhihu.com/p/653197245)

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁
返回頂部
景泰县| 田东县| 海口市| 南阳市| 龙陵县| 博罗县| 独山县| 正定县| 汉沽区| 潞城市| 林口县| 华容县| 无锡市| 新泰市| 黔西| 芦山县| 辽阳县| 井陉县| 田阳县| 东阳市| 奉化市| 明水县| 平谷区| 南昌县| 古丈县| 颍上县| 偃师市| 大庆市| 郑州市| 沾化县| 和顺县| 集贤县| 深水埗区| 庆阳市| 凉城县| 门源| 正宁县| 阿坝县| 枞阳县| 兰坪| 永定县|