APP下载

基于VB编程的SQL Server多数据库同步新方法

2014-10-22周思柱马培勇

机械工程与自动化 2014年1期
关键词:数据库系统数组抽油机

张 思,周思柱,马培勇,李 宁,华 剑

(长江大学 机械工程学院,湖北 荆州 434023)

0 引言

随着计算机技术的发展,大量数据的处理都采用数据库管理系统的方式来实现。任何企业或系统都需要至少一个数据库来支持其正常运行,提高工作效率,因此,数据库系统的建立就显得特别重要。

SQL Server作为Microsoft公司开发的一个关系数据库管理系统,具有很多其他数据库所无法替代的优势。首先,对于习惯微软系统的用户来说,其界面相对于其他数据库无疑更为友好;再者,SQL Ser ver数据库属于一个中型数据库,完全可以负荷每天1万~1.5万人次的访问量,对于一个油田来说,这样已经足够;最后,相对于Oracle、DB2等开发成本高的大型数据库,其开发成本更低。

1 背景

在油田智能调参系统中,其所要处理的数据量是非常庞大的,在现场工作时,抽油机的悬点载荷、冲程、冲次等都是随时变化的。为了实现对抽油机工况的实时监控,在现场一般每10 min就会采集一次数据,这样就会产生巨大的数据量,因此建立一个数据库系统就很有必要。

目前的油田大部分都拥有多个数据库,这些数据库之间有部分信息是相同的,但是数据库之间却相互独立、没有联系,这就导致数据库之间数据的更新和交换都十分不便。目前的数据库更新,大多是实现对在不同服务器上的同一个数据进行同步更新。但是这种更新方式往往需要耗费更多的系统资源,且并不符合本系统的需求。在这个背景下,本文结合VB找到一种新方法,实现对SQL Server2005多个数据库的同步更新。

2 数据库系统的基本组成

在油田智能调参系统中,为了系统的高效运行,将数据库系统分成采集数据库和应用数据库2个部分。因此,本文也将以实现2个数据库的同步更新为例进行讨论。

采集数据库存储的信息主要包括5个部分:井场配置、井身结构、抽油杆组合、其他定量以及悬点载荷等。这里面的数据可以看作是整个数据库系统的核心,是从抽油机现场工作时采集来的最原始的数据。其中抽油机正常运行悬点载荷、位移参数及工作时的冲程、冲次这些数据每隔10 min就会更新一次。

应用数据库用来存储的数据主要包含3个方面:计算过程中需要用到的一些数据,这部分数据都来自于采集数据库;对当前工况进行计算判断后所得到的结果;系统管理员的相关信息及权限。

在建立数据库之后,随着采集数据越来越多,数据库也会越来越大。因此,为了系统运行的效率和稳定,在后期维护过程中,需要每隔一段时间对这部分的数据进行备份和清理。

数据库系统的基本组成见图1。

3 数据库系统同步

由于在应用数据库中的数据有很大部分来源于采集数据库,而采集数据库的数据是每隔10 min更新一次。因此,为了实现对抽油机工作的实时监控,需要在对采集数据库的数据更新后,对应用数据库中的这部分数据也能随之更新。

图1 油田调参系统数据库的基本组成

本文采用VB编程的方式来实现两个数据库的实时更新。与C、Delphi等高级语言相比,VB具有不可取代的简单易用性和“所见即所得”的特性,而且VB提供了对SQL Ser ver的多种访问方式,使其访问更加灵活方便。

3.1 建立接口

本文采用ADO方式来访问SQL Server。相对于DAO和RDO的访问方式,ADO的访问方式要更快速简便,且具有更高的通用性。由于涉及到对两个数据库的操作,因此必须先建立两个连接,其部分代码如下:

3.2 系统自动判断更新

在更新应用数据库之前,要先对采集数据库进行判定,如果其中的数据比应用数据库多,则需要对应用数据库中的内容进行更新。在VB中,可以利用ti mer控件实现这一功能。将ti mer控件的Interval属性设置为10 000(10 s),即每隔10 s系统对两个数据库中的行数进行统计,执行一次比较。若需要进行更新则弹出对话框。部分代码如下:

3.3 进行检索找出需要插入的内容

进行比较之后,把采集数据库中新存储的数据复制到应用数据库中。因此,需要先对两个数据库中的内容进行一次比较,即筛选出采集数据库中有而应用数据库中没有的数据,做插入操作。采集数据库表如图2所示,表中是采集数据库中存储的工图数据表,其中P01表示井名,P02表示采集时间。任何一行数据,其唯一性是由这两列共同标注的,因此同时比较采集数据库和应用数据库中P01和P02的内容。当P01&P02不同时,才可以进行插入操作。

图2 采集数据库表DBAT2070

由于在数据库中,其数据量是未知的,因此本文采用动态数组,使用Preserve关键字的Re Di m语句方式来实现这一功能。将这两列数据存在一个字符串数组中,然后分别对采集数据库和应用数据库所对应的两个数组进行比较操作。为了方便之后的数据插入,还需要将采集数据库中的第1列、第2列分别独立存在两个字符串数组中。具体代码如下:

类似,可以将两个数据库中的第2列分别连接到str1和str2字符串数组后,然后利用strComp函数对这两个数组中的内容进行比较,若内容不同则执行插入操作:

如图3(为一个简易的系统界面,并不是最终的软件)所示,为了使用户操作方便,本系统将需要插入的数据对应的井名和采集时间分别绑定到co mbo控件下。由于在整个系统中,已经存在插入和读出数据的内容,在将需要插入的井名和采集时间绑定到相应的combo下后,可以直接调用两个部分read_Click和insert_Click,将需要插入的内容先显示到窗体中,然后再执行插入操作。这部分的内容跟一般的读取写入操作是类似的,在此不多做说明。

自此,就可以完成两个数据库之间数据的实时更新。当采集数据库的数据更新之后,系统可以自动地进行判断,然后对应用数据库进行更新。

图3 简易的系统界面

4 结束语

(1)通过利用VB实现了两个数据库的实时同步更新。在现场应用中,这有利于多个数据库系统的共同协作,提高系统的运行效率。

(2)在本文的基础上可以作进一步的研究,实现两个数据库之间数据的同步交换,以满足各种现场需求。

(3)利用VB丰富的控件类型和强大的计算能力,结合SQL Server数据库,实现对数据的高效管理。

(4)这种方法适用于各种SQL Ser ver数据库系统,即使对于图片信息,只需要利用VB中ADODB.Stream类型,将图片信息转化成二进制流进行存储,也可以实现上述功能。

[1]徐鹏,满娜,于艳杰.SQL Server 2008数据库基础及应用[M].北京:中国水利水电出版社,2010.

[2]龚沛曾,杨志强,陆慰民.Visual Basic程序设计教程[M].第3版.北京:高等教育出版社,2002.

[3]张冲.油田抽油机运行状态远程监测系统研制[D].哈尔滨:哈尔滨工业大学,2011:37-39.

[4]Mehedi Masud Masud,Iluju Kiringa Masud.Transaction processing in a peer to peer database network[J].Data& Knowledge Engineering,2011,70(4):307-334.

[5]谷震离.ADO访问SQL Server数据库技术分析及其应用[J].计算机应用与软件,2004,21(12):32-33,77.

[6]周鹏,鱼滨.基于P2P分布式数据库实时更新[J].计算机技术与发展,2007,17(5):144-147.

猜你喜欢

数据库系统数组抽油机
抽油机井泵效影响因素的确定方法*
JAVA稀疏矩阵算法
JAVA玩转数学之二维数组排序
微细铣削工艺数据库系统设计与开发
江苏省ETC数据库系统改造升级方案探讨
Excel数组公式在林业多条件求和中的应用
实时数据库系统数据安全采集方案
核反应堆材料数据库系统及其应用
寻找勾股数组的历程
沁水盆地南部煤层气井抽油机偏磨防治分析