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

图模型

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

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

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

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

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

定义

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

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

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

图形数据库(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 的优点是只需要一个查询就可以访问多个资源的数据。

构建模型数据库

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

结束语

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

        标准,协议,模型的扁平化是一个有趣的话题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

认识Tomcat (一)

认识Tomcat (一) 一、服务器 1.1 服务器简介 ​ 硬件服务器的构成与一般的PC比较相似,但是服务器在稳定性、安全性、性能等方面都要求更高,因为CPU、芯片组、内存、磁盘系统、网络等硬件和普通PC有所不同。 ​ 软件服务器&…

数据分析:当当网书籍数据可视化分析

当当网书籍数据可视化分析 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论&…

便宜寄快递,就选闪侠惠递,帮您省钱!

随着电子商务的发展,物流也越来越发达,人们的生活中有很多地方都与物流快递打交道。网购或者给远方的亲戚朋友寄礼物等等都需要快递。有时候就止步于昂贵的快递的,其实选对方法,寄快递并不贵... 编辑 现在一般寄快递都是选择去菜鸟…

第三百零七回

文章目录 1. 概念介绍2. 使用方法3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何在输入框中提示错误"相关的内容,本章回中将介绍如何在输入框中处理光标.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在使用TextField组件作为…

OpenCV 配置选项参考

介绍 注意 我们假设您已经阅读了 OpenCV 安装概述教程或具有使用 CMake 的经验。 可以通过几种不同的方式设置配置选项: 命令行:cmake -Doptionvalue ...初始缓存文件:cmake -C my_options.txt ...通过 GUI 进行交互 在本参考中&#xff…

InstantID:一张照片,无需训练,秒级个人写真生成

1. 引言 InstantID是一种基于扩散模型的强大解决方案。设计的即插即用模块仅使用单个面部图像就能熟练地处理各种风格的图像个性化,同时确保高保真度。它的核心是设计了一个新颖的 IdentityNet,通过强加语义和弱空间条件,将面部和地标图像与…

jmeter-04创建请求

文章目录 一、发送请求-查看响应流程二、新建请求三、选择请求方式,填写url1.发送get请求当只有请求方式不一样的时候,参数都填写在参数栏里面,GET请求与POST请求的区别? 2.发送post请求2.1 application/x-www-form-urlencoded2.2…

ele-h5项目使用vue3+vite+vant4开发:第四节、业务组件-SearchView组件开发

需求分析 展示切换动画搜索框输入文字&#xff0c;自动发送请求搜索结果展示搜索状态维护历史搜索展示&#xff0c;点击历史搜索后发送请求历史搜索更多切换动画效果 <script setup lang"ts"> import OpSearch from /components/OpSearch.vue import { ref } f…

Jenkins(本地Windows上搭建)上传 Pipeline构建前端项目并将生成dist文件夹上传至指定服务器

下载安装jdk https://www.oracle.com/cn/java/technologies/downloads/#jdk21-windows 下载jenkins window版 双击安装 https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/ 网页输入 http://localhost:8088/ 输入密码、设置账号、安装推…

Ainx框架实现 一

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d7;本文收录于Ainx系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列…

Mysql+MybatisPlus+Vue实现基础增删改查CRUD

数据库 设计数据库 设计几个字段&#xff0c;主键id自动增长且不可为空 create table if not exists user (id bigint(20) primary key auto_increment comment 主键id,username varchar(255) not null comment 用户名,sex char(1) not null comment 性…

C++弹球游戏:Jump Ball Game

一、下载压缩包 请查看网站C弹球游戏&#xff1a;Jump Ball Game并且下载&#xff0c;可以看到如下界面&#xff1a; 二、匹配图标 把压缩包解压了&#xff1a; 右键点击Jump Ball Game.lnk&#xff0c;点击“属性”它将会是我们要运行的文件。 点击“更改图标”&#xff0c;选…

【HarmonyOS 4.0 应用开发实战】ArkTS 快速入门

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

344. Reverse String(反转字符串)

题目描述 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 问题分析 以中间字符为轴&#xff0c;将两边的字符对换…

Python 轻量级定时任务调度:APScheduler

简述 APscheduler (Advanced Python Scheduler)&#xff0c;作用为按指定的时间规则执行指定的作业。提供了基于日期date、固定时间间隔interval 、以及类似于Linux上的定时任务crontab类型的定时任务。该框架不仅可以添加、删除定时任务&#xff0c;还可以将任务存储到数据库…

浅谈Zookeeper及windows下详细安装步骤

1. Zookeeper介绍 1.1 分布式系统面临的问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上&#xff0c;彼此之间仅仅通过消息传递进行通信和协调的系统。 面临的问题&#xff1a;系统每个节点之间信息同步及共享 以一个小团队为例,面临的问题 通过网络进行信息…

蓝桥杯---生日蜡烛

某君从某年开始每年都举办一次生日party&#xff0c;并且每次都要吹熄与年龄相同根数的蜡烛&#xff0c;现在算起来&#xff0c;他一共吹熄了236根蜡烛。请问,他从多少岁开始过生日party的? 请填写他开始过生日 party的年龄数。 注意:你提交的应该是一个整数&#xff0c;不要…

二分查找第二弹

目录 力扣852.山脉数组的峰顶索引 力扣162.寻找峰值 力扣153.寻找旋转排序数组中的最小值 力扣剑指Offer53.0-n-1缺失的数字 力扣852.山脉数组的峰顶索引 峰顶之前的全部比他小&#xff0c;峰顶之后的也比他小&#xff0c;把小于等于和大于分成两段 class Solution {publi…

TQ15EG开发板教程:使用vivado2023.1建立hello world工程

1:打开软件建立工程 2:使用vivado创建设计模块并生成bit文件 3:导出硬件平台&#xff0c;使用vitis建立工程 4:使用vitis创建应用程序项目 5:硬件设置与调试 1:打开软件建立工程 打开VIVADO2023.1 创建一个新的工程 输入项目名称和地址&#xff0c;下面那个选项为是否…

深入了解关联查询和子查询

推荐阅读 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;一&#xff09; 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;二&#xff09; 文章目录 推荐阅读关联查询子查询 关联查询 关联查询 从多张表中查询对应记录的信息&#xff0c;关联查…