主頁 >  其他 > 基于圖資料庫的物聯網模型(1)-圖資料庫與模型設計

基于圖資料庫的物聯網模型(1)-圖資料庫與模型設計

2021-06-10 09:38:07 其他

物聯網的圖模型

所謂“物聯網”是指規模巨大的設備,傳感器將實作聯網,通過這些聯網設備來收集資料,存盤和分析,并且和人員,應用軟體產生的資料相互關聯,實作處理復雜的事件的最優化,基于更快地使用更多資料來提供比以前更好的結果,

以滴滴打車為例,它是通過收集、整理、存盤和處理來自運行其應用程式的大量智能手機的資料而實作的“智能服務”, 這些手機充當物聯網設備,可以感知客戶和出租車司機的位置,并與交通流量、天氣和其他活動的資料混合在一起,提供了比傳統的出租車呼叫中心更佳的客戶服務,

摩根士丹利最近預測,在未來五年內,全球將有大約 750 億臺聯網設備投入使用,這個數字正在迅速接近人腦中估計的860億個神經元,正如人類智能不是由我們大腦中的神經元數量產生的,而是由它們之間 100 萬億個左右的連接產生的一樣,物聯網的價值主要體現在這些設備的連接關系互動

我們以一個學校的建筑管理系統為例,一個學校有教學樓,科研樓,學生宿舍,圖書館,食堂等許多的建筑,這些建筑中有許多的樓層和房間,在這些房間中有空調,燈具和教學實驗儀器,為了實作建筑自動化管理和能耗管理,學校會在許多的地方安裝計量電表,遙控開關,以及溫度,照度傳感器,這是一個十分復雜的物理設備網路,與此同時,從學校的行政管理的角度看,某一個大樓,或者實驗室,宿舍又可能屬于某一個系,某個班級,甚至某一個專案組,或者學生社團,

當我們著手來構建一個大學的建筑自動化能耗系統時,我們通常會在白板上畫出物理設備和建筑物的隸屬關系和網路連接方式,這是相對比較直觀和簡單的,進一步地,我們要搞清楚設備以及教室與學校部門,學生,教師之間的隸屬關系,于是,如果我們將設備,部門,學生,教師都抽象稱為一個圓圈(我們稱為節點node),而將兩個圓圈之間如果有直接的隸屬關系,就會發現,學校的建筑自動化、能耗管理物聯網變成了一個有圓圈和直線構成的圖,節點之間的關系在構建物聯網程序中非常重要,

另一方面,物聯網將會產生大量的實時資料,它們之間是存在相互關系的,我們稱資料之間的相互關系為“資料脈絡”(data context,我喜歡這個中文術語!),當物聯網中產生的資料存盤在抽象的圖節點中(下面我們指出,這些資料稱為該節點的屬性Property),圖能夠充分地反映資料的脈絡,

你可以自己去分析各自物聯網,能夠發現最后都能夠抽象成為一張類似與上面的圖,所以我們可以認為物聯網就是一個圖,如果我們采用圖模型來構建物聯網架構,存盤,分析資料,實作設備互動,能使物聯網的邏輯結構更加清晰,并且帶來如下好處,

  • 反映應用場景的資料脈絡,適合資料分析和各種基于圖論的演算法,
  • 資料查詢的效率要比普通資料表的方式更高,

在普通的資料庫中,如果資料是巨量的,那么查詢的時間會越來糟糕,而圖模型中,往往是通過鏈接關系,查詢關聯資料,所以它的查詢資料的時間基本是恒定的,

  • 系統設計更加符合設計師的思維程序

根據應用場景中各種設備之間的邏輯關系構建,更新資料模型,使系統設計更符合基于模型的設計方式,事實上,人們稱圖資料模型是一種“白板友好”的模型,也就是說,它直接反映的設計師在白板上畫的結構圖,大大提高了系統設計的效率,

  • 有助于實作物聯網的標準化

至少到目前為止,物聯網應用的標準化作業進展緩慢,

圖模型的幾個要素

  • 節點(Nodes)
  • 關系(Relationship)
  • 屬性(Property)可以定義在節點和關系上
  • 標簽(Label) 代表節點的類別,

圖資料庫(neo4J)

圖資料庫是圖模型資料的資料庫,它的資料建立,查詢和修改都是以圖的形式進行的,所以,要建立圖模型的物聯網需要使用圖資料庫,neo4j是目前最流行的開源圖資料庫,

neo4j 的架構如下圖所示:

從上圖可見,資料庫的管理,開發,應用程式介面,資料分析和商業使用都是基于圖的,其內部的存盤格式和演算法也是面向圖模型優化的,

圖資料庫與普通關系資料庫的區別

普通的資料庫大多數是所謂關系資料庫(relation database),為什么不能用關系資料庫來存盤”關系“呢?其中關系資料庫中的資料是通過大量的資料表格來存盤資料,每個資料表中都有主鍵和外鍵,關系資料庫通過主鍵-外鍵來建立資料之間的關系,

當主鍵和外鍵是一對多關系時,當模型中出現多對多關系時,必須引入一個JOIN表(或關聯物體表)來保存兩個參與表的外鍵,進一步增加了join操作成本,下圖顯示了通過創建一個 Person-Department 連接表將一個人(來自 Person 表)連接到一個部門(在 Department 表中)的概念,該連接表在一列中包含人的 ID 和在列中包含相關部門的 ID,

正如您可能看到的那樣,這使得理解連接非常麻煩,因為您必須知道人員 ID 和部門 ID 值(執行額外的查找以找到它們)才能知道哪個人連接到哪個部門,通常通過對資料進行非規范化以減少必要的連接數量來解決這些型別的成本高昂的連接操作,從而破壞關系資料庫的資料完整性,

