基于人工智能的数据分片方法、装置、设备及介质与流程

文档序号:31051595发布日期:2022-08-06 07:35阅读:76来源:国知局
基于人工智能的数据分片方法、装置、设备及介质与流程

1.本技术涉及人工智能技术领域,尤其涉及一种基于人工智能的数据分片方法、装置、电子设备及存储介质。


背景技术:

2.传统的关系型数据库,比如常用的mysql都存在性能瓶颈,即在数据达到一定的量级之后,数据库的性能会显著下降,数据库的读写操作都会随之受到影响。而数据分片就是其中一种用于优化数据库性能的常见方式,由于单表/单库存在数据保存的性能瓶颈,因此可以将要保存的数据分散到多个库表中。
3.现有技术中通常根据待分片数据的数据量大小或者日期等单一方式对数据进行分片,然而大量的待分片数据对应多种不同的业务类型,且不同的待分片数据在数据库中被调用的频率并不相同,因此亟需一种更为灵活有效的数据分片方式来进行数据分片,从而提高数据库的数据调用效率。


技术实现要素:

4.鉴于以上内容,有必要提出一种基于人工智能的数据分片方法、装置、电子设备及存储介质,以解决如何提高数据库的数据调用效率这一技术问题。
5.本技术提供一种基于人工智能的数据分片方法,所述方法包括:
6.获取待分片数据的配置信息,所述配置信息包括待分片数据的数据量、建表语句和多个数据库;
7.依据业务类型对所述待分片数据进行分类获得分类数据,并基于所述配置信息将所述分类数据存储至分片表以作为第一分片数据;
8.接收数据读取请求以从所述分片表中读取目标数据,所述数据读取请求中携带有目标数据的关键字段;
9.统计历史目标数据中各关键字段的数量得到调用频率,并基于所述调用频率对所有的关键字段进行筛选得到热点字段数据集;
10.依据文本相似度算法计算所述第一分片数据与所述热点字段数据集中每一个关键字段的文本相似度得到语义相关度,并基于所述语义相关度对所述第一分片数据进行分片得到第二分片数据。
11.在一些实施例中,所述获取待分片数据的配置信息,所述配置信息包括待分片数据的数据量、建表语句和多个数据库,包括:
12.获取用户通过web界面输入的配置信息,所述待分片数据的数据量用于指示将所述待分片数据拆分成多少个分片数据;所述建表语句用于生成能够写入所述待分片数据的分片表;所述多个数据库用于存储所述待分片数据。
13.在一些实施例中,所述依据业务类型对所述待分片数据进行分类获得分类数据,并基于所述配置信息将所述分类数据存储至分片表以作为第一分片数据包括:
14.依据预设方式对每种业务类型的待分片数据设置不同的编码标签;
15.基于所述编码标签对所述待分片数据进行分类获得分类数据,并基于所述配置信息将同一类别的分类数据存储至同一分片表,不同类别的分类数据存储至不同的分片表,将所有存储至分片表中的分类数据作为第一分片数据。
16.在一些实施例中,所述接收数据读取请求以从所述分片表中读取目标数据,所述数据读取请求中携带有目标数据的关键字段包括:
17.接收数据读取请求得到所述数据读取请求中携带的目标数据的关键字段;
18.依据预先配制的路由规则和所述关键字段读取所述目标数据所在的路由地址,所述路由地址包括所述目标数据所在的分片表和数据库;
19.基于所述路由地址读取并反馈所述目标数据。
20.在一些实施例中,所述统计历史目标数据中各关键字段的数量得到调用频率,并基于所述调用频率对所有的关键字段进行筛选得到热点字段数据集包括:
21.统计历史目标数据中各关键字段的数量,并将各关键字段的数量与所有关键字段的总数量的比值作为所述调用频率;
22.对所述调用频率进行分类,并根据分类结果对所有的关键字段进行筛选得到热点字段数据集。
23.在一些实施例中,所述对所述调用频率进行分类,并根据分类结果对所有的关键字段进行筛选得到热点字段数据集包括:
24.计算所有的调用频率的误差平方和以确定所有的调用频率的有效分类数;
25.基于所述有效分类数对所有的调用频率进行分类得到多个调用频率类别;
26.计算各调用频率类别中包含的调用频率的平均值,选取最大平均值对应的调用频率类别,并将该调用频率类别中所有的调用频率对应的关键字段作为所述热点字段数据集。
27.在一些实施例中,所述依据文本相似度算法计算所述第一分片数据与所述热点字段数据集中每一个关键字段的文本相似度得到语义相关度,并基于所述语义相关度对所述第一分片数据进行分片得到第二分片数据包括:
28.依据文本相似度算法分别计算所述第一分片数据中每一个分类数据与所述热点字段数据集中每一个关键字段的文本相似度;
29.将所述热点字段数据集中每一个关键字段对应的调用频率作为特征权重,对所述特征权重和所述文本相似度进行加权求和以获取所述第一分片数据中每一个分类数据的语义相关度;
30.计算所述第一分片数据中所有的分类数据的语义相关度的平均值作为分片阈值,并基于所述分片阈值对所述第一分片数据进行分片得到第二分片数据。
31.本技术实施例还提供一种基于人工智能的数据分片装置,所述装置包括:
32.获取单元,用于获取待分片数据的配置信息,所述配置信息包括待分片数据的数据量、建表语句和多个数据库;
33.分类单元,用于依据业务类型对所述待分片数据进行分类获得分类数据,并基于所述配置信息将所述分类数据存储至分片表以作为第一分片数据;
34.读取单元,用于接收数据读取请求以从所述分片表中读取目标数据,所述数据读
取请求中携带有目标数据的关键字段;
35.筛选单元,用于统计历史目标数据中各关键字段的数量得到调用频率,并基于所述调用频率对所有的关键字段进行筛选得到热点字段数据集;
36.计算单元,用于依据文本相似度算法计算所述第一分片数据与所述热点字段数据集中每一个关键字段的文本相似度得到语义相关度,并基于所述语义相关度对所述第一分片数据进行分片得到第二分片数据。
37.本技术实施例还提供一种电子设备,所述电子设备包括:
38.存储器,存储至少一个指令;
39.处理器,执行所述存储器中存储的指令以实现所述的基于人工智能的数据分片方法。
40.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现所述的基于人工智能的数据分片方法。
41.本技术通过统计历史目标数据中各关键字段的数量对所有的关键字段进行筛选,然后计算所述待分片数据与所述热点字段数据集的文本相似度得到语义相关度,并基于所述语义相关度对所述分类数据进行分片,可以灵活筛选热点数据并对待分片数据中的热点数据进行分表存储,从而提高数据库的数据调用效率。
附图说明
42.图1是本技术所涉及的基于人工智能的数据分片方法的较佳实施例的流程图。
43.图2是本技术所涉及的基于人工智能的数据分片装置的较佳实施例的功能模块图。
44.图3是本技术所涉及的基于人工智能的数据分片方法的较佳实施例的电子设备的结构示意图。
45.图4是本技术所涉及的sse随k增加关系图。
具体实施方式
46.为了能够更清楚地理解本技术的目的、特征和优点,下面结合附图和具体实施例对本技术进行详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互结合。在下面的描述中阐述了很多具体细节以便于充分理解本技术,所述描述的实施例仅是本技术一部分实施例,而不是全部的实施例。
47.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
48.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
49.本技术实施例提供一种基于人工智能的数据分片方法,可应用于一个或者多个电子设备中,电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(application specific integrated circuit,asic)、可编程门阵列(field-programmable gate array,fpga)、数字处理器(digital signal processor,dsp)、嵌入式设备等。
50.电子设备可以是任何一种可与客户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(personal digital assistant,pda)、游戏机、交互式网络电视(internet protocol television,iptv)、智能式穿戴式设备等。
51.电子设备还可以包括网络设备和/或客户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloud computing)的由大量主机或网络服务器构成的云。
52.电子设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtual private network,vpn)等。
53.如图1所示,是本技术基于人工智能的数据分片方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
54.s10,获取待分片数据的配置信息,所述配置信息包括待分片数据的数据量、建表语句和多个数据库。
55.在一个可选的实施例中,所述获取待分片数据的配置信息,所述配置信息包括待分片数据的数据量、建表语句和多个数据库,包括:
56.获取用户通过web界面输入的配置信息,所述待分片数据的数据量用于指示将所述待分片数据拆分成多少个分片数据;所述建表语句用于生成能够写入所述待分片数据的分片表;所述多个数据库用于存储所述待分片数据。
57.该可选的实施例中,可以预先提供一个web界面来获取用户通过web界面输入的配置信息。其中,待分片数据的数据量即是一个单位大小,需要将待分片数据拆分成多个该数据量大小的分片数据。例如当一个待分片数据为1000gb,且预先在web界面配置的分片数据的数据量为50gb时,则该待分片数据可拆分为20个数据量为50gb的分片数据。
58.该可选的实施例中,获取用户在web界面输入的建表语句。其中,建表语句用于生成格式统一的分片表,并可相应的指定该分片表中用于分片的索引列。其中,索引列用于以列的形式存储所在分片表中的所有索引数据,所述索引数据可以是所述待分片数据的关键字段。另外,分片表用于写入分片数据,以得到在不同数据库存储数据都能保持格式统一的分片表。
59.该可选的实施例中,获取用户在web界面输入的多个数据库。其中,数据库是用户指定用于存储待分片数据的“仓库”,其存储对象的形式为表。因此本技术实施例中,需要将待分片数据写入分片表中,进而将分片表路由存储至不同数据库。
60.如此,可以基于web界面快速获取待分片数据的配置信息,为后续过程提供数据支撑,同时提高人机交互效率。
61.s11,依据业务类型对所述待分片数据进行分类获得分类数据,并基于所述配置信息将所述分类数据存储至分片表以作为第一分片数据。
62.在一个可选的实施例中,所述依据业务类型对所述待分片数据进行分类获得分类
数据,并基于所述配置信息将所述分类数据存储至分片表以作为第一分片数据包括:
63.s111,依据预设方式对每种业务类型的待分片数据设置不同的编码标签。
64.s112,基于所述编码标签对所述待分片数据进行分类获得分类数据,并基于所述配置信息将同一类别的分类数据存储至同一分片表,不同类别的分类数据存储至不同的分片表,将所有存储至分片表中的分类数据作为第一分片数据。
65.该可选的实施例中,应用程序在连续执行业务功能时,会不间断的写入待分片数据;这些待分片数据具体与该应用程序所展开的业务相关,在后续的业务中也或将需要用到,具有重要的利用价值,需要对其进行存储。而通常使用的存储方式为数据库存储,例如mysql、mycat等常用的数据。
66.该可选的实施例中,可依据预设方式对每种业务类型的待分片数据设置不同的编码标签,所述编码标签可以是字母、数字或者特殊符号,本方案对此不作具体限制。
67.该可选的实施例中,将具有同一编码标签的待分片数据归于同一个类别,从而得到多个类别的分类数据,然后将这些归类后的分类数据按照所述数据量拆分为多个分片数据之后,则执行将多个分片数据存储到多个数据库中。在设定上,数据库用来存储数据的对象为表,因此需要将分片数据写入表中,才能进行相应的存储业务。由此,可根据所述建表语句生成相应的分片表,再分别将属于同一类别的分片数据写入预先生成的相对应的分片表中,得到多个目标分片表,从而以分片表的形式将分片数据存储到数据库中,并将所有存储至分片表中的分类数据作为第一分片数据。
68.该可选的实施例中,向所述多个数据库中的一个数据库,依次存储多个目标分片表。若还剩余有未存储到数据库的目标分片表,则向所述多个数据库中除存储有所述目标分片表的数据库之外的一个数据库,继续存储所述目标分片表中剩余的目标分片表,直至所有的目标分片表均存储在数据库中。
69.该可选的实施例中,由于一个分片数据的数据量通常会很大,一个分片表或将无法写入一个完整的分片数据。因此,可使用多个分片表写入同一个分片数据,并对表格加以序号区分。例如:分片表1~分片表5000用于写入第一个分片数据;分片表5001~分片表10000用于写入第二个分片数据

