首页> 中国专利> 数据服务器、数据存取系统及数据存取方法

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

摘要

本发明涉及一种数据服务器,其包括:包括数据存取模块及防空模块。数据存取模块用于存取外部数据源内的数据。防空模块包括存储器与防空逻辑单元,存储器用于以多位方式存储数据状态码。防空逻辑单元用于返回存储器内的数据状态码,及根据数据存取模块对数据源的数据操作以多位方式写入相应的数据状态码。上述的数据服务器的防空架构简单,构建成本及维护成本低。此外,本发明还供一种数据存取系统及一种数据存取方法。

著录项

  • 公开/公告号CN103631825A

    专利类型发明专利

  • 公开/公告日2014-03-12

    原文格式PDF

  • 申请/专利权人 腾讯科技(深圳)有限公司;

    申请/专利号CN201210309960.7

  • 发明设计人 唐孟松;

    申请日2012-08-28

  • 分类号G06F17/30(20060101);

  • 代理机构31264 上海波拓知识产权代理有限公司;

  • 代理人韩绍君

  • 地址 518044 广东省深圳市福田区振兴路赛格科技园2栋东403室

  • 入库时间 2024-02-19 23:06:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-09

    专利权的转移 IPC(主分类):G06F17/30 登记生效日:20180913 变更前: 变更后: 申请日:20120828

    专利申请权、专利权的转移

  • 2018-02-23

    授权

    授权

  • 2015-05-13

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20120828

    实质审查的生效

  • 2014-03-12

    公开

    公开

说明书

技术领域

本发明涉及数据库技术,尤其涉及一种数据服务器、数据存取系统及 数据存取方法。

背景技术

在涉及海量数据的网络服务中,为了减轻数据库系统的压力,一般会 将系统构建成防空架构。图1所示为一种已知的数据防问防空架构的示意 图。在客户端与实际的数据源(缓存+磁盘)中间隔着逻辑服务器。当客户 端需要访问数据时先向逻辑服务器发送请求,逻辑服务器向防空服务器 BitmapSvr查询数据源中是否存在客户端所需求的数据,如果有相关数据, 逻辑服务器再向数据源发出数据访问请求并将数据转发给客户端。如果没 有相关数据,逻辑服务器可以直接处理客户端的数据访问请求。因此可见, 防空技术可以有效减少对数据库的访问压力。

然而以上的系统架构存在以下问题:

1)需要单独设置的防空服务器,系统复杂,维护困难;

2)防空服务通常需要提供给多个业务访问,路由配置管理复杂,如果 每个业务设置一套防空服务器,成本太高;

3)基于对性能的要求,防空服务器采用全内存的数据,灾难性的情况 下无法恢复,需要重新找机制恢复。通常采用冷备的方法,将数据提取出 来,异地保存,在极端情况下还可以恢复,但是很难对灾难期间的数据进 行有效性保证,这时服务受到影响,数据将丢失。

发明内容

有鉴于此,有必要提供一种数据服务器、数据存取系统及数据存取方 法,其可以解决数据防空问题,且可以避免现有防空架构的高复杂度及高 成本。

上述的数据服务器是通过以下技术方案实现的:

一种数据服务器,其包括:包括数据存取模块及防空模块。数据存取 模块用于存取外部数据源内的数据。防空模块包括存储器与防空逻辑单元, 存储器用于以多位方式存储数据状态码。防空逻辑单元用于返回存储器内 的数据状态码,及根据数据存取模块对数据源的数据操作以多位方式写入 相应的数据状态码。

作为上述数据服务器的进一步改进,上述多位方式为双位方式。

作为上述数据服务器的进一步改进,上述双位数据状态码分别表示以 下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。

作为上述数据服务器的进一步改进,上述防空逻辑单元用于按照以下 逻辑写入该数据状态码:

初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作 结果为空则变为访问过无数据态;

有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据 态;

访问过无数据态经数据写入操作后变为有数据态;

不确定态在数据读取操作成功后变为有数据态,经读取操作无结果则 变为访问过无数据态。

作为上述数据服务器的进一步改进,分别采用二进制编码00、01、10、 11表示初始无数据态、有数据态、访问过无数据态、及不确定态。

上述的数据存取系统是通过以下技术方案实现的:

一种数据存取系统,其包括逻辑服务器及数据源,逻辑服务器包括数 据存取模块,用于存取该数据源内的数据。逻辑服务器还包括防空模块。 防空模块包括存储器及防空逻辑单元。存储器用于以多位方式存储数据状 态码。防空逻辑单元用于返回存储器内的数据状态码,及根据数据存取模 块对数据源的数据操作以多位方式写入相应的数据状态码。

作为上述数据存取系统的进一步改进,上述多位方式为双位方式。

作为上述数据存取系统的进一步改进,上述双位数据状态码分别表示 以下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。

作为上述数据存取系统的进一步改进,上述防空逻辑单元用于按照以 下逻辑写入该数据状态码:

初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作 结果为空则变为访问过无数据态;

