首页> 中国专利> 数据查询方法、装置、设备、存储介质及程序产品

数据查询方法、装置、设备、存储介质及程序产品

摘要

本公开提供一种数据查询方法、装置、设备、存储介质及程序产品,涉及数据处理技术,方案中设置有第一映射关系和第二映射关系,当服务器接收到用于查询数据的请求后,可以在第一映射关系中查询与该请求对应的最新数据的信息,再基于该最新数据的信息从第二映射关系中获取目标数据,这种实施方式能够向用户终端反馈与当前请求对应的最新数据,且直接根据最新数据的信息从第二映射关系中获取目标数据,能够降低用于存储第二映射关系的数据库的处理压力。

著录项

  • 公开/公告号CN113127452A

    专利类型发明专利

  • 公开/公告日2021-07-16

    原文格式PDF

  • 申请/专利权人 京东科技控股股份有限公司;

    申请/专利号CN202110542209.0

  • 发明设计人 谢彰桓;

    申请日2021-05-18

  • 分类号G06F16/21(20190101);G06F16/23(20190101);G06F16/2458(20190101);G06F16/28(20190101);

  • 代理机构11205 北京同立钧成知识产权代理有限公司;

  • 代理人霍莉莉;臧建明

  • 地址 100176 北京市北京经济技术开发区科创十一街18号C座2层221室

  • 入库时间 2023-06-19 11:52:33

说明书

技术领域

本公开涉及数据处理技术,尤其涉及一种数据查询方法、装置、设备、存储介质及程序产品。

背景技术

目前,在很多场景中都会应用到在线应答技术,比如用户可以在用户终端中输入需要查询的问题,服务器可以接收到该请求并查询与问题对应的答案,再将答案反馈给用户终端。

知识应答技术是在线应答的重要环节,可以在服务器的内存中存储答案标识对应的答案,可以根据用户的问题查询答案标识,并从内存中获取相应的答案反馈给用户终端,若内存中没有相应的答案,则可以从知识库中获取相应的答案。

但是当数据库中存储的答案被更新后,缓存数据却无法被及时更新,则会导致向用户终端反馈的答案不是最新答案的问题。

发明内容

本公开提供一种数据查询方法、装置、设备、存储介质及程序产品,以解决在线应答系统中,有可能向用户终端反馈的答案不是最新答案的问题。

本公开的第一个方面是提供一种数据查询方法,包括:

接收查询请求,根据所述查询请求确定数据标识;

根据第一映射关系查询与所述数据标识对应的目标版本号,其中,所述第一映射关系中包括数据标识与版本号的对应关系,所述版本号用于表征与所述数据标识对应的数据的更新时间,所述目标版本号为与所述数据标识对应的版本号中更新时间最晚的版本号;

根据第二映射关系获取与所述数据标识以及所述目标版本号对应的目标数据,并发送所述目标数据,其中,所述第二映射关系包括数据组合与数据的对应关系,所述数据组合包括所述数据标识和所述版本号。

本公开的另一个方面是提供一种数据查询装置,包括:

接收单元,用于接收查询请求,根据所述查询请求确定数据标识;

版本号确定单元,用于根据第一映射关系查询与所述数据标识对应的目标版本号,其中,所述第一映射关系中包括数据标识与版本号的对应关系,所述版本号用于表征与所述数据标识对应的数据的更新时间,所述目标版本号为与所述数据标识对应的版本号中更新时间最晚的版本号;

数据获取单元,用于根据第二映射关系获取与所述数据标识以及所述目标版本号对应的目标数据,并发送所述目标数据,其中,所述第二映射关系包括数据组合与数据的对应关系,所述数据组合包括所述数据标识和所述版本号。

本公开的又一个方面是提供一种电子设备,包括:

存储器;

处理器;以及

计算机程序;

其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如上述第一方面所述的数据查询方法。

本公开的又一个方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面所述的数据查询方法。

本公开的又一个方面是提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上述第一方面所述的数据查询方法。

