基于安卓平台的井控信息处理系统的设计实现
   来源:现代电子技术     2017年10月20日 07:02

高翔+郭新东+张凤兰+管伟

摘要: 介绍运行在平板电脑上基于安卓系统的井控信息处理系统的设计与实现。该系统采用多个智能化模块,涵盖了井队作业的所有流程,其中包括数据采集、系数设定、数据计算、数据存储和转储、智能报警、异常分析、数据检索等任务。显著提高了基层井队工人的作业效率、极大地缩短了发现异常并报警的时间,显著的增加了企业整体的效益。

关键词: 井控数据; 数据记录; 数据资产; 安全事故; 起因溯源

中图分类号: TN919⁃34; TP309文献标识码: A 文章编号: 1004⁃373X(2014)08⁃0082⁃04

Design and implementation of well control information processing system based on Android

GAO Xiang, GUO Xin⁃dong, ZHANG Feng⁃lan, GUAN Wei

(Northwest Polytechnical University, Xian 710129, China)

Abstract: The design and implementation of the well control information processing system which runs on tablet personal computer and is based on Android OS are introduced in this paper. Multiple intelligent modules are adopted, which can execute all the tasks, including data collection, coefficient setting, data calculation, data storage, data dump, intelligent alarm, abnormal analysis and data retrieval in the total working process of drilling crew. With the system, the efficiency of workers in a drilling crew is improved significantly, and the response time of abnormal phenomenon discovery and alarm is reduced greatly.

Keywords: well control data; data logging; data asset; security incident; cause traceability

0引言

近年来,中石油的信息化建设成果斐然,建成了很多应用系统,明显改善了工作效率,提高了经济效益。然而,在基层钻井队的井控数据采集和记录方面,由于作业环境、人员素质和技术水平的限制等问题,一线员工工作方式的信息化程度还明显落后。传统的纸笔记录方式时常会跟不上作业流程的节奏,而且人工的笔录也会由于字迹潦草或环境条件恶劣导致的污损等原因对数据准确率造成影响,从而造成坐岗记录的井控数据的可信性不高,加重了后期数据清洗的负担,出现安全隐患问题时,发现预警的时间较长。

针对这一系列的问题,作者设计并开发了基于安卓系统的手持式井控信息处理系统,为提升基层井队的信息化水平提供了有力的支持。该系统的开发,将传统的纸质工况记录表移植到了手持平板电脑上,将作业数据的计算公式设计成算法内置于系统中,减少了员工的计算工作量和出错率,同时提高了计算数据的准确率,使员工可以跳过计算逻辑而专注于数据的读取。内置的报警系统可以即时根据录入的数据进行分析,判断工况的正确与否或环境的安全与否而给出文字和声音的提示,从而防患于未然。

1模块设计

井控信息处理系统主要包括6大模块,如图1所示,在结构上使用经典MVC架构进行设计开发。

图1 系统结构

数据记录模块负责采集数据,该处数据一部分由工人通过专用仪器从外界环境测得,或通过设备仪表读出;另一部分由井控信息处理系统内置,包括作业环境的选择和计算系数等。采集到的数据在满足一定条件下被事件触发执行相关操作,如根据系统内置的公式参与其数值的计算,并将计算结果填入相应的数据项,由计算得出的数值会被报警模块实时检测,若超过系统设定的阈值则会发出刺耳的报警声,并通过闪烁文字提示相应的异常数据和可能的原因,若数据无异常则在一次记录周期结束前将数据持久化到数据库中。随着工作时间的推移,数据库中的记录会达到数十万到数百万条,数据查询模块负责根据检索条件高效的进行检索并呈现至设备。数据备份模块负责数据的转储,可以将数据通过网络以数据库文件或Excel等文件格式转储至其他地方。系统参数配置模块以灵活的组件形式对外提供操作接口,将系统中所需的各项复杂参数简化至所见即所得。系统安全模块则解决系统的使用授权模式。本系统的数据流图如图2所示。

