首页 > 专利 > 华为技术有限公司 > 数据查询方法、装置及计算设备专利详情

数据查询方法、装置及计算设备   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2017-02-14
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2018-09-14
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2020-12-25
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2037-02-14
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201710079342.0 申请日 2017-02-14
公开/公告号 CN108427684B 公开/公告日 2020-12-25
授权日 2020-12-25 预估到期日 2037-02-14
申请年 2017年 公开/公告年 2020年
缴费截止日
分类号 G06F16/22G06F16/2458G06F16/27 主分类号 G06F16/22
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 10
权利要求数量 11 非专利引证数量 0
引用专利数量 12 被引证专利数量 0
非专利引证
引用专利 CN105512200A、CN105653560A、CN102711076A、CN104750740A、CN103226550A、CN104008212A、CN103995879A、CN106023588A、CN102486775A、CN104572867A、US2016098407A1、US2015310067A1 被引证专利
专利权维持 5 专利申请国编码 CN
专利事件 转让 事务标签 公开、实质审查、授权、权利转移
申请人信息
申请人 第一申请人
专利权人 华为技术有限公司 当前专利权人 苏州鱼得水电气科技有限公司
发明人 王炜、张建勋、李臻峰 第一发明人 王炜
地址 广东省深圳市龙岗区坂田华为总部办公楼 邮编 518129
申请人数量 1 发明人数量 3
申请人所在省 广东省 申请人所在市 广东省深圳市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
北京三高永信知识产权代理有限责任公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
罗振安
摘要
本公开提供了一种数据查询方法、装置及电子设备,属于信息技术领域。本公开通过计算查询时间字段的字段值和当前系统时间之间的差值,并根据该差值和生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,并将目标存储类型的标识替换生命周期表标识得到的第二数据查询请求发送至目标存储类型对应的第一目标数据库,进而将第一目标数据库返回的查询结果发送至应用。在进行数据查询时,无需应用存储数据表的存储类型和时间字段的字段值范围之间的对应关系,不仅节省了存储空间、降低了应用的维护成本,且无需应用确定待查询数据表的存储类型,增强了业务扩展性。
  • 摘要附图
    数据查询方法、装置及计算设备
  • 说明书附图:图1
    数据查询方法、装置及计算设备
  • 说明书附图:图2
    数据查询方法、装置及计算设备
  • 说明书附图:图3
    数据查询方法、装置及计算设备
  • 说明书附图:图4
    数据查询方法、装置及计算设备
  • 说明书附图:图5
    数据查询方法、装置及计算设备
  • 说明书附图:图6
    数据查询方法、装置及计算设备
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2021-11-30 专利权的转移 登记生效日: 2021.11.18 专利权人由华为技术有限公司变更为苏州鱼得水电气科技有限公司 地址由518129 广东省深圳市龙岗区坂田华为总部办公楼变更为215010 江苏省苏州市高新区长江路556号5幢704室
2 2020-12-25 授权
3 2018-09-14 实质审查的生效 IPC(主分类): G06F 17/30 专利申请号: 201710079342.0 申请日: 2017.02.14
4 2018-08-21 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种数据查询方法,其特征在于,所述方法包括:
接收应用发送的第一数据查询请求;
对所述第一数据查询请求进行解析,得到查询条件,所述查询条件包括生命周期表标识和查询时间字段的字段值,所述生命周期表标识用于指示与所述应用对应的生命周期表;
计算所述查询时间字段的字段值和当前系统时间之间的差值;
根据所述差值和预先存储的所述生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,所述生命周期表中存储有生命周期字段的字段值范围与存储类型之间的对应关系;
将所述第一数据查询请求中的所述生命周期表标识替换为目标存储类型的标识,得到第二数据查询请求;
将所述第二数据查询请求发送至第一目标数据库,所述第一目标数据库为所述目标存储类型对应的数据库,由所述第一目标数据库返回查询结果;
当接收到所述查询结果时,将所述查询结果发送至所述应用。

2.根据权利要求1所述的方法,其特征在于,数据表的存储类型包括生产表和历史表;
所述根据所述差值和预先存储的所述生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,包括:
如果所述差值位于生产表对应的生命周期字段的字段值范围内,则确定所述待查询数据表的目标存储类型为生产表;
如果所述差值位于历史表对应的生命周期字段的字段值范围内,则确定所述待查询数据表的目标存储类型为历史表。

3.根据权利要求1或2所述的方法,其特征在于,所述查询条件还包括第一分区键值;
所述将所述第二数据查询请求发送至第一目标数据库,包括:
根据所述第一分区键值,从所述第一目标数据库中,确定第二目标数据库,所述第二目标数据库为第一目标数据库中分区键值为第一分区键值的数据库;
将所述第二数据查询请求发送至所述第二目标数据库。

4.根据权利要求2所述的方法,其特征在于,所述历史表包括n级历史子表,所述n级历史子表和所述生产表均对应不同的数据迁移时间,n为正整数;
所述方法还包括:
对于任一种存储类型的数据表,当到达所述数据表对应的数据迁移时间时,向第三目标数据库发送第三数据查询请求,所述第三目标数据库为所述存储类型对应的数据库,所述第三数据查询请求用于所述第三目标数据库返回至少一条数据记录,所述数据记录为存储时间与当前系统时间之间的差值未位于所述存储类型对应的生命周期字段的字段值范围内的数据;
当接收到所述至少一条数据记录时,从所述生命周期表中,获取每条数据记录的数据表字段值;
对每条数据记录的数据表字段值进行哈希计算,得到每条数据记录对应的第二分区键值;
对于任一条数据记录,如果所述数据记录位于所述生产表中,则根据所述数据记录对应的第二分区键值,将所述数据记录迁移到第四目标数据库中,并将所述数据记录从原数据库中删除,所述第四目标数据库为第一级历史子表对应的数据库中分区键值为所述第二分区键值的数据库;
如果所述数据记录位于第i级历史子表中,则根据所述第二分区键值,将所述数据记录迁移到第五目标数据库中,并将所述数据记录从原数据库中删除,所述第五目标数据库为第i+1级历史子表对应的数据库中分区键值为所述第二分区键值的数据库,i为正整数。

