一种基于海量数据类SQL检索场景的自动识别优化方法与流程

文档序号:12177234阅读:160来源:国知局
本发明属于海量数据统计分析
技术领域
:,涉及一种基于SQL模式下,对海量数据检索场景的自动识别,并选用相应手段进行检索提速的技术方案。
背景技术
::随着信息科学技术日新月异的发展,各种形式的海量数据如网页文件,文本数据,多媒体数据等不断的产生,导致数据规模的急剧膨胀,各类数据的应用领域也不断扩展,其应用呈现如下特点:第一,数据规模大,且持续不断增长,而且这些数据都需要保存起来,以备统计分析;第二,对复杂查询操作以及联机事务处理的能力要求高,对响应时间要求比较苛刻,而且这是在同时进行海量加载的情况下进行的;第三,系统的可靠性和灵活性要求高。随着计算机硬件和软件技术的不断发展,数据处理技术也随之不断前进和创新。目前将大量数据分散到多个节点上,将计算并行化,利用多机的计算资源,从而加快数据处理的速度。然而仅通过单存储介质的海量数据存储,并不能满足各种检索场景的检索性能要求,因而,在此基础上本发明提供了一种海量数据类SQL检索场景自动识别优化技术,以满足不同检索场景的高性能检索要求。技术实现要素:本发明提供了一种基于海量数据类SQL检索场景的自动识别优化方法,用于实现在海量数据检索时,对不同检索场景的存储介质最优选择及存储数据的索引使用。本发明的基于海量数据类SQL检索场景的自动识别优化方法,是对单表数据扫描阶段,数据索引及存储介质选择的优化。具体本发明的技术方案通过如下五个方面实现。第一方面,在检索引擎中,以rcfile作为主存储介质,引入lucene作为可选存储介质。保持原有存储介质与新增存储介质的数据一致性。第二方面,在检索引擎中,集群中数据以文件的形式呈现,对每个数据文件的检索字段增加bloomfilter索引,简称bf;在检索时,通过设定的谓词条件,踢除不含当前查询结果的数据文件;对bf索引支持的谓词条件包括:(1)等值查询;(2)非等值查询;(3)In查询。第三方面,对不同检索场景的划分及最优存储介质的选择。根据rcfile和lucene两种存储介质的属性,将检索场景划分为两种,rcfile检索场景和lucene检索场景,分别选择对应的存储介质进行检索。rcfile检索场景包括:(1.1)全表扫描;(1.2)范围查询;(1.3)非等值查询;(1.4)NULL值查询。lucene检索场景包括:(2.1)等值查询;(2.2)模糊查询;(2.3)正则查询;(2.4)计数查询。对以AND/OR组合的多谓词条件,若每项谓词条件均符合lucene检索场景则选择lucene存储介质进行检索。AND表示和关系,OR表示或关系。在进行lucene检索场景时,需保证涉及的所有检索字段均被lucene存储,其中涉及的检索字段包括select字段和谓词条件字段。第四方面,类SQL语句对应lucene语句的转换。在确定使用lucene存储介质进行检索操作后,将类SQL语句中的谓词条件集转换成对应的lucene查询字符串;谓词条件集转换成lucene查询字符串的流程为:(4.1)深层次遍历谓词条件集,将每个子谓词条件转换成lucene查询字符串;(4.2)多个子谓词条件间,用AND/OR连接符组合lucene查询字符串;若子查询为组合查询,重复步骤(4.1)。对无法转换成lucene查询字符串的类SQL语句,不允许进行lucene存储介质检索。各个子谓词条件转换lucene查询字符串的规则包括:(1)等值查询“=”,将a=K1转换成a:K1;a为检索字段;(2)等值查询“in”,将ain(K1,K2)转换成a:K1ora:K2;K1、K2为查询字符;(3)模糊查询“like”,将blike‘value%’转换成b:value*;b为检索字段,value为查询字符;(4)正则查询“rlike”,将brlike‘/value[b]/’转换成b:/value[b]/;(5)范围查询“>,>=,<,<=,between”,形如b>‘value’转换成b:[“value”TO*],其它范围查询类似转换。(6)全文检索“fulltext”,将bfulltext‘value’转换成b:value;(7)若查询value含有以下特殊字符:'+','-','&','|','(',')','{','}','[',']','^','~','*','"','?','!','',':','\','/',需要对该特殊字符进行转义,转义方式:特殊字符前添加转义符'\'。计数查询的lucene查询字符串生成规则同上,但需要添加特殊标示,以在lucene检索后,不返回数据,只进行结果集条数统计。第五方面,在检索引擎中,对lucene存储介质、bloomfilter索引,添加有效性的会话级设置。可设置是否允许lucene存储介质或bloomfilter索引的检索操作,在下次会话时,可恢复系统默认设置。本发明提供的自动识别优化方法,有效降低了海量数据检索时集群的资源消耗,大幅度提升了海量数据的检索性能,具体的优点和积极效果还在于:,(1)通过允许多存储介质,优化检索;引入lucene作为可选存储介质,在海量数据扫描时,以弥补rcfile随机检索性能不佳的问题,提升检索性能;(2)通过构建存储数据索引,优化检索效率;集群中数据以文件的形式呈现,对文件中的存储数据构建索引后,根据检索中的特定谓词条件将未命中的数据文件剔除出扫描队列,减少了集群的检索资源消耗,并为提升检索性能制造了可能;(3)根据存储介质的检索特点对检索场景进行划分,并根据检索场景选取最优存储介质,提高检索性能。附图说明图1为本发明的多存储介质及数据索引框架图;图2为本发明的数据索引优化原理示意图;图3为本发明的检索场景判定流程图;图4为本发明的类SQL检索场景自动识别优化流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例子,对本发明的技术方案进一步详细说明。在根据检索场景,自动识别优化前,需经过以下流程:1)类SQL语句词法语法分析;2)检索语义分析;3)逻辑计划树生成。具体流程因与本发明无关,在此不做详述。但在逻辑计划树生成阶段,已经对scan/join/groupby/orderby/聚合函数等操作进行了层次划分,本发明是对单表数据扫描阶段(scan),数据索引及存储介质选择的优化。本发明通过下面五个方面来说明优化策略。本发明的第一方面,通过允许多存储介质,优化检索。一般检索引擎仅支持单一的数据存储介质,但在不同的检索场景下,不同属性的存储介质对检索性能有极大的影响。因此,增加不同属性的存储介质为提升检索性能制造了可能。在原有的检索引擎中,数据以rcfile作为存储介质,rcfile作为一种基于行列混合存储的优秀存储介质,满足了快速数据加载和动态负载高适应的需求。在海量数据扫描时,rcfile提供了强大的顺序扫描性能,但其随机检索性能差强人意,因此为提升检索性能,本发明引入了另一种存储介质:lucene文件,lucene作为一个全文检索引擎,已经默认实现了一套强大的查询引擎,用户无需自己编写代码即可使系统获得强大的查询能力。在当前的检索引擎中,以rcfile作为主存储介质,lucene作为可选存储介质,其中lucene存储介质可选择不存储全部字段,可指定多个字段存储,并对指定字段选择分词器(用于全文检索)。rcfile与lucene间的数据同步、备份因与本发明无关,在此不做详述。本发明的第二方面,通过构建存储数据索引,优化检索效率。集群中数据以文件的形式呈现,对文件中的存储数据构建索引后,根据检索中的特定谓词条件将未命中的数据文件剔除出扫描队列,减少了集群的检索资源消耗,并为提升检索性能制造了可能。在原有的检索引擎中,本发明对每个数据文件的可检索字段增加了bloomfilter索引,以下简称bf。bf是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合,可以准确地获取出当前数据文件的索引字段是否包含查询值。在检索时,通过特定的谓词条件,即可踢除不含当前查询结果的存储文件。对bf索引支持的谓词条件包括:(1)等值查询,例如对bf索引的字段a,查询a包含1,表示为a=1;(2)非等值查询,例如查询a不包含1,表示为a!=1;(3)In查询,是等值查询的扩展,例如查询a包含1或包含2,表示为ain(1,2)表示a=1或a=2。本发明的第三方面,对不同检索场景的划分及最优存储介质的选择。检索场景的划分是由可选存储介质的属性决定的,在当前的检索引擎中,rcfile存储介质适用于结果集为大数据量的扫描操作,而lucene存储介质更适用于结果集为小数据量的检索操作,因此可以将检索场景划分为两个方面,即适用于rcfile的大数据结果集数据扫描场景和适用于lucene的小数据结果集数据检索场景,以下分别简称为rcfile检索场景、lucene检索场景。其中rcfile检索场景包括:(1.1)全表扫描,类似select*fromtbl;其中,tbl表示数据文件;(1.2)范围查询,类似select*fromtblwherea>1;select*fromtblwhereabetween1and2;其中,a代表某个检索字段;(1.3)非等值查询,类似select*fromtblwherea!=1;select*fromtblwhereanotin(1,2,3);(1.4)NULL值查询,类似select*fromtblwhereaisnotnull。lucene检索场景包括:(2.1)等值查询:类似select*fromtblwherea=1;select*fromtblwhereain(1,2,3);(2.2)模糊查询:类似select*fromtblwhereblike‘value%’;其中,b代表某个检索字段;value表示查询字符;(2.3)正则查询:类似select*fromtblwherebrlike‘/value[a]/’;(2.4)计数查询(count):类似selectcount(*)fromtblwherea>1。对以AND/OR组合的多谓词条件,若每项谓词条件均符合lucene检索场景则选择lucene存储介质的检索流程,例:select*fromtblwherea=1andblike‘value%’。因为当前检索引擎对lucene存储介质的个性化设置,确定lucene检索场景前需保证:涉及的所有检索字段均被lucene存储,其中涉及的检索字段包括select字段和谓词条件字段。本发明的第四方面,类SQL语句对应lucene语句的转换。由于lucene含有一套自身的查询语法,以进行相关数据操作,所以在确定使用lucene存储介质进行检索操作后,需要将类SQL语句中的谓词条件集转换成对应的lucene查询语法。利用luceneQueryParser提供的强大的语法解析可将查询字符串解析成lucene查询器,因此只需将谓词条件集转换成对应的lucene查询字符串即可,以下是谓词条件集转换成lucene查询字符串的流程:(4.1)深层次遍历谓词条件集,将每个子谓词条件转换成lucene查询字符串。(4.2)多个子谓词条件间,用AND/OR连接符组合lucene查询字符串。若子查询为组合查询,重复步骤(4.1);各个子谓词条件转换lucene查询字符串部分规则如下:(1)等值查询(=),a=1转换成a:1;(2)等值查询(in),ain(1,2)转换成a:1ora:2;(3)模糊查询(like),blike‘value%’转换成b:value*;(4)正则查询(rlike),brlike‘/value[b]/’转换成b:/value[b]/;(5)范围查询(>,>=,<,<=,between),b>‘value’转换成b:[“value”TO*];(6)全文检索(fulltext),bfulltext‘value’转换成b:value;(7)若查询value含有以下特殊字符:'+','-','&','|','(',')','{','}','[',']','^','~','*','"','?','!','',':','\','/',需要对该特殊字符进行转义,转义方式:特殊字符前添加转义符'\'。计数查询(count)的lucene查询字符串生成规则同上,但需要添加特殊标示,以在lucene检索后,不返回数据,只进行结果集条数统计。对无法转换成lucene查询字符串的类SQL语句,不允许进行lucene存储介质检索,例null查询、前模糊查询。本发明的第五方面,提供存储介质、数据索引有效性的会话级设置。在当前检索引擎中,对lucene存储介质、bloomfilter索引,添加有效性的会话级设置,可设置是否允许lucene存储介质或bloomfilter索引的检索操作,在下次会话时,恢复默认设置。如图1所示,本发明提供了一种底层数据多存储介质和数据索引管理框架。在数据管理模块,一方面,添加对新增存储介质的相关操作,包括数据创建、数据删除、数据备份等,同时保证原有存储介质与新增存储介质的数据一致性,从而达到多种存储介质并存的场景;另一方面,在新增数据文件时,对文件中的数据添加索引信息,为每个待检索字段生成对应的数据索引文件。数据索引文件可与存储介质无关,只需保证多存储介质相同数据集合的文件划分的统一。从实现角度来说,在构建数据表时,提供当前表可选择数据存储介质及可选数据索引的选项,即允许对单表的多存储介质和数据索引的自定义选择。例createtabletbl(aint)storedas(rcfile,lucene(a))indexasbloomfilteron(a),意思是新建数据表tbl在rcfile和lucene中存储,为数据表tbl中int类型的字段a建立bf索引。在数据加载、删除时,获取加载表的多存储介质和数据索引列表,进行相关操作。本发明提供的数据索引优化原理如图2所示,在经过类SQL语句的词法、语法、语义分析,逻辑计划树生成后,首先,获取当前查询中涉及表的谓词条件集,对其进行循环遍历操作,剔除不符合bf索引的谓词条件,并获取数据索引文件待查询的元素。bf索引支持的谓词条件在本发明的第二方面中记载。其次,从元数据中获取当前表待查询的全部原始数据文件集合,并获取原始文件对应查询字段的bf索引文件集合。再次,通过bloomfilter算法,判定当前bf索引文件是否包含待查询元素,即原始数据文件是否包含被查询记录。最后,剔除所有未命中的原始数据文件,剩余原始数据文件集作为待检索文件集合。图2所示,获取谓词条件a=1,原始数据文件集合中的文件1、文件2和文件3的可检索字段都有a和b;字段a和b建立有bf索引。获取原始数据文件的bf索引文件,根据谓词条件在bf索引中查找字段a包含1的原始数据文件,将不包含1的文件3剔除,将包含1的原始数据文件组成待检索文件集合。本发明提供的检索场景判定流程如图3所示,在获取谓词条件集后,首先判定谓词条件集是否为空,若为空则为rcfile检索场景,进入rcfile存储介质进行检索查询流程,否则,判定待查询表涉及的查询字段是否均被lucene存储,若符合条件则继续进行lucene检索场景判定,否则,进入rcfile存储介质进行检索。其次,判定待查询表是否为count查询,若为count查询,则不必验证谓词条件集是否为满足lucene检索场景的谓词条件集合,遍历谓词条件集获取子谓词条件,若每项子谓词条件均符合lucene检索场景则选择lucene存储介质进行检索。在对应的lucene检索场景下,将类SQL语句转换成lucene语法字符串。若不符合lucene检索场景,则为rcfile检索场景,进入rcfile存储介质进行检索查询。图3所示的虚框的检索场景中,左侧是lucene检索场景,右侧则不属于lucene检索场景。若不是count查询,需要验证谓词条件集是否为满足lucene检索场景的谓词条件集合,若是,遍历谓词条件集生成lucene语法字符串,若不是进入rcfile存储介质进行检索。满足lucene检索的谓词条件集合见本发明的第三方面。lucene语法字符串的生成在遍历谓词条件集验证是否满足lucene检索场景正确性时即可执行,在count查询时,需另开辟分支,如图3所示。Lucene语法字符串的生成规则见本发明的第四方面。最后,判断lucene语法字符串的正确性,若正确则进入lucene存储介质检索场景流程,反之,进入rcfile存储介质检索场景流程。本发明提供的类SQL检索场景自动识别优化流程如图4所示,是对本发明自动识别优化技术的整体流程的概述。首先,在经过类SQL语句的词法、语法、语义分析,逻辑计划树生成后,判定bf索引的会话级有效性,在本发明的第二方面有说明,在bf索引为有效状态时,进行bf索引优化流程,通过bf索引缩小待扫描原始数据文件列表。若bf索引无效,不进行bf索引优化流程。其次,判定lucene存储介质的会话级有效性,在本发明的第三方面有说明。当lucene存储介质无效时,进入rcfile检索场景。当lucene存储介质为有效时,进行lucene检索场景和rcfile检索场景的判定流程。当为lucene检索场景时,遍历谓词条件集生成lucene语法字符串,进入lucene存储介质进行检索。当为rcfile检索场景时,进入rcfile存储介质进行检索。最后将检索结果返回。应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1