SQL执行方法及装置与流程

文档序号:14870594发布日期:2018-07-06 23:04阅读:128来源:国知局

本发明涉及业务支撑领域,具体涉及一种sql执行方法及装置。



背景技术:

内存数据库技术通过将数据库内容保存在内存中直接进行处理计算从而大幅度提高了数据库系统的处理能力。目前内存数据库在通信行业的实时计费、实时经分及大数据应用方面使用非常广泛,其产品类型繁多,比如:redis、extremedb、hana、timesten、berkeleydb、fastdb、gemfirexd、voltdb、memsql、sqlite、gbase8m、gigabase等,但业务大多选择sql型分布式内存数据库来处理相对复杂的oltp或olap业务。当用户以常用sql书写形式提交数据库,有的内存数据库执行效率很高,有的却非常低,而有的脚本根本无法执行。相同sql无法执行或执行效率不一,究其原因主要是没有按照相应产品特性编写适合sql。对于开发人员来说每个新项目都可能要学习新的产品技术、研究新的开发规范,增加学习成本;对于dba来说各种不同产品的运维要求都不一样,脚本优化方式也不一样,做跨平台平迁项目根本无法实现,运维难度非常大;在项目管理角度,整个项目从开发到上线交维都要很大投入,项目管理的成本和难度都增加不少。

目前包括开源的和商用版本的内存数据库产品,主要分为集中式和分布式内存数据库。集中式计算大多应用于oltp场景,而分布式计算大多应用于olap场景或oltp场景。由于实时内存数据库产品都不太成熟,各自产品对sql支撑程度不一,没有一种方案可解决上述问题。



技术实现要素:

针对现有技术存在的不足和缺陷,本发明提供一种sql执行方法及装置,实现不同sql型分布式内存数据库的统一开发。

一方面,本发明实施例提出一种sql执行方法,包括:

获取客户端提交的业务sql请求,其中,所述业务sql请求中包含待处理的sql;

利用训练好的分类器对所述待处理的sql进行分类,若所述待处理的sql不属于预先划分的sql类型,则对所述待处理的sql进行预处理,得到标准sql;

将所述标准sql提交至对应的sql型分布式内存数据库执行,在所述sql型分布式内存数据库执行完毕后,获取执行结果,并反馈给所述客户端,其中,所述预先划分的sql类型包括所有sql型分布式内存数据库共同支持的最低sql标准的sql类型。

可选地,所述对所述待处理的sql进行预处理,包括:

对所述待处理的sql进行解析,得到sql属性,其中,所述sql属性包括sql类型、操作对象、操作对象相关属性和/或对象处理要求;

根据所述sql属性,确定对应所述sql属性的关键条件,判断所述待处理的sql是否满足所述关键条件,根据判断结果,对所述待处理的sql进行编辑,使其满足所述sql型分布式内存数据库的sql标准,其中,所述关键条件为sql型分布式内存数据库中对应所述sql属性的标准sql相关的限制条件;

其中,所述将所述标准sql提交至对应的sql型分布式内存数据库执行,包括:

将编辑后的待处理的sql提交至所述sql型分布式内存数据库执行。

可选地,所述方法还包括:

对对所述待处理的sql的编辑过程进行记录,得到编辑过程信息,利用所述sql属性以及对所述分类器进行第一次训练所使用的训练样本对所述分类器进行重新训练,并将所述编辑过程信息以及对应的sql类型进行存储,其中,所述对应的sql类型为对所述分类器进行重新训练后,所述分类器所能有效识别的sql类型中新增的类型,所述对所述分类器进行第一次训练所使用的训练样本包括所述sql型分布式内存数据库不支持的sol。

可选地,若所述sql型分布式内存数据库为gemfirexd,所述sql类型为dql,所述操作对象为两张表,则所述操作对象相关属性包括:分布属性、分布字段属性以及指定关联对象表属性,所述关键条件包括:所述两张表均为分布表、所述两张表的分布字段一致以及所述两张表中一张表的建表语句包含colocatewith关键字;