5.根据权利要求4所述的方法,其特征在于,所述将所述数据记录从原数据库中删除之后,所述方法还包括:
向所述原数据库和迁移后的数据库发送提示消息,所述提示消息用于提示所述数据记录迁移成功。

6.一种数据查询装置,其特征在于,所述装置包括:
接收单元,用于接收应用发送的第一数据查询请求;
解析单元,用于对所述第一数据查询请求进行解析,得到查询条件,所述查询条件包括生命周期表标识和查询时间字段的字段值,所述生命周期表标识用于指示与所述应用对应的生命周期表;
计算单元,用于根据所述查询时间字段的字段值和当前系统时间之间的差值;
确定单元,还用于根据所述差值和预先存储的所述生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,所述生命周期表中存储有生命周期字段的字段值范围与存储类型之间的对应关系;
替换单元,用于将所述第一数据查询请求中的所述生命周期表标识替换为目标存储类型的标识,得到第二数据查询请求;
发送单元,用于将所述第二数据查询请求发送至第一目标数据库,所述第一目标数据库为所述目标存储类型对应的数据库,由所述第一目标数据库返回查询结果;
所述发送单元,还用于当接收到所述查询结果时,将所述查询结果发送至所述应用。

7.根据权利要求6所述的装置,其特征在于,数据表的存储类型包括生产表和历史表;
所述确定单元,用于当所述差值位于生产表对应的所述生命周期字段的字段值范围内,确定所述待查询数据表的目标存储类型为生产表;当所述差值位于历史表对应的生命周期字段的字段值范围内,确定所述待查询数据表的目标存储类型为历史表。

8.根据权利要求6或7所述的装置,其特征在于,所述查询条件还包括第一分区键值;
所述发送单元,用于根据所述第一分区键值,从所述第一目标数据库中,确定第二目标数据库,所述第二目标数据库为第一目标数据库中分区键值为第一分区键值的数据库;
将所述第二数据查询请求发送至所述第二目标数据库。

9.根据权利要求7所述的装置,其特征在于,所述历史表包括n级历史子表,所述n级历史子表和所述生产表均对应不同的数据迁移时间,n为正整数;
所述装置还包括:
所述发送单元,用于对于任一种存储类型的数据表,当到达所述数据表对应的数据迁移时间时,向第三目标数据库发送第三数据查询请求,所述第三目标数据库为所述存储类型对应的数据库,所述第三数据查询请求用于所述第三目标数据库返回至少一条数据记录,所述数据记录为存储时间与当前系统时间之间的差值未位于所述存储类型对应的生命周期字段的字段值范围内的数据;
获取单元,用于当接收到所述至少一条数据记录时,从所述生命周期表中,获取每条数据记录的数据表字段值;
计算单元,用于对每条数据记录的数据表字段值进行哈希计算,得到每条数据记录对应的第二分区键值;
迁移单元,用于对于任一条数据记录,当所述数据记录位于所述生产表中,根据所述数据记录对应的第二分区键值,将所述数据记录迁移到第四目标数据库中,并将所述数据记录从原数据库中删除,所述第四目标数据库为第一级历史子表对应的数据库中分区键值为所述第二分区键值的数据库;
所述迁移单元,还用于当所述数据记录位于第i级历史子表中,根据所述第二分区键值,将所述数据记录迁移到第五目标数据库中,并将所述数据记录从原数据库中删除,所述第五目标数据库为第i+1级历史子表对应的数据库中分区键值为所述第二分区键值的数据库,i为正整数。

10.根据权利要求9所述的装置,其特征在于,所述发送单元,还用于向所述原数据库和迁移后的数据库发送提示消息,所述提示消息用于提示所述数据记录迁移成功。

11.一种计算设备,其特征在于,包括:处理器、存储器、通信接口及总线,其中,所述存储器、处理器及所述通信接口通过所述总线连接;
所述存储器,用于存放计算机指令;
所述处理器通过所述总线调用所述存储器中存储的计算机指令,用于执行以下操作:
通过调用所述通信接口接收应用发送的第一数据查询请求;
对所述第一数据查询请求进行解析,得到查询条件,所述查询条件包括生命周期表标识和查询时间字段的字段值,所述生命周期表标识用于指示与所述应用对应的生命周期表;
计算所述查询时间字段的字段值和当前系统时间之间的差值;
根据所述差值和预先存储的所述生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,所述生命周期表中存储有生命周期字段的字段值范围与存储类型之间的对应关系;
将所述第一数据查询请求中的所述生命周期表标识替换为目标存储类型的标识,得到第二数据查询请求;
通过调用所述通信接口将所述第二数据查询请求发送至第一目标数据库,所述第一目标数据库为所述目标存储类型对应的数据库,由所述第一目标数据库返回查询结果;
通过调用所述通信接口当接收到所述查询结果时,将所述查询结果发送至所述应用。
说明书

技术领域

[0001] 本公开涉及信息技术领域,特别涉及一种数据查询方法、装置及计算设备。

背景技术

