基于Andriod的CDIO教学系统数据库同步技术优化方案

2016-12-23 19:49胡海燕
科教导刊·电子版 2016年29期

胡海燕

摘 要 为更好地实现工程教育改革目标,将CDIO模式下的教学系统扩展移植到Android手机平台,本文重点研究了CDIO教学系统在Android移动平台使用的过程中,如何更好地保持客户端与服务器数据库同步的问题。研究的关键问题是将Hash算法运用于Android平台CDIO教学系统的数据库更新,相对于传统的数据同步算法减少了网络流量,增加了网络利用率,使系统性能得到优化。

关键词 Android 数据同步 Hash

中图分类号:TN929.5-4;TP391 文献标识码:A

0引言

受到网络条件以及Android系统资源等多方面因素,Android系统通常不能和服务器网络保持实时连接,而且网络状况也是不停地在变化,绝大部分Android系统是离线工作的,客户端数据更新时,不仅要更新本地存储设备内的数据库,同时也要通知远程服务器,并使服务器内的数据库进行更新,这样才能保持数据的一致性。而当本地设备要进行数据查询时,它要发送请求给远程数据库,得到最新的数据信息,并更新到本地数据库。

1传统数据同步技术的不足

(1)当Android系统进行查询时,即使本地存储设备上的数据是最新的,它不去读取它,而直接向服务器数据库提交查询,增加了服务器的负担,浪费了本地数据库可用资源。

(2)查询的所有结果通过网络进行传输,传回Android系统,即使查询结果中的部分数据,和本地存储设备上的数据是重复一样的,这些重复数据也要进行传输。

(3)Android系统在得到数据结果后,要更新所有的数据,即使其中的部分数据不需要更新。

2一种基于 Hash算法的新方案

由于Andriod的移动性、间断性、资源的有限性、存储设备的特点以及网络带宽多样性,决定了要有一种策略,使得该系统的数据库和服务器数据库进行更新时达到优化。本文利用Hash算法具有可以使任意长度的的信息压缩成为固定长度的比特串的特点,来减少数据流量从而增加系统利用率,实现同步优化。

2.1系统模型

(1)Android系统向本地数据库行一次查询,得到查询信息,并利用Hash算法,把自己的查询数据结果取可以唯一地表示一段数据的“签名”,任何两段不同的数据所取得的签名不会一致,即任何不同的数据查询结果不会重复。Android系统把该签名信息与查询语句一并通过网络提交给服务器数据库。

(2)服务器数据库得到查询请求后,得到一组数据结果,并且用相同的Hash算法得到这组数据的数字“签名”。然后服务器把两组签名进行比对,可以得到Android系统的哪些数据结果和服务器数据库的查询结果不吻合。服务器只把所有不吻合的数据结果,通过网络返回给Android系统。

(3)Android系统在得到这些不吻合数据后,对自己的本地数据库进行更新,写到存储设备之上。

2.2 具体方案

2.2.1Android平台教学系统中Hash应用

在Android平台教学系统中,当有新的查询要求时,可以先对本地的数据库数据进行离线查询,并且对查询数据结果进行Hash运算,取得签名,由于Hash函数的特性,一条数据结果可以用该签名唯一地代表,下面表述了全部过程。

(1)经过查询后,可以在Android存储器的数据库中得到N列结果,假设分别为(R1,R2,…,Rn),且每列数据长度为m。

(2)对每一列结果进行Hash运算,得到N个Hash签名,(H1,H2,…,Hn),且每个Hash摘要长度为n。

(3)对所有N列结果进行Hash计算,得到长度为n的HL

(4)把HL和(H1,H2,…,Hn)以及查询语句一并通过网络发送给服务端

2.2.2服务端的Hash应用

在服务端维护着数据库的实时数据。客户端会不时地把最新的数据发送给服务端,更新服务端的数据,同时,它也负责着对客户端数据库服务系统的查询做出及时的响应。

在接受到客户端的请求之后,当然包括了HL、(H1,H2,…,Hn),以及查询语句,服务端进行如下操作。

(1)用查询语句对服务器端数据库进行查询,得到T列数据结果,假设分别是(R1,R2,…,Rn),且每列数据长度为m;

(2)把该组数据结果用相同的Hash算法进行处理,得到T列结果,假设分别为(H1,H2,…,Hn)且每个摘要的长度为rl;

(3)对所有N列结果进行Hash计算,得到长度为n的HL;

(4)比较HL与HL,如果两者相同,由Hash函数的特性,可以肯定的说,客户端得到的数据结果与服务器数据库得到的数据结果是一致的,那么服务端数据库就不用把所有的查询结果都返回给客户端,只要通知客户端在其之上的数据就是最新的数据即可,所有Android上的当前数据都是有效的。

(5)如果HL与HL两者不同。那么就说明两者的原始查询数据结果是不同的,这时服务端把从客户端得到的(H1,H2,…,Hn)与从服务端得到的(R1,R2,…,Rn)逐条进行比较,所有不相同的结果即为被更新或新增加的数据。这些所有不同的Hash所对应的原始数据结果,都应该被通过网络传送回客户端。

(6)客户端在接收到这些不同的数据结果后,会把他们更新到自己本地的数据库之中,使其与服务器端保持数据的一致性。

3结论

为了能实现学生“随时、随地、随身”个性化学习,本文将CDIO教学系统引入Android移动平台,在教学方式上实现突破。本文重点对此模式下数据同步技术优化的研究,针对于传统数据同步技术 的不足,提出了一种新的数据同步方案,通过实验验证,对系统优化有实际意义。

基金项目:吉林省社会科学基金项目 《基于大数据服务平台的创新创业型大学生培养研究》(2016B192)。