APP下载

基于JSON数据交换的移动终端与服务器端异构数据库的数据交互

2016-10-18李金来吴涛

现代计算机 2016年16期
关键词:服务器端异构终端

李金来,吴涛

(海洋石油工程(青岛)有限公司,青岛266100)

基于JSON数据交换的移动终端与服务器端异构数据库的数据交互

李金来,吴涛

(海洋石油工程(青岛)有限公司,青岛266100)

随着移动互联网发展和Android平台的SQLite数据库系统的应用日益广泛以及企业间信息交换的日益频繁,移动端数据库与服务器端不同种类数据库之间进行数据共享或传输的问题日益突出。传统的数据库转换工具已不能很好地解决数据类型复杂的数据库之间的数据交换。针对以上问题,对Android终端SQLite数据库和服务器端异构数据库的数据交换进行研究,借助新兴的JSON数据交换格式和JavaBean技术,对移动端SQLite数据库与服务器端数据库数据交换进行实现。

数据交换;SQLite;JSON;异构数据库;Android

0 引言

随着移动互联网技术的迅速发展和Android操作系统的应用,目前,在许多行业、单位或机构、部门内部对于一些实时的业务数据使用Android移动终端的SQLite数据库来存储。由于在后台对数据提取、分析、挖掘的要求和Android数据终端受限于存储容量小的缺点,移动端数据库需要按时与服务器端数据库进行数据交换。因时间推移、人事变迁以及数据库技术的发展和数据库时常变化,再加上实施数据管理系统的阶段性、技术性以及其他经济和人为因素的影响,在一个单独企业内部采用不同的数据管理系统的现象非常普遍,从简单的文件数据库到复杂的网络数据库,它们构成了企业的异构数据源。为了进行信息的交流,或者当目前使用的服务器端数据库已经不能满足数据的日益增加而要求更大更高级的数据库的需求时,需要适应在异构数据库间进行数据的传输和交换,特别是对于后者,则需要在移动端SQLite数据库和服务器端异构数据库间进行数据的上传和下载。另外,对于数据库软件开发公司而言,其项目开发过程中也经常涉及数据的导入和导出操作。

1 SQLite数据库概述

Google为Andriod平台处理大量数据提供了SQLite数据库技术。SQLite是一款轻型的数据库,它的设计目标是服务于嵌入式系统,而且目前已经广泛使用。其占用资源非常低,能够支持Windows/Linux/Unix等主流的操作系统,也能够跟很多程序语言相结合,例如C#、PHP、Java等。

2 基于JSON数据交换的移动终端与服务器端异构数据库的数据交互的方法

2.1基于JSON数据交换的移动终端与服务器端异构数据库的数据交互的方法简介

本文提出的数据交换方法成功应用在海洋石油工程(青岛)有限公司信息化科研综合攻关研究的“基于C/S架构下的台账监控与统计系统软件的开发与应用”课题中。海洋石油工程(青岛)有限公司台账监控与统计系统采用C/S架构,Android系统移动端集成了数据交换功能,通过无线网络将数据上传至服务器,由服务器接口程序分析并将数据插入到后台数据库中。系统架构图如图1所示:

图1 系统架构图示

利用“SQLite数据库+JavaBean技术+JSON数据交换格式+服务器端数据库”的四位一体的设计模式,本系统规定了协议数据单元(Protocol Data Unit,PDU)内容包括请求与回复格式,请求类别定义,回复类别定义,断点续传方式,无响应处理等。将SQLite数据库表中的每一行数据对应成一个JavaBean对象,通过JSON技术对JavaBean对象进行序列化,最终和请求组根据自定义协议内容封装成数据包并压缩,通过无线网络,发送到服务器并由服务器端通信接口程序进行解析。服务器端解压缩并拆包,根据协议内容及数据组织格式分析出移动端发来的数据类型存入服务器端的数据库,并对移动端的请求进行响应。其技术路线如图2所示。

图2 技术路线图示

2.2 SQLite数据库与服务器端异构数据库数据交换设计

为实现数据交换,首先应该把移动端SQL数据库字段设计为一个JavaBean类:

CREATE TABLE storage(record_id integer primary key autoincrement,machine_id integer,storage_time date,price integer)

转化对应的JavaBean类结构为:

在程序中为JavaBean实体对象赋值,其代码为:

将JavaBean序列化为JSON对象,经过JSON封装以后会变成以下格式:

最后将请求组和数据JSON对象拼接成一个JSON字符串,进行压缩,其代码为:

数据经压缩后发送,服务器端接口程序进行解析,其步骤为:解压缩,JSON反序列化为JavaBean对象,数据插入数据库中。其代码是发送的逆过程,不再赘述。

2.3数据交换关键问题的解决方案

对于Android平台的移动端设备而言,大量的应用利用SQLite数据库的目的是为搜集实时数据。而在实时数据存储结构中,主键作为唯一性标示是没有特定意义的,这一点与业务主键有所区别。如表1所示,员工信息表中的员工编号是人为设计或指定的编号,因此表1中员工编号为业务主键。

表1 员工信息表

逻辑主键是为标示数据在数据表唯一性和方便开发而设置,是无特殊含义的主键。如表2所示,实时统计表中自增主键record_id并无实际意义,其作用则是利于后期数据库开发并保证记录的时间有序性。

表2 实时统计表

当多个Android移动端数据库通过数据交换插入到服务端数据库中,以局表为例使用逻辑主键会产生两个问题。其一,不同移动终端上传的数据到服务器端数据库,会产生主键冲突。例如每个终端数据库中的局表都含有value值为1的主键record_id。其二,相同的移动终端上传的数据到服务器端数据库,会产生主键冲突。例如相同的数据重复上传,主键相同,产生冲突。再例如移动终端重新安装应用,主键record_id将从1开始自增,与之前本终端上传的数据发生主键冲突。