以此类推。其中,同一分片表只存储具有相同编码标签的分片数据。
70.若第一个分片数据写入的分片表包括分片表1~分片表5000,理论上按“一库一片”的原则,这5000个分片表皆应该存储在同一个数据库中。但由于数据库承载量有限,如若待存储的分片表的数据量超出了数据库的承载量,则需要将超出承载量的部分分片表存储到另一个数据库中。当然,该方式仅作为可选的备用操作,因为数据库的承载量目前是巨大的,且还支持扩容操作。
71.如此,能有效的分散待分片数据的数据量,减小单台服务器资源所面临的读取/写入压力,使数据库具备良好的水平拓展功能。
72.s12,接收数据读取请求以从所述分片表中读取目标数据,所述数据读取请求中携带有目标数据的关键字段。
73.在一个可选的实施例中,所述接收数据读取请求以从所述分片表中读取目标数据,所述数据读取请求中携带有目标数据的关键字段包括:
74.s121,接收数据读取请求得到所述数据读取请求中携带的目标数据的关键字段。
75.s122,依据预先配制的路由规则和所述关键字段读取所述目标数据所在的路由地址,所述路由地址包括所述目标数据所在的分片表和数据库。
76.s123,基于所述路由地址读取并反馈所述目标数据。
77.该可选的实施例中,当出于业务需求,应用程序当前需要读取到目标数据时可发出相应的数据读取请求,其中,目标数据指所有的分类数据中的某一项数据。数据读取请求中携带有目标数据的关键字段,可通过对所述数据读取请求进行解析得到,同时,可以将所述关键字段作为所述目标数据的索引,即通过索引可直接找到相应的目标数据。
78.该可选的实施例中,基于所述关键字段,通过预先配置的路由规则读取目标数据所在路由地址,所述路由地址包括所述目标数据所在的分片表和数据库。其中,路由就相当于是一条路,而路由规则相当于路标,用于指示应用程序如何获取相应的数据库和分片表中的目标数据,因此需要预先通过编写脚本命令来设置相应的路由规则。
79.本方案提供了一种路由规则引擎,用于进行数据库缓存管理,本方案中可使用thingsboard规则引擎。其中,规则引擎的主要逻辑单元是规则节点,规则节点之间存在关联性,规则节点可以将消息路由到下一个指定的节点从而完成数据的读取工作。由此,在后续对数据进行读取时,可基于解析请求得到的关键字段,利用路由规则读取到目标数据所在路由地址,即目标数据所在的分片表和所在的数据库的位置,并根据所述路由地址读取并反馈所述目标数据。
80.该可选的实施例中,在读取到目标数据后,向相应的应用程序反馈该目标数据。需要说明的是,在特殊情况下,当应用程序需要读取的目标数据为多个,且分别存储在不同的分片表中时,则需要对读取到的多个目标数据进行聚合操作,得到聚合后的目标数据。因此,本技术实施例提供了一种sql解析聚合引擎,负责对处理应用程序的sql请求进行解析处理,并把处理得到的sql指令根据路由规则引擎进行拆分,并发处理多个分片表和多个数据库,得到执行结果后进行聚合操作,最终返回给应用程序需要的数据或操作结果。
81.如此,可根据数据读取请求中携带的关键字段对目标数据进行快速获取,提高目标数据的获取效率,同时可根据关键字段为后续过程分析热点数据提供数据支持。
82.s13,统计历史目标数据中各关键字段的数量得到调用频率,并基于所述调用频率对所有的关键字段进行筛选得到热点字段数据集。
83.在一个可选的实施例中,所述统计历史目标数据中各关键字段的数量得到调用频率,并基于所述调用频率对所有的关键字段进行筛选得到热点字段数据集包括:
84.s131,统计历史目标数据中各关键字段的数量,并将各关键字段的数量与所有关键字段的总数量的比值作为所述调用频率。
85.s132,对所述调用频率进行分类,并根据分类结果对所有的关键字段进行筛选得到热点字段数据集。
86.该可选的实施例中,首先对应用程序获取的历史目标数据中各关键字段的数量进行统计,并将每种关键字段的数量与所有关键字段的总数量的比值作为对应的关键字段的调用频率。
87.该可选的实施例中,可通过k均值聚类算法对所述调用频率进行分类。其中,k均值聚类算法是一种迭代求解的聚类分析算法,其步骤是,预先将所有的调用频率数据分为k组,并随机选取k个调用频率数据作为初始的聚类中心,然后计算每个调用频率数据与各个
聚类中心之间的距离,把每个调用频率数据分配给距离它最近的聚类中心。聚类中心以及分配给该聚类中心的所有调用频率数据就代表一个聚类。每分配一个调用频率数据,则该调用频率数据所在聚类的聚类中心会根据聚类中现有的所有调用频率数据被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)调用频率数据被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
88.该可选的实施例中,使用k均值聚类算法的前提是需要指定调用频率数据的分类数量k,随着分类数量的增大,所述调用频率会被划分的更加精细,每个类别的聚合程度会逐渐提高,对应的误差平方和sse会逐渐减小,因此本方案中通过计算不同分类数量下对应的误差平方和sse来获得合理的分类数量k。其中,误差平方和的计算式为:
[0089][0090]
其中,sse为误差平方和,ci是第i个调用频率类别,k为预设的调用频率分类数量,p为调用频率类别ci中的数据点,表示调用频率类别ci中所有的调用频率数据点的均值。
[0091]
示例性的,设调用频率的分类数量k为1,对应的调用频率数据为(10,20,30),则所有数据点的平均值为20,sse=(10-20)2+(20-20)2+(30-20)2=200,则计算出的误差平方和为200。
[0092]
该可选的实施例中,当k小于理想的分类数量时,由于k的增大会大幅增加每个调用频率的类别的聚合程度,故sse的下降幅度会很大,而当k到达理想的分类数量时,再增加k所得到的聚合程度会迅速变小,所以sse的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,因此可通过建立sse随k增加关系图从而确定出曲率最高的数据点所对应的k值,此时的k值即为理想的调用频率的分类数量。
[0093]
示例性的,如图4所示的sse随k增加关系图中,当k=4时所对应的数据点的曲率最大,因此最佳分类数量为k=4。
[0094]
该可选的实施例中,将最终确定的理想的调用频率的分类数量k作为所述有效分类数,并基于所述有效分类数通过k均值聚类算法对所述调用频率进行分类得到多个调用频率类别。
[0095]
该可选的实施例中,计算各调用频率类别中包含的调用频率的平均值,并选取最大平均值对应的调用频率类别后,将该调用频率类别中所有的调用频率对应的关键字段作为所述热点字段数据集。
[0096]
如此,可筛选得到分类数据中的热点数据,便于后续过程据此进行分表存储,从而对待分片数据进行准确分片。
[0097]
s14,依据文本相似度算法计算所述第一分片数据与所述热点字段数据集中每一个关键字段的文本相似度得到语义相关度,并基于所述语义相关度对所述第一分片数据进行分片得到第二分片数据。
[0098]
在一个可选的实施例中,所述依据文本相似度算法计算所述第一分片数据与所述热点字段数据集中每一个关键字段的文本相似度得到语义相关度,并基于所述语义相关度对所述第一分片数据进行分片得到第二分片数据包括:
[0099]
s141,依据文本相似度算法分别计算所述第一分片数据中每一个分类数据与所述热点字段数据集中每一个关键字段的文本相似度。
[0100]
s142,将所述热点字段数据集中每一个关键字段对应的调用频率作为特征权重,对所述特征权重和所述文本相似度进行加权求和以获取所述第一分片数据中每一个分类数据的语义相关度。
[0101]
s143,计算所述第一分片数据中所有的分类数据的语义相关度的平均值作为分片阈值,并基于所述分片阈值对所述第一分片数据进行分片得到第二分片数据。
[0102]
该可选的实施例中,所述文本相似度算法可使用向量空间模型(vsm)算法,vsm将所述第一分片数据中的各数据形式化为空间中的一个点,通过向量的形式给出,把对第一分片数据的处理简化为向量空间中向量的运算,降低了对所述第一分片数据中的分类数据进行文本相似度计算的复杂性。
[0103]
该可选的实施例中,通过vsm算法分别计算所述第一分片数据中每一个分类数据与所述热点字段数据集中每一个关键字段的文本相似度,然后将所述热点字段数据集中每一个关键字段对应的调用频率作为特征权重,对所述特征权重和所述文本相似度进行加权求和以获取所述第一分片数据中每一个分类数据的语义相关度。
[0104]
示例性的,热点数据集中共有4个关键字段a、b、c、d,通过vsm算法分别计算所述第一分片数据中分类数据e与4个关键字段a、b、c、d之间的文本相似度为0.6、0.2、0.1、0.3。其中4个关键字段a、b、c、d对应的调用频率为0.8、0.5、0.6、0.2,则通过加权求和进行计算得到所述第一分片数据中分类数据e的语义相关度为0.6
×
0.8+0.2
×
0.5+0.1
×
0.6+0.3
×
0.2=0.7。
[0105]
该可选的实施例中,计算所述第一分片数据中所有的分类数据的语义相关度的平均值作为分片阈值,并基于所述分片阈值对所述第一分片数据进行分片得到第二分片数据,具体过程为:将每一个分片表拆分为数据主表和数据从表,并将其中大于所述分片阈值的分类数据写入所述数据从表中,将其中不大于所述分片阈值的分类数据写入所述数据主表中。其中,在对每一个分片表拆分时,可以将每一个分片表作为数据主表,并选取一个不含有任何数据的分片表作为该分片表的数据从表。最终,将所有写入所述数据主表和所述数据从表中的第一分片数据作为第二分片数据,从而完成对待分片数据的数据分片过程。
[0106]
如此,可以灵活筛选热点数据并对分类数据中的热点数据进行分表存储,从而提高数据库的数据调用效率。
[0107]
请参见图2,图2是本技术基于人工智能的数据分片装置的较佳实施例的功能模块图。基于人工智能的数据分片装置11包括获取单元110、分类单元111、读取单元112、筛选单元113、计算单元114。本技术所称的模块/单元是指一种能够被处理器13所执行,并且能够完成固定功能的一系列计算机可读指令段,其存储在存储器12中。在本实施例中,关于各模块/单元的功能将在后续的实施例中详述。
[0108]
在一个可选的实施例中,获取单元110用于获取待分片数据的配置信息,所述配置信息包括待分片数据的数据量、建表语句和多个数据库。
[0109]
在一个可选的实施例中,所述获取待分片数据的配置信息,所述配置信息包括待分片数据的数据量、建表语句和多个数据库,包括:
[0110]
获取用户通过web界面输入的配置信息,所述待分片数据的数据量用于指示将所
述待分片数据拆分成多少个分片数据;所述建表语句用于生成能够写入所述待分片数据的分片表;所述多个数据库用于存储所述待分片数据。
[0111]
该可选的实施例中,可以预先提供一个web界面来获取用户通过web界面输入的配置信息。其中,待分片数据的数据量即是一个单位大小,需要将待分片数据拆分成多个该数据量大小的分片数据。例如当一个待分片数据为1000gb,且预先在web界面配置的分片数据的数据量为50gb时,则该待分片数据可拆分为20个数据量为50gb的分片数据。
[0112]
该可选的实施例中,获取用户在web界面输入的建表语句。其中,建表语句用于生成格式统一的分片表,并可相应的指定该分片表中用于分片的索引列。所述索引列中包含多个索引,所述索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的特殊数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单,索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。另外,分片表用于写入分片数据,以得到在不同数据库存储数据都能保持格式统一的分片表。
[0113]
该可选的实施例中,获取用户在web界面输入的多个数据库。其中,数据库是用户指定用于存储待分片数据的“仓库”,其存储对象的形式为表。因此本技术实施例中,需要将待分片数据写入分片表中,进而将分片表路由存储至不同数据库。
[0114]
在一个可选的实施例中,分类单元111用于依据业务类型对所述待分片数据进行分类获得分类数据,并基于所述配置信息将所述分类数据存储至分片表以作为第一分片数据。
[0115]
在一个可选的实施例中,所述依据业务类型对所述待分片数据进行分类获得分类数据,并基于所述配置信息将所述分类数据存储至分片表以作为第一分片数据包括:
[0116]
依据预设方式对每种业务类型的待分片数据设置不同的编码标签;
[0117]
基于所述编码标签对所述待分片数据进行分类获得分类数据,并基于所述配置信息将同一类别的分类数据存储至同一分片表,不同类别的分类数据存储至不同的分片表,将所有存储至分片表中的分类数据作为第一分片数据。
[0118]
该可选的实施例中,应用程序在连续执行业务功能时,会不间断的写入待分片数据;这些待分片数据具体与该应用程序所展开的业务相关,在后续的业务中也或将需要用到,具有重要的利用价值,需要对其进行存储。而通常使用的存储方式为数据库存储,例如mysql、mycat等常用的数据。
[0119]
该可选的实施例中,可依据预设方式对每种业务类型的待分片数据设置不同的编码标签,所述编码标签可以是字母、数字或者特殊符号,本方案对此不作具体限制。
[0120]
该可选的实施例中,将具有同一编码标签的待分片数据归于同一个类别,从而得到多个类别的分类数据,然后将这些归类后的分类数据按照所述数据量拆分为多个分片数据之后,则执行将多个分片数据存储到多个数据库中。在设定上,数据库用来存储数据的对象为表,因此需要将分片数据写入表中,才能进行相应的存储业务。由此,可根据所述建表语句生成相应的分片表,再分别将属于同一类别的分片数据写入预先生成的相对应的分片表中,得到多个目标分片表,从而以分片表的形式将分片数据存储到数据库中,并将所有存储至分片表中的分类数据作为第一分片数据。
[0121]
该可选的实施例中,向所述多个数据库中的一个数据库,依次存储多个目标分片
表。若还剩余有未存储到数据库的目标分片表,则向所述多个数据库中除存储有所述目标分片表的数据库之外的一个数据库,继续存储所述目标分片表中剩余的目标分片表,直至所有的目标分片表均存储在数据库中。
[0122]
该可选的实施例中,由于一个分片数据的数据量通常会很大,一个分片表或将无法写入一个完整的分片数据。因此,可使用多个分片表写入同一个分片数据,并对表格加以序号区分。例如:分片表1~分片表5000用于写入第一个分片数据;分片表5001~分片表10000用于写入第二个分片数据

