一种基于历史经验的谓词索引匹配方法

文档序号:6552398阅读:158来源:国知局
一种基于历史经验的谓词索引匹配方法
【专利摘要】一种基于历史经验的谓词索引匹配方法,接收到新的订阅条件后,分配唯一ID,并保存在订阅条件ID表对应位置;将订阅条件谓词数目保存在谓词数目表的对应位置,对于订阅条件的每个谓词,存入谓词表,将该谓词与历史经验表中的事件谓词进行匹配,若匹配成功,将订阅条件的ID存入历史经验表中匹配成功的事件谓词对应的ID列表;接收到新的事件后,遍历事件中的谓词,进行处理;根据事件谓词的属性遍历匹配谓词表中与该属性对应行的所有谓词;所有谓词匹配结束后,遍历比较谓词数目表与匹配谓词数目表上对应的数值,若相等,则与此位置代表的订阅条件匹配。本发明利用历史匹配结果以加快匹配速度,拥有空间效率高、可扩展性强和可维护性好的优势,能够较好地提高大规模分布交互式仿真系统中数据分发的效率。
【专利说明】一种基于历史经验的谓词索引匹配方法
【技术领域】
[0001]本发明属于分布交互式仿真【技术领域】,具体涉及一种基于历史经验的谓词索引匹配算法。
【背景技术】
[0002]在分布交互式仿真系统中,地处不同位置上的各种仿真实体通过网络相连,相互协作以完成某项仿真任务。而在大规模的分布交互式仿真系统中,参与仿真的节点数量以千百计,每个节点模拟实现现实世界中多个实体的状态和行为,这些仿真节点共处于一个庞大的虚拟环境中每时每刻都在产生大量的仿真数据,如何将这些仿真数据以高效的方式分发给各个仿真节点是关系到系统能否高效运行的关键问题。
[0003]对于传统的数据分发方式:单播方式(一对一)、广播方式(一对全部),应用到大规模仿真数据分发时,都存在一定的问题。单播方式下,节点向指定的节点发送仿真数据,接收来自其他节点的仿真数据。随着客户端数量的增加,节点间一对一的数据交互将极大地增加网络负载和系统耦合性。广播方式下,节点将每一份仿真数据都发送给系统中的所有节点,而实际上很多节点并不需要该数据,给网络带宽造成很大的浪费,也增加了节点的处理负担。
[0004]相比而言,发布/订阅方式更能满足大规模分布式仿真系统对于数据分发效率的要求。在发布/订阅系统中,节点作为订阅者向其他节点发送订阅条件,表达自己对数据的个性化需求,当有节点生成仿真数据(即事件)后,会将数据与订阅条件进行匹配,将数据分发给真正需要的节点。发布/订阅方式具有更好的灵活性,实现了发送者与接收者的解耦,增强了系统的可扩展性,也减少了网络冗余数据,进而提高了数据传输效率,因而在大规模数据分发中得到广泛应用。
[0005]发布/订阅系统是一类中间件系统,系统中的各方之间通过发布/订阅方式实现交互。
[0006]在这一系统中,信息的需求方称为订阅者,信息的生产方称为发布者。订阅者将其需求的信息发送给中间件,发布者将其生产的信息发送给中间件,由中间件进行信息间的匹配,并将发布者生产的信息准确、及时地发送给对该信息感兴趣的订阅者。
[0007]在发布/订阅系统中,发布者发布的信息称为事件,每个事件由一个或多个事件谓词组成;订阅者发布的需求信息称为订阅条件,每个订阅条件由一个或多个订阅条件谓词组成。谓词可以分为事件谓词和订阅条件谓词,事件谓词即〈属性,类型,值〉三元组,订阅条件谓词即〈属性,类型,操作符,值〉四元组。事件谓词之所以没有操作符这一元素,是因为事件谓词默认操作符为“=”(等于)。属性根据发布/订阅系统应用背景的不同可有不同的定义,如在一个股票系统中,属性可以是股票的名称、股票的价格、股票的交易量等。类型可以是枚举类型、布尔类型、整数类型、浮点类型、字符类型等。操作符包括了“ = ”(等于)、“!=”(不等于)、“>”(大于)、“〈”(小于)等。
[0008]在采用发布/订阅方式的大规模分布式仿真系统中,能否高效地进行数据分发是影响系统运行和管理乃至最终仿真目标能否实现的关键问题之一。特别是在“大数据”仿真的情况下,面对海量的信息资源,数据互操作过程却难以准确获取所需的信息,存在着信息规模巨大和用户难以有效获取之间的矛盾。匹配算法,是解决数据匹配问题的关键,它负责快速、准确地找到与给定事件相匹配的全部订阅条件。
[0009]目前现有主流的匹配方法,根据数据结构划分,大致可以分为三类,一类是以搜索树、并行搜索树为代表的树结构匹配谅法;另一类是以暴力方法、谓词索引为代表的表结构匹配方法;还有一类是以二叉判定图为代表的图结构匹配方法。接下来对这几类算法进行详细介绍:
[0010](I)基于树结构的匹配方法
[0011]基于树结构的匹配方法将订阅条件组织成树形结构,树形结构的每一个非叶子节点代表了对订阅条件谓词的判断,从根节点到叶子节点的一条路径代表了一个或多个订阅条件。具有代表性的树形结构匹配算法有搜索树匹配算法和并行搜索树匹配算法。
[0012]搜索树匹配方法由Gough提出,该算法中,各订阅条件被组织成树形结构,该树的深度为系统中所有订阅条件包含的属性的总数。当一个事件到达时,系统遍历从根节点到达叶子节点的各条路径,就得出了与该事件相匹配的全部订阅条件。搜索树算法的特点是对各个订阅条件同属性谓词之间的覆盖关系不断地进行拆分,直到各条路径的谓词间不再有覆盖关系,这种操作使得一个订阅条件可能与多条从根节点到叶子节点的路径相关联,一条路径也可能包含了多个订阅条件。事件匹配时,只需遵循一条路径即能找到所有与之匹配的订阅条件。该算法拥有较低的时间复杂度,匹配效率很高,但是其空间复杂度为指数级。此外,订阅条件的维护成本高也是该算法的一大问题,每当订阅条件被增加或取消时,由于该订阅可能被包含于多条根节点到叶子节点的路径中,使得对搜索树进行修改难度极大,而只能重建搜索树。因此,搜索树算法并不适用于拥有大量数据或数据更新频繁的系统。
[0013]并行搜索树方法由Aguilera提出,该算法是在搜索树算法基础上的改进,它与搜索树算法的区别在于其不再对同属性谓词的覆盖关系进行拆分,每条从根节点到达叶子节点的路径均只代表了一个订阅条件,一个事件到达时,系统遵循一条路径找到某个匹配的订阅条件后,还需回溯去匹配其它路径。由于需要进行回溯匹配,所以该算法在匹配效率上要低于搜索树算法,但该算法的空间复杂度与订阅数量呈线性关系,而且通过对并行搜索树进行局部修改即可以完成增加或取消订阅条件的操作,即该算法拥有较低的订阅维护成本。
[0014](2)基于表结构的匹配方法
[0015]基于表结构的匹配方法将订阅条件组织成表的形式,其既可以将整个订阅条件直接存储进表里,也可以将订阅条件拆分成一个个谓词后再存储进表里。具有代表性的表结构匹配算法有暴力方法和谓词索引方法。
[0016]暴力方法是最基本的表结构匹配方法,其将所有的订阅条件存进一个列表中,每当出现一个事件时,则顺序遍历存储订阅条件的列表,找出所有匹配的订阅条件。显然,该算法实现起来较容易,但匹配的时间效率很低。
[0017]谓词索引方法的原理是将所有订阅条件的谓词存进谓词表中,每一个订阅条件以一个唯一的ID标识,同属性的谓词相邻存储,重复的谓词只存一次。匹配时顺序取出事件的谓词到谓词表里进行匹配,如果谓词表中的某个谓词匹配成功,则对包含该谓词的所有订阅条件的计数器加1,当事件的所有谓词均匹配结束之后,查询订阅条件的计数器,判断订阅条件包含的谓词个数是否与其计数器的值相等,如果相等,则说明该订阅条件匹配成功,否则不匹配。
[0018](3)基于图结构的匹配方法
[0019]基于图结构的匹配方法将订阅条件组织成图的形式,具有代表性的图结构匹配方法是二叉判定图匹配方法。
[0020]二叉判定图(binary decis1n diagram)匹配算法由Campailla等人提出,订阅条件中的每个谓词由一个布尔变量表不,一张二叉判定图表不一个订阅条件。对于含有相同谓词的订阅条件,则可将这些订阅条件对应的二叉判定图进行整合,从而形成共享的二叉判定图,节点的数量即为各订阅条件的全部谓词数量。当一个事件到达时,先求出二叉判定图中各节点的值(为I或为O),然后再通过遍历二叉判定图,以得到匹配成功的所有订阅条件。
[0021]树结构匹配方法的共性是匹配效率高,但空间复杂度大,不适用于大规模系统。比如说,一个系统中总共有100种属性,而每个订阅条件只由其中的几种属性组成,若用树结构来存储订阅条件,则每条从根节点到叶子节点的路径都将会有大量的空节点,极为浪费空间。
[0022]表结构匹配方法的共性是节省了空间,特别是谓词索引算法避免了重复谓词的冗余存储,空间复杂度更低。同时,这两种算法的维护成本较低,适用于大规模系统,而它们的缺点在于匹配效率比不上树形方法。
[0023]图结构匹配方法的优点在于它不仅可以支持谓词间的“与”操作,还可以支持谓词间的“或”操作,而其它的匹配算法基本上都无法支持存在“或”操作的订阅条件,只能将其转化成多个只包含“与”操作的订阅条件。图结构匹配方法的缺点在于相对复杂的数据结构构建过程,以及相对较大的对图遍历开销。
[0024]在大规模分布式仿真系统中,通常存在大量的订阅条件,且订阅条件之间属性个数跨度较大,时常会有订阅条件被取消或有新的订阅条件加入。由于树结构匹配方法和图结构匹配方法在空间效率、可扩展性以及可维护性上的不足,无法适应大规模分布式仿真系统的数据特点。

