一种数据更新的方法和系统转让专利

申请号 : CN201110219530.1

文献号 : CN102289480B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱吕亮

申请人 : 深圳市茁壮网络股份有限公司

摘要 :

本发明涉及数据处理领域,特别是涉及一种数据更新的方法和系统,所述方法包括:客户端获取工作数据源文件;客户端监测从服务器传输来的数据中是否存在与所述工作数据源文件标识相同的数据源文件;如果存在,所述客户端判断所述数据源文件是否有更新;如果有更新,客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件。本发明提供的方法由客户端监测数据是否有更新,避免了应用模块需要定期向服务器发送查询请求以查询数据是否有更新的问题,避免了繁琐的维护工作。另一方面,本发明可以适用于类似数据广播的单向环境中,易于实现。最后,本技术方案只保存工作数据源文件与最新数据源文件,节省了存储空间。

权利要求 :

1.一种数据更新的方法,其特征在于,所述方法包括:客户端获取工作数据源文件;

客户端监测从服务器传输来的数据中是否存在与所述工作数据源文件标识相同的数据源文件;

如果存在,所述客户端判断所述数据源文件是否有更新;

如果有更新,客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件;

所述客户端中的浏览器向应用模块发送消息,通知所述应用模块有更新的数据源文件;

所述应用模块接收到所述浏览器的消息后,所述应用模块选择是否立即切换工作数据源文件;

如果是,所述应用模块立即进行切换,所述浏览器将工作数据源文件替换为最新数据源文件,并将最新数据源文件置为空;

如果否,所述应用模块不进行切换,保持当前所述工作数据源文件不变。

2.根据权利要求1所述的方法,其特征在于,所述保存当前所述更新的数据源文件,作为最新数据源文件具体为:所述客户端将原有的数据源文件替换为当前所述更新的数据源文件作为最新数据源文件。

3.根据权利要求1所述的方法,其特征在于,所述客户端获取工作数据源文件具体包括:应用模块向所述客户端中的浏览器发送查询请求,所述查询请求包含请求查询的数据对应的数据源文件的标识;所述标识与数据源文件具有对应关系;

所述浏览器接收所述查询请求,通知所述客户端中的传输模块根据所述数据源文件的标识接收对应的数据源文件;

所述传输模块根据所述数据源文件的标识从服务器传输来的数据中提取所述数据源文件;

所述客户端中的浏览器从所述传输模块获取并保存所述数据源文件,作为工作数据源文件。

4.根据权利要求1至3任意一项所述的方法,其特征在于,所述数据源文件是从服务器端向客户端周期性推送的数据包。

5.根据权利要求1所述的方法,其特征在于,所述保存当前所述更新的数据源文件,作为最新数据源文件之后进一步包括:所述客户端中的浏览器设置数据库的状态属性值,使得所述数据库的状态属性值表示所述数据库对应的数据源文件有更新。

6.一种数据更新的系统,其特征在于,所述系统包括:获取单元,用于客户端获取工作数据源文件;

监测单元,用于客户端监测从服务器传输来的数据中是否存在与所述工作数据源文件标识相同的数据源文件;

判断单元,用于如果存在与所述工作数据源文件标识相同的数据源文件时,所述客户端判断所述数据源文件是否有更新;

第一保存单元,用于如果有更新,所述客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件;

更新通知单元,用于所述客户端的浏览器向应用模块发送消息,通知所述应用模块有更新的数据源文件;

选择单元,用于所述应用模块接收到所述浏览器的消息后,所述应用模块选择是否立即切换工作数据源文件;

第一切换单元,用于所述应用模块立即进行切换,所述浏览器将工作数据源文件替换为最新数据源文件,并将最新数据源文件置为空;

第二切换单元,用于所述应用模块不进行切换,保持当前所述工作数据源文件不变。

7.根据权利要求6所述的系统,其特征在于,所述第一保存单元具体为:所述第一保存单元用于所述客户端的传输模块接收所述更新的数据源文件,所述客户端中的浏览器从所述传输模块获取当前所述更新的数据源文件,将原有的数据源文件替换为当前所述更新的数据源文件作为最新数据源文件。

8.根据权利要求6所述的系统,其特征在于,所述获取单元具体包括:查询请求单元,用于应用模块向所述客户端中的浏览器发送查询请求,所述查询请求包含请求查询的数据对应的数据源文件的标识;所述标识与数据源文件具有对应关系;

