APP下载

一种雷达目标数据库并发控制方法

2018-10-12任雪峰王善民秦亚萍管志强

雷达与对抗 2018年3期
关键词:数据库系统数据量离线

任雪峰,王善民,杜 清,秦亚萍,管志强

(1. 海军驻南京地区雷达系统军事代表室,南京 210003;2. 中国船舶重工集团公司第七二四研究所,南京 211153)

0 引 言

随着雷达技术的不断发展,各种使用环境下的雷达不断出现。雷达目标数据库用于收集、整理、存储和处理各种雷达在探测过程中获取的目标数据。这些海量的雷达目标数据对于目标识别、数据挖掘、情报分析等具有重要意义。

雷达目标数据库系统可关联多台雷达探测设备,需要加载的目标数据也来自不同的设备。有的设备持续运行,定期上传累积的目标数据。有的设备则是不定期运行,需根据指令离线统一加载所存储的目标数据。因此,雷达目标数据库的目标数据加载是一个高并发的多事务处理过程。如果并发操作不当,则易引起事务长期独占数据库、事务间资源冲突导致死锁或并发的各事务存取的数据不正确。

数据库系统对于访问的并行处理机制解决了多事务对同一数据库记录操作的顺序问题,但它所解决的是在同一时刻多用户对同一记录的使用控制,避免出现同步更新写入的情况冲突,并不能从逻辑上保证数据并发操作后的正确性。

本文分析了现有雷达目标数据的加载工作流程及其在并发控制时出现的问题,并针对该问题提出一种雷达目标数据库加载的并发控制方法,保障数据库并发事务操作的正确性。

1 现有雷达目标数据的加载工作流程及其缺陷

在某型雷达目标数据库系统中,雷达目标数据库的目标数据加载由系统中不同的应用程序来完成。在加载过程中,每一个访问数据库的应用程序对应一个加载事务。按照某型雷达目标数据库系统的应用情况,目标数据的加载可概括为两类:周期循环加载和离线存储加载。

周期循环加载是指对于持续工作运行的雷达探测设备,雷达目标数据库系统在收到其发送来的实时探测的目标数据后,先将处理过的数据进行本地缓存,在加载周期达到后将本周期的目标数据向雷达目标数据库加载。

离线存储加载是指对于非持续运行的或与雷达目标数据库系统无通讯连接的雷达探测设备,通过专用的离线存储设备收集存储在雷达探测设备上目标数据后向雷达目标数据库一次性加载。

1.1 周期循环加载的工作流程

雷达目标数据库的周期循环加载的工作流程如下:

(1) 雷达目标数据库系统启动,初始化设置,设置周期循环加载的加载周期,开始工作;

(2) 接收和处理各雷达设备发送来的实时目标数据并缓存,等待周期循环加载的周期到达;

(3) 周期到达后,创建新的缓存,继续接收数据转2,启动数据库加载线程;

(4) 向雷达目标数据库申请控制权限,申请成功后转5,否则继续申请;

(5) 对数据库控制权限设定锁;

(6) 向雷达目标数据库导入上一周期缓存的数据,导入成功后转7;

(7) 检查是否存在因周期到达产生的新的加载事务,若存在转6,若不存在转7,释放数据库控制权限,数据库加载线程挂起。

1.2 离线存储加载的工作流程

雷达目标数据库的离线存储加载的工作流程如图2所示。

(1) 雷达目标数据库系统启动,初始化设置,开始工作;

(2) 若收到离线加载任务,则读取和处理离线存储设备上的雷达目标数据,等待所有离线目标数据处理结束,否则继续等待离线加载任务;

(3) 向雷达目标数据库申请控制权限,申请成功后转4,否则继续申请;

(4) 对数据库控制权限设定锁;

(5) 向雷达目标数据库导入读取并处理的所有离线数据,导入成功后转6;

(6) 释放数据库控制权限,数据库加载线程挂起,等待新的离线加载任务。

1.3 问题缺陷

从周期循环加载和离线存储加载的工作流程可以看出,任何一种情况单独执行时数据库访问控制不存在问题。但是,由于对于数据库控制权限,使用了锁机制来进行并发控制,当两种情况同时执行时便会出现以下问题:

(1) 若离线存储加载时间过长,时间大于实时数据的加载周期,由于数据库控制权限长时间不会被释放,会造成周期循环加载事务堆积;

