SQLite数据库在雷达日志管理中的应用∗

2016-01-10 11:41:02
雷达科学与技术 2016年2期
关键词:记录表日志语句

(中国电子科技集团公司第三十八研究所,安徽合肥230088)

0 引言

军事雷达作为战争的产物和军中“千里眼”,从出现至今,已经成为各军事大国不遗余力地竞相发展的装备设施。随着技术的发展,现代雷达系统越来越复杂,这给雷达状态监视及使用维护提出了新的挑战。日志管理功能可以记录并管理雷达生命周期内的工作过程状态,包括雷达的控制、状态参数、故障信息、设备寿命等重要信息,这为装备的维护保障提供了科学的数据,本文主要介绍SQLite数据库在雷达日志管理中的设计及应用。

1 SQLite数据库概述

与传统C/S结构的各种大型关系数据库(如Oracle,SQL Server,MySQL等)相比,SQLite是一个轻量级的关系数据库,具有三级模式的结构体系,即用户模式、逻辑模式和存储模式[1]。相对于传统数据库,SQLite具有更好的实时性、系统开销小、底层控制能力强。SQLite能够高效地利用有限资源、提高数据的存取速度、增强系统的安全性,并具有如下关键特点[2]:

1)零配置。SQLite在使用前不需要安装设置,不需要进程来启动、停止或配置,不需要管理员去创建新数据库或分配用户权限,在系统崩溃或失电之后自动恢复。

2)支持绝大多数SQL-92标准的SQL命令,支持视图、触发器,支持嵌套SQL,具有事务处理功能,自动维护事务的完整性、原子性等特性,支持实体完整性和参照完整性。

3)无需安装数据库引擎。使用SQLite时,访问数据库的程序直接从磁盘上的数据库文件读写,没有中间的服务器进程。

4)支持多种开发语言和数据库平台无关性,支持大多数计算机语言,支持 Windows/Linux/Unix/Mac OS等主流的操作系统,可实现数据库文件在机器之间自由共享。

5)精简性与简单访问。优化后整个SQLite库小于225 KB。一个SQLite数据库是一个单独的普通磁盘文件,能够被定位在路径层次的任何地方。

6)数据存储量大。数据存储在单个物理文件中,支持2 TB的数据存储。

7)源码完全开放。使用者可用于任何非商业和商业用途。

SQLite数据库主要由4部分组成:内核(Core)、SQL编译器(SQL Compiler)、后端(Backend)以及附件(Accessories),内部结构如图1所示[3]。

最后,本文存在两个问题可以进一步改进:第一,使用跨越时间更长的面板数据得到的两步估计值更加稳健,但由于数据局限,目前无法实施;第二,其他因素,如预期、相对收入等对主观幸福感的影响在整个分布上的变化如何,以及中国其他群体,如农村居民、城市移民、老年人等主观幸福感的决定因素用面板分位数回归方法分析后得到的结论又有何异同,需要更深一步地研究。

图1 SQLite的内部结构

SQLite的接口是一些已经编写好的C库,即使使用不同语言的API,在底层仍然使用C库执行。SQL语句通过接口进入到高效的SQL编译器,由标记处理器(Tokenizer)分解成分析器(Parser)可以识别的各个标志符,然后由分析器重新组合标志符并调用代码生成器(Code Generator)生成虚拟机器码,交由虚拟机(Virtual Machine)去执行,最终完成SQL语句指定的任务。虚拟机是SQLite内部结构的核心,不仅完成与数据操作相关的全部操作,而且还是客户和存储之间信息进行交换的中间单元。数据库按照B树(B-tree)的形式存储在磁盘上,通过可调整的页面缓冲(Pager)获得对数据的快速查找和存储。为了方便移植,SQLite使用一个抽象层接口(OS Interface)与不同操作系统进行对接。

2 SQLite数据库在雷达中的部署

SQLite数据库在雷达中的部署如图2所示。雷达综合监控计算机作为雷达监控系统的“中枢神经”,实现发射监控、接收监控、伺服监控、信号监控、终端监控的状态信息采集、识别、分类与处理,通过以太网发送给雷达显控计算机,雷达显控软件对各分系统的状态进行识别、分类、编码后,录入嵌入式数据库SQLite中,完成系统状态的日志记录;雷达显控接收操纵员的控制命令,完成雷达整机的工作状态控制,这些控制命令进行分类编码后通过内部以太网发送到综合监控,由综合监控完成控制日志的统一管理;操纵员通过雷达显控发出日志查询指令时,由综合监控通过SQLite数据库接口实现日志的快速检索,把结果返回给雷达显控进行实时显示。

图2 SQLite数据库部署图

SQLite数据库创建及连接接口函数为sqlite3_open,在综合监控中的实现如下:

3 雷达日志数据库的设计

所谓日志,是指系统或设备所指定对象的某些操作及其操作结果按时间有序的集合[4]。日志由日志记录组成,每条日志记录描述了一次单独的事件。与一般的原始数据相比,日志通常是一种半结构化的数据,它包含了一个时间戳和一个消息或者系统所特有的其他信息。日志是系统状态变化的反映,是对系统的状态和活动的流水记录[5]。

