一种动态选择数据库的方法和装置 【技术领域】
本发明涉及选择数据库的方法和装置,更具体地涉及根据用户的查询来可配置的动态选择数据库的方法和装置。
背景技术
当前的信息系统已经不再仅仅只能有一个数据库,而是可以有多个数据库。其中一个是业务数据库,为联机事务处理OLTP(On-LineTransaction Processing)服务,主要用于系统日常业务操作使用,比如:制作凭证、制作订单等等;其他的一部分数据库是由业务数据库备份来的查询数据库,为联机分析处理OLAP(On-Line AnalyticalProcessing)服务,主要用于查询数据。当用户进行查询时,可以根据用户的查询条件决定去哪个数据库进行查询操作。这样可以使得查询操作对业务系统的影响大大降低,并且能够平衡各个数据库服务器的负载。
信息系统中经常涉及到数据查询的应用,如根据一定的条件查询所有满足条件的单据等,查询返回的结果和数据量是不确定的。如何根据查询条件进行分析从而判断该去哪个数据库进行查询?用户又如何根据自己的业务需要配置这种判断?这是待解决的问题。
信息系统使用多数据库引擎达到业务数据库和查询数据库的分离,而查询数据库是由业务数据库备份而来的,并且查询数据库和业务数据库会进行关联,使得查询数据库能够按一定的时间间隔(如一天)对业务数据库进行数据同步。这样只能基本上保证查询结果的一致性(无法达到实时性)。如果是进行大数据量的查询,可以假设认为这次查询并不要求过高的精确性,所以在数据同步时间差内查询数据库相对于业务数据库所没有数据可以忽略;如果是进行小数据量的查询,那么可以直接查询业务数据库,结果自然是准确的。因此基于这种假设使得有些查询的结果并不是准确的。
为了解决上面的技术问题,本发明提出了一种可配置的查询时动态选择数据库的方法。支持根据查询条件自动判断选用哪个数据库进行实际查询操作,并且支持判断条件的可配置性。
【发明内容】
本发明提出了一种动态选择数据库的方法,包括:为每个单据配置判断条件;根据用户针对单据输入的查询条件,判断所述查询条件是否满足对应于所述单据的所述判断条件;根据判断结果选择进行查询的数据库。
其中,配置判断条件的步骤包括:从所述每个单据提供的查询条件中选择一个或多个指标;为所述一个或多个指标设置默认值;以及将所述一个或多个指标配置成一个逻辑表达式作为所述判断条件。
其中,所述默认值是在所述用户输入的查询条件中没有为所述一个或多个指标输入相应查询值的情况下所述一个或多个指标的查询值。
其中,所述判断条件可以保存在文件中,也可以保存在数据库中。
优选地,当所述查询条件满足对应于所述单据的所述判断条件时,使用联机事务处理查询业务数据库,否则,使用联机分析处理查询查询数据库。
本发明还提供了一种动态选择数据库的装置,其特征在于,包括:配置单元,用于为每个单据配置判断条件;判断单元,用于根据用户针对单据输入的查询条件,判断所述查询条件是否满足来自所述配置单元的对应于所述单据的所述判断条件;以及选择单元,用于根据所述判断单元的判断结果选择进行查询的数据库。
其中,所述配置单元包括:指标选择模块,用于从所述每个单据提供的查询条件中选择一个或多个指标;设置模块,用于为所述指标选择模块所选择的所述一个或多个指标设置默认值;以及配置模块,用于将所述一个或多个指标配置成一个逻辑表达式作为所述判断条件。
其中,默认值是在所述用户输入的查询条件中没有为所述一个或多个指标输入相应查询值的情况下所述一个或多个指标的查询值。
其中,所述判断条件可以保存在文件中,也可以保存在数据库中。
其中,在所述选择单元中,当所述查询条件满足对应于所述单据的所述判断条件时,使用联机事务处理查询业务数据库,否则,使用联机分析处理查询查询数据库。
根据本发明的方法和装置对查询条件进行分析,根据分析结果和判断条件来决定到哪个数据库进行查询,这样不仅提高了查询的效率,同时也降低了查询操作对业务系统的影响,从而大大减轻了业务数据库的压力。
同时支持用户根据需要自己配置查询选择数据库的判断条件和相关的指标,这样使得系统进行查询时能够更灵活,可以实时的根据用户的需要修改这个配置。
【附图说明】
图1示出了根据本发明的动态选择数据库的方法的流程图;
图2示出了根据本发明地实施例的动态选择数据库的方法的流程图;
图3示出了根据本发明的实施例的表单示例的示意图;
图4示出了根据本发明的实施例的判断条件的示意图;
图5示出了根据本发明的实施例的查询条件的示意图;
图6示出了根据本发明的实施例的又一查询条件的示意图;
图7示出了根据本发明的实施例的另一查询条件的示意图;以及
图8示出了根据本发明的动态选择数据库的装置的框图。
【具体实施方式】
下面将参考附图详细说明根据本发明的动态选择数据库的方法和装置。
如图1所示,根据本发明的动态选择数据库的方法包括:
步骤102,为每个单据配置判断条件;
步骤104,根据用户针对单据输入的查询条件,判断所述查询条件是否满足对应于所述单据的所述判断条件;以及
步骤106,根据判断结果选择进行查询的数据库。
其中,配置判断条件的步骤包括:从所述每个单据提供的查询条件中选择一个或多个指标;为所述一个或多个指标设置默认值;以及将所述一个或多个指标配置成一个逻辑表达式作为所述判断条件。
其中,所述默认值是在所述用户输入的查询条件中没有为所述一个或多个指标输入相应查询值的情况下所述一个或多个指标的查询值。
其中,所述判断条件可以保存在文件中,也可以保存在数据库中。
其中,当所述查询条件满足对应于所述单据的所述判断条件时,使用联机事务处理查询业务数据库,否则,使用联机分析处理查询查询数据库。
图2示出了根据本发明的实施例的动态选择数据库的方法。如图2所示,可配置的查询时动态选择数据库的工作流程包括:
步骤202,配置判断条件
首先要解释三个概念:指标、指标默认值和判断条件。
指标是指对于某个查询条件的一种量化描述。下面用一个例子来解释这个概念。
比如对于“采购订单”来说,它提供的查询条件有很多,如图3所示。
如图3所示,我们认为对查询结果数据量影响大的查询条件只有“所属公司”和“订单日期”两项。因为查询1个公司的采购订单和查询5个公司的采购订单返回的数据量差距是很大的,查询订单日期时间跨度为1年内的采购订单和查询时间跨度为5年内的数据量差距也很大。
为此我们要为“采购订单”设置两个指标,如下表所示:
指标编码 指标名称 默认 值 指标描述 1 corps 所属公司 9999 所选公司数目 2 isMultiYear 订单日期是否跨年 Y 订单日期是否跨年
一个是针对“所属公司”条件设置的指标“corps”,表示“所选公司数目”;另一个是针对“订单日期”条件设置的指标“isMultiYear”,表示“订单日期是否跨年”。
另外指标是可以有默认值的,所谓的默认值就是指当用户进行查询时忽略了这个条件(即没有对这个条件输入查询值)时指标应该使用的值。
比如对“采购订单”进行查询时,对“所属公司”这个条件并没有输入查询值,那么实际上我们查询出来的采购订单是所有公司的,这样的数据量显然很大。为此我们要为“corps所属公司个数”指标设置默认值为一个最大值(如9999)。
判断条件是指根据业务需要由这些指标组成的一个逻辑表达式。
我们会根据用户的实际查询分析这些查询条件得到查询信息,可以通过查询信息得到各个指标的实际值,然后将这些指标的实际值代入判断条件逻辑表达式,判断其是否满足判断条件。如果满足判断条件那么就会使用OLTP进行查询,否则就会使用OLAP进行查询。所以可以将判断条件理解为衡量查询结果数据量的一个标准,满足这个标准就使用OLTP,否则使用OLAP。
比如“采购订单”在设置了上面的指标之后,就要为它设置判断条件。想以“所属公司个数小于5并且订单日期不能跨年”这个判断条件作为查询“采购订单”时数据量的分水岭,凡是大于该数据量的就应该使用OLAP。配置如图4所示。
做完指标设置、默认值设置和判断条件配置之后,就完成了对“采购订单”的查询信息配置。这个配置信息可以保存在文件中,也可以保存在数据库中。可以对每个单据根据其自身业务需要设置它指标(默认值)和判断条件。
返回图2,步骤204,分析查询条件
做完了步骤202之后,对于信息的预配置就结束了,现在用户就可以进行查询了。
比如用户查询“采购订单”,查询条件如图5所示。查询条件分别是“所属公司等于yl”、“订单编号包含aaa”和“订单日期介于2007-07-31和2009-07-31之间”。通过分析这些查询条件可以得到下面的信息:
“所属公司”个数等于1并且
“订单日期”范围是2年
通过这个信息(对于“订单编号”这个查询条件我们不关注,因为判断条件里面并没有涉及它)我们使用判断条件“所属公司个数小于5并且订单日期不能跨年”对它进行判断,结果是不满足判断条件,因为“订单日期”跨年了。
图6是“采购订单”的另一次查询。
通过查询条件分析得到感兴趣的信息是:“所属公司”个数等于1并且“订单日期”等于2007-07-31。显然这次查询是满足判断条件的。
图7是“采购订单”的另一次查询,用这个例子可以说明指标默认值的作用。如图8所示,通过查询条件分析得到感兴趣的信息是:“订单日期”等于2007-07-31。
在这个查询信息中并没有和“所属公司”查询条件有关的信息,因为用户并没有对这个条件输入查询值。这时候我们就需要使用指标的默认值了,按照我们预置的“所属公司”条件对应的指标“corps”的默认值是9999。那么实际上信息就变成了:“所属公司”个数等于9999并且“订单日期”等于2007-07-31。很明显这次查询不满足判断条件。
返回到图2,步骤206,选择数据库执行查询
根据步骤206得到的结果,即查询是否满足判断条件,就可以选择合适的数据库进行真正的查询操作了。如果满足判断条件,那么认为这次查询的数据量是较小的,查询最终将使用OLTP执行;否则就认为查询的数据量是较大的,那么查询使用OLAP执行。
用户可以根据自己的具体业务需要为每个结点(单据)实时修改指标、指标默认值和判断条件。这样就实现了可配置性,使得查询和信息系统的多数据库配合更灵活。
图8示出了根据本发明的动态选择数据库的装置的框图。如图8所示,根据本发明的动态选择数据库的装置800包括:
配置单元802,用于为每个单据配置判断条件;判断单元804,用于根据用户针对单据输入的查询条件,判断所述查询条件是否满足来自配置单元802的对应于所述单据的所述判断条件;以及选择单元806,用于根据判断单元804的判断结果选择进行查询的数据库。
其中,配置单元802可以包括:指标选择模块8022,用于从每个单据提供的查询条件中选择一个或多个指标;设置模块8024,用于为指标选择模块8022所选择的一个或多个指标设置默认值;以及配置模块8026,用于将一个或多个指标配置成一个逻辑表达式作为所述判断条件。
其中,默认值是在所述用户输入的查询条件中没有为所述一个或多个指标输入相应查询值的情况下所述一个或多个指标的查询值。
其中,判断条件可以保存在文件中,也可以保存在数据库中。
其中,在选择单元806中,当所述查询条件满足对应于所述单据的所述判断条件时,使用联机事务处理查询业务数据库,否则,使用联机分析处理查询查询数据库。
根据本发明的方法和装置将查询条件进行分析,根据分析结果和判断条件来决定到哪个数据库进行查询,这样使得查询的效率有了一定的提高,同时也将业务系统受查询操作的影响降低了很多,从而大大减轻了业务数据库的压力。同时支持用户根据需要自己配置查询选择数据库的判断条件和相关的指标,这样使得系统进行查询时能够更灵活,可以实时的根据用户的需要修改这个配置。总的来说也提升了信息系统的灵活性、健壮性和稳定性,均衡了各个数据库系统的负载。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。