(2) 若周期循环加载事务首先执行,获取数据库控制权限,若加载的目标数据量较大,造成加载执行时间较长,一个周期结束后马上会进行下一个周期数据的加载,则会造成离线存储加载事务获取不到数据库控制权限,产生数据库独占现象。

2 并发控制设计

为解决以上问题,本文设计了一种雷达目标数据库数据加载的并发控制方法,其主要思路是在申请数据库访问权限时设计了一种动态等待机制,具体描述如下:

(1) 定义一组变量:本次数据加载时间TL,本次数据加载大小DL,前次数据加载时间TL0,前次数据加载大小DL0,数据库申请等待时间Tw,Tw的初始值为t0。

(2) 当一个应用程序在提交数据库控制权限申请时记录本次加载数据大小DL,如数据库当前处于空闲状态则立刻获取数据库控制权进行数据加载。目标数据加载完毕后立即释放数据库控制权,同时记录本次加载时间TL,更新TL0=TL,DL0=DL。如此时数据库被占用,在等待Tw时间后再次申请。

(3) 当应用程序完成一次数据加载后,再一次准备加载数据时记录本次加载数据大小DL,访问数据库,如果此时数据库处于空闲状态则立刻获取数据库控制权,加载完毕后,更新TL、TL0、DL0。如此时数据库被占用,则更新等待时间,Tw_New=Tw(1+k·ΔT),其中,当DL0大于DL时k为-1,反之为1。ΔT的计算公式如下:

(4) 应用程序在等待Tw_New后,再次申请数据库控制权限。

采用以上的并发控制方法,使得申请数据库控制权的等待时间可以随着加载数据量的大小改变,目标数据少的加载事务可以增加获取数据库控制权的概率,使其尽快完成加载操作。优化后的雷达目标数据库加载流程如图3所示。

3 数据加载流程对比分析

某型雷达目标数据库系统的雷达目标数据加载率是20 MB/min,周期循环加载的加载周期是60 min,离线存储加载的数据库权限申请周期是5 min。系统启动后周期循环加载就一直处于响应阶段,离线存储加载在根据任务情况执行。

在周期循环加载数据量不大的情况下,即一个加载周期内接收的数据,能够在小于加载周期的时间内导入数据库,则两种执行方式都可以执行到,但在周期循环加载数据量大的情况下则会出现问题。

表1 试验情况

由表1可以看出,周期循环加载下,一个基本上报周期的数据量是1 500 MB,全部加载到数据库中则需要75 min,超过了固定的上报周期60 min。这种情况下,当完成1 500 MB加载后数据库权限就不会被释放,立刻加载下一个周期的数据。具体执行过程如表2所示。

表2 试验1加载情况

通过表2可以看出,在周期循环加载流程中数据量较大的情况下,离线存储加载就没法获取数据库权限,无法执行。改进后的加载情况如表3所示。

表3 试验1改进后的加载情况

从表3中可以看出,在T0+75 min时,第1个周期的数据加载完毕,根据数据加载情况,计算得到数据库权限的申请周期是在108 min中;在T0+154 min时,第2个周期的数据加载完毕,由于之前没有到达数据库权限的申请周期,于是周期循环加载就会释放掉数据库权限,这样离线存储加载就可以在T0+155 min的时候获取到,离线存储加载得以执行。

本文提出的并发控制方法在数据量大的时候可自动增大数据库权限申请周期,以增大等待权限的事务获得数据库使用权的概率,在数据量小的时候可自动的缩短数据库权限申请周期,减少数据库空闲时间,有效地规避了独占问题。

4 结束语

针对雷达目标数据库的加载情况,本文设计了一种雷达目标数据库数据加载的并发控制方法。通过在申请数据库控制权限时增加了一种动态等待机制。通过仿真实验证明,该方法有效地避免了数据库独占问题,保障了多个数据库加载事务的正确执行。

猜你喜欢

数据库系统数据量离线
基于卷积神经网络的离线笔迹鉴别系统
异步电机离线参数辨识方法
基于大数据量的初至层析成像算法优化
新版Windows 10补丁离线安装更简单
高刷新率不容易显示器需求与接口标准带宽
Oracle数据库系统的性能优化研究
对分布式数据库系统的安全分析
数据库系统在信息管理中的使用
数据库系统在计算机体系结构中的应用
电力营销数据分析中的数据集成技术研究