图数据库(neo4j)在工业控制中的应用

news2024/11/26 8:49:19

        最近看到国外发表的一篇文章,提到将OPC UA 模型映射到neo4j图模型数据库中,通过GraphQL 访问效率很高,顿时感觉自己眼睛一亮,这是一个好主意。

图模型

        事物的模型中,除了它自身的某些特征之外,还包括它与其它事物的关系特征,例如一个学生的属性包括姓名,性别,年龄等属性,同时,他还有许多关系属性,比如他属于哪一个院系,那个班级,他的同学等等。

正是由于此,我们通常称的工程被定义为:

   系统是由一组实体和这些实体之间的关系所构成的集合。其功能要大于这些实体各自的功能之和。

   构建模型中强调关系的重要性,需要有一种更有效的方法来表达事物之间的关系。这就是图模型。

    图模型忽略每个事物的形状,将它们抽象成为一个“点”,点与点之间的连线描述事物之间的关系。

定义

在图模型中,模型由节点和节点之间的关系构成的。每个节点表示了一个物体的模型。它的内部包括了属性和特征。而关系表示了物件之间的相互关系。

        数学有一个分支叫做《图论》。数学家使用图可以构建事物的模型,并且提出了各种数学方法来研究图模型的规律。 

    工业领域中的OPC UA 信息模型也是基于图模型构建的。基本的节点包括对象,属性和方法,关系被称为reference。

    由此可见,OPCUA 信息模型可以转换成为通用的图模型。

在工程设计中,我们经常使用图模型来描述组件,子系统等事物的关系,例如技术讨论中的白板上绘制各种图:

转换成图模型

所以,也有人称为,图模型是“白板”友好的模型 

图模型的文本表达

结构描述语言都能够描述图模型,常见的有:

  • XML
  • JSON

图模型描述的结构包括了:

  •  节点属性-关系,例如:OPCUA 
  • RDF ,例如:知识图谱的描述

图形数据库

图形数据库是以图形模型特点存储数据的数据库,也被称为“图原生”数据库。

        图形数据库是将数据存储为网络图的 NoSQL 数据库。图形数据库与其他选项的区别在于,它们记录了数据之间的关系并对其进行了优先级排序。

        图形数据库由节点和边组成,其中节点表示特定实体,而边表示两个节点之间的连接。它们被设计为可扩展的,并提供在其他数据库中难以找到的灵活性。

图形数据库与关系数据库

        两者之间最显着的区别是,图形数据库将数据之间的关系存储为数据。关系数据库以不同的方式推断出对数据之间关系的关注点。关系焦点在数据表的列之间,而不是数据点之间。

        这两个数据库都使添加新数据变得容易。图形数据库的灵活性使得能够添加新节点和节点之间的关系,从而使其能够可靠地处理实时数据。关系数据库使在数据库运行时可以添加新的表和列。

        复杂查询在图形数据库中的运行速度通常比在关系数据库中更快。关系数据库需要对数据表进行复杂的联接才能执行复杂的查询,因此该过程没有那么快。


Neo4j 图形数据库 

 Neo4j是著名的图形数据库。

 Neo4j 以原生图形数据库为核心,以自然的连接状态存储和管理数据。 图形数据库采用属性图方法。

Neo4j 最初是一个图形数据库,现已发展成为一个拥有众多工具、应用程序和库的丰富生态系统。 该生态系统允许您将图形技术与您的工作环境无缝集成。

graphQL语言

        GraphQL是由 Facebook 在 2012 年创立的一门开源查询语言

        GraphQL 是一种用于 API 的查询语言,也是用于使用现有数据完成这些查询的运行时。GraphQL 为您的 API 中的数据提供了完整且易于理解的描述,使客户能够准确询问他们需要什么,仅此而已,使 API 随着时间的推移而更容易发展,并启用强大的开发人员工具。