图2 系统数据流程图

2关键技术点

2.1数据记录模块设计

2.1.1问题描述

井队在实际记录数据的过程中,根据其工况的不同,需要录入的数据项也不同,但总数都在20项左右,而系统定制的设备只有10寸。加之工况的记录周期在15分以内,对工人的操作熟练度提出了要求。

2.1.2解决方法

针对上述问题,单一的使用文本框作为数据录入接口难以完成任务,而采用大量的智能化组件(Component)与事先内置了井队数据的适配器(Adapter)结合,可以减少工人的工作量,从而减少人机交互次数,提高效率[1]。如下:

井队需要处理的工况通常是固定的,系统在设计时将工况类型硬编码(Hard Code)入一个适配器中,然后将适配器挂载于一个活动组件上,通过点击事件触发,弹出列有具体工况的下拉列表(Spinner),由工人进行选择[2]。

2.2界面布局方案的设计

2.2.1问题描述

整个系统按功能可以设计为3个模块,分别为数据录入、数据查询/导出、系统配置。职责的不同导致3个功能块的界面也完全不同,与传统桌面程序不同的是手持设备显示屏幕较小,设计自由度较低,单纯的使用线性布局(Linear Layout)、关系布局(Relative Layout)、箱式布局(Box Layout)、边界布局(Border Layout)或它们的结合都会显的力不从心[3]。

2.2.2解决方法

(1) 整体架构。由于问题的核心是显示空间的不足与显示内容的过量之间的矛盾,采用二层显示结构可以解决该问题。使用层次结构可以使功能和结构层次分明,操作方便,显示直观。符合功能高内聚,结构低耦合的标准[4];

一层结构:即系统的外层组织,使用卡式结构(Card Group)来组织各大主功能模块,将每个主功能模块压缩为一张卡,而每张卡链接一个功能模块,存放所有的卡只需要一个卡箱,而卡箱占据屏幕显示空间的大小不足1/15,触发某个卡后可以从箱中将卡弹出,再填满显示空间,这样可以节省出更多的显示空间给更重要的内容。

二层结构:由于井队的工况种类不一,而每种工况下又可分为更细的工况。 在第二层结构上,采用了弹出式菜单(Pop Menu)和帧布局(FrameLayout)[5],通过点击工况触发切换事件,由后台进程调用事件相对应的帧(Frame),即工况显示界面,这样可以使所有的工况共用剩余的显示空间。

(2) 表格结构。由于传统的井控数据记录纸质表已使用多年,所以工人大都习惯了传统的表格记录格式,加之现行的安卓组件大多为文本框,按钮等,只能满足常用的事件调用,单纯的设计成传统的翻页式记录程序,经试用,工人使用极其不习惯。

针对上述情况,我们设计并制作出了动态表格(Dynamic Table)技术,这种技术的动态主要体现在2个方面:

① 表格数据的动态读取,表格中显示的数据即是之前填入的所有历史数据,但并不是由录入界面直接送入表格,这是因为随着记录时间的推移,记录的数据会有成千上万条甚至更多,手持设备的内在和处理能力根本无法响应如此大量的数据读取。为此,系统采用了双缓存技术(Double Buffer)[6],即数据库与显示适配器之间加缓存,适配器与显示进程之间加缓存,如图3所示。

图3 缓存结构

② 表格空间的动态显隐,为了使传统作业的工人能够在尽快适应新的设备,减少后期业务培训的成本,系统使用了划动事件感知技术,将工人使用的传统纸质表格平缓的转化成智能填写的电子表格,这种表格具有双向自动显隐的功能,横向(Horizontal)包含了工况对应的所有数据项,纵向(Vertical)可以依靠二级数据缓存显示所有的历史数据记录[7]。当组件感知到划动事件后会判断划动的方向,如果是横向划动,则根据划动方向动态的重绘表格,根据划动的力度大小,决定隐藏掉的部分与显示出的部分的大小。如果是纵向划动,则由后台数据进程首先根据断点将对应位置的数据记录从数据库中读取至内在,然后再将数据记录装配到显示适配器中进行显示。