本公开提供的数据查询方法、装置、设备、存储介质及程序产品的技术效果是:

本实施例提供的数据查询方法、装置、设备、存储介质及程序产品,包括:接收查询请求,根据查询请求确定数据标识;根据第一映射关系查询与数据标识对应的目标版本号,其中,第一映射关系中包括数据标识与版本号的对应关系,版本号用于表征与数据标识对应的数据的更新时间,目标版本号为与数据标识对应的版本号中更新时间最晚的版本号;根据第二映射关系获取与数据标识以及目标版本号对应的目标数据,并发送目标数据,其中,第二映射关系包括数据组合与数据的对应关系,数据组合包括数据标识和版本号。本公开提供的方案中,设置有第一映射关系和第二映射关系,当服务器接收到用于查询数据的请求后,可以在第一映射关系中查询与该请求对应的最新数据的信息,再基于该最新数据的信息从第二映射关系中获取目标数据,这种实施方式能够向用户终端反馈与当前请求对应的最新数据,且直接根据最新数据的信息从第二映射关系中获取目标数据,能够降低用于存储第二映射关系的数据库的处理压力。

附图说明

图1为一示例性实施例示出的在线应答平台反馈答案的流程图;

图2为另一示例性实施例示出的在线应答平台反馈答案的流程图;

图3为又一示例性实施例示出的在线应答平台反馈答案的流程图;

图4为一示例性实施例示出的向Redis中写入缓存数据的示意图;

图5为本公开一示例性实施例示出的数据查询方法的流程图;

图6为本公开另一示例性实施例示出的数据查询方法的流程图;

图7为本公开一示例性实施例示出的hash数据结构图;

图8为本公开一示例性实施例示出的获取目标数据的示意图;

图9为本公开一示例性实施例示出的数据查询装置的结构图;

图10为本公开另一示例性实施例示出的数据查询装置的结构图;

图11为本公开一示例性实施例示出的电子设备的结构图。

具体实施方式

目前存在众多的在线应答平台,用户可以在终端中输入信息,终端基于该信息向服务器侧发送请求,服务器能够向终端反馈与该信息对应的答案内容。

为了使服务器侧能够反馈答案内容,需要预先在服务器中设置与各个问题对应的答案。具体可以由答案提供的一方通过操作在线应答平台,导入或者创建一些了知识点及这些知识点答案的列表,使得服务器能够接收到这些知识点及其对应的答案。

服务器可以为每个答案生成一个知识点答案标识,当更新这些知识点答案时会保存更新时间。当基于用户输入的内容查询答案时,可以将符合条件的答案内容返回给用户终端。

图1为一示例性实施例示出的在线应答平台反馈答案的流程图。

如图1所示,在数据库中存储全量的答案数据,还可以在服务器的内存中保存答案标识与对应答案的映射列表,服务器接收到请求后可以判断数据标识是否有效(数据标识大于0可以认为有效),若有效则判断缓存的该映射列表中是否存在对应数据。如果没有数据,从数据库中请求数据,将请求到的数据写入该映射列表。如果存在数据,则直接返回缓存数据。

这种实施方式中,用于存储答案的数据库为关系型数据库,受制于连接数及数据库自身的限制,在高并发请求下,数据库性能将急剧下降甚至出现异常,导致查询及更新库存失败。另外,这种方式的缓存数据存在于服务端,当服务重启之后,缓存全部过期,会将接收的请求全部反馈到数据库,导致数据库的压力极大,而且服务端本地内存中答案标识与答案的映射关系本身无法自动更新,当数据库中的答案更新后,服务器的内存中的数据并未更新,存在无法向用户终端反馈最新答案的问题。

图2为另一示例性实施例示出的在线应答平台反馈答案的流程图。

如图2所示,在数据库中存储全量的答案数据,还可以在Redis中保存答案标识与对应答案的映射列表,服务器接收到请求后首先判断Redis中该映射列表是否存在对应数据。如果没有数据,从数据库中请求数据,将请求到的数据写入该映射列表。如果存在数据,则直接返回缓存数据。

