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

自适应优化检索性能数据库及数据查询方法与流程

2022-02-22 19:27:07 来源:中国专利 TAG:


1.本发明涉及一种自适应优化检索性能数据库及数据查询方法,属于大数据存储领域。


背景技术:

2.数据处理大致可以分成两大类:联机事务处理oltp(on-line transaction processing)、联机分析处理olap(on-line analytical processing)。oltp是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。olap是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持(故也被称为也叫dss决策支持系统),并且提供直观易懂的查询结果。
3.olap场景下,数据存储最基础而有效的优化是改行存储为列存储。数据压缩是存储领域常用的优化手段,以可控的cpu开销来大幅缩小数据在磁盘上的存储空间,一来可以节省成本,二来可以减小i/o和数据在内存中跨线程和跨节点网络传输的开销。压缩算法并不是压缩比越高越好,压缩率越高的算法压缩和解压缩速度往往就越慢,需要根据硬件配置和使用场景在cpu和i/o之间进行权衡。数据编码可以理解为轻量级压缩,包括rle和数据字典编码等。在列存储模式下,数据压缩和编码的效率均远高于行存储模式。
4.当olap系统进行大量的数据访问时,受限于数据的存储方式,对于常用的查询数据和非常用数据无法区分,不同的查询操作占用资源的不同未统一优化,无法根据海量数据的实时查询状态进行查询效率的改进。
5.有鉴于此,确有必要提出一种新的自适应优化检索性能数据库及方法,以解决上述问题。


技术实现要素:

6.本发明的目的在于提供一种自适应优化检索性能数据库及数据查询方法,以解决现有数据存储系统无法根据海量数据的实时查询情况对查询效率进行改进的问题。
7.为实现上述目的,本发明提供了一种自适应优化检索性能数据库,应用于大数据存储,包括以下模块:
8.数据分块模块,用于多线程或多进程将待存储数据进行分块处理,得到分块数据;
9.存储模块,用于储存所述数据分块模块处理后的所述分块数据;
10.索引模块,用于在所述待存储数据进行分块时记录每一个所述分块数据的分块信息,并形成数据索引表;
11.查询模块,用于对存储的所述分块数据进行查询;
12.缓存模块,用于缓存预设时间内的查询条件和查询结果;
13.优化模块,用于通过奖惩函数评估查询过程及查询结果,对所述查询模块进行优化更新,并实时调整所述查询模块进行查询时对每一个所述分块数据分配的查询资源,所述奖惩函数具体为:
[0014][0015]
其中n表示共有n个分块数据,e(d)表示分块数据查询时的时间复杂度均值,di表示查询分块数据i的时间复杂度,λ为惩罚系数,α为分块数据i的权重。
[0016]
作为本发明的进一步改进,所述数据分块模块用于对所述待存储数据进行扫描并判断所述待存储数据的数据类型,以根据数据类型进行分块。
[0017]
作为本发明的进一步改进,所述数据类型包括:结构化数据和非结构化数据,当所述数据类型为结构化数据时,所述数据分块模块对所述待存储数据进行逻辑分块,识别所述待存储数据中的字段内容,并将识别到的字段内容按数值特征或编码格式进行分块;当所述数据类型为非结构化数据时,所述数据分块模块对所述待存储数据进行维度分块,根据数据的不同维度进行数据立方的切割,以形成多个分块数据,每个分块数据上包括预设维数的至少一个非结构化数据,所述预设维数至少为一维。
[0018]
作为本发明的进一步改进,所述缓存模块的缓存预设时间为七天,所述缓存模块中存储至少一次查询的查询条件及查询结果,所述查询模块进行查询时,当所述缓存模块中存储的查询条件与实际查询条件相同时,可直接从所述缓存模块中获得查询结果,无需对所述存储模块进行扫描查询。
[0019]
作为本发明的进一步改进,所述缓存模块在所述待存储数据的大小为8~256gb时,同时起到存储的作用,将所述待存储数据直接存储在所述缓存模块中,在所述待存储数据的大小大于256gb时,所述缓存模块则仅缓存预设时间内的查询条件和查询结果。
[0020]
本发明还提供了一种数据查询方法,应用于前述自适应优化检索性能数据库,主要包括以下步骤:
[0021]
步骤1:输入查询请求,所述查询模块接受并解析查询请求,得到查询条件;
[0022]
步骤2:判断所述缓存模块中是否存在相同的查询条件,如果有,直接从所述缓存模块中获取查询结果,如果没有,则进入步骤3;
[0023]
步骤3:根据所述优化模块的奖惩函数调整所述查询模块对所述存储模块中每一个所述分块数据分配的查询资源并进行查询,得到查询结果;
[0024]
步骤4:记录查询过程中每个查询到的分块数据的信息,包括所述查询条件、查询时间及查询结果,合并为查询结果集;
[0025]
步骤5:将所述查询条件和所述查询结果缓存到所述缓存模块中。
[0026]
作为本发明的进一步改进,步骤3具体包括:
[0027]
步骤31:向所述索引模块并发执行对所述查询条件中分块特征信息的过滤,并汇总过滤得到的待查询特征分块数据;
[0028]
步骤32:向所述存储模块多线程并发执行对所述待查询特征分块数据的筛选,获取筛选后的筛选分块的行索引;
[0029]
步骤33:返回查询结果。
[0030]
作为本发明的进一步改进,步骤3中,当奖惩函数中的分块数据的权重α>1时,则所述查询资源的正向分配权重公式为:
[0031][0032]
其中,w
mn
为第m个查询指令在查询资源rn的权重。
[0033]
作为本发明的进一步改进,步骤3中,当奖惩函数中的分块数据的权重α=1时,则不改变对所述分块数据分配的查询资源。
[0034]
作为本发明的进一步改进,步骤3中,当奖惩函数中的分块数据的权重α<1时,则所述查询资源的反向分配权重公式为:
[0035][0036]
其中,w
mn
为第m个查询指令在查询资源rn的权重。
[0037]
本发明的有益效果是:本发明的自适应优化检索性能数据库通过优化模块使用奖惩函数对查询模块进行优化更新,实时调整查询模块进行查询时对每一个分块分配的查询资源,改变每个分块的查询时间复杂度,使得查询效率提升,自适应的优化检索查询过程,解决现有数据存储系统中无法根据海量数据的实时查询情况对查询效率进行改进的问题。
附图说明
[0038]
图1是本发明的自适应优化检索性能数据库的结构框图。
[0039]
图2是本发明的数据查询方法的流程图。
[0040]
图3是本发明查询模块执行查询时的具体流程图。
具体实施方式
[0041]
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0042]
如图1所示,本发明揭示了一种自适应优化检索性能数据库100,应用于大数据存储,具体包括以下模块:
[0043]
数据分块模块1,用于多线程或多进程将待存储数据进行分块处理,得到分块数据;
[0044]
存储模块2,用于储存数据分块模块1中的分块数据;
[0045]
索引模块3,用于在待存储数据进行分块时记录每一块分块数据的分块信息,并形成数据索引表;
[0046]
查询模块4,用于对存储的分块数据进行查询;
[0047]
缓存模块5,用于缓存预设时间内的查询条件和查询结果;
[0048]
优化模块6,通过奖惩函数评估查询过程及查询结果,对查询模块4进行优化更新,实时调整查询模块4进行查询时对每一个分块数据分配的查询资源,奖惩函数具体为:
[0049]
[0050]
其中n表示共有n个分块数据,e(d)表示分块数据查询时的时间复杂度均值,di表示查询分块数据i的时间复杂度,λ为惩罚系数,α为分块数据i的权重。
[0051]
对于一份待存储数据,数据分块模块1用于多线程或多进程的对待存储数据中的数据进行扫描并判断待存储数据的数据类型,再根据数据类型选择相应的分块方法,将待存储数据分块。
[0052]
待存储数据的数据类型具体包括:结构化数据和非结构化数据。
[0053]
当待存储数据的数据类型为结构化数据,即表格数据时,对待存储数据进行逻辑分块,首先识别待存储数据中的字段内容,然后将识别到的字段内容按数值特征或编码格式进行分块处理。
[0054]
数值特征包括但不限于:时间、地点、证件号、交易帐号、金额、联系方式、ip等预设的基本数据属性。编码格式包括但不限于:数值型、字符串型、时间型(日期型)、acsii码、utf-8等预设的数据类型。
[0055]
按数值特征进行分块处理时,以数值特征对应的主要数据属性进行数据块分割。主要数据属性指待存储数据中占比最大的数据属性。如主要数据属性为时间数值,可按天将数据字段进行分块处理;如主要数据属性是地理坐标,则可按地理分区将数据字段进行分块处理。数据分块时所选取的分块细粒度根据数据属性自身特点而改变。如按预设细粒度进行分块后的分块数据内的数据量仍较大,可进一步缩小分块细粒度,将这个较大数据量的分块数据进一步划分为多个较小数据量的分块数据。
[0056]
举例的,在一个企业员工资料数据库中,将全部员工按照部门、性别、入职年份、身份信息等具体属性作为员工数据按行处理,可依据员工身份信息(身份证号等数值特征)或部门编码(编码格式)对结构化数据进行分块后按块存储。
[0057]
当待存储数据的数据类型为非结构化数据,即文本信息时,对待存储数据进行维度分块,根据待存储数据的不同维度进行数据立方的切割,得到多个分块数据,每个分块数据上包括预设维数的至少一个非结构化数据,预设维数至少为一维。
[0058]
对于经过数据分块模块1分块的分块数据,存储到存储模块2中,存储模块2包括多个分布式存储节点,每个分布式存储节点中存储至少一个分块数据。
[0059]
索引模块3用于在待存储数据进行分块时记录每一块分块数据的分块信息,并形成数据索引表。
[0060]
具体地,在对待存储数据进行分块的时候,会对每一个分块数据的分块信息进行记录,分块信息包括但不限于分块名称、分块编号、分块特性,这些分块信息被记录到与分块数据关联的分块索引表中,每个录入的数据会同时新增索引记录。
[0061]
如果分块数据的数据类型为结构化数据,则建立索引时会建立树形索引。
[0062]
如果分块数据的数据类型为非结构化数据,则建立索引时建立倒排索引,建立索引的过程为:索引模块3
‑‑
缓存模块5
‑‑
存储模块2。
[0063]
已建立的各个分块索引表汇总后得到当前总的索引集合,即数据索引表。
[0064]
查询模块4用于对存储的数据进行查询。
[0065]
缓存模块5用于缓存预设时间内的查询条件和查询结果,缓存模块5中存储至少一次查询的查询条件及查询结果,缓存预设时间由客户自行决定,在此并无限制。具体的,在本实施例中,缓存预设时间优选为七天,缓存模块5会缓存七天内进行查询的查询条件和查
询结果。当查询模块4进行查询时,会将解析得到的实际查询条件与缓存模块5中存储的查询条件进行对比,当查询条件相同时,可直接从缓存模块5中获得存储的相应的查询结果,无需对存储模块2进行扫描查询,可以有效提高查询的速度和效率。
[0066]
缓存模块5在待存储数据的大小为8~256gb时,同时起到存储的作用,将待存储数据直接存储在缓存模块5中,在待存储数据的大小大于256gb时,则仅缓存预设时间内的查询条件和查询结果。当然,“8~256gb”这一范围只是作为一个优选实施例进行的举例说明,在其他实施例中,也可以根据实际情况对这一范围做出调整,此处不作限制。
[0067]
请参阅图2所示,本发明还提供了一种数据查询方法,应用于前述的自适应优化检索性能数据库100,主要包括以下步骤:
[0068]
步骤1:输入查询请求,查询模块4接受并解析查询请求,得到查询条件;
[0069]
步骤2:判断缓存模块5中是否存在相同的查询条件,如果有,直接从缓存模块5中获取查询结果,如果没有,则进入步骤3;
[0070]
步骤3:根据优化模块6的奖惩函数调整查询模块4对存储模块2中每一个分块数据分配的查询资源并进行查询,得到查询结果;
[0071]
步骤4:记录查询过程中每个查询到的分块数据的信息,包括查询条件、查询时间及查询结果,合并为查询结果集;
[0072]
步骤5:将查询条件和查询结果缓存到缓存模块5中。
[0073]
请参阅图3所示,步骤3中进行查询的具体步骤包括:
[0074]
步骤31:向索引模块3并发执行对查询条件中分块特征信息的过滤,并汇总过滤得到的待查询特征分块数据;
[0075]
步骤32:向存储模块2多线程并发执行对待查询特征分块数据的筛选,获取筛选后的筛选分块的行索引;
[0076]
步骤33:返回查询结果。
[0077]
优化模块6通过奖惩函数评估查询过程及查询结果,对查询模块4进行优化更新,实时调整查询模块4进行查询时对每一个分块数据分配的查询资源,使得查询效率提升。
[0078]
优化模块6通过获取步骤4中包括查询条件、查询时间及查询结果的查询结果集,进而建立对应分块数据的查询奖惩函数;再根据奖惩函数优化各分块数据执行查询操作时分配的资源,奖惩函数的目标是使得各分块数据的查询时间复杂度接近,从而得到总查询效率的最优解。
[0079]
查询优化的成本函数如下,该函数值越小表示查询效率最优:
[0080][0081]
其中n表示共有n个分块数据,e(d)表示分块数据查询时的时间复杂度均值,di表示查询分块数据i的时间复杂度,λ为惩罚系数,α为分块数据i的权重。
[0082]
奖惩函数的优化目标是最小化成本函数。奖惩函数公式为:
[0083][0084]
通过奖惩函数计算得到每个分块数据的权重值α,决定是否进行资源分配优化,若
α>1,则进行正向资源优化,降低分块数据查询的时间复杂度,若α=1,则不做资源优化操作,若α<1,则进行反向资源优化,提高分块数据查询的时间复杂度。
[0085]
查询模块4对存储模块2中每一个分块数据分配的查询资源的资源分配优化主要依据是计算各个查询资源对查询指令的增益,查询资源集合r={r1,r2,

,rn}表示有n个查询资源,查询资源包括但不限于线程数、cpu核数、内存及/或硬盘缓存,查询指令集合a={a1,a2,

,am}表示有m个查询指令,查询指令包括但不限于扫描行数、执行时间、返回结果数量等指令。
[0086]
首先,计算查询指令的信息熵:
[0087][0088]
其中,pi为查询指令am在第i类的信息熵,j表示am共有j个类别,在本实施例中,以查询指令中的扫描行数为例,将扫描行数按小于5000行,5000-1000行,大于10000行进行分类,则在本实施例中j=3。
[0089]
然后计算每个查询资源的条件信息熵:
[0090][0091]
其中,对于查询资源rn共有k个不同属性值,因此查询资源rn={r
n1
,r
n2
,
…rnk
},e(am|rn)为在查询资源rn下am的条件信息熵。
[0092]
查询资源rn对应的信息增益可以表示为:
[0093]gm
(rn)=i(am)-e(am|rn)
[0094]
通过计算n个查询资源对于m个查询指令的信息增益gm(rn),可得到每个查询资源对于m个查询指令的影响程度。
[0095]
通过归一化得到第m个查询指令在查询资源rn的权重:
[0096][0097]
当奖惩函数中的分块数据的权重α>1时,则查询资源的正向分配权重公式为:
[0098][0099]
查询资源分配优化后的正向分配权重会降低分块的查询时间复杂度di,若奖惩函数中分块的权重α大于1,则对查询资源进行正向资源分配优化,即增加向该分块数据分配的查询资源,查询资源分配数量的提高可以使得在查询过程中花费更低的时间,降低分块的查询时间复杂度,提高分块数据的查询速度。
[0100]
当奖惩函数中的分块数据的权重α=1时,则不改变对每个分块数据分配的查询资源。
[0101]
当奖惩函数中的分块数据的权重α<1时,则查询资源的反向分配权重公式为:
[0102][0103]
查询资源分配优化后的反向分配权重会提升分块的查询时间复杂度di,若奖惩函数中分块数据的权重α小于1,则对查询资源进行反向资源分配优化,即减小向该分块数据分配的查询资源,查询资源分配数量的降低可以使得在查询过程中花费更多的时间,提高分块数据的查询时间复杂度,降低分块数据的查询速度。
[0104]
通过改变对分块数据的查询资源分配的权重,提高或降低分块数据的查询时间,使得各个分块数据之间的查询时间动态平衡,始终保持较小时间差,提高了查询效率。
[0105]
本发明的自适应优化检索性能数据库100作为一种olap型数据库,在对数据库内的数据进行检索的时候,由于采用了对数据分块的处理方法,所以可以采用多线程或多进程同时执行检索任务,可以每个线程执行一条查询指令,并分别记录结果集。线程数量越多,系统可分配的查询任务越多。例如,为获取每一天的数据,线程足够多的情况下,可以每个线程对应小时的数据,最后将查询的结果拼起来返回。
[0106]
单条查询指令的查询速度快,总体返回时间并非最快,需要对查询过程进行最优的规划,不同线程执行不同的查询指令时对其分配不同的cpu核数、内存及/或硬盘缓存等查询资源,通过动态优化各分块执行查询时所分配的查询资源,使得对多个分块数据的查询可以根据系统负荷大小动态分配,改变每个线程执行完各自所需要执行的查询指令所需要花费的时间,使得各个线程最后完成的时间彼此接近,以此达到总查询效率的最优化,充分利用查询资源的同时降低整体花费时间。
[0107]
综上所述,本发明的自适应优化检索性能数据库100通过优化模块6使用奖惩函数对查询模块4进行优化更新,实时调整查询模块4进行查询时对每一个分块数据分配的查询资源,改变每个分块数据的查询时间复杂度,使得查询效率提升,自适应的优化检索查询过程,解决现有数据存储系统中无法根据海量数据的实时查询情况对查询效率进行改进的问题;通过数据分块模块1对数据进行分块,将大型数据分块,使得可以多线程或多进程的对分块数据进行处理和查询;通过索引模块3对每个分块数据建立索引,并汇总形成数据索引表,在查询时可以简化查询过程,加快查询速度,且可针对多个分块数据的索引信息并行执行查询,提高了查询效率。
[0108]
以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
再多了解一些

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

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

相关文献