[0002] 在实际的业务场景下,数据表中的数据大都具有生命周期。为了便于对数据表中具有生命周期的数据进行管理,分布式数据库系统在存储数据表中的数据时,可根据数据表中每条数据的应用状态,对数据表中的数据进行分类存储。其中,数据表的存储类型包括生产表和历史表。如果数据表中的数据为当前业务场景下需要应用的数据,则将该数据存储到生产表对应的数据库中;如果数据表中的数据为当前业务场景下已失效或已淘汰的数据,则将该数据存储到历史表对应的数据库中。
[0003] 在应用运行过程中,因业务需求需要查询满足要求的数据时,现有技术可采用如下方法:应用计算待查询时间字段的字段值和当前系统时间之间的差值,根据该差值和预先存储的数据表的存储类型与时间字段的字段值范围之间的对应关系,确定待查询数据表的存储类型,并向分布式数据服务(Distributed Data Service,DDS)发送数据查询请求,该数据查询请求包括待查询数据表的存储类型和查询时间字段的字段值;当接收数据查询请求时,DDS将数据查询请求发送至数据表的存储类型对应的数据库,由该数据库返回查询结果;当接收到查询结果时,DDS将查询结果发送至应用。
[0004] 然而,现有的查询方法需要应用存储数据表的存储类型与时间字段的字段值范围之间的对应关系,增加了对应用的维护成本,且每次进行数据查询时,需要先确定待数据表的存储类型,因而业务扩展性较差。

发明内容

[0005] 为了解决现有技术的问题,本公开实施例提供了一种数据查询方法、装置及计算设备。所述技术方案如下:
[0006] 第一方面,提供了一种数据查询方法,该方法包括:
[0007] 接收应用发送的第一数据查询请求;对第一数据查询请求进行解析,得到查询条件,该查询条件包括生命周期表标识和查询时间字段的字段值;计算查询时间字段的字段值和当前系统时间之间的差值;根据该差值和预先存储的生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,该生命周期表中存储有生命周期字段的字段值范围与存储类型之间的对应关系;将第一数据查询请求中的生命周期表标识替换为目标存储类型的标识,得到第二数据查询请求;将第二数据查询请求发送至第一目标数据库,该第一目标数据库为目标存储类型对应的数据库,由第一目标数据库返回查询结果;当接收到查询结果时,将查询结果发送至应用。
[0008] 本公开实施例示出的方案,在接收到应用发送的第一数据查询请求时,根据预先存储的生命周期表和当前系统时间,确定出待查询数据表的存储类型,并将第一数据查询请求发送至该待查询数据表的存储类型对应的第一目标数据库,进而将第一目标数据库返回的查询结果发送至应用。在进行数据查询时,无需应用存储数据表的存储类型和时间字段的字段值范围之间的对应关系,不仅节省了存储空间、降低了应用的维护成本,且无需应用确定待查询数据表的存储类型,增强了业务扩展性。
[0009] 在第一方面的第一种可能的实现方式中,数据表的存储类型包括生产表和历史表;
[0010] 根据该差值和预先存储的生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,包括:
[0011] 如果该差值位于生产表对应的生命周期字段的字段值范围内,则确定待查询数据表的目标存储类型为生产表;
[0012] 如果该差值位于历史表对应的生命周期字段的字段值范围内,则确定待查询数据表的目标存储类型为历史表。
[0013] 本公开实施例示出的方案,通过将查询时间字段的字段值和当前系统时间之间的差值与不同存储类型的生命周期字段的字段值范围进行比较,确定待查询数据表的目标存储类型,而无需应用在第一数据查询请求中携带,从而增强了业务的扩展性。
[0014] 在第一方面的第二种可能的实现方式中,查询条件还包括第一分区键值;
[0015] 将第二数据查询请求发送至第一目标数据库,包括:
[0016] 根据第一分区键值,从第一目标数据库中,确定第二目标数据库,该第二目标数据库为第一目标数据库中分区键值为第一分区键值的数据库;
[0017] 将第二数据查询请求发送至第二目标数据库。
[0018] 其中,分区键值为对数据表进行分区存储的依据,分区键值可以为字段值、字段范围以及字段值经过哈希计算的值等等。
[0019] 本公开实施例示出的方案,当待查询数据表根据第一分区键值进行分区存储时,通过第一分区键值对第二数据查询请求进行转发,提高了数据查询效率。
[0020] 在第一方面的第三种可能的实现方式中,该方法还包括:
[0021] 历史表包括n级历史子表,n级历史子表和生产表均对应不同的数据迁移时间,n为正整数;
[0022] 该方法还包括:
[0023] 对于任一种存储类型的数据表,当到达该数据表对应的数据迁移时间时,向第三目标数据库发送第三数据查询请求,该第三目标数据库为存储类型对应的数据库,该第三数据查询请求用于第三目标数据库返回至少一条数据记录,该数据记录为存储时间与当前系统时间之间的差值未位于存储类型对应的生命周期字段的字段值范围内的数据;当接收到至少一条数据记录时,从生命周期表中,获取每条数据记录的数据表字段值;对每条数据记录的数据表字段值进行哈希计算,得到每条数据记录对应的第二分区键值;对于任一条数据记录,如果数据记录位于生产表中,则根据数据记录对应的第二分区键值,将数据记录迁移到第四目标数据库中,并将数据记录从原数据库中删除,该第四目标数据库为第一级历史子表对应的数据库中分区键值为该第二分区键值的数据库;如果数据记录位于第i级历史子表中,则根据第二分区键值,将数据记录迁移到第五目标数据库中,并将数据记录从原数据库中删除,该第五目标数据库为第i+1级历史子表对应的数据库中分区键值为第二分区键值的数据库,i为正整数。
[0024] 其中,数据迁移时间可由分布式数据库系统设置,每种存储类型的数据表对应的数据迁移时间可以相同,也可以不同。
[0025] 本公开实施例示出的方案,通过对数据库中的数据进行迁移,使得每种存储类型的数据表始终存储在相应的数据库中,从而便于对不同类型的数据表进行管理。
[0026] 在第一方面的第四种可能的实现方式,将数据记录从原数据库中删除之后,该方法还包括:
[0027] 向原数据库和迁移后的数据库发送提示消息,该提示消息用于提示数据记录迁移成功。
[0028] 第二方面,提供了一种数据查询装置,该装置包括用于实现上述第一方面所述的数据查询方法的单元,例如,接收单元、解析单元、计算单元、确定单元、替换单元及发送单元。
[0029] 第三方面,提供了一种计算设备,包括:处理器、存储器、通信接口及总线,其中,存储器、处理器及通信接口通过总线连接;存储器,用于存放计算机指令;处理器通过总线调用存储器中存储的计算机指令,用于执行上述第一方面所述的数据查询方法,该处理器所执行的操作具体参见上述第一方面至第一方面的第四种可能的实现方式。
[0030] 第四方面,提供了一种计算机可读存储介质,用于存储程序代码,该程序代码包括执行第一方面的方法的指令。
[0031] 本公开实施例提供的技术方案带来的有益效果是:
[0032] 通过计算查询时间字段的字段值和当前系统时间之间的差值,并根据该差值和生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,并将目标存储类型的标识替换生命周期表标识得到的第二数据查询请求发送至目标存储类型对应的第一目标数据库,进而将第一目标数据库返回的查询结果发送至应用。在进行数据查询时,无需应用存储数据表的存储类型和时间字段的字段值范围之间的对应关系,不仅节省了存储空间、降低了应用的维护成本,且无需应用确定待查询数据表的存储类型,增强了业务扩展性。