这种实施方式中,通过Redis(一种key-value数据库)缓存数据,在高并发场景下,查询知识答案几乎不会对Redis性能产生影响,但是,这种方式只能在Redis中的答案过期之后,再从数据库获取最新的答案,仍然无法及时向用户反馈最新的答案。

图3为又一示例性实施例示出的在线应答平台反馈答案的流程图。

如图3所示,数据库中的数据变更时,加上锁删除Redis缓存中相应的过期数据,并更新Redis值,写入完成释放锁,服务器接收到请求后首先判断Redis缓存中是否存在与该请求对应的缓存数据,如果没有,则请求数据库,数据读取完成后加锁,将数据写入Redis,写入完成释放锁,如果存在数据,则直接返回缓存数据。

这种实施方式中,在高并发场景下,可以实时更新Redis里的缓存值,但是如果数据库变更的消息不是按顺序串行的,则存在数据一致性问题。

图4为一示例性实施例示出的向Redis中写入缓存数据的示意图。

如图4所示,存在三个写请求A、B、C,对应数据版本分别为V2、V3、V1,V3为最新更新,在高并发场景下,若写请求A没处理完毕就接收到了请求B,则在处理请求B时存在加锁失败的问题,进而导致V3版本的数据无法被写入Redis,因此,最新版本的数据仍然无法缓存到Redis中,仍然无法向用户终端反馈最新的答案。

图中的T1、T2、T3、T4用于表示越来越晚的四个时刻。

因此,通过缓存数据向用户终端反馈答案时,若缓存的答案与数据库中的答案不一致,存在无法将数据库中最新的答案反馈给用户终端的问题。

为了解决上述技术问题,本公开提供的数据查询方法中,设置有第一映射关系和第二映射关系,当服务器接收到用于获取答案的请求后,可以在第一映射关系中查询与该请求对应的最新数据的信息,再基于该最新数据的信息从第二映射关系中获取目标数据,这种实施方式能够向用户终端反馈与当前请求对应的最新数据,且直接根据最新数据的信息从第二映射关系中获取目标数据,能够降低用于存储第二映射关系的数据库的检索压力。

图5为本公开一示例性实施例示出的数据查询方法的流程图。

如图5所示,本实施例提供的数据查询方法包括:

步骤501,接收查询请求,根据查询请求确定数据标识。

本公开提供的方法可以由具备计算能力的至少一台电子设备来执行,该电子设备例如可以是计算机,该计算机可以作为在线应答平台的服务器。用户可以操作用户终端输入需要查询的信息,比如可以输入具体的问题,用户终端可以将携带有该信息的查询请求发送给服务器。服务器接收到查询请求后可以执行本公开提供的方法。

其中,服务器可以根据数据提供方上传的知识点以及答案数据,生成每一答案数据的数据标识,还可以记录知识点与数据标识的对应关系。比如,数据提供方上传一知识点Q和答案数据A的对应关系,服务器可以生成A的数据标识IDA。还可以记录Q与IDA的对应关系。

具体的,服务器接收到查询请求后,可以根据查询请求中包括的用户输入的查询信息确定对应的知识点,比如,可以对查询信息进行语义解析,从而确定用户需要查询的知识点。服务器可以根据查询信息对应的知识点,确定与该知识点对应的答案数据的数据标识。

比如,服务器根据接收的查询请求确定用户希望查询知识点Q相关的内容,服务器可以获取与该Q对应的数据标识IDA。

步骤502,根据第一映射关系查询与数据标识对应的目标版本号,其中,第一映射关系中包括数据标识与版本号的对应关系,版本号用于表征与数据标识对应的数据的更新时间,目标版本号为与数据标识对应的版本号中更新时间最晚的版本号。

进一步的,服务器在生成答案数据的数据标识后,还可以生成该答案数据的第一映射关系。第一映射关系用于记录每一答案数据的数据标识与版本号的对应关系。比如,存在一个答案A,则可以记录该答案的答案标识IDA与该答案的版本号S的关系。

