面向发布订阅的网状多级索引匹配方法
【专利摘要】本发明公开一种面向发布订阅的网状多级索引匹配方法,属于信息技术处理领域。该方法针对现有的多级索引匹配算法在删除用户订阅条目时存在全表扫描的问题,提出了改进后的网状多级索引结构,能够在确保索引效率的情况下,利用订阅条目的链表头指针锁定订阅条目进行删除,避免删除时对多级索引的全表扫描,提高索引的删除效率;采用双向链表定义订阅条目属性对应的多个订阅条目并将索引中相同订阅条目进行连接,提高索引的维护效率;索引分别针对operate操作符和attribute订阅条目属性分级建立索引,能够对查询条件进行快速进行剪枝过滤,提高索引的查询和匹配效率。
【专利说明】
面向发布订阅的网状多级索引匹配方法
技术领域
[0001] 本发明涉及信息技术处理领域,尤其涉及一种面向发布订阅的网状多级索引匹配 方法。
【背景技术】
[0002] 消息订阅/发布模式能够有效减少通信双方之间的耦合度,使得发布者与订阅者 在时间、空间和同步性上完全解耦,降低通信双方的依赖性,是一种有效的异步通信模式, 在大规模分布式网络中得到了广泛的应用。消息发布/订阅模式中数据采用消息形式进行 发布和订阅,订阅者标明感兴趣的事件类型并通知代理服务器;当发布者有新的事件发布 时,服务器通过匹配算法将与订阅者订阅类型相同的事件发送到订阅者手中。其中,匹配算 法负责高效地找到与给定时间相匹配的所有订阅条件,因此为了能够高效地将实时发生的 事件推送给订阅用户,就需要高效的索引和匹配算法。
[0003] 目前最广泛的面向发布订阅的索引应用是多级索弓丨,该索引结合了在发布订阅匹 配算法中的过滤器的链接、覆盖、相容、合并等关系。然而,现有的多级索引匹配方法在处理 订阅内容的匹配过程时采用计数器,这在操作过程中会产生匹配过程的重复问题。而且,更 为严重的问题是,对于用户可能对订阅的条目进行频繁地删除的应用中,现有的多级索引 匹配方法不能支持高效地索引删除操作。特别是在并发的环境下,不同订阅条目索引的删 除和匹配操作同时进行,这对索引在删除操作的效率提出了更高的要求。
[0004] 有鉴于此,针对现有多级索引方法中存在的问题,有必要提出新的改进方法,以同 时解决匹配过程的重复以及在删除时需进行全索引扫描的问题。
【发明内容】
[0005] 发明目的:针对现有发布订阅中索引匹配算法存在匹配过程的重复且在删除时效 率低下的问题,本发明提出一种面向发布订阅的网状多级索引匹配方法,在索引结构中将 同一订阅条目的不同属性节点通过链表进行连接,显著提高了发布订阅系统中订阅条目删 除时的索引效率。
[0006] 本发明的思路是:现有的多级索引匹配结构在用户删除订阅的情况下,为了保证 订阅条目和索引的一致性,多级索引必须要同时删除多级索引中的条目。然而多级索引在 删除订阅条目时,由于一条订阅条目存在的多个谓词属性分散在多条索引链表中,导致删 除时需要进行全索引扫描算法复杂度高。为了提高发布订阅中的索引效率,解决上述问题, 首先定义了索引的数据结构,一个订阅条目中的多个属性分别用节点表示,同一订阅条目 的多个属性节点采用链表进行连接;根据属性创建网状索引结构,同样利用链表表示订阅 条目属性,链表中的每个节点存储订阅SID,本文创新性的在索引中将同一订阅SID所对应 的所有属性采用链表进行连接并保存链表的头指针,当删除某个订阅条目时能够根据链表 的头指针一次性删除所有的相关属性节点,不需要遍历索引节点。
[0007] 技术方案:一种面向发布订阅的网状多级索引匹配方法,包含如下步骤:
[0008] si:定义网状多级索引的数据结构,该数据结构包括链表和节点,节点用于存储订 阅条目的属性信息,其中每个节点中存储的内容见表1。
[0009] S2:构建网状多级索引,在索引初始化阶段根据当前的所有订阅条目创建全局索 弓丨,具体包含如下步骤:
[0010] 步骤S21:针对当前的新订阅条目,通过订阅解析器将每条订阅条目解析成多个订 阅条件,订阅条件通过链表进行连接,此时前向和后向指针为空,每个链表节点的结构如表 一所示,链表头部包含该订阅条目的SID;
[0011]步骤S22:获取链表的当前节点,判断索引中是否已经存在该节点的operate操作 符,若是,进入步骤S23;否则,进入步骤S24;
[0012]步骤S23:选择与该节点的operate操作符对应的一级索引,将当前节点插入到索 引当中,进入步骤S25;
[0013]步骤S24:构建当前节点的operate操作符的一级索引,将当前节点插入到索引当 中,进入骤S25;
[0014] 步骤S25:将步骤S21中的双向链表指针指向下一个节点,判断当前节点是否为空, 若是进入步骤S26;否则,继续执行步骤S22;
[0015] 步骤S26:对不同订阅条件,相同属性的节点通过索引指针进行连接;
[0016] 步骤S27:完成当前订阅条目加入网状多级索引,返回步骤S21,并对所有的订阅条 目依次执行步骤S21至步骤S25,直到所有订阅条目都加入网状多级索引当中。
[0017] S3:维护全局索引,其包括索引的插入和删除两种操作;
[0018] 步骤S31:获取待删除订阅条目的SID;
[0019] 步骤S32:根据订阅条目SID,在网状索引中查找该条目的头指针并将指针后移一 个节点;
[0020] 步骤S 3 3:记录当前节点的所有前向节点和后向节点,删除当前节点;
[0021] 步骤S34:将网状索引中的节点重新连接,订阅条目链表指针后移一位;
[0022] 步骤S35:判断指针是否为空,若否,继续步骤S33;否则,删除订阅条目完成。
[0023] S4:利用索引匹配算法将当前事件与订阅条目进行匹配,删除不满足匹配条件的 订阅条目,具体包含如下步骤:
[0024] 步骤S41:提取当前事件的所有订阅条件,形成匹配集合;
[0025]步骤S42:依次与网状索引中的一级索引(operator操作符)和二级索引(属性)进 行匹配,匹配的剪枝过滤规则见权利要求5;
[0026]步骤S43:删除所有不满足匹配集合内容的订阅条目;
[0027] 步骤S44:判断索引是否遍历完成,若是,返回匹配结果集合;否则,继续执行步骤 S42〇
[0028] S5:将当前事件推送给订阅条目集合对应的所有用户。
[0029] 本发明采用上述技术方案,具有以下有益效果:采用双向链表结构,能够双向查找 和删除对应的订阅条目属性节点,提高索引的查询效率;基于属性的链表根据操作符进行 排序,快速过滤掉不满足的订阅SID,提高索引的匹配效率;利用链表结构将同一条订阅SID 所包含的属性进行串联,通过头指针依次删除所有相关节点,能够有效提高索引的删除效 率。
[0030] 本发明提出了一种新的多级索引的匹配算法,取消了传统匹配过程中的计数器, 引入了索引表,避免了在匹配过程中的重复问题。发明提出一种面向发布订阅的网状多级 索引匹配方法,在索引结构中将同一订阅条目的不同属性节点通过链表进行连接,可以同 时解决匹配过程的重复以及在删除时需进行全索引扫描的问题,显著提高了发布订阅系统 中订阅条目删除时的索引效率。本文对索引进行了改进,提出了网状多级索引结构,能够有 效降低多级索引在删除时的算法复杂度。
[0031] 本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变 得明显,或通过本发明的实践了解到。
【附图说明】
[0032] 图1示出了本发明实施例的面向发布订阅的网状多级索引匹配方法的处理流程 图;
[0033]图2示出了本发明实施例的面向发布订阅的网状多级索引的单节点结构图;
[0034]图3示出了本发明实施例的索引构建过程的处理流程图;
[0035] 图4示出了本发明实施例的面向发布订阅的网状多级索引订阅条目结构图;
[0036] 图5示出了本发明实施例的面向发布订阅的网状多级索引结构图。
【具体实施方式】
[0037] 下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明 而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价 形式的修改均落于本申请所附权利要求所限定的范围。
[0038] 图1示出了本发明实施例的面向发布订阅的网状多级索引匹配方法的处理流程 图。如图1所示,一种面向发布订阅的网状多级索引匹配方法,包含如下步骤:步骤S1:定义 网状多级索引的数据结构,该数据结构包括链表和节点,节点用于存储订阅条目的属性信 息;步骤S2:构建网状多级索引,在索引初始化阶段根据当前的所有订阅条目创建全局索 弓丨;步骤S3:维护全局索引,其包括索引的插入和删除两种操作;步骤S4:利用索引匹配算法 将当前事件与订阅条目进行匹配,确定与当前事件匹配的订阅条目集合;步骤S5:将当前事 件推送给订阅条目集合对应的所有用户。
[0039] 作为一种实施例,面向发布订阅的网状多级索引匹配方法可以包括:数据结构、索 引创建、索引维护和订阅事件匹配。例如,本发明提出的索引匹配方法可以按如下步骤实 施:
[0040] 步骤S1:定义网状多级索引的数据结构,该数据结构包括链表和节点,节点用于存 储订阅条目的属性信息,每个节点的结构见图2。每个节点存储的内容及功能描述见表1。其 中每条链表中都包含一个头指,通过头指针能够查找到该链表的所有节点。图2示出了本发 明实施例的面向发布订阅的网状多级索引的单节点结构图。如图2所示,节点中包括SID、 operate操作符、前向指针、属性、值索引指针、后向指针。
[0041] 表1节点组成部分
[0043] 步骤S2:构建网状多级索引,在索引初始化阶段根据所有的订阅条目创建全局网 状索引。网状多级索引在现有的多级索引基础上进行改进,将同一条订阅条目的不同订阅 条目属性通过链表连接在一起,同时利用数组结构存储该链表的头指针。在进行订阅条目 删除时,只要确定订阅条目SID就能够根据头指针删除该订阅条目的全部节点,避免了对索 引的全表扫描。
[0044] 作为一种实施例,索引构建过程具体包含如下步骤:
[0045] 步骤S21:针对当前的新订阅条目,通过订阅解析器将每条新订阅条目解析成多个 订阅条件,订阅条件通过双向链表进行连接。此时,该链表的前向和后向指针为空,每个链 表节点的结构可以采用如表一所示的结构,链表头部包含该订阅条目的SID。图4是订阅条 件组成的链表结构,其中S1中存储该订阅条目的头指针,每个节点中存储一个订阅条件。
[0046] 其中订阅解析器的工作实例如下:
[0047] 订阅条目:订阅每天8:00-12:00之间拍摄的水利卫星图片。
[0048] 解析后链表结构如下:
[0050]其中,前向指针和后向指针都为空,这是由于还没有将订阅条件插入到网状多级 索引当中。
[0051 ]步骤S22 :获取链表的当前节点,判断已创建的索引中是否已经存在该节点的 operate操作符,若是,进入步骤S23;否则,进入步骤S24;
[0052] 步骤S23:选择与该节点的operate操作符对应的一级索引,将当前节点插入到索 引当中,进入步骤S25;
[0053]步骤S24:构建当前节点的operate操作符的一级索引,将当前节点插入到索引当 中,进入骤S25;
[0054]算法1属性插入到网状多级索引算法
[0056] 步骤S25:将双向链表(步骤S21中的)的后向指针指向下一个节点,判断当前节点 是否为空,若是进入步骤S26;否则,继续执行步骤S22;
[0057] 步骤S26:对不同订阅条件,相同属性的节点通过索引指针进行连接;
[0058] 步骤S27:完成当前订阅条目加入网状多级索引,返回步骤S21,并对所有的订阅条 目依次执行步骤S21至步骤S25,直到所有订阅条目都加入网状多级索引当中。
[0059] 图4是网状多级索引结构的一部分,操作符"〉"为一级索引,多个"Attribute"构成 了二级索引。二级索引对应的是横向的双向链表,能够快速的实现节点的插入和删除;纵向 的订阅条目指针S1,…,Sn将不同的订阅条目连接在一起。横向和纵向的指针指向组成了网 状多级索引结构。
[0060] 索引创建算法的描述如算法2:
[0061] 算法2网状多级索引的创建算法
[0063]步骤S3:维护全局索引,具体包括索引的插入和删除两种操作,索引的插入算法见 算法3〇
[0064]算法3网状多级索引插入算法
[0067]索引的删除算法具体执行步骤见算法4: [0068]算法4网状多级索引的删除算法
[0070] 步骤S4:利用索引匹配算法对订阅条目与当前事件进行匹配,删除不满足匹配条 件的订阅条目,具体包含如下步骤:
[0071] 步骤S41:提取当前事件的所有订阅条件,形成匹配集合;
[0072]步骤S42:依次与网状索引中的一级索弓丨(operator操作符)和二级索引(属性)进 行匹配,匹配的剪枝过滤规则见权利要求5;
[0073]步骤S43:删除所有不满足匹配集合内容的订阅条目;
[0074]步骤S44:判断索引是否遍历完成,若是,返回匹配结果集合;否则,继续执行步骤 S42。具体的匹配过程见算法5:
[0075]算法5网状多级索引的匹配算法
[0078] 步骤S5:将当前事件推送给订阅条目集合对应的所有用户。
[0079] 由上可知,本发明提出了一种新的多级索引的匹配算法,取消了传统匹配过程中 的计数器,引入了索引表,避免了在匹配过程中的重复问题。发明提出一种面向发布订阅的 网状多级索引匹配方法,在索引结构中将同一订阅条目的不同属性节点通过链表进行连 接,可以同时解决匹配过程的重复以及在删除时需进行全索引扫描的问题,显著提高了发 布订阅系统中订阅条目删除时的索引效率。本文对索引进行了改进,提出了网状多级索引 结构,能够有效降低多级索引在删除时的算法复杂度。
[0080] 本技术领域技术人员可以理解,本发明可以涉及用于执行本申请中所述操作中的 一项或多项操作的设备。所述设备可以为所需的目的而专门设计和制造,或者也可以包括 通用计算机中的已知设备,所述通用计算机有存储在其内的程序选择性地激活或重构。这 样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指 令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的 盘(包括软盘、硬盘、光盘、⑶-R0M、和磁光盘)、随即存储器(RAM)、只读存储器(ROM)、电可编 程ROM、电可擦ROM(EPROM)、电可擦除可编程ROM(EEPR0M)、闪存、磁性卡片或光线卡片。可读 介质包括用于以由设备(例如,计算机)可读的形式存储或传输信息的任何机构。例如,可读 介质包括随即存储器(RAM)、只读存储器(ROM)、磁盘存储介质、光学存储介质、闪存装置、以 电的、光的、声的或其他的形式传播的信号(例如载波、红外信号、数字信号)等。
[0081] 本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或 框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。可以将这 些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来 生成机器,从而通过计算机或其他可编程数据处理方法的处理器来执行的指令创建了用于 实现结构图和/或框图和/或流图的框或多个框中指定的方法。
[0082]本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的 步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各 种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。 进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案 也可以被交替、更改、重排、分解、组合或删除。
[0083]以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应 视为本发明的保护范围。
【主权项】
1. 一种面向发布订阅的网状多级索引匹配方法,其特征在于,包含如下步骤: 步骤Si:定义网状多级索引的数据结构,该数据结构包括链表和节点,节点用于存储订 阅条目的属性信息; 步骤S2:构建网状多级索引,在索引初始化阶段根据当前的所有订阅条目创建全局索 引; 步骤S3:维护全局索引,其包括索引的插入和删除两种操作; 步骤S4:利用索引匹配算法将当前事件与订阅条目进行匹配,确定与当前事件匹配的 订阅条目集合; 步骤S5:将当前事件推送给订阅条目集合对应的所有用户。2. 如权利要求1所述的方法,其特征在于,所述每个节点存储的订阅条目属性信息包 括:3. 如权利要求2所述的方法,其特征在于,所述步骤S2中创建全局多级网状索引的具体 操作步骤如下: 步骤S21:针对当前的新订阅条目,通过订阅解析器将每条订阅条目解析成多个订阅条 件,订阅条件通过链表进行连接; 步骤S22:获取链表的当前节点,判断索引中是否已经存在该节点的operate操作符,若 是,进入步骤S23;否则,进入步骤S24; 步骤S23:选择与该节点的operate操作符对应的一级索引,将当前节点插入到索引当 中,进入步骤S25; 步骤S24:构建当前节点的operate操作符的一级索引,将当前节点插入到索引当中,进 入骤S25; 步骤S25:将步骤S21中的双向链表指针指向下一个节点,判断当前节点是否为空,若是 进入步骤S26;否则,继续执行步骤S22; 步骤S26:对不同订阅条件,相同属性的节点通过索引指针进行连接; 步骤S27:完成当前订阅条目加入网状多级索引,返回步骤S21,并对所有的订阅条目依 次执行步骤S21至步骤S25,直到所有订阅条目都加入网状多级索引当中。4. 如权利要求3所述的方法,其特征在于,所述步骤S23和S24中节点插入索引的顺序根 据operator操作符的类型确定。5. 如权利要求4所述的方法,其特征在于,所述插入顺序包括: 从小到大顺序:当操作符为〉、> =时,网状索引中的节点插入顺序为从小到大; 从大到小顺序:当操作符为〈、〈 =时,网状索引中的节点插入顺序为从大到小。6. 如权利要求1所述的方法,其特征在于,所述步骤S3包括索引的插入和删除两方面的 内容,插入指将用户新增的订阅条目通过索引插入数据库;删除指将删除订阅条目取消订 阅,即通过索引从数据库中删除订阅内容。7. 如权利要求6所述的方法,其特征在于,所述索引插入操作与步骤S2中的索引创建操 作的执行过程相同。8. 如权利要求6所述的方法,其特征在于,所述索引删除操作的具体执行步骤如下: 步骤S31:获取待删除订阅条目SID; 步骤S32:根据订阅条目SID,在网状索引中查找该条目的头指针并将指针后移一个节 占. 步骤S33:记录当前节点的所有前向节点和后向节点,删除当前节点; 步骤S34:将网状索引中的节点重新连接,订阅条目链表指针后移一位; 步骤S35:判断指针是否为空,若否,继续步骤S33;否则,删除订阅条目完成。9. 如权利要求1所述的方法,其特征在于,所述步骤S4的具体操作步骤如下: 步骤S41:提取当前事件的所有订阅条件,形成匹配集合; 步骤S42:依次与网状索引中的一级索引和二级索引进行匹配; 步骤S43:删除所有不满足匹配集合内容的订阅条目; 步骤S44:判断索引是否遍历完成,若是,返回匹配结果集合;否则,继续执行步骤S42。
【文档编号】G06F17/30GK105893635SQ201610459488
【公开日】2016年8月24日
【申请日】2016年6月23日
【发明人】冯钧, 张立霞, 王冲, 陆佳民, 徐维纲, 张进, 孔胜球, 刘艺, 徐欢, 陈志飞
【申请人】河海大学