前语

在ignition的模块化架构中,供给了与数据库功能相关的SQL Bridge模块,可是ignition中和数据库相关联的技能并不少,经过ignition供给的数据库相关的功能,ignition项目和数据库交互是很轻松和方便的,毕竟封装程度高,相对于Java中的Mybaits和Hibernate等ORM结构来说更加便当。

ignition在以下的技能上能够全面实现对数据库的相关操作。

  1. 数据库驱动和衔接
  2. 数据库衔接的检查和运用
  3. Datasource Query Browser
  4. Named Query
  5. Query Binding
  6. Tag History
  7. Scripting
  8. 其他:Reporting、Alarming Journal等

数据库驱动和衔接

在ignition中,支撑以下数据库:MySQL、MariaDB、Oracle、SQL Server、SQLite、PostgreSQL、FireBird、IDM DB2。其间,MariaDB和MySQL用的都是MySQL的驱动,其他数据库都有其对应的驱动。下图展现了ignition的数据库驱动和衔接的目录。

ignition中的数据库

衔接数据库之前需求先装备对应的数据库驱动,驱动装备页如下图所示::

ignition中的数据库
挑选对应的驱动并匹配和设置相关的特点即可完结数据库驱动的装备,装备好数据库驱动后在树立数据库衔接时,挑选要树立的对应的数据库衔接后,能够装备数据库驱动和该数据库衔接的相关信息。部分信息能够不必装备也能完结数据库衔接的装备,可是像数据库用户名、暗码和驱动等衔接信息是必需求装备的,否则无法树立数据库衔接,数据库衔接部分装备信息如下图所示:

ignition中的数据库

数据库衔接的检查和运用

数据库衔接的检查和运用在网关和项目中都供给了对应的窗口和技能,下面别离从网关和项目二个层面来看看数据库衔接的检查和运用。

网关层面

ignition中能够装备多个数据库驱动,而且一起装备多个数据库衔接,而且都能在项目中运用。 在网关的如下目录中能够装备项意图默许数据库衔接,这样在项目中运用时,假如没有指定数据库衔接都会默许运用以下的数据库衔接来履行对数据库的相关操作。

ignition中的数据库
ignition中的数据库

一起,在如下目录找到对应的数据库衔接点击“Details”能够检查数据库衔接的相关信息,包括该数据库衔接有多少衔接、该数据库衔接每秒履行的SQL数量及其最近履行的SQL信息,在履行的SQL的相关信息下能够看到履行SQL运用的时刻,在装备数据库衔接时能够设置慢查询的阈值,假如SQL履行时刻超过了阈值,则该SQL也相同会被记录下来。

ignition中的数据库
ignition中的数据库

项目层面

项目开发时能够在“project property editor”中修正该项目运用的默许数据库衔接,该数据库衔接的装备与网关中设置的该项意图默许数据库衔接保持同步。在开发项目时,直接在项目中的数据库衔接修正会便当许多。

ignition中的数据库

Datasource Query Browser

Datasource Query Browser在项目开发界面菜单栏中Tools > Datasource Query Browser能够找到并翻开相关的界面。Datasource Query Browser是ignition内置的数据库工具,在Datasource Query Browser中能够挑选对应的数据库衔接,而且可视化的检查该数据库衔接的数据库、数据表和详细的表结构信息。一起,在输入框中支撑直接编写SQL句子对数据库进行增修正查。假如没有挑选对应的数据库衔接,则运用项目和网关中设置的默许数据库衔接进行相关操作。修正对应的数据库衔接后,点击周围的改写按钮能够改写并检查新数据库衔接的数据库信息和表信息。

ignition中的数据库

Named Query

Named Query存在于项目开发界面中,Named Query的效果是参数化SQL句子,类似于Java中Dao层运用的ORM结构。Java中写Mapper时,通常需求参数化SQL句子进行查询数据库,Named Query也是相同的功能。Named Query在运用Query Bingding时能够直接调用对应的Named Query,在写Scripting时,也能够直接调用Named Query进行运用,一起ignition装备了system.db.runNamedQuery函数来直接对Named Query中设置的句子进行调用。

