admin 管理员组

文章数量: 1086019


2024年3月13日发(作者:java中数组转字符串)

龙源期刊网

一种基于SQLite内存数据库的监控系统设

计与实现

作者:何云 周雅云 谢明军

来源:《中国科技博览》2014年第34期

[摘 要]随着工厂对电气系统运行及管理要求的不断提高,迫切需要一套简洁高效的电气监

控系统。本文提出了利用Qt作为监控系统的软件开发平台,采用SQLite作为系统的内存数据

库,极大减轻了系统在实时数据库处理方面的工作量,而且利用成熟的技术提高了系统的可靠

性。同时由于SQLite数据库可以被多个进程同时访问,系统中的各个模块都被设计成独立的

进程,模块之间的耦合更小,使得系统的运行更加稳定。

[关键词]SQLite,;内存数据库; Qt插件;电气监控系统

中图分类号:TP274+.2 文献标识码:A 文章编号:1009-914X(2014)34-0211-01

引言

电气系统是工厂持续生产的重要保证,为了提高电气系统运行及管理水平,迫切需要采用

先进的计算机信息技术,开发一套简洁高效的电气监控系统。 本文提出了利用SQLite作为监

控系统的实时数据库和系统数据配置库、利用Qt插件开发通讯规约模块、利用Qt Script模块

设计报表计算、开发了一套高效的跨平台监控系统。

1 SQLite介绍

SQLite是一个开源的嵌入式关系数据库,在2000年由D. Richard Hipp发布。SQLite可以

减少应用程序对数据管理的开销,它的可移植性好,容易使用,占用空间小很小,高效而且可

靠,因此不少应用程序都采用SQLite来管理和组织数据。

未经过加密的 SQLite 数据库文件可以在不同的平台上使用,SQLite'安装所占用的空间非

常小,运行时占用的内存很小,而且生成的数据库也更小。SQLite 支持大部分的SQL92 标

准,支持命名和未命名的参数以UTF-8 和UTF-16 编码通过优化的管道传入SQLite 内核。同

时SQLite的源代码是公开的. 无论是个人还是商业应用都没有任何的协议约束。

2 SQLite数据库性能分析

SQLite数据库同时支持文件和内存两种模式。在打开SQLite数据库的时候,如果使用的

数据库文件名为”:memory:”,数据库的内容就会始终驻留在内存并且不会产生任何的磁盘

文,件。由于没有持久化,该数据库在当前数据库连接被关闭后就会立刻消失,因此我们必须

定期或在程序关闭的时候将内存数据库的内容写入到磁盘中。

龙源期刊网

SQLite基于内存和文件这两种方式在查询操作上表现出来的性能上差别不大,但由于插

入、更新和删除操作需要将内容更新到磁盘,因此它的操作时间比查询来的要久,而基于内存

模式的操作则性能比较出色。

3 电气监控系统的设计与实现

电气监控系统的设计与实现由告警模块、历史数据查询模块、规约管理模块、主接线图模

块、逻辑图模块、日志模块、装置信息定义模块、实时数据显示模块、算法控制模块和数据库

模块组成。其中数据库模块由以下几个部分组成:实时数据库、配置数据库和历史数据库这三

个模块组成。

实时数据库采用基于SQLite内存模式的数据库,配置数据库采用基于SQLite文件模式的

数据,历史数据库由于需要存储的数据比较大,因此采用MySQL 5.0进行数据存储。内存数

据库通过加载配置数据库进行构建。在配置或运行过程中,系统也会将实时数据的内容写入到

配置数据库和历史数据库。在Qt中,可以通过QSqlDatabase这个类对数据库进行操作,这个

类对ODBC、Oracle、MySQL、SQLite、SQLServer以及PostgreSQL进行了封装并提供了统一

的访问操作接口。开发者只需要指定不同数据库源,就可以很方便的对各种不同类型的数据库

进行操作。由于实时数据库和配置数据库都采用SQLite作为它的数据库,因此两者之间的兼

容性极佳。

电气监控系统接入规约的实现采用了Qt Plugin的方式,各个规约模块由规约管理模块统

一进行加载和管理。当规约采集到遥信变位、遥测变位等信息后,通过Qt的Signal/Slot机制

将数据变化信息发送到EventBus这个模块,界面模块连接到EventBus模块获取数据变化信息

并在界面上进行显示更新。

Qt Plugin是Qt提供的一种插件架构,插件通过预定义的标准接口同主程序互相交互,以

实现特定的功能。采用插件方式进行架构设计,由于各插件之间相互独立,使得整个图形平台

结构清晰易懂。同时插件仅与主程序之间通过接口联系,图形平台须增加、删除或修改某项功

能时仅需修改其对应的插件,其扩展、升级与维护相当容易。

由于电气监控系统需要将一些实际的遥测/遥信合并成虚遥信,为了让系统对这些数据处

理看起来更加统一,因此开发了虚拟规约这个模块。

5 总结

通过Qt的Signal/Slot机制,有效的实现了事件消息在各个模块之间的传递,使得系统设

计更合理、模块结构更独立、容易进行软件维护和代码二次开发。采用Qt插件方式设计的规

约模块使得系统在通讯方面的处理更加灵活,规约模块可以很方便的进行修改和替换,极大提

高了系统的可定制性。采用SQLite作为系统的内存数据库,极大减轻了系统在实时数据库处

理方面的工作量,而且利用成熟的技术提高了系统的可靠性。同时由于SQLite数据库可以被

龙源期刊网

多个进程同时访问,系统中的各个模块都被设计成独立的进程,模块之间的耦合更小,从而系

统的运行也变得更加稳定。

参考文献

[1] 郭庆来,孙宏斌,张伯明,李钦,刘崇茹,李尹,杨志新,王小英,李海峰.江苏电网

AVC主站系统的研究和实现[J].电力系统自动化,2004,28(22):83-87.

[2] 李钦,温柏坚.广东电网电厂AVC子站建设研究[J].电力系统保护与控制,2008,36

(21):38-42.


本文标签: 数据库 模块 系统 采用 内存