数据服务器、数据存取系统及数据存取方法

文档序号:6488225阅读:168来源:国知局
数据服务器、数据存取系统及数据存取方法
【专利摘要】本发明涉及一种数据服务器,其包括:包括数据存取模块及防空模块。数据存取模块用于存取外部数据源内的数据。防空模块包括存储器与防空逻辑单元,存储器用于以多位方式存储数据状态码。防空逻辑单元用于返回存储器内的数据状态码,及根据数据存取模块对数据源的数据操作以多位方式写入相应的数据状态码。上述的数据服务器的防空架构简单,构建成本及维护成本低。此外,本发明还供一种数据存取系统及一种数据存取方法。
【专利说明】数据服务器、数据存取系统及数据存取方法
【技术领域】
[0001]本发明涉及数据库技术,尤其涉及一种数据服务器、数据存取系统及数据存取方法。
【背景技术】
[0002]在涉及海量数据的网络服务中,为了减轻数据库系统的压力,一般会将系统构建成防空架构。图1所示为一种已知的数据防问防空架构的示意图。在客户端与实际的数据源(缓存+磁盘)中间隔着逻辑服务器。当客户端需要访问数据时先向逻辑服务器发送请求,逻辑服务器向防空服务器BitmapSvr查询数据源中是否存在客户端所需求的数据,如果有相关数据,逻辑服务器再向数据源发出数据访问请求并将数据转发给客户端。如果没有相关数据,逻辑服务器可以直接处理客户端的数据访问请求。因此可见,防空技术可以有效减少对数据库的访问压力。
[0003]然而以上的系统架构存在以下问题:
[0004]I)需要单独设置的防空服务器,系统复杂,维护困难;
[0005]2)防空服务通常需要提供给多个业务访问,路由配置管理复杂,如果每个业务设置一套防空服务器,成本太高;
[0006]3)基于对性能的要求,防空服务器采用全内存的数据,灾难性的情况下无法恢复,需要重新找机制恢复。通常采用冷备的方法,将数据提取出来,异地保存,在极端情况下还可以恢复,但是很难对灾难期间的数据进行有效性保证,这时服务受到影响,数据将丢失。

【发明内容】

[0007]有鉴于此,有必要提供一种数据服务器、数据存取系统及数据存取方法,其可以解决数据防空问题,且可以避免现有防空架构的高复杂度及高成本。
[0008]上述的数据服务器是通过以下技术方案实现的:
[0009]一种数据服务器,其包括:包括数据存取模块及防空模块。数据存取模块用于存取外部数据源内的数据。防空模块包括存储器与防空逻辑单元,存储器用于以多位方式存储数据状态码。防空逻辑单元用于返回存储器内的数据状态码,及根据数据存取模块对数据源的数据操作以多位方式写入相应的数据状态码。
[0010]作为上述数据服务器的进一步改进,上述多位方式为双位方式。
[0011]作为上述数据服务器的进一步改进,上述双位数据状态码分别表示以下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。
[0012]作为上述数据服务器的进一步改进,上述防空逻辑单元用于按照以下逻辑写入该数据状态码:
[0013]初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作结果为空则变为访问过无数据态;
[0014]有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据态;[0015]访问过无数据态经数据写入操作后变为有数据态;
[0016]不确定态在数据读取操作成功后变为有数据态,经读取操作无结果则变为访问过无数据态。
[0017]作为上述数据服务器的进一步改进,分别采用二进制编码00、01、10、11表示初始无数据态、有数据态、访问过无数据态、及不确定态。
[0018]上述的数据存取系统是通过以下技术方案实现的:
[0019]一种数据存取系统,其包括逻辑服务器及数据源,逻辑服务器包括数据存取模块,用于存取该数据源内的数据。逻辑服务器还包括防空模块。防空模块包括存储器及防空逻辑单元。存储器用于以多位方式存储数据状态码。防空逻辑单元用于返回存储器内的数据状态码,及根据数据存取模块对数据源的数据操作以多位方式写入相应的数据状态码。
[0020]作为上述数据存取系统的进一步改进,上述多位方式为双位方式。
[0021]作为上述数据存取系统的进一步改进,上述双位数据状态码分别表示以下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。
[0022]作为上述数据存取系统的进一步改进,上述防空逻辑单元用于按照以下逻辑写入该数据状态码:
[0023]初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作结果为空则变为访问过无数据态;
[0024]有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据态;
[0025]访问过无数据态经数据写入操作后变为有数据态;
[0026]不确定态在数据读取操作成功后变为有数据态,经读取操作无结果则变为访问过无数据态。
[0027]作为上述数据存取系统的进一步改进,分别采用二进制编码00、01、10、11表示初始无数据态、有数据态、访问过无数据态、及不确定态。
[0028]上述的数据存取方法是通过以下技术方案实现的:
[0029]一种数据存取方法,其包括:在对数据源的数据进行操作之前向防空逻辑单元查询数据状态码;在对数据源的数据进行操作之后根据具体数据操作以多位方式在存储器内写入数据状态码。
[0030]作为上述数据存取方法的进一步改进,上述多位方式为双位方式。
[0031]作为上述数据存取方法的进一步改进,上述双位数据状态码分别表示以下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。
[0032]作为上述数据服务方法的进一步改进,上述防空逻辑单元用于按照以下逻辑写入该数据状态码:
[0033]初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作结果为空则变为访问过无数据态;
[0034]有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据态;
[0035]访问过无数据态经数据写入操作后变为有数据态;
[0036]不确定态在数据读取操作成功后变为有数据态,经读取操作无结果则变为访问过无数据态。
[0037]作为上述数据存取方法的进一步改进,分别采用二进制编码00、01、10、11表示初始无数据态、有数据态、访问过无数据态、及不确定态。
[0038]作为上述数据存取方法的进一步改进,其还包括初始步骤,将存储器内所有的数据状态码设置为初始无数据态。
[0039]作为上述数据存取方法的进一步改进,其还包括在系统路由改变后将相应的数据状态码设置为不确定态。
[0040]上述的数据服务器、数据存取系统及数据存取方法中,在本机(数据服务器/逻辑服务器)中实现了数据防空架构,且使用双位数据状态码,明确代表数据在数据源中的状态,可以避免对数据源的空操作,减少了数据源的系统压力。相比于单独设置防空服务器的方式,系统结构更加精简,构建成本及维护成本都得到了极大的降低。
[0041]为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
【专利附图】