可以試想,如果資料的關系很復雜,資料非常巨大時,這種基于表格的關系表的查詢是非常耗費計算時間和記憶體的,因此,圖資料庫的專家戲稱關系資料庫是”逆關系“的,”沒關系“的,

圖模型的建模方法

圖模型另一個重要的特點是可以實作面向物件的模型設計,實際上,在工業自動控制中 的OPC UA 協議中的資訊模型同樣采用了圖形的模型來描述程式設計中的物件,

比如一個傳輸系統中有兩個電機,每個電機有轉速,功率兩個引數,

那么我們可以定義兩個節點 -傳輸帶和電機,電機節點中帶有兩個屬性 轉速和功率,

節點的粒度

在實際建模程序中,我們可以在節點中定義許多的屬性,也可以將節點分解成功更小的節點構建而成,具有許多屬性的節點可能會造成資料的冗余,所以我們應該可能地將節點的存盤顆粒分解的很細,這樣表現力更強,支持更復雜的查詢,

在OPC UA 的資訊標準中,有8種型別的節點

  • 物件節點
  • 變數節點
  • 方法節點
  • 視圖節點
  • 物件型別節點
  • 參考型別節點
  • 變數型別節點
  • 資料型別節點

一個物件使用一個節點來表示,如果該物件中擁有兩個變數,那么就建立兩個變數物件,然后物件節點和這兩個變數型別節點之間建立了參考關系(reference relationship),同樣地,如果在一個物件中參考另一個物件,就需要定義被參考的物件,并與其建立參考關系,

OPC UA 的資訊模型的節點粒度是非常高的,

參考OPC UA 的資訊模型

我認為,在物聯網系統建模時,可以參照OPC UA 的資訊模型,一方面,OPC UA 資訊模型基于面向物件程式設計概念,具有很強的物理設備建模能力,另一方面,OPC UA 已經提出了許多年,大量工業軟體都支持OPC UA 協議,并且為許多物理設備建立了OPC UA 資訊模塊,在構建物聯網資訊模型是我們可以使用OPC UA 協議豐富的技術和模型經驗,同時,也促進物聯網技術的標準化,

事實上,我們完全可以將物聯網看作一個巨大的OPC UA 服務器,而各種應用軟體成為OPC UA 的Client 訪問這個巨大的物聯網,在這個巨大的物聯網OPC UA 服務器內部采用圖資料庫建立巨大的OPC UA 資訊模型,個人覺得這是一個大膽的想法,能夠解決物聯網標準缺失的問題,

利用neo4j建立OPC UA 的資料模型

neo4j 節點中,沒有節點型別的屬性,不過,標簽起到了節點型別的作用,我們可以通過標簽來區分不同的節點,

下面是一個例子,其中黃色的節點是物件型別,紅色的型別是變數型別,REF 是節點之間的關系,我們建立了一個水泵的節點,它具有兩個物件型別的屬性,分別是位置(location) 和電機(motor1),物件location節點具有兩個變數節點(variable node),它們是latitude和longitude,而電機具有兩個變數節點(variable node),它們是speed和power,

這些節點通過參考關系REF 連接,

neo4j 的操作

節點的屬性

基礎屬性(Basic property)

所有節點的都具有的屬性,

名稱 name

顯示名稱 dispayname

描述 Description

變數節點附加屬性 (Variable)

value 值

dataType 資料型別

accessLevel

userAccessLevel

dataPointer 時間序列資料庫指標

方法(Method)節點的附加屬性

argument 方法的引數

實體

下面我們通過一個實體來研究資料模型的描述方式,在這里我們定義的一個水泵,水泵的特征包括位置,電機,而位置又包括了經緯度,電機包括轉速和功率,

1 建立一個物件(pump)

2 建立motor和location 物件節點,

3 建立 pump-REF-motor和pump-REF-location 的關系

4 建立變數節點 speed,power,longitude,latitude 四個變數節點

5 建立 motor1-REF-speed,motor1-REF-power ,locattion-REF-longitude,location-REF-latitude 四個關系,

于是形成了的圖如下:

訪問資料庫的常用方法

neo4j 圖資料庫使用一種查詢語言Cypher (Cypher Query Language CQL)來操控資料庫,Cypher 使我們更容易地操控圖資料庫,

例如:建立兩個節點 羅密歐 和朱麗葉(Person node),它們之間的關系(LOVES)是羅密歐愛朱麗葉,

CREATE (remeo:Person {name:"Remeo"})-[:LOVEE]->(juliet:Person(name:Juliet})

下面我們來建立水泵的圖模型,它具有樹形圖結構

pump 
  motor
     speed
     power
  location
     longitude
     latitude

1 獲取 pump1 的所有子節點

MATCH (:object {name: 'pump1'})-[REF]-(p)
RETURN p

2 獲取 motor 的所有子節點

MATCH (:object {name: 'motor1'})-[REF]-(p)
RETURN p

3 獲取location 的所有子節點

MATCH (:object {name: 'location'})-[REF]-(p)
RETURN p

4 如果節點的label 是variable 就不再有進一步的子節點,

資料模型的構建工具

開發一種基于圖模型的構建工具十分重要,它既要考慮構建的效率,有要考慮使用者的習慣和方便,大致有下面幾種方式

  • 樹形目錄結構,
  • 圖方式
  • 文本方式(XML,JSON,CSV)

結束語

本文探討圖資料在物聯網中應用的可能性,并且提出了使用OPC UA 資訊模型來構建物聯網資訊模型,解決物聯網標準缺失的問題,作者本人正在構建一個實驗性小系統,感興趣的讀者可以一起交流,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286470.html

標籤:其他

上一篇:RTOS概述

下一篇:Modubus TCP Client

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more