数据同步详解
AIRIOT 表除在平台表之间进行字段关联数据同步引用外,还可同步本地及第三方数据库数据,支持常用数据库,包括达梦、MySQL、PostgreSQL、SQLite3、Oracle 、SQLServer、MONGO、ACESS和DATAsourse 等。下面以 MySQL 为例介绍表数据同步的实现。
MySQL 数据库基础
数据库是按照某种数据结构对数据进行组织、存储和管理的容器。MySQL 是最流行的关系型数据库管理系统之一,通过 MySQL,数据库用户可以轻松地实现数据库容器中各种数据库对象的访问,如增、删、改、查等操作,并可以轻松地完成数据库的维护工作,如备份、恢复、修复等。 下面以 Windows 10 系统的 MySQL 数据库为例介绍数据同步功能。 本书对数据库的安装不再介绍,默认用户已安装完成 MySQL 数据库,创建用户并授权操作如图 59 所示,共 4 个步骤。
创建用户:命令为“CREATE USER '用户名' @ 'IP' IDENTIFIED BY '密码';”,IP 为%表示允许所有 IP 登录。
授权:授予所有权限命令为“GRANT ALL PRIVILEGES ON . TO '用户名' @ '%' WITH GRANT OPTION;”。
刷新权限:更新权限后须刷新权限,命令为“FLUSH PRIVILEGES;”。
更改密码方式:远程登录须更改密码方式,命令为“ALTER USER '用户名' @ '%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '密码';”。 此时,局域网内任何 IP 均可通过新用户和密码登录数据库,并具有所有操作权限。
Navicat Premium
Navicat Premium 是一款数据库管理工具,用户可以以单一程式同时连线到 MySQL、SQLite、Oracle、MariaDB、Mssql、及 PostgreSQL 数据库,让管理不同类型的数据库更加方便。本书利用 Navicat Premium 进行数据库管理。Navicat Premium 安装简单,本书不再对安装进行介绍。
链接数据库:打开 Navicat Premium 软件,单击“文件”à“新建连接”à“MySQL…”弹出新建连接界面,如图5-10所示。填完信息后单击“测试连接”按钮,弹出“连接成功”提示。单击“连接成功”提示中“确定”按钮,返回新建连接界面,单击界面下方“确定”按钮,退出新建连接界面,此时Navicat Premium主界面左侧显示已连接的数据库,表示成功连接数据库。此时尚未打开数据库(图标为灰色),双击已连接的数据库,可打开数据库(图标为绿色)
新建数据库:选中打开的数据库,按步骤“右键”à单击“新建数据库”,打开新建数据库界面,如图所示,填写完信息后单击“确定”按钮,退出新建数据库界面,返回 Navicat Premium 主界面,如图所示。在 ceshi2 下多出数据库 ceshi,可对其进行新建表、查询、增、删、查、改等操作,本例中新建了一个表,表名为 user,有 id 和 name 两个字段。
插入数据:单击界面左下角“+”图标,可插入数据,如图所示,各字段信息填完后,单击“√”图标,完成该数据插入。在新建数据库及表时,字符集均为“utf8”,字符规则均为“utf8_general_ci”,方可输入汉字,否则输入汉字时会报错。
查询数据:根据步骤单击“查询”à单击“新建查询”à输入“指令”à单击“运行”可查询数据,查询结果显示界面下方,如图所示。
添加表同步数据库
添加一个新的“用户”表,用来同步 MySQL 数据库中的用户信息。
- 基本信息:“用户”表的基本信息如图所示,表名称为“用户”,表标题为“用户”。
- 控件信息:表定义中的控件与系统模型管理中属性设置页面控件定义相同,详情见系统模型管理中属性设置页面控件解释。
- 同步数据:同步数据配置如图所示。
- 关系库名称:关系库名称为下拉列表,选项包括 MYSQL、POSTGRE、SQLITE3、ORACLE 和 SQLSERVER,分别对应 MySQL、PostgreSQL、SQLite3、Oracle 和 SQLServer 五种数据库。这里选择 MYSQL。
- 用户名和密码:用户名和密码为要同步数据库的用户名和密码。
- IP 地址:IP 地址为要同步数据库的 IP 地址。
- 端口:端口为要同步数据库的端口,一般数据库安装时默认端口为 3306。
- 数据库名:数据库名为要同步数据库的名字。
- SQL 语句:用于获取数据库中数据,采用 SELECT 语句,遵循相应数据库规范,MySQL 中推荐格式为“SELECT 字段 1,字段 2,……,字段n FROM
表名
WHERE 字段1 > '{{字段1}}' ORDER BY 字段1 ASC LIMIT 3”。其中“表名
”两端为反单引号,“'{{字段1}}'”两端为单引号,“ORDER BY 字段1 ASC”表示按字段1升序获取,“DESC”为降序,“LIMIT 3”为一次获取的最大数据条数。本例中为“SELECT number,name FROMusr
WHERE number> '{{number}}' ORDER BY number ASC LIMIT 3”,表示从usr表中获取number和name两个字段,规则为number大于AIRIOT中number时一次最多获取3条数据,数据按number升序排序。 - 采集周期:采集周期为同步数据的时间间隔,单位为 s,这里为 10s。
- 列集合:列集合与 SQL 语句对应,用于设置获取规则,列集合配置如图所示。列名“number”与 SQL 语句中及表定义中序号的“key”一致。
- 检测链接:用于检测数据库是否成功链接,单击“检测数据库链接”按钮,弹出链接结果提示,成功为,否则为链接失败,用户名、密码、IP 地址等设置错误均会导致链接失败。
配置完成后,单击“保存”按钮,返回表页面,并提示“保存表成功”,若设置无误,则数据库中数据将同步至“用户”表,同步数据后“用户”表查看页面如图所示,存在 2 条数据,正是从数据库中同步上来的数据。
在数据库 user 的 usr 表中添加 2 条数据,如图所示。刷新“用户”工作表查看页面,刷新后“用户”工作表查看页面如图所示,usr 表中新添加的数据已经同步至工作表中。