GraphQL 查询不仅可以访问一个资源的属性,还可以顺利地跟踪它们之间的引用。虽然典型的 REST API 需要从多个 URL 加载,但 GraphQL API 可以在单个请求中获取应用所需的所有数据。即使在较慢的移动网络连接上,使用 GraphQL 的应用程序也可以快速运行。

Neo4j GraphQL 库是一个高度灵活、低代码的开源 JavaScript 库,通过利用连接数据的力量,为跨平台和移动应用程序实现快速 API 开发。

使用 Neo4j 作为图形数据库,GraphQL 库使应用程序可以轻松地将数据视为从前端一直到存储的原生图形。 这避免了重复的架构工作,并确保了前端和后端开发人员之间的完美集成。

graph QL与OPCUA 比较优势

        与原生 Web 技术相比,OPC UA 有一些缺点:在访问数据之前需要多次往返才能建立连接,它更复杂,使应用程序开发费力;并且需要特定的客户。缺乏客户端库尤其阻碍了应用程序开发。[4]中介绍了一个工业应用示例,其中GraphQL接口允许更轻松地访问桥式起重机OPC UA服务器。为了克服OPC UA的缺点和局限性,一些论文提出了将OPC UA设置为RESTful(表征状态转移)。最近,这些作者在之前的工作中也提出了用于OPC UA服务器的GraphQL接口。GraphQL 是一种构建 Web API(应用程序编程接口)的新方法,旨在解决 REST API 的问题;这些问题,包括过度提取和获取所需数据所需的多个请求。

              OPC UA(开放平台通信统一架构)需要多次往返才能从服务器读取数据。

图形数据库(neo4j)在工业中的应用 

         在工业自动化领域主张采用基于模型的设计。 OPCUA 就是基于信息模型的通信协议。目前大多数PLC 都具备了OPC UA 服务器,OPCUA 客户端软件能够访问OPC UA 服务器中的数据。OPCUA 信息模型同样是基于节点-关系的图模型。因此,OPCUA 信息模型与图模型具有天然的相似性。

工业网关

    可以设计一个网关,将一个或多个 OPC UA 服务器的数据更新到图形数据库中。

      在网关启动时,将 OPC UA 节点结构写入图数据库,从而将 OPC UA 服务器的基本模型镜像到图数据库中。    将 OPC UA 系统的哪些根节点(以及所有子节点)镜像到图形数据库。

        在图数据库中拥有(简化的)OPC UA信息模型后,您可以在此基础上添加自己的知识图谱数据,并创建与机器的OPC UA节点的关系,以丰富OPC UA模型的数据。

工业网关的基本架构 

实现细节

通过OPCUA Client 读取所有OPC UA服务器的信息模型,将它们转换成为neo4j图模型。 

如果在OPCUA 模型中带有Tag 那么就可以将历史数据存储在InfluxDB 时间序列数据库中。         

GraphQL 的优点是只需要一个查询就可以访问多个资源的数据。

基于neoj4的模型数据库

        在工业控制系统中,需要构建各种模型数据库,它们包括OPCUA 信息模型,工业4.0 管理壳(AAS),MTP 等等,将大量的模型放置在数据库中,作为一种服务供工程设计时引用。与此同时还需要构建各种所谓的本体数据,知识库,字典。这些模型都可以在图形数据库中存储。

为OPCUA 服务器增加graphQL 访问能力

        建议将 GraphQL API 作为 OPC UA 服务器的附加接口提供。这个额外的接口将允许使用 GraphiQL 工具从浏览器访问 OPC UA 服务器的数据和自检。GraphQL 接口还将使开发人员更容易访问 OPC UA 服务器,并提高 OPC UA 与标准 Web 技术的互操作性。这将使先进的数据驱动应用程序的开发成为可能,并为工业4.0铺平道路,在工业4.0中,网络物理系统通过网络相互通信。

相关的GitHub项目:

https://github.com/AaltoIIC/OPC-UA-GraphQL-Wrapper

