CN114281830A - 多属性条件的规则映射表构建方法、规则匹配方法和装置 - Google Patents

多属性条件的规则映射表构建方法、规则匹配方法和装置 Download PDF

Info

Publication number
CN114281830A
CN114281830A CN202210190667.7A CN202210190667A CN114281830A CN 114281830 A CN114281830 A CN 114281830A CN 202210190667 A CN202210190667 A CN 202210190667A CN 114281830 A CN114281830 A CN 114281830A
Authority
CN
China
Prior art keywords
attribute
rule
mapping table
prefix tree
attribute value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210190667.7A
Other languages
English (en)
Other versions
CN114281830B (zh
Inventor
韩华伟
张智
蒋楚琰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Tuya Information Technology Co Ltd
Original Assignee
Hangzhou Tuya Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Tuya Information Technology Co Ltd filed Critical Hangzhou Tuya Information Technology Co Ltd
Priority to CN202210190667.7A priority Critical patent/CN114281830B/zh
Publication of CN114281830A publication Critical patent/CN114281830A/zh
Application granted granted Critical
Publication of CN114281830B publication Critical patent/CN114281830B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种多属性条件的规则映射表构建方法、规则匹配方法、装置和计算机设备,通过将所述属性值集合映射为一个质数序列,并建立所述属性值集合与所述质数序列的属性‑质数映射表;根据所述属性‑质数映射表,将所述属性值集合以及所述属性值集合对应的条件表达式集合映射为一个有序加权前缀树;根据所述有序加权前缀树构建规则映射表,所述规则映射表包括所述有序加权前缀树中不同路径的质数乘积和对应的规则,解决了在条件表达式数目N很大并且设备请求量很大的情况下,无法满足系统性能指标的问题。

Description

多属性条件的规则映射表构建方法、规则匹配方法和装置
技术领域
本发明涉及物联网领域,特别是涉及一种多属性条件的规则映射表构建方法、规则匹配方法和装置。
背景技术
物联网平台的规则引擎系统基于设备属性处理设备上报的消息,处理过程包括从设备上报的消息中提取出设备标识,基于设备标识获取该设备关联的所有设备属性,判断设备属性是否满足规则引擎系统配置的条件表达式,如果满足,则将匹配的规则发送至设备,使设备执行规则对应的动作。在设备属性构造的条件表达式中,有一种多值包含关系的表达式,即:设备属性是多个属性值构成的集合S,条件表达式给定多值集合B,需满足S包含B,不同于单值属性构成的逻辑表达式,多值表达式不是精确匹配,即不能用相等判断,同时匹配结果也不具备唯一性,所以无法使用逻辑表达式快速匹配算法。
现有的做法是通过遍历所有条件表达式,逐一判断是否满足S包含B。这种逐一遍历进行判断的方法,其时间和空间复杂度都是O(N),在条件表达式数目N很大并且设备请求量很大的情况下,将无法满足系统性能指标。
目前针对上述问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种多属性条件的规则映射表构建方法、规则匹配方法和装置,以至少解决在条件表达式数目很大或设备请求量很大的情况下,时间和空间复杂度较高的问题。
第一方面,本申请实施例提供了一种多属性条件的规则映射表构建方法,所述方法包括:
获取属性值集合,所述属性值集合包括多个属性值,每一所述属性值集合对应一个条件表达式集合;
将所述属性值集合映射为一个质数序列,并建立所述属性值集合与所述质数序列的属性-质数映射表;
根据所述属性-质数映射表,将所述属性值集合以及所述属性值集合对应的条件表达式集合映射为一个有序加权前缀树;
根据所述有序加权前缀树构建规则映射表,所述规则映射表包括所述有序加权前缀树中不同路径的质数乘积和对应的规则。
在其中一些实施例中,所述根据所述属性-质数映射表,将所述属性值集合对应的条件表达式集合映射为一个有序加权前缀树;包括:
初始化有序加权前缀树,所述有序加权前缀树中的每个节点初始化为一个3元组T(a, p, R),其中a表示属性值,所述属性值为所述属性值集合S里面的一个元素;p表示所述属性值对应的质数,是质数序列P中的一个元素;R是取值大于等于0的整数集合,R等于0表示该节点是虚拟节点,不存在对应的条件表达式,R不等于0表示该节点存在对应的条件表达式;所述前缀树的根节点初始化为虚拟节点;
根据所述属性-质数映射表,将所述条件表达式集合中的每一条件表达式B中包含的属性值和对应的规则添加到所述有序加权前缀树中的节点T(a, p, R)。
在其中一些实施例中,所述根据所述属性-质数映射表,将所述条件表达式集合中的条件表达式B中包含的属性值和对应的规则添加到所述有序加权前缀树中的节点T(a,p, R);包括:
将所述条件表达式B中包含的属性值作为T(a, p, R)中a的值,所述条件表达式中包含的多个属性值设置在所述有序加权前缀树中的同一子树中;
查找所述属性-质数映射表,获取所述属性值a对应的p值;
若所述属性值a是条件表达式B集合中的最后一个元素,则R取值为条件表达式B集合对应的规则,否则R取值为0;
若所述属性值a在所述有序加权前缀树中已经存在,则更新该节点的R值。
在其中一些实施例中,所述更新该节点的R值包括:
将当前R值集合和有序加权前缀树中节点的R值集合依次做或运算得到计算结果;
若计算结果不等于0且不等于当前R值集合,则将所述当前R值集合添加到所述有序加权前缀树中节点的R值集合。
在其中一些实施例中,所述根据所述有序加权前缀树计算得到规则映射表;包括:
遍历所述有序加权前缀树,确定所述有序加权前缀树中R值不为0的目标节点;
计算从的根节点到所述目标节点的所有p值的乘积K;
根据所述乘积K和所述目标节点对应的规则,生成所述规则映射表M[i],其中i表示所述有序加权前缀树的根节点到所述目标节点的路径长度。
第二方面,本申请实施例提供了一种多属性条件的规则匹配方法,所述方法包括:
接收设备消息,并根据所述设备消息得到设备的属性列表;
获取所述属性列表中多属性值类型的属性值集合S;
计算所述属性值集合S中多个属性值的组合;
根据所述属性-质数映射表,得到每个所述组合包含的属性值分别对应的质数p,并计算多个质数p的乘积K;
根据规则映射表得到所述乘积K对应的规则;所述规则映射表通过上述的方法构建。
第三方面,本申请实施例提供了一种多属性条件的规则映射表构建的装置,包括:获取模块、第一映射模块、第二映射模块和构建模块;其中:
获取模块,用于获取属性值集合,所述属性值集合包括多个属性值,每一所述属性值集合对应一个条件表达式集合;
第一映射模块,用于将所述属性值集合映射为一个质数序列,并建立所述属性值集合与所述质数序列的属性-质数映射表;
第二映射模块,用于根据所述属性-质数映射表,将所述属性值集合对应的条件表达式集合映射为一个有序加权前缀树;
构建模块,用于根据所述有序加权前缀树构建规则映射表,所述规则映射表包括所述有序加权前缀树中不同路径的质数乘积和对应的规则。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面和第二方面所述的方法。
相比于相关技术,本申请实施例提供的多属性条件的规则映射表构建方法、规则匹配方法、装置、计算机设备和可读存储介质,通过将属性值集合映射为一个质数序列,并建立所述属性值集合与所述质数序列的属性-质数映射表;根据所述属性-质数映射表,将所述属性值集合以及所述属性值集合对应的条件表达式集合映射为一个有序加权前缀树;根据所述有序加权前缀树构建规则映射表,所述规则映射表包括所述有序加权前缀树中不同路径的质数乘积和对应的规则。解决了在条件表达式数目N很大并且设备请求量很大的情况下,无法满足系统性能指标的问题。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请提供的多属性条件的规则映射表构建方法的流程图;
图2是本申请所应用的规则引擎系统的整体架构图;
图3是本申请提供的多属性条件的规则匹配方法的流程图;
图4是本申请提供的有序加权前缀树的示意图;
图5是本申请提供的多属性条件的规则映射表构建装置的示意图;
图6是本申请实施例提供的计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
物联网领域,智能设备会上报数据至物联网平台,物联网平台根据上报的数据获取到设备上报的属性,物联网平台的规则引擎系统根据该属性去规则库中查找匹配的规则,然后发送给设备,使设备执行相应的动作。现有的,参考图2,对于属性4,其包括多个属性值构成了属性值集合attr4=S{a1,a2,a3,a4},条件表达式B的数目N很大的情况下,若通过遍历所有条件表达式,逐一判断是否满足S包含B,则时间和空间复杂度都是O(N),在条件表达式数目N很大并且设备请求量很大的情况下,将无法满足系统性能指标。
本实施例提供了一种多属性条件的规则映射表构建方法。图1是根据本申请实施例的多属性条件的规则映射表构建方法的流程图,如图1所示,该流程包括如下步骤:
步骤110,获取属性值集合,属性值集合包括多个属性值,每一属性值集合对应一个条件表达式集合。
属性值集合是指设备的同一属性由多个属性值构成的集合S,参考图2,属性1、属性2和属性3都属于单属性集合,属性4由多个属性值构成属性值集合。例如针对电工设备,能力的属性名叫做:product_ability_codes,对应的属性值包括三个:(timer,tyabihscek,tyabi3y3fu)。timer,tyabihscek,tyabi3y3fu代表设备具有的3种能力,分别代表定时能力、电量统计能力和离线报警能力。事实上,具体代表何种能力,规则引擎系统并不关心,只要上报消息的设备具备了这3种能力,规则引擎就把消息发给业务方,这个设备可能同时具备了30种其他能力。
本申请方案即是针对属性值集合的规则匹配问题。属性值集合也成为多值属性,多值属性不同于单值属性构成的逻辑表达式,多值表达式既不是精确匹配,不能用相等判断,同时匹配结果也不具备唯一性,所以无法使用逻辑表达式快速匹配算法。
每一属性值集合对应一个条件表达式集合,条件表达式集合可以包括多个条件表达式,参考图1,属性值集合4对应3个条件表达式,分别是条件表达式4、条件表达式5和条件表达式6。
步骤120,将属性值集合映射为一个质数序列,并建立属性值集合与质数序列的属性-质数映射表。
质数的定义为任何一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的,最小的质数是2。由此可以得出一个推论:如果N是有限个质数的乘积,那么一定不存在另外一组质数序列P[1,2,…,n],其乘积等于N。本申请利用这个原理,将属性表达式集合映射为一个质数序列,属性值集合中的每一个属性值映射为质数序列中的一个质数。
步骤130,根据属性-质数映射表,将属性值集合以及属性值集合对应的条件表达式集合映射为一个有序加权前缀树。
前缀树(retrival, 简称trie)是一种可以支持快速模式检索的数据结构。本申请利用该数据结构,将属性值、属性值对应的质数以及对应的条件表达式添加至前缀树的节点,生成一个有序加权前缀树。有序加权前缀树的每一个节点对应一个属性值、属性值对应的质数、属性值对应的条件表达式。
步骤140,根据有序加权前缀树构建规则映射表,规则映射表包括有序加权前缀树中不同路径的质数乘积和对应的规则。
有序加权前缀树包括多层,根节点所在的层数为第一层,从根节点到第L层节点的路径长度为L。图2中,属性值a3和属性值a4的路径长度为2,属性值a9的路径长度为3。
由于规则映射表类似于(key,value)的格式,key是有序加权前缀树中不同路径的质数乘积,value为对应的规则。根据质数的性质,对于有序加权前缀树来说,不存在两个路径乘积相等的路径。
本申请基于质数特征和分解唯一性定理,将设备多值属性集合映射为质数序列,将所有多值条件表达式集合映射为一个有序加权前缀树。将条件匹配操作转化为遍历前缀树生成的规则映射表,从而降低匹配的时间复杂度和空间复杂度。(1)时间复杂度降低到O(m),m=log(2,N)。其中m是多值属性集合S中的所有属性数目,N是S中元素组成的多值条件表达式数目。根据组合数公式可以得出:N=2^m*d,d是重复条件的平均值。(2)空间复杂度降到O(C(m)). C(m)为m的组合数。
在其中一些实施例中,将属性值集合映射为质数序列具体为:每一个属性值设置一个固定的质数,属性值集合S[a1, a2, a3,......,am]映射为一个质数序列P[p1, p2,p3,......,pm]。比如timer->37, tyabihscek->19, tyabi3y3fu->29。
需要说明的是,属性值到质数的映射表是事先构造好的,是固定不变的。
具体地,可以从2开始对属性值集合进行映射,形成一个质数序列P[p1, p2,p3...pm],建立从属性值集合S到指数序列P的属性-质数映射表M1,属性-质数映射表M1如下表所示:
Figure 635155DEST_PATH_IMAGE001
在其中一些实施例中,根据属性-质数映射表,将属性值集合对应的条件表达式集合映射为一个有序加权前缀树;包括:
初始化有序加权前缀树,有序加权前缀树中的每个节点初始化为一个3元组T(a,p, R),其中a表示设备的属性值,属性值为属性值集合S里面的一个元素;p表示属性值对应的质数,是质数序列P中的一个元素;R是取值大于等于0的整数集合,R等于0表示该节点是虚拟节点,不存在对应的条件表达式,R不等于0表示该节点存在对应的条件表达式;前缀树的根节点初始化为虚拟节点。
根据所述属性-质数映射表,将所述条件表达式集合中的每一条件表达式B中包含的属性值和对应的规则添加到所述有序加权前缀树中的节点T(a, p, R)。
具体地,在规则引擎系统启动时,初始化有序加权前缀树。除根节点外,的每个节点是一个3元组T(a, p, R), R是取值大于等于0的整数集合,0表示该节点是虚拟节点,不存在对应的真实条件表达式,非0表示真实存在的节点,如图4中节点1和节点2,其值代表该表达式对应的规则id,该节点代表的表达式是从根节点到该节点的元素组成的序列。扫描规则引擎中的规则库,判断条件表达式的属性,如果是多值类型,则将该条件表达式B中包含的属性值和对应的规则添加到有序加权前缀树的节点上。
在其中一些实施例中,根据所述属性-质数映射表,将所述条件表达式集合中的每一条件表达式B中包含的属性值和对应的规则添加到所述有序加权前缀树中的节点T(a,p, R);包括:
将条件表达式B中包含的属性值作为T(a, p, R)中a的值,条件表达式中包含的多个属性值设置在有序加权前缀树中的同一子树中。
参考图2,a2和a3均位于条件表达式4中,a1、a4和a9位于条件表达式6中,则图4中a2和a3位于同一子树中,a1、a4和a9位于同一子树中。通过将同一条件表达式中包括的属性值设置在同一子树,可以有效避免数据的重复,减少不必要的计算量。
查找属性-质数映射表,获取属性值a对应的p值。
T(a, p, R)中R的取值规则如下:如果属性值a是条件表达式B集合中的最后一个元素,则R取值为条件表达式B集合对应的规则,否则R取值为0;如果属性值a在有序加权前缀树中已经存在,则更新该节点的R值。
参考图2和图4,以属性4为例进行说明。属性4 包括4个属性值,attr4=A{a1,a2,a3,a4},在规则库中,attr4对应有3个条件表达式。条件表达式4:attr4包含B{a2,a3},对应规则3和规则4;条件表达式5:attr4包含B{a1,a4},对应规则5和规则6;条件表达式6:attr4包含B{a1,a4,a9},对应规则9。初始化有序加权前缀树。条件表达式B中包含的所有属性值有a1、a2、a3、a4和a9。由于a1和a2不在同一条件表达式中,因此将a1添加至左子树的第一层,a2添加至右子树的第一层。根据节点T(a, p, R)中R的取值规则,a1和a2均不是条件表达式中的最后一个属性,因此R均取值为0,不存在对应的真实条件表达式。对于属性a3,a3与a2均属于条件表达式4,因此,将a3添加至右子树的第二层。a3是条件表达式4的最后一个属性,该节点的R值取条件表达式4对应的规则,即该节点R取值为{3,4}。对于属性a4,a4与a1均属于条件表达式5,因此,将a4添加至左子树的第二层。a4是条件表达式5的最后一个属性,该节点的R值取条件表达式5对应的规则,即该节点R取值为{5,6}。对于属性a9,a9与a1、a4均属于条件表达式6,因此,将a9添加至左子树的第三层。a9是条件表达式6的最后一个属性,该节点的R值取条件表达式6对应的规则,即该节点R取值为{9}。
在其中一些实施例中:更新该节点的R值包括:
将当前R值集合和有序加权前缀树中节点的R值集合依次做或运算得到计算结果;
若计算结果不等于0且不等于当前R值集合,则将当前R值集合添加到有序加权前缀树中节点的R值集合。
如果路径中的a已经在中存在,只需要更新该节点的R值。更新规则如下:用当前元素的r值和树中节点的R值集合(可能多个)依次做位或运算,如果计算结果值不等于0同时也不等于当前元素的r值,则更新树中节点的R值集合,将r添加到R中。重复这个过程,直至规则库中所有多值条件表达式均添加到树中。构造完成的树是一个有序加权前缀树,即:树中根节点出发的任一路径,其属性值遵循第一预设规则进行排列的属性顺序,其加权值等于属性-质数映射表中属性对应的质数值。
需要说明的是,如果有多个多值属性集合,将会分别独立构造出多个有序加权前缀树。
在其中一些实施例中,根据有序加权前缀树计算得到规则映射表;包括:
遍历有序加权前缀树,确定有序加权前缀树中R值不为0的目标节点;
计算从的根节点到目标节点的所有p值的乘积K;
根据乘积K和目标节点对应的规则,生成规则映射表M[i],其中i表示有序加权前缀树的根节点到目标节点的路径长度。
参考图4,有序加权前缀树中R值不为0的目标节点为3、4、5。首先计算从根节点到节点3这一路径的所有p值的乘积为1*2*7=14,节点3对应的规则为{5,6};根节点到节点4这一路径的所有p值的乘积为1*3*5=15,节点4对应的规则为{3,4}。节点3和节点4均位于第二层,生成映射表M[2]如下表:
Figure 576435DEST_PATH_IMAGE002
然后计算从根节点到节点5这一路径的所有p值的乘积为1*2*7*23=322,节点5对应的规则为{9},节点5均位于第三层,生成映射表M[3]如下表:
Figure 313447DEST_PATH_IMAGE003
具备设备属性attr4={ a1, a2, a3, a4}的设备消息可以匹配上节点3和4。
本申请还提供了一种多属性条件的规则匹配方法,如图3所示,包括步骤310至步骤350;其中:
步骤310,接收设备消息,并根据设备消息得到设备的属性列表;
步骤320,获取属性列表中多值类型的属性值集合,属性值集合为设备的同一属性包括的多个属性值;
步骤330,计算属性值集合中多个属性值的组合;
步骤340,根据属性-质数映射表,得到每个组合包含的属性值分别对应的质数p,并计算多个质数p的乘积K;
步骤350,根据规则映射表得到乘积K对应的规则;多属性条件的规则映射表构建方法包括如下步骤:
获取属性值集合,属性值集合为设备的同一属性包括的多个属性值,每一属性值集合对应一个条件表达式集合;
将属性值集合映射为一个质数序列,并建立属性值集合与质数序列的属性-质数映射表;
根据属性-质数映射表,将属性值集合以及属性值集合对应的条件表达式集合映射为一个有序加权前缀树;
根据有序加权前缀树构建规则映射表,规则映射表包括有序加权前缀树中不同路径的质数乘积和对应的规则。
具体流程如下:参考图2和图4,当智能设备上报的消息通过物联网平台到达规则引擎系统时,规则引擎系统从设备消息体中解析出设备标识,访问设备服务获取该设备相关的属性列表,对属性列表中的每个多值类型的属性集合S(a1,a2,a3...ax)进行排列,令1<=j<=min(x,I),I表示有序加权前缀树的根节点到当前节点的最大路径长度。如果M[j]存在,那么计算所有j个元素的组合C(j, x),对每个组合元素里面的属性值集合,查找属性-质数映射表得到其各属性对应的质数p,计算乘积Kj=p1*p2...*pj,通过Kj查找规则映射表M[j],得到对应的规则id列表。至此,多值属性条件表达式匹配完成。如果规则id列表不为空,依次查找各id对应的规则执行器执行规则的动作。
在其中一些实施例中,所述计算所述属性值集合中多个属性值的组合,包括:
确定所述规则映射表中存在的规则映射表种类,所述规则映射表种类根据所述质数乘积对应在有序加权前缀树的层数划分;
根据所述规则映射表种类,计算对应数量的属性值构成的组合。
本实施例通过先判断规则映射表中存在的规则映射表种类后再计算对应的组合,从而可以减小不必要的运算量,提升匹配效率。
以属性4为例进行举例说明。
当智能设备上报的消息通过物联网平台到达规则引擎系统时,规则引擎系统从设备消息体中解析出设备标识,访问设备服务获取该设备相关的属性列表,对属性列表中的每个多值类型的属性集合attr4(a1,a2,a3,a4)按照第一预设规则进行排列,得到attr4对应的属性-质数映射表M1,如下所示:
Figure 774515DEST_PATH_IMAGE004
attr4对应的有序加权前缀树如图4所示。M[2]和M[3]均存在,因此,只需要计算2个属性值的组合和3个属性值的组合即可。计算所有2个属性值的组合 C(2, 4),得到第一组合:(a1,a2)、(a1,a3)、(a1,a4)、(a2,a3)、(a2,a4)和(a3,a4);以及所有3个属性值的组合C(3, 4),得到第二组合:(a1,a2,a3)、(a1,a2,a4)、(a1,a3,a4)和(a2,a3,a4)。对每个组合元素里面的属性值集合,查找属性-质数映射表得到其各属性对应的质数p,计算乘积Kj=p1*p2...*pj。第一组合中的K2分别为:6,10,14,15,21和35,第二组合中的K3分别为:30,70,105。通过K2查找规则映射表M[2],得到匹配到的规则id列表为乘积14对应的规则3和规则4,以及乘积15对应的规则5和规则6;通过K3查找规则映射表M[3],未匹配到对应的规则。最终,具备设备属性attr4=S{ a1,a2,a3,a4}的设备消息可以匹配上节点3和节点4,规则引擎系统将规则3、规则4、规则5和规则6发送至智能设备。
本申请依据质数定义和算术基本定理(又称唯一分解定理):任何一个大于1 的自然数 N,要么本身是质数,要么N可以唯一分解成有限个质数的乘积。
由此申请人推导出一个结论:如果N是有限个质数的乘积,那么,一定不存在另外一组质数序列P[1..n],其乘积等于N(对于有序加权前缀树来说,不存在两个路径乘积相等的路径)。根据该推论:将多值匹配中的不能精确匹配问题转换成了质数乘积的精确匹配问题。避免了匹配过程中的遍历过程。将时间复杂度从O(N)降为O(m),m为属性集合里面元素的数目,N为条件表达式数目。从数量级上讲:N=d*2^m,d>=1是相同表达式的重复率。同时,将字符串比较和集合包含运算转换成了质数乘积和相等运算,进一步降低了计算时间复杂度。
本申请通过构造了属性-质数映射表,有序加权前缀树和用于匹配的规则映射表。由于质数唯一性和前缀树的特征,合并了相同的前缀和重复项,其数目小于属性全集S[a1,a2, a3...am]的所有元素组合数:M=SUM(C(i,m)),其中1<=i<=m。在条件表达式数目N很多的情况下(存在大量重复),M将远小于N。所以这种情况下,存储M2的空间复杂度将远小于遍历N的空间复杂度。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图5是根据本申请实施例的多属性条件的规则映射表构建装置的结构框图,如图5所示,该装置包括:获取模块510、第一映射模块520、第二映射模块530和构建模块540;其中:
获取模块510,用于获取属性值集合,属性值集合为设备的同一属性包括的多个属性值,每一属性值集合对应一个条件表达式集合;
第一映射模块520,用于将属性值集合映射为一个质数序列,并建立属性值集合与质数序列的属性-质数映射表;
第二映射模块530,用于根据属性-质数映射表,将属性值集合对应的条件表达式集合映射为一个有序加权前缀树;
构建模块540,用于根据有序加权前缀树构建规则映射表,规则映射表包括有序加权前缀树中不同路径的质数乘积和对应的规则。
本申请依据质数定义和算术基本定理,将属性值集合映射为一个质数序列,将条件表达式映射为一个有序加权前缀树,将多属性条件匹配中的不能精确匹配问题转换成了质数乘积的精确匹配问题,避免了匹配过程中的遍历过程。将时间复杂度从O(N)降为O(m),m为属性集合里面元素的数目,N为条件表达式数目。从数量级上讲:N=d*2^m, d>=1是相同表达式的重复率。同时,将字符串比较和集合包含运算转换成了质数乘积和相等运算,进一步降低了计算时间复杂度。
该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
另外,结合图1和图3描述的方法可以由计算机设备来实现。图6为根据本申请实施例的计算机设备的硬件结构示意图。
计算机设备可以包括处理器61以及存储有计算机程序指令的存储器62。
具体地,上述处理器61可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器62可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器62可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(SolidState Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(Universal SerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器62可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器62可在数据处理装置的内部或外部。在特定实施例中,存储器62是非易失性(Non-Volatile)存储器。在特定实施例中,存储器62包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(RandomAccess Memory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable Read-Only Memory,简称为PROM)、可擦除PROM(Erasable ProgrammableRead-Only Memory,简称为EPROM)、电可擦除PROM(Electrically Erasable ProgrammableRead-Only Memory,简称为EEPROM)、电可改写ROM(Electrically Alterable Read-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-Access Memory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode Dynamic Random Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(Extended Date Out Dynamic RandomAccess Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。
存储器62可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器61所执行的可能的计算机程序指令。
处理器61通过读取并执行存储器62中存储的计算机程序指令,以实现上述实施例中的方法。
在其中一些实施例中,计算机设备还可包括通信接口63和总线60。其中,如图6所示,处理器61、存储器62、通信接口63通过总线60连接并完成相互间的通信。
通信接口63用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。通信接口63还可以实现与其他部件例如:外接设备、图像/数据采集设备、数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。
总线60包括硬件、软件或两者,将计算机设备的部件彼此耦接在一起。总线60包括但不限于以下至少之一:数据总线(Data Bus)、地址总线(Address Bus)、控制总线(Control Bus)、扩展总线(Expansion Bus)、局部总线(Local Bus)。举例来说而非限制,总线60可包括图形加速接口(Accelerated Graphics Port,简称为AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,简称为EISA)总线、前端总线(Front Side Bus,简称为FSB)、超传输(Hyper Transport,简称为HT)互连、工业标准架构(Industry Standard Architecture,简称为ISA)总线、无线带宽(InfiniBand)互连、低引脚数(Low Pin Count,简称为LPC)总线、存储器总线、微信道架构(Micro ChannelArchitecture,简称为MCA)总线、外围组件互连(Peripheral Component Interconnect,简称为PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(Serial AdvancedTechnology Attachment,简称为SATA)总线、视频电子标准协会局部(Video ElectronicsStandards Association Local Bus,简称为VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线60可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该计算机设备可以基于获取到的程序指令,执行本申请实施例中的方法。另外,结合上述实施例中的多属性条件的规则映射表构建和规则匹配方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种多属性条件的规则映射表构建方法,其特征在于,所述方法包括:
获取属性值集合,所述属性值集合包括多个属性值,每一所述属性值集合对应一个条件表达式集合;
将所述属性值集合映射为一个质数序列,并建立所述属性值集合与所述质数序列的属性-质数映射表;
根据所述属性-质数映射表,将所述属性值集合以及所述属性值集合对应的条件表达式集合映射为一个有序加权前缀树;
根据所述有序加权前缀树构建规则映射表,所述规则映射表包括所述有序加权前缀树中不同路径的质数乘积和对应的规则。
2.根据权利要求1所述的方法,其特征在于,所述根据所述属性-质数映射表,将所述属性值集合对应的条件表达式集合映射为一个有序加权前缀树;包括:
初始化有序加权前缀树,将所述有序加权前缀树中的每个节点初始化为一个3元组T(a, p, R),其中a表示属性值,所述属性值为所述属性值集合S里面的一个元素;p表示所述属性值对应的质数,是质数序列P中的一个元素;R是取值大于等于0的整数集合,R等于0表示该节点是虚拟节点,不存在对应的条件表达式,R不等于0表示该节点存在对应的条件表达式;所述前缀树的根节点初始化为虚拟节点;
根据所述属性-质数映射表,将所述条件表达式集合中的每一条件表达式B中包含的属性值和对应的规则添加到所述有序加权前缀树中的节点T(a, p, R)。
3.根据权利要求2所述的方法,其特征在于,所述根据所述属性-质数映射表,将所述条件表达式集合中的每一条件表达式B中包含的属性值和对应的规则添加到所述有序加权前缀树中的节点T(a, p, R);包括:
将所述条件表达式B中包含的属性值作为T(a, p, R)中a的值,所述条件表达式中包含的多个属性值设置在所述有序加权前缀树中的同一子树中;
查找所述属性-质数映射表,获取所述属性值a对应的p值;
若所述属性值a是条件表达式B集合中的最后一个元素,则R取值为条件表达式B集合对应的规则,否则R取值为0;
若所述属性值a在所述有序加权前缀树中已经存在,则更新该节点的R值。
4.根据权利要求3所述的方法,其特征在于,所述更新该节点的R值包括:
将当前R值集合和有序加权前缀树中节点的R值集合依次做或运算得到计算结果;
若计算结果不等于0且不等于当前R值集合,则将所述当前R值集合添加到所述有序加权前缀树中节点的R值集合。
5.根据权利要求1所述的方法,其特征在于,所述根据所述有序加权前缀树计算得到规则映射表;包括:
遍历所述有序加权前缀树,确定所述有序加权前缀树中R值不为0的目标节点;
计算从的根节点到所述目标节点的所有p值的乘积K;
根据所述乘积K和所述目标节点对应的规则,生成所述规则映射表M[i],其中i表示所述有序加权前缀树的根节点到所述目标节点的路径长度。
6.一种多属性条件的规则匹配方法,其特征在于,所述方法包括:
接收设备消息,并根据所述设备消息得到设备的属性列表;
获取所述属性列表中多属性值类型的属性值集合;
计算所述属性值集合中多个属性值的组合;
根据所述属性-质数映射表,得到每个所述组合包含的属性值分别对应的质数p,并计算多个质数p的乘积K;
根据规则映射表得到所述乘积K对应的规则;所述规则映射表通过权利要求1至权利要求5中任一项所述的方法构建。
7.根据权利要求6所述的方法,其特征在于,所述计算所述属性值集合中多个属性值的组合,包括:
确定所述规则映射表中存在的规则映射表种类,所述规则映射表种类根据所述质数乘积对应在有序加权前缀树的层数划分;
根据所述规则映射表种类,计算对应数量的属性值构成的组合。
8.一种多属性条件的规则映射表构建的装置,其特征在于,包括:获取模块、第一映射模块、第二映射模块和构建模块;其中:
获取模块,用于获取属性值集合,所述属性值集合包括多个属性值,每一所述属性值集合对应一个条件表达式集合;
第一映射模块,用于将所述属性值集合映射为一个质数序列,并建立所述属性值集合与所述质数序列的属性-质数映射表;
第二映射模块,用于根据所述属性-质数映射表,将所述属性值集合对应的条件表达式集合映射为一个有序加权前缀树;
构建模块,用于根据所述有序加权前缀树构建规则映射表,所述规则映射表包括所述有序加权前缀树中不同路径的质数乘积和对应的规则。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
CN202210190667.7A 2022-03-01 2022-03-01 多属性条件的规则映射表构建方法、规则匹配方法和装置 Active CN114281830B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210190667.7A CN114281830B (zh) 2022-03-01 2022-03-01 多属性条件的规则映射表构建方法、规则匹配方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210190667.7A CN114281830B (zh) 2022-03-01 2022-03-01 多属性条件的规则映射表构建方法、规则匹配方法和装置

Publications (2)

Publication Number Publication Date
CN114281830A true CN114281830A (zh) 2022-04-05
CN114281830B CN114281830B (zh) 2022-08-30

Family

ID=80882189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210190667.7A Active CN114281830B (zh) 2022-03-01 2022-03-01 多属性条件的规则映射表构建方法、规则匹配方法和装置

Country Status (1)

Country Link
CN (1) CN114281830B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5263127A (en) * 1991-06-28 1993-11-16 Digital Equipment Corporation Method for fast rule execution of expert systems
US20080162484A1 (en) * 2006-12-27 2008-07-03 Ryo Yoshida Technique for controlling access to data
CN102945249A (zh) * 2012-10-10 2013-02-27 北京邮电大学 一种策略规则匹配查询树生成方法、匹配方法及装置
US20170262492A1 (en) * 2016-03-11 2017-09-14 Fujitsu Limited Extraction program, extraction device and extraction method
US10230639B1 (en) * 2017-08-08 2019-03-12 Innovium, Inc. Enhanced prefix matching
CN110120942A (zh) * 2019-04-17 2019-08-13 新华三信息安全技术有限公司 安全策略规则匹配方法及装置、防火墙设备及介质
CN110502899A (zh) * 2019-08-26 2019-11-26 四川长虹电器股份有限公司 一种xss攻击检测的方法
CN111782892A (zh) * 2020-06-30 2020-10-16 中国平安人寿保险股份有限公司 基于前缀树的相似字符识别方法、设备、装置和存储介质
CN113221120A (zh) * 2021-05-19 2021-08-06 西北工业大学太仓长三角研究院 一种面向物联网应用规则的漏洞检测方法及系统
CN113312392A (zh) * 2021-06-04 2021-08-27 中国建设银行股份有限公司 轻量级的规则引擎处理方法及装置
CN113535987A (zh) * 2021-09-13 2021-10-22 杭州涂鸦信息技术有限公司 联动规则匹配方法以及相关装置
CN113704252A (zh) * 2021-07-23 2021-11-26 建信金融科技有限责任公司 规则引擎决策树实现方法、装置、计算机设备及计算机可读存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5263127A (en) * 1991-06-28 1993-11-16 Digital Equipment Corporation Method for fast rule execution of expert systems
US20080162484A1 (en) * 2006-12-27 2008-07-03 Ryo Yoshida Technique for controlling access to data
CN102945249A (zh) * 2012-10-10 2013-02-27 北京邮电大学 一种策略规则匹配查询树生成方法、匹配方法及装置
US20170262492A1 (en) * 2016-03-11 2017-09-14 Fujitsu Limited Extraction program, extraction device and extraction method
US10230639B1 (en) * 2017-08-08 2019-03-12 Innovium, Inc. Enhanced prefix matching
CN110120942A (zh) * 2019-04-17 2019-08-13 新华三信息安全技术有限公司 安全策略规则匹配方法及装置、防火墙设备及介质
CN110502899A (zh) * 2019-08-26 2019-11-26 四川长虹电器股份有限公司 一种xss攻击检测的方法
CN111782892A (zh) * 2020-06-30 2020-10-16 中国平安人寿保险股份有限公司 基于前缀树的相似字符识别方法、设备、装置和存储介质
CN113221120A (zh) * 2021-05-19 2021-08-06 西北工业大学太仓长三角研究院 一种面向物联网应用规则的漏洞检测方法及系统
CN113312392A (zh) * 2021-06-04 2021-08-27 中国建设银行股份有限公司 轻量级的规则引擎处理方法及装置
CN113704252A (zh) * 2021-07-23 2021-11-26 建信金融科技有限责任公司 规则引擎决策树实现方法、装置、计算机设备及计算机可读存储介质
CN113535987A (zh) * 2021-09-13 2021-10-22 杭州涂鸦信息技术有限公司 联动规则匹配方法以及相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
田瑞琴等: "物联网网关中轻量化规则引擎的设计与实现", 《计算机应用》 *

Also Published As

Publication number Publication date
CN114281830B (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
CN110602148B (zh) 一种区块的状态树的生成和链上数据验证的方法及装置
Guha et al. Vertex and hyperedge connectivity in dynamic graph streams
CN109656798B (zh) 基于顶点重排序的超级计算机大数据处理能力测试方法
CN112052404B (zh) 多源异构关系网络的群体发现方法、系统、设备及介质
WO2010065418A1 (en) Graph-based data search
CN110738577A (zh) 社区发现方法、装置、计算机设备和存储介质
Dhulipala et al. Parallel batch-dynamic graphs: Algorithms and lower bounds
US8280836B2 (en) Converting unordered graphs to oblivious read once ordered graph representation
CN112883241B (zh) 基于连通分量生成优化的超级计算机基准测试加速方法
CN113704252A (zh) 规则引擎决策树实现方法、装置、计算机设备及计算机可读存储介质
CN111475511A (zh) 基于树状结构的数据存储方法、访问方法、装置及设备
CN111736774B (zh) 冗余数据的处理方法、装置、服务器及存储介质
CN114281830B (zh) 多属性条件的规则映射表构建方法、规则匹配方法和装置
CN115292737B (zh) 一种多关键词模糊搜索加密方法、系统及电子设备
CN109684185B (zh) 基于启发式遍历的超级计算机大数据处理能力测试方法
Barenboim et al. Fully dynamic graph algorithms inspired by distributed computing: Deterministic maximal matching and edge coloring in sublinear update-time
Im et al. A conditional lower bound on graph connectivity in mapreduce
CN113407702B (zh) 员工合作关系强度量化方法、系统、计算机和存储介质
CN110149234B (zh) 图数据压缩方法、装置、服务器及存储介质
Durfee et al. Parallel batch-dynamic graphs: Algorithms and lower bounds
CN113642594A (zh) 报文分类方法及装置、电子设备、可读介质
CN116613892B (zh) 设备增量拓扑分析方法、装置、计算机设备和存储介质
Elkin et al. $(1+\epsilon) $-Approximate Shortest Paths in Dynamic Streams
Jaques Memory adds no cost to lattice sieving for computers in 3 or more spatial dimensions
CN109617690B (zh) 区块数据处理方法及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20220405

Assignee: Guangdong Graffiti Intelligent Information Technology Co.,Ltd.

Assignor: HANGZHOU TUYA INFORMATION TECHNOLOGY Co.,Ltd.

Contract record no.: X2022330000777

Denomination of invention: Method for constructing rule mapping table, rule matching method and device for multi-attribute conditions

Granted publication date: 20220830

License type: Common License

Record date: 20221214

EE01 Entry into force of recordation of patent licensing contract