【附图说明】
[0042]图1为一种已知的数据库防空系统架构示意图。
[0043]图2为本发明实施例揭示的数据存取系统结构示意图。
[0044]图3为本发明实施例揭示的数据存取系统中防空逻辑单元的数据状态转换逻辑示意图。
[0045]图4为本发明实施例揭示的数据存取方法流程图。
【具体实施方式】
[0046]为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的数据服务器、数据存取系统及数据存取方法的【具体实施方式】、结构、特征及其功效,详细说明如后。
[0047]图2为本发明实施例揭示的数据存取系统的结构示意图。如图2所示,数据存取系统100包括逻辑服务器10、数据源20及客户端30。
[0048]客户端30要使用数据源20中的数据时,并不是直接连接至数据源20,而是向逻辑服务器10发出请求。客户端30与逻辑服务器10之间一般通过互联网、移动互联网连接,逻辑服务器10与数据源20之间一般可通过局域网、互联网连接。对于客户端30而言,数据是来源于逻辑服务器10,因此逻辑服务器10就是数据服务器。
[0049]逻辑服务器10包括数据存取模块11及防空模块12。
[0050]数据存取模块11用于存取数据源20中的数据。数据源20具体上可为数据库。对于数据库系统来说,为了提升效率,缓存(Cache)是很重要的技术手段,Cache主要用于存储一些需要频繁访问到的数据,而另外一些访问频率相对较低的数据可以存储在磁盘如硬盘或者固态硬盘中。
[0051]防空模块12用于在本机(逻辑服务器10)实现防空逻辑。具体地,防空模块12包括存储器121及防空逻辑单元122。
[0052]存储器121用于以多位的形式存储数据状态码。在硬件实现上,存储器121需要满足高速度的要求,因此在当前的技术条件下,存储器121 —般为易失性的内存。然而当其他种类的存储器,例如固态硬盘的性能达到要求后,同样可以应用于本实施例中。[0053]进一步地,存储器121可以采用共享内存实现,并可以进一步采用数据备份技术将内存内的数据备份下来,保证本地机器发生宕机或者掉电的情况下,存储器121可以恢复故障发生前的状态。具体地,可以采用转储技术(Dump)以及二进制日志(binlog)实现。上述的多位是相对于单位而言,可以理解,一个比特(Bit)仅可表示O或者I。因此,当数据状态码为单位时,仅能表达两个状态。相应的,对于N位的状态码可以表达2"种状态。本实施例中,仅以双位为例进行说明,其对应的数据状态码为00、01、10、及11,上述数据状态码的含义可以自行定义,例如,其可分别定义为:初始无数据态、有数据态、访问过无数据态、及不确定态。
[0054]本实施例中,数据防空是针对整型(Int)数据作为关键字或者关键字可以转换为Int型的数据库中的一个或者多个字段,一个典型的实例就是某即时通讯工具的用户号码。Int型数据占用32位存储空间,也就是说用户号码具有232个。对于每个字段进行双位防空编码,需要使用2Bit的存储空间。因此,对于Int型数据,存储双位的数据状态码需要使用的存储空间为2Bit*232/8=lGB。这IGB的二进制数据被称为位图(Bitmap)。当需要对多个字段进行防空处理时,对存储空间的要求相应增加,每增加一个字段,需要增加IGB内存。
[0055]除了数据状态码外,在Bitmap的头部还可添加锁止位,从而使此Bitmap可以适应单进程(线程)、多线程的情形,还可以实现为多进程共享访问。
[0056]防空逻辑单元122用于实现上述的防空逻辑。具体地,数据存取模块11需要存取数据源20之前,需要先经防空逻辑单元122查询相应的数据状态。当需要向数据源20读取/删除一些为空的数据或者不存在的数据,就可以直接由数据存取模块11返回结果(不存在或者数据为空等);而当需要对数据源20进行写操作或者删除操作时,相应改变存储器121内存储的数据状态码使其与数据源20保持同步。在初始状态下,即业务上线前,数据状态码可以完全设置为初始无数据态,即数据状态码为00。
[0057]在分布式系统中,需要保证路由的稳定性,如果有发生路由迁移的情况下,需要将对应的数据状态码置为不确定状态(11),这种状态是不稳定状态。由于不确定状态下,读取操作会直接连接数据源,其数据可能为空,此时就会多了一次空读取,然而这只是局部现象,对于系统的整体影响较小。此外,还将原来的状态复制到新路由的机器上。上述路由是指在分布式系统中,通过设置路由规则,使同一个关键字的访问稳定的访问同一台服务器。而当经过了具体的数据操作就相应的更新存储器121内的数据状态码。图3为本实施例中各种数据状态码的转换关系示意图。如图3所示:
[0058]对于数据写入(Set)操作,不用查询存储器121内的数据状态码,直接向数据源20写入数据即可,但完成写操作后,需要相应更新数据状态码为01。
[0059]对于数据读取(Get)操作,当数据状态为初始无数据态、有数据态、不确定态时,即数据状态码为00、01、11时,数据存取模块11会连接数据源20,经过读取操作后如果返回结果为空则将数据状态码更新为10 ;当数据状态为访问过无数据态时,即数据状态码为10时,数据存取模块11不再连接数据源20,直接返回无数据。
[0060]对于数据删除(Del)操作,当数据状态为初始无数据态、有数据态或者不确定态时,即数据状态码为00、01、或者11时,数据存取模块11连接数据源20,执行删除操作,完成删除操作后相应更新数据状态码为访问过无数据态;当数据状态为访问过无数据态,即数据状态码为10时,不执行删除操作,由数据存取模块11直接返回删除失败的结果。[0061]进一步地,为了优化后端写操作的超时等错误发生导致状态与数据库中不一致,每次set和del在操作之前,可以将相应的数据状态码改为不确定状态(11),当set和del返回后,再根据结果对状态进行相应与实际相符的修改,如此可以避免由于网络超时等错误未接收到set和del操作的返回时数据状态码与数据源中的状态不一致的现象。当然,由于此时数据状态码为不确定态11,可能会导致空读取操作,但这只是针对部分出现意外的情形,对整体系统性能影响很小。
[0062]本实施例的数据存取系统中,在本机(逻辑服务器)中实现了数据防空架构,且使用双位数据状态码,明确代表数据在数据源中的状态,可以避免对数据源的空操作,减少了数据源的系统压力。相比于单独设置防空服务器的方式,系统结构更加精简,构建成本及维护成本都得到了极大的降低。
[0063]图4为本发明实施例揭示的数据存取方法。该数据存取方法例如是由位于客户端与数据源之间的逻辑服务器执行(如图2所示),如图4所示,该数据存取方法具体包括以下步骤:
[0064]步骤410,在对数据源的数据进行操作之前向防空逻辑单元查询数据状态码;及
[0065]步骤420,在对数据源的数据进行操作之后根据具体数据操作以多位方式在存储器内写入数据状态码。
[0066]步骤410中,通过查询数据状态码,可以防止当数据源中无数据或者数据为空时还向数据源发出连接请求,从而减少了数据源的系统压力。
[0067]步骤420中,在数据操作之后相应的更新数据状态码,使存储器内的数据状态码与数据源中保持同步,而具体的数据状态码更新逻辑如图3所示,且可进一步参考前述关于数据存取系统实施例中的描述。
[0068]本实施例的数据存取方法中,还可包括初始化步骤,将所有的数据状态码设置为初始无数据态,即将数据状态码设置为00。进一步地,还可在系统的路由规则改变后,将数据状态码设置为不确定态,即将数据状态码设置为11。
[0069]以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明,任何本领域技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简介修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
【权利要求】
1.一种数据服务器,其包括: 包括数据存取模块,用于存取外部数据源内的数据; 其特征在于,该数据服务器还包括防空模块,该防空模块包括: 存储器,用于以多位方式存储数据状态码 '及 防空逻辑单元,用于返回该存储器内的数据状态码,及根据该数据存取模块对该数据源的数据操作以多位方式写入相应的数据状态码。
2.如权利要求1所述的数据服务器,其特征在于,该多位方式为双位方式。
3.如权利要求2所述的数据服务器,其特征在于,该双位数据状态码分别表示以下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。
4.如权利要求3所述的数据服务器,其特征在于,该防空逻辑单元用于按照以下逻辑写入该数据状态码: 初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作结果为空则变为访问过无数据态; 有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据态; 访问过无数据态经数据写入操作后变为有数据态; 不确定态在数据读取操作成 功后变为有数据态,经读取操作无结果则变为访问过无数据态。
5.如权利要求3所述的数据服务器,其特征在于,分别采用二进制编码00、01、10、11表示初始无数据态、有数据态、访问过无数据态、及不确定态。
6.一种数据存取系统,其包括: 逻辑服务器及数据源,该逻辑服务器内包括数据存取模块,该数据存取模块用于存取该数据源内的数据; 其特征在于,该逻辑服务器还包括防空模块,该防空模块包括: 存储器,用于以多位方式存储数据状态码 '及 防空逻辑单元,用于返回该存储器内的数据状态码,及根据该数据存取模块对该数据源的数据操作以多位方式写入相应的数据状态码。
7.如权利要求6所述的数据存取系统,其特征在于,该多位方式为双位方式。
8.如权利要求7所述的数据存取系统,其特征在于,该双位数据状态码分别表示以下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。
9.如权利要求8所述的数据存取系统,其特征在于,该防空逻辑单元用于按照以下逻辑写入该数据状态码: 初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作结果为空则变为访问过无数据态; 有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据态; 访问过无数据态经数据写入操作后变为有数据态; 不确定态在数据读取操作成功后变为有数据态,经读取操作无结果则变为访问过无数据态。
10.如权利要求8所述的数据存取系统,其特征在于,分别采用二进制编码00、01、10、11表示初始无数据态、有数据态、访问过无数据态、及不确定态。
11.一种数据存取方法,其包括: 在对数据源的数据进行操作之前向防空逻辑单元查询数据状态码; 在对数据源的数据进行操作之后根据具体数据操作以多位方式在存储器内写入数据状态码。
12.如权利要求11所述的数据存取方法,其特征在于,该多位方式为双位方式。
13.如权利要求12所述的数据存取方法,其特征在于,该双位数据状态码分别表示以下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。
14.如权利要求13所述的数据存取方法,其特征在于,写入数据状态码按以下方式进行: 初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作结果为空则变为访问过无数据态; 有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据态; 访问过无数据态经数据写入操作后变为有数据态; 不确定态在数据读取操作成功后变为有数据态,经读取操作无结果则变为访问过无数据态。
15.如权利要求13所述的数据存取方法,其特征在于,分别采用二进制编码00、01、10、11表示初始无数据态、有数据态、访问过无数据态、及不确定态。
16.如权利要求13所述的数据存取方法,其特征在于,还包括初始步骤,将存储器内所有的数据状态码设置为初始无数据态。
17.如权利要求13所述的数据存取方法,其特征在于,还包括在系统路由改变后将相应的数据状态码设置为不确定态。
【文档编号】G06F17/30GK103631825SQ201210309960
【公开日】2014年3月12日 申请日期:2012年8月28日 优先权日:2012年8月28日
【发明者】唐孟松 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1