第一通知单元,用于所述浏览器接收所述查询请求,通知所述客户端中的传输模块根据所述数据源文件的标识接收对应的数据源文件;

第一接收单元,用于所述传输模块根据所述数据源文件的标识从服务器传输来的数据中提取所述数据源文件;

第二保存单元,用于所述客户端中的浏览器从所述传输模块获取并保存所述数据源文件,作为工作数据源文件。

9.根据权利要求6所述的系统,其特征在于,所述系统进一步包括:状态设置单元,用于所述客户端中的浏览器设置数据库的状态属性值,使得所述数据库的状态属性值表示所述数据库对应的数据源文件有更新。

说明书 :

一种数据更新的方法和系统

技术领域

[0001] 本申请涉及数据处理领域,特别是涉及一种数据更新的方法和系统。

背景技术

[0002] 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。随着信息技术的发展,数据库得到了广泛的应用。一般的数据库技术都基于C/S(Client/Server,客户端/服务器)结构。这种结构充分利用了两端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,一般需要一个双向的环境来实现,即需要服务器端能够响应客户端的查询请求。
[0003] 随着互联网技术的兴起,出现了一种B/S(Browser/Server,浏览器/服务器)结构。B/S结构可以实现不同的人员、从不同的地点、以不同的接入方式访问和操作共同的数据库。B/S模式最大特点是:用户可以通过浏览器去访问互联网上的文本、数据、图像、动画、视频点播和声音信息,这些信息都实际存放在数据库服务器中。用户通过浏览器就可以访问数据库服务器中的数据。
[0004] 现在,B/S结构已被广泛应用于数据库技术中,其中,一个典型的应用是是AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)。AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是一种创建交互式网页应用的网页开发技术。在AJAX应用环境下,数据库的更新是这样实现的:作为客户端的浏览器周期性向服务器提交查询请求,查询是否有新的数据更新。AJAX应用可以仅向服务器发送并取回必需的数据,因此在服务器和浏览器之间交换的数据大量减少,应用响应更快。但是AJAX应用需要双向环境,即需要服务器能够响应客户端的请求。
[0005] 在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:AJAX应用下的数据库更新技术,需要客户端周期性向服务器查询数据是否有更新,因此需要应用模块负责维护周期性查询逻辑,维护工作繁琐。另一方面,AJAX应用需要双向环境,即需要服务器能够响应客户端的请求。而在类似数据广播这种单向环境下,服务器并不支持客户端的查询请求,因此导致AJAX在数据广播这种单向环境下,不能被很好应用。

发明内容

