一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种订单数据查询方法及装置与流程

2022-05-06 11:18:50 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种订单数据查询方法及装置。


背景技术:

2.以网约车服务为例,在用户选择结束订单后,终端或服务器将会生成订单数据,并将订单数据存储至数据库中,该数据库可以是关系型数据库管理系统(my structured query language,mysql)数据库,当mysql数据库中存储的订单数据的总量达到瓶颈时,需要扩展mysql数据库的容量。对mysql数据库进行冷热分离,可有效解决mysql数据库的存储问题。
3.现有技术中,在对mysql数据库进行冷热分离之后,还需要适应性地修改大量的业务逻辑,以支持对冷热分离后的数据库中的订单数据进行查询和业务操作。
4.但是,修改大量的业务逻辑的改造工程量非常大,不仅浪费人力资源,且效率较低、风险较高。


技术实现要素:

5.本发明提供一种订单数据查询方法及装置,解决了mysql数据库冷热分离后需要修改大量的业务逻辑,浪费人力资源、效率较低且风险较高的问题。
6.为达到上述目的,本发明采用如下技术方案:
7.第一方面,本发明提供一种订单数据查询方法,该方法包括:
8.获取查询请求,查询请求包括目标订单的订单编号,查询请求用于请求目标订单的订单数据;
9.在第一数据库未包括订单编号的情况下,通过动态数据源路由确定数据源为第二数据库,并从第二数据库中获取第一数据,第一数据为订单数据的部分数据;
10.通过动态数据源路由确定第一数据库中的预设数据源,预设数据源用于指示第一数据库中的第i个表,i为正整数;
11.将数据源从第二数据库切换为第一数据库的预设数据源;
12.根据预设数据源,获取第二数据;
13.根据第一数据和第二数据,确定订单数据。
14.结合第一方面,在一种可能的实现方式中,第二数据库采用sharding-jdbc结构框架,第一数据包括多种类型的数据,从第二数据库中获取第一数据,包括:根据订单编号,确定第二数据库中的n个表,从n个表中获取每个类型的数据;根据每个类型的数据确定第一数据。
15.结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,根据预设数据源,获取第二数据,包括:根据预设数据源指示的第i个表,在第i个表中获取订单编号对应的第二数据。
16.结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述方法还
包括:在第一数据库中包括订单编号的情况下,通过动态数据源路由确定数据源为第一数据库,并从第一数据库获取订单数据。
17.结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,确定第一数据库中的预设数据源,包括:获取预存的注解信息;通过注解信息确定预设数据源。
18.第二方面,本发明提供一种订单数据查询装置,包括:
19.接收模块,用于获取查询请求,查询请求包括目标订单的订单编号,查询请求用于请求目标订单的订单数据;
20.第一路由模块,用于在第一数据库未包括订单编号的情况下,通过动态数据源路由确定数据源为第二数据库,并从第二数据库中获取第一数据,第一数据为订单数据的部分数据;
21.第二路由模块,用于通过动态数据源路由确定第一数据库中的预设数据源,预设数据源用于指示第一数据库中的第i个表,i为正整数;
22.切换模块,用于将数据源从第二数据库切换为第一数据库的预设数据源;
23.获取模块,用于根据预设数据源,获取第二数据;
24.确定模块,用于根据第一数据和第二数据,确定订单数据。
25.结合第二方面,在一种可能的实现方式中,第二数据库采用sharding-jdbc结构框架,第一数据包括多种类型的数据,第一路由模块,具体用于:根据订单编号,确定第二数据库中的n个表,从n个表中获取每个类型的数据;根据每个类型的数据确定第一数据。
26.结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,获取模块,具体用于:根据预设数据源指示的第i个表,在第i个表中获取订单编号对应的第二数据。
27.第三方面,本发明提供一种计算机设备,该计算机设备包括:处理器和存储器。存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当处理器执行计算机指令时,计算机设备执行如第一方面及其任一种可能的实现方式中任意一项的的订单查询方法。
28.第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机指令,当计算机指令在计算机设备上运行时,使得计算机设备执行如第一方面或第一方面的可能的实现方式中任意一项的订单查询方法。
29.本发明实施例提供的订单查询方法,计算机设备通过获取查询请求,在第一数据库未包括订单编号的情况下,先通过动态数据源路由确定数据源为第二数据库,并从第二数据库中获取第一数据,再通过动态数据源路由确定第一数据库中的预设数据源,将数据源从第二数据库切换为第一数据库的预设数据源,而后根据预设数据源,获取第二数据,最后根据第一数据和第二数据,确定订单数据。其中,第一数据为订单数据的部分数据,预设数据源用于指示第一数据库中的第i个表,i为正整数。本发明将顶层数据源路由与预设数据源路由结合,实现了对冷热分离的mysql数据库中的订单数据查询,基于此,在对mysql数据库进行冷热分离改造时,可以保证对业务逻辑无修改,从而提高了mysql数据库的冷热分离的效率,节省了人力资源,同时还降低了mysql数据库的改造风险。
附图说明
30.图1为本发明实施例提供的一种数据库冷热分离示意图;
31.图2为本发明实施例提供的一种数据库冷热分离读写交互示意图;
32.图3为本发明实施例提供的一种订单数据查询方法的流程图;
33.图4为本发明实施例提供的一种订单数据查询装置的组成示意图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
36.另外,“基于”或“根据”的使用意味着开放和包容性,因为“基于”或“根据”一个或多个所述条件或值的过程、步骤、计算或其他动作在实践中可以基于额外条件或超出所述的值。
37.为了解决对mysql数据库进行冷热分离后需要修改大量的业务逻辑,浪费人力资源、效率较低且风险较高的问题,本发明实施例提供了一种订单数据查询方法及装置,计算机设备通过获取查询请求,在第一数据库未包括订单编号的情况下,先通过动态数据源路由确定数据源为第二数据库,并从第二数据库中获取第一数据,再通过动态数据源路由确定第一数据库中的预设数据源,将数据源从第二数据库切换为第一数据库的预设数据源,而后根据预设数据源,获取第二数据,最后根据第一数据和第二数据,确定订单数据。其中,第一数据为订单数据的部分数据,预设数据源用于指示第一数据库中的第i个表,i为正整数。
38.这样,将顶层数据源路由与预设数据源路由结合,实现了对冷热分离的mysql数据库中的订单数据查询,基于此,在对mysql数据库进行冷热分离改造时,可以保证对业务逻辑无修改,从而提高了mysql数据库的冷热分离的效率,节省了人力资源,同时还降低了mysql数据库的改造风险。
39.图1为本发明实施例提供的一种数据库冷热分离示意图。如图1所示,在对mysql数据库进行冷热分离之前,mysql数据库可以包括单库单表形式的第一数据库101。第一数据库101中不同的单表用于存储订单数据中不同类型的数据,例如,第一数据库101中的a表、b表c表和d表可以分别用于存储订单数据中的客户信息、位置信息、费用信息和改动信息。
40.在对mysql数据库进行冷热分离之后,如图1所示,mysql数据库可以包括原单库单表形式的第一数据库101和分库分表形式的第二数据库102。其中,第一数据库101可以用于存储实时订单数据、历史未闭环的订单数据以及尚未迁移至第二数据库中的历史已闭环的订单数据,第二数据库102可以用于存储历史的已闭环的冷数据。
41.可以理解的是,在第一数据库101中,由于每张单表存储的数据类型不同,因此不同的单表可以是大数据量表,也可以是小数据量表。在第二数据库102中,针对第一数据库101中的大数据量单表进行了分库分表。以图1为例,第一数据库101中的大数据量单表a表
可以分为a0-a127共128张分表,第二数据库102可以分为db0、db1、db2和db3四个分库,每个分库包括32张上述分表。本发明中的mysql数据库冷热分离方案仅对大数据量单表进行分表,对小数据量表不做分表,也就是说,小数据量表对应的数据类型,依旧以单表形式存储在第一数据库中,在查询订单数据时,有可能既需查询第二数据库102中已分片的分表,也需查询第一数据库101中未分片的单表。
42.图2为本发明实施例提供的数据库冷热分离读写交互示意图。可以理解的是,本发明的数据库冷热数据分离方案,不是简单的按照订单数据的时间状态来分割,而是通过图2中所示的归档迁移模块103,定时扫描第一数据库101中的订单数据,以第一数据库101中的订单数据的时间状态和订单状态来进行区分,对于历史的已闭环的订单数据,才通过异构的方式迁移入第二数据库102中。这样,工作人员不仅可以根据实际的存储需求来自行设计分片表数量,从而解决订单数据的存储问题,同时也可保证对业务系统的改造量最小,在对业务系统改造时,只需要关心对存储在第二数据库102中的历史已闭环的订单数据读的场景,而不需要关心写操作。
43.基于上述图1和图2的介绍,本发明实施例提供一种订单数据查询方法,执行主体为计算机设备,该计算机设备可以是服务器,也可以是服务器集群。如图3所示,订单数据查询方法可以包括以下步骤s301-s306。
44.s301、获取查询请求,查询请求包括目标订单的订单编号,查询请求用于请求目标订单的订单数据。
45.其中,目标订单的多种类型的数据可以包括但不限于客户信息、位置信息、费用信息以及改动信息等,不同类型的数据的数据量不同。可以理解的是,在冷热分离后的mysql数据库中,订单数据可以是全部存储于第一数据库中,也可以是将一部分数据,例如小数据量表中的数据,存储于第一数据库中,将另一部分数据,例如大数据量单表中的数据,分片存储于第二数据库中。
46.具体的,计算机设备可以获取查询请求,查询请求可以包括目标订单的订单编号,查询请求可以用于请求目标订单的订单数据。
47.s302、在第一数据库未包括订单编号的情况下,通过动态数据源路由确定数据源为第二数据库,并从第二数据库中获取第一数据,第一数据为订单数据的部分数据。
48.可以理解的是,在第一数据库未包括订单编号的情况下,该订单编号对应的订单数据可以为已经迁移至冷数据库中的历史已闭环数据。该订单数据中的一部分数据可以以分片的形式存储在第二数据库中,另一部分数据则仍旧以单表形式存储在第一数据库中。第一数据库的表结构与第二数据库的表结构可以相同。
49.具体的,计算机设备可以在第一数据库未包括订单编号的情况下,通过动态数据源路由确定数据源为第二数据库,并通过切面切换数据源至第二数据库,从而可以从第二数据库中获取分片存储的第一数据。
50.s303、通过动态数据源路由确定第一数据库中的预设数据源,预设数据源用于指示第一数据库中的第i个表,i为正整数。
51.其中,预设数据源可以是针对未分片的表预设好的固定数据源。
52.具体的,计算机设备在查询未分片的表数据时,可以通过动态数据源路由确定第一数据库中的预设数据源,预设数据源可以用于指示第一数据库中的第i个表,i为正整数。
53.s304、将数据源从第二数据库切换为第一数据库的预设数据源。
54.s305、根据预设数据源,获取第二数据。
55.具体的,在确定第一数据库中的预设数据源之后,计算机设备可以通过切面切换数据源,将数据源从第二数据库切换为第一数据库的预设数据源,从而可以根据预设数据源,获取单表存储的第二数据。
56.s306、根据第一数据和第二数据,确定订单数据。
57.具体的,计算机设备可以将上述步骤中获取的第一数据和第二数据进行拼接组合,从而得到完整的订单数据。
58.本实施例中,计算机设备通过获取查询请求,在第一数据库未包括订单编号的情况下,先通过动态数据源路由确定数据源为第二数据库,并从第二数据库中获取第一数据,再通过动态数据源路由确定第一数据库中的预设数据源,将数据源从第二数据库切换为第一数据库的预设数据源,而后根据预设数据源,获取第二数据,最后根据第一数据和第二数据,确定订单数据。其中,第一数据为订单数据的部分数据,预设数据源用于指示第一数据库中的第i个表,i为正整数。本发明将顶层数据源路由与预设数据源路由结合,实现了对冷热分离的mysql数据库中的订单数据查询,基于此,在对mysql数据库进行冷热分离改造时,可以保证对业务逻辑无修改,从而提高了mysql数据库的冷热分离的效率,节省了人力资源,同时还降低了mysql数据库的改造风险。
59.在一种可能的实现方式中,在上述实施例的基础上,上述第二数据库采用sharding-jdbc结构框架,第一数据包括多种类型的数据,上述步骤s302,包括:
60.s401、根据订单编号,确定第二数据库中的n个表,从n个表中获取每个类型的数据;
61.可以理解的是,第二数据库中所存储的每个类型的数据,是以分片的形式存储在多个分表中的。以图1为例,原先以单表形式存储在第一数据库101中的a表中的数据,经过冷热分离数据迁移后,可以以分片的形式分别存储在db0数据库的a0-a31分表中。
62.具体的,计算机设备根据订单编号,可以确定第二数据库中,用于存储分片数据的n个表,并从n个表中获取每个类型的数据。
63.s402、根据每个类型的数据确定第一数据。
64.具体的,计算机设备可以将从n个表中获取的每个类型的数据进行拼接组装,从而得到第一数据。
65.本实施例中,第二数据库采用sharding-jdbc结构框架,计算机设备根据订单编号,确定第二数据库中的n个表,并从n个表中获取每个类型的数据,而后根据每个类型的数据确定第一数据,本实施例由sharding-jdbc结构框架提供分片路由支持,实现了对分片的订单数据的查询和读写分离。
66.在一种可能的实现方式中,在上述实施例的基础上,上述步骤s305,具体包括:根据所述预设数据源指示的第i个表,在所述第i个表中获取所述订单编号对应的所述第二数据。
67.其中,第i个表为未分片的单表。
68.具体的,计算机设备可以根据所述预设数据源指示的第i个表,在所述第i个表中获取所述订单编号对应的所述第二数据。可以理解的是,预设数据源可以有多个,分别指示
不同的未分片的单表。
69.本实施例中,根据所述预设数据源指示的第i个表,在所述第i个表中获取所述订单编号对应的所述第二数据,实现了对本发明中冷热分离后的mysql数据库中的订单数据的查询,基于此,在对业务逻辑无修改的同时,提高了mysql数据库的冷热分离的效率,节省了人力资源,同时降低mysql数据库的改造风险。
70.在一种可能的实现方式中,在上述实施例的基础上,上述订单数据查询方法,还包括:在第一数据库中包括订单编号的情况下,通过动态数据源路由确定数据源为第一数据库,并从第一数据库获取订单数据。
71.可以理解的是,在第一数据库中包括订单编号的情况时,表示订单数据中的所有类型的数据均以单表的形式存储在第一数据库中。
72.具体的,计算机设备在第一数据库中包括订单编号的情况下,可以通过动态数据源路由确定数据源为第一数据库,并通过切面切换数据源,将数据源切换为第一数据库,从第一数据库中获取完整的订单数据。
73.本实施例中,计算机设备在第一数据库中包括订单编号的情况下,通过动态数据源路由确定数据源为第一数据库,并通过切面切换数据源,将数据源切换为第一数据库,从第一数据库中获取完整的订单数据,从而实现对本发明中冷热分离后的mysql数据库中的订单数据的查询,基于此,在对业务逻辑无修改的同时,提高了mysql数据库的冷热分离的效率,节省了人力资源,同时降低mysql数据库的改造风险。
74.在一种可能的实现方式中,在上述实施例的基础上,上述步骤s303,包括:
75.s501、获取预存的注解信息。
76.s502、通过注解信息确定预设数据源。
77.其中,计算机设备可以在需要选择数据源的业务逻辑中添加注解信息,注解信息中可以包含预设数据源的标识。
78.具体的,计算机设备可以通过切面拦截带有注解信息的业务逻辑,获取预存的注解信息,并得到注解信息中包含的预设数据源的标识,而后再通过解析数据源标识得到数据源标识值,将数据源标识值存入与数据源表示对应的线程上下文环境变量中,从而使得业务逻辑在执行时,可以根据线程上下文环境变量选择预设的数据源。
79.本实施例中计算机设备通过获取预存的注解信息,通过注解信息获取预设数据源,实现了数据源的切换,由于注解信息不改变原有业务逻辑,因此对业务逻辑的侵入较小,从而使得计算机设备可以高效并且低风险的完成数据源的切换。
80.上述主要从计算机设备的角度对本发明实施例提供的方案进行了介绍。可以理解的是,计算机设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
81.图4示出了一种订单数据查询装置的组成示意图,如图4所示,该订单数据查询装置可以包括:接收模块41、第一路由模块42、第二路由模块43、切换模块44、获取模块45、确
定模块46。
82.接收模块41,用于获取查询请求,查询请求包括目标订单的订单编号,查询请求用于请求目标订单的订单数据。
83.第一路由模块42,用于在第一数据库未包括订单编号的情况下,通过动态数据源路由确定数据源为第二数据库,并从第二数据库中获取第一数据,第一数据为订单数据的部分数据.
84.第二路由模块43,用于通过动态数据源路由确定第一数据库中的预设数据源,预设数据源用于指示第一数据库中的第i个表,i为正整数。
85.切换模块44,用于将数据源从第二数据库切换为第一数据库的预设数据源。
86.获取模块45,用于根据预设数据源,获取第二数据。
87.确定模块46,用于根据第一数据和第二数据,确定订单数据。
88.可选的,第二数据库采用sharding-jdbc结构框架,第一数据包括多种类型的数据,第一路由模块42,具体用于:根据订单编号,确定第二数据库中的n个表,从n个表中获取每个类型的数据;根据每个类型的数据确定第一数据。
89.可选的,获取模块45,具体用于:根据预设数据源指示的第i个表,在第i个表中获取订单编号对应的第二数据。
90.可选的,第一路由模块42,还用于在第一数据库中包括订单编号的情况下,通过动态数据源路由确定数据源为第一数据库,并从第一数据库获取订单数据。
91.可选的,第二路由模块43,具体用于:获取预存的注解信息;通过注解信息确定预设数据源。
92.本发明实施例提供的订单数据查询装置,用于执行上述订单数据查询方法,因此可以达到与上述订单数据查询方法相同的效果。
93.本发明还提供一种计算机设备,该计算机设备包括:处理器和存储器。存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当处理器执行计算机指令时,计算机设备执行本发明前述实施方式提供的订单数据查询方法。
94.本发明还提供一种计算机可读存储介质,其上存储有计算机指令,用于在执行时实现本发明前述实施方式提供的订单数据查询方法。
95.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献