实际应用时,可以通过答案的更新时间生成答案的版本号,比如答案的更新时间为2021年1月18日,则可以将该答案的版本号确定为202101180000,0000为时间戳,用于记录答案更新时更加细化的时间。

当数据库中的答案更新时,服务器还可以生成更新后答案的版本号,并将其写入第一映射关系中。

本公开提供的方案中,利用第一映射关系记录每一答案的更新时间,进而在获取答案时,可以基于第一映射关系获取更新时间最晚的答案的版本号,也就是目标版本号。

例如存在一个数据标识IDA,该数据标识可以对应多个版本号,不同版本号用于关联与该数据标识对应的多个版本的数据。比如,针对问题Q用户上传了相应的答案A,则服务器生成数据标识IDA,该答案A的版本为初始版本。此后,可以对答案A进行更新得到A1,这种情况下,服务器可以根据答案A1生成对应的版本号,并将其与数据标识IDA相关联。

再例如,存在一个数据标识IDA,其关联有多个版本号,分别为20210118010000、20210119010100、20210120010300,由于20210120010300用于表征更新时间最晚的版本号,因此,可以将20210120010300作为数据标识IDA的目标版本号。

由于本公开提供的方案可以根据版本号的内容获取更新时间最晚的答案数据,因此,不需要对第一映射关系中的内容进行频繁的清理,也能够获取到最新的答案数据。

步骤503,根据第二映射关系获取与数据标识以及目标版本号对应的目标数据,并发送目标数据,其中,第二映射关系包括数据组合与数据的对应关系,数据组合包括数据标识和版本号。

进一步的,服务器还可以生成每一答案数据的第二映射关系,该第二应该关系为答案数据的版本号、数据标识与数据的对应关系。

比如存在一个答案A,则可以在第一映射关系中记录该答案的答案标识IDA与该答案的版本号S的关系。同时,还可以在第二映射关系中记录该大班表示IDA与版本号S的关系,以及版本号S与数据的映射关系。

对查询请求进行处理时,通过第一映射关系确定出目标版本号后,可以在第二映射关系中查询与该数据标识关联的多个版本号,并将与目标版本号一致的版本号所关联的数据,作为目标数据,并将其发送给用户终端。

在第二映射关系中可以包括多个数据标识,每一数据标识可以具有多个版本号,每一版本号关联一个数据。比如在第二映射关系中,存在一个数据标识IDA,其关联有多个版本号,分别为20210118010000、20210119010100、20210120010300,这三个版本号又分别关联有相应的数据。

服务器在获取数据标识IDA对应的目标数据时,可以根据第一映射关系中的目标版本号20210120010300,在第二映射关系中获取目标数据。

这种实施方式中,不需要频繁的清理第二映射关系中存在的过期数据,服务器也能够从一个数据标识关联的多个数据中挑选出最新的数据。此外,通过第一映射关系查询目标版本号,再结合数据标识和目标版本号能够在第二映射关系中直接定位目标数据,降低用于存储第二映射关系的数据库的处理压力。

本实施例提供的方法用于查询数据,该方法由设置有本实施例提供的方法的设备执行,该设备通常以硬件和/或软件的方式来实现。

本实施例提供的数据查询方法,包括:接收查询请求,根据查询请求确定数据标识;根据第一映射关系查询与数据标识对应的目标版本号,其中,第一映射关系中包括数据标识与版本号的对应关系,版本号用于表征与数据标识对应的数据的更新时间,目标版本号为与数据标识对应的版本号中更新时间最晚的版本号;根据第二映射关系获取与数据标识以及目标版本号对应的目标数据,并发送目标数据,其中,第二映射关系包括数据组合与数据的对应关系,数据组合包括数据标识和版本号。本公开提供的方法中,设置有第一映射关系和第二映射关系,当服务器接收到用于查询数据的请求后,可以在第一映射关系中查询与该请求对应的最新数据的信息,再基于该最新数据的信息从第二映射关系中获取目标数据,这种实施方式能够向用户终端反馈与当前请求对应的最新数据,且直接根据最新数据的信息从第二映射关系中获取目标数据,能够降低用于存储第二映射关系的数据库的处理压力。