[0006] 为解决上述技术问题,本申请实施例提供了一种数据库更新的方法和系统,可以适用于单向环境下的数据库更新,易于实现。
[0007] 技术方案如下:
[0008] 一种数据更新的方法,所述方法包括:
[0009] 客户端获取工作数据源文件;
[0010] 客户端监测从服务器传输来的数据中是否存在与所述工作数据源文件标识相同的数据源文件;
[0011] 如果存在,所述客户端判断所述数据源文件是否有更新;
[0012] 如果有更新,客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件。
[0013] 优选的,所述保存当前所述更新的数据源文件,作为最新数据源文件具体为:
[0014] 所述客户端中将原有的数据源文件替换为当前所述更新的数据源文件作为最新数据源文件。
[0015] 优选的,所述客户端获取工作数据源具体包括:
[0016] 应用模块向所述客户端中的浏览器发送查询请求,所述查询请求包含请求查询的数据对应的数据源文件的标识;
[0017] 所述浏览器接收所述查询请求,通知所述客户端中的传输模块根据所述数据源文件的标识接收对应的数据源文件;
[0018] 所述传输模块根据所述数据源文件的标识从服务器传输来的数据中提取所述数据源文件;
[0019] 所述客户端中的浏览器从所述传输模块获取并保存所述数据源文件,作为工作数据源文件。
[0020] 优选的,所述保存当前所述更新的数据源文件,作为最新数据源文件之后,所述方法进一步包括:
[0021] 所述客户端的浏览器向应用模块发送消息,通知所述应用模块有更新的数据源文件;
[0022] 所述应用模块接收到所述浏览器的消息后,所述应用模块选择是否立即切换工作数据源文件;
[0023] 如果是,所述应用模块立即进行切换,所述浏览器将工作数据源文件替换为最新数据源文件,并将最新数据源文件置为空;
[0024] 如果否,所述应用模块不进行切换,保持当前所述工作数据源文件不变。
[0025] 优选的,所述数据源文件是从服务器端向客户端周期性推送的数据包。
[0026] 优选的,所述保存当前所述更新的数据源文件,作为最新数据源文件之后进一步包括:
[0027] 所述客户端的浏览器设置数据库的状态属性值,使得所述数据库的状态属性值表示所述数据库对应的数据源文件有更新。
[0028] 本申请还公开了一种数据更新的系统,所述系统包括:
[0029] 获取单元,用于客户端获取工作数据源文件;
[0030] 监测单元,用于客户端监测从服务器传输来的数据中是否存在与所述工作数据源文件标识相同的数据源文件;
[0031] 判断单元,用于如果存在与所述工作数据源文件标识相同的数据源文件时,所述客户端判断所述数据源文件是否有更新;
[0032] 第一保存单元,用于如果有更新,所述客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件。
[0033] 优选的,所述第一保存单元具体为:
[0034] 所述第一保存单元用于所述客户端的传输模块接收所述更新的数据源文件,所述客户端中的浏览器从所述传输模块获取当前所述更新的数据源文件,将原有的数据源文件替换为当前所述更新的数据源文件作为最新数据源文件。
[0035] 优选的,所述获取单元具体包括:
[0036] 查询请求单元,用于应用模块向所述客户端中的浏览器发送查询请求,所述查询请求包含请求查询的数据对应的数据源文件的标识;所述标识与数据源文件具有对应关系;
[0037] 第一通知单元,用于所述浏览器接收所述查询请求,通知所述客户端中的传输模块根据所述数据源文件的标识接收对应的数据源文件;
[0038] 第一接收单元,用于所述传输模块根据所述数据源文件的标识从服务器传输来的数据中提取所述数据源文件;
[0039] 第二保存单元,用于所述客户端中的浏览器从所述传输模块获取并保存所述数据源文件,作为工作数据源文件。
[0040] 优选的,所述系统进一步包括:
[0041] 更新通知单元,用于所述客户端的浏览器向应用模块发送消息,通知所述应用模块有更新的数据源文件;
[0042] 选择单元,用于所述应用模块接收到所述浏览器的消息后,所述应用模块选择是否立即切换工作数据源文件;
[0043] 第一切换单元,用于所述应用模块立即进行切换,所述浏览器将工作数据源文件替换为最新数据源文件,并将最新数据源文件置为空;
[0044] 第二切换单元,用于所述应用模块不进行切换,保持当前所述工作数据源文件不变。
[0045] 优选的,所述系统进一步包括:
[0046] 状态设置单元,用于所述客户端中的浏览器设置数据库的状态属性值,使得所述数据库的状态属性值表示所述数据库对应的数据源文件有更新。
[0047] 本申请的有益效果为:本申请提供了一种数据更新的方法和系统,本申请提供的技术方案由客户端监测从服务器传输来的数据是否有更新的数据源文件,并在判断有更新的数据源文件时,客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件。本申请提供的技术方案由客户端主动监测从服务器传输来的数据是否有更新的数据源文件,如果数据有更新时通知应用模块,从而避免了应用模块需要定期向服务器发送查询请求以查询数据是否有更新的问题,避免了繁琐的维护工作。另一方面,由于应用模块请求查询数据时,是向客户端的浏览器发送查询请求,数据的更新、查询等操作均在客户端进行,因此不需要服务器响应客户端的查询请求,因此本申请可以适用于类似数据广播的单向环境中,且易于实现。
[0048] 其次,本申请的技术方案中客户端中的浏览器只保存工作数据源文件与最新数据源文件,节省了存储空间。另外,本申请的技术方案中在数据源文件有更新时,由应用模块决定是否切换数据库,避免了立即切换数据库引起的应用逻辑不一致的问题。

附图说明

[0049] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050] 图1为数据广播环境下服务器向客户端推送数据包的示意图;
[0051] 图2为本申请实施例提供的系统架构图;
[0052] 图3为本申请提供的方法第一实施例流程图;
[0053] 图4为本申请提供的方法第二实施例流程图;
[0054] 图5为本申请实施例提供的数据更新系统示意图。