其中,所述根据判断结果,对所述待处理的sql进行编辑,包括:

若所述两张表均为分布表,所述两张表的分布字段一致,所述两张表的建表语句均不包含colocatewith关键字,则创建所述两张表中较小的表的临时表,其中,该临时表的建表语句中包含用以指定所述两张表中较大的表为关联对象表的colocatewith关键字;

将所述较小的表的数据导入所述临时表,并将所述待处理的sql中所述较小的表的名称替换为所述临时表的名称。

可选地,所述临时表的建表语句中还包含用以指定所述临时表的释放时间的sql语句;

其中,在获取到与sql型分布式内存数据库gemfirexd连接的客户端提交的其它sql类型为dql且操作对象为第一数据表和第二数据表的其它待处理的sql后,所述根据判断结果,对所述待处理的sql进行编辑,包括:

若所述临时表还未被释放,则将所述其它待处理的sql中所述第一数据表的名称替换为所述临时表的名称,其中,所述第一数据表和第二数据表均为分布表,所述第一数据表和第二数据表的分布字段一致,所述第一数据表和第二数据表的建表语句均不包含colocatewith关键字,所述第一数据表为所述较小的表,且所述第一数据表为所述第一数据表和第二数据表中较小的表。

可选地,若获取到的客户端提交的其它待处理的sql属于对应有编辑过程信息的sql类型,其中,所述对应有编辑过程信息的sql类型包括所述sql型分布式内存数据库不支持的sol所属的sql类型,

所述对所述待处理的sql进行预处理,包括:

对所述其它待处理的sql按照所属的sql类型对应的编辑过程信息进行编辑。

可选地,所述方法还包括:

若所述待处理的sql属于对应的sql型分布式内存数据库支持的标准sql类型,则将所述待处理的sql直接提交至所述对应的sql型分布式内存数据库执行。

另一方面,本发明实施例提出一种sql执行装置,包括:

获取单元,用于获取客户端提交的业务sql请求,其中,所述业务sql请求中包含待处理的sql;

预处理单元,用于利用训练好的分类器对所述待处理的sql进行分类,若所述待处理的sql不属于预先划分的sql类型,则对所述待处理的sql进行预处理,得到标准sql;

反馈单元,用于将所述标准sql提交至对应的sql型分布式内存数据库执行,在所述sql型分布式内存数据库执行完毕后,获取执行结果,并反馈给所述客户端,其中,所述预先划分的sql类型包括所有sql型分布式内存数据库共同支持的最低sql标准的sql类型。

可选地,所述预处理单元,具体用于:

对所述待处理的sql进行解析,得到sql属性,其中,所述sql属性包括sql类型、操作对象、操作对象相关属性和/或对象处理要求;

根据所述sql属性,确定对应所述sql属性的关键条件,判断所述待处理的sql是否满足所述关键条件,根据判断结果,对所述待处理的sql进行编辑,使其满足所述sql型分布式内存数据库的sql标准,其中,所述关键条件为sql型分布式内存数据库中对应所述sql属性的标准sql相关的限制条件;

其中,所述反馈单元,具体用于:

将编辑后的待处理的sql提交至所述sql型分布式内存数据库执行。

可选地,所述装置还包括:

训练单元,用于对对所述待处理的sql的编辑过程进行记录,得到编辑过程信息,利用所述sql属性以及对所述分类器进行第一次训练所使用的训练样本对所述分类器进行重新训练,并将所述编辑过程信息以及对应的sql类型进行存储,其中,所述对应的sql类型为对所述分类器进行重新训练后,所述分类器所能有效识别的sql类型中新增的类型,所述对所述分类器进行第一次训练所使用的训练样本包括所述sql型分布式内存数据库不支持的sol。