有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据 态;

访问过无数据态经数据写入操作后变为有数据态;

不确定态在数据读取操作成功后变为有数据态,经读取操作无结果则 变为访问过无数据态。

作为上述数据存取系统的进一步改进,分别采用二进制编码00、01、 10、11表示初始无数据态、有数据态、访问过无数据态、及不确定态。

上述的数据存取方法是通过以下技术方案实现的:

一种数据存取方法,其包括:在对数据源的数据进行操作之前向防空 逻辑单元查询数据状态码;在对数据源的数据进行操作之后根据具体数据 操作以多位方式在存储器内写入数据状态码。

作为上述数据存取方法的进一步改进,上述多位方式为双位方式。

作为上述数据存取方法的进一步改进,上述双位数据状态码分别表示 以下状态:初始无数据态、有数据态、访问过无数据态、及不确定态。

作为上述数据服务方法的进一步改进,上述防空逻辑单元用于按照以 下逻辑写入该数据状态码:

初始无数据态经过数据写入操作后变为有数据态,经过数据读取操作 结果为空则变为访问过无数据态;

有数据态经数据读取操作结果为空或者删除操作则变为访问过无数据 态;

访问过无数据态经数据写入操作后变为有数据态;

不确定态在数据读取操作成功后变为有数据态,经读取操作无结果则 变为访问过无数据态。

作为上述数据存取方法的进一步改进,分别采用二进制编码00、01、 10、11表示初始无数据态、有数据态、访问过无数据态、及不确定态。

作为上述数据存取方法的进一步改进,其还包括初始步骤,将存储器 内所有的数据状态码设置为初始无数据态。

作为上述数据存取方法的进一步改进,其还包括在系统路由改变后将 相应的数据状态码设置为不确定态。

上述的数据服务器、数据存取系统及数据存取方法中,在本机(数据 服务器/逻辑服务器)中实现了数据防空架构,且使用双位数据状态码,明 确代表数据在数据源中的状态,可以避免对数据源的空操作,减少了数据 源的系统压力。相比于单独设置防空服务器的方式,系统结构更加精简, 构建成本及维护成本都得到了极大的降低。

为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举 较佳实施例,并配合所附图式,作详细说明如下。

附图说明

图1为一种已知的数据库防空系统架构示意图。

图2为本发明实施例揭示的数据存取系统结构示意图。

图3为本发明实施例揭示的数据存取系统中防空逻辑单元的数据状态 转换逻辑示意图。

图4为本发明实施例揭示的数据存取方法流程图。

具体实施方式

为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功 效,以下结合附图及较佳实施例,对依据本发明提出的数据服务器、数据 存取系统及数据存取方法的具体实施方式、结构、特征及其功效,详细说 明如后。

图2为本发明实施例揭示的数据存取系统的结构示意图。如图2所示, 数据存取系统100包括逻辑服务器10、数据源20及客户端30。

客户端30要使用数据源20中的数据时,并不是直接连接至数据源20, 而是向逻辑服务器10发出请求。客户端30与逻辑服务器10之间一般通过 互联网、移动互联网连接,逻辑服务器10与数据源20之间一般可通过局 域网、互联网连接。对于客户端30而言,数据是来源于逻辑服务器10, 因此逻辑服务器10就是数据服务器。

逻辑服务器10包括数据存取模块11及防空模块12。

数据存取模块11用于存取数据源20中的数据。数据源20具体上可为 数据库。对于数据库系统来说,为了提升效率,缓存(Cache)是很重要的 技术手段,Cache主要用于存储一些需要频繁访问到的数据,而另外一些 访问频率相对较低的数据可以存储在磁盘如硬盘或者固态硬盘中。

防空模块12用于在本机(逻辑服务器10)实现防空逻辑。具体地, 防空模块12包括存储器121及防空逻辑单元122。

存储器121用于以多位的形式存储数据状态码。在硬件实现上,存储 器121需要满足高速度的要求,因此在当前的技术条件下,存储器121一 般为易失性的内存。然而当其他种类的存储器,例如固态硬盘的性能达到 要求后,同样可以应用于本实施例中。

进一步地,存储器121可以采用共享内存实现,并可以进一步采用数 据备份技术将内存内的数据备份下来,保证本地机器发生宕机或者掉电的 情况下,存储器121可以恢复故障发生前的状态。具体地,可以采用转储 技术(Dump)以及二进制日志(binlog)实现。上述的多位是相对于单位 而言,可以理解,一个比特(Bit)仅可表示0或者1。因此,当数据状态 码为单位时,仅能表达两个状态。相应的,对于N位的状态码可以表达2N种状态。本实施例中,仅以双位为例进行说明,其对应的数据状态码为00、 01、10、及11,上述数据状态码的含义可以自行定义,例如,其可分别定 义为:初始无数据态、有数据态、访问过无数据态、及不确定态。