雷达日志可分为操作日志、故障日志、状态日志、告警日志,如图3所示。对日志进行分类记录有利于操纵员按类型进行查询检索,方便系统维护管理。操作日志记录雷达操纵员控制输入指令信息,用于完整记录雷达的控制流程,包括操纵员信息、控制对象、控制指令、控制参数、时间等;故障日志记录雷达的故障信息,用于分析雷达故障发生的背景及故障原因,包括故障名称、所属分系统、故障时间;状态日志记录雷达工作状态参数信息,包括天线转速、工作频率、信号处理参数、发射机功率参数、定北参数等;告警日志记录雷达的异常信息、严重故障的重要信息。

图3 SQLite的内部结构

根据雷达日志的分类及特点,需要创建3张表,分别是日志类别表、日志类型表、日志记录表,SQL语句的接口函数为SQLITE_API int sqlite3_exec(sqlite3∗,const char∗sql,int(∗callback)(void∗,int,char∗∗,char∗∗),void∗,char∗∗errmsg)。

1)日志类别表

日志类别表用于存放4种类日志的结构信息,其结构如表1所示。

表1 日志类别表

添加日志类别的SQL语句为:“INSERT INTO TABLE_LOG_KIND(Log KindID,Log Kind-Name)VALUES(%d,′%s′);”。

2)日志类型表

日志类型表用于存放雷达日志详细分类的结构信息,包括类型编号、所属类别、类型代码、类型名称,其结构如表2所示。

创建日志类型表的SQL语句为:“CREATE TABLE IF NOT EXISTS TABLE_LOG_TYPE(Log TypeID INTEGER PRIMARY KEY AUTOINCREMENT,Log KindID INTEGER,Log-TypeCode VARCHAR(20),Log Type Name VARCHAR(50));”。

添加日志类型的SQL语句为:“INSERT INTO TABLE_LOG_TYPE(Log KindID,Log TypeCode,Log TypeName)VALUES(%d,′%s′,′%s′);”。

3) 日志记录表

日志记录表用于记录雷达运行过程的操作及状态的真实信息,包括日志编号、所属日志类型、日志参数、用户名、日志产生时间,其结构如表3所示。

表3 日志记录表

创建日志记录表的SQL语句为:“CREATE TABLE IF NOT EXISTS TABLE_LOG_RECORD(RecordID INTEGER PRIMARY KEY AUTOINCREMENT,Log TypeID INTEGER,LogPara BLOB,User Name VARCHAR(20),Record Time REAL);”。

添加雷达日志记录的SQL语句为:“INSERT INTO TABLE_LOG_RECORD(Log TypeID,LogPara,User Name,Record Time)VALUES(%d,′%s′,′%s′,%f);”。

检索雷达日志的SQL语句为:“SELECT RecordID,TABLE_LOG_RECORD.Log TypeID,LogPara,User Name,Record Time FROM TABLE_LOG_RECORD,TABLE_LOG_TYPE”。

4 数据库检索及显示

数据库的记录主要用于对事件及行为的实时存储,而数据库的检索则用于业务的分析及事务的处理,也是日志管理最终的结果体现。在SQLite中,数据库的检索包括如下接口函数:

数据库检索结果的人机界面显示如图4所示。

图4 数据库检索及显示

5 结束语

SQLite以体积小巧、快速高效、稳定可靠、易移植性好等优势成为嵌入式数据库领域的新宠。本文介绍了SQLite数据库在雷达系统中的部署、数据库表结构的设计,以及日志的记录与检索方法。工程实践表明,SQLite数据库具有存储量大、性能高和跨平台的特点,能够满足雷达系统中对日志数据存储和管理的功能需求。

[1]ALLEN G,OWENS M.SQLite权威指南[M].2版.杨谦,刘义宣,谢志强,译.北京:电子工业出版社,2012.

[2]王春艳,李帅.SQLite在飞艇监控中的应用与优化[J].雷达科学与技术,2014,12(6):609-612.WANG Chunyan,LI Shuai.Optimization and Appli-cation of SQLite in Monitoring and Control System of Airship[J].Radar Science and Technology,2014,12(6):609-612.(in Chinese)

[3]SQLite.The Architecture of SQLite[EB/OL].[2015-06-21].http://www.sqlite.org/arch.html.

[4]林晓东,刘心松.文件系统中日志技术的研究[J].计算机应用,1998,18(1):28-30.

[5]罗自立,薛质,李建华.基于Linux环境的主机日志自动审计技术[J].信息安全与通信保密,2004(7):43-45.

猜你喜欢
记录表日志语句
2022.04.21~2022.05.20国外运载火箭发射记录表
太空探索(2022年6期)2022-06-23 06:25:26
2022.1.21~2022.2.20国外运载火箭发射记录表
太空探索(2022年3期)2022-03-28 08:21:52
一名老党员的工作日志
华人时刊(2021年13期)2021-11-27 09:19:02
2021.01.21~2021.02.20 国外运载火箭发射记录表
太空探索(2021年3期)2021-03-19 09:14:00
2020.7.21~2020.8.20国外运载火箭发射记录表
太空探索(2020年9期)2020-09-16 10:56:16
扶贫日志
心声歌刊(2020年4期)2020-09-07 06:37:14
重点:语句衔接
精彩语句
游学日志
如何搞定语句衔接题
语文知识(2014年4期)2014-02-28 21:59:52