2.3模块间数据传输

2.3.1问题描述

如①中描述,各主功能模块之间的结构较为分散,即分装在不同的卡中,每个功能模块对应不同的线程,而数据录入模块需要用到系数配置模块的数据,传统的依靠变量传输在此失效。

2.3.2解决方法

因为系统平台是安卓系统,而安卓系统的底层是使用Linux的内核,所以使用Linux中的管道技术(Pipe)[8]。

不过,从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。所以,在数据从管道输入至数据录入模块时会先被暂存到一个XML文件里,由于XML文件可以作长期存储用,所以在下次需要读数据的时候进程会先从XML里查找,若查找到,则数据命中,否则的话再通过管道进行读取,这种技术可以减少使用管道的次数,提高数据的命中率,进而提高系统的处理速度。

2.4数据存储

2.4.1问题描述

使用文本存储数据的特点是写入数据简单,但读取时难度较大,尤其是数据量较大或数据项较复杂的时候更是难以操作,且不利于保存和转储。在进行数据检索的时候更是无从下手,效率低下且错码率高。

2.4.2解决方法

使用嵌入式系统型数据库SQLite来存放数据,可以解决数据存储的问题。SQLite 是用 C 语言编写的开源嵌入式数据库引擎,它是完全独立的,不具有外部依赖性。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。它还是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,具有资源占用少、性能良好、支持事务性等特点[9]。由于其开发语言的兼容性使它可以与安卓系统良好的结合在一起,并对上层安卓应用层提供高性能的接口。

2.5数据检索

2.5.1问题描述

关系型数据库的表结构可以完美的对应于实际中的实体表。但数以几十万计的记录要在给定的检索条件下在毫秒甚至微秒级的时间内检索出结果来需要设备有很强的计算能力和高速的缓存,但手持设备通常不具备这样高性能的条件。如何开发一种高效的检索算法成了解决问题的关键。

2.5.2解决方法

由于嵌入式数据库对数据字段的支持有限,合理的设计字段的数据类型是提高检索效率的基础,当在表中添加字段的时候,应该选择长度最小的数据类型,这样表在内存中每页可以存储更多的记录。

其次是在数据量较大的工况表上建立索引(Index),SQLite允许对数据库表进行索引,以此能迅速查询记录,而无需查询整个表,由此显著的加快查询速度[10]。系统在首次运行的时候就会执行相关的建库语句,可以确保在存入数据的时候表中已建立好相应的索引项。

最后可以通过调整数据库的缓冲区进行优化,通常,变量控制缓冲区的长度应该在处理索引表的时候使用,因此可以采用不断增加的方法以确保索引具有最佳的性能,根据相关研究测试,我们采用系统内存25%的大小作为该变量的值,以此来达到最佳的性能。

3安全性设计

软件系统为了防止被非法盗用,甚至被反编译篡改,系统通常需要采用一定的加密技术处理。如果加密系统只是一种单纯的依赖密钥的系统,那对用户发放使用权的时候就是发放密钥,这种系统保密性较低,一旦密码泄漏则软件的保密性也不复存在。

采用证书授权可以在很大程度上保证软件的安全性,但证书的生成通常需要网络和用户身份等基础设施或基本信息才能满足。根据设备的实际使用环境,我们以如下特殊方式解决:

身份信息(Identity):通过设计一个独立的软件,提取设备的基本信息,包括设备网络地址、系统号和基址序列号(SSN)作为指纹信息,然后将采集到的指纹信息汇聚至工作机,即证书中心(CA),通过组合算法,将收到的三种信息生成惟一的一种信息,即三码合一。然后将生成的三码合一文件作为授权证书,发送给用户。

4结语

本文分析了中石油基层钻井工的作业环境,对其中繁琐的流程进行了深入研究,设计并开发了井控信息处理系统。该系统使用基于安卓操作系统的定制手持设备,将众多的纸质记录表格和复杂的公式、系数移植到了智能设备上,极大地简化了操作过程,节省了大量的人力和时间。数据库系统的使用则解决了传统记录中数据检索难、易丢失和保存难的缺陷。