结束语

        有时候我在想,在工业数字化的道路上,我们一定要跟着欧洲人的各种标准兜圈子么?相比之下,我国是一个新兴的独立经济体,技术的包袱不多,IT 技术发展迅速。能否采取更加扁平化的开放自动化技术与标准体系呢?比如,选择OPCUA 作为开放自动系统的技术底座,将所有其它的技术标准和模型全部导入到OPCUA 信息模型中来,真正实现统一的模型。而不是先构建各种模型,标准,最终又转换到OPCUA 模型,一步到位难道不香么?

        标准,协议,模型的扁平化是一个有趣的话题。大多数创新源自于混搭!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1433448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十二讲_JavaScript浏览器对象模型BOM

JavaScript浏览器对象模型BOM 1. 浏览器对象模型介绍2. location2.1 常用的属性2.2 常用的方法 3. navigator3.1 常用的属性 4. history4.1 常用的方法: 5. 本地存储 1. 浏览器对象模型介绍 BOM(Browser Object Model) 是指浏览器对象模型,浏览器对象模…

Unity3D实现坦克大战

一、效果图演示 二、逻辑剖析 从界面上: 需要一个Canvas满屏对着用户,该Canvas上展示用户的游戏数据,比如血条。需要一个Canvas放在蓝色坦克上方,也需要实时对着用户,显示敌人的血条信息两个坦克一个平面Plane放草地…

Nice Touch

Nice Touch是Unity最简单的多点触控输入解决方案,来自Corgi Engine和Infinite Runner Engine的制造商。所有功能完整文档论坛 功能列表: • 超级简单的设置 •兼容Unity的新旧输入系统 • 内置多点触控输入 •适用于所有移动设备 • 虚拟操纵杆 • 动态虚拟操纵杆 • 可重新定…

WebChat——一个开源的聊天应用

Web Chat 是开源的聊天系统,支持一键免费部署私人Chat网页的应用程序。 开源地址:https://github.com/loks666/webchat 目录树 TOC 👋🏻 开始使用 & 交流🛳 开箱即用 A 使用 Docker 部署B 使用 Docker-compose…

web前端-------弹性盒子(2)

上一讲我们谈的是盒子的容器实行,今天我们来聊一聊弹性盒子的项目属性; *******************(1)顺序属性 order属性,用于定义容器中项目的出现顺序。 顺序属性值,为整数,可以为负数&#xff…

由亚马逊云科技 Graviton4 驱动的全新内存优化型实例 Amazon EC2 实例(R8g),现已开放预览

下一代 Amazon Elastic Compute CloudAmazon EC2) 实例的预览版现已公开 提供。全新的 R8g 实例 搭载新式 Graviton4 处理器,其性价比远超任何现有的内存优化实例。对于要求较高的内存密集型工作负载,R8g 实例是不二之选:大数据分析、高性能数…

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式 基础(持续更新~)

具体操作: day2: 作用: 出现跨域问题 配相对应进行配置即可解决: IDEA连接的,在url最后加参数?useSSLfalse注意链接密码是123(docker中mysql密码) 注意,虚拟机中设置的密码和ip要和主机上…

代码随想录算法训练营第17天 | 110.平衡二叉树, 257. 二叉树的所有路径 ,404.左叶子之和

二叉树理论基础: https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 110.平衡二叉树 题目链接:https://leetcode.cn/problems/balanced-binary-tree…

2024最新最详细【接口测试总结】

序章 ​ 说起接口测试,网上有很多例子,但是当初做为新手的我来说,看了不不知道他们说的什么,觉得接口测试,好高大上。认为学会了接口测试就能屌丝逆袭,走上人生巅峰,迎娶白富美。因此学了点开发…

林浩然与杨凌芸的Java奇缘:一场继承大戏

林浩然与杨凌芸的Java奇缘:一场继承大戏 Lin Haoran and Yang Lingyun’s Java Odyssey: A Tale of Inheritance 在一个充满代码香气的午后,我们故事的男主角——林浩然,一个热衷于Java编程的程序员,正在和他的“梦中女神”、同样…

【蓝桥杯选拔赛真题64】python数字塔 第十五届青少年组蓝桥杯python 选拔赛比赛真题解析