本发明实施例提供的sql执行方法及装置,对于属于对应的sql型分布式内存数据库支持的标准sql类型的待处理的sql,可以将该待处理的sql直接提交至所述对应的sql型分布式内存数据库执行;对于分类器能有效识别分类、不属于对应的sql型分布式内存数据库支持的标准sql类型的待处理的sql,可以将其按照所属的sql类型对应的编辑过程信息进行编辑,并将编辑后的待处理的sql提交至对应的sql型分布式内存数据库执行;而对于分类器不能有效识别分类的待处理的sql,可以对所述待处理的sql进行预处理,得到标准sql,将所述标准sql提交至对应的sql型分布式内存数据库执行,整个方案当出现分类器不能有效识别分类的待处理的sql时,除了会对其进行预处理外,还会利用其对分类器进行训练,以使分类器能够对更多类型的sql语句进行分类,从而使得不同的业务迁移至任一sql型分布式内存数据库平台后仍然能够执行,解决现有的因不同sql型分布式内存数据库之间sql支撑标准不统一导致的无法实现跨平台sql迁移的问题;通过实施本方案,开发人员只需依照标准sql进行开发,开发完后正常测试、上线、交维即可即可,运维人员只需要考虑标准sql优化,容量管理问题,解决现有技术出现的因sql支撑标准不一所导致的产品学习难度大,开发、运维及项目管理难度大且成本高等问题,实现不同sql型分布式内存数据库的统一开发;另外,基于释放时间的设置可重复使用已经建立的数据表,而无需重新建立,因而能适当减少资源消耗。

附图说明

图1为本发明sql执行方法一实施例的流程示意图;

图2为本发明sql执行方法另一实施例的部分流程示意图;

图3为朴素贝叶斯分类的流程图;

图4为本发明sql执行装置一实施例的结构示意图;

图5为本发明电子设备一实施例的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参看图1,本实施例公开一种sql执行方法,包括:

s1、获取客户端提交的业务sql请求,其中,所述业务sql请求中包含待处理的sql;

s2、利用训练好的分类器对所述待处理的sql进行分类,若所述待处理的sql不属于预先划分的sql类型,则对所述待处理的sql进行预处理,得到标准sql;

s3、将所述标准sql提交至对应的sql型分布式内存数据库执行,在所述sql型分布式内存数据库执行完毕后,获取执行结果,并反馈给所述客户端,其中,所述预先划分的sql类型包括所有sql型分布式内存数据库共同支持的最低sql标准的sql类型。

需要说明的是,所述标准sql类型以平台已纳入的所有sql型分布式内存数据库共同支持的最低sql标准(如sql92、sql99等)类型为基准,以及对分类器初始训练后分类器所能有效识别的新的sql类型。若所述待处理的sql属于对应的sql型分布式内存数据库支持的标准sql类型,则将所述待处理的sql直接提交至所述对应的sql型分布式内存数据库执行。

本发明实施例提供的sql执行方法,首先获取客户端提交的业务sql请求;之后利用训练好的分类器对所述业务sql请求中包含的待处理的sql进行分类,若所述待处理的sql不属于预先划分的sql类型,则对所述待处理的sql进行预处理,得到标准sql;最后将所述标准sql提交至对应的sql型分布式内存数据库执行,在所述sql型分布式内存数据库执行完毕后,获取执行结果,并反馈给所述客户端,因所述预先划分的sql类型包括所有sql型分布式内存数据库共同支持的最低sql标准的sql类型,因而整个方案可以执行多种sql型分布式内存数据库不支持的非标准sql,从而便于解决现有技术出现的因sql支撑标准不一所导致的产品学习难度大,开发、运维及项目管理难度大且成本高的问题,实现不同sql型分布式内存数据库的统一开发。

在前述方法实施例的基础上,所述对所述待处理的sql进行预处理,可以包括:

对所述待处理的sql进行解析,得到sql属性,其中,所述sql属性包括sql类型、操作对象、操作对象相关属性和/或对象处理要求;

根据所述sql属性,确定对应所述sql属性的关键条件,判断所述待处理的sql是否满足所述关键条件,根据判断结果,对所述待处理的sql进行编辑,使其满足所述sql型分布式内存数据库的sql标准,其中,所述关键条件为sql型分布式内存数据库中对应所述sql属性的标准sql相关的限制条件;