为区分不同终端的数据导致的上传数据主键冲突,移动端上传数据时,为终端编码或获取终端MAC地址来作为终端在整个系统中的唯一标示。在上传过程中,移动端数据包请求组携带唯一标识与数据一起上传。在服务器数据库局表中,将这个唯一标示作为主属性。

为解决同一移动端重复上传数据导致主键冲突,移动端采取“传完就删”的策略。即移动端数据上传到服务器端并获取服务端响应之后,从移动端数据库中删除这些记录,避免重复上传或筛选已上传数据才能上传。

为解决应用因故障重装或者移动端数据库被清空,主键重新自增而导致的本终端上传数据发生的主键冲突,服务器端接收到上传数据,在插入到服务器端数据库之前,将移动端自增的Integer型主键转为String型的“当前系统时间+移动端Integer型主键”,作为服务器端数据库表的主键。移动端数据库中以自增Integer型主键作为外键关系的表需要同时上传到服务器端,以此来保证服务器端的当前系统时间取相同值,外键关系依旧成立。将移动端Integer型外键转为String型的“当前系统时间+移动端Integer型外键”,作为服务器端的外键。按照这种处理方式,移动端上传的数据在服务器端不会出现主键冲突,且没有破坏各种外键关系。

借用以上解决方案,在移动端的下载方面,服务器数据库基于分析之后,根据移动端唯一标示,将分析结果下载到移动端,并把数据插入到对应的表中。

这种方案有两大优点。第一,更符合实际应用的需求,前台移动端在采集实时数据之后,将数据上传到服务器,接下来对历史数据的需求其实就是查看其规律和分析结果。移动端也可以通过下载浏览历史数据。第二、在操作上是简单可行并成功避免不同移动端和统一移动端数据之间的主键冲突。

3 数据交换方法在现实中的应用

本文提出的数据交换方法成功应用在海洋石油工程(青岛)有限公司信息化科研综合攻关研究的“基于C/S架构下的台账监控与统计系统软件的开发与应用”课题中。移动端系统在台账情况实时记录后,系统对数据进行统计和简单分析,并以简洁、直观的报表方式提供给管理人员。服务器端系统是对移动端系统的功能扩展,通过数据通信持久化保存移动端的数据,对数据加以提取、分析、整合、挖掘。最终形成一个能够直观反映台账数据的统计平台。平板电脑利用无线网络,将临场技战术统计数据和训练质量监控数据汇集,形成一个以SQLite数据库平台作为支撑的综合移动端数据体系。利用该系统所提供数据通信功能,管理人员能够将移动端数据上传至服务器端持久化保存,对这些移动端数据进行详细的分析和挖掘,从中提取到规律化的账目特点,供公司的信息管理人员改进管理方法。

4 结语

本文通过建立JSON中间数据源,以JSON对象作为异构数据库之间数据转换的桥梁,充分利用了JSON具有较好的系统扩展性、可移植性、跨平台等特性和优点,为实现移动端SQLite数据库与服务器端异构数据库间的数据转换提供了转换模型。由于JSON和异构数据库本身的特点,我们有理由相信JSON在异构数据库系统中的应用将会越来越广泛,它们之间的结合也将会越来越紧密。

[1]丘广华,张文敏.XML编程实例教程[M].北京:科学出版社,2004:34-50.

[2]阎宏.Java与模式[M].北京:电子工业出版社,2003:179-200,992-1000.

[3]Brett McLaughlin.使用JSON进行数据传输[EB/OL].[2014-06-09].http://www.ibm.com/developerworks/cn/web/wa-ajaxintro10/.

[4]徐周,黄上腾.基于XML实现数据库间信息交换的方法[J].计算机工程,2001,27(4):167-175.

[5]Horstmann C.S,Cornell G.Java核心技术卷Ⅱ:高级特性[M].北京:机械工业出版社,2006:50-66.

[6]勒岩,姚尚郎.Google Android开发入门与实战[M].北京:人民邮电出版社,2009:54-125.

Data Exchange For Database of Mobile Terminals and Heterogeneous Database of Server Based on JSON Data Interchange Format

LI Jin-lai,WU Tao
(Offshore Oil Engineering Co.Ltd.,Qingdao 266100)

With the development of mobile Internet applications,Android SQLite database systems widely spreading and the exchange of information between enterprises frequently progressive,the problem of mobile and server-side database for data sharing or transmission between different types of database become increasingly prominent.Traditional data conversion tools do not have a good solution for data exchange between complex data types database.To solve these problems,studies data exchange based on SQLite database of Android terminals and heterogeneous database data of server.With emerging JSON and JavaBean technology,it achieves the data exchange between SQLite database of mobile client and server database.

Data Exchange;SQLite;JSON;Heterogeneous Database;Android

1007-1423(2016)16-0055-04DOI:10.3969/j.issn.1007-1423.2016.16.016

李金来(1979-),男,山东青岛人,本科,中级工程师,研究方向为软件工程与智能信息系统

2016-03-16

2016-05-15

吴涛(1988-),男,山东青岛人,硕士研究生,初级工程师,研究方向为软件工程与智能信息系统

猜你喜欢

服务器端异构终端
ETC拓展应用场景下的多源异构交易系统
试论同课异构之“同”与“异”
复杂线束在双BCI耦合下的终端响应机理
Linux环境下基于Socket的数据传输软件设计
X美术馆首届三年展:“终端〉_How Do We Begin?”
多源异构数据整合系统在医疗大数据中的研究
吴健:多元异构的数字敦煌
基于声波检测的地下防盗终端
“吃人不吐骨头”的终端为王
基于Qt的安全即时通讯软件服务器端设计