受限于野外作业环境的恶劣对网络的影响,本系统尚未解决利用网络远程传输的问题,利用网络实现远程传输和监控是本系统有待提高的方向。

参考文献

[1] 索盖林.android开发入门指南[M].2版.北京:人民邮电出版社,2009.

[2] 余志龙.Android SDK开发范例大全[M].北京:人民邮电出版社,2010.

[3] 韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.

[4] 李观华,范辉.J2ME在移动通信程序中的应用[J].计算机应用,2003(3):124⁃126.

[5] 廖永刚,余冬梅,张秋余.J2ME架构与安全机制的研究[J].计算机工程与设计,2006(4): 575⁃577.

[6] 王勤.计算机控制技术[M].北京:机械工业出版社,2003.

[7] MEIER Reto.Android高级编程[M].王超,译.2版.北京:清华大学出版社,2010.

[8] 刘扶松.Android开发从入门到精通[M].北京:希望电子出版社2012.

[9] 杨丰盛.Android技术内幕(系统卷) [M].北京:机械工业出版社 2011.

[10] E2ECloud.深入浅出Google Android[M].北京:人民邮电出版社,2009.

二层结构:由于井队的工况种类不一,而每种工况下又可分为更细的工况。 在第二层结构上,采用了弹出式菜单(Pop Menu)和帧布局(FrameLayout)[5],通过点击工况触发切换事件,由后台进程调用事件相对应的帧(Frame),即工况显示界面,这样可以使所有的工况共用剩余的显示空间。

(2) 表格结构。由于传统的井控数据记录纸质表已使用多年,所以工人大都习惯了传统的表格记录格式,加之现行的安卓组件大多为文本框,按钮等,只能满足常用的事件调用,单纯的设计成传统的翻页式记录程序,经试用,工人使用极其不习惯。

针对上述情况,我们设计并制作出了动态表格(Dynamic Table)技术,这种技术的动态主要体现在2个方面:

① 表格数据的动态读取,表格中显示的数据即是之前填入的所有历史数据,但并不是由录入界面直接送入表格,这是因为随着记录时间的推移,记录的数据会有成千上万条甚至更多,手持设备的内在和处理能力根本无法响应如此大量的数据读取。为此,系统采用了双缓存技术(Double Buffer)[6],即数据库与显示适配器之间加缓存,适配器与显示进程之间加缓存,如图3所示。

图3 缓存结构

② 表格空间的动态显隐,为了使传统作业的工人能够在尽快适应新的设备,减少后期业务培训的成本,系统使用了划动事件感知技术,将工人使用的传统纸质表格平缓的转化成智能填写的电子表格,这种表格具有双向自动显隐的功能,横向(Horizontal)包含了工况对应的所有数据项,纵向(Vertical)可以依靠二级数据缓存显示所有的历史数据记录[7]。当组件感知到划动事件后会判断划动的方向,如果是横向划动,则根据划动方向动态的重绘表格,根据划动的力度大小,决定隐藏掉的部分与显示出的部分的大小。如果是纵向划动,则由后台数据进程首先根据断点将对应位置的数据记录从数据库中读取至内在,然后再将数据记录装配到显示适配器中进行显示。

2.3模块间数据传输

2.3.1问题描述

如①中描述,各主功能模块之间的结构较为分散,即分装在不同的卡中,每个功能模块对应不同的线程,而数据录入模块需要用到系数配置模块的数据,传统的依靠变量传输在此失效。

2.3.2解决方法

因为系统平台是安卓系统,而安卓系统的底层是使用Linux的内核,所以使用Linux中的管道技术(Pipe)[8]。