其中,所述将所述标准sql提交至对应的sql型分布式内存数据库执行,可以包括:

将编辑后的待处理的sql提交至所述sql型分布式内存数据库执行。

本实施例中,比如普通的两表关联查询,一般数据库均支持,但gemfirexd却需要诸多限制条件,否则无法执行,需针对性优化或重构相应数据表(如修改复制表为分布表,指定相应字段colocatewith属性等)。对于需要指定colocatewith属性的情形,本实施例会自动创建业务提交的sql语句能够直接适用的临时表代替原表进行统计计算,下面以分布式内存数据库gemfirexd中两张分布表做关联查询需要特殊设定为例说明,sql预处理过程的具体处理过程。如图2所示公开了本发明中sql预处理流程,具体处理过程如下:

步骤1,sql获取:获取用户通过标准api接口提交的不属于预先划分的sql类型的待处理的sql;

步骤1中获取的待处理的sql为selecta.city_id,sum(user_consume)fromuser_laccia,user_infobwherea.user_id=b.user_idgroupbya.city_id;

步骤2,sql分解:拆分解析sql属性,sql属性具体包括如下至少一种:

1)sql类型:ddl、dml、dcl或dql等,步骤1中获取的待处理的sql类型为dql;

2)操作对象:库、表、视图、列或用户等,步骤1中获取的待处理的sql涉及两张表user_lacci(简记为a表)和user_info(简记为b表);

3)操作对象相关属性:由于数据库对象属性较多,需过滤后针对性分析,如步骤1中获取的待处理的sql中涉及2表关联查询(即sql类型为dql,操作对象为两张表),则仅需获取这2张表的分布属性、分布字段属性以及colocatewith属性,即分布属性、分布字段属性以及colocatewith属性为此种情况下的操作对象相关属性;

4)对象处理要求:根据对步骤1中获取的待处理的sql的关键字的分析(关键字包括select、sum和groupby)可以得出该sql需要执行分组做求和查询;

步骤3,获取建表语句,即根据两张表的建表语句进一步获取两张表的相关信息,例如对于图2所示的a表和b表的分布属性、分布字段属性,以及colocatewith属性的值(针对不同的sql属性,需要获取的操作对象的相关信息也不同);

步骤4,分析过程:关键条件(即sql型分布式内存数据库中对应所述sql属性的标准sql相关的限制条件)是否满足,对于图2所示的情形,即判断是否达到关联查询的条件:均为分布表、分布字段一致,至少一张表中包含colocatewith指定关联对象表部分;

步骤5,分析结果:对于图2所示的情形,a表和b表的分布属性的值均为partitionby(说明a表和b表均为分布表),分布字段属性的值即partitionby后紧跟的字段均为user_id(说明a表和b表分布字段一致),而colocatewith属性的值均为空(即不满足“其中一张表建表语句必须包含colocatewith指定关联对象表部分”);

步骤6~7,根据分析结果进行中间过程处理:如对于图2所示的情形,需要修改建表语句,创建临时表,导入数据,修改sql,提交sql,具体过程为:创建a表和b表中较小的表即a表的临时表tmp_user_lacci,并在建表语句中利用colocatewith关键字指定b表为关联对象表;将a表数据导入临时表tmp_user_lacci,将步骤1中获取的待处理的sql中a表的名称替换为临时表tmp_user_lacci的名称tmp_user_lacci;将修改后的待处理的sql提交至sql型分布式内存数据库gemfirexd;

需要说明的是,因临时表通常仅供当次sql请求操作,操作完成后在指定的时间内系统会自动回收相应资源,而对于图2所示的情形,临时表tmp_user_lacci的建表语句中设定了释放时间。这样,当某一类“伪标准sql”(与sql型分布式内存数据库gemfirexd连接的客户端提交的其它sql类型为dql且操作对象为两张表的其它待处理的sql)的请求非常频繁(在设定的释放时间内即收到下一次请求),而按照正常处理流程需要创建与临时表tmp_user_lacci内容相同的临时表时,那么可直接使用该临时表而无需重新建立,进一步降低了资源消耗。