实施方案

[0039] 为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
[0040] 在分布式数据库系统中,节点按照功能可分为查询节点和数据节点,查询节点作为终端与数据节点之间的通信桥梁,可临时存储终端和数据节点的数据,并对数据节点中的数据进行查询和管理;数据节点用于存储数据。基于分布式数据库系统中节点的不同功能,图1示出了分布式数据库系统的架构图,参见图1,该分布式数据库系统包括:终端101、查询节点102及数据节点103。
[0041] 其中,终端101可以为智能手机、平板电脑、台式电脑等,本公开实施例不对终端101的产品类型作具体的限定。为了满足用户的使用需求,终端101中安装了各种应用,例如购物类应用、导航类应用、即时通讯类应用等等。
[0042] 查询节点102内配置有DDS,该DDS用于提供分布式数据访问服务。在实际应用中,查询节点102可以为单独的一台计算设备,还可以为由多台计算设备组成的计算机集群。
[0043] 数据节点103维护一个数据库,该数据库用于存储应用在运行过程中所产生的数据。为了便于对这些数据进行管理,数据节点103通常采用数据表的形式存储应用的数据。对于每个应用而言,其对应的数据表中的数据可以行为单元存储在数据节点中,还可以列为单位存储在数据节点中,在本公开的所有实施例中,以数据表中的数据以行为单元存储在数据节点上为例。在实际应用中,数据节点103可以为单独的一台计算设备,还可以为由多台计算设备组成的计算机集群。
[0044] 上述终端101与查询节点102之间可通过有线网络或无线网络进行通信,查询节点102与数据节点103之间可通过有线网络或无线网络进行通信。
[0045] 参见图2,其示出了本公开的一个实施例中使用的计算设备200的说明算机体系结构。计算设备200为常规的台式计算机或者膝上型笔记本,一个或多个计算设备200可构成物理平台。计算设备200包括处理器201、存储器202、通信接口203和总线204。该处理器201、存储器202、通信接口203通过总线204直连。该计算设备200可用于执行数据查询方法。具体地,
[0046] 存储器202,用于存放计算机指令;
[0047] 处理器201通过总线204调用存储器202中存储的计算机指令,用于执行以下操作:
[0048] 通过调用通信接口接203收应用发送的第一数据查询请求;
[0049] 对第一数据查询请求进行解析,得到查询条件,该查询条件包括生命周期表标识和查询时间字段的字段值;
[0050] 计算查询时间字段的字段值和当前系统时间之间的差值;
[0051] 根据该差值和预先存储的生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,该生命周期表中存储有生命周期字段的字段值范围与存储类型之间的对应关系;
[0052] 将第一数据查询请求中的生命周期表标识替换为目标存储类型的标识,得到第二数据查询请求;
[0053] 通过调用通信接口203将第二数据查询请求发送至第一目标数据库,该第一目标数据库为目标存储类型对应的数据库,由第一目标数据库返回查询结果;
[0054] 通过调用通信接口203当接收到查询结果时,将查询结果发送至应用。
[0055] 在本公开的另一个实施例中,数据表的存储类型包括生产表和历史表;
[0056] 处理器201通过总线204调用存储器202中存储的计算机指令,用于执行以下操作:
[0057] 如果该差值位于生产表对应的生命周期字段的字段值范围内,则确定待查询数据表的目标存储类型为生产表;
[0058] 如果该差值位于历史表对应的生命周期字段的字段值范围内,则确定待查询数据表的目标存储类型为历史表。
[0059] 在本公开的另一个实施例中,查询条件还包括第一分区键值;
[0060] 处理器201通过总线204调用存储器202中存储的计算机指令,用于执行以下操作:
[0061] 根据第一分区键值,从第一目标数据库中,确定第二目标数据库,该第二目标数据库为第一目标数据库中分区键值为第一分区键值的数据库;
[0062] 将第二数据查询请求发送至第二目标数据库。
[0063] 在本公开的另一个实施例中,历史表包括n级历史子表,n级历史子表和生产表均对应不同的数据迁移时间,n为正整数;
[0064] 处理器201通过总线204调用存储器202中存储的计算机指令,用于执行以下操作:
[0065] 对于任一种存储类型的数据表,当到达数据表对应的数据迁移时间时,向第三目标数据库发送第三数据查询请求,该第三目标数据库为存储类型对应的数据库,该第三数据查询请求用于第三目标数据库返回至少一条数据记录,该数据记录为存储时间与当前系统时间之间的差值未位于存储类型对应的生命周期字段的字段值范围内的数据;
[0066] 当接收到至少一条数据记录时,从生命周期表中,获取每条数据记录的数据表字段值;
[0067] 对每条数据记录的数据表字段值进行哈希计算,得到每条数据记录对应的第二分区键值;
[0068] 对于任一条数据记录,如果数据记录位于生产表中,则根据数据记录对应的第二分区键值,将数据记录迁移到第四目标数据库中,并将数据记录从原数据库中删除,第四目标数据库为第一级历史子表对应的数据库中分区键值为第二分区键值的数据库;
[0069] 如果数据记录位于第i级历史子表中,则根据第二分区键值,将数据记录迁移到第五目标数据库中,并将数据记录从原数据库中删除,第五目标数据库为第i+1级历史子表对应的数据库中分区键值为第二分区键值的数据库,i为正整数。
[0070] 在本公开的另一个实施例中,处理器201通过总线204调用存储器202中存储的计算机指令,还用于执行以下操作:
[0071] 通过调用通信接口203向原数据库和迁移后的数据库发送提示消息,该提示消息用于提示数据记录迁移成功。
[0072] 不失一般性,该存储器202包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。
[0073] 根据本公开的各种实施例,所述计算设备200还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算设备200可以通过连接在所述总线204上的网络接口单元205连接到网络,或者说,也可以使用网络接口单元205来连接到其他类型的网络或远程计算机系统(未示出)。
[0074] 本公开实施例提供的计算设备,通过计算查询时间字段的字段值和当前系统时间之间的差值,并根据该差值和生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,并将目标存储类型的标识替换生命周期表标识得到的第二数据查询请求发送至目标存储类型对应的第一目标数据库,进而将第一目标数据库返回的查询结果发送至应用。在进行数据查询时,无需应用存储数据表的存储类型和时间字段的字段值范围之间的对应关系,不仅节省了存储空间、降低了应用的维护成本,且无需应用确定待查询数据表的存储类型,增强了业务扩展性。
[0075] 为了提高表数据的查询效率,提升业务性能,基于图1所示的分布式数据库系统的架构图,本公开实施例提供了一种数据查询方法,参见图3,本公开实施例提供的方法流程包括:
[0076] 301、终端向查询节点发送第一数据查询请求。
[0077] 对于终端中的任一种应用,在该应用的运行过程中,因业务需求需要从数据库中查询满足要求的数据时,该应用可触发终端生成数据查询请求,并将所生成的数据查询请求发送至查询节点。其中,数据查询请求一般采用结构化查询语言(Structured Query Language,SQL)进行表示。SQL为一种数据库查询和程序设计语言,主要用于对数据库进行查询、更新和管理。
[0078] 需要说明的是,由于本公开实施例中涉及了不同业务场景下的多种数据查询请求,为了便于将多种数据查询请求区分开来,可将数据查询场景下,终端向查询节点发送的数据查询请求称为第一数据查询请求,将对第一数据查询请求处理后得到数据查询请求称为第二数据查询请求;将数据迁移场景下,查询节点向数据节点发送的数据查询请求称为第三数据查询请求。
[0079] 302、当接收到第一数据查询请求时,查询节点对第一数据查询请求进行解析,得到查询条件,该查询条件包括生命周期表标识和查询时间字段的字段值。
[0080] 为了便于对应用运行过程中产生的数据进行分类管理,查询节点根据数据表中数据在实际业务中的使用情况,为数据表设置不同的存储类型(或数据表的类型),并为不同的存储类型(或数据表的类型)设置对应的生命周期字段的字段值范围。该存储类型(或数据表的类型)表示数据表中数据在分布式数据库系统中的存储类别,该存储类型包括生产表和历史表等。其中,生产表可用t_order_product表示,历史表可用t_order_history表示,生命周期字段可用months_between(f_date,now)表示。为了提高查询效率,查询节点还将历史表划分为n级历史子表,该n级历史表可用t_order_historyi表示,且i值越大表示数据的存储时间早,也即是第i+1级历史子表中数据的存储时间早于第i级历史子表中数据的存储时间,其中,n为大于正整数,i也为正整数,i小于等于n。对于n级历史子表,每级历史子表的生命周期字段的字段值范围不同,且n级历史子表的生命周期字段的字段值范围之和为历史表的生命周期字段的字段值范围。
[0081] 其中,查询条件包括生命周期表标识、查询时间字段的字段值等。生命周期表标识用于唯一标识一个生命周期表,可用t_order表示。查询节点上存储有多张生命周期表,每张生命周期表与终端上的一个应用对应,且每张生命周期表中存储有生命周期字段的字段值范围与数据表的存储类型之间的对应关系。当然,如果待查询数据表分区进行存储,查询条件还包括第一分区键值,该第一分区键值包括生产表的分区键值和历史表的分区键值等,该生产表的分区键值可用be_id表示,历史表的分区键值由数据表字段值order_id经过哈希计算得到,可用hash(order_id)表示。
[0082] 查询节点对第一数据查询请求进行解析的方式,包括但不限于:根据第一数据查询请求的SQL语句形式,从SQL语句中读取查询条件。
[0083] 例如,查询节点接收到的第一数据查询请求为:select*from t_order where f_date=to_date(‘2016-06-22’,‘yyyy-mm-dd’and be_id=18and order_id=10),查询节点对第一数据查询请求进行解析,得到查询条件信息为:生命周期表标识为t_order、查询时间字段的字段值为f_date=to_date(‘2016-06-22’,‘yyyy-mm-dd’)、生产表的分区键值为be_id=18、历史表的分区键值为对order_id=10进行哈希计算的哈希值,即hash(order_id=10)。
[0084] 303、查询节点计算查询时间字段的字段值和当前系统时间之间的差值。
[0085] 在本公开实施例中,查询节点维护一个系统时钟,基于该系统时钟,能够实时获取当前系统时间。查询节点根据查询时间字段的字段值和当前系统时间,可计算查询时间字段与当前系统时间之间的差值。
[0086] 例如,查询节点对第一数据查询请求进行解析得到的查询时间字段的字段值为f_date=to_date(‘2016-06-22’,‘yyyy-mm-dd’),当前系统时间为2016-09-25,则查询时间字段的字段值与当前系统时间之间的差值为3.1个月。
[0087] 304、查询节点根据该差值和预先存储的生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型。
[0088] 其中,数据表的存储类型包括生产表和历史表。由于生命周期表中存储有生命周期字段的字段值范围与存储类型之间的对应关系,因此,查询节点可通过将该差值与生命周期标识对应的生命周期表进行比较,确定待查询数据表的目标存储类型,进而根据待查询数据表的目标存储类型,从分布式数据库系统中查询数据。
[0089] 查询节点在根据该差值和预先存储的生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型时,可采用如下方式:
[0090] 如果该差值位于生产表对应的生命周期字段的字段值范围内,则查询节点确定待查询数据表的目标存储类型为生产表;
[0091] 如果该差值位于历史表对应的生命周期字段的字段值范围内,则查询节点确定待查询数据表的目标存储类型为历史表。
[0092] 例如,生命周期字段的字段值范围与数据表的类型之间的对应关系为:当生命周期字段的字段值范围months_between(f_date,now)<=6个月时,数据表的存储类型为生产表,当生命周期字段的字段值范围months_between(f_date,now)>=6个月时,数据表的存储类型为历史表。如果查询时间字段的字段值与当前系统时间之间的差值为3.1个月,由于该差值3.1个月位于生产表对应的生命周期字段的字段值范围内,因此,查询节点可确定待查询数据表的目标存储类型为生产表;如果查询时间字段的字段值与当前系统时间之间的差值为7.5个月,由于该差值位于历史表对应的生命周期字段的字段值范围内,因此,查询节点可确定待查询数据表的目标存储类型为历史表。
[0093] 305、查询节点将第一数据查询请求中的生命周期表标识替换为目标存储类型的标识,得到第二数据查询请求。
[0094] 由于分布式数据库系统中每个数据节点上并未存储生命周期表,如果直接将第一数据查询请求发送至具体数据库可能无法从具体数据库中获取到查询结果,因此,为了实现数据查询过程,查询节点在将第一数据查询请求发送至具体数据库进行之前,可将第一数据查询请求中的生命周期表标识替换为目标存储类型的标识,得到第二数据查询请求。
[0095] 306、查询节点将第二数据查询请求发送至第一目标数据库。
[0096] 其中,第一目标数据库为目标存储类型对应的数据库,且该第一目标数据库的数量至少为一个。如果目标存储类型为生产表,则第一目标数据库为生产表对应的数据库,如果目标存储类型为历史表,则第一目标数据库为历史表对应的数据库。
[0097] 针对于查询条件中是否包括第一分区键值,查询节点在将第二数据查询请求发送至第一目标数据库时,包括如下两种方式:
[0098] 在本公开的一个实施例中,如果查询条件中不包括第一分区键值,查询节点可将第二数据查询请求直接发送至第一目标数据库。例如,当目标存储类型为生产表时,第一目标数据库为生产表对应的数据库,查询节点可将第二数据查询请求发送至生产表对应的数据库;当目标存储类型为历史表时,第一目标数据库为历史表对应的数据库,查询节点可将第二数据查询请求发送至历史表对应的数据库。
[0099] 在本公开的另一个实施例中,如果查询条件中包括第一分区键值,查询节点可根据查询条件中的第一分区键值,从第一目标数据库中,确定分区键值与查询条件中第一分区键值相同的第二目标数据库,进而将第二数据查询请求发送至第二目标数据库。当目标存储类型为生产表时,第一目标数据库为生产表对应的数据库,查询节点可根据第一分区键值,从生产表对应的数据库中,确定分区键值与第一分区键值中生产表的分区键值相同的第二目标数据库,并将第二数据查询请求发送至第二目标数据库;当目标存储类型为历史表时,第一目标数据库为历史表对应的数据库,查询节点可根据第一分区键值,从历史表对应的数据库中,确定分区键值与第一分区键值中历史表的分区键值相同的第二目标数据库,并将第二数据查询请求发送至第二目标数据库。
[0100] 307、第一目标数据节点根据第一数据查询请求进行查询,得到查询结果。
[0101] 其中,第一目标数据节点为第一目标数据库或第二目标数据库所在的数据节点,且第一目标数据节点的数量与第一目标数据库或第二目标数据库的数量相同。如果查询条件中不包括第一分区键值,则第一目标数据节点为第一目标数据库所在的数据节点,且第一目标数据节点的数量与第一目标数据库的数量相同;如果查询条件中包括第一分区键值,则第一目标数据节点为第二目标数据库所在的数据节点,且第一目标数据节点的数量与第二目标数据库的数量相同。
[0102] 308、第一目标数据节点将查询结果发送至查询节点。
[0103] 当得到查询结果后,第一目标数据库可通过有线网络或无线网络将查询结果发送至查询节点。
[0104] 309、当接收到查询结果时,查询节点将查询结果发送至终端。
[0105] 当接收到第一目标数据库发送的查询结果时,查询节点将查询结果发送至终端,由终端将查询结果发送至应用,使得应用能够根据查询结果为用户提供服务。
[0106] 对于本公开实施例提供的数据查询方法,下面将以图4为例进行说明。
[0107] 参见图4,在应用运行过程中,因业务需求需要获取满足一定条件的数据时,应用可触发终端向查询节点发送第一数据查询请求,该第一数据查询请求为:select*from t_order where f_date=to_date(‘2016-06-22’,‘yyyy-mm-dd’and be_id=18and order_id=10),查询节点对第一数据查询请求进行解析,得到查询条件为:生命周期表标识为t_order、查询时间字段的字段值为f_date=to_date(‘2016-06-22’,‘yyyy-mm-dd’,生产表的分区键值为be_id=18,历史表的分区键值为hash(order_id=10)。
[0108] 设定生产表对应的生命周期字段的字段值范围为小于等于6个月,历史表对应的生命周期字段的字段值范围为大于等于6个月,如果当前系统时间为2016-09-25,查询节点根据查询时间字段的字段值2016-06-22和当前系统时间2016-09-25,计算查询时间字段的字段值与当前系统时间之间的差值为3.1个月。由于生命周期字段的字段值3.1位于生产表对应的生命周期字段的字段值范围内,则查询节点可确定待查询数据表的目标存储类型为生产表,进而根据生产表的分区键值be_id=18,从生产表对应的数据库DB1和DB2中,确定生产表的分区键值be_id=18对应的数据库DB1,并将第一数据查询请求中的生命周期表标识t_order替换为生产表的标识t_order_product,得到第二数据查询请求select*from t_order_product where f_date=to_date(‘2016-06-22’,‘yyyy-mm-dd’and be_id=18and order_id=10),进而将第二数据查询请求发送至数据库DB1,数据库DB1根据第二数据查询请求进行查询,得到查询结果,并将查询结果发送至终端,由终端将查询结果发送至应用。
[0109] 如果当前系统时间为2017-02-25,查询节点根据查询时间字段的字段值2016-06-22和当前系统时间2017-02-25,计算查询时间字段的字段值与当前系统时间之间的差值为
8.1个月。由于生命周期字段的字段值8.1位于历史表对应的生命周期字段的字段值范围内,则查询节点可确定待查询数据表的目标存储类型为历史表,进而根据历史表的分区键值hash(order_id=10),从历史表对应的数据库DB3、DB4、DB5中,确定历史表的分区键值hash(order_id=10)=1对应的数据库为DB4,并将第一数据查询请求中的生命周期表标识t_order替换为历史表的标识t_order_history,得到第二数据查询请求select*from t_order_history where f_date=to_date(‘2016-06-22’,‘yyyy-mm-dd’and be_id=18and order_id=10),进而将第二数据查询请求发送至数据库DB4,数据库DB41根据第二数据查询请求进行查询,得到查询结果,并将查询结果发送至终端,由终端将查询结果发送至应用。
[0110] 310、对于任一种存储类型的数据表,当到达数据表对应的数据迁移时间时,查询节点向第三目标数据库发送第三数据查询请求。
[0111] 由于数据表中数据所属的存储类型是由存储时间与当前系统时间的差值决定的,而随着时间的推移,当前系统时间不断变化,导致数据表中数据所属的存储类型将发生变化,为此,本公开实施例提供的方法还支持对分布式数据库系统中的数据进行迁移。在对分布式数据库系统中的数据之前,查询节点可为每种存储类型的数据表设置数据迁移时间,从而在达到每种存储类型的数据表对应的数据迁移时间,对该种存储类型的数据表对应的数据库中的数据进行迁移。
[0112] 对于任一种存储类型的数据表,当到达该数据表对应的数据迁移时间时,查询节点可向第三目标数据库发送第三数据查询请求。其中,第三目标数据库为该存储类型对应的数据库。第三数据查询请求包括迁移时间字段的字段值等,该迁移时间字段的字段值实际上为该存储类型对应的生命周期字段的字段值范围,该第三数据查询请求用于从第三数据库中查询存储时间与当前系统时间之间的差值大于迁移时间字段的字段值的数据记录。例如,生产表对应的数据迁移时间为1天,迁移时间字段的字段值为months_between(f_date,now)>=6,每隔一天查询节点将向生产表对应的数据库发送第三数据查询请求,该第三数据查询请求为:select*from t_order_product where months_between(f_date,now)>=6,该第三数据查询请求用于从生产表对应的数据库中存储时间与当前系统时间之间的差值大于6个月的数据记录。
[0113] 需要说明的是,如果分布式数据库系统对每种存储类型的数据表中的数据进行分区存储,为了减轻数据处理压力,查询节点可以数据库为单位对每个数据库的数据进行迁移,也即是一个数据库中的数据迁移成功之后,再迁移另一个数据库中的数据。例如,第三目标数据库历史表对应的数据库,该第三数据库包括数据库DB1和DB2,在进行数据迁移时,查询节点可先将第三数据查询请求发送至数据库DB1,当数据库DB1中的数据迁移成功之后,再将第三数据查询请求发送至数据库DB2。
[0114] 311、第二目标数据节点根据第三数据查询请求进行查询,得到至少一条数据记录。
[0115] 其中,第二目标数据节点为第三目标数据库所在的数据节点。当接收到第三数据查询请求时,第二目标数据节点根据第三数据查询请求中的迁移时间字段的字段值,从第三目标数据库中查找存储时间与当前系统时间之间的差值大于该迁移时间字段的字段值的数据,得到至少一条数据记录。
[0116] 312、第二目标数据节点将至少一条数据记录发送至查询节点。
[0117] 当获取到至少一条数据记录时,第二目标数据节点可通过有线网络或无线网络将至少一条数据记录发送至查询节点。
[0118] 313、当接收到至少一条数据记录时,查询节点从生命周期表中,获取每条数据记录的数据表字段值。
[0119] 其中,数据表字段值即为order_id。由于生命周期表中还存储有数据表中每条数据的数据表字段值,因此,当接收到至少一条数据记录时,查询节点从生命周期表中获取每条数据记录的数据表字段值。
[0120] 314、查询节点对每条数据记录的数据表字段值进行哈希计算,得到每条数据表记录对应的第二分区键值。
[0121] 其中,第二分区键值即为第一分区键值中的历史表的分区键值。查询节点通过对每条数据记录的数据表字段值进行哈希计算,可得到每条数据表记录的第二分区键值。
[0122] 315、对于任一条数据记录,查询节点将该数据记录迁移到第二分区键值对应的数据库,并将数据记录从原数据库中删除。
[0123] 在本公开实施例中,历史表中数据的存储时间要早于生产表中数据的存储时间,第i+1级历史子表中数据的存储时间要早于第i级历史子表中的数据迁移时间,而随着时间的推移,数据的存储时间相对当前系统时间变得越来越早,因此,数据迁移过程实际上是将数据从存储时间晚的数据库迁移到存储时间早的数据库,也即是,数据迁移过程为将生产表中的数据迁移到第一级历史子表中,将第一级历史子表中的数据迁移到第二历史子表中,将第i级历史子表中的数据迁移到第i+1级历史子表中,依次类推。基于上述内容,对于任一条数据记录,查询节点在将该条数据迁移到该数据记录的第二分区键值对应的数据库时,包括但不限于如下两种情况:
[0124] 在本公开的一个实施例中,如果数据记录位于生产表中,则查询节点可将数据记录迁移到第四目标数据库中,并将数据记录从原数据库中删除。其中,第四目标数据库为第一级历史子表对应的数据库中分区键值为第二分区键值的数据库。具体地,查询节点在将数据记录迁移到第四目标数据库时,可向第四目标数据库发送SQL语句,如insret into t_order_history values(…)。查询节点在将数据记录从原数据库中删除时,可向第四目标数据库发送SQL语句,如delete from t_order_product where be_id?And order_id=?and f_date?and(…)。
[0125] 在本公开的另一个实施例中,如果数据记录位于第i级历史子表中,则查询节点可将数据记录迁移到第五目标数据库中,并将数据记录从原数据库中删除。其中,第五目标数据库为第i+1级历史子表对应的数据库中分区键值为第二分区键值的数据库。
[0126] 对于上述数据查询及数据迁移过程,下面将以图5为例进行说明。
[0127] 参见图5,当因业务需求,应用需要获取满足一定条件的数据时,应用可向查询节点发送SQL语句,查询节点接收到SQL语句时,对该SQL语句进行解析,得到查询条件,该查询条件包括生命周期表标识和查询时间字段的字段值。查询节点根据查询时间字段的字段值与当前系统时间,确定待查询数据表的生命周期字段的字段值,并根据该生命周期字段的字段值和生命周期标识对应的生命周期表,确定待查询数据表的目标存储类型,如果目标存储类型为生产表,可从生产表对应的数据库中进行查询,如果目标存储类型为历史表,则从历史表对应的数据库中进行查询。在查询过程中,如果查询条件还包括第一分区键值,则从第一分区键值对应的数据库中有针对性地进行查询,如果查询条件不包括第一分区键值,则从目标存储类型对应全部数据库中进行查询。为了确保每种存储类型对应的数据库中数据准确,查询节点还支持对分布式数据库中的数据进行迁移,在实际迁移时,可将生产表中的数据迁移到第一级历史子表中,将第i级历史子表中的数据迁移到第i+1级历史子表中。
[0128] 在本公开的另一个实施例中,查询节点将数据记录从原数据库中删除之后,还将向该数据所在的原数据库和迁移后的数据库发送提示消息,该提示消息用于提示数据记录迁移成功。当然,为了节省资源,查询节点还可在对第三数据库中的数据记录全部迁移后,或者当对第三数据库中的指定数量的数据进行迁移后,向每条数据记录的原数据库和迁移后的数据库发送提示消息。其中,指定数量由查询节点的数据处理能力确定,该指定数量可以为100、200等,本公开实施例不对指定数量作具体的限定。
[0129] 本公开实施例提供的方法,通过计算查询时间字段的字段值和当前系统时间之间的差值,并根据该差值和生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,并将目标存储类型的标识替换生命周期表标识得到的第二数据查询请求发送至目标存储类型对应的第一目标数据库,进而将第一目标数据库返回的查询结果发送至应用。在进行数据查询时,无需应用存储数据表的存储类型和时间字段的字段值范围之间的对应关系,不仅节省了存储空间、降低了应用的维护成本,且无需应用确定待查询数据表的存储类型,增强了业务扩展性。
[0130] 参见图6,本公开实施例提供的一种数据查询装置,该装置包括:接收单元601、解析单元602、计算单元603、确定单元604、替换单元605、发送单元606。
[0131] 其中,接收单元601,用于执行图3中的步骤302。
[0132] 解析单元602,用于执行图3中的步骤302。
[0133] 计算单元603,用于执行图3中的步骤303。
[0134] 确定单元604,用于执行图3中的步骤304。
[0135] 替换单元605,用于执行图3中的步骤305。
[0136] 发送单元605,用于执行图3中的步骤306至309。
[0137] 本公开实施例提供的装置,通过计算查询时间字段的字段值和当前系统时间之间的差值,并根据该差值和生命周期表标识对应的生命周期表,确定待查询数据表的目标存储类型,并将目标存储类型的标识替换生命周期表标识得到的第二数据查询请求发送至目标存储类型对应的第一目标数据库,进而将第一目标数据库返回的查询结果发送至应用。在进行数据查询时,无需应用存储数据表的存储类型和时间字段的字段值范围之间的对应关系,不仅节省了存储空间、降低了应用的维护成本,且无需应用确定待查询数据表的存储类型,增强了业务扩展性。
[0138] 需要说明的是:上述实施例提供的数据查询装置与计算设备在查询数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据查询装置与计算设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据查询装置、计算设备与数据查询方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0139] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0140] 以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

附图说明

[0033] 图1是本公开实施例提供的分布式数据库系统的架构图;
[0034] 图2是本公开一个实施例提供的一种计算设备的说明性计算机体系结构;
[0035] 图3是本公开另一个实施例提供的一种数据查询方法的流程图;
[0036] 图4是本公开另一个实施例提供的一种对具有生命周期的表数据处理过程的示意图;
[0037] 图5是本公开另一个实施例提供的一种对具有生命周期的表数据透明访问的示例;
[0038] 图6是本公开另一个实施例提供的一种数据查询装置的结构示意图。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号