python数字塔 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要求 (注:input()输入函数的括号中不允许添加任何信息) 提示信息: 数字塔是由 N 行数堆积而成,最顶层只有一个数,次顶层两个数,以此类推。相邻层之间的数用线连接,下一层的每个数与它上一层左上…

JS第二天、原型、原型链、正则

☆☆☆☆ 什么是原型? 构造函数的prototype 就是原型 专门保存所有子对象共有属性和方法的对象一个对象的原型就是它的构造函数的prototype属性的值。prototype是哪来的?所有的函数都有一个prototype属性当函数被创建的时候,prototype属性…

机器学习超参数优化算法(贝叶斯优化)

文章目录 贝叶斯优化算法原理贝叶斯优化的实现(三种方法均有代码实现)基于Bayes_opt实现GP优化基于HyperOpt实现TPE优化基于Optuna实现多种贝叶斯优化 贝叶斯优化算法原理 在贝叶斯优化的数学过程当中,我们主要执行以下几个步骤: …

前端 - 基础 列表标签 - 自定义列表 详解

使用场景 &#xff1a; 常用于对术语或名词进行解释和描述&#xff0c;定义列表的列表前没有任何项目符号。 在 HTML 标签中&#xff0c; < dl > 标签用于定义 描述列表 &#xff08; 或定义列表 &#xff09; 该标签会与 <dt> ( 定义项目/名字 ) 和 <dd…

vue不同环境配置不同打包命令

这个需求非常普遍&#xff0c;通常情况我们在开发的时候一般会有三个环境&#xff1a;开发环境、测试环境、生产环境&#xff0c;我们一步步来看下。 vue环境变量是什么&#xff1f; 指的是在不同地方&#xff08;开发环境、测试环境、生产环境&#xff09;&#xff0c;变量就…

【教学类-46-04】吉祥字门贴4.0(华文彩云 文本框 空心字涂色 建议简体)

作品展示 背景需求&#xff1a; 1、制作了空心字的第1款 华光通心圆_CNKI &#xff0c;发现它不能识别某些简体字&#xff0c;但可以识别他们的繁体字&#xff08;繁体为准&#xff09; 【教学类-46-01】吉祥字门贴1.0&#xff08;华光通心圆_CNKI 文本框 空心字涂色&#xf…

3D Line Mapping Revisited论文阅读

1. 代码地址 GitHub - cvg/limap: A toolbox for mapping and localization with line features. 2. 项目主页 3D Line Mapping Revisited 3. 摘要 提出了一种基于线的重建算法&#xff0c;Limap&#xff0c;可以从多视图图像中构建3D线地图&#xff0c;通过线三角化、精心…

如何在 Microsoft Azure 上部署和管理 Elastic Stack

作者&#xff1a;来自 Elastic Osman Ishaq Elastic 用户可以从 Azure 门户中查找、部署和管理 Elasticsearch。 此集成提供了简化的入门体验&#xff0c;所有这些都使用你已知的 Azure 门户和工具&#xff0c;因此你可以轻松部署 Elastic&#xff0c;而无需注册外部服务或配置…

链表经典算法(+OJ刷题)

文章目录 前言一、移除链表元素二、链表的中间节点三.反转链表四.合并两个有序链表五.分割链表六.环形链表的约瑟夫问题总结 创作不易&#xff0c;点赞收藏一下呗&#xff01;&#xff01;&#xff01; 前言 在上一节&#xff0c;我们介绍了单链表的增&#xff0c;删&#xff…

Oracle12c之Sqlplus命令行窗口基本使用

Oracle12c之Sqlplus命令行窗口基本使用 文章目录 Oracle12c之Sqlplus命令行窗口基本使用1. 连接1. 超级用户2. 普通用户1. 创建普通用2. 连接 2. 修改用户连接数1. 查看默认连接最多用户数1. PL/SQL developer中查看2. Sqlplus中查看 2. 查看目前已经连接的用户数3. 修改用户连…