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

文档序号:11950742阅读:322来源:国知局
一种数据查询方法及装置与流程
本发明涉及通信
技术领域
,尤其涉及一种数据查询的方法及装置。
背景技术
:随着大量的业务数据和社会网络积累的各种数据越来越多,如何在海量的数据存储中快速查询满足条件的记录,是一种比较大的挑战。目前,比较通用的成熟搜索引擎框架全文搜索引擎(lucene),通过倒排索引技术,实现了比较强大的数据查询,该索引引擎有着自身的查询语法,并且对于搜索有着相当大的优势;另外,对于现有的数据库系统,有大量的索引技术,如B+树索引,位图索引等,对于查询速度同样有着较大的提升。当然,目前在数据库的文本搜索功能中,倒排索引有着比较常见的应用。在通用数据库中应用索引引擎,是一种比较可行的方案,这样可以依赖搜索引擎进行查询,加快了简单查询的速度。具体地,参见图1,倒排索引的索引方法,图1中的索引是根据表1的数据库中存储的信息创建的索引。参见表1如下:表1IDCar_numcar_colordev_chnnamecar_imgurl1浙B1234Red北京Picserver12浙A1234black深圳Picserver23浙A1234black杭州Picserver24浙C1234Blue北京Picserver1例如,当查询car_num为浙A*时,需要对每行记录进行遍历,然后匹配,在大量的数据查询过程中,该操作非常耗时。通过使用倒排索引方法,则仅需要遍历图1中的椭圆,即数据字典,就可以得到满足条件的记录。例如,根据图1确定car_num为浙A*包括ID为第2行、第3行等。从而取出n(n不宜过大)条记录,即可实现分页查询。现有技术中常用的数据查询方法:首先接收用户发送的查询语句,并将该查询语句转化为数据库可以识别的逻辑执行计划树,然后根据逻辑执行计划树中的包含的算子采用索引引擎的方式进行数据的查询,当采用索引引擎的方式进行数据查询不能找到结果时,采用数据库查询的方式进行数据查询。然而,采用索引引擎查询数据时,当查询语句中包括联接操作时,分布式索引的操作需要将满足过滤条件的记录全部得到,然后在得到的所有满足条件记录当中进行联接操作,且得到所有满足条件记录的效率是非常低的,由于lucene是分页查询,一次查询仅得到少量记录,导致需要进行多次操作才能得到最终满足的条件;采用数据库查询数据时,当数据量较大时,普通查询,模糊查询的速度没有搜索引擎查询的速度快,从而降低了数据查询的效率。因此,为了避免上述问题,如何在数据查询时,根据自身的判断满足各个查询语句的查询路径,从而提高数据查询的效率是我们亟待解决的技术问题。技术实现要素:本发明实施例提供了一种数据查询方法及装置,用以在数据查询时,根据自身的判断确定各个查询语句的查询路径,提高数据查询的效率。本发明实施例提供了一种数据查询方法,该方法包括:接收用户发送的查询语句,并将所述查询语句转化为逻辑执行计划树;根据转化后的逻辑执行计划树中包含的算子判断所述查询语句是否为复杂语句,若是,则按照数据库查询方式进行数据查询;否则,根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询。在一种可能的实施方式中,本发明实施例提供的上述数据查询方法中,所述根据转化后的逻辑执行计划树判断所述查询语句是否为复杂语句,包括:判断转化后的逻辑执行计划树中是否包括联接算子或聚集算子,若是则确定所述查询语句为复杂语句,否则,为简单语句。在一种可能的实施方式中,本发明实施例提供的上述数据查询方法中,确定所述查询语句为简单语句后,且根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询之前,该方法还包括:将所述查询语句进行解析,并转化为搜索引擎所支持的语句。在一种可能的实施方式中,本发明实施例提供的上述数据查询方法中,根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询,具体包括:若所述查询语句为简单语句,判断所述查询语句返回的字段是否包括非索引字段,若是则根据预先创建的索引按照索引引擎的方式进行数据查询;否则根据预先创建的索引按照搜索引擎的方式进行数据查询。在一种可能的实施方式中,本发明实施例提供的上述数据查询方法中,根据预先创建的索引按照索引引擎的方式进行数据查询,包括:根据所述索引字段,确定预先创建的索引中所述索引字段对应的ID号,根据所述ID号在数据库中确定所述非索引字段对应的结果。在一种可能的实施方式中,本发明实施例提供的上述数据查询方法中,按照倒排索引的方式在本地创建索引。相应地,本发明实施例提供了一种数据查询装置,该装置包括:数据接收模块,用于接收用户发送的查询语句,并将所述查询语句转化为逻辑执行计划树;数据判断模块,用于根据转化后的逻辑执行计划树中包含的算子判断所述查询语句是否为复杂语句,若是,则按照数据库查询方式进行数据查询;否则,根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询。在一种可能的实施方式中,本发明实施例提供的上述数据查询装置中,所述数据判断模块根据转化后的逻辑执行计划树判断所述查询语句是否为复杂语句,具体用于:判断转化后的逻辑执行计划树中是否包括联接算子或聚集算子,若是则确定所述查询语句为复杂语句,否则,为简单语句。在一种可能的实施方式中,本发明实施例提供的上述数据查询装置中,该装置还包括:转换器,用于在确定所述查询语句为简单语句后,且根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询之前,将所述查询语句进行解析,并转化为搜索引擎所支持的语句。在一种可能的实施方式中,本发明实施例提供的上述数据查询装置中,所述数据判断模块根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询,具体用于:若所述查询语句为简单语句,判断所述查询语句返回的字段是否包括非索引字段,若是则根据预先创建的索引按照索引引擎的方式进行数据查询;否则根据预先创建的索引按照搜索引擎的方式进行数据查询。在一种可能的实施方式中,本发明实施例提供的上述数据查询装置中,所述数据判断模块根据预先创建的索引按照索引引擎的方式进行数据查询,具体用于:根据所述索引字段,确定预先创建的索引中所述索引字段对应的ID号,根据所述ID号在数据库中确定所述非索引字段对应的结果。本发明有益效果如下:通过本发明实施例提供的一种数据查询的方法及装置,所述数据查询方法包括:首先接收用户发送的查询语句,并将所述查询语句转化为逻辑执行计划树;然后根据转化后的逻辑执行计划树中包含的算子判断所述查询语句是否为复杂语句,若是,则按照数据库查询方式进行数据查询;否则,根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询。因此,本发明实施例提供的数据查询方法通过判断查询语句是否为复杂句,而选择不同的数据查询路径,若查询语句为复杂句则直接通过数据库查询的方式进行数据查询,若查询语句为简单句则通过搜索引擎或索引引擎的方式进行数据查询,最后反馈查询语句对应的信息给用户,从而提高了数据查询的效率。附图说明图1为现有技术提供的一种倒排索引的方法示意图;图2为本发明实施例提供的一种数据查询方法的流程示意图之一;图3为本发明实施例提供的一种数据查询方法的流程示意图之二;图4为本发明实施例提供的一种数据查询方法的流程示意图之三;图5为本发明实施例提供的一种数据查询装置的结构示意图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。本发明实施例提供了一种数据查询方法及装置,用以在数据查询时,根据自身的判断确定各个查询语句的查询路径,提高数据查询的效率。参见图2,本发明实施例提供的一种数据查询方法,该方法包括:S201、接收用户发送的查询语句,并将查询语句转化为逻辑执行计划树;S202、根据转化后的逻辑执行计划树中包含的算子判断查询语句是否为复杂语句,若是则执行步骤S203,否则执行步骤S204;S203、按照数据库查询方式进行数据查询;S204、根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询。需要说明的是,本发明实施例提供的一种数据查询方法中,预先在本地针对数据库中的字段创建索引,建立的索引供给数据查询使用,即索引引擎用于提供给用户进行数据查询实用,索引引擎可以为自己设计的框架引擎,也可以为lucene等成熟的索引引擎,本发明实施例不做具体限定。通过本发明实施例提供的一种数据查询方法,首先接收用户发送的查询语句,并将查询语句转化为逻辑执行计划树;然后根据转化后的逻辑执行计划树中包含的算子判断查询语句是否为复杂语句,若是,则按照数据库查询方式进行数据查询;否则,根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询。因此,本发明实施例提供的数据查询方法通过判断查询语句是否为复杂句,而选择不同的数据查询路径,若查询语句为复杂句则直接通过数据库查询的方式进行数据查询,若查询语句为简单句则通过搜索引擎或索引引擎的方式进行数据查询,最后反馈查询语句对应的信息给用户,从而提高了数据查询的效率。在具体实施例中,本发明实施例提供的上述数据查询方法中,按照倒排索引的方式在本地创建索引。具体地,采用倒排索引方式并使用分页查询,一次返回很少的记录,使得在普通查询或模糊查询的操作中速度较快,提高了数据索引的速度。在具体实施例中,本发明实施例提供的上述数据查询方法中,步骤S202中根据转化后的逻辑执行计划树中包含的算子判断查询语句是否为复杂语句,包括:判断转化后的逻辑执行计划树中是否包括联接算子或聚集算子,若是则确定所述查询语句为复杂语句,否则,为简单语句。具体地,接收的用户发送查询语句为SQL语句,为了进一步判断该查询语句包括的内容,需要通过执行器对该查询语句进行词法解析,语法解析以及语义检查,并转化成逻辑执行计划树,其中该逻辑执行计划树中包括多个算子,以及每个算子之间对应的表达式。其中算子包括投影(project)、选择(select),联接(join),聚集(groupby),扫描表(scan)等。本发明实施例中将查询语句中包括联接算子或聚集算子的作为复杂语句。以上仅是举例说明判断查询语句是否为复杂语句的原则,在具体实施时,根据查询语句的执行计划树中是否包含的算子判断是否为复杂语句的原则不限于本发明实施例提供的上述方法,还可以是本领域技术人员可知的其他方法,在此不做限定。在具体实施例中,若查询语句中存在2表联接算子的条件时,采用分布式索引的操作需要将满足过滤条件的记录全部得到,然后在得到的所有记录中进行联接操作;由于lucene是分页查询,若一次查询只能得到24条,导致需要进行多次查询才能最终得到满足条件的结果,使得数据查询的速度非常慢。例如,SelectA.a,B.bfromA,BwhereA.a>100andB.b>500anda.id=b.id.。在lucene框架中该部分的实现过程为:执行A.a得到A表所有满足条件的记录,需要对索引记录进行全局扫描,需进行多次查询,同时执行B.b得到所有B表满足条件的记录,然后执行join操作。同理,类似的复杂操作还包括聚集操作。因此,若确定查询语句为复杂语句,则采用数据库查询的方式进行数据查询。具体地,在执行联接操作或聚集操作时,数据库可依赖联接索引(joinindex)或者聚集索引(groupbyindex)等方法,在数据库中进行查询,相比于采用索引引擎的方式进行查询的效率高,速度快。在具体实施例中,本发明实施例提供的上述数据查询方法中,确定查询语句为简单语句后,且根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询之前,该方法还包括:将查询语句进行解析,并转化为搜索引擎所支持的语句。具体地,当确定查询语句为简单语句,且采用搜索引擎或者索引引擎的方式进行数据查询前,需要将该查询语句进行转换。转换前的查询语句为数据库支持的查询语句,对该查询语句进行解析的具体操作为:解析查询语句中select算子中的表达式,查找并匹配其中的大于、等于、不等于、之间(betweenand)、像(like)、不像(notlike)、在(in)或者不在(notin)等条件的表达式。然后将该查询语句的表达式转化为搜索引擎支持的语句,其中,转化规则为:数据库中的a>1,转化为搜索引擎支持的a:[1TO*];数据库中between1and2转化为搜索引擎支持的a:[1TO2];数据库中的ain(1,2)转化为(a:1ORa:2)等。当查找完所有的条件表达式后,利用AND或者OR,括号等组合操作符将各个搜索引擎支持的条件组合在一起。从而完成查询语句的转化。以上仅是举例说明查询语句转化为搜索引擎支持的语句的具体方法,在具体实施时,转化原则不限于本发明实施例提供的上述方法,还可以是本领域技术人员可知的其他方法,在此不做限定。在具体实施例中,参见图3,本发明实施例提供的上述数据查询方法中,步骤S204根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询,具体包括:S2041、若查询语句为简单语句,判断查询语句返回的字段是否包括非索引字段,若是则执行步骤S2042;否则执行步骤S2043;S2042、根据预先创建的索引按照索引引擎的方式进行数据查询;S2043、根据预先创建的索引按照搜索引擎的方式进行数据查询。具体地,确定查询语句为简单语句后,进一步判断该查询语句中的字段是否包括非索引字段。例如,在数据库中表picrecord的字段包括ID,car_num,car_color,dev_chnname,car_imgurl,其中倒排索引的字段包括“car_num,car_color”。若查询语句为selectcar_numfrompicrecordwherecar_numlike‘浙*’,从select语句中确定该索引字段为car_num,且该car_num属于索引字段,因此该查询语句中不包括非索引字段;若查询语句为selectcar_num,car_imgurlfrompicrecordwherecar_numlike‘浙*’,从select语句中确定该索引字段为car_num和car_imgurl,且该car_num属于索引字段,而car_imgurl不属于索引字段,因此该查询语句中包括非索引字段。进一步地,查询语句中仅包括索引字段,则直接从倒排索引的字段中确定查询语句的结果,并反馈给用户,从而节省了采用数据库查询的时间,提高了数据查询的效率。以上仅是举例说明简单语句中是否包括非索引字段的具体方法,在具体实施时,不限于本发明实施例提供的上述方法,还可以是本领域技术人员可知的其他方法,在此不做限定。在具体实施例中,本发明实施例提供的上述数据查询方法中,根据预先创建的索引按照索引引擎的方式进行数据查询,包括:根据索引字段,确定预先创建的索引中所述索引字段对应的ID号,根据该ID号在数据库中查找非索引字段对应的结果。例如,在数据库中表picrecord的字段包括ID,car_num,car_color,dev_chnname,car_imgurl,其中倒排索引的字段包括“car_num,car_color”。若查询语句为selectcar_num,car_imgurlfrompicrecordwherecar_numlike‘浙*’,从select语句中确定该索引字段为car_num和car_imgurl,且该car_num属于索引字段,而car_imgurl不属于索引字段。因此根据索引字段car_num确定数据库中的car_num的ID地址,然后在数据库的ID地址中查找car_imgurl的特征,并将该特征结果反馈给用户。以上仅是举例说明简单语句中包括非索引字段的查询方法,在具体实施时,不限于本发明实施例提供的上述方法,还可以是本领域技术人员可知的其他方法,在此不做限定。另外,在数据库中表picrecord的字段包括ID,car_num,car_color,dev_chnname,car_imgurl,其中倒排索引的字段包括“car_num,car_color”。若查询语句为selectcar_color,count(*)frompicrecordwherecar_numlike‘浙*’groupbycar_color。可见该查询语句中包括groupby算子,则确定该查询语句为复杂语句,可选择数据库查询方式进行数据查询。综上所述,本发明实施例提供的一种数据查询方法,包括:接收用户发送的查询语句,并通过执行器将该查询语句转换为逻辑执行计划树;然后根据该逻辑执行计划树中包括的算子确定该查询语句是否为复杂语句;当确定该查询语句为复杂语句则采用数据库查询的方式进行数据查询,其中包括普通查询、模糊查询;当确定该查询语句为简单语句,则将该查询语句转化为搜索引擎支持的语句,并判断该查询语句中是否包括非索引字段;若该查询语句不包括非索引字段,则按照搜索引擎的方式进行数据查询;若该查询语句中包括非索引字段,则根据索引字段,确定预先创建的索引中所述索引字段对应的ID号,根据该ID号在数据库中查找非索引字段对应的结果。因此,本发明实施例提供的数据查询方法包括三条查询路径,从而根据查询语句的特性确定最优的查询路径,提高数据查询的效率。下面通过具体实施例介绍本发明实施例提供的一种数据查询方法的具体流程图。参见图4,本发明实施例提供的一种数据查询方法的步骤包括:S401、接收用户发送的查询语句;S402、执行器对该查询语句进行解析,并转化为逻辑执行计划树;其中,数据查询结构通过语法分析器模块和查询编译器模块将查询语句进行解析,并转化为逻辑执行计划树。S403、查询该逻辑执行计划树,并确定该逻辑执行计划树中是否包括联接算子或聚集算子,若是则执行步骤S404,否则执行步骤S405;S404、根据数据库查询方法进行数据查询,然后执行步骤S409;S405、将该查询语句转化为搜索引擎支持的语句,然后执行步骤S406;S406、判断该查询语句是否包括非索引字段,若是则执行步骤S407,否则执行步骤S408;S407、确定该索引字段所对应的ID号,并发送给数据库,让数据库补全非索引字段所对应的特征,然后执行步骤S404;S408、根据预先创建的索引按照搜索引擎的方式进行数据查询,然后执行步骤S409;S409、将查询语句所对应的结果反馈给用户。基于同一发明思想,参见图5,本发明实施例提供的一种数据查询装置,包括:数据接收模块51,用于接收用户发送的查询语句,并将查询语句转化为逻辑执行计划树;数据判断模块52,用于根据转化后的逻辑执行计划树中包含的算子判断所述查询语句是否为复杂语句,若是,则按照数据库查询方式进行数据查询;否则,根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询。在具体实施例中,本发明实施例提供的上述数据查询装置中,数据判断模块52根据转化后的逻辑执行计划树中包含的算子判断所述查询语句是否为复杂语句,具体用于:判断转化后的逻辑执行计划树中是否包括联接算子或聚集算子,若是则确定所述查询语句为复杂语句,否则,为简单语句。在具体实施例中,本发明实施例提供的上述数据查询装置中,该装置还包括:转换器,用于在确定所述查询语句为简单语句后,且根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询之前,将所述查询语句进行解析,并转化为搜索引擎所支持的语句。在具体实施例中,本发明实施例提供的上述数据查询装置中,数据判断模块52根据预先创建的索引按照搜索引擎或者索引引擎的方式进行数据查询,具体用于:若所述查询语句为简单语句,判断所述查询语句返回的字段是否包括非索引字段,若是则根据预先创建的索引按照索引引擎的方式进行数据查询;否则根据预先创建的索引按照搜索引擎的方式进行数据查询。在具体实施例中,本发明实施例提供的上述数据查询装置中,数据判断模块52根据预先创建的索引按照索引引擎的方式进行数据查询,具体用于:根据所述索引字段,确定预先创建的索引中所述索引字段对应的ID号,根据所述ID号在数据库中确定所述非索引字段对应的结果。综上所述,本发明实施例提供的一种数据查询方法及装置,该数据查询方法包括:接收用户发送的查询语句,并通过执行器将该查询语句转换为逻辑执行计划树;然后根据该逻辑执行计划树中包括的算子确定该查询语句是否为复杂语句;当确定该查询语句为复杂语句则采用数据库查询的方式进行数据查询,其中包括普通查询、模糊查询;当确定该查询语句为简单语句,则将该查询语句转化为搜索引擎支持的语句,并判断该查询语句中是否包括非索引字段;若该查询语句不包括非索引字段,则按照搜索引擎的方式进行数据查询;若该查询语句中包括非索引字段,则根据索引字段,确定预先创建的索引中所述索引字段对应的ID号,根据该ID号在数据库中查找非索引字段对应的结果。因此,本发明实施例提供的数据查询方法包括三条查询路径,从而根据查询语句的特性确定最优的查询路径,提高数据查询的效率。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1