图6为本公开另一示例性实施例示出的数据查询方法的流程图。

如图6所示,本公开提供的数据查询方法,包括:

步骤601,获取存储的数据的数据标识及数据的更新时间。

其中,本公开提供的方案中服务器接收到数据提供方提供的数据后,可以存储该数据并生成数据的数据标识。

服务器还可以获取该数据标识,以及数据的更新时间,从而根据数据标识和更新时间构建数据的第一映射关系。

一种可选的实施方式中,可以利用redis中的zset存储数据的第一映射关系。

步骤601之后可以执行步骤602A和602B。

步骤602A,根据数据标识生成第一键值,根据数据的更新时间生成版本号。

具体的,服务器可以根据获取的数据标识生成第一键值,比如,可以根据数据的数据标识IDA生成第一键值key1-A。

在一种可选的实施方式中,还可以获取与数据标识对应的设备标识,设备标识为用于上传与数据标识对应的数据的设备的标识。可以在上传答案数据时,获取发送该数据答案的设备的标识,该设备标识可以是网络地址、用户账号等信息。

进一步的,服务器还可以根据设备标识、数据标识生成数据标识的第一键值。比如,上传数据的设备标识为RobotID,该数据的数据标识为AnswerID,则该数据的第一键值可以是robotId:answerId。

一种可选的实施方式中,第一键值还可以是cluster:robotId:answerId:version。Cluster用于表征向用户终端提供在线应答服务的设备的集群标识,version用于表征数据的版本信息。

进一步的,服务器可以根据数据的更新时间生成该数据的版本号,具体可以将数据的更新时间直接作为数据的版本号。例如,一个数据的版本号可以为20210118010000。

步骤603A,关联版本号与第一键值,得到第一映射关系。

实际应用时,服务器可以关联数据的第一键值和版本号,从而得到该数据的第一映射关系。

其中,可以利用redis中的zset存储数据的第一映射关系。zset数据结构中可以包括key、score和member,其中,可以将生成的第一键值存储为key,将版本号存储为score。一种实施方式中,可以将版本号-数据标识作为member进行存储。

比如,数据的数据标识为10010,则该数据的member可以是20210118010000-10010。

步骤602B,根据数据标识生成第二键值,根据数据的更新时间生成版本号。

一种可选的实施方式中,601之后还可以执行步骤602B。

具体的,服务器可以根据获取的数据标识生成第二键值,比如,可以根据数据的数据标识IDA生成第一键值key2-A。

在一种可选的实施方式中,还可以获取与数据标识对应的设备标识,设备标识为用于上传与数据标识对应的数据的设备的标识。可以在上传答案数据时,获取发送该数据答案的设备的标识,该设备标识可以是网络地址、用户账号等信息。

进一步的,服务器还可以根据设备标识、数据标识生成数据标识的第二键值。比如,上传数据的设备标识为RobotID,该数据的数据标识为AnswerID,则该数据的第二键值也可以是robotId:answerId。

一种可选的实施方式中,第二键值还可以是cluster:robotId:answerId。Cluster用于表征向用户终端提供在线应答服务的设备的集群标识。

生成版本号的方式同步骤602A,不再赘述。

步骤603B,关联第二键值与包括数据标识、版本号的数据组合,并关联数据组合与数据,得到第二映射关系。

实际应用时,服务器可以关联数据的第二键值和数据组合,数据组合包括数据标识与版本号。比如,数据组合可以为版本号:数据标识。

其中,还可以关联数据组合与数据,进而可以根据数据标识、版本号,从第二映射关系中获取数据。

进一步的,可以利用redis中的hash结构存储数据的第二映射关系。可以将生成的第二键值存储为hash中的key,将确定的包括数据标识、版本号的数据组合存储为key指向的field,将数据存储为与数据组合关联的value。