步骤8,等待sql型分布式内存数据库执行修改后的待处理的sql,在执行结束后,获取执行结果,将执行结果反馈客户端。

再比如做复杂的sql查询,在voltdb中需要转为存储过程方可执行,本实施例会自动创建业务提交的复杂查询sql对应的存储过程再提交数据库执行。

在前述方法实施例的基础上,所述方法还可以包括如下的图中未示出的步骤:

对对所述待处理的sql的编辑过程进行记录,得到编辑过程信息,利用所述sql属性以及对所述分类器进行第一次训练所使用的训练样本对所述分类器进行重新训练,并将所述编辑过程信息以及对应的sql类型进行存储,其中,所述对应的sql类型为对所述分类器进行重新训练后,所述分类器所能有效识别的sql类型中新增的类型,所述对所述分类器进行第一次训练所使用的训练样本包括所述sql型分布式内存数据库不支持的sol。

本实施例中,需要说明的是,最初的分类器能够识别所有sql型分布式内存数据库共同支持的最低sql标准类型,以及对分类器初始训练后分类器所能有效识别的新的sql类型(该新的sql类型为对应的sql型分布式内存数据库不支持的sol所属的sql类型),在对客户端提交的待处理的sql进行处理的过程中,如果该待处理的sql不能被分类器有效识别分类,即该待处理的sql是新的类型的sql,则除了会对该待处理的sql进行预处理外,还会利用该待处理的sql的sql属性,并结合对所述分类器进行初始训练所使用的训练样本对所述分类器重新训练,以使后续出现与该待处理的sql同类型的sql时所述分类器能对其进行有效分类。为了提高处理效率,除了预存对分类器初始训练后分类器所能有效识别的新的sql类型的sql的编辑过程信息之外,还可以对进行预处理的sql的编辑过程进行记录,得到编辑过程信息,将该进行预处理的sql所属的sql类型及对应的编辑过程信息进行存储,以使后续在预处理分类器所能有效识别分类且属于对应的sql型分布式内存数据库不支持的sol所属的sql类型的sql时,直接按照所属的sql类型对应的编辑过程信息进行编辑即可。

前述分类器可以使用朴素贝叶斯分类器,当然也可以使用其它分类器,此处不再赘述。

如图3所示为朴素贝叶斯分类的流程图。从图3可以看到,整个朴素贝叶斯分类分为三个阶段:

第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性(即前述sql属性),并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别yi在训练样本中的出现频率p(yi)及每个特征属性xj划分对每个类别的条件概率估计p(xj|yi)并将结果记录。其输入是特征属性和训练样本x,输出是分类器。这一阶段是机械性阶段,可以由程序自动计算完成。

第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。

参看图4,本实施例公开一种sql执行装置,包括:

获取单元1,用于获取客户端提交的业务sql请求,其中,所述业务sql请求中包含待处理的sql;

预处理单元2,用于利用训练好的分类器对所述待处理的sql进行分类,若所述待处理的sql不属于预先划分的sql类型,则对所述待处理的sql进行预处理,得到标准sql;

反馈单元3,用于将所述标准sql提交至对应的sql型分布式内存数据库执行,在所述sql型分布式内存数据库执行完毕后,获取执行结果,并反馈给所述客户端,其中,所述预先划分的sql类型包括所有sql型分布式内存数据库共同支持的最低sql标准的sql类型。

本实施例中,所述预处理单元,具体可以用于:

对所述待处理的sql进行解析,得到sql属性,其中,所述sql属性包括sql类型、操作对象、操作对象相关属性和/或对象处理要求;

根据所述sql属性,确定对应所述sql属性的关键条件,判断所述待处理的sql是否满足所述关键条件,根据判断结果,对所述待处理的sql进行编辑,使其满足所述sql型分布式内存数据库的sql标准,其中,所述关键条件为sql型分布式内存数据库中对应所述sql属性的标准sql相关的限制条件;