以此类推。其中,同一分片表只存储具有相同编码标签的分片数据。
[0123]
若第一个分片数据写入的分片表包括分片表1~分片表5000,理论上按“一库一片”的原则,这5000个分片表皆应该存储在同一个数据库中。但由于数据库承载量有限,如若待存储的分片表的数据量超出了数据库的承载量,则需要将超出承载量的部分分片表存储到另一个数据库中。当然,该方式仅作为可选的备用操作,因为数据库的承载量目前是巨大的,且还支持扩容操作。
[0124]
在一个可选的实施例中,读取单元112用于接收数据读取请求以从所述分片表中读取目标数据,所述数据读取请求中携带有目标数据的关键字段。
[0125]
在一个可选的实施例中,所述接收数据读取请求以从所述分片表中读取目标数据,所述数据读取请求中携带有目标数据的关键字段包括:
[0126]
接收数据读取请求得到所述数据读取请求中携带的目标数据的关键字段;
[0127]
依据预先配制的路由规则和所述关键字段读取所述目标数据所在的路由地址,所述路由地址包括所述目标数据所在的分片表和数据库;
[0128]
基于所述路由地址读取并反馈所述目标数据。
[0129]
该可选的实施例中,当出于业务需求,应用程序当前需要读取到目标数据时可发出相应的数据读取请求,其中,目标数据指所有的分类数据中的某一项数据。数据读取请求中携带有目标数据的关键字段,可通过对所述数据读取请求进行解析得到,同时,可以将所述关键字段作为所述目标数据的索引,即通过索引可直接找到相应的目标数据。
[0130]
该可选的实施例中,基于所述关键字段,通过预先配置的路由规则读取目标数据所在路由地址,所述路由地址包括所述目标数据所在的分片表和数据库。其中,路由就相当于是一条路,而路由规则相当于路标,用于指示应用程序如何获取相应的数据库和分片表中的目标数据,因此需要预先通过编写脚本命令来设置相应的路由规则。
[0131]
本方案提供了一种路由规则引擎,用于进行数据库缓存管理,本方案中可使用thingsboard规则引擎。其中,规则引擎的主要逻辑单元是规则节点,规则节点之间存在关联性,规则节点可以将消息路由到下一个指定的节点从而完成数据的读取工作。由此,在后续对数据进行读取时,可基于解析请求得到的关键字段,利用路由规则读取到目标数据所在路由地址,即目标数据所在的分片表和所在的数据库的位置,并根据所述路由地址读取并反馈所述目标数据。
[0132]
该可选的实施例中,在读取到目标数据后,向相应的应用程序反馈该目标数据。需要说明的是,在特殊情况下,当应用程序需要读取的目标数据为多个,且分别存储在不同的分片表中时,则需要对读取到的多个目标数据进行聚合操作,得到聚合后的目标数据。因此,本技术实施例提供了一种sql解析聚合引擎,负责对处理应用程序的sql请求进行解析
处理,并把处理得到的sql指令根据路由规则引擎进行拆分,并发处理多个分片表和多个数据库,得到执行结果后进行聚合操作,最终返回给应用程序需要的数据或操作结果。
[0133]
在一个可选的实施例中,筛选单元113用于统计历史目标数据中各关键字段的数量得到调用频率,并基于所述调用频率对所有的关键字段进行筛选得到热点字段数据集。
[0134]
在一个可选的实施例中,所述统计历史目标数据中各关键字段的数量得到调用频率,并基于所述调用频率对所有的关键字段进行筛选得到热点字段数据集包括:
[0135]
统计历史目标数据中各关键字段的数量,并将各关键字段的数量与所有关键字段的总数量的比值作为所述调用频率;
[0136]
对所述调用频率进行分类,并根据分类结果对所有的关键字段进行筛选得到热点字段数据集。
[0137]
该可选的实施例中,首先对应用程序获取的历史目标数据中各关键字段的数量进行统计,并将每种关键字段的数量与所有关键字段的总数量的比值作为对应的关键字段的调用频率。
[0138]
该可选的实施例中,可通过k均值聚类算法对所述调用频率进行分类。其中,k均值聚类算法是一种迭代求解的聚类分析算法,其步骤是,预先将所有的调用频率数据分为k组,并随机选取k个调用频率数据作为初始的聚类中心,然后计算每个调用频率数据与各个聚类中心之间的距离,把每个调用频率数据分配给距离它最近的聚类中心。聚类中心以及分配给该聚类中心的所有调用频率数据就代表一个聚类。每分配一个调用频率数据,则该调用频率数据所在聚类的聚类中心会根据聚类中现有的所有调用频率数据被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)调用频率数据被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
[0139]
该可选的实施例中,使用k均值聚类算法的前提是需要指定调用频率数据的分类数量k,随着分类数量的增大,所述调用频率会被划分的更加精细,每个类别的聚合程度会逐渐提高,对应的误差平方和sse会逐渐减小,因此本方案中通过计算不同分类数量下对应的误差平方和sse来获得合理的分类数量k。其中,误差平方和的计算式为:
[0140][0141]
其中,sse为误差平方和,ci是第i个调用频率类别,k为预设的调用频率分类数量,p为调用频率类别ci中的数据点,表示调用频率类别ci中所有的调用频率数据点的均值。
[0142]
示例性的,设调用频率的分类数量k为1,对应的调用频率数据为(10,20,30),则所有数据点的平均值为20,sse=(10-20)2+(20-20)2+(30-20)2=200,则计算出的误差平方和为200。
[0143]
该可选的实施例中,当k小于理想的分类数量时,由于k的增大会大幅增加每个调用频率的类别的聚合程度,故sse的下降幅度会很大,而当k到达理想的分类数量时,再增加k所得到的聚合程度会迅速变小,所以sse的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,因此可通过建立sse随k增加关系图从而确定出曲率最高的数据点所对应的k值,此时的k值即为理想的调用频率的分类数量。
[0144]
示例性的,如图4所示的sse随k增加关系图中,当k=4时所对应的数据点的曲率最大,因此最佳分类数量为k=4。
[0145]
该可选的实施例中,将最终确定的理想的调用频率的分类数量k作为所述有效分类数,并基于所述有效分类数通过k均值聚类算法对所述调用频率进行分类得到多个调用频率类别。
[0146]
该可选的实施例中,计算各调用频率类别中包含的调用频率的平均值,并选取最大平均值对应的调用频率类别后,将该调用频率类别中所有的调用频率对应的关键字段作为所述热点字段数据集。
[0147]
在一个可选的实施例中,计算单元114用于依据文本相似度算法计算所述第一分片数据与所述热点字段数据集中每一个关键字段的文本相似度得到语义相关度,并基于所述语义相关度对所述第一分片数据进行分片得到第二分片数据。
[0148]
在一个可选的实施例中,所述依据文本相似度算法计算所述第一分片数据与所述热点字段数据集中每一个关键字段的文本相似度得到语义相关度,并基于所述语义相关度对所述第一分片数据进行分片得到第二分片数据包括:
[0149]
依据文本相似度算法分别计算所述第一分片数据中每一个分类数据与所述热点字段数据集中每一个关键字段的文本相似度;
[0150]
将所述热点字段数据集中每一个关键字段对应的调用频率作为特征权重,对所述特征权重和所述文本相似度进行加权求和以获取所述第一分片数据中每一个分类数据的语义相关度;
[0151]
计算所述第一分片数据中所有的分类数据的语义相关度的平均值作为分片阈值,并基于所述分片阈值对所述第一分片数据进行分片得到第二分片数据。
[0152]
该可选的实施例中,所述文本相似度算法可使用向量空间模型(vsm)算法,vsm将所述第一分片数据中的各数据形式化为空间中的一个点,通过向量的形式给出,把对第一分片数据的处理简化为向量空间中向量的运算,降低了对所述第一分片数据中的分类数据进行文本相似度计算的复杂性。
[0153]
该可选的实施例中,通过vsm算法分别计算所述第一分片数据中每一个分类数据与所述热点字段数据集中每一个关键字段的文本相似度,然后将所述热点字段数据集中每一个关键字段对应的调用频率作为特征权重,对所述特征权重和所述文本相似度进行加权求和以获取所述第一分片数据中每一个分类数据的语义相关度。
[0154]
示例性的,热点数据集中共有4个关键字段a、b、c、d,通过vsm算法分别计算所述第一分片数据中分类数据e与4个关键字段a、b、c、d之间的文本相似度为0.6、0.2、0.1、0.3。其中4个关键字段a、b、c、d对应的调用频率为0.8、0.5、0.6、0.2,则通过加权求和进行计算得到所述第一分片数据中分类数据e的语义相关度为0.6
×
0.8+0.2
×
0.5+0.1
×
0.6+0.3
×
0.2=0.7。
[0155]
该可选的实施例中,计算所述第一分片数据中所有的分类数据的语义相关度的平均值作为分片阈值,并基于所述分片阈值对所述第一分片数据进行分片得到第二分片数据,具体过程为:将每一个分片表拆分为数据主表和数据从表,并将其中大于所述分片阈值的分类数据写入所述数据从表中,将其中不大于所述分片阈值的分类数据写入所述数据主表中。其中,在对每一个分片表拆分时,可以将每一个分片表作为数据主表,并选取一个不
含有任何数据的分片表作为该分片表的数据从表。最终,将所有写入所述数据主表和所述数据从表中的第一分片数据作为第二分片数据,从而完成对待分片数据的数据分片过程。
[0156]
由以上技术方案可以看出,本技术能够通过统计历史目标数据中各关键字段的数量对所有的关键字段进行筛选,然后计算所述待分片数据与所述热点字段数据集的文本相似度得到语义相关度,并基于所述语义相关度对所述分类数据进行分片,可以灵活筛选热点数据并对待分片数据中的热点数据进行分表存储,从而提高数据库的数据调用效率。
[0157]
请参见图3,是本技术实施例提供的一种电子设备的结构示意图。电子设备1包括存储器12和处理器13。存储器12用于存储计算机可读指令,处理器13用执行所述储器中存储的计算机可读指令以实现上述任一实施例所述的基于人工智能的数据分片方法。
[0158]
在一个可选的实施例中,电子设备1还包括总线、存储在所述存储器12中并可在所述处理器13上运行的计算机程序,例如基于人工智能的数据分片程序。
[0159]
图3仅示出了具有存储器12和处理器13的电子设备1,本领域技术人员可以理解的是,图3示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
[0160]
结合图1,电子设备1中的所述存储器12存储多个计算机可读指令以实现一种基于人工智能的数据分片方法,所述处理器13可执行所述多个指令从而实现:
[0161]
获取待分片数据的配置信息,所述配置信息包括待分片数据的数据量、建表语句和多个数据库;
[0162]
依据业务类型对所述待分片数据进行分类获得分类数据,并基于所述配置信息将所述分类数据存储至分片表以作为第一分片数据;
[0163]
接收数据读取请求以从所述分片表中读取目标数据,所述数据读取请求中携带有目标数据的关键字段;
[0164]
统计历史目标数据中各关键字段的数量得到调用频率,并基于所述调用频率对所有的关键字段进行筛选得到热点字段数据集;
[0165]
依据文本相似度算法计算所述第一分片数据与所述热点字段数据集中每一个关键字段的文本相似度得到语义相关度,并基于所述语义相关度对所述第一分片数据进行分片得到第二分片数据。
[0166]
具体地,所述处理器13对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
[0167]
本领域技术人员可以理解,所述示意图仅仅是电子设备1的示例,并不构成对电子设备1的限定,电子设备1可以是总线型结构,也可以是星形结构,电子设备1还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置,例如电子设备1还可以包括输入输出设备、网络接入设备等。
[0168]
需要说明的是,电子设备1仅为举例,其他现有的或今后可能出现的电子产品如可适应于本技术,也应包含在本技术的保护范围以内,并以引用方式包含于此。
[0169]
其中,存储器12至少包括一种类型的可读存储介质,所述可读存储介质可以是非易失性的,也可以是易失性的。所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器12在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。存储器12在另一些实施例中也可
以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。存储器12不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于人工智能的数据分片程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
[0170]
处理器13在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器13是电子设备1的控制核心(control unit),利用各种接口和线路连接整个电子设备1的各个部件,通过运行或执行存储在所述存储器12内的程序或者模块(例如执行基于人工智能的数据分片程序等),以及调用存储在所述存储器12内的数据,以执行电子设备1的各种功能和处理数据。
[0171]
所述处理器13执行所述电子设备1的操作系统以及安装的各类应用程序。所述处理器13执行所述应用程序以实现上述各个基于人工智能的数据分片方法实施例中的步骤,例如图1所示的步骤。
[0172]
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器12中,并由所述处理器13执行,以完成本技术。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机程序在电子设备1中的执行过程。例如,所述计算机程序可以被分割成获取单元110、分类单元111、读取单元112、筛选单元113、计算单元114。
[0173]
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、计算机设备,或者网络设备等)或处理器(processor)执行本技术各个实施例所述的基于人工智能的数据分片方法的部分。
[0174]
电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指示相关的硬件设备来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。
[0175]
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存储器及其他存储器等。
[0176]
进一步地,计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
[0177]
本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品
服务层以及应用服务层等。
[0178]
总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,在图3中仅用一根箭头表示,但并不表示仅有一根总线或一种类型的总线。所述总线被设置为实现所述存储器12以及至少一个处理器13等之间的连接通信。
[0179]
本技术实施例还提供一种计算机可读存储介质(图未示),计算机可读存储介质中存储有计算机可读指令,计算机可读指令被电子设备中的处理器执行以实现上述任一实施例所述的基于人工智能的数据分片方法。
[0180]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0181]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0182]
另外,在本技术各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
[0183]
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。说明书陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
[0184]
最后应说明的是,以上实施例仅用以说明本技术的技术方案而非限制,尽管参照较佳实施例对本技术进行了详细说明,本领域的普通技术人员应当理解,可以对本技术的技术方案进行修改或等同替换,而不脱离本技术技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1