发明内容
本说明书实施例的目的是提供一种索引的处理方法、装置及设备,以提供一种能够快速高效的生成最佳索引的技术方案。
为了实现上述技术方案,本说明书实施例是这样实现的:
本说明书实施例提供的一种索引的处理方法,所述方法包括:
获取预定业务场景下的数据查询指令信息;
对所述数据查询指令信息进行解析,得到所述预定业务场景下的数据查询条件信息;
基于所述预定业务场景下的数据查询条件信息,生成所述预定业务场景下的第一索引;
基于所述预定业务场景下的第一索引,确定所述预定业务场景下的最佳索引。
可选地,所述基于所述预定业务场景下的第一索引,确定所述预定业务场景下的最佳索引,包括:
将所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引;
对所述预定业务场景下处理后的索引进行语法拼装处理,确定所述预定业务场景下的最佳索引。
可选地,所述预定业务场景下的第二索引包括所述预定业务场景下当前已存在的索引、用户预先设置的所述预定业务场景下的索引和基于用户设置的干预数据生成的索引中的一项或多项。
可选地,所述将所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引,包括:
根据所述第一索引和所述第二索引的优先级,对所述第一索引和所述第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引。
可选地,所述将所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行去重处理,得到所述预定业务场景下处理后的索引,包括:
基于预定的全排列组合处理算法,对所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行去重处理,得到所述预定业务场景下处理后的索引。
可选地,所述基于所述预定业务场景下的数据查询条件信息,生成所述预定业务场景下的第一索引,包括:
基于所述预定业务场景下的数据查询条件信息和预定的最左匹配原则,生成所述预定业务场景下的第一索引。
可选地,所述数据查询指令信息包括结构化查询语言SQL语句信息。
可选地,所述方法还包括:
接收预定业务场景下的数据查询指令;
获取与所述数据查询指令相匹配的所述预定业务场景下的最佳索引;
基于获取的最佳索引,获取相应的目标数据,并将所述目标数据作为数据查询结果进行输出。
本说明书实施例提供的一种索引的处理装置,所述装置包括:
指令信息获取模块,用于获取预定业务场景下的数据查询指令信息;
解析模块,用于对所述数据查询指令信息进行解析,得到所述预定业务场景下的数据查询条件信息;
索引生成模块,用于基于所述预定业务场景下的数据查询条件信息,生成所述预定业务场景下的第一索引;
最佳索引确定模块,用于基于所述预定业务场景下的第一索引,确定所述预定业务场景下的最佳索引。
可选地,所述最佳索引确定模块,包括:
索引处理单元,用于将所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引;
最佳索引确定单元,用于对所述预定业务场景下处理后的索引进行语法拼装处理,确定所述预定业务场景下的最佳索引。
可选地,所述预定业务场景下的第二索引包括所述预定业务场景下当前已存在的索引、用户预先设置的所述预定业务场景下的索引和基于用户设置的干预数据生成的索引中的一项或多项。
本说明书实施例提供的一种索引的处理设备,所述索引的处理设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取预定业务场景下的数据查询指令信息;
对所述数据查询指令信息进行解析,得到所述预定业务场景下的数据查询条件信息;
基于所述预定业务场景下的数据查询条件信息,生成所述预定业务场景下的第一索引;
基于所述预定业务场景下的第一索引,确定所述预定业务场景下的最佳索引。
由以上本说明书实施例提供的技术方案可见,本说明书实施例通过获取预定业务场景下的数据查询指令信息,然后,对该数据查询指令信息进行解析,得到预定业务场景下的数据查询条件信息,基于预定业务场景下的数据查询条件信息,生成预定业务场景下的第一索引,基于预定业务场景下的第一索引,确定预定业务场景下的最佳索引,这样,基于业务场景,预先提取出已存在的数据查询指令信息,通过解析得到其中的数据查询条件信息,并以此生成初始索引(即第一索引),然后,可以基于初始索引进一步确定最佳索引(如通过初始索引,在结合用户的干预数据等确定最佳索引等),从而可以快速高效的确定预定业务场景下的最佳索引,而且不需要损耗大量的人力资源。
具体实施方式
本说明书实施例提供一种索引的处理方法、装置及设备。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
实施例一
如图1所示,本说明书实施例提供一种索引的处理方法,该方法的执行主体可以为服务器或终端设备,其中,服务器可以是由一个单独的服务器构成,也可以是由多个服务器构成的服务器集群,该服务器可以是某数据库的查询服务器等,终端设备可以如手机或平板电脑等移动终端设备,还可以如个人计算机等设备。该方法可以用于生成针对某业务场景的索引,并确定该业务场景下的最佳索引等处理中,该方法具体可以包括以下步骤:
在步骤S102中,获取预定业务场景下的数据查询指令信息。
其中,预定业务场景可以是预先设定的某业务所对应的数据查询场景,例如支付业务或保险业务等,数据查询指令信息可以是数据查询指令的内容信息等,其中的数据查询指令可以是通过与预定的编程语言编写的用于查询某数据的指令,编程语言可以包括SQL(Structured Query Language,结构化查询语言)等,本说明书实施例对此不做限定。
在实施中,随着网络技术和终端技术的不断发展,需要处理或需要存储的数据量越来越大,尤其是自从云概念出现以来,集中的数据量更加庞大。为了在海量的数据中快速查找到需要的特定数据,索引有着非常重要的意义。
索引是对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列的值的集合和相应的指向表中物理标识上述各值的数据页的逻辑指针清单。具体地,索引提供指向存储在表中的指定列的数据值的指针,然后,根据预先指定的排序顺序对上述指针进行排序,数据库使用索引以找到特定值,然后顺指针找到包含该特定值的行,这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。在一些离线数据平台中,可以使用SQL on HBase(HBase可以是建立在Hadoop文件系统之上的分布式面向列的数据库)的方式对在线数据执行查询操作,而为了提高查询效率,就需要建立和维护大量的索引,但是索引的设计与维护工作面临一定的困难,可以主要体现在两个方面:一方面,构建索引的过程中需要技术人员对索引的原理等相关知识进行充分的了解,同时还需要结合特定的SQL场景进行设计,另一方面,该离线数据平台的业务增长量可能会非常快,索引的工作可能会耗费过多的人力成本,因此,需要提供一种能够自动化生成最佳索引的技术方案,为了实现上述技术方案,可以在用户使用SQL语句进行数据查询时,数据库后台可以自动对该SQL语句中的数据查询条件进行分析,然后,可以基于SQL特点,生成推荐的索引,之后,可以对比生成推荐的索引前后,数据查询的性能和系统开销情况,用以评价生成推荐的索引过程的实际收益,重复以上处理过程,持续进行优化,直到得到最佳索引。上述技术方案是一种被动式的索引优化方案,用户使用简单,完全不需要关心索引的问题,然而上述技术方案也存在一些问题,如在一些对数据查询的响应时间要求苛刻的场景中,是无法接受上述类似迭代式的优化方式,而是往往要求一次性生成最佳索引,此外,上述技术方案不具备干预能力,用户所掌握的、且与实际业务查询场景相关的先验知识无法应用到上述索引优化过程中等。为此,本说明书实施例提供一种能够生成最佳索引的技术方案,具体可以包括以下内容:
每当用户查询某数据库中的数据之前,可以预先记录或引导该用户设置查询该数据的过程中的各类相关数据或信息,例如可以记录或引导该用户设置查询该数据所使用的查询指令,以及用户查询的该数据所属的业务的相关信息和该业务所对应的数据查询场景的相关信息,其中的查询指令可以是由SQL语句构成的指令等。
在实际应用中,可以预先设定不同业务场景下最佳索引的确定周期,不同的业务场景可以设定不同的最佳索引确定周期,还可以为不同的业务场景设定相同的最佳索引确定周期等。当达到设定的周期(如1小时、1天等)时,可以启动对某业务场景(可以为预定业务场景)下的最佳索引的处理机制,此时,可以从记录或用户设置的数据或信息中提取该预定业务场景下的相关数据或信息,可以从提取的数据或信息中获取预定业务场景下的数据查询指令的内容信息,从而得到预定业务场景下的数据查询指令信息(在实际应用中,可以是预定业务场景下的SQL集合)。
在步骤S104中,对上述数据查询指令信息进行解析,得到预定业务场景下的数据查询条件信息。
其中,数据查询条件信息可以是数据查询条件的内容信息,数据查询条件可以是在数据库中查询某数据的过程中提供的能够查询到该数据的条件,例如,数据查询指令信息为SELECT customer_id,first_name FROM Customer_Data WHERE first_name="Frankie"(所表达的含义可以为从Customer_Data表中查询customer_id以及first_name的信息,并且提取出每列中first_name的值为Frankie的信息),则数据查询条件信息可以为“first_name="Frankie"”等。
在实施中,通过上述步骤S102的处理得到预定业务场景下的数据查询指令信息后,可以确定编写数据查询指令的编程语言,然后,可以基于确定的编程语言的语法规范或语句的编写规范等,对上述数据查询指令信息进行解析,得到预定业务场景下的数据查询条件信息。在实际应用中,由于数据查询指令信息可能包括多个,因此,可以得到预定业务场景下的数据查询条件信息的集合。
例如,如果预定业务场景下的数据查询指令信息均由SQL编写,则可以根据SQL语法规范或语句编写规范分别对上述每一条数据查询指令信息进行解析,可以从中获取数据查询指令信息中包含的数据查询条件信息,例如上述示例,即数据查询指令信息为SQL语句“SELECT customer_id,first_name FROM Customer_Data WHERE first_name="Frankie"”,则从该数据查询指令信息解析出的数据查询条件信息为“first_name="Frankie"”。
在步骤S106中,基于预定业务场景下的数据查询条件信息,生成预定业务场景下的第一索引。
在实施中,基于上述步骤S104的处理得到预定业务场景下的数据查询条件信息后,可以基于上述数据查询条件信息生成预定业务场景下的第一索引,其中,第一索引可以属于某一种类型,例如,第一索引可以属于唯一索引(不允许两行具有相同的索引值)、主键索引(主键索引要求主键中的每个值是唯一的)、聚集索引(表中各行的物理顺序与值的逻辑或索引顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引)或非聚集索引(表中各行的物理顺序与键值的逻辑或索引顺序不匹配,表中可以有249个非聚集索引)等类型。在生成预定业务场景下的第一索引的过程中,可以根据第一索引所属的不同类型,生成相对应的索引,例如,第一索引所属类型为唯一索引类型,则可以生成唯一索引类型的第一索引,再例如,第一索引所属类型为聚集索引类型,则可以生成聚集索引类型的第一索引等。
在步骤S108中,基于预定业务场景下的第一索引,确定预定业务场景下的最佳索引。
在实施中,针对预定业务场景,用户可以根据某实际情况或特殊情况预先设定一个或多个索引,此外,服务器或终端设备中还可以预先存储有针对预定业务场景的索引,该索引可以是上一周期或其它周期生成的索引,还可以是技术人员或用户设置的索引等。服务器或终端设备可以基于预定业务场景,收集第一索引、用户预先设定的索引和预先存储的索引等,然后,可以对收集的索引进行分析处理,具体如可以将相同的索引进行去重处理,可以对不完整的索引进行填充处理或删除,然后,可以基于预定编程语言的语法,对上述多个索引进行语法拼装处理,得到预定业务场景下的最佳索引。
通过上述处理过程,得到预定业务场景下的最佳索引后,可以使用上述最佳索引获取相应的数据,具体地,如图2所示,当用户需要查找某数据时,可以使用某编程语言,通过终端设备编写相应的数据查询指令,然后,可以将该数据查询指令输入到服务器的数据库中执行,可以基于该数据查询指令中包含的数据查询条件信息确定是否包含索引,如果包含,则可以从上述最佳索引中获取与该数据查询条件信息相对应的最佳索引在数据库中查询相应的数据,并可以将查询到的数据进行输出。上述处理过程,由于已经预先引导用户设置预定业务场景下需要使用的数据查询指令(如SQL语句指令等),因此,可以基于数据查询指令一次性生成相应的最佳索引。
本说明书实施例提供一种索引的处理方法,通过获取预定业务场景下的数据查询指令信息,然后,对该数据查询指令信息进行解析,得到预定业务场景下的数据查询条件信息,基于预定业务场景下的数据查询条件信息,生成预定业务场景下的第一索引,基于预定业务场景下的第一索引,确定预定业务场景下的最佳索引,这样,基于业务场景,预先提取出已存在的数据查询指令信息,通过解析得到其中的数据查询条件信息,并以此生成初始索引(即第一索引),然后,可以基于初始索引进一步确定最佳索引(如通过初始索引,在结合用户的干预数据等确定最佳索引等),从而可以快速高效的确定预定业务场景下的最佳索引,而且不需要损耗大量的人力资源。
实施例二
如图3所示,本说明书实施例提供一种索引的处理方法,该方法的执行主体可以为服务器或终端设备,其中,服务器可以是由一个单独的服务器构成,也可以是由多个服务器构成的服务器集群,该服务器可以是某数据库的查询服务器等,终端设备可以如手机或平板电脑等移动终端设备,还可以如个人计算机等设备。该方法可以用于生成针对某业务场景的索引,并确定该业务场景下的最佳索引等处理中,该方法具体可以包括以下步骤:
在步骤S302中,获取预定业务场景下的数据查询指令信息。
其中,数据查询指令信息可以包括结构化查询语言SQL语句信息。
需要说明的是,用户可以对预先设置的上述数据查询指令进行修改,修改后,服务器或终端设备还可以基于本实施例的处理过程重新生成新的最佳索引。
在步骤S304中,对上述数据查询指令信息进行解析,得到预定业务场景下的数据查询条件信息。
在步骤S306中,基于预定业务场景下的数据查询条件信息和预定的最左匹配原则,生成预定业务场景下的第一索引。
其中,最左匹配原则可以是指在使用索引的过程中,通过从最左侧开始往右侧依次对待查询内容进行匹配的查询原则等,例如,数据项为复合的数据结构,如(name,age,sex),当需要查询的数据为(张三,20,F)时,最左匹配原则可以优先比较数据库中的name数据项是否为“张三”,如果某name数据项的内容与“张三”相同,则再依次比较age数据项和sex数据项,直到查询到上述查询结果为止。
在实施中,基于上述步骤S304的处理得到预定业务场景下的数据查询条件信息后,可以基于上述数据查询条件信息,并通过最左匹配原则生成预定业务场景下的第一索引,其中,第一索引可以属于某一种类型,例如,第一索引可以属于唯一索引、主键索引、聚集索引或非聚集索引等类型。在生成预定业务场景下的第一索引的过程中,可以根据第一索引所属的不同类型,生成相对应的索引等。
在步骤S308中,将预定业务场景下的第一索引和预先存储的预定业务场景下的第二索引进行重组处理和/或去重处理,得到预定业务场景下处理后的索引。
其中,预定业务场景下的第二索引可以包括预定业务场景下当前已存在的索引、用户预先设置的预定业务场景下的索引和基于用户设置的干预数据生成的索引中的一项或多项,其中的干预数据可以是用户或技术人员掌握的与实际应用中预定业务场景相关的先验知识等数据。重组处理可以是两个或多个数据进行重新组合以得到完整数据等处理。去重处理可以是去除存在重复的数据等处理。
在实施中,考虑到预定业务场景下不仅仅包含第一索引,还可以包含其它索引,为了使得后续得到的最佳索引的准确定更高,可以获取预定业务场景下的其它索引,即获取预先存储的预定业务场景下的第二索引,具体可以包括预定业务场景下当前已存在的索引、用户预先设置的预定业务场景下的索引和基于用户设置的干预数据生成的数据查询索等。得到上述第一索引和第二索引后,可以对第一索引和第二索引中存在不完整的索引进行重组处理,以使得该索引完整,此外,还可以对第一索引和第二索引中存在重复的索引进行去重处理,通过上述处理后,可以得到处理后的索引集合。
在实际应用中,不同的索引可能会设置有相应的优先级,可以基于优先级对索引进行上述处理,则上述步骤S308的处理还可以通过以下方式实现:根据第一索引和第二索引的优先级,对第一索引和第二索引进行重组处理和/或去重处理,得到预定业务场景下处理后的索引。
在实施中,可以将上述第一索引、预定业务场景下当前已存在的索引、用户预先设置的预定业务场景下的索引和基于用户设置的干预数据生成的索引等依次按照各个索引对应的优先级进行重组处理和/或去重处理,得到预定业务场景下处理后的索引。
针对上述去重处理的过程,为了保证最终得到的索引的更加精简和有效,可以通过全排列组合处理算法对索引进行去重处理,具体可以包括以下内容:基于预定的全排列组合处理算法,对预定业务场景下的第一索引和预先存储的预定业务场景下的第二索引进行去重处理,得到预定业务场景下处理后的索引。
在实施中,可以对上述第一索引、预定业务场景下当前已存在的索引、用户预先设置的预定业务场景下的索引和基于用户设置的干预数据生成的索引等进行排列组合,确定排列组合的索引是否存在重复,如果存在,则可以执行去重处理,如果不存在,则可以继续进行排列组合,直到每一个索引均与剩余的其它索引进行排列组合为止,从而可以将上述第一索引、预定业务场景下当前已存在的索引、用户预先设置的预定业务场景下的索引和基于用户设置的干预数据生成的索引中重复的索引全部去除,从而得到更加精简和有效的索引。
在步骤S310中,对预定业务场景下处理后的索引进行语法拼装处理,确定预定业务场景下的最佳索引。
在实施中,可以获取预定业务场景中数据查询指令或索引所使用的编程语言,可以基于该编程语言的语法,对上述多个索引进行语法拼装处理,得到预定业务场景下的最佳索引。
通过上述处理过程,得到预定业务场景下的最佳索引后,可以使用上述最佳索引获取相应的数据,具体地,当用户需要查找某数据时,可以使用某编程语言编写相应的数据查询指令,然后,可以将该数据查询指令输入到数据库中执行,可以基于该数据查询指令中包含的数据查询条件信息确定是否包含索引,如果包含,则可以从上述最佳索引中获取与该数据查询条件信息相对应的最佳索引在数据库中查询相应的数据,并可以将查询到的数据进行输出。
需要说明的是,由于在预定业务场景下可能会包含多种不同的数据查询方式,不同的数据查询方式可以对应不同的索引,并可以对应有相应的最佳索引,也即是预定业务场景下,不同的数据查询方式可以对应不同的最佳索引。
通过上述处理过程,已经得到预定业务场景下的最佳索引后,可以通过该最佳索引为用户快速查询相应的数据,具体可以包括以下步骤S312~步骤S316的处理。
在步骤S312中,接收预定业务场景下的数据查询指令。
其中,数据查询指令可以由结构化查询语言SQL语句构成等。
在实施中,当用户需要查找某数据时,可以使用某编程语言编写相应的数据查询指令,然后,可以将该数据查询指令输入到服务器中的数据库执行。
在步骤S314中,获取与上述数据查询指令相匹配的预定业务场景下的最佳索引。
在实施中,可以基于该数据查询指令中包含的数据查询条件信息确定是否包含索引,如果基于该数据查询指令中包含的数据查询条件信息确定包含索引,则可以从上述最佳索引中获取与该数据查询条件信息相对应或相匹配的最佳索引。如果基于该数据查询指令中包含的数据查询条件信息确定不包含索引,则可以基于该数据查询指令(即上述SQL语句)进行相应数据的查询。
在步骤S316中,基于获取的最佳索引,获取相应的目标数据,并将目标数据作为数据查询结果进行输出。
其中,目标数据可以是用户需要查询的数据。
需要说明的是,本说明书实施例基于业务场景,预先提取出可能存在的SQL集合,可以在最佳索引生成完毕后,再允许新的SQL查询条件输入,这样,可以保证在任何时候,数据查询的响应速率都是高效的。
另外,本说明书实施例通过对索引生成步骤的抽象,使得本实施例提供的步骤具备移植到其他业务场景的能力,而非特定数据库平台的耦合。而且,本说明书实施例允许用户基于先验知识对最佳索引的确定进行自主干预,从而使得最佳索引更加准确。
本说明书实施例提供一种索引的处理方法,通过获取预定业务场景下的数据查询指令信息,然后,对该数据查询指令信息进行解析,得到预定业务场景下的数据查询条件信息,基于预定业务场景下的数据查询条件信息,生成预定业务场景下的第一索引,基于预定业务场景下的第一索引,确定预定业务场景下的最佳索引,这样,基于业务场景,预先提取出已存在的数据查询指令信息,通过解析得到其中的数据查询条件信息,并以此生成初始索引(即第一索引),然后,可以基于初始索引进一步确定最佳索引(如通过初始索引,在结合用户的干预数据等确定最佳索引等),从而可以快速高效的确定预定业务场景下的最佳索引,而且不需要损耗大量的人力资源。
实施例三
以上为本说明书实施例提供的索引的处理方法,基于同样的思路,本说明书实施例还提供一种索引的处理装置,如图4所示。
该索引的处理装置包括:指令信息获取模块401、解析模块402、索引生成模块403和最佳索引确定模块404,其中:
指令信息获取模块401,用于获取预定业务场景下的数据查询指令信息;
解析模块402,用于对所述数据查询指令信息进行解析,得到所述预定业务场景下的数据查询条件信息;
索引生成模块403,用于基于所述预定业务场景下的数据查询条件信息,生成所述预定业务场景下的第一索引;
最佳索引确定模块404,用于基于所述预定业务场景下的第一索引,确定所述预定业务场景下的最佳索引。
本说明书实施例中,所述最佳索引确定模块404,包括:
索引处理单元,用于将所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引;
最佳索引确定单元,用于对所述预定业务场景下处理后的索引进行语法拼装处理,确定所述预定业务场景下的最佳索引。
本说明书实施例中,所述预定业务场景下的第二索引包括所述预定业务场景下当前已存在的索引、用户预先设置的所述预定业务场景下的索引和基于用户设置的干预数据生成的索引中的一项或多项。
本说明书实施例中,所述索引处理单元,用于根据所述第一索引和所述第二索引的优先级,对所述第一索引和所述第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引。
本说明书实施例中,所述索引处理单元,用于基于预定的全排列组合处理算法,对所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行去重处理,得到所述预定业务场景下处理后的索引。
本说明书实施例中,所述索引生成模块403,用于基于所述预定业务场景下的数据查询条件信息和预定的最左匹配原则,生成所述预定业务场景下的第一索引。
本说明书实施例中,所述数据查询指令信息包括结构化查询语言SQL语句信息。
本说明书实施例中,所述装置还包括:
指令接收模块,用于接收预定业务场景下的数据查询指令;
最佳索引获取模块,用于获取与所述数据查询指令相匹配的所述预定业务场景下的最佳索引;
结果输出模块,用于基于获取的最佳索引,获取相应的目标数据,并将所述目标数据作为数据查询结果进行输出。
本说明书实施例提供一种索引的处理装置,通过获取预定业务场景下的数据查询指令信息,然后,对该数据查询指令信息进行解析,得到预定业务场景下的数据查询条件信息,基于预定业务场景下的数据查询条件信息,生成预定业务场景下的第一索引,基于预定业务场景下的第一索引,确定预定业务场景下的最佳索引,这样,基于业务场景,预先提取出已存在的数据查询指令信息,通过解析得到其中的数据查询条件信息,并以此生成初始索引(即第一索引),然后,可以基于初始索引进一步确定最佳索引(如通过初始索引,在结合用户的干预数据等确定最佳索引等),从而可以快速高效的确定预定业务场景下的最佳索引,而且不需要损耗大量的人力资源。
实施例四
以上为本说明书实施例提供的索引的处理装置,基于同样的思路,本说明书实施例还提供一种索引的处理设备,如图5所示。
所述索引的处理设备可以为上述实施例提供的终端设备或服务器。
索引的处理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器501和存储器502,存储器502中可以存储有一个或一个以上存储应用程序或数据。其中,存储器502可以是短暂存储或持久存储。存储在存储器502的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对索引的处理设备中的一系列计算机可执行指令。更进一步地,处理器501可以设置为与存储器502通信,在索引的处理设备上执行存储器502中的一系列计算机可执行指令。索引的处理设备还可以包括一个或一个以上电源503,一个或一个以上有线或无线网络接口504,一个或一个以上输入输出接口505,一个或一个以上键盘506。
具体在本实施例中,索引的处理设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对索引的处理设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
获取预定业务场景下的数据查询指令信息;
对所述数据查询指令信息进行解析,得到所述预定业务场景下的数据查询条件信息;
基于所述预定业务场景下的数据查询条件信息,生成所述预定业务场景下的第一索引;
基于所述预定业务场景下的第一索引,确定所述预定业务场景下的最佳索引。
本说明书实施例中,所述基于所述预定业务场景下的第一索引,确定所述预定业务场景下的最佳索引,包括:
将所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引;
对所述预定业务场景下处理后的索引进行语法拼装处理,确定所述预定业务场景下的最佳索引。
本说明书实施例中,所述预定业务场景下的第二索引包括所述预定业务场景下当前已存在的索引、用户预先设置的所述预定业务场景下的索引和基于用户设置的干预数据生成的索引中的一项或多项。
本说明书实施例中,所述将所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引,包括:
根据所述第一索引和所述第二索引的优先级,对所述第一索引和所述第二索引进行重组处理和/或去重处理,得到所述预定业务场景下处理后的索引。
本说明书实施例中,所述将所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行去重处理,得到所述预定业务场景下处理后的索引,包括:
基于预定的全排列组合处理算法,对所述预定业务场景下的第一索引和预先存储的所述预定业务场景下的第二索引进行去重处理,得到所述预定业务场景下处理后的索引。
本说明书实施例中,所述基于所述预定业务场景下的数据查询条件信息,生成所述预定业务场景下的第一索引,包括:
基于所述预定业务场景下的数据查询条件信息和预定的最左匹配原则,生成所述预定业务场景下的第一索引。
本说明书实施例中,所述数据查询指令信息包括结构化查询语言SQL语句信息。
本说明书实施例中,还包括:
接收预定业务场景下的数据查询指令;
获取与所述数据查询指令相匹配的所述预定业务场景下的最佳索引;
基于获取的最佳索引,获取相应的目标数据,并将所述目标数据作为数据查询结果进行输出。
本说明书实施例提供一种索引的处理设备,通过获取预定业务场景下的数据查询指令信息,然后,对该数据查询指令信息进行解析,得到预定业务场景下的数据查询条件信息,基于预定业务场景下的数据查询条件信息,生成预定业务场景下的第一索引,基于预定业务场景下的第一索引,确定预定业务场景下的最佳索引,这样,基于业务场景,预先提取出已存在的数据查询指令信息,通过解析得到其中的数据查询条件信息,并以此生成初始索引(即第一索引),然后,可以基于初始索引进一步确定最佳索引(如通过初始索引,在结合用户的干预数据等确定最佳索引等),从而可以快速高效的确定预定业务场景下的最佳索引,而且不需要损耗大量的人力资源。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书的实施例是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程索引的处理设备的处理器以产生一个机器,使得通过计算机或其他可编程索引的处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程索引的处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程索引的处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。