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

数据查询方法、装置、计算机设备及介质与流程

2022-11-30 15:27:40 来源:中国专利 TAG:


1.本技术涉及大数据数据访问技术领域,特别是涉及一种数据查询方法、装置、计算机设备、存储介质和计算机程序产品。


背景技术:

2.随着科学技术的发展,出现了大数据技术,人们可以基于大数据技术实现对海量数据的采集、存储、分析与处理。
3.在传统的大数据技术中,针对数据存储这一部分来说,一般是采用单数据库的方式来实现数据的存储。单数据库存储是指的是同一类型的业务的功能表,全部署在同一个数据库中,这种设计方便部署,能节省数据库成本,也易于开发。
4.然而,随着业务的不断发展、业务量的不断增加,单数据库会逐渐出现性能上的瓶颈,基于单数据库存储的数据在进行数据查询时,由于单数据库中存储了海量的数据,整个数据查询反馈效率会降低,其无法实现高效的数据查询。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种高效的数据查询方法、装置、计算机设备、存储介质和计算机程序产品。
6.第一方面,本技术提供了一种数据查询方法。所述方法包括:
7.获取数据查询请求;
8.识别所述数据查询请求中携带的用户id;
9.根据所述用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
10.在确定的所述数据库分库中查询所述用户id对应的用户数据。
11.在其中一个实施例中,所述根据所述用户id,确定数据库分库之前,还包括:
12.获取业务系统对应的历史业务量和总数据库性能参数;
13.根据所述历史业务量和所述总数据库性能参数,确定所述总数据库的需分库数量;
14.根据所述需分库数量,将所述总数据库划分为多个数据库分库。
15.在其中一个实施例中,所述根据所述需分库数量,将所述总数据库划分为多个数据库分库包括:
16.识别所述总数据库中与不同用户id关联的用户数据;
17.基于用户id,将所述总数据库划分为多个数据库分库;
18.所述根据所述需分库数量,将所述总数据库划分为多个数据库分库之后,还包括:
19.将所述与不同用户id关联的用户数据分别划分至不同的数据库分库。
20.在其中一个实施例中,所述用户id包括用户号;所述基于用户id,将所述与不同用户id关联的用户数据分别划分至不同的数据库分库包括:
21.根据所述多个数据库分库的数量对所述用户号进行取模;
22.根据取模结果,将所述与不同用户id关联的用户数据分别划分至不同的数据库分库。
23.在其中一个实施例中,所述基于用户id,将所述与不同用户id关联的用户数据分别划分至不同的数据库分库之前,还包括:
24.识别所述与不同用户id关联的用户数据中与用户id直接关联数据、和与用户id间接关联数据;
25.根据所述与用户id直接关联数据的构建第一表结构的数据表,根据所述与用户id间接关联数据的构建第二表结构的数据表;
26.在不同的数据库分库中分别构建相同的第一表结构的数据表和第二表结构的数据表。
27.在其中一个实施例中,所述根据所述历史业务量和所述总数据库性能参数,确定所述总数据库的需分库数量包括:
28.根据所述历史业务量,获取峰值业务量;
29.基于所述峰值业务量以及所述总数据库性能参数,获取所述总数据库对应的db单元占用率;
30.根据所述db单元占用率与预设冗余设置对应的db单元占用率阈值,确定所述总数据库的需分库数量。
31.在其中一个实施例中,所述根据所述用户id,确定数据库分库之前,还包括:
32.当所述数据查询请求中未携带用户id时,提取所述数据查询请求中携带的查询字段;
33.根据提取的所述查询字段在预设索引库中查询获取用户id,所述预设索引库中存储有不同查询字段与用户id的映射关系。
34.第二方面,本技术还提供了一种数据查询装置。所述装置包括:
35.请求获取模块,用于获取数据查询请求;
36.id识别模块,用于识别所述数据查询请求中携带的用户id;
37.分库识别模块,用于根据所述用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
38.数据查询模块,用于在确定的所述数据库分库中查询所述用户id对应的用户数据。
39.在其中一个实施例中,上述数据查询装置还包括分库模块,用于获取业务系统对应的历史业务量和总数据库性能参数;根据所述历史业务量和所述总数据库性能参数,确定所述总数据库的需分库数量;根据所述需分库数量,将所述总数据库划分为多个数据库分库。
40.在其中一个实施例中,所述分库模块还用于识别所述总数据库中与不同用户id关联的用户数据;基于用户id,将所述与不同用户id关联的用户数据分别划分至不同的数据库分库。
41.在其中一个实施例中,所述用户id包括用户号;所述分库模块还用于对所述用户号进行取模;根据取模结果,将所述与不同用户id关联的用户数据分别划分至不同的数据
库分库。
42.在其中一个实施例中,所述分库模块还用于识别所述与不同用户id关联的用户数据中与用户id直接关联数据、和与用户id间接关联数据;根据所述与用户id直接关联数据的构建第一表结构的数据表,根据所述与用户id间接关联数据的构建第二表结构的数据表;在不同的数据库分库中分别构建相同的第一表结构的数据表和第二表结构的数据表。
43.在其中一个实施例中,所述分库模块还用于根据所述历史业务量,获取峰值业务量;基于所述峰值业务量以及所述总数据库性能参数,获取所述总数据库对应的db单元占用率;根据所述db单元占用率与预设冗余设置对应的db单元占用率阈值,确定所述总数据库的需分库数量。
44.在其中一个实施例中,上述数据查询装置还包括索引模块,用于当所述数据查询请求中未携带用户id时,提取所述数据查询请求中携带的查询字段;根据提取的所述查询字段在预设索引库中查询获取用户id,所述预设索引库中存储有不同查询字段与用户id的映射关系。
45.第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
46.获取数据查询请求;
47.识别所述数据查询请求中携带的用户id;
48.根据所述用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
49.在确定的所述数据库分库中查询所述用户id对应的用户数据。
50.第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
51.获取数据查询请求;
52.识别所述数据查询请求中携带的用户id;
53.根据所述用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
54.在确定的所述数据库分库中查询所述用户id对应的用户数据。
55.第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
56.获取数据查询请求;
57.识别所述数据查询请求中携带的用户id;
58.根据所述用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
59.在确定的所述数据库分库中查询所述用户id对应的用户数据。
60.上述数据查询方法、装置、计算机设备、存储介质和计算机程序产品,获取数据查询请求;识别所述数据查询请求中携带的用户id;根据所述用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;在确定的所述数据库分库中查询所述用户id对应的用户数据。整个过程中,一方面,采用数据库分库的方式来存储数据,以便提高后续查询效率;另一方面,每个数据库分库均包括与用户id关联、相同表结构
的数据数据表,因此可以从每个确定的数据分库中直接查询出用户id对应的用户数据,而无需通过多个数据库分库关联查询。在进行数据查询时,可以直接根据数据查询请求中携带的用户id确定数据库分库,再在确定的数据库分库中进行准确的数据查询,而无需在多个数据库分库中关联查询,因此能够显著提升数据查询效率,即整个方案可以实现高效的数据查询。
附图说明
61.图1为一个实施例中数据查询方法的应用环境图;
62.图2为一个实施例中数据查询方法的流程示意图;
63.图3为另一个实施例中数据查询方法的流程示意图;
64.图4为一个应用实例中数据查询方法的交互场景示意图;
65.图5为一个应用实例中数据查询方法的流程示意图;
66.图6为一个实施例中数据查询装置的结构框图;
67.图7为一个实施例中计算机设备的内部结构图。
具体实施方式
68.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
69.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。本技术技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。本技术实施例提供的数据查询方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。用户在终端102侧操作,输入自身所需查询的数据,终端102生成数据查询请求,发送数据查询请求至服务器104,服务器104获取数据查询请求;识别数据查询请求中携带的用户id;根据用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;在确定的数据库分库中查询用户id对应的用户数据。进一步的,服务器104可以将查询到的用户数据反馈至终端102,终端102再将查询到的用户数据显示。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
70.在一个实施例中,如图2所示,提供了一种数据查询方法。方法包括:
71.s200:获取数据查询请求。
72.用户可以在终端侧进行操作,终端响应用户操作,生成数据查询请求,终端将生成的数据查询请求上传至服务器。具体来说,用户a需要查询历史订单,则用户a终端上操作,点击历史订单查询按钮,终端生成历史订单查询请求,终端将历史订单查询请求发送至服
务器。另外,在实际应用中,用户还可以根据终端上界面提示信息,输入相关信息,例如输入查询时间、查询条件等;终端杆响应用户操作,分析用户输入数据,将用户输入数据封装成请求报文,终端将该请求报文上传至服务器。
73.s400:识别数据查询请求中携带的用户id。
74.识别该数据查询请求中携带的用户id。用户id是用于区分用户身份的标识信息,其具有唯一性,即不同的用户对应的用户id不同。具体来说,用户id具体可以包括用户身份号码、用户手机号码、在业务办理时给用户分配的唯一账号、在用户注册时给用户分配的唯一客户号等。
75.s600:根据用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表。
76.数据库分库是由总数据库进行分库处理之后得到的分库。具体来说,总数据库包含有海量的用户数据,若直接从总数据库中进行数据查询,受限于总数据库性能的限制,其数据查询效率会随着存储的数据量而下降,针对该情况,可以设置多个数据库分库,将总数据库中的数据划分至不同的数据分库,具体划分过程可有基于用户id进行,即基于用户id按照一定的规则将不同的用户数据存储至不同的数据库分库中。在进行数据查询时,可以根据用户id确定数据库分库。在不同的数据库分库中均包括与用户id关联、且表结构相同的数据表,因此在不同的数据库分库中均可以查找到与用户id关联的数据,并且由于表结构相同屏蔽表结构的不同带来的影响,避免相同的业务功能代码在不同数据库分库执行的结果不同。
77.s800:在确定的数据库分库中查询用户id对应的用户数据。
78.在s600确定数据库分库之后,在确定的数据库分库中查询用户id对应的用户数据。一方面由于数据库分库中至存储部分的数据,其数据存储量相较于未分库之前的总数据库而言数据存储量大大减小,在进行数据查询数据数据库分库在有限的性能下能够更快的查询到数据;另一方面,由于是在确定的数据库分库中进行数据查询,并且确定的数据库分库中明确包含有与用户id对应的数据的,缩小了数据查询范围,因此,能够更进一步提升数据查询效率,即最终能够显著提升数据查询效率。
79.上述数据查询方法,获取数据查询请求;识别所述数据查询请求中携带的用户id;根据所述用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;在确定的所述数据库分库中查询所述用户id对应的用户数据。整个过程中,一方面,采用数据库分库的方式来存储数据,以便提高后续查询效率;另一方面,每个数据库分库均包括与用户id关联、相同表结构的数据数据表,因此可以从每个确定的数据分库中直接查询出用户id对应的用户数据,而无需通过多个数据库分库关联查询,整个方案可以实现高效的数据查询。
80.如图3所示,在其中一个实施例中,s600之前,还包括:
81.s520:获取业务系统对应的历史业务量和总数据库性能参数;
82.s540:根据历史业务量和总数据库性能参数,确定总数据库的需分库数量;
83.s560:根据需分库数量,将总数据库划分为多个数据库分库。
84.历史业务量是指历史记录中业务系统处理的业务量,例如银行系统处理存/取款的业务量。总数据库性能参数用于表征总数据库数据处理性能的参数,其具体可以基于总
数据库的硬件性能、组成架构等来得到,具体可以是总数据的算力、每秒运算次数等属性参数来体现。
85.在实际应用中,分库数量过少,会造成单个分数据库数据处理压力过大,不利于后期业务的拓展;分库数量过多,则会增加数据库构建的硬件成本与维护成本,因此,需要合理确定出分库数量。在这里,根据历史业务量和总数据性能参数合理确定出总数据的需分库数量,以平衡数据库分库的性能与成本需求。具体来说,可以基于历史业务量来分析出历史记录中峰值业务量,根据峰值业务量和总数据库性能评估需分库的数量。在确定出需分库数量之后,根据需分库数量,将总数据库划分为多个数据库分库。
86.在其中一个实施例中,根据需分库数量,将总数据库划分为多个数据库分库包括:识别总数据库中与不同用户id关联的用户数据;基于用户id,将总数据库划分为多个数据库分库;根据需分库数量,将总数据库划分为多个数据库分库之后,还包括:将与不同用户id关联的用户数据分别划分至不同的数据库分库。
87.在本实施例中,先基于用户id将总数据库划分为多个数据数据库分库,再基于用户id来将不同的用户数据划分至不同的数据库分库中。具体来说,整个划分过程首先需要识别出总数据库中与不同用户id关联的用户数据,即识别与不同用户id对应的用户数据,将每个用户id对应的用户数据按照一定规则划分至不同的数据库分库中。一定的规则具体可以是按照随机分配的方式将不同用户id对应的用户数据划分至不同的数据库分库;还可以是采用取模的方式,按照不同的用户id将用户数据分别划分至不同的数据库分库。
88.在其中一个实施例中,用户id包括用户号;基于用户id,将与不同用户id关联的用户数据分别划分至不同的数据库分库包括:
89.根据多个数据库分库的数量对用户号进行取模,将与不同用户id关联的用户数据分别划分至不同的数据库分库。
90.在本实施例中,用户id包括用户号,用户号是指在用户注册时业务系统给用户分配的唯一编号,例如银行系统给用户分配的银行客户号。取模运算是求两个数相除的余数,余数不同,则存不同的分库。例如需分库数量为8,即就可以划分为8个数据库分库,则将用户号对8取模,余1则存数据库分库1、余2则存数据库分库2,
……
。进一步的,后续同一用户对应的用户数据将直接存储至对应划分的数据库分库。
91.在上述实施例中,采取相同的规则将与不同用户id关联的用户数据分别划分至不同的数据库分库中,保证该用户id所对应的用户的所有分库信息存在同一个数据库分库中,保证每个数据库分库的数据完全独立,所有的数据库分库的信息汇总起来就是全量的数据库信息,不存在遗漏和重合。
92.在其中一个实施例中,基于用户id,将与不同用户id关联的用户数据分别划分至不同的数据库分库之前,还包括:
93.识别与不同用户id关联的用户数据中与用户id直接关联数据、和与用户id间接关联数据;根据与用户id直接关联数据的构建第一表结构的数据表,根据与用户id间接关联数据的构建第二表结构的数据表;在不同的数据库分库中分别构建相同的第一表结构的数据表和第二表结构的数据表。
94.在用户数据中有与用户id直接关联的数据,例如与用户id直接关联的用户姓名,基于直接关联数据可以构建出第一表结构的数据表,可以理解的由于在第一表结构的数据
表中是存储有用户id直接关联的数据,因此,可以基于用户id直接查询得出关联的数据。另外,在用户数据中还存在有与用户id间接关联的数据,这里间接关联是指这部分数据与用户id直接不存在直接的映射关系,需要以其他类型数据(信息)作为“媒介”才能与用户id关联上,例如用户id与用户姓名直接关联,而用户姓名与用户手机号码直接关联,则用户手机号码则属于与用户id间接关联的数据,基于间接关联数据可以构建出第二表结构的数据表。在不同的数据库分库中分别构建相同的第一表结构的数据表和第二表结构的数据表,以便后续不同数据分库中可以采用相同的规则来查询数据,提高数据查询的效率与准确性。
95.在上述实例中,在每一个数据库分库都创建相同表结构的数据表,是数据库分库的基础,屏蔽表结构的不同带来的影响,避免相同的业务功能代码在不同数据库分库执行的结果不同。
96.在其中一个实施例中,根据历史业务量和总数据库性能参数,确定总数据库的需分库数量包括:
97.根据历史业务量,获取峰值业务量;基于峰值业务量以及总数据库性能参数,获取总数据库对应的db单元占用率;根据db单元占用率与预设冗余设置对应的db单元占用率阈值,确定总数据库的需分库数量。
98.预设冗余设置对应的db单元占用率阈值预先设定的值,其用于表征在整个数据库存储环境下所能忍受的db单元占用率最大值,若db单元占用率大于该阈值,则表明当前数据库的负载压力较大,需要减小数据库的负载压力,即需要对数据库进行分库或者需要提高数据库中db单元配置。在这里,是考虑采用分库的方式来减小数据库的负载压力。具体来说,首先分析历史业务数据,获取峰值业务量,基于峰值业务量以及总数据库性能参数来判断在业务峰值条件下总数据对应的db单元占用率,若db单元占用率大于预设冗余设置对应的db单元占用率阈值,则表明需要对总数据库进行分库,以降低总数据的负载压力。可以理解的是,如果一个数据库变成两个分库的话,对于单个数据的负载压力就会减少50%时,因此,可以根据db单元占用率与预设冗余设置对应的db单元占用率阈值确定需分库数量,即确定当db单元占用率不大于预设冗余设置对应的db单元占用率阈值时的分库数量。
99.在其中一个实施例中,根据用户id,确定数据库分库之前,还包括:
100.当数据查询请求中未携带用户id时,提取数据查询请求中携带的查询字段;根据提取的查询字段在预设索引库中查询获取用户id,预设索引库中存储有不同查询字段与用户id的映射关系。
101.当数据查询请求中未携带用户id时,表明本次数据查询无法直接基于用户id来获取到用户数据,此时提取数据查询请求中携带的查询字段,基于预设索引库查询查询字段对应的用户id。具体来说,查询字段是与用户关联的字段、且高频查询的字段,例如其可以为手机号码等。预设索引库是预先构建的具有索引功能的数据库,其存储有不同查询字段与用户id的映射关系,即基于查询字段可以在预设索引库中查询到用户id。在本实施例中,通过预设索引库的设计,对于高频业务需要高频查询的字段,增加索引映射关系,以更快根据信息查询到对应的用户id,进而得到查询的用户数据。
102.以应用于银行业务系统为例,用户id为银行客户号。预先构建索引库,可以通过常用的查询字段索引到敌营的银行客户号。具体来说,客户在前端(终端)操作,客户输入手机
号,需要查询客户的其他信息,为了提高效率可以设计手机号到银行客户号的索引表,保存全量的手机号到银行客户号的映射关系,在客户输入手机号后,首先查询该索引表获取到银行客户号,再根据银行客户号取模,查找对应分库,以获取客户的其他详细信息。可以理解的是,如果没有索引库的设计,则需要凭手机号查询所有的分库才知道有无对应的数据,大大降低了分库的速度,失去了分库的意义。另外,值得一提的是,要保证索引库中的手机号信息与分库中的手机号信息同步更新,才能保证通过手机号查询索引库的结果和手机号查询分库的结果是一致的。
103.在实际应用中,比如使用手机号登录手机银行的业务,就需要实现传入一个手机号查询客户是否签约手机银行渠道的功能。至少需要构建3种不同类型的数据表,第一张是索引库中手机号到银行客户号的手机号索引表,记录了所有银行客户号所对应的手机号的关系;第二张是分库中银行客户号到签约渠道的签约信息表,记录了分库后部分银行客户号所对应签约的渠道的关系,如这个银行客户号是否有签约手机银行渠道以及登录的密码;第三张是分库中银行客户号到客户信息的客户信息表,记录了分库后部分银行客户号到详细的客户信息的关系,如客户的姓名,手机号,证件信息等,该表中银行客户号与手机号的信息,必须与索引表中的信息一一匹配。这样一来,客户输入手机号与密码后,首先凭手机号查询手机号索引表,获取该手机号对应的银行客户号,再对银行客户号取模得知数据所在的分库,查询对应的分库中的渠道签约表,判断是否有签约手机银行,如果没有签约,则登录失败,如果有签约,则对比登录密码字段,密码正确,才登陆成功。登陆成功后,查找客户信息表,返回客户的姓名等相关信息。
104.为详细说明本技术数据查询方法的技术方案,下面将以应用于银行业务系统,进行客户信息查询为实例详细说明整个方案。整个方案具体的交互示意图如图4所示,整个交互流程如图5所示,包括以下步骤:
105.1、用户在前端操作,用户根据界面提示输入相关信息;
106.2、前端分析用户输入数据,将输入数据封装成请求报文,发送请求报文至服务器;
107.3、服务器中业务逻辑层,分析前端送入数据,组装数据库索引的查询语句;
108.4、数据库操作层根据数据库配置信息,访问银行客户号索引库,获取银行客户号;
109.5、数据库返回查询到的银行客户号;
110.6、业务逻辑层获取银行客户号,组成数据分库查询语句;
111.7、数据库操作层根据银行客户号取模,确定查询的数据库分库;
112.8、数据库返回查询语句,查询到该银行客户号的相关信息;
113.9、业务逻辑层执行业务相关逻辑代码;
114.10、将处理后的信息封装成返回报文,返回前端;
115.11、前端解析返回报文,并将解析后的报文数据呈现给用户;
116.12、用户查看返回界面。
117.应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤
或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
118.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的数据查询方法的数据查询装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据查询装置实施例中的具体限定可以参见上文中对于数据查询方法的限定,在此不再赘述。
119.在一个实施例中,如图6所示,提供了一种数据查询装置,包括:
120.请求获取模块200,用于获取数据查询请求;
121.id识别模块400,用于识别数据查询请求中携带的用户id;
122.分库识别模块600,用于根据用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
123.数据查询模块800,用于在确定的数据库分库中查询用户id对应的用户数据。
124.上述数据查询装置,获取数据查询请求;识别所述数据查询请求中携带的用户id;根据所述用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;在确定的所述数据库分库中查询所述用户id对应的用户数据。整个过程中,一方面,采用数据库分库的方式来存储数据,以便提高后续查询效率;另一方面,每个数据库分库均包括与用户id关联、相同表结构的数据数据表,因此可以从每个确定的数据分库中直接查询出用户id对应的用户数据,而无需通过多个数据库分库关联查询。在进行数据查询时,可以直接根据数据查询请求中携带的用户id确定数据库分库,再在确定的数据库分库中进行准确的数据查询,而无需在多个数据库分库中关联查询,因此能够显著提升数据查询效率,即整个方案可以实现高效的数据查询。
125.在其中一个实施例中,上述数据查询装置还包括分库模块,用于获取业务系统对应的历史业务量和总数据库性能参数;根据历史业务量和总数据库性能参数,确定总数据库的需分库数量;根据需分库数量,将总数据库划分为多个数据库分库。
126.在其中一个实施例中,分库模块还用于识别总数据库中与不同用户id关联的用户数据;基于用户id,将总数据库划分为多个数据库分库;将与不同用户id关联的用户数据分别划分至不同的数据库分库。
127.在其中一个实施例中,用户id包括用户号;分库模块还用于根据多个数据库分库的数量对用户号进行取模;根据取模结果,将与不同用户id关联的用户数据分别划分至不同的数据库分库。
128.在其中一个实施例中,分库模块还用于识别与不同用户id关联的用户数据中与用户id直接关联数据、和与用户id间接关联数据;根据与用户id直接关联数据的构建第一表结构的数据表,根据与用户id间接关联数据的构建第二表结构的数据表;在不同的数据库分库中分别构建相同的第一表结构的数据表和第二表结构的数据表。
129.在其中一个实施例中,分库模块还用于根据历史业务量,获取峰值业务量;基于峰值业务量以及总数据库性能参数,获取总数据库对应的db单元占用率;根据db单元占用率与预设冗余设置对应的db单元占用率阈值,确定总数据库的需分库数量。
130.在其中一个实施例中,上述数据查询装置还包括索引模块,用于当数据查询请求中未携带用户id时,提取数据查询请求中携带的查询字段;根据提取的查询字段在预设索
引库中查询获取用户id,预设索引库中存储有不同查询字段与用户id的映射关系。
131.上述数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
132.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待查询数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据查询方法。
133.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
134.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
135.获取数据查询请求;
136.识别数据查询请求中携带的用户id;
137.根据用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
138.在确定的数据库分库中查询用户id对应的用户数据。
139.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
140.获取业务系统对应的历史业务量和总数据库性能参数;
141.根据历史业务量和总数据库性能参数,确定总数据库的需分库数量;
142.根据需分库数量,将总数据库划分为多个数据库分库。
143.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
144.识别总数据库中与不同用户id关联的用户数据;基于用户id,将总数据库划分为多个数据库分库;将与不同用户id关联的用户数据分别划分至不同的数据库分库。
145.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
146.根据多个数据库分库的数量对用户号进行取模;根据取模结果,将与不同用户id关联的用户数据分别划分至不同的数据库分库。
147.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
148.识别与不同用户id关联的用户数据中与用户id直接关联数据、和与用户id间接关联数据;根据与用户id直接关联数据的构建第一表结构的数据表,根据与用户id间接关联数据的构建第二表结构的数据表;在不同的数据库分库中分别构建相同的第一表结构的数据表和第二表结构的数据表。
149.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
150.根据历史业务量,获取峰值业务量;基于峰值业务量以及总数据库性能参数,获取总数据库对应的db单元占用率;根据db单元占用率与预设冗余设置对应的db单元占用率阈
值,确定总数据库的需分库数量。
151.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
152.当数据查询请求中未携带用户id时,提取数据查询请求中携带的查询字段;根据提取的查询字段在预设索引库中查询获取用户id,预设索引库中存储有不同查询字段与用户id的映射关系。
153.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
154.获取数据查询请求;
155.识别数据查询请求中携带的用户id;
156.根据用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
157.在确定的数据库分库中查询用户id对应的用户数据。
158.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
159.获取业务系统对应的历史业务量和总数据库性能参数;
160.根据历史业务量和总数据库性能参数,确定总数据库的需分库数量;
161.根据需分库数量,将总数据库划分为多个数据库分库。
162.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
163.识别总数据库中与不同用户id关联的用户数据;基于用户id,将总数据库划分为多个数据库分库;将与不同用户id关联的用户数据分别划分至不同的数据库分库。
164.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
165.根据多个数据库分库的数量对用户号进行取模;根据取模结果,将与不同用户id关联的用户数据分别划分至不同的数据库分库。
166.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
167.识别与不同用户id关联的用户数据中与用户id直接关联数据、和与用户id间接关联数据;根据与用户id直接关联数据的构建第一表结构的数据表,根据与用户id间接关联数据的构建第二表结构的数据表;在不同的数据库分库中分别构建相同的第一表结构的数据表和第二表结构的数据表。
168.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
169.根据历史业务量,获取峰值业务量;基于峰值业务量以及总数据库性能参数,获取总数据库对应的db单元占用率;根据db单元占用率与预设冗余设置对应的db单元占用率阈值,确定总数据库的需分库数量。
170.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
171.当数据查询请求中未携带用户id时,提取数据查询请求中携带的查询字段;根据提取的查询字段在预设索引库中查询获取用户id,预设索引库中存储有不同查询字段与用户id的映射关系。
172.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
173.获取数据查询请求;
174.识别数据查询请求中携带的用户id;
175.根据用户id,确定数据库分库,其中,不同的数据库分库包括与用户id关联、且表结构相同的数据表;
176.在确定的数据库分库中查询用户id对应的用户数据。
177.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
178.获取业务系统对应的历史业务量和总数据库性能参数;
179.根据历史业务量和总数据库性能参数,确定总数据库的需分库数量;
180.根据需分库数量,将总数据库划分为多个数据库分库。
181.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
182.识别总数据库中与不同用户id关联的用户数据;基于用户id,将总数据库划分为多个数据库分库;将与不同用户id关联的用户数据分别划分至不同的数据库分库。
183.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
184.根据多个数据库分库的数量对用户号进行取模;根据取模结果,将与不同用户id关联的用户数据分别划分至不同的数据库分库。
185.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
186.识别与不同用户id关联的用户数据中与用户id直接关联数据、和与用户id间接关联数据;根据与用户id直接关联数据的构建第一表结构的数据表,根据与用户id间接关联数据的构建第二表结构的数据表;在不同的数据库分库中分别构建相同的第一表结构的数据表和第二表结构的数据表。
187.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
188.根据历史业务量,获取峰值业务量;基于峰值业务量以及总数据库性能参数,获取总数据库对应的db单元占用率;根据db单元占用率与预设冗余设置对应的db单元占用率阈值,确定总数据库的需分库数量。
189.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
190.当数据查询请求中未携带用户id时,提取数据查询请求中携带的查询字段;根据提取的查询字段在预设索引库中查询获取用户id,预设索引库中存储有不同查询字段与用户id的映射关系。
191.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,
不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
192.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
193.以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献