【发明内容】

[0025]本发明技术解决问题:克服现有技术的不足,提供一种基于历史经验的谓词索引匹配方法,拥有空间效率高、可扩展性强和可维护性好的优势,能够较好地适用于大规模仿真数据分发。
[0026]本发明技术解决方案:由于大规模分布式仿真系统中存在事件频繁更新的情况,这些频繁更新的事件之间往往存在着大量重复的信息,从构建谓词索引的角度来看则是存在大量重复的谓词,而利用历史匹配信息可避免对这些重复谓词的二次匹配,从而提高数据匹配效率。基于以上原因,本发明提出了基于历史经验的谓词索引匹配算法(PredicateIndex Matching Algorithm Based on History Experience, PI HE)。
[0027]基于历史经验的谓词索引匹配算法(PIHE算法),包括以下步骤:[0028](I)建立订阅条件ID表,所述订阅条件ID表用于顺序存放订阅条件的ID号;
[0029]建立谓词数目表,所述谓词数目表用于顺序存放每个订阅条件所包含的谓词数目;建立谓词表,所述谓词表用于存放订阅条件的谓词,同时也存放包含该谓词的订阅条件ID,由于可能有多个订阅条件包含同一个谓词,用ID列表来存放这些订阅条件的ID号,谓词表中的每一行对应同一属性的谓词;建立历史经验表,所述历史经验表用于存放匹配过的事件谓词,以及与该谓词匹配成功的订阅条件的ID,同样也由一个ID列表来存储订阅条件的ID号,表中,每一行对应一种属性;建立匹配谓词数目表,所述匹配谓词数目表用于存放每个订阅条件匹配成功的谓词数目,存放的位置与该订阅条件在订阅条件ID表中的位置一致;
[0030](2)接收到新的订阅条件后,为其分配唯一 ID,并将该ID保存在订阅条件ID表对应位置;将订阅条件谓词数目保存在谓词数目表的对应位置,对于订阅条件的每个谓词,首先将其存入谓词表,再将该谓词与历史经验表中的事件谓词进行匹配,若匹配成功,将订阅条件的ID存入历史经验表中匹配成功的事件谓词对应的ID列表;
[0031](3)接收到新的事件后,清空匹配谓词数目表,遍历事件中的谓词,进行如下处理:查询历史经验表,若该谓词存在,说明该谓词已进行过匹配,只需根据该谓词对应的ID列表,在匹配谓词数目表的相应位置加1,匹配结束,若该谓词不存在,则将该谓词插入历史经验表中,到谓词表中进行匹配;
[0032](4)根据事件谓词的属 性找到谓词表中对应的行,遍历匹配该行的所有谓词:若匹配成功,根据该谓词对应的ID列表,在匹配谓词数目表的相应位置加1,同时,将这些ID保存在历史经验表中该谓词对应的ID列表;
[0033](5)所有谓词匹配结束后,遍历比较谓词数目表与匹配谓词数目表上对应的数值,若相等,则表明事件与此位置代表的订阅条件匹配。
[0034]大规模仿真数据分发中,有些事件中存在某些谓词,其属性值一直在变,很少出现重复。这种谓词在历史经验表中很难找到重复值,这种谓词在历史经验表中很难找到重复值,到历史经验表中匹配结束后往往要到谓词表中继续进行匹配,既大量占用了历史经验表中的空间,又耗费了很多匹配的时间。为此,添加以下处理:
[0035]在历史经验表设立一个比例参数R:
n A
[0036]R=—
B
[0037]式中,A为历次在历史经验表中匹配某属性谓词找到重复值的次数,B为历史经验。
[0038]表中某属性对应的谓词数。
[0039]在历史经验表中的匹配过程有两种结果:找到重复值、找不到重复值而插入。若R小于等于5%,表示该属性对应的谓词很少出现重复。当发现历史经验表中某属性对应R值小于等于5%时,算法将不再匹配该行谓词,而是直接转移到谓词表中进行匹配,以节省时间,也不再将该事件谓词插入历史经验表,以节省空间。
[0040]R初始可设为1,并且在某属性对应的谓词达到了一定的数量之后才开始计算R值,以避免分母数值过小时计算R值波动性过大。
[0041]对于R值下限的取值,应根据不同的应用背景进行调整,可利用重复试验找出一个合适值,例如建立一组样本事件和样本订阅条件,记录其在不同R值下的匹配时间,找出最小匹配时间对应的R值。
[0042]本发明的优点和积极效果:
[0043](I)本发明利用了历史的匹配结果,重复出现的事件谓词无需进行二次匹配,可直接从历史经验表中取出匹配结果,有效缩短了匹配时间;
[0044](2)利用谓词索引算法,较好地适应了分布式仿真系统数据属性个数较多的特点,不会出现搜索树算法的空间不足问题;
[0045](3)通过ID号辨识订阅条件,重复的谓词只需存储一次,节省了空间和匹配时间。【专利附图】