具体实施方式

[0055] 本申请实施例提供了一种数据更新方法和系统,可以适用于单向环境下的数据更新,易于实现。
[0056] 为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0057] 首先对本申请一种数据的更新方法进行说明。
[0058] 前面提到,现有技术中的AJAX应用需要双向环境,即需要服务器能够响应客户端的请求。而在类似数据广播这种单向环境下,服务器并不支持客户端的查询请求,因此导致AJAX在数据广播这种单向环境下,不能被很好应用。
[0059] 下面首先对数据广播技术环境下的数据库应用进行介绍。
[0060] 数据广播技术是把数据化的音频、视频、图像、动画、软件包括以及计算机文件等各种数据信息通过数字电视广播信道以″推送″(push)的方式传输给用户的数字电视机顶盒、数字电视接收机、个人电脑(pc)以及移动设备等智能设备的一类新型业务。这种技术的实现方式是使用单一的系统前段(Head-end),连续、滚动地将已编辑整理好的内容,经过信息传输到网络,传送到地域广泛的、能够处理这些数据的用户智能设备上。数据广播是单向的,服务器端将大量的数据以连续的、滚动的方式广播到网络中,作为客户端的机顶盒则负责从网络中解析需要的数据。如果采用类似sqlite(一种关联式数据库,可以适用嵌入式的系统)的数据库系统,可以将整个数据库的数据源文件通过数据广播方式传送到机顶盒上。
[0061] 数据广播与万维网的区别在于:
[0062] 数据广播是单向的,服务器端将大量的数据以连续的、滚动的方式广播到网络中,作为客户端的机顶盒则负责从网络中解析自己所需要的数据。
[0063] 万维网(www)是双向的,属于B/S结构。作为客户端的浏览器,向服务器提交查询请求,服务器返回查询结果。这里的查询,是一个广义的概念,包括html页面的请求,图片文件的请求等。
[0064] 数据广播不支持双向的通讯,即不支持客户端向服务器端发送任何查询。客户端是被动地从网络中提取数据。我们可以将数据广播模式下的网络看作一个动态、持续的数据流,服务器端将一个数据对象,例如数据库的数据源文件,按协议定义的格式,分割成小的数据包,依次推送数据流中。服务器端会周期性地重复推送数据,以保证客户端可以随时提取数据,还原出完整的数据源文件。客户端提取数据的过程,一般要等待一个周期,以保证可以提取到数据对象的所有数据包。
[0065] 其中,服务器不断向网络数据流中推送数据包。一个固定数据对象的数据包,依次进行编号。其中1.0是版本号,后面数据更新会继续用到这个概念。最后一位数字是数据包的编号。实际上,服务器一般会将许多数据对象的数据包,一起推到网络数据流中。客户端如果要提取某一个数据对象,例如下载某个文件,首先找到该文件的标识,然后根据这个标识从网络数据流中提取属于该文件的数据包。一般地,在服务器重复发送该数据对象的网络数据包的一个周期中,客户端可以提取到完整编号的数据包,再按照协议规定的格式,将数据包拼装成完整的文件。
[0066] 在数据广播环境中,可以使用B/S架构数据库技术,将数据库的数据源文件,广播到网络中。作为客户端的机顶盒从网络中提取该数据源文件,保存在客户端,然后基于该数据源文件,对其中的数据进行查询、显示、操作。在单向的数据广播中,这种直接下载数据源文件的方案,为数据库的使用提供了可能性。
[0067] 数据广播模式下,服务器端虽然不支持客户端的查询请求,但服务器可以主动更新数据。数据广播相关的协议对数据对象定义了版本的概念。服务器可以将一个新版本的数据对象推送到数据流中。客户端的数据解析提取模块,可以解析到版本号,确认数据对象的内容更新。如图1所示,图1为数据广播环境下服务器向客户端推送数据包的示意图。
[0068] 本申请即结合服务器端推送数据的方式,提供了一种数据库更新的方法。本申请的技术方案中是从服务器端一次性下载整个数据库的数据源文件,并保存在客户端的浏览器中,供应用模块在客户端查询、显示、操作数据。
[0069] 参见图2,为本申请实施例提供的系统架构图。
[0070] 如图2所示,本申请提供的系统中有一个服务器端和一个客户端。所述服务器端周期性地向所述客户端推送数据。所述客户端包括传输模块、浏览器、应用模块。其中,所述传输模块用于接收来自服务器端发送的数据,并从数据流中解析数据。所述传输模块还用于检测数据是否有更新,当有更新时,通知浏览器。所述浏览器负责向所述传输模块请求数据、接收数据,并负责储存数据源文件。当有更新的数据源时,通知应用模块。所述应用模块负责打开数据库,注册回调函数。当数据源文件下载成功或者有更新时,查询数据库,并在页面上显示数据。
[0071] 参见图3,为本申请提供的方法第一实施例流程图。
[0072] 一种数据更新的方法,所述方法包括:
[0073] S301,客户端获取工作数据源文件。
[0074] S302,客户端监测从服务器传输来的数据中是否存在与所述工作数据源文件标识相同的数据源文件。
[0075] S303,如果存在,所述客户端判断所述数据源文件是否有更新。
[0076] S304,如果有更新,客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件。
[0077] 本申请提供的技术方案由客户端监测从服务器传输来的数据是否有更新的数据源文件,并在有更新的数据源文件时,客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件,以完成数据的更新。本申请提供了一种主动更新的方法,避免了应用模块需要定期向服务器发送查询请求以查询数据是否有更新的问题,本申请提供的技术方案易于实现,避免了繁琐的维护工作。另一方面,本申请可以适用于类似数据广播的单向环境中,实现简单。
[0078] 参见图4,为本申请提供的方法第二实施例流程图。
[0079] 下面以一个新闻数据库的示例来介绍本申请数据库的更新方法。需要说明的是,本申请并不限于新闻的应用场景,本申请不限制所应用的数据库的内容、形式等,下述示例不应视为对本申请的限制。
[0080] 数据库技术被广泛应用,例如一种新闻数据库。下面对如何创建一个新闻数据库进行说明。
[0081] 首先需要对新闻的属性进行分析定义。一则新闻应该有的属性包括:
[0082] 编号(id),唯一标识新闻的属性;
[0083] 标题(title),新闻的标题,较短的内容,在新闻列表中显示;
[0084] 内容(content),新闻的内容,在浏览新闻全文时显示。
[0085] 可以新建一个数据库,命名为news,再在数据库中新建一个数据表news。
[0086] 在sqlite上可以下面的sql语句描述上述新闻属性对应的数据表。
[0087] CREATE TABLE[news](
[0088] [id]INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[0089] [title]TEXT NOT NULL,
[0090] [content]TEXT NOT NULL);
[0091] 其中primary key表示是主键,autoincrement表示其值会自动增长。Integer表示是整数类型,Text表示是文本类型,Not null表示属性值不能为空。
[0092] 向表中添加两条记录后,用数据库浏览工具看起来效果可能如表1所示的。
[0093] 表1
[0094]id title content
1 新闻标题一 新闻内容一新闻内容一
2 新闻标题二 新闻内容二新闻内容二
[0095] S401,应用模块向所述客户端中的浏览器发送查询请求。
[0096] 具体的,所述查询请求包含请求查询的数据对应的数据源文件的标识;所述标识与数据源文件具有对应关系。前面提到,在数据广播环境中,如果客户端要提取某一个数据对象,首先需要找到该文件的标识,然后根据这个标识在数据流中提取属于该文件的数据包。这里,提到了文件标识的概念。所述文件标识用于区分不同的文件,不同的文件具有不同的文件标识。应用模块向客户端的浏览器发送查询请求时,在查询请求里包括了与请求查询的数据对应的数据源文件的标识。
[0097] 前面提到,数据库是按照某种数据模型组织、存放数据的集合。在这里需要说明的是,在本申请实施例中,应用模块请求查询的数据是存放在数据库中的,而数据库中的原始数据是从服务器传输来的数据源文件中获得的。因此,应用模块请求查询的数据与数据库之间具有对应关系,数据与数据源文件之间具有对应关系。在本申请实施例中,如果应用模块需要查询数据库的数据时,会通过window.openDatabase()函数通知浏览器,请求接收与查询请求的数据对应的数据源文件,并注册openCbk回调函数。注册openCbk回调函数可以避免轮询。这是因为,由于下载需要时间,所以必须使用异步的机制。如果没有回调机制,则应用模块必须在打开后,周期性查询数据库对象的状态,来决定是否要开始查询,只有在下载成功的情况下才能开始查询。而注册了回调函数之后,当浏览器接收到数据源文件时,可以通过所述openCbk回调函数通知应用模块,避免了轮询。
[0098] S402,所述浏览器接收所述查询请求,通知所述客户端中的传输模块根据所述数据源文件的标识接收对应的数据源文件。
[0099] 浏览器接收到应用模块发送的查询请求后,会通知传输模块取接收对应的数据源文件,具体的,浏览器会将查询请求中包含的需要查询的数据源文件的标识发送给传输模块。
[0100] S403,所述传输模块根据所述数据源文件的标识从服务器传输来的数据中提取所述数据源文件。
[0101] 前面提到,在数据广播环境下,服务器会周期性地向所述客户端推送数据。具体的,服务器一般会将许多数据对象的数据包,一起推到网络数据流中。客户端如果要提取某一个数据对象,例如下载某个文件,首先找到该文件的标识,然后根据这个标识从网络数据流中提取属于该文件的数据包。因此,传输模块接收到浏览器的通知后,则根据请求查询的数据源文件的标识,从服务器传输来的数据中提取与应用模块请求查询的所述数据对应的数据源文件。这里,传输模块是一次性下载完所述数据库的源文件,所述浏览器会将所述接收的数据源文件保存,供应用模块查询、访问。
[0102] S404,所述浏览器从所述传输模块获取并保存所述数据源文件,作为工作数据源文件。
[0103] 一般而言,在通常的做法中,传输模块在下载或提取数据源文件后,会在模块内保存一份数据源文件。只有当所有数据都接收完毕后,才会通知浏览器。同时,传输模块会提供接口,供浏览器获取数据源文件数据。
[0104] 在无更新机制的方法中,由于数据源文件只会存在一个版本,所以浏览器可以直接使用传输模块中储存的数据源文件。
[0105] 但在有更新机制的方法中,服务器会不断地向客户端推送数据,便会存在多个版本的数据源文件。这时,不管是由传输模块还是由浏览器来储存所有版本的数据源文件,都是不现实的。这是因为在有更新机制的方法中,系统一般会长时间运行,数据源文件会存在非常多的版本,全部储存会对空间要求非常高,并且造成较大浪费。
[0106] 在本申请提供的方案中,浏览器负责储存数据源文件。这里,浏览器并不会保存所有版本,而只保存正在使用的版本(即工作数据源文件)和最新的版本(最新数据源文件)。
[0107] 假设第一个版本的数据源文件如表1所示。
[0108] S405,所述浏览器向所述应用模块发送数据源文件接收完毕的通知,所述应用模块打开所述工作数据源文件进行查询。
[0109] 具体的,浏览器下载完数据库对应的数据源文件后,会根据下载成功或失败,设置好数据库的状态(status)属性值,然后调用openCbk回调函数通知应用模块数据接收完毕。所述数据库的状态属性可以为数据库打开成功,数据库打开失败,数据库状态出错等。
[0110] 这时,应用模块根据数据库对象的状态,在数据库对象的状态为数据库打开成功时,对数据库进行查询。打开的界面如表2所示:
[0111] 表2
[0112]
[0113] 步骤S401至S405即为客户端获取工作源文件的过程。客户端获取工作源文件后,会对所述工作源文件是否有更新进行监测。
[0114] S406,客户端监测从服务器传输来的数据中是否存在与所述工作数据源文件标识相同的数据源文件。
[0115] 具体的,是由客户端中的传输模块进行监测。前面提到,传输模块的一个作用是监测数据源文件是否有更新。具体的,客户端监测从服务器传输来的数据中是否存在与所述当前工作数据源文件标识相同的数据源文件。前面提到,在数据广播环境中,如果客户端要提取某一个数据对象,首先需要找到该文件的标识,然后根据这个标识在数据流中提取属于该文件的数据包。这里,提到了文件标识的概念。所述文件标识用于区分不同的文件。不同的文件具有不同的文件标识。前面提到,在数据广播环境中,服务器会不断向网络数据流中推送数据包。一个固定数据对象的数据包,会依次进行编号。其中1.0是版本号。第一个版本的版本号为1.0,第二个版本的版本号为2.0,第三个版本的版本号为3.0......这里用版本号来对数据源文件是否有更新进行区分。需要说明的是,具有不同版本号的同一数据源文件具有相同的文件标识。因此,客户端监测从服务器中传输来的数据是否存在与当前工作源文件具有相同标识的数据源文件,如果存在,进而通过比较版本号,即可判断工作源文件是否有更新,从而完成了对工作源文件更新的监测。
[0116] S407,如果存在,所述客户端判断所述数据源文件是否有更新。
[0117] 具体的,所述客户端的传输模块可以根据文件的版本号来判断数据源文件是否有更新。如第一个版本的数据源文件的版本号为1.0,第二个版本的数据源文件的版本号为2.0......如果检测到数据源文件的版本号有更新,即可判断数据源文件有更新。本申请不限定客户端判断所述数据源文件是否有更新的实现方式。
[0118] S408,如果有更新,客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件
[0119] 具体的,当客户端中的传输模块监测到与应用模块请求查询的数据对应的数据源文件有更新时,接收更新的数据源文件。
[0120] 假设传输模块接收的更新的数据源文件为第2版本的数据源文件,如表3所示。
[0121] 表3
[0122]id title content
1 新闻标题一 新闻内容一新闻内容一
2 新闻标题二 新闻内容二新闻内容二
[0123] 浏览器从所述传输模块获取并保存当前所述更新的数据源文件,作为最新数据源文件。
[0124] 优选的,所述浏览器从传输模块获取当前所述更新的数据源文件,删除已保存的原有的数据源文件,保存当前所述更新的数据源文件作为最新数据源文件。
[0125] 这里,浏览器只保存最新数据源文件,当有新版本的数据源文件时,即替换原有的最新数据源文件,而把更新的新版本的数据源文件保存作为最新数据源文件。这样,只保存正在使用的版本(即工作数据源文件)和最新的版本(最新数据源文件)。
[0126] 优选的,所述浏览器设置数据库的状态属性值,所述数据库的状态属性值用于表示所述数据库对应的数据源文件有更新。
[0127] 前面提到,所述数据库的状态属性可以为数据库打开成功,数据库打开失败,数据库状态出错等。在本申请提供的实施例中,对数据库的状态属性值进行了扩展,通过设置数据库的状态属性值,使其可以表示数据库对应的数据源文件有更新。例如,可以定义数据库的状态属性取值为5时,代表数据库的数据源文件更新。
[0128] S409,所述浏览器向所述应用模块发送消息,通知所述应用模块有更新的数据源文件。
[0129] 这里,浏览器向所述应用模块发送更新通知,仍使用openCbk回调函数来实现。在本申请实施例中,在调用openCbk回调函数之前,都会设置对应的数据库状态属性。具体的设计可以如下表所示。
[0130] 表4
[0131]
[0132]
[0133] S410,所述应用模块接收到所述浏览器的消息后,所述应用模块选择是否立即切换。如果是,进入步骤S411;如果否,进入步骤S413。
[0134] 在本申请的实施例中,由应用模块决定是否切换数据库,即切换工作源文件。
[0135] 在前面的流程中,当浏览器接收到新版本数据源文件时,浏览器并不马上切换查询所基于的数据源文件。这是因为数据库的查询也有可能是采用异步的机制。如果直接删除原来的数据源文件,替换为新版本,则有可能出现查询的不一致性。
[0136] 例如,页面应用可能有如下的逻辑:先通过一次查询,获取新闻的编号列表,然后提供一种界面,供选择浏览某一则新闻。用户点击后,根据所选新闻的编号,去进一步查询新闻的具体内容,显示到页面。
[0137] 上述步骤可能并不是连续的。用户何时点击,并不能预先获知。如果在这期间,传输模块通知浏览器数据有更新,并且浏览器直接切换数据源文件,则用户点击后,去进一步查询新闻的具体内容时,所依据的新闻编号,有可能在新版本的数据源文件中是无效的。即使偶尔在新版数据源文件中有效,但对应的新闻已经不是用户所期望的。
[0138] 为了避免上述情况的出现,在本申请实施例中,当浏览器保存更新的数据源文件后,通知所述应用模块,由所述应用模块选择是否立即切换数据库,即切换工作源文件。
[0139] 具体的,本申请定义一个新的函数update(),用来切换数据源文件。将数据源文件的切换的主动权交给应用模块。这种设计的另一个好处,是即使有更新机制,原有无更新机制的应用,仍然可以兼容。这是因为原有的应用模块在设计时,还没有update()接口,所以也不会出现这个接口的调用。而浏览器本身不会主动切换数据源文件,因此仍能够兼容原有的无更新机制的应用模块。
[0140] S411,所述应用模块立即进行切换,所述浏览器将工作数据源文件替换为最新数据源文件,并将最新数据源文件置为空,进入步骤S412。
[0141] 在本申请的一个实施例中,当应用模块接收到浏览器发送的更新通知后,可以选择立即切换数据库,即切换工作源文件。切换的实质,就是将“工作数据源文件”替换为“最新数据源文件”,并将“最新数据源文件”置为空。
[0142] 由于切换的主动权在应用模块,如果应用模块不按规则调用切换接口,例如在没有“最新数据源文件”时调用切换接口,则规定,保持“工作数据源文件”,不进行任何实际动作。
[0143] S412,所述应用模块对所述工作数据源文件对应的数据库进行查询。
[0144] 这时,应用模块切换到最新的数据源文件,开始重新查询,显示最新版本的数据源文件对应的数据库的内容。具体的设计可以如下表5所示。
[0145] 表5
[0146]
[0147] 这时,在用户页面时,显示的内容可以如表6所示。
[0148] 表6
[0149]
[0150] S413,所述应用模块不立即进行切换,保持当前所述工作数据源文件不变。
[0151] 在本申请的一个实施例中,当应用模块接收到浏览器发送的更新通知后,也可以选择不立即切换数据库,即切换工作源文件。这时,保持当前所述工作数据源文件不变。
[0152] 本申请实施例还公开了一种数据更新的系统。
[0153] 参见图5,为本申请实施例提供的数据更新系统示意图。
[0154] 一种数据更新的系统,所述系统包括:
[0155] 获取单元100,用于客户端获取工作数据源文件。
[0156] 监测单元200,用于客户端监测从服务器传输来的数据中是否存在与所述工作数据源文件标识相同的数据源文件。
[0157] 判断单元300,用于如果存在与工作数据源文件标识相同的数据源文件时,所述客户端判断所述数据源文件是否有更新。
[0158] 第一保存单元400,用于如果有更新,所述客户端接收更新的数据源文件,保存当前所述更新的数据源文件,作为最新数据源文件。
[0159] 优选的,所述第一保存单元具体为:
[0160] 所述第一保存单元用于所述客户端的传输模块接收所述更新的数据源文件,所述客户端中的浏览器从传输模块获取当前所述更新的数据源文件,将原有的数据源文件替换为当前所述更新的数据源文件作为最新数据源文件。
[0161] 具体的,所述获取单元100具体包括:
[0162] 查询请求单元,用于所述应用模块向所述客户端中的浏览器发送查询请求;所述查询请求包含请求查询的数据对应的数据源文件的标识;所述标识与数据源文件具有对应关系。
[0163] 第一通知单元,用于所述浏览器接收所述查询请求,通知所述客户端中的传输模块根据所述数据源文件的标识接收对应的数据源文件。
[0164] 第一接收单元,用于所述传输模块根据所述数据源文件的标识从服务器传输来的数据中提取所述数据源文件。
[0165] 第二保存单元,用于所述客户端中的浏览器从所述传输模块获取并保存所述数据源文件,作为工作数据源文件。
[0166] 第二通知单元,用于所述浏览器向所述应用模块发送数据源文件接收完毕的通知。
[0167] 查询单元,用于所述应用模块打开所述工作数据源文件进行查询。
[0168] 优选的,所述系统进一步包括:
[0169] 更新通知单元,用于所述客户端的浏览器向应用模块发送消息,通知所述应用模块有更新的数据源文件。
[0170] 选择单元,用于所述应用模块接收到所述浏览器的消息后,所述应用模块选择是否立即切换工作数据源文件。
[0171] 第一切换单元,用于所述应用模块立即进行切换,所述浏览器将工作数据源文件替换为最新数据源文件,并将最新数据源文件置为空;
[0172] 第二切换单元,用于所述应用模块不进行切换,保持当前所述工作数据源文件不变。
[0173] 优选的,所述系统进一步包括:
[0174] 状态设置单元,用于所述客户端中的浏览器设置数据库的状态属性值,使得所述数据库的状态属性值表示所述数据库对应的数据源文件有更新。
[0175] 本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0176] 以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。