图7为本公开一示例性实施例示出的hash数据结构图。

如图7所示,根据数据标识answerId、设备标识robotId可以得到第二键值KEY,根据版本号modifyTime、数据标识answerID能够生成FIELD,在VALUE中存储数据answerlist,VALUE可以与FIELD关联。当一个数据标识对应的数据存在多个版本时,KEY能够指向多个数据组合与数据的映射关系。

实际应用时,服务器可以根据接收的答案数据,实时更新第一映射关系和第二映射关系。

步骤604,接收查询请求,根据查询请求确定数据标识。

步骤604与步骤501的实现方式类似,不再赘述。

步骤605,根据数据标识生成第一键值,并在第一映射关系中查询与第一键值对应的每一版本号。

其中,服务器可以根据数据标识生成第一键值,从而通过第一键值获取与该数据标识对应的数据。

具体的,服务器根据该数据标识生成第一键值的方式与602A中的方式相似,不再赘述。

进一步的,服务器还可以在预先构建的第一映射关系中,查询与生成的第一键值对应的每一版本号,进而获取该数据标识指向的数据的版本信息。

步骤606,在第一映射关系中与第一键值对应的每一版本号中,确定出用于表征数据更新时间最晚的目标版本号。

进一步的,服务器可以在预先构建的第一映射关系中,查询与生成的第一键值对应的每一版本号,由于版本号能够表征出数据的更新时间,因此,服务器还可以在与第一键值对应的每一版本号中,确定出用于表征数据更新时间最晚的目标版本号。比如,可以按照版本号的大小排序,进而可以将最大的版本号作为目标版本号。

由于更新时间越晚,版本号越大,因此,基于这种实施方式能够获取到与数据标识对应的最新版本号。

步骤607,根据数据标识生成第二键值,并在第二映射关系中获取与第二键值对应的每一数据组合。

其中,服务器可以根据数据标识生成第二键值,从而通过第二键值获取与该数据标识对应的数据。

具体的,服务器根据该数据标识生成第二键值的方式与602B中的方式相似,不再赘述。

进一步的,服务器还可以在预先构建的第二映射关系中,查询与生成的第二键值对应的每一数据组合。

步骤608,在每一数据组合中,确定包括数据标识以及目标版本号的目标数据组合。

实际应用时,第二映射关系中的数据组合包括数据标识以及版本号,因此,可以根据步骤606中确定的版本号,在每一数据组合中确定出目标数据组合,该目标数据组合中包括数据标识以及目标版本号。

由于目标版本号是数据更新时间最晚的版本号,因此,包括该版本号的数据组合指向的数据是与数据标识对应的最新的数据。

步骤609,获取与目标数据组合对应的目标数据,并发送目标数据。

其中,服务器可以获取与目标数据组合对应的目标数据,从而获取与数据标识对应的最新的数据,并将其发送给用于发送上述查询请求的用户终端,进而向用户终端反馈最新的数据。

图8为本公开一示例性实施例示出的获取目标数据的示意图。

如图8所示,预先基于redis的zset数据结构存储有每一数据的第一映射关系81,具体为第一键值KEY1与数据的版本号(存储于score中)的映射关系,该第一键值中包括数据的标识信息。

还预先基于redis的hash数据结构存储有每一数据的第二映射关系,具体为第二键值KEY2与数据组合的映射关系82,以及数据组合与数据的映射关系,该第二键值中包括数据的标识信息,数据组合中包括数据的版本号以及数据标识。

当服务器接收到查询请求后,能够根据查询请求确定一数据标识answerID。服务器可以根据answerID生成第一键值key1,进而在第一映射关系81中查询出目标版本号83,还可以根据answerID生成第二键值key2,进而在第一映射关系81中查询出与该第二键值关联的多个数据组合84。

服务器还可以根据目标版本号83在与该第二键值关联的数据组合84中确定目标数据组合85,进而获取与该目标数据组合85关联的目标数据86。