其中,所述反馈单元,具体可以用于:

将编辑后的待处理的sql提交至所述sql型分布式内存数据库执行。

在前述装置实施例的基础上,所述装置还可以包括如下的图中未示出的结构:

训练单元,用于对对所述待处理的sql的编辑过程进行记录,得到编辑过程信息,利用所述sql属性以及对所述分类器进行第一次训练所使用的训练样本对所述分类器进行重新训练,并将所述编辑过程信息以及对应的sql类型进行存储,其中,所述对应的sql类型为对所述分类器进行重新训练后,所述分类器所能有效识别的sql类型中新增的类型,所述对所述分类器进行第一次训练所使用的训练样本包括所述sql型分布式内存数据库不支持的sol。

上述装置可以执行前述任意一种sql执行方法,因而可以解决相同的技术问题,达到同样的技术效果。

综上,本发明实施例提供的sql执行装置,使开发人员可以基于统一标准编写sql请求提交,并使异构sql型分布式内存数据库能够正常处理,解决了现有sql型内存数据库种类繁多但sql支撑标准不统一问题,具体相较于现有技术来说,具有如下有益效果:

1、原来业务开发人员需要学习多种内存库产品,学习成本高、开发难度大的问题,现在只需依照标准sql进行开发即可;

2、原来dba需解决多种内存数据库产品选型及后期优化所产生的运维难度大、运维成本高的问题,现在仅需要考虑标准sql优化,容量管理问题;

3、原来不同内存库之间sql标准不统一,无法实现跨平台sql迁移的问题,现在不需要考虑跨平台问题,只需注重业务功能实现;

4、原来项目管理方面存在开发运维成本高,项目开发效率低、周期长、管理成本高等问题,现在完全没有新增成本,只需正常开发、测试、上线、交维即可。

图5示出了本发明实施例提供的一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:至少一个处理器101、至少一个存储器102和总线103;其中,

所述处理器101、存储器102通过所述总线103完成相互间的通信;

所述存储器102存储有可被所述处理器101执行的程序指令,所述处理器101可以调用所述程序指令,以执行上述方法实施例所提供的方法,例如包括:获取客户端提交的业务sql请求,其中,所述业务sql请求中包含待处理的sql;利用训练好的分类器对所述待处理的sql进行分类,若所述待处理的sql不属于预先划分的sql类型,则对所述待处理的sql进行预处理,得到标准sql;将所述标准sql提交至对应的sql型分布式内存数据库执行,在所述sql型分布式内存数据库执行完毕后,获取执行结果,并反馈给所述客户端,其中,所述预先划分的sql类型包括所有sql型分布式内存数据库共同支持的最低sql标准的sql类型。

本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述方法实施例所提供的方法,例如包括:获取客户端提交的业务sql请求,其中,所述业务sql请求中包含待处理的sql;利用训练好的分类器对所述待处理的sql进行分类,若所述待处理的sql不属于预先划分的sql类型,则对所述待处理的sql进行预处理,得到标准sql;将所述标准sql提交至对应的sql型分布式内存数据库执行,在所述sql型分布式内存数据库执行完毕后,获取执行结果,并反馈给所述客户端,其中,所述预先划分的sql类型包括所有sql型分布式内存数据库共同支持的最低sql标准的sql类型。

本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述方法实施例所提供的方法,例如包括:获取客户端提交的业务sql请求,其中,所述业务sql请求中包含待处理的sql;利用训练好的分类器对所述待处理的sql进行分类,若所述待处理的sql不属于预先划分的sql类型,则对所述待处理的sql进行预处理,得到标准sql;将所述标准sql提交至对应的sql型分布式内存数据库执行,在所述sql型分布式内存数据库执行完毕后,获取执行结果,并反馈给所述客户端,其中,所述预先划分的sql类型包括所有sql型分布式内存数据库共同支持的最低sql标准的sql类型。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1