本实施例中,数据防空是针对整型(Int)数据作为关键字或者关键字 可以转换为Int型的数据库中的一个或者多个字段,一个典型的实例就是 某即时通讯工具的用户号码。Int型数据占用32位存储空间,也就是说用 户号码具有232个。对于每个字段进行双位防空编码,需要使用2Bit的存 储空间。因此,对于Int型数据,存储双位的数据状态码需要使用的存储 空间为2Bit*232/8=1GB。这1GB的二进制数据被称为位图(Bitmap)。 当需要对多个字段进行防空处理时,对存储空间的要求相应增加,每增加 一个字段,需要增加1GB内存。

除了数据状态码外,在Bitmap的头部还可添加锁止位,从而使此 Bitmap可以适应单进程(线程)、多线程的情形,还可以实现为多进程共 享访问。

防空逻辑单元122用于实现上述的防空逻辑。具体地,数据存取模块 11需要存取数据源20之前,需要先经防空逻辑单元122查询相应的数据 状态。当需要向数据源20读取/删除一些为空的数据或者不存在的数据, 就可以直接由数据存取模块11返回结果(不存在或者数据为空等);而当 需要对数据源20进行写操作或者删除操作时,相应改变存储器121内存储 的数据状态码使其与数据源20保持同步。在初始状态下,即业务上线前, 数据状态码可以完全设置为初始无数据态,即数据状态码为00。

在分布式系统中,需要保证路由的稳定性,如果有发生路由迁移的情 况下,需要将对应的数据状态码置为不确定状态(11),这种状态是不稳 定状态。由于不确定状态下,读取操作会直接连接数据源,其数据可能为 空,此时就会多了一次空读取,然而这只是局部现象,对于系统的整体影 响较小。此外,还将原来的状态复制到新路由的机器上。上述路由是指在 分布式系统中,通过设置路由规则,使同一个关键字的访问稳定的访问同 一台服务器。而当经过了具体的数据操作就相应的更新存储器121内的数 据状态码。图3为本实施例中各种数据状态码的转换关系示意图。如图3 所示:

对于数据写入(Set)操作,不用查询存储器121内的数据状态码,直 接向数据源20写入数据即可,但完成写操作后,需要相应更新数据状态码 为01。

对于数据读取(Get)操作,当数据状态为初始无数据态、有数据态、不 确定态时,即数据状态码为00、01、11时,数据存取模块11会连接数据 源20,经过读取操作后如果返回结果为空则将数据状态码更新为10;当数 据状态为访问过无数据态时,即数据状态码为10时,数据存取模块11不 再连接数据源20,直接返回无数据。

对于数据删除(Del)操作,当数据状态为初始无数据态、有数据态或者 不确定态时,即数据状态码为00、01、或者11时,数据存取模块11连接 数据源20,执行删除操作,完成删除操作后相应更新数据状态码为访问过 无数据态;当数据状态为访问过无数据态,即数据状态码为10时,不执行 删除操作,由数据存取模块11直接返回删除失败的结果。

进一步地,为了优化后端写操作的超时等错误发生导致状态与数据库 中不一致,每次set和del在操作之前,可以将相应的数据状态码改为不确 定状态(11),当set和del返回后,再根据结果对状态进行相应与实际相 符的修改,如此可以避免由于网络超时等错误未接收到set和del操作的返 回时数据状态码与数据源中的状态不一致的现象。当然,由于此时数据状 态码为不确定态11,可能会导致空读取操作,但这只是针对部分出现意外 的情形,对整体系统性能影响很小。

本实施例的数据存取系统中,在本机(逻辑服务器)中实现了数据防 空架构,且使用双位数据状态码,明确代表数据在数据源中的状态,可以 避免对数据源的空操作,减少了数据源的系统压力。相比于单独设置防空 服务器的方式,系统结构更加精简,构建成本及维护成本都得到了极大的 降低。

图4为本发明实施例揭示的数据存取方法。该数据存取方法例如是由 位于客户端与数据源之间的逻辑服务器执行(如图2所示),如图4所示, 该数据存取方法具体包括以下步骤:

步骤410,在对数据源的数据进行操作之前向防空逻辑单元查询数据 状态码;及

步骤420,在对数据源的数据进行操作之后根据具体数据操作以多位 方式在存储器内写入数据状态码。

步骤410中,通过查询数据状态码,可以防止当数据源中无数据或者 数据为空时还向数据源发出连接请求,从而减少了数据源的系统压力。

步骤420中,在数据操作之后相应的更新数据状态码,使存储器内的 数据状态码与数据源中保持同步,而具体的数据状态码更新逻辑如图3所 示,且可进一步参考前述关于数据存取系统实施例中的描述。

本实施例的数据存取方法中,还可包括初始化步骤,将所有的数据状 态码设置为初始无数据态,即将数据状态码设置为00。进一步地,还可在 系统的路由规则改变后,将数据状态码设置为不确定态,即将数据状态码 设置为11。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式 上的限制,虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发 明,任何本领域技术人员,在不脱离本发明技术方案范围内,当可利用上 述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是 未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的 任何简介修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号