不过,从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。所以,在数据从管道输入至数据录入模块时会先被暂存到一个XML文件里,由于XML文件可以作长期存储用,所以在下次需要读数据的时候进程会先从XML里查找,若查找到,则数据命中,否则的话再通过管道进行读取,这种技术可以减少使用管道的次数,提高数据的命中率,进而提高系统的处理速度。

2.4数据存储

2.4.1问题描述

使用文本存储数据的特点是写入数据简单,但读取时难度较大,尤其是数据量较大或数据项较复杂的时候更是难以操作,且不利于保存和转储。在进行数据检索的时候更是无从下手,效率低下且错码率高。

2.4.2解决方法

使用嵌入式系统型数据库SQLite来存放数据,可以解决数据存储的问题。SQLite 是用 C 语言编写的开源嵌入式数据库引擎,它是完全独立的,不具有外部依赖性。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。它还是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,具有资源占用少、性能良好、支持事务性等特点[9]。由于其开发语言的兼容性使它可以与安卓系统良好的结合在一起,并对上层安卓应用层提供高性能的接口。

2.5数据检索

2.5.1问题描述

关系型数据库的表结构可以完美的对应于实际中的实体表。但数以几十万计的记录要在给定的检索条件下在毫秒甚至微秒级的时间内检索出结果来需要设备有很强的计算能力和高速的缓存,但手持设备通常不具备这样高性能的条件。如何开发一种高效的检索算法成了解决问题的关键。

2.5.2解决方法

由于嵌入式数据库对数据字段的支持有限,合理的设计字段的数据类型是提高检索效率的基础,当在表中添加字段的时候,应该选择长度最小的数据类型,这样表在内存中每页可以存储更多的记录。

其次是在数据量较大的工况表上建立索引(Index),SQLite允许对数据库表进行索引,以此能迅速查询记录,而无需查询整个表,由此显著的加快查询速度[10]。系统在首次运行的时候就会执行相关的建库语句,可以确保在存入数据的时候表中已建立好相应的索引项。

最后可以通过调整数据库的缓冲区进行优化,通常,变量控制缓冲区的长度应该在处理索引表的时候使用,因此可以采用不断增加的方法以确保索引具有最佳的性能,根据相关研究测试,我们采用系统内存25%的大小作为该变量的值,以此来达到最佳的性能。

3安全性设计

软件系统为了防止被非法盗用,甚至被反编译篡改,系统通常需要采用一定的加密技术处理。如果加密系统只是一种单纯的依赖密钥的系统,那对用户发放使用权的时候就是发放密钥,这种系统保密性较低,一旦密码泄漏则软件的保密性也不复存在。

采用证书授权可以在很大程度上保证软件的安全性,但证书的生成通常需要网络和用户身份等基础设施或基本信息才能满足。根据设备的实际使用环境,我们以如下特殊方式解决:

身份信息(Identity):通过设计一个独立的软件,提取设备的基本信息,包括设备网络地址、系统号和基址序列号(SSN)作为指纹信息,然后将采集到的指纹信息汇聚至工作机,即证书中心(CA),通过组合算法,将收到的三种信息生成惟一的一种信息,即三码合一。然后将生成的三码合一文件作为授权证书,发送给用户。

4结语

本文分析了中石油基层钻井工的作业环境,对其中繁琐的流程进行了深入研究,设计并开发了井控信息处理系统。该系统使用基于安卓操作系统的定制手持设备,将众多的纸质记录表格和复杂的公式、系数移植到了智能设备上,极大地简化了操作过程,节省了大量的人力和时间。数据库系统的使用则解决了传统记录中数据检索难、易丢失和保存难的缺陷。

受限于野外作业环境的恶劣对网络的影响,本系统尚未解决利用网络远程传输的问题,利用网络实现远程传输和监控是本系统有待提高的方向。

参考文献

[1] 索盖林.android开发入门指南[M].2版.北京:人民邮电出版社,2009.

[2] 余志龙.Android SDK开发范例大全[M].北京:人民邮电出版社,2010.

[3] 韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.

[4] 李观华,范辉.J2ME在移动通信程序中的应用[J].计算机应用,2003(3):124⁃126.