在一种可选的实施方式中,当数据发生变更时,还可以获取数据变更信息,根据变更信息确定变更数据;在所述第一映射关系中添加新的版本号,并删除所述第一映射关系中的与所述数据标识对应且更新时间早于所述变更时间的映射关系。

比如,提供答案数据的一方通过操作,向服务器发送了数据变更请求,则服务器可以根据该变更请求确定变更信息,比如具体希望变更的是哪一条数据,该数据的数据标识是什么等。

服务器还可以确定数据的变更时间生成新的版本号,并在第一映射关系中插入该新的版本号。

同时,服务器还可以删除第一映射关系中的过期数据,具体可以删除与所述数据标识对应且更新时间早于所述变更时间的映射关系。通过这种方式,可以使第一映射关系中的信息随数据的改变而改变,且能够保留第一映射关系中更新时间最晚的版本号的信息。

具体的,服务器可以根据数据的变更时间确定更新版本号;并在所述第一映射关系中获取与所述数据标识对应的每一版本号;再删除与所述数据标识对应的每一版本号中,小于所述更新版本号的版本号。这种实施方式中,更新时间越晚,相应的版本号的值就越大,因此,可以通过版本号大小的比对,删除过期数据。

此外,这种实施方式中,即使第二映射关系中还存储有过期数据,服务器也能够基于版本号获取到最新的数据。

在一种可选的实施方式中,当数据发生变更时,还可以获取数据变更信息,根据变更信息确定变更数据;根据变更数据的数据标识、变更时间,在第二映射关系中添加新的数据组合,以及变更后的数据,并删除第二映射关系中的与数据标识对应且更新时间早于变更时间的映射关系。

比如,提供答案数据的一方通过操作,向服务器发送了数据变更请求,则服务器可以根据该变更请求确定变更信息,比如具体希望变更的是哪一条数据,该数据的数据标识是什么等。

服务器还可以确定数据的变更时间生成新的版本号,并在第二映射关系中插入包括该新的版本号和数据标识的数据组合,还可以记录新的数据组合与变更后的数据的关联关系。

同时,服务器还可以删除第二映射关系中的过期数据,具体可以删除与所述数据标识对应,且包括的更新时间早于所述变更时间的数据组合的映射关系。通过这种方式,可以使第二映射关系中的信息随数据的改变而改变,且能够保留第二映射关系中包括的更新时间最晚的版本号的数据组合。

具体的,服务器可以根据变更时间确定更新版本号,并根据数据标识以及更新版本号确定更新数据组合;在第二映射关系中获取与数据标识对应的每一数据组合;删除与数据标识对应的每一数据组合中,小于更新数据组合的数据组合,以及与被删除数据组合对应的数据。这种实施方式中,更新时间越晚,相应的版本号的值就越大,因此,可以通过版本号大小的比对,删除过期数据。

图9为本公开一示例性实施例示出的数据查询装置的结构图。

如图9所示,本实施例提供的数据查询装置900,包括:

接收单元910,用于接收查询请求,根据所述查询请求确定数据标识;

版本号确定单元920,用于根据第一映射关系查询与所述数据标识对应的目标版本号,其中,所述第一映射关系中包括数据标识与版本号的对应关系,所述版本号用于表征与所述数据标识对应的数据的更新时间,所述目标版本号为与所述数据标识对应的版本号中更新时间最晚的版本号;

数据获取单元930,用于根据第二映射关系获取与所述数据标识以及所述目标版本号对应的目标数据,并发送所述目标数据,其中,所述第二映射关系包括数据组合与数据的对应关系,所述数据组合包括所述数据标识和所述版本号。

本公开提供的装置与图5所示实施例类似,不再赘述。

图10为本公开另一示例性实施例示出的数据查询装置的结构图。

如图10所示,本实施例提供的数据查询装置1000,在上述实施例的基础上,可选的,所述第一映射关系中包括数据标识的第一键值与版本号的对应关系;