Named Query的装备

下图为Named Query的创建页面,创建时能够挑选三种Named Query句子,如下图,三种类型别离Blank Query(空白查询)、Select Query、Update Query。Blank Query适用于一切类型,Select Query和Update Query别离用于查询和增修正。输入框中输入的内容即对该条Named Query的命名,一切对该条Named Query的调用都匹配该名字。

ignition中的数据库
下图为Named Query的Authoring装备页面,能够挑选数据库衔接(没有挑选则运用默许数据库衔接)、挑选Query类型(等同于Blank、Select、Update)、装备参数和参数化SQL句子。在Named Query中setting页面能够装备该Named Query适用的Security Zone,而Testing则能够对装备的参数化SQL句子进行测试检查实际效果,方便更改和装备该Named Query。

ignition中的数据库

Query Bingding

Query Binding是binding中的一种类型,在给组件和点位添加binding时挑选Query就是Query Binding。在Perspective中的Query Binding与Named Query中组合运用。下图中,点击Path输入框尾部的搜索按钮能够检查并挑选Query Binding所运用的Named Query进行绑定。“Return Format”操控该SQL句子查询后回来的数据的格局,能够挑选JSON、Dateset、Scalar三种格局回来查询数据,其间Auto是主动判别回来数据的格局。挑选了对应的Named Query后,下方会显现传入的参数和SQL句子。options、Transform、Binding Preview都是Binding中的通用项,鼠标悬停在选项上方时会呈现提示,依据需求挑选是否勾选。

需求提一下的是Binding Preview不同显现内容的意义:假如SQL及其参数、Transform都没有反常的状况下,下面显现的是正常数据(没有报错,显现了成果,并不证明成果会一定正确)。假如SQL及其参数装备过错,有反常的话会显现Error_Configuration。假如SQL及其参数装备正确,可是Transform时呈现了不匹配的成果和反常时就会显现Error_ScriptEval。假如是图中所示状况即代表SQL或许其参数装备出错,可是Transform却正确转化出了一个0行0列的dataset,这个也是归于反常,因为该Transform中编写的代码依据你SQL获取到的数据转化为dataset,并没有做 判空和健壮性等的操作,Transform转化的是一个空数据,自然就是0行0列的dataset了。

ignition中的数据库

Tag History

数据库在ignition中也作为历史数据查询,经过设置点位的“History”特点,能够将该点位的数据实时存入数据库,一段时刻后,这些存储的数据就成为了历史数据,经过报表查询数据库就能够展现历史数据。设置“history enabled”特点为true,开启历史数据,下面能够设置Deaband Style和Mode等数据存入数据库的规则。Deaband Style有二种:Discrete离散量和Analog模拟量。Discrete:新值(V1)将仅在以下状况下存储:|V1-V0| >=HistoricDeadband。Analog:每次标签的值发生变化时,会运用存储在内存中的斜率值计算上斜值和下斜值来确定是否存储。采样形式sample mode能够挑选on change、Periodic、Tag Gruop,别离代表点位值改变时取样、守时取样和根据Tag Group取样。

ignition中的数据库

Scripting

ignition中封装了许多的DB相关的函数,如下图截取的部分DB函数:

ignition中的数据库

这些函数能够在Scripting、Transform、Gateway Events、Client Events、Tag Evnent等编写脚本代码的当地进行运用,可是运用时需求注意的是各个函数的效果域。详细的函数参数和运用规定在system function中的db函数内都有描绘,在菜单栏Toos > Script Console中,经过“system.db.”也能够检查相关函数及其描绘。

其他:Reporting、Alarming Journal等

Reporting中能够设置数据源和数据库,设置SQL参数和Script代码也能够直接从数据库中拉取历史数据构成报表。 Alarming Notification中经过设置点位的报警装备和信息后,能够将报警日志存储在数据库中,一起Alarm journal中也存储了历史的报警日志数据信息。