专利名称:用于确定要被物化的节点的方法和系统的制作方法
技术领域:
本发明涉及数据库查询及规则推理系统,尤其涉及确定推理系统中要被物化的节 点的技术。
背景技术:
随着关系数据库技术的发展,大量的数据以关系表的形式存储在数据库中。如何 有效的应用这些数据已经成为数据管理领域进一步的发展方向。在商业智能的应用中,企 业需要对现有的数据进行处理和分析,以帮助企业做出明智的业务经营决策。关系数据库 上所支持的基本的查询不能回答一些决策支持中复杂的问题,而且数据的组织是针对底层 的存储而非上层的应用。举例而言,数据库的基本表中只定义了关于“客户(customer)”和 “保险合同(contract) ”的基本表,而在这些基本表上又定义了一些规则,比如“什么样的客 户属于高价值客户(high value customer) ”,或者“什么样的保险合同属于不良保险合同 (unhealthy contract) 那么当企业想根据数据库系统中的数据查询“高价值客户(high value customer)”或者“不良保险合同(unhealthy contract) ”时,由于数据库的基本表中 没有“高价值客户(high value customer) ”或者“不良保险合同(unhealthy contract)” 的数据项,因此关系数据库就无法查询这些非直观的概念,而必须借助推理系统才能够很 好地解决这个问题。推理系统的基础是基于规则的一阶逻辑(又称数理逻辑)。通过在关 系数据上引入逻辑操作,灵活的扩展了关系数据,并支持更加复杂的查询。在推理系统中,用户在关系数据上通过规则定义新的谓词(Predicate)。可以独 立存在的客体(句子中的主语、宾语等)称为客体词或个体词andividual),而谓词是指 用以刻画客体的性质或客体之间的关系的词(Predicate)。上段文字中的基本表可以称作 基本谓词(Basic Predicate),而在基本表(基本谓词)之上定义的规则可以称作规则谓词 (Rule Predicate) 0因为对规则定义的谓词的查询无法直接调用数据库中的查询语言,这 就要求系统要有推理的能力来处理规则中的逻辑关系。目前现有技术中实现推理的方法有两种,实时(Runtime)推理和基于物化 (Materialization)的推理。所谓实时推理,是指推理在实时查询的时候进行。所谓基于物 化(Materialization)的推理,是指预先计算出所有的推理结果并将其存在关系表中。这 两种推理方法各有优劣。具体而言,前者的优点是无需事先计算推理结果,不受数据更新的 影响,而其缺点是,由于要在接收到查询请求后必须先做推理才能返回查询结果,因此回答 查询的时间较长。后者的优点是在实时数据查询的过程中不用计算推理结果,而可以直接 利用预先计算的推理结果获得查询结果,因此节省了实时查询的结果返回时间。但是其缺 点是面临数据更新的问题,也就是说,当数据更新时,预先计算出的推理结果即必须重新计 笪弁。
发明内容
考虑到单纯地依靠现有技术中的实时推理方法或者基于物化的推理方法中的任一种,都不能很好地实现既节约实时查询的结果返回时间,又不受数据更新的影响的技术 效果,本发明提供了一种用于确定要被物化的节点的方法和系统,以便克服现有技术中的 问题。本发明的构思是基于下面的考虑采取一种新的混合推理的模式,通过代价模型选出 应当被物化的那些规则谓词(应当被物化的那些规则谓词是全体规则谓词中的一部分或 全部),并物化那些规则谓词的推理结果,从而使推理系统既可提高查询的效率,又可以有 效的控制更新所带来的维护操作。如果将基于混合推理模式的推理引擎引入到现有的商业 智能软件中,将使系统的性能得到显著提高。根据本发明的一个方面,提供了一种用于确定要被物化的规则谓词的方法,包括 获取规则谓词的不包含强连通子图的依赖关系图,所述依赖关系图指示所述规则谓词间的 依赖关系;计算所述依赖关系图中的节点的更新频率;计算所述依赖关系图中的节点的查 询频率;根据所述查询频率和更新频率计算所述节点的实时查询代价值和物化代价值;以 及根据所述节点的实时查询代价值与物化代价值的差值,确定要被物化的节点,所述要被 物化的节点所对应的规则谓词是要被物化的规则谓词。在本发明的一个实施方式中,所述用于确定要被物化的节点的方法还包括获取 所述规则谓词的原始依赖关系图;以及用伪节点替换所述原始依赖关系图中的强连通子 图,以获取规则谓词的不包含强连通子图的依赖关系图。根据本发明的另一方面,提供了一种用于确定要被物化的规则谓词的系统,包括 依赖关系图获取装置,用于获取规则谓词的不包含强连通子图的依赖关系图,所述依赖关 系图指示所述规则谓词间的依赖关系;更新频率计算装置,用于计算所述依赖关系图中的 节点的更新频率;查询频率计算装置,用于计算所述依赖关系图中的节点的查询频率;代 价值计算装置,用于根据所述查询频率和更新频率计算所述节点的实时查询代价值和物化 代价值;以及物化确定装置,用于根据所述节点的实时查询代价值与物化代价值的差值,确 定要被物化的节点,所述要被物化的节点所对应的规则谓词是要被物化的规则谓词。在本发明的一个实施方式中,所述依赖关系图获取装置被进一步配置为获取所 述规则谓词的原始依赖关系图;以及用伪节点替换所述原始依赖关系图中的强连通子图, 以获取规则谓词的不包含强连通子图的依赖关系图。通过本发明的方法和系统,可以选择性地应用实时推理方法和物化推理方法对建 立于关系数据库的基本谓词之上的规则谓词进行推理,实现在构建有规则谓词的关系数据 推理系统中进行查询时,既节约实时查询的结果返回时间,又减少数据更新的影响的技术 效果。
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将 更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,图1示出了根据本发明一实施方式的用于确定要被物化的节点的的方法的流程 图;图2示出了根据本发明另一实施方式的用于确定要被物化的节点的方法的流程 图;图3A至图;3B示出了根据本发明一实施方式的计算节点的更新频率的示意图;6
图4A至图4B示出了根据本发明一实施方式的计算节点的查询频率的示意图;图5A至图5F示出了根据本发明一实施方式的确定要被物化的节点的实例;图6示出了根据本发明一实施方式的确定要被物化的节点的系统的框图。
具体实施例方式在下文中,将参考附图通过实施方式对本发明提供的用于确定要被物化的节点的 方法和系统进行详细地描述。图1示出了根据本发明一实施方式的用于确定要被物化的节点的方法的流程图。 在图1中,步骤从101开始,获取规则谓词的依赖关系图(D印endency Graph)。依赖关系 图指示了推理系统中的规则谓词彼此间的依赖关系。举例而言,如果定义规则谓词“不良保 险合同”是指付款逾期超过3个月的“欠款保险合同”,并且定义规则谓词“欠款保险合同” 是指付款状态为“未付款”的“保险合同”,而“保险合同”则是关系数据库中已经定义的基 本谓词(基本表)。“保险合同”这个基本谓词(基本表)中包含若干列,如签订日期、客户 名称、付款状态等。在这个例子下,根据所定义的规则可以看出,规则谓词“不良保险合同” 是依赖于规则谓词“欠款保险合同”的,这样的一种依赖关系就可以在依赖关系图中体现出 来。还需要指出的是,在步骤101中所获取的依赖关系图中不包含强连通子图。所谓强连 通图(Strongly Connected Grapti),是指一个有向图(Directed Graph)中任意两点 vl、v2 间存在vl到v2的路径(path)及v2到vl的路径的图。可以简单地将强连通图理解为环状 图,在推理系统中的强连通子图就表示规则谓词之间存在互相依赖的关系,从而形成环。之 所以在步骤101中所获取的依赖关系图中不能包含强连通子图,是因为强连通子图中存在 规则谓词间的互相依赖的关系,那么由于依赖关系的传递性将导致推理系统在进行推理时 无法单独处理其中的某一个规则谓词,所以无法直接计算规则谓词的更新和查询频率。如 果获取到了包含有强连通子图的原始依赖关系图,那么必须对这样的原始依赖关系图进行 处理以获取不包含强连通子图的依赖关系图,具体处理的方法将在图2以及相应的文字描 述中予以说明。本领域技术人员还应当了解,本发明中的“图”的概念(包括依赖关系图、 强连通子图等)并非一定是以节点、有向边形式存在的图像,其实质是体现规则谓词间的 依赖关系。无论用什么推理系统能识别的方式体现这种依赖关系,均属于本发明中的“图” 的范畴,例如可以用“不良保险合同_欠款保险合同”的表达式来表示规则谓词“不良保险 合同”是依赖于规则谓词“欠款保险合同”的,而不一定要有具体的图像存在。在继续描述下面的步骤之前,首先来明确“节点”和“规则谓词”的关系。应当了 解,在依赖关系图中,每一个节点都有两种可能,要么直接对应于规则谓词,要么是伪节点。 所谓伪节点是指取代了依赖关系图中的强连通子图的节点,它不是一个独立的规则谓词, 但是它是一个依赖关系图中独立的节点。而伪节点实际上是对应于一个或多个规则谓词节 点的,只是由于为了去除强连通子图,才用伪节点将其替代。直接对应于规则谓词的节点事 实上就是规则谓词本身,而伪节点则对应于一个或多个规则谓词组成的强连通子图。如果 确定了要被物化的节点,那么若这个要被物化的节点是规则谓词本身的话,就等于确定了 要被物化的规则谓词;若这个要被物化的节点是伪节点的话,就等于确定了伪节点所替代 的强连通子图中的所有规则谓词都是要被物化的规则谓词。应当理解,只要确定了要被物 化的节点,就相当于确定了要被物化的规则谓词。这部分内容在图2的文字描述部分还有进一步说明。接下来在步骤102中,利用所述依赖关系图计算所述节点的更新频率。并且在步 骤103中,利用所述依赖关系图计算所述节点的查询频率。更新频率和查询频率都是确定 要被物化的节点所需的参数,两个参数之间不存在依赖关系。因此,步骤102和103之间没 有固定的执行先后顺序,孰先孰后均可,也可以同时执行。之所以要在步骤103中计算节点 的查询频率,是因为考虑到应用实时推理方法的主要障碍是该方法在每次查询时都要重新 进行推理,然后才能返回查询结果,而如果某规则谓词的查询频率高的话,就可能导致导致 系统对同一查询进行多次推理而影响性能。因此,将节点的查询频率作为一个参数予以考 虑。而之所以要在步骤102中计算规则谓词的更新频率,是因为考虑到应用物化推理方法 的主要障碍是该方法在规则谓词或者基本谓词被更新后,之前物化推理好的结果已经不能 再使用(否则就会出错),因此需要重新进行物化推理计算。而如果某规则谓词的更新频率 高的话,就可能导致经常要重新进行物化推理从而影响系统性能。因此,将节点的更新频率 作为一个参数予以考虑。关于计算更新频率和查询频率的具体实施方式
,将在图2以及对 应的文字描述中予以说明。接下来在步骤104中,根据计算得到的节点的查询频率和更新频率来计算规则谓 词的物化代价值和实时查询代价值。最后在步骤105中,根据在步骤104中计算得到的物化代价值和实时查询代价值 来确定要被物化的节点,进而确定要被物化的节点所对应的规则谓词。本领域技术人员应当了解,可以采用多种实施方式来根据物化代价值和实时查询 代价值确定要被物化的节点或者规则谓词。比如,可以将凡是物化代价值小于实时查询代 价值的规则谓词确定为要被物化的节点,也可以将实时查询代价值与物化代价值的差值大 于某一阈值的节点确定为要被物化的节点,还可以简单地将实时查询代价值大于某一阈值 (或者物化代价值小于某一阈值)的节点直接确定为要被物化的节点。具体的确定物化节 点的方法可依据不同的推理系统、数据库结构而定,只要在确定的过程中考虑了物化代价 值和/或实时查询代价值这两个参数即落入本发明的保护范围。在图2及其对应的文字部 分将描述根据物化代价值和实时查询代价值确定要被物化的节点的优选实施方式。至此,已经确定要被物化的节点。对于这些要被物化的节点而言,需要在实时查询 前对其进行预先的推理计算,从而在以后的实时查询过程中就可以直接利用已经计算好的 推理结果,而无需实时推理,从而提高了查询结果的返回速度。与此同时,利用本发明的方 法,可以有选择地对规则谓词或节点(而并非对所有的规则谓词或节点)进行物化推理,这 样又可以避免因为数据频繁更新而导致需要频繁更新物化推理结果的弊端。下面参考图2,图2示出了根据本发明另一实施方式的确定要被物化的节点的方 法的流程图。首先在步骤201中获取规则谓词的原始依赖关系图。所谓原始依赖关系图是 指根据定义的规则谓词的条件语义直接生成的、未经任何修改的依赖关系图。由于在关系 数据库之上定义的规则谓词可能数量庞大、条件语义也千差万别,难免会出现循环依赖的 情形。例如,假设“不良保险合同”与“欠款保险合同”是在关系数据库之上定义的两个规则 谓词,那么如果定义“逾期时间在3个月以上的欠款保险合同是不良保险合同”,则“不良保 险合同”依赖于“欠款保险合同”。如果同时又定义“所有的不良保险合同都是欠款保险合 同”,则“欠款保险合同”依赖于“不良保险合同”。这样,“不良保险合同”与“欠款保险合同”8间就存在着相互依赖的关系,从而导致原始依赖关系图中就会出现循环依赖的环形强连通 子图。在对图1的描述中已经明确,步骤101中获取的是不包含强连通子图的依赖关系图, 那么在步骤201中获取包含有强连通子图的原始依赖关系图的情形下,就需要对这样的原 始依赖关系图进行处理。首先在步骤202中,通过分析规则谓词来得到其所依赖的基本谓词。之所以要分 析规则谓词所依赖的基本谓词,是因为在对规则谓词所依赖的基本谓词进行更新时,必然 会导致对规则谓词的更新。同样地,在对规则谓词所依赖的其它规则谓词进行更新时,也必 然会导致对该规则谓词的更新。而由于规则谓词所依赖的基本谓词不在依赖关系图中示出 (依赖关系图只示出规则谓词之间的依赖关系),因此需要在步骤202中通过分析规则谓词 来得到其所依赖的基本谓词。接下来进行至步骤203。在步骤203中将规则谓词的更新频率初始化为其所依赖 的基本谓词的更新频率。并将其查询频率初始化为自身的查询频率。需要指出的是,基本 谓词的更新频率是事先获得的,具体的获得基本谓词的更新频率的方法可以有很多种。优 选地,可以通过查看数据库日志的方式来统计每个基本谓词的更新频率。可选地,还可以根 据应用程序来估算。在步骤204中,用伪节点(Dummy Node)替换原始依赖关系图中的强连通子图。也 就是说,把强连通子图作为一个节点考虑,而不考虑强连通子图内部的有向边。这样,包含 强连通子图的原始依赖关系图就被转化为不包含强连通子图(但是包含伪节点)的依赖关 系图,也就是步骤101中所要获取的依赖关系图。经过步骤204之后,即获取了规则谓词的 不包含强连通子图的依赖关系图。接下来在步骤205中,将伪节点的更新频率和查询频率初始化为原强连通子图中 所包含的规则谓词的初始化更新频率和查询频率之和。至此,不包含强连通子图的依赖关 系图中的所有节点(包括规则谓词节点和伪节点)的更新频率和查询频率均已初始化完 毕。下面可以开始计算依赖关系图中的每个节点(包括规则谓词节点和伪节点)的更新频 率和查询频率。在步骤206中,将待计算节点的初始化更新频率与所述待计算节点所依赖的其它 节点的初始化更新频率相加,作为所述待计算节点的更新频率,其中所述待计算节点所依 赖的其它节点包括所述待计算节点直接依赖的其它节点和所述待计算节点间接依赖的其 它节点。下面通过例子来说明直接依赖和间接依赖的概念。例如节点A依赖于节点B,节点 B依赖于节点C,那么就认为节点B是节点A直接依赖的节点,而节点C是节点A间接依赖 的节点(基于依赖关系的传递性)。图3A至;3B示出了根据步骤206计算节点的更新频率的过程的实例。如图3A所 示,其中r2、r3和r4构成强连通子图,r8也构成强连通子图,因此首先将该两个强连通子 图分别用Cl和C2伪节点代替。然后初始化各个节点。注意,规则谓词和伪节点都属于“节 点”。!^至沙初始化后的更新频率分别为。,〗,!,。,^,。,〗。然后将Cl伪节点的更新频 率进一步初始化为r2,r3和r4这3个节点的更新频率之和,也就是3 = 1+0+2 (在图3中 用粗体表示),将C2伪节点的更新频率初始化为规则谓词r8的更新频率,也就是2。初始 化完成后的各节点的更新频率如图3A所示。接下来,按照步骤206,算得r6的更新频率为 4+2+0 = 6,r5的更新频率为1+2 = 3,Cl的更新频率为3+1+4+2+0 = 10,rl的更新频率为0+3+1+4+2+0 = 10。计算完成后的各节点的更新频率如图:3B所示。在步骤207中,将所述节点的初始化查询频率与依赖于所述节点的其它节点的初 始化查询频率相加,作为所述节点的查询频率,其中依赖于所述节点的其它节点包括直接 依赖于所述节点的其它节点和间接依赖于所述节点的其它节点。图4A至4B示出了根据步骤207计算节点的查询频率的过程的实例。如图4A所 示,其中r2、r3和r4构成强连通子图,r8也构成强连通子图,因此首先将该两个强连通子 图分别用Cl和C2伪节点代替。然后初始化各个节点,Π至r8初始化后的查询频率分别 为1,3,2,3,1,1,2,2。然后将Cl伪节点的查询频率进一步初始化为r2,r3和r4这3个规 则谓词节点的查询频率之和,也就是8 = 2+3+3(在图4A中用粗体表示),将C2伪节点的 查询频率初始化为规则谓词r8的查询频率,也就是2。初始化完成后的各节点的查询频率 如图4A所示。接下来,按照步骤207,算得r6的查询频率为8+1+1 = 10,r5的查询频率为 8+1+1 = 10,Cl的查询频率为8+1 = 9,rl的查询频率为1,r7的查询频率为2+1+8+1 = 12,r8的查询频率为2+1+8+1+1 = 13。计算完成后的各节点的查询频率如图4B所示。在步骤208中,设定节点的单次预计算代价值Ce和单次查询代价值Cq。单次预计 算代价(Pre-evaluation cost)值是指将规则谓词所对应的数据计算并且物化下来一次所 对应的所有数据库操作的代价的总和。单次查询代价(Query cost)值是指在没有物化的 情况下,要回答在这个谓词上的一次查询所进行的数据库操作代价的总和。影响预计算代 价和查询代价的因素与影响数据库中操作的代价的因素相同,包括基本表的大小,是否建 立了索引(index),基本表上某些属性的数值分布(histogram)等。这些都是在数据库查询 优化所考虑的因素。需要指出的是,对于同一个谓词来说单次查询代价往往小于单次预计 算代价。这是因为预计算时需要计算出谓词所对应的所有数据并存储,而查询时只需要处 理和查询相关的数据。比如对Sub_C0ntract这个规则谓词,预计算代价是计算出所有Sub_ Contract ( ? χ, ? y)并且存储在物化表里的代价。考虑它的查询代价,由于在应用中往 往是找某一个具体保险合同的Sub_Contract,比如Sub_Contract ( ? x, “ABC”),使得在查 询的过程中不需要考虑与” ABC”无关的contract,所以代价相对要小。本领域技术人员应 当了解,可以采用不同的方式设定单次预计算代价值和单次查询代价值,因为不论是预计 算代价还是查询代价都是一系列数据库操作代价的总和,所以根据对数据库操作代价的估 算,我们可以通过估算来设定这两个代价值。可选地,如果查询和物化在系统中发生了,我 们可以直接从系统中日志中得到这两个代价值并设定。在步骤208中设定了规则谓词的单次预计算代价值Ce和单次查询代价值Cq之 后,在步骤209中计算规则谓词或伪节点的物化代价值Em和实时查询代价值Eq。可选地, 物化代价值Em可以用公式(1)公式来计算,其中n. UF表示节点的更新频率。Em = Ce+n. UF*Ce...................................................(1)从公式(1)也可以看出除了第一次预计算,每一次对规则谓词update后,都要进 行预计算,因此用规则谓词或伪节点的更新频率n. UF乘以单次预计算代价值。可选地,实时查询代价值Eq可以用公式(2)来计算,其中n. QF表示节点的查询频 率。Eq = n. QF*Cq..........................................................(2)需要指出的是,之所以公式(1)中有一项Ce作为单独的加数,而公式O)中没有Cq作为单独的加数,是因为在计算物化代价值Em时,即使更新频率为0,那么也还需要进行 一次预计算才能将规则谓词物化。而在计算实时查询代价值Eq时,如果查询频率为0,那么 实时查询代价值Eq肯定就是0。本领域技术人员应当了解,公式(1)和公式(2)只是为了 示例性地说明计算Em和Eq的一种实施方式,并不意味着任何对本发明的限制。本领域技 术人员可以采取任何方式计算Em和Eq的值,只要这样的计算方法能体现出物化代价值和 实时查询代价值的含义即落入本发明的保护范围。在步骤210中,设定用于确定要被物化的节点或伪节点的阈值t。阈值的作用是判 断节点是否要被物化。具体地,可以由多种方式依据Eq和Em的值以及设定的阈值来判断 节点是否要被物化。优选地,阈值t的含义可以是优化值,也就是比较Eq-Em的值与阈值t 的大小,这表示物化后,系统对规则谓词的查询代价减少了多少。它的单位是数据库操作代 价单元(timerons)。阈值t的可选值t >= Otimerons.例如t = 0 timeron。可选地, 阈值t的含义可以是优化率,也就是比较(Eq-Em)/Eq与阈值t的大小。优化率的含义是表 示物化后,系统对规则谓词的查询代价减少的百分比。阈值t作为优化率的可选值0 < t < 1,例如t = 10%。可选地,阈值t的含义还可以是相对效率,也就是比较Eq/Em的值与 阈值t的大小。相对效率的含义是物化后,系统对规则谓词的查询代价与原有实时查询系 统中代价比值的倒数(物化后的系统效率是非物化的系统效率的几倍=体统的性能是原 来的几倍)。阈值t作为相对效率的可选值t > 1,例如t = 2 (性能是原来的2倍)。应 当了解,根据本发明的思路,还可以设计出多种阈值的含义,无论所设定的阈值具有什么含 义,只要是基于Em,Eq和阈值t来判断节点是否应当被物化,即落入本发明的保护范围。关 于设定阈值t的操作方式,可以由管理员依据经验值进行设定,也可以通过查看数据库访 问日志设定,也可以通过估算的方式设定。接下来,在步骤211中,根据所设定的阈值、Eq和Em的值判断节点是否应当被物 化。如果是的话,则在步骤212中确定节点要被物化,从而也就确定了要被物化的规则谓 词。随后,在步骤213中从依赖关系图中删除要被物化的节点,以生成新的依赖关系图。这 样在实时查询过程中只需要对新的简化的依赖关系图进行实时推理即可,从而简化了实时 推理的过程,缩短了返回查询结果的时间。对于那些确定要被物化的节点或伪节点,在实 时查询的过程中可以直接调取已经预先计算好的物化推理结果,这样的物化推理结果保存 在步骤214中为要被物化的节点或伪节点生成的物化表中。如果是伪节点被确定为要被 物化的节点的话,需要对伪节点对应的强连通子图中的所有规则谓词都生成一个物化表, 而不是只生成一个物化表。需要指出的是,步骤214中生成的物化表不同于在实时查询过 程中生成的临时表。对于数据库管理系统DBMS的临时表是在实时查询的过程中自动生成 的,目的是在不能直接在数据库基本表中查询到结果的情况下生成并保存一些中间推理运 算的结果,这样的临时表在一个查询的会话(session)结束后就会被系统自动清空。而步 骤214中生成的物化表不会因为查询会话的结束而被清空,只要被物化的规则谓词没有被 更新,物化表就会一直存在。图5示出了根据本发明一实施方式的确定要被物化的节点和伪节点的具体实施 例。下面将结合附图详细描述该具体实施例。假设关系数据库中定义有如下4个基本表(基本谓词)Customer客户(客户ID、 名称、客户信息、重要等级、推荐人)、ContraCt保险合同(保险合同ID、保险合同内容、客户ID)、Contract_Relationship保险合同关系(保险合同ID1、保险合同ID2、类型)、Claim 理赔(理赔ID、理赔内容、保险合同ID、理赔数额)。上述这4个基本表括号中的内容可 以理解为每个基本表所包含的列。然后,在数据库之上又定义了如下4个规则谓词“Sub_ Contract 子保险合同,,、“Large_Claim_Contract 高额理赔保险合同,,、"VIP_Customer VIP 客户”、VIP_Customer_Reassessment VIP 客户再评估”。具体而言,规则谓词“子保险合同”被定义为如下两种情形(1)如果“保险合同 关系”基本表中的“类型”列为“子保险合同”,那么所对应的“保险合同ID1”和“保险合同 ID2”即构成“子保险合同”关系;(2)如果保险合同1和保险合同2构成“子保险合同”关 系且保险合同2和保险合同3构成“子保险合同”关系,那么保险合同1和保险合同3构成 “子保险合同”关系。对这两种情形的表达式可以分别是Subcontract ( ? X,? y) -Contract_Relationship (contractIDl ? X, contractID2 ? y,type: ^Subcontract,)Subcontract ( ? χ, ? y) -Subcontract ( ? χ, ? ζ),Subcontract ( ? ζ, ?y)规则谓词“高额理赔保险合同”被定义为如下两种情形(1)如果一个保险合同的 理赔数额大于5000,那么这个保险合同是高额理赔保险合同;(2)如果一个保险合同的子 保险合同的理赔数额大于5000,那么这个保险合同是高额理赔保险合同。对这两种情形的 表达式可以分别是Large_Claim—Contract( ? χ)-Claim(contractID: ? χ,claimAmount ? ζ),? ζ > 5000Large_Claim—Contract ( ? χ) -Subcontract ( ? y, ? χ),Claim (contractID: ? y,claimAmount: ? ζ), ? ζ > 5000规则谓词“VIP客户”被定义为如下两种情形⑴如果一个客户的重要等级为“最 高”,那么这个客户是VIP客户;( 被VIP客户推荐的客户也是VIP客户。对这两种情形 的表达式可以分别是VIP_Customer ( ? x) - Customer (customerID: ? X, importanceLevel ,,Highest,,);VIP—Customer ( ? x) -Customer (customerID: ? χ, recommendedBy ? y),VIP_ Customer( ? y);规则谓词“VIP客户再评估”被定义为如下情形如果一个VIP客户是高额理赔保 险合同的受益者,那么需要对这个VIP客户进行VIP客户再评估。这种情形的表达式可以 是VIP_Customer_Reassessment ( ? x) - V I P_Cu s t ome r ( ? X), Contract (contractID ? j, customerID: ? χ);Large_Claim—Contract( ? y)由上述数据库中的基本表以及定义的4个规则谓词的含义可以获取如图5A所示 的原始依赖关系图。图5A所示的原始依赖关系图是推理系统根据规则谓词所定义的表达 式自动生成的。这个原始依赖关系图中示出了 4个节点,分别对应于所定义的4个规则谓 词,用nl、n2、n3、n4这4个节点标识分别代表“子保险合同”、“高额理赔保险合同”、“VIP客户”以及“VIP客户再评估”这4个规则谓词。具体分析,假定4个基本表的更新频率已知 如下fu(保险合同)=3,fu(保险合同关系)=l,fu(理赔)=4,fu(客户)=6。并 且4个规则谓词的查询频率也已知如下fq(子保险合同)=1,fq(高额理赔保险合同) =4,fq(VIP客户)=3,fq(VIP客户再评估)=1。那么首先对这4个规则谓词的查询频 率和更新频率进行初始化,初始化的结果在图5B中示出。其中括号内左边的数值代表更新 频率,右边的数值代表查询频率。初始化完毕后,发现nl和n3节点构成强连通子图,原因是规则谓词“子保险合同” 和“VIP客户”均可能依赖于其自身(由定义的表达式可以看出)。因此,对于这两个仅包 含一个规则谓词的强连通子图在图5Β中用虚线圈包围,将其替换为伪节点。对这两个伪节 点进行初始化的结果也在图5Β中示出(由于只包含一个规则谓词,因此初始化的结果与其 包含的规则谓词的初始化结果相同)。接下来计算4个节点的更新频率,根据图2所示的方法以及对应的文字描述可以 算得nl伪节点的更新频率为1 (保持不变),n2规则谓词节点的更新频率为1+4 = 5,η3伪 节点的更新频率为6(保持不变),η4规则谓词节点的更新频率为3+4+1+6 = 14。计算完 毕的更新频率在图5C中示出(查询频率保持不变)。接下来计算4个节点的查询频率,根据图2所示的方法以及对应的文字描述可以 算得nl伪节点的查询频率为1+4+1 = 6,n2规则谓词节点的查询频率为4+1 = 5,n3伪节 点的查询频率为3+1 = 4,n4规则谓词节点的查询频率为1 (保持不变)。计算完毕的更新 频率和查询频率在图5D中示出。接下来利用图5E所示的表确定4个规则谓词或伪节点中的哪个或哪些应当被物 化。图5E的表中示出了每个规则谓词的计算完毕的更新频率、查询频率、单次预计算代价 值Ce、单次查询代价值Cq、物化代价值Em、实时查询代价值Eq、物化收益Eq_Em。其中,单 次预计算代价值Ce和单次查询代价值Cq是根据对数据库中操作代价的估算得到的或者直 接从系统日志中获取的。物化代价值Em通过公式(1)计算,实时查询代价值Eq通过公式 ⑵计算。假定设定的阈值为10,那么通过比较每个规则谓词或伪节点的Eq-Em的值与10 的大小可以确定,只有伪节点nl (也就是“子保险合同”)应当被物化。在确定了伪节点nl应当被物化后,即在依赖关系图中删除伪节点nl,并对nl (子 保险合同)进行物化,生成对应于规则谓词“子保险合同”的物化表。这样,在之后的查询 中,可以直接调取“子保险合同”的物化表进行查询。删除要被物化的伪节点nl后的依赖 关系图如图5F所示。至此,在该实例中确定应当被物化的规则谓词或伪节点的操作已经全 部完成。需要指出的是,对于确定要被物化的节点是伪节点的情况,就意味着要对这个伪节 点对应的强连通子图中包含的所有规则谓词进行物化,其中每个规则谓词均生成一张物化 表,而不是对一个伪节点生成一张物化表。从图5A至5F所示的例子可以看出,利用本发明 的方法,可以实现有选择地物化的混合推理方法,既节省了实时查询结果返回的时间,又不 会导致因数据更新而带来的频繁重新物化的缺点。图6示出了根据本发明一实施方式的用于确定要被物化的节点的系统。该系统在 图6中总体上由600表示。具体地,系统600包括用于获取规则谓词的不包含强连通子图 的依赖关系图的获取装置601、用于计算规则谓词的更新频率的更新频率计算装置602、用 于计算规则谓词的查询频率的查询频率计算装置603、用于计算规则谓词的物化代价值和实时查询代价值的代价值计算装置604和确定要被物化的节点的确定装置605。系统600 中的装置601至605可以被理解为分别对应于图1所示的方法中的步骤101-105。利用本发明的方法和系统,通过选取要被物化的节点,从而在以后的实时查询过 程中就可以直接利用已经计算好的推理结果,而无需实时推理,因此提高了查询结果的返 回速度。与此同时,利用本发明的方法和系统,可以有选择地对规则谓词(而并非对所有的 规则谓词)进行物化推理,这样又可以避免因为数据频繁更新而导致需要频繁更新物化推 理结果的弊端。通过以上对具体实施例的描述,本领域技术人员可以理解,上述的系统、装置和方 法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、 CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电 子信号载体的数据载体上提供了这样的代码。本实施例的装置、服务器及其单元可以由诸 如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门 阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理 器执行的软件实现,也可以由上述硬件电路和软件的结合实现。虽然以上结合具体实施例,对本发明的利用远程应用处理本地文件的系统及方法 进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本 发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变 化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。
权利要求
1.一种用于确定要被物化的规则谓词的方法,包括获取规则谓词的不包含强连通子图的依赖关系图,所述依赖关系图指示所述规则谓词 间的依赖关系;计算所述依赖关系图中的节点的更新频率;计算所述依赖关系图中的节点的查询频率;根据所述查询频率和更新频率计算所述节点的实时查询代价值和物化代价值;以及根据所述节点的实时查询代价值和物化代价值,确定要被物化的节点,所述要被物化 的节点所对应的规则谓词是要被物化的规则谓词。
2.如权利要求1所述的方法,其中所述依赖关系图中的节点是规则谓词节点或者伪节点ο
3.如权利要求1或2所述的方法,其中获取规则谓词的不包含强连通子图的依赖关系 图进一步包括获取所述规则谓词的原始依赖关系图;以及用伪节点替换所述原始依赖关系图中的强连通子图,以获取规则谓词的不包含强连通 子图的依赖关系图。
4.如权利要求1至3任一所述的方法,其中计算所述依赖关系图中的节点的更新频率 进一步包括初始化所述节点的更新频率;将待计算节点的初始化更新频率与所述待计算节点所依赖的其它节点的初始化更新 频率相加的和作为所述待计算节点的更新频率,其中所述待计算节点所依赖的其它节点包 括所述待计算节点直接依赖的其它节点和所述待计算节点间接依赖的其它节点。
5.如权利要求4所述的方法,其中初始化所述节点的更新频率进一步包括如果所述节点是规则谓词节点,则将所述节点的更新频率初始化为所述规则谓词节点 所依赖的所有基本谓词的更新频率的和;如果所述节点是伪节点,则将所述节点的更新频率初始化为所述伪节点所替换的强连 通子图中包含的所有规则谓词节点的初始化更新频率的和。
6.如权利要求1至3任一所述的方法,其中计算所述依赖关系图中的节点的查询频率 进一步包括初始化所述节点的查询频率;将待计算节点的初始化查询频率与依赖于所述节点的其它节点的初始化查询频率相 加,作为所述节点的查询频率,其中依赖于所述节点的其它节点包括直接依赖于所述节点 的其它节点和间接依赖于所述节点的其它节点。
7.如权利要求6所述的方法,其中初始化所述节点的查询频率进一步包括如果所述节点是规则谓词节点,则所述节点的初始化查询频率是所述规则谓词节点的 查询频率;如果所述节点是伪节点,则将所述节点的查询频率初始化为所述伪节点所替换的强连 通子图中包含的所有规则谓词节点的初始化查询频率的和。
8.如权利要求1至7任一所述的方法,其中根据所述查询频率和更新频率计算所述节 点的实时查询代价值和物化代价值进一步包括设定所述节点的单次预计算代价值Ce ; 设定所述节点的单次查询代价值Cq ;利用公式Em = Ce+n. UF*Ce计算所述节点的物化代价值Em,其中η. UF表示所述节点的 更新频率;以及利用公式Eq = n. QF*Cq计算所述节点的实时查询代价值Eq,其中n. QF表示所述节点 的查询频率。
9.如权利要求1至8任一所述的方法,其中根据所述节点的实时查询代价值和物化代 价值,确定要被物化的所述节点进一步包括判断所述实时查询代价值与物化代价值的差值是否大于预设的用于确定要被物化的 节点的阈值;以及如果判断结果为是,则将所述节点确定为要被物化的节点。
10.如权利要求1所述的方法,进一步包括从所述不包含强连通子图的依赖关系图中 删除所确定的要被物化的节点,以生成新的依赖关系图。
11.如权利要求1所述的方法,进一步包括为所述要被物化的节点所对应的规则谓词 生成物化表。
12.一种用于确定要被物化的规则谓词的系统,包括依赖关系图获取装置,用于获取规则谓词的不包含强连通子图的依赖关系图,所述依 赖关系图指示所述规则谓词间的依赖关系;更新频率计算装置,用于计算所述依赖关系图中的节点的更新频率; 查询频率计算装置,用于计算所述依赖关系图中的节点的查询频率; 代价值计算装置,用于根据所述查询频率和更新频率计算所述节点的实时查询代价值 和物化代价值;以及物化确定装置,用于根据所述节点的实时查询代价值与物化代价值的差值,确定要被 物化的节点,所述要被物化的节点所对应的规则谓词是要被物化的规则谓词。
13.如权利要求12所述的系统,其中所述依赖关系图中的节点是规则谓词节点或者伪 节点。
14.如权利要求12或13所述的系统,其中依赖关系图获取装置被进一步配置为 获取所述规则谓词的原始依赖关系图;以及用伪节点替换所述原始依赖关系图中的强连通子图,以获取规则谓词的不包含强连通 子图的依赖关系图。
15.如权利要求12至14任一所述的系统,其中更新频率计算装置被进一步配置为 初始化所述节点的更新频率;将待计算节点的初始化更新频率与所述待计算节点所依赖的其它节点的初始化更新 频率相加的和作为所述待计算节点的更新频率,其中所述待计算节点所依赖的其它节点包 括所述待计算节点直接依赖的其它节点和所述待计算节点间接依赖的其它节点。
16.如权利要求15所述的系统,其中更新频率计算装置被进一步配置为如果所述节点是规则谓词节点,则将所述节点的更新频率初始化为所述规则谓词节点 所依赖的所有基本谓词的更新频率的和;如果所述节点是伪节点,则将所述节点的更新频率初始化为所述伪节点所替换的强连通子图中包含的所有规则谓词节点的初始化更新频率的和。
17.如权利要求12至14任一所述的系统,其中查询频率计算装置被进一步配置为 初始化所述节点的查询频率;将所述节点的初始化查询频率与依赖于所述节点的其它节点的初始化查询频率相加, 作为所述节点的查询频率,其中依赖于所述节点的其它节点包括直接依赖于所述节点的其 它节点和间接依赖于所述节点的其它节点。
18.如权利要求17所述的系统,其中查询频率计算装置被进一步配置为如果所述节点是规则谓词节点,则所述节点的初始化查询频率是所述规则谓词节点的 查询频率;如果所述节点是伪节点,则将所述节点的查询频率初始化为所述伪节点所替换的强连 通子图中包含的所有规则谓词节点的初始化查询频率的和。
19.如权利要求12至18任一所述的系统,其中代价值计算装置被进一步配置为 设定所述节点的单次预计算代价值Ce ;设定所述节点的单次查询代价值Cq ;利用公式Em = Ce+n. UF*Ce计算所述节点的物化代价值Em,其中η. UF表示所述节点的 更新频率;以及利用公式Eq = n. QF*Cq计算所述节点的实时查询代价值Eq,其中n. QF表示所述节点 的查询频率。
20.如权利要求12至19任一所述的系统,其中物化确定装置被进一步配置为 判断所述实时查询代价值与物化代价值的差值是否大于预设的用于确定要被物化的节点的阈值;以及如果判断结果为是,则将所述节点确定为要被物化的节点。
21.如权利要求12所述的系统,其中物化节点确定装置被进一步配置为为所述要被 物化的节点所对应的规则谓词生成物化表。
22.如权利要求12所述的系统,其中物化节点确定装置被进一步配置为从所述不包 含强连通子图的依赖关系图中删除所确定的要被物化的节点,以生成新的依赖关系图。
全文摘要
本发明涉及数据库查询及规则推理系统,尤其涉及确定推理系统中要被物化的规则谓词的技术。本发明提供了一种用于确定要被物化的规则谓词的方法,包括获取规则谓词的不包含强连通子图的依赖关系图,所述依赖关系图指示所述规则谓词间的依赖关系;计算所述依赖关系图中的节点的更新频率;计算所述依赖关系图中的节点的查询频率;根据所述查询频率和更新频率计算所述节点的实时查询代价值和物化代价值;以及根据所述节点的实时查询代价值与物化代价值的差值,确定要被物化的节点,所述要被物化的节点所对应的规则谓词是要被物化的规则谓词。通过本发明的方法和系统,可以实现在构建有规则谓词的关系数据推理系统中进行查询时,既节约实时查询的结果返回时间,又减少数据更新的影响的技术效果。
文档编号G06F17/30GK102053989SQ20091021131
公开日2011年5月11日 申请日期2009年10月30日 优先权日2009年10月30日
发明者孙行智, 徐林昊, 潘越 申请人:国际商业机器公司