所述版本号确定单元920,包括:

版本号查询模块921,用于根据所述数据标识生成第一键值,并在所述第一映射关系中查询与所述第一键值对应的每一版本号;

版本号确定模块922,用于在所述第一映射关系中与所述第一键值对应的每一版本号中,确定出用于表征数据更新时间最晚的目标版本号。

可选的,所述装置还包括第一关系生成单元940,用于在所述接收单元接收查询请求之前:

获取存储的数据的数据标识及所述数据的更新时间;

根据所述数据标识生成所述第一键值,根据所述数据的更新时间生成版本号;

关联所述版本号与所述第一键值,得到所述第一映射关系。

可选的,还包括第一关系更新单元950,具体用于:

获取数据变更信息,根据所述变更信息确定变更数据;

根据所述变更数据的数据标识、变更时间,在所述第一映射关系中添加新的版本号,并删除所述第一映射关系中的与所述数据标识对应且更新时间早于所述变更时间的映射关系。

可选的,所述第一关系更新单元950具体用于:

根据所述变更时间确定更新版本号;

在所述第一映射关系中获取与所述数据标识对应的每一版本号;

删除与所述数据标识对应的每一版本号中,小于所述更新版本号的版本号。

可选的,所述第二映射关系中还包括第二键值与所述数据组合的对应关系;

所述数据获取单元930,包括:

组合获取模块931,用于根据所述数据标识生成第二键值,并在所述第二映射关系中获取与所述第二键值对应的每一数据组合;

组合确定模块932,用于在所述每一数据组合中,确定包括所述数据标识以及所述目标版本号的目标数据组合;

数据反馈模块933,用于获取与所述目标数据组合对应的目标数据,并发送所述目标数据。

可选的,还包括第二关系生成单元960,用于在所述接收单元910所述接收查询请求之前:

获取存储的数据的数据标识及所述数据的更新时间;

根据所述数据标识生成所述第二键值,根据所述数据的更新时间生成版本号;

关联所述第二键值与包括所述数据标识、所述版本号的数据组合,并关联所述数据组合与所述数据,得到所述第二映射关系。

可选的,还包括第二关系更新单元970,用于:

获取数据的变更信息,根据所述变更信息确定变更数据;

根据所述变更数据的数据标识、变更时间,在所述第二映射关系中添加新的数据组合,以及变更后的数据,并删除所述第二映射关系中的与所述数据标识对应且更新时间早于所述变更时间的映射关系。

可选的,所述第二关系更新单元970具体用于:

根据所述变更时间确定更新版本号,并根据所述数据标识以及所述更新版本号确定更新数据组合;

在所述第二映射关系中获取与所述数据标识对应的每一数据组合;

删除与所述数据标识对应的每一数据组合中,小于所述更新数据组合的数据组合,以及与被删除数据组合对应的数据。

可选的,所述第一关系生成单元940具体用于:

获取与所述数据标识对应的设备标识,根据所述设备标识、所述数据标识生成所述数据标识的第一键值;

其中,所述设备标识为用于上传与所述数据标识对应的数据的设备的标识。

可选的,所述第二关系生成单元960具体用于:

获取与所述数据标识对应的设备标识,根据所述设备标识、所述数据标识生成所述数据标识的第二键值;

其中,所述设备标识为用于上传与所述数据标识对应的数据的设备的标识。

本实施例提供的装置的具体原理和实现方式均与图6所示的实施例类似,此处不再赘述。

图11为本公开一示例性实施例示出的电子设备的结构图。

如图11所示,本实施例提供的电子设备包括:

存储器111;

处理器112;以及

计算机程序;

其中,所述计算机程序存储在所述存储器111中,并配置为由所述处理器112执行以实现如上所述的任一种数据查询方法。

本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,

所述计算机程序被处理器执行以实现如上所述的任一种数据查询方法。

本实施例还提供一种计算机程序,包括程序代码,当计算机运行所述计算机程序时,所述程序代码执行如上所述的任一种数据查询方法。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号