【附图说明】
[0046]图1为本发明方法的实现流程图;
[0047]图2为本发明的预处理流程图;
[0048]图3为本发明的匹配过程流程图;
[0049]图4为本发明的谓词表数据结构图;
[0050]图5为本发明的历史经验表数据结构图;
[0051]图6为本发明与对比算法的匹配时间对比实验一结果图;
[0052]图7为本发明与对比算法的匹配时间对比实验二结果图。
【具体实施方式】
[0053]如图1所示,本发明具体实现步骤如下;
[0054]第一步,接收到新的订阅条件后,为其分配唯一 ID,并将该ID保存在订阅条件ID表对应位置,将订阅条件谓词数目保存在谓词数目表的对应位置,对于订阅条件的每个谓词,首先将其存入谓词表,紧接着将该谓词与历史经验表中的事件谓词进行匹配,若匹配成功,将订阅条件的ID存入历史经验表中匹配成功的事件谓词对应的ID列表,对应的流程图如图2所示。
[0055]第二步,接收到新的事件后,清空匹配谓词数目表,遍历事件中的谓词,进行如下处理:查询历史经验表,若该谓词存在,说明该谓词已进行过匹配,只需根据该谓词对应的ID列表,在匹配谓词数目表的相应位置加1,匹配结束,若该谓词不存在,则将该谓词插入历史经验表中,到谓词表中进行匹配。
[0056]第三步,根据事件谓词的属性找到谓词表中对应的行,遍历匹配该行的所有谓词:
[0057]若匹配成功,根据该谓词对应的ID列表,在匹配谓词数目表的相应位置加1,同时,将这些ID保存在历史经验表中该谓词对应的ID列表;
[0058]第四步,所有谓词匹配结束后,遍历比较谓词数目表与匹配谓词数目表上对应的数值,若相等,则表明事件与此位置代表的订阅条件匹配。
[0059]第二、三、四步对应的流程图如图3所示。
[0060]其中涉及到的数据结构具体如下:
[0061]订阅条件ID表:用于顺序存放订阅条件的ID号。
[0062]订阅条件谓词数目表:用于顺序存放每个订阅条件所包含的谓词数目。[0063]匹配谓词数目表:用于存放每个订阅条件匹配成功的谓词数目,存放的位置与该订阅条件在订阅条件ID表中的位置一致。
[0064]谓词表:如图4所示,用于存放订阅条件的谓词,同时,也存放包含该谓词的订阅条件ID,由于可能有多个订阅条件包含同一个谓词,所以用ID列表来存放这些订阅条件的ID号,谓词表中的每一行对应同一属性的谓词。
[0065]历史经验表:如图5所示,用于存放匹配过的事件谓词,以及与该谓词匹配成功的订阅条件的ID,同样也由一个ID列表来存储订阅条件的ID号,表中,每一行对应一种属性。
[0066]对暴力算法、谓词索引算法与本发明基于历史经验的谓词索引方法(即PIHE方法)
[0067]进行了对比。实验是在配置为Intel (R) Core (TM) 2Duo2.93GHz处理器、2GB内存、Windows XP SP2操作系统的PC机上进行的。参照仿真数据的特点,假设系统中一共有100种属性,每一属性均采用枚举值来表示,订阅条件和事件的属性随机从里面挑选。属性的类型中整数类型占50%,布尔类型占20%,字符串类型占30%。每一个属性出现在订阅条件(事件)中的概率相等。其中各种类型的数值均在大小为100的相应类型的样本空间中随机选取。操作符的类型有大于、等于、小于,订阅条件的每个谓词随机从三种操作符中选取一种。
[0068]一共做两组实验,实验一中,每个订阅条件或事件包含的属性个数为3?10个,实验二中,每个订阅条件或事件包含的属性个数为3?20个。
[0069]实验中,订阅条件数量固定为5000个。插入的事件数量从1000个增长到10000
个,每隔1000个取样一次,记录匹配所耗费的时间。
[0070]图6是实验一的匹配时间比较结果,A代表暴力算法,B代表谓词索引算法,C代表基于历史经验的谓词索引算法,横轴表示时间数量,纵轴表示匹配的时间,单位是秒;图7是实验二的匹配时间比较结果,A代表暴力算法,B代表谓词索引算法,C代表基于历史经验的谓词索引算法,横轴表示时间数量,纵轴表示匹配的时间,单位是秒。
[0071]根据两组实验结果可得,本发明在匹配时间上优于暴力方法和谓词索引方法。分析其原因,由于本发明利用了过去的匹配结果,避免了重复出现事件谓词的二次匹配,所以在时间效率上优于谓词索引方法和暴力方法,此外,本发明与谓词索引方法对于冗余订阅条件谓词均只存储一次,避免了冗余订阅条件谓词的匹配,同时根据属性进行索引,所以在时间效率上优于暴力方法。实验结果还表明,随着事件数量的增加,本发明在时间上的优势越来越明显。分析其原因,随着事件数量的增加,本发明历史经验表中存储的历史匹配结果也随之增加,则新来的事件能在历史经验表中找到对应匹配结果的概率越来越大,很少再需要到谓词表中进行匹配,所以时间效率上的优势越来越明显。
[0072]相比于暴力方法和谓词索引方法,本发明还需另外存储历史的匹配结果,所以耗用的存储空间会较大。但是,随着历史经验表存储的匹配结果的增加,出现新的事件谓词的概率越来越小,则历史经验表的空间增长速度越来越慢,所以本发明在内存占用上的劣势会慢慢变小,此特点也刚好适用于大规模分布式仿真系统数据量大的情况。
[0073]提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
【权利要求】
1.一种基于历史经验的谓词索引匹配方法,其特征在于包括以下步骤: (1)建立订阅条件ID表,所述订阅条件ID表用于顺序存放订阅条件的ID号;建立谓词数目表,所述谓词数目表用于顺序存放每个订阅条件所包含的谓词数目;建立谓词表,所述谓词表用于存放订阅条件的谓词,同时也存放包含该谓词的订阅条件ID,由于可能有多个订阅条件包含同一个谓词,用ID列表来存放这些订阅条件的ID号,谓词表中的每一行对应同一属性的谓词;建立历史经验表,所述历史经验表用于存放匹配过的事件谓词,以及与该谓词匹配成功的订阅条件的ID,同样也由一个ID列表来存储订阅条件的ID号,表中,每一行对应一种属性;建立匹配谓词数目表,所述匹配谓词数目表用于存放每个订阅条件匹配成功的谓词数目,存放的位置与该订阅条件在订阅条件ID表中的位置一致; (2)接收到新的订阅条件后,为其分配唯一ID,并将该ID保存在订阅条件ID表对应位置;将订阅条件谓词数目保存在谓词数目表的对应位置,对于订阅条件的每个谓词,首先将其存入谓词表,再将该谓词与历史经验表中的事件谓词进行匹配,若匹配成功,将订阅条件的ID存入历史经验表中匹配成功的事件谓词对应的ID列表; (3)接收到新的事件后,清空匹配谓词数目表,遍历事件中的谓词,进行如下处理:查询历史经验表,若该谓词存在,说明该谓词已进行过匹配,只需根据该谓词对应的ID列表,在匹配谓词数目表的相应位置加1,匹配结束,若该谓词不存在,则将该谓词插入历史经验表中,到谓词表中进行匹配; (4)根据事件谓词的属性找到谓词表中对应的行,遍历匹配该行的所有谓词:若匹配成功,根据该谓词对应的ID列表,在匹配谓词数目表的相应位置加1,同时,将这些ID保存在历史经验表中该谓词对应的ID列表; (5)所有谓词匹配结束后,遍历比较谓词数目表与匹配谓词数目表上对应的数值,若相等,则表明事件与此位置代表的订阅条件匹配; (6)为避免某些特殊谓词的多次匹配,添加以下处理:在历史经验表设立一个比例参数R:
【文档编号】G06F17/30GK104036052SQ201410318951
【公开日】2014年9月10日 申请日期:2014年7月5日 优先权日:2014年7月5日
【发明者】王海波, 吴昱斌, 宋俊平, 吕品 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1