[5] 廖永刚,余冬梅,张秋余.J2ME架构与安全机制的研究[J].计算机工程与设计,2006(4): 575⁃577.

[6] 王勤.计算机控制技术[M].北京:机械工业出版社,2003.

[7] MEIER Reto.Android高级编程[M].王超,译.2版.北京:清华大学出版社,2010.

[8] 刘扶松.Android开发从入门到精通[M].北京:希望电子出版社2012.

[9] 杨丰盛.Android技术内幕(系统卷) [M].北京:机械工业出版社 2011.

[10] E2ECloud.深入浅出Google Android[M].北京:人民邮电出版社,2009.

二层结构:由于井队的工况种类不一,而每种工况下又可分为更细的工况。 在第二层结构上,采用了弹出式菜单(Pop Menu)和帧布局(FrameLayout)[5],通过点击工况触发切换事件,由后台进程调用事件相对应的帧(Frame),即工况显示界面,这样可以使所有的工况共用剩余的显示空间。

(2) 表格结构。由于传统的井控数据记录纸质表已使用多年,所以工人大都习惯了传统的表格记录格式,加之现行的安卓组件大多为文本框,按钮等,只能满足常用的事件调用,单纯的设计成传统的翻页式记录程序,经试用,工人使用极其不习惯。

针对上述情况,我们设计并制作出了动态表格(Dynamic Table)技术,这种技术的动态主要体现在2个方面:

① 表格数据的动态读取,表格中显示的数据即是之前填入的所有历史数据,但并不是由录入界面直接送入表格,这是因为随着记录时间的推移,记录的数据会有成千上万条甚至更多,手持设备的内在和处理能力根本无法响应如此大量的数据读取。为此,系统采用了双缓存技术(Double Buffer)[6],即数据库与显示适配器之间加缓存,适配器与显示进程之间加缓存,如图3所示。

图3 缓存结构

② 表格空间的动态显隐,为了使传统作业的工人能够在尽快适应新的设备,减少后期业务培训的成本,系统使用了划动事件感知技术,将工人使用的传统纸质表格平缓的转化成智能填写的电子表格,这种表格具有双向自动显隐的功能,横向(Horizontal)包含了工况对应的所有数据项,纵向(Vertical)可以依靠二级数据缓存显示所有的历史数据记录[7]。当组件感知到划动事件后会判断划动的方向,如果是横向划动,则根据划动方向动态的重绘表格,根据划动的力度大小,决定隐藏掉的部分与显示出的部分的大小。如果是纵向划动,则由后台数据进程首先根据断点将对应位置的数据记录从数据库中读取至内在,然后再将数据记录装配到显示适配器中进行显示。

2.3模块间数据传输

2.3.1问题描述

如①中描述,各主功能模块之间的结构较为分散,即分装在不同的卡中,每个功能模块对应不同的线程,而数据录入模块需要用到系数配置模块的数据,传统的依靠变量传输在此失效。

2.3.2解决方法

因为系统平台是安卓系统,而安卓系统的底层是使用Linux的内核,所以使用Linux中的管道技术(Pipe)[8]。

不过,从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。所以,在数据从管道输入至数据录入模块时会先被暂存到一个XML文件里,由于XML文件可以作长期存储用,所以在下次需要读数据的时候进程会先从XML里查找,若查找到,则数据命中,否则的话再通过管道进行读取,这种技术可以减少使用管道的次数,提高数据的命中率,进而提高系统的处理速度。

2.4数据存储

2.4.1问题描述

使用文本存储数据的特点是写入数据简单,但读取时难度较大,尤其是数据量较大或数据项较复杂的时候更是难以操作,且不利于保存和转储。在进行数据检索的时候更是无从下手,效率低下且错码率高。

2.4.2解决方法

使用嵌入式系统型数据库SQLite来存放数据,可以解决数据存储的问题。SQLite 是用 C 语言编写的开源嵌入式数据库引擎,它是完全独立的,不具有外部依赖性。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。它还是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,具有资源占用少、性能良好、支持事务性等特点[9]。由于其开发语言的兼容性使它可以与安卓系统良好的结合在一起,并对上层安卓应用层提供高性能的接口。

2.5数据检索

2.5.1问题描述

关系型数据库的表结构可以完美的对应于实际中的实体表。但数以几十万计的记录要在给定的检索条件下在毫秒甚至微秒级的时间内检索出结果来需要设备有很强的计算能力和高速的缓存,但手持设备通常不具备这样高性能的条件。如何开发一种高效的检索算法成了解决问题的关键。

2.5.2解决方法

由于嵌入式数据库对数据字段的支持有限,合理的设计字段的数据类型是提高检索效率的基础,当在表中添加字段的时候,应该选择长度最小的数据类型,这样表在内存中每页可以存储更多的记录。

其次是在数据量较大的工况表上建立索引(Index),SQLite允许对数据库表进行索引,以此能迅速查询记录,而无需查询整个表,由此显著的加快查询速度[10]。系统在首次运行的时候就会执行相关的建库语句,可以确保在存入数据的时候表中已建立好相应的索引项。

最后可以通过调整数据库的缓冲区进行优化,通常,变量控制缓冲区的长度应该在处理索引表的时候使用,因此可以采用不断增加的方法以确保索引具有最佳的性能,根据相关研究测试,我们采用系统内存25%的大小作为该变量的值,以此来达到最佳的性能。

3安全性设计

软件系统为了防止被非法盗用,甚至被反编译篡改,系统通常需要采用一定的加密技术处理。如果加密系统只是一种单纯的依赖密钥的系统,那对用户发放使用权的时候就是发放密钥,这种系统保密性较低,一旦密码泄漏则软件的保密性也不复存在。

采用证书授权可以在很大程度上保证软件的安全性,但证书的生成通常需要网络和用户身份等基础设施或基本信息才能满足。根据设备的实际使用环境,我们以如下特殊方式解决:

身份信息(Identity):通过设计一个独立的软件,提取设备的基本信息,包括设备网络地址、系统号和基址序列号(SSN)作为指纹信息,然后将采集到的指纹信息汇聚至工作机,即证书中心(CA),通过组合算法,将收到的三种信息生成惟一的一种信息,即三码合一。然后将生成的三码合一文件作为授权证书,发送给用户。

4结语

本文分析了中石油基层钻井工的作业环境,对其中繁琐的流程进行了深入研究,设计并开发了井控信息处理系统。该系统使用基于安卓操作系统的定制手持设备,将众多的纸质记录表格和复杂的公式、系数移植到了智能设备上,极大地简化了操作过程,节省了大量的人力和时间。数据库系统的使用则解决了传统记录中数据检索难、易丢失和保存难的缺陷。

受限于野外作业环境的恶劣对网络的影响,本系统尚未解决利用网络远程传输的问题,利用网络实现远程传输和监控是本系统有待提高的方向。

参考文献

[1] 索盖林.android开发入门指南[M].2版.北京:人民邮电出版社,2009.

[2] 余志龙.Android SDK开发范例大全[M].北京:人民邮电出版社,2010.

[3] 韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.

[4] 李观华,范辉.J2ME在移动通信程序中的应用[J].计算机应用,2003(3):124⁃126.

[5] 廖永刚,余冬梅,张秋余.J2ME架构与安全机制的研究[J].计算机工程与设计,2006(4): 575⁃577.

[6] 王勤.计算机控制技术[M].北京:机械工业出版社,2003.

[7] MEIER Reto.Android高级编程[M].王超,译.2版.北京:清华大学出版社,2010.

[8] 刘扶松.Android开发从入门到精通[M].北京:希望电子出版社2012.

[9] 杨丰盛.Android技术内幕(系统卷) [M].北京:机械工业出版社 2011.

[10] E2ECloud.深入浅出Google Android[M].北京:人民邮电出版社,2009.

数据 系统 完美