CN116303596A - 一种带等值索引的多数据流处理方法及装置 - Google Patents
一种带等值索引的多数据流处理方法及装置 Download PDFInfo
- Publication number
- CN116303596A CN116303596A CN202310140906.2A CN202310140906A CN116303596A CN 116303596 A CN116303596 A CN 116303596A CN 202310140906 A CN202310140906 A CN 202310140906A CN 116303596 A CN116303596 A CN 116303596A
- Authority
- CN
- China
- Prior art keywords
- expression
- equivalent
- node
- index
- indexable
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims description 28
- 230000014509 gene expression Effects 0.000 claims abstract description 676
- 238000012098 association analyses Methods 0.000 claims abstract description 59
- 238000000034 method Methods 0.000 claims abstract description 56
- 238000012545 processing Methods 0.000 claims abstract description 55
- 238000004458 analytical method Methods 0.000 claims abstract description 36
- 238000010586 diagram Methods 0.000 claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 14
- 238000010276 construction Methods 0.000 claims description 6
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 238000012512 characterization method Methods 0.000 claims description 4
- 238000007405 data analysis Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000012097 association analysis method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种带等值索引的多数据流处理方法及装置。该方法包括:根据关联分析表达式,确定对应的等值可索引表达式链;基于等值可索引表达式链构建等值索引表达式图;等值索引表达式图包括多个图节点和图节点之间的边;图节点包括流表对应的等值可索引表达式,边包括连接的两个图节点对应的等值可索引表达式的关联关系;遍历等值索引表达式图中的图节点,确定等值索引表达式图的等值表达式路径;将等值表达式路径作为流表对应的索引,基于流表的索引对数据流进行分析处理。本发明提供的方法,能够对多数据流关联分析表达式进行等值索引分析,以快速实现多数据流的关联分析,从而提高了多数据流分析处理的效率。
Description
技术领域
本发明涉及计算机处理技术领域,具体涉及一种带等值索引的多数据流处理方法及装置。另外,还涉及一种电子设备、非暂态计算机可读存储介质及计算机程序产品。
背景技术
近年来,网络技术快速发展,各种网络攻击也越来越普遍,随着数据流的不断增大,实现多数据流的网络安全分析处理给人们带来了巨大的挑战。
目前,在对多数据流进行网络安全分析处理时通常需要遍历所有的数据流以查找目标数据流,该种方式的多数据流查找效率及网络安全分析效率较低,导致难以快速处理潜在的各类安全风险。因此,如何设计一种更为高效的多数据流安全处理方法成为亟待解决的难题。
发明内容
为此,本发明提供一种带等值索引的多数据流处理方法及装置,以解决现有技术中存在的多数据流处理方案效率较低,导致难以快速发现并处理潜在的各类异常数据的缺陷。
本发明提供一种带等值索引的多数据流处理方法,包括:
根据关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;
基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系;
遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径;
将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
进一步的,所述基于所述等值可索引表达式链构建等值索引表达式图,具体包括:
遍历所述等值可索引表达式链以获得等值可索引表达式;
将所述等值可索引表达式的第一类型的第一表达式、所述第一表达式对应的第一类型的图节点确定为所述等值索引表达式图中的第一元素;所述第一元素用于指示所述第一表达式对应的流表的信息的存储位置;
将所述等值可索引表达式的第二类型的第二表达式、所述第二表达式对应的第二类型的图节点确定为所述等值索引表达式图中的第二元素;所述第二元素用于指示所述第二表达式对应的流表的信息的存储位置;
根据所述第一元素和所述第二元素,得到所述等值索引表达式图;
其中,所述图节点包括流表的第一标识、所述第一标识对应的等值可索引表达式。
进一步的,所述遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径,包括:
遍历所述等值索引表达式图中的所有图节点,确定图节点和对应的边组成的至少一条路径;
将所述至少一条路径中包括所有流表的路径确定为所述等值表达式路径。
进一步的,所述根据关联分析表达式,确定对应的等值可索引表达式链,具体包括:
基于每个流表中存储的数据流的参数之间的关联关系,将所述存储的数据流转化为逻辑树;
遍历所述逻辑树中的节点,确定用于进行表征计算的第一节点;
确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式;所述可索引表达式中包括的两个流表的流表标识不同;
在确定所述第一节点的第一子节点、所述第一子节点的左子节点和右子节点组成所述可索引表达式的情况下,将所述左子节点对应的表达式、所述左子节点对应的流表的标识、所述右子节点对应的表达式、所述右子节点对应的流表的标识添加至初始表达式链中;所述初始表达式链为预设的用于存储表达式及标识的关联结构表达式;
在遍历完所述逻辑树中的所有节点的情况下,将所述初始表达式链确定为所述等值可索引表达式链。
进一步的,所述确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,包括:
在确定所述第一子节点为表征相等运算的子节点的情况下,确定所述左子节点以及与所述左子节点相关的所有子节点是否为第一单表字段表达式节点,并确定所述右子节点以及与所述右子节点相关的所有子节点是否为第二单表字段表达式节点;
在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点,且所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点的情况下,基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式。
进一步的,所述基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,包括:
在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点的情况下,基于所述第一单表字段表达式节点对应的流表的标识更新所述第一单表字段表达式引用第一表字段的第一次数;
在确定所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点的情况下,基于所述第二单表字段表达式节点对应的流表的标识更新所述第二单表字段表达式引用第二表字段的第二次数;
在确定所述第一次数大于零、所述第二次数大于零,且所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识不相同的情况下,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点组成可索引表达式。
进一步的,所述基于所述流表的索引对所述数据流进行分析处理,具体包括:
获取所述待分析数据流对应的流表标识,以及所述待分析数据流对应的索引值;
基于所述待分析数据流对应的索引值、所述流表标识对应的流表的索引进行数据流关联分析,得到相应的数据集;基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理。
进一步的,所述基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理,具体包括:
基于预设的删除处理流程,从索引表槽内所述流表标识对应的流表中删除与所述索引关联的待删除数据流,所述待删除数据流包含超时数据流;或者,基于预设的插入处理流程,将与所述索引关联的待插入数据流加入到预设的命中表中;或者,基于预设的更新处理流程,对与所述索引关联的待更新数据流进行更新处理;所述数据集包含所述待删除数据流、所述待插入数据流或者所述待更新数据流;所述命中表中存储有关联分析成功的数据。
本发明还提供一种带等值索引的多数据流处理装置,包括:
等值可索引表达式链确定单元,用于根据关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;
等值索引表达式图构建单元,用于基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系;
等值表达式路径确定单元,用于遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径;
数据分析处理单元,用于将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
进一步的,所述等值索引表达式图构建单元,具体用于:
遍历所述等值可索引表达式链以获得等值可索引表达式;
将所述等值可索引表达式的第一类型的第一表达式、所述第一表达式对应的第一类型的图节点确定为所述等值索引表达式图中的第一元素;所述第一元素用于指示所述第一表达式对应的流表的信息的存储位置;
将所述等值可索引表达式的第二类型的第二表达式、所述第二表达式对应的第二类型的图节点确定为所述等值索引表达式图中的第二元素;所述第二元素用于指示所述第二表达式对应的流表的信息的存储位置;
根据所述第一元素和所述第二元素,得到所述等值索引表达式图;
其中,所述图节点包括流表的第一标识、所述第一标识对应的等值可索引表达式。
进一步的,所述等值表达式路径确定单元,具体用于:
遍历所述等值索引表达式图中的所有图节点,确定图节点和对应的边组成的至少一条路径;
将所述至少一条路径中包括所有流表的路径确定为所述等值表达式路径。
进一步的,所述等值可索引表达式链确定单元,具体用于:
基于每个流表中存储的数据流的参数之间的关联关系,将所述存储的数据流转化为逻辑树;
遍历所述逻辑树中的节点,确定用于进行表征计算的第一节点;
确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式;所述可索引表达式中包括的两个流表的流表标识不同;
在确定所述第一节点的第一子节点、所述第一子节点的左子节点和右子节点组成所述可索引表达式的情况下,将所述左子节点对应的表达式、所述左子节点对应的流表的标识、所述右子节点对应的表达式、所述右子节点对应的流表的标识添加至初始表达式链中;所述初始表达式链为预设的用于存储表达式及标识的关联结构表达式;
在遍历完所述逻辑树中的所有节点的情况下,将所述初始表达式链确定为所述等值可索引表达式链。
进一步的,所述确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,包括:
在确定所述第一子节点为表征相等运算的子节点的情况下,确定所述左子节点以及与所述左子节点相关的所有子节点是否为第一单表字段表达式节点,并确定所述右子节点以及与所述右子节点相关的所有子节点是否为第二单表字段表达式节点;
在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点,且所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点的情况下,基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式。
进一步的,所述基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,包括:
在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点的情况下,基于所述第一单表字段表达式节点对应的流表的标识更新所述第一单表字段表达式引用第一表字段的第一次数;
在确定所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点的情况下,基于所述第二单表字段表达式节点对应的流表的标识更新所述第二单表字段表达式引用第二表字段的第二次数;
在确定所述第一次数大于零、所述第二次数大于零,且所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识不相同的情况下,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点组成可索引表达式。
进一步的,所述基于所述流表的索引对所述数据流进行分析处理,具体包括:
获取所述待分析数据流对应的流表标识,以及所述待分析数据流对应的索引值;
基于所述待分析数据流对应的索引值、所述流表标识对应的流表的索引进行数据流关联分析,得到相应的数据集;基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理。
进一步的,所述基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理,具体包括:
基于预设的删除处理流程,从索引表槽内所述流表标识对应的流表中删除与所述索引关联的待删除数据流,所述待删除数据流包含超时数据流;或者,基于预设的插入处理流程,将与所述索引关联的待插入数据流加入到预设的命中表中;或者,基于预设的更新处理流程,对与所述索引关联的待更新数据流进行更新处理;所述数据集包含所述待删除数据流、所述待插入数据流或者所述待更新数据流;所述命中表中存储有关联分析成功的数据。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述带等值索引的多数据流处理方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述带等值索引的多数据流处理方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述带等值索引的多数据流处理方法。
本发明提供的带等值索引的多数据流处理方法,通过关联分析表达式,来确定对应的等值可索引表达式链,所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;基于所述等值可索引表达式链构建等值索引表达式图,遍历所述等值索引表达式图中的图节点以确定所述等值索引表达式图的等值表达式路径,并将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理,该方法能够对多数据流关联分析表达进行等值索引分析,以快速实现多数据流的关联分析,从而提高了多数据流分析处理的效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的带等值索引的多数据流处理方法的流程示意图;
图2是本发明提供的等值可索引表达式链映射图;
图3是本发明提供的等值可索引表达式映射图;
图4是本发明提供的关联分析表达式索引分析流程图;
图5是本发明提供的搜索关键等值可索引表达式链流程图;
图6是本发明提供的可索引表达式分析器流程图;
图7是本发明提供的单表字段表达式分析器流程图;
图8是本发明提供的构建可索引表达式图流程图;
图9是本发明提供的分析可索引表达式图流程图;
图10是本发明提供的分析GraphNode节点流程图;
图11是本发明提供的插入数据流数据流程图;
图12是本发明提供的构建关联计算表槽流程图;
图13是本发明提供的关联表数据流程图;
图14是本发明提供的删除数据流数据流程图;
图15是本发明提供的更新数据流数据流程图;
图16是本发明提供的通知数据流数据删除流程图;
图17是本发明提供的带等值索引的多数据流处理装置的结构示意图;
图18是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本申请中使用的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面基于本发明所述的带等值索引的多数据流处理方法,对其实施例进行详细描述。如图1所示,为本发明实施例提供的带等值索引的多数据流处理方法的流程示意图,具体过程包括以下步骤:
步骤101:根据关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同。
在本发明实施例中,执行本步骤之前可预先获取用户输入的关联分析表达式或者预先存储的关联分析表达式。根据所述关联分析表达式确定每个流表中存储的数据流的参数之间的关联关系,进而得到对应的等值可索引表达式链。所述数据流为从网络设备中获取的网络行为数据。所述关联分析表达式的结构定义包括流表定义和关联表达式定义。所述关联表达式为布尔表达式,其关联表达式结果为true或者false,示例如下:table1.sip==table2.sip and table2.sport<table3.sport,该关联分析表达式语义为当流表table1的源ip与流表table2的sip相等且流表table2源端口小于流表table3时,关联分析表达式结果为true,否则为false。其中,所述关联分析表达式可使用构建索引的方式得到索引表达式,通过索引表达式来大幅减少每次需要关联的流表数据数量,从而提高关联分析的性能,该索引表达式可包括单表字段表达式、可索引表达式、关键布尔表达式等。所述等值可索引表达式链可以参考一个数学等值传递的例子:已知A==B,B==C,那么可以推导=>A==C,那么等值可索引表达式链的定义为多个[可索引表达式]构成的表达式链,同时可索引表达式可以通过等值条件推导成相互相等表达式,示例如下:table1.sip==table2.sip and table2.sip==table3.dip and table3.dip==table4.sip。在上例中总有三个[可索引表达式]:table1.sip==table2.sip、table2.sip==table3.dip、table3.dip==table4.sip,它们通过table2.sip和table3.dip这两个等值条件连接,可以构成一个等值链=>table1.sip==table2.sip==table3.dip==table4.sip,这里table1.sip==table2.sip and table2.sip==table3.dip and table3.dip==table4.sip就构成了一个等值可索引表达式链。
具体的,所述关联分析表达式的结构可定义为:join[流表定义]if[关联表达式定义]。所述关联分析表达式的结构包含两个部分:流表和关联表达式。其中,所述流表定义为[输入流名]as[流表名],示例如下:stream1 as table1,stream2 as table2,stream3 astable3;其中,stream1、stream2和stream3分别对应输入的三个不同数据流的命名,table1、table2和table3为对应的流表名,stream1定义为table1,stream2定义为table2,stream3定义为table3。所述关联分析系表达式定义关联表达式为布尔表达式,表达式结果为true或者false,示例如下:table1.sip==table2.sip and table2.sport<table3.sport,表达式语义为当表table1的源ip与表table2的sip相等且表table2源端口小于表table3时表达式为true,否则为false。完整关联分析表达式示例如下:joinstream1 as table1,stream2 as table2,stream3 as table3 if table1.sip==table2.sip and table2.sport<table3.sport。所述关联表达式即为所述的关联分析表达式。
需要说明的是,关联分析表达式由用户根据分析场景来编写,其理论上可以有任意种写法,在所有写法种存在一类关联表达式,可使用构建索引的方式来大幅减少每次需要关联的表数据数量,从而提高关联分析的性能,这类特殊的关联表达式包括单表字段表达式、可索引表达式、关键布尔表达式、关键布尔表达式等,其定义如下:
所述单表字段表达式中包含表字段表达式,且只包含同一个流表的字段,也就是这个表达式只引用了一个流表的字段,在这个表达式中没有其它表的字段引用,这种情况定义为单表字段表达式,示例如下:table1.dport+table1.sport==80,这里只用了流表table1的dport和sport字段,因此是单表字段表达式。以下示例则不是单表字段表达式:table1.dport+table2.sport==80,这里用了流表table1的dport和流表table2的sport字段,因此不是单表字段表达式。表字段表达式是由流表名加字符点.再加字段名组成,比如流表table1的源ip字段:table1.sip。所述可索引表达式定义为[单表字段表达式]==[单表字段表达式],其中左边的单表字段表达式和右边的单表字段表达式对应的关联表为不同的流表,即如果左边单表字段表达式对应的关联表是流表table1,那么右边的单表字段表达式对应关联表则不能是table1,反之亦然。所述关键布尔表达式定义为如果某个表达式为布尔表达式且该表达式的值能决定整个关联表达式的值,那么它就是关键布尔表达式,在示例join stream1 as table1,stream2 as table2,stream3 as table3iftable1.sip==table2.sip and table2.sport<table3.sport中,[table1.sip==table2.sip]和[table2.sport<table3.sport]都是关键布尔表达式,因为它们都能决定整个关联表达式的值,更简单的关键布尔表达式可定义为能通过and逻辑运算表达式链直接连接的布尔表达式,示例如下:[关键布尔表达式1]and[关键布尔表达式2]and[关键布尔表达式3]or[非关键布尔表达式]。所述等值可索引表达式链可以参考一个数学等值传递的例子:已知A==B,B==C,那么可以推导=>A==C,那么等值可索引表达式链的定义为多个[可索引表达式]构成的表达式链,同时表达式可以通过等值条件推导成相互相等表达式,示例如下:table1.sip==table2.sip and table2.sip==table3.dip and table3.dip==
table4.sip在上例中总有三个[可索引表达式]:table1.sip==table2.sip、table2.sip==table3.dip、table3.dip==table4.sip,它们通过table2.sip和table3.dip这两个等值条件连接,可以构成一个等值链=>
table1.sip==table2.sip==table3.dip==table4.sip,这里table1.sip==
table2.sip and table2.sip==table3.dip and table3.dip==table4.sip就构成了一个等值可索引表达式链。所述构成等值可索引表达式链的可索引表达式即为等值可索引表达式。
需要进一步说明的是,一个关联分析表达式是否存在等值索引须满足以下三个条件:包含[等值可索引表达式链];这个[等值可索引表达式链]中所有[可索引表达式]同时是[关键布尔表达式];这个[等值可索引表达式链]包含[流表定义]中的所有流表。表达式示例如下:
join stream1 as table1,stream2 as table2,stream3 as table3 iftable1.sip==table2.sip and(table1.sport<table2.sport or table1.dip==table3.dip)and table2.sip==table3.dip;
上面表达式中table1.sip==table2.sip和table2.sip==table3.dip是[可索引表达式]且是[关键布尔表达式];table1.dip==table3.dip是[可索引表达式],但是不是[关键布尔表达式];
table1.sip==table2.sip和table2.sip==table3.dip同时是[等值可索引表达式链],其中table2.sip是等值条件;
table1.sip==table2.sip和table2.sip==table3.dip包含table1、table2、table3,包含[流表定义]stream1 as table1,stream2 as table2,stream3 as table3中所有流表;
综合以上条件,该示例关联分析表达式的索引为table1.sip==
table2.sip and table2.sip==table3.dip,构建时采用table1.sip、table2.sip、table3.dip分别构建table1、table2、table3的索引表(即索引)。
如果将每一个[等值可索引表达式]当成一个边,表达式左值和右值分别对应图上两个节点,将表达式中[等值可索引表达式链]中所有[等值可索引表达式]映射成图的节点和边,那么表达式索引分析方法则可以抽象为如何在[等值可索引表达式链]映射的图上找到一个路径,这个路径包含所有流表,且每一个流表只在这个路径上出现一次。还是以上面关联分析表达式为例:join stream1 as table1,stream2 as table2,stream3 as table3if table1.sip==table2.sip and(table1.sport<table2.sport or table1.dip==table3.dip)and table2.sip==table3.dip,其中table1.sip==table2.sip和table2.sip==table3.dip是[等值可索引表达式链],映射的图如图2所示。
表达式索引分析则可等价于在图中找到这样一条连通所有流表的路径:table1.sip<->table2.sip<->table3.dip,如果存在这样一条路径,则表示存在等值索引,如果没有,则没有等值索引。参考一个没有索引的示例:join stream1 as table1,stream2as table2,stream3 as table3 if table1.sip==table2.sip and(table1.sport<table2.sport or table1.dip==table3.dip)and table2.dip==table3.dip,其中table1.sip==table2.sip和table2.dip==table3.dip是表达式中[等值可索引表达式],映射的图如图3所示,在这个示例中不存在一个连通所有流表的路径同时包含table1、table2和table3,因此该表达式没有等值索引。
在本步骤实施过程中,首先基于每个流表中存储的数据流的参数之间的关联关系将所述存储的数据流转化为相应的逻辑树,也就是将每个流表中存储的数据流的参数之间的关联关系转化为相应的逻辑树,然后遍历所述逻辑树中的节点来确定用于表征运算的第一节点,并确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式。其中,所述可索引表达式中包括的两个流表的流表标识不同。在确定所述第一节点的第一子节点、所述第一子节点的左子节点和右子节点组成所述可索引表达式时,将所述左子节点对应的表达式、所述左子节点对应的流表的标识、所述右子节点对应的表达式、所述右子节点对应的流表的标识添加至初始表达式链中。在遍历完所述逻辑树中的所有节点时,将所述初始表达式链确定为等值可索引表达式链。具体对应过程如图5所示,通过对存储的数据进行逻辑树转换,从而能够根据表达式从存储的数据中找到相应数据。所述节点为逻辑树节点。所述第一节点为逻辑树根节点,所述第一子节点为and节点,所述第一子节点的左子节点和右子节点分别为and逻辑树左节点和右节点。
确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,对应的实现过程包括:在确定所述第一子节点为表征相等运算的子节点时,确定所述左子节点以及与所述左子节点相关的所有子节点是否为第一单表字段表达式节点,并确定所述右子节点以及与所述右子节点相关的所有子节点是否为第二单表字段表达式节点;在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点,所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点时,基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式。具体对应过程如图6所示,所述表征相等运算的子节点即为表达式节点。所述左子节点和所述右子节点即为当前树节点的左右子节点。所述第一单表字段表达式节点是与所述左子节点相关的[单表字段表达式]节点;所述第二单表字段表达式节点是与所述右子节点相关的[单表字段表达式]节点。具体的,所述第一单表字段表达式节点可为左节点表达式,所述第一单表字段表达式节点对应的流表的标识可为左节点对应tableID(即流表编号index);所述第二单表字段表达式节点可为右节点表达式,所述第二单表字段表达式节点对应的流表的标识可为右节点对应tableID。
其中,基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,对应的实现过程包括:在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点时,基于所述第一单表字段表达式节点对应的流表的标识更新所述第一单表字段表达式引用第一表字段的第一次数;在确定所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点时,基于所述第二单表字段表达式节点对应的流表的标识更新所述第二单表字段表达式引用第二表字段的第二次数;在确定所述第一次数大于零、所述第二次数大于零,且所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识不相同时,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点组成可索引表达式。具体过程参考图7所示。
步骤102:基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系。
具体的,通过遍历所述等值可索引表达式链,针对每个所述等值可索引表达式,将所述等值可索引表达式的第一类型的第一表达式、所述第一表达式对应的第一类型的图节点确定为所述等值索引表达式图中的第一元素。其中,所述第一元素用于指示所述第一表达式对应的流表的信息的存储位置。将所述等值可索引表达式的第二类型的第二表达式、所述第二表达式对应的第二类型的图节点确定为所述等值索引表达式图中的第二元素;所述第二元素用于指示所述第二表达式对应的流表的信息的存储位置,得到所述等值索引表达式图。
如图8中所示:其中,所述等值可索引表达式链,如:table1.sip==table2.sipand table2.sip==table3.dip,table1.sip==table2.sip和table2.sip==table3.dip分别为链中的等值可索引表达式。所述等值可索引表达式,如:table1.sip==table2.sip。所述第一类型的第一表达式表示左节点表达式,如:table1.sip==table2.sip中的table1.sip。所述第一表达式对应的第一类型的图节点对应左节点表达式中的tableID。所述等值索引表达式图为数组,第一元素为数组中的一个元素。所述第二类型的第二表达式表示右节点表达式,例如table1.sip==table2.sip中的table1.sip中的table2.sip。所述第二表达式对应的第二类型的图节点对应右节点表达式中的tableID。如图8中最后一个框所示,在得到所述等值索引表达式图之后,还包括:将所述第一类型的图节点插入所述第二类型的图节点列表中,并将所述第二类型的图节点插入所述第一类型的图节点列表,即将左右图节点进行关联。
步骤103:遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径。
具体的,通过遍历所述等值索引表达式图中的所有图节点来确定图节点和对应的边组成的至少一条路径,然后将所述至少一条路径中包括所有流表的路径确定为所述等值表达式路径。也就是,具体确定等值表达式路径的方法。所述图节点包括流表对应的等值可索引表达式。所述边包括连接的两个图节点对应的等值可索引表达式的关联关系。本发明将等值表达式路径中的等值可索引表达式作为索引,基于索引确定对应流表的索引表,只需查找流表中与索引对应的数据流,不需要遍历全部数据,查找效率高,进一步提高了安全分析的效率。所述等值表达式路径包含具有相同流表的标识的图节点。
步骤104:将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
在本步骤实施过程中,将所述等值表达式路径作为流表对应的索引之后,可获取所述待分析数据流对应的流表标识,以及所述待分析数据流对应的索引值。基于所述待分析数据流对应的索引值、所述流表标识对应的流表的索引进行数据流关联分析,得到相应的数据集;基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理。具体的,可基于预设的删除处理流程,从索引表槽内所述流表标识对应的流表中删除与所述索引关联的待删除数据流,所述待删除数据流包含超时数据流;或者,基于预设的插入处理流程,将与所述索引关联的待插入数据流加入到预设的命中表中;或者,基于预设的更新处理流程,对与所述索引关联的待更新数据流进行更新处理;所述数据集包含所述待删除数据流、所述待插入数据流或者所述待更新数据流。其中,所述索引为等值索引。等值索引就是构建流表所用的索引表达式条件是等值的,即表达式左值和右值是相等,对于多流表的等值索引,则要求有一个等值表达式链(即等值可索引表达式链),这个等值表达式链会包含所有流表,示例如下:join stream1 as table1,stream2 as table2,stream3 astable3 if table1.sip==table2.sip and table2.sip==table3.dip,这个例子中表达式table1.sip==table2.sip和table2.sip==table3.dip有一个等值传递表达式table2.sip,通过这个等值传递表达式可以构造一个包含所有流表的等值表达式链table1.sip==table2.sip==table3.dip,则可使用table1.sip、table2.sip、table3.dip分别为table1、table2、table3来构建等值索引,通过这个原理在每一个流表上构建一个索引(即索引值),可以大幅加快流表关联计算的性能。需要说明的是,带等值索引的实时多数据流关联分析参数定义如下:参数N定义为流表数量,N>=3;参数streamClassifier定义为数据流分类器,将输入的数据流标记为对应的流表序号/编号;参数keyedTableSlot[N]定义为索引表槽,tableSlot[n]分别对应每一个流表,0<=n<N;参数keyBuilderSlot[N]定义为索引值生成器槽,keyBuilderSlot[n]分别对应每一个流表的索引值生成器,0<=n<N;参数matchedTable定义为命中表,保存关联成功的表数据,表中一行对应一对关联成功数据;参数joinFilter关联过滤器,对需要进行关联的一组数据(数据流数量为N)进行计算,如果值为true,则表示关联成功,为false则表示关联失败。本发明通过将等值可索引表达式作为索引,基于索引确定对应流表的索引表,只需查找流表中与索引对应的数据流,基于等值索引遍历流表中的部分数据,不需要遍历全部数据,数据查找效率高,提高了安全分析的效率。
本发明实施例中,带等值索引的实时多数据流关联分析方法包含四个流程,具体流程如下所示:插入数据流数据流程insertStreamData(data),其流程内容为插入对应的数据流数据<data>;删除数据流数据流程deleteStreamData(data),其流程内容为删除对应的数据流数据<data>;更新数据流数据流程updateStreamData(oldData,newData),其流程内容为更新对应的数据流数据,具体包含两个步骤:1.删除数据流数据<oldData>;2.插入数据流数据<newData>;通知数据流数据超时流程onStreamDataExpire(data),其流程内容为接收数据流数据<data>的超时通知,收到通知后删除对应的数据流数据<data>。其中,插入数据流数据流程insertStreamData(data)包含2个关键流程:(1)构建关联计算表槽buildJoinTableSlot,其流程内容为调用方式为buildJoinTableSlot(tableIndex,keyValue),其中tableIndex为表序号,keyValue中的key为当前的索引值(即索引),流程返回值为关联计算表槽joinTableSlot。关联表数据joinTableRows其流程内容的调用方式为joinTableRows(joinTableSlot,joinRowSlot,tableIndex)。具体的,joinTableSlot为关联计算表槽,joinRowSlot为关联计算数据槽,tableIndex为表序号。
如图11所示:其为插入数据流数据流程,即插入处理流程。具体的:(1)调用insertStreamData(data),输入数据流数据<data>;(2)数据流分类器<streamClassifier>计算<data>对应的流表编号index;(3)输入<data>,使用索引值生成器槽中keyBuilderSlot[index]来计算索引值keyValue;(4)调用构建关联计算表槽流程,并设置关联计算表槽joinTableSlot=buildJoinTableSlot(index,keyValue)(参见下面构建关联计算表槽buildJoinTableSlot流程);(4)定义关联计算数据槽joinRowSlot[N],数据类型为数组,定义表序号tableIndex,并设置tableIndex=0;(6)调用joinTableRows(joinTableSlot,joinRowSlot,tableIndex)(参见下面关联表数据joinTableRows流程),进行表数据关联计算;(7)以<keyValue>为索引值,将<data>存储到到表槽
<keyedTableSlot>中第<index>号流表keyedTableSlot[index]中;(8)向<data>上注册删除监听器。
如图12所示,其为构建关联计算表槽buildJoinTableSlot流程。具体的:(1)调用buildJoinTableSlot(index,keyValue),输入参数<index,keyValue>;(2)定义关联计算表槽joinTableSlot[N],数据类型为数组,设置关联计算表槽中所有关联计算表初始值为空表,并将<data>加入到joinTableSlot[index]对应表中;(3)定义下标n=0,0<=n<N;(4)判断条件n<N,如果是则执行步骤(5),如果不是则结束流程并返回<joinTableSlot>;(5)判断条件n==<index>,如果是则执行步骤(4),如果不是则执行步骤(6);(6)使用索引值<keyValue>在索引表槽对应索引表keyedTableSlot[n]中查询索引值对应数据集,设置查询的数据集为keyedRows,如果keyedRows为空则结束流程并返回空的关联计算表槽<joinTableSlot>,如果keyedRows不为空则执行步骤(7);(7)将数据集<keyedRows>加入到关联计算表槽中对应关联计算表joinTableSlot[n]中,并设置n=n+1,完成后执行步骤(4)。
如图13所示,其关联表数据joinTableRows流程。具体的:(1)调用joinTableRows(joinTableSlot,joinRowSlot,tableIndex),输入参数<joinTableSlot,joinRowSlot,tableIndex>;(2)定义当前表currentTable,并设置currentTable=joinTableSlot[tableIndex];(3)遍历表<currentTable>,对其中每一行数据<row>进行计算;(4)
<currentTable>表中是否还有数据<row>,如果有则执行步骤5,如果没有则执行步骤(9);(5)设置joinRowSlot[tableIndex]=<row>,并判断tableIndex+1是否等于N,如果等于N则执行步骤(6),不等于则执行步骤(8);(6)将关联计算数据槽<joinRowSlot>中所有数据<joinRowSlot[0],joinRowSlot[1],…,joinRowSlot[N-1]>输入关联过滤器<joinFilter>进行关联计算,如果<joinFilter>计算结果为true则执行步骤(7),如果为false则执行步骤(4);(7)将<joinRowSlot[0],joinRowSlot[1],…,joinRowSlot[N-1]>插入到命中表<matchedTable>,完成后执行步骤(4);(8)递归调用joinTableRows(joinTableSlot,joinRowSlot,tableIndex+1),调用完成后执行步骤(4);(9)本次函数调用返回。
如图14所示,其为删除数据流数据deleteStreamData(data)流程,即删除处理流程。具体的:(1)调用deleteStreamData(data),输入待删除的数据流数据<data>。(2)取消向<data>注册的删除监听器。(3)从<matchedTable>查询是否有关联的命中行,如果有则删除对应的命中数据。(4)数据流分类器<streamClassifier>计算<data>对应的表编号index。(5)输入<data>,通过使用索引值生成器槽中的keyBuilderSlot[index]来计算索引值keyValue。(6)使用索引值(即索引)<keyValue>从索引表槽<keyedTableSlot>中第<index>号(即流表标识或流表编号)流表keyedTableSlot[index]中删除<data>对应的数据。(7)如果索引表槽<keyedTableSlot>中所有流表<keyedTableSlot[0],所述流表与索引表对应,keyedTableSlot[1],…,keyedTableSlot[N-1]>都为空,则删除当前计算单元。
如图15所示,其为更新数据流数据updateStreamData(oldData,newData)流程,即更新处理流程。具体的:(1)调用updateStreamData(oldData,newData),输入待更新数据流数据<oldData,newData>。(2)调用删除数据流数据流程deleteStreamData(oldData)来删除<oldData>。(3)调用插入数据流数据流程insertStreamData(NewData)来插入<newData>。
如图16所示,其为通知数据流数据超时onStreamDataExpire(data)流程。具体的:(1)调用onStreamExpire(data),输入超时的数据流数据<data>。(2)从<matchedTable>查询是否有关联的命中行,如果有则删除对应的命中数据。(3)数据流分类器<streamClassifier>计算<data>对应的表编号index。(4)输入<data>,使用索引值生成器槽中keyBuilderSlot[index]来计算索引值keyValue。(5)使用索引值(即索引)<keyValue>从索引表槽<keyedTableSlot>中第<index>号(即流表编码或流表标识)流表keyedTableSlot[index]中删除<data>对应的数据。(6)如果索引表槽<keyedTableSlot>中所有流表<keyedTableSlot[0],keyedTableSlot[1],…,keyedTableSlot[N-1]>都为空,则删除当前相应的计算单元。
需要说明的是,在本发明实施例中,索引分析方法全局参数定义如下:N表示流表数量,N>=3。索引分析包含3个流程:(1)搜索关键等值可索引表达式链searchEqualIndexExpression,其流程内容为调用方式为searchEqualIndexExpression(expression),其中,expression为待分析的关联分析表达式;流程返回值为搜索到的所有关键等值可索引表达式链表equalIndexExpressionList,equalIndexExpressionList为一个链表,存放符合[关键布尔表达式]和[可索引表达式]条件的表达式。(2)构建可索引表达式图buildIndexExpressionGraph,流程内容调用方式为buildIndexExpressionGraph(equalIndexExpressionList),其中equalIndexExpressionList为流程searchEqualIndexExpression中的搜索的关键等值可索引表达式链;流程返回值具体为可索引表达式图indexExpressionGraph。(3)在实际实施过程中,分析可索引表达式图analyseIndexExpressionGraph,具体的,其流程内容对应的调用方式为analyseIndexExpressionGraph(indexExpressionGraph),其中,indexExpressionGraph为流程buildIndexExpressionGraph中构建的可索引表达式图;如果找到索引,流程返回值为最终的索引,如果没有找到则返回无索引。
在本发明实施例中,如图4所示,为实时多数据流关联分析表达式索引分析方法。(1)输入关联分析表达式join[流表定义]if[关联表达式定义]。(2)调用搜索关键等值可索引表达式链流程,搜索表达式中所有符合[关键布尔表达式]和[可索引表达式]条件的表达式,设置equalIndexExpressionList=searchEqualIndexExpression(关联分析表达式)。(3)调用构建可索引表达式图流程,构建可索引表达式图,相应的,设置indexExpressionGraph=buildIndexExpressionGraph(equalIndexExpressionList)。(4)调用分析可索引达式图流程,分析可索引表达式路径树analyseIndexExpressionGraph
(indexExpressionGraph),完成后返回结果。
如图5,搜索关键等值可索引表达式searchEqualIndexExpression。其中,流程参数equalIndexExpressionList定义为表,存放所有符合[关键布尔表达式]和[可索引表达式]条件的表达式。具体的,(1)输入关联分析表达式join[流表定义]if[关联表达式定义](2)将关联分析表达式解析为关联分析表达式逻辑树,并定位[关联表达式]所在逻辑树的根节点。(3)从[关联表达式]逻辑树的根节点开始遍历所有逻辑树中的节点。(4)是否还有没有遍历的逻辑树的节点,如果有则执行步骤(5),如果没有则执行步骤(8)。(5)判断当前逻辑树的节点是否是and节点,如果是则执行步骤(6),如果不是则执行步骤(7)。(6)调用[可索引表达式]分析器(参见下面[可索引表达式]分析器部分)分析and逻辑树左节点(即左子节点)和右节点(即右子节点),完成后执行步骤(4)。(7)跳过当前逻辑树的节点的分析,并执行步骤(4)。(8)结束流程,并返回equalIndexExpressionList。
如图6所示:其为[可索引表达式]分析器。(1)输入待分析的逻辑树节点。(2)判断当前逻辑树节点是否是==表达式节点,如果是则执行步骤(3),如果不是则结束分析流程。(3)调用[单表字段表达式]分析器(具体过程参见下面[单表字段表达式]分析器部分)A分析节点(即第一子节点)的左节点(即左子节点),调用[单表字段表达式]分析器(具体过程参见下面[单表字段表达式]分析器部分)B分析节点(即第一子节点)的右节点(即右子节点),进一步判断是否符合分析器A的变量值<tableID>大于等于0且分析器B的变量值<tableID>大于等于0且两个分析器A和B的变量值<tableID>值不相等,如果符合则执行步骤4,不符合则结束分析流程。(4)将当前表达式对应值<(左节点表达式,左节点对应tableID),(右节点表达式,右节点对应tableID)>加入到链表<equalIndexExpressionList>中,并结束流程。
如图7所示:其为[单表字段表达式]分析器。具体的,[单表字段表达式]分析器参数tableFieldCount[N]定义为表字段引用次数记录表,记录当前表达式引用了对应表字段的次数,其中tableFieldCount[0]记录了编号为0的流表字段引用次数,依次类推,tableFieldCount[n]记录了编号为n的流表字段引用次数,0<=n<N;tableFieldCount[n]初始值都设置为0。[单表字段表达式]分析器参数tableID定义为流表标识,默认值为-1,如果实施例中对于tableFieldCount[N]中所有tableFieldCount[n],0<=n<N,有且仅有一个tableFieldCount[n]>0,则设置tableID=n,否则设置tableID=-1。具体的,(1)输入待分析逻辑树节点。(2)从待分析逻辑树节点开始遍历所有逻辑树节点。(3)是否还有没有遍历的逻辑树节点,如果有则执行步骤(4),如果没有则执行步骤(7)。(4)当前逻辑树节点是否是[单表字段表达式]节点(即第一单表字段表达式节点),如果是则执行步骤5,如果不是则执行步骤(6)。(5)获取当前字段表对应的流表编号index,设置tableFieldCount[index]+=1,完成后执行步骤(3)。(6)继续分析当前树节点的左右子节点(即第一子节点的左子节点和右子节点),完成后执行步骤(3)。(7)如果在实施例中对于tableFieldCount[N]中所有tableFieldCount[n],0<=n<N,有且仅有一个tableFieldCount[n]>0,则设置tableID=n,否则设置tableID=-1,完成后结束流程。所述流表即数据表<table>。
如图8所示:其为构建可索引表达式图buildIndexExpressionGraph。其中,关键数据结构GraphNode中,变量tableID定义为当前图节点对应的流表编号,即流表标识;变量expression定义为图节点表达式,存放图节点对应的索引表达式,比如table1.sip;变量linkNodes定义为链接的节点,存放当前节点链接的其它GraphNode节点。具体的,(1)输入参数关键等值可索引表达式链表<equalIndexExpressionList>。(2)定义可索引表达式路径树indexExpressionGraph[N],其中每一个indexExpressionGraph[n],0<=n<N,结构是一个表,以表达式为索引,值为数据结构LinkNode。(3)遍历关键等值可索引表达式链表<equalIndexExpressionList>。(4)关键等值可索引表达式链表
<equalIndexExpressionList>是否还有没遍历的数据,如果有则执行步骤(5),如果没有则结束流程并返回可索引表达式路径树indexExpressionGraph。(5)对于当前遍历数据<(左节点表达式,左节点对应tableID),(右节点表达式,右节点对应tableID)>,以<左节点表达式>为流表的索引值,从indexExpressionGraph[<左节点对应tableID>]中获取左节点GraphNode(tableID=左节点对应tableID,expression=左节点表达式),如果没有则在表中创建,设置为leftLinkNode;以<右节点表达式>为流表的索引值,从indexExpressionGraph[<右节点对应tableID>]中获取右节点GraphNode(tableID=右节点对应tableID,expression=右节点表达式),如果没有则在流表中创建,设置为rightLinkNode。(6)将rightLinkNode插入leftLinkNode.linkNodes列表中,将leftLinkNode插入rightLinkNode.linkNodes列表中,完成后执行步骤(4)。
如图9所示:其为分析可索引表达式analyseIndexExpressionGraph。其中流程参数currentIndexExpressionGraphPath[N]定义为数组,保存当前的等值表达式路径,对于所有currentIndexExpressionGraphPath[n]初始值设置为空,0<=n<=N。流程参数pathNodeCount定义为等值表达式路径中的节点数量,用于记录currentIndexExpressionGraphPath中已经有几个节点了,当pathNodeCount==N则表示找到了一条等值表达式路径。流程参数indexExpressionGraphPaths定义为等值表达式路径的集合,保存当前所有符合要求的等值表达式路径。关键流程为分析GraphNode节点analyseGraphNode,其流程内容为调用方式为analyseGraphNode(node),其中node为待分析GraphNode节点。具体的,(1)输入参数可索引表达式路径树<indexExpressionGraph[N]>。(2)在本发明实施例中,遍历可索引表达式图中每一个GraphNode,即indexExpressionGraph[n]中所有GraphNode节点,0<=n<=N。(3)indexExpressionGraph[N]中是否还有没遍历的GraphNode节点?如果有则执行步骤(4),如果没有则执行步骤(5)。(4)设置当前GraphNode节点为node,调用子流程analyseGraphNode(node)(参见下面分析GraphNode节点analyseGraphNode部分),完成后执行步骤(3)。(5)如果indexExpressionGraphPaths不为空则返回
indexExpressionGraphPaths列表第一个等值表达式路径作为索引,如果为空则没有索引,返回无索引。
如图10所示:其为分析GraphNode节点analyseGraphNode。具体的,分析GraphNode节点过程包括:(1)输入参数GraphNode节点node。(2)判断currentIndexExpressionGraphPath[node.tableID]是否为空,如果为空则执行步骤(3),如果不为空则退出流程。(3)实施例中,设置currentIndexExpressionGraphPath[node.tableID]=node,设置pathNodeCount=pathNodeCount+1,完成后判断pathNodeCount是否等于N,如果等于则执行步骤(4),如果不等于则执行步骤(5)。(4)将currentIndexExpressionGraphPath[N]中
<currentIndexExpressionGraphPath[0],
currentIndexExpressionGraphPath[1],…,
currentIndexExpressionGraphPath[n]>(0<=n<=N)作为一个等值表达式路径,保存到indexExpressionGraphPaths中,完成后执行步骤(6)。(5)遍历node.linkNodes节点,对linkNodes中每一个GraphNode节点linkNode递归调用流程analyseGraphNode(linkNode),完成后执行步骤(6)。(6)设置currentIndexExpressionGraphPath[node.tableID]为空,设置pathNodeCount=pathNodeCount□1,完成后退出流程。
本发明实施例所述的带等值索引的多数据流处理方法,通过关联分析表达式,来确定对应的等值可索引表达式链,所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;基于所述等值可索引表达式链构建等值索引表达式图,遍历所述等值索引表达式图中的图节点以确定所述等值索引表达式图的等值表达式路径,并将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理,该方法能够对多数据流关联分析表达进行等值索引分析,以快速实现多数据流的关联分析,从而提高了多数据流分析处理的效率。
与上述提供的一种带等值索引的多数据流处理方法相对应,本发明还提供一种带等值索引的多数据流处理装置。由于该装置的实施例相似于上述方法实施例,所以描述得比较简单,相关之处请参见上述方法实施例部分的说明即可,下面描述的带等值索引的多数据流处理装置的实施例仅是示意性的。请参考图17所示,其为本发明实施例提供的一种带等值索引的多数据流处理装置的结构示意图。
本发明所述的带等值索引的多数据流处理装置,具体包括如下部分:
等值可索引表达式链确定单元1701,用于根据关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;
等值索引表达式图构建单元1702,用于基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系;
等值表达式路径确定单元1703,用于遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径;
数据分析处理单元1704,用于将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
进一步的,所述等值索引表达式图构建单元,具体用于:遍历所述等值可索引表达式链以获得等值可索引表达式;将所述等值可索引表达式的第一类型的第一表达式、所述第一表达式对应的第一类型的图节点确定为所述等值索引表达式图中的第一元素;所述第一元素用于指示所述第一表达式对应的流表的信息的存储位置;将所述等值可索引表达式的第二类型的第二表达式、所述第二表达式对应的第二类型的图节点确定为所述等值索引表达式图中的第二元素;所述第二元素用于指示所述第二表达式对应的流表的信息的存储位置;根据所述第一元素和所述第二元素,得到所述等值索引表达式图;其中,所述图节点包括流表的第一标识、所述第一标识对应的等值可索引表达式。
进一步的,所述等值表达式路径确定单元,具体用于:遍历所述等值索引表达式图中的所有图节点,确定图节点和对应的边组成的至少一条路径;将所述至少一条路径中包括所有流表的路径确定为所述等值表达式路径。
进一步的,所述等值可索引表达式链确定单元,具体用于:基于每个流表中存储的数据流的参数之间的关联关系,将所述存储的数据流转化为逻辑树;遍历所述逻辑树中的节点,确定用于进行表征计算的第一节点;确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式;所述可索引表达式中包括的两个流表的流表标识不同;在确定所述第一节点的第一子节点、所述第一子节点的左子节点和右子节点组成所述可索引表达式的情况下,将所述左子节点对应的表达式、所述左子节点对应的流表的标识、所述右子节点对应的表达式、所述右子节点对应的流表的标识添加至初始表达式链中;所述初始表达式链为预设的用于存储表达式及标识的关联结构表达式;在遍历完所述逻辑树中的所有节点的情况下,将所述初始表达式链确定为所述等值可索引表达式链。
进一步的,所述确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,包括:在确定所述第一子节点为表征相等运算的子节点的情况下,确定所述左子节点以及与所述左子节点相关的所有子节点是否为第一单表字段表达式节点,并确定所述右子节点以及与所述右子节点相关的所有子节点是否为第二单表字段表达式节点;在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点,且所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点的情况下,基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式。
进一步的,所述基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,包括:在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点的情况下,基于所述第一单表字段表达式节点对应的流表的标识更新所述第一单表字段表达式引用第一表字段的第一次数;在确定所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点的情况下,基于所述第二单表字段表达式节点对应的流表的标识更新所述第二单表字段表达式引用第二表字段的第二次数;在确定所述第一次数大于零、所述第二次数大于零,且所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识不相同的情况下,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点组成可索引表达式。
进一步的,所述基于所述流表的索引对所述数据流进行分析处理,具体包括:获取所述待分析数据流对应的流表标识,以及所述待分析数据流对应的索引值;基于所述待分析数据流对应的索引值、所述流表标识对应的流表的索引进行数据流关联分析,得到相应的数据集;基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理。
进一步的,所述基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理,具体包括:基于预设的删除处理流程,从索引表槽内所述流表标识对应的流表中删除与所述索引关联的待删除数据流,所述待删除数据流包含超时数据流;或者,基于预设的插入处理流程,将与所述索引关联的待插入数据流加入到预设的命中表中;或者,基于预设的更新处理流程,对与所述索引关联的待更新数据流进行更新处理;所述数据集包含所述待删除数据流、所述待插入数据流或者所述待更新数据流;所述命中表中存储有关联分析成功的数据。
本发明实施例所述的带等值索引的多数据流处理装置,通过关联分析表达式,来确定对应的等值可索引表达式链,所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;基于所述等值可索引表达式链构建等值索引表达式图,遍历所述等值索引表达式图中的图节点以确定所述等值索引表达式图的等值表达式路径,并将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理,该方法能够对多数据流关联分析表达进行等值索引分析,以快速实现多数据流的关联分析,从而提高了多数据流分析处理的效率。
与上述提供的带等值索引的多数据流处理方法相对应,本发明还提供一种电子设备。由于该电子设备的实施例相似于上述方法实施例,所以描述得比较简单,相关之处请参见上述方法实施例部分的说明即可,下面描述的电子设备仅是示意性的。如图18所示,其为本发明实施例公开的一种电子设备的实体结构示意图。该电子设备可以包括:处理器(processor)1801、存储器(memory)1802和通信总线1803,其中,处理器1801,存储器1802通过通信总线1803完成相互间的通信,通过通信接口1804与外部进行通信。处理器1801可以调用存储器1802中的逻辑指令,以执行带等值索引的多数据流处理方法,该方法包括:根据关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系;遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径;将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
此外,上述的存储器1802中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:存储芯片、U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在处理器可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的带等值索引的多数据流处理方法。该方法包括:根据关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系;遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径;将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
又一方面,本发明实施例还提供一种处理器可读存储介质,所述处理器可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的带等值索引的多数据流处理方法。该方法包括:根据关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系;遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径;将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种带等值索引的多数据流处理方法,其特征在于,包括:
根据关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;
基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系;
遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径;
将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
2.根据权利要求1所述的带等值索引的多数据流处理方法,其特征在于,所述基于所述等值可索引表达式链构建等值索引表达式图,具体包括:
遍历所述等值可索引表达式链以获得等值可索引表达式;
将所述等值可索引表达式的第一类型的第一表达式、所述第一表达式对应的第一类型的图节点确定为所述等值索引表达式图中的第一元素;所述第一元素用于指示所述第一表达式对应的流表的信息的存储位置;
将所述等值可索引表达式的第二类型的第二表达式、所述第二表达式对应的第二类型的图节点确定为所述等值索引表达式图中的第二元素;所述第二元素用于指示所述第二表达式对应的流表的信息的存储位置;
根据所述第一元素和所述第二元素,得到所述等值索引表达式图;
其中,所述图节点包括流表的第一标识、所述第一标识对应的等值可索引表达式。
3.根据权利要求1所述的带等值索引的多数据流处理方法,其特征在于,所述遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径,包括:
遍历所述等值索引表达式图中的所有图节点,确定图节点和对应的边组成的至少一条路径;
将所述至少一条路径中包括所有流表的路径确定为所述等值表达式路径。
4.根据权利要求1所述的带等值索引的多数据流处理方法,其特征在于,所述确定所述关联分析表达式对应的等值可索引表达式链,具体包括:
基于每个流表中存储的数据流的参数之间的关联关系,将所述存储的数据流转化为逻辑树;
遍历所述逻辑树中的节点,确定用于进行表征计算的第一节点;
确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式;所述可索引表达式中包括的两个流表的流表标识不同;
在确定所述第一节点的第一子节点、所述第一子节点的左子节点和右子节点组成所述可索引表达式的情况下,将所述左子节点对应的表达式、所述左子节点对应的流表的标识、所述右子节点对应的表达式、所述右子节点对应的流表的标识添加至初始表达式链中;所述初始表达式链为预设的用于存储表达式及标识的关联结构表达式;
在遍历完所述逻辑树中的所有节点的情况下,将所述初始表达式链确定为所述等值可索引表达式链。
5.根据权利要求4所述的带等值索引的多数据流处理方法,其特征在于,所述确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,包括:
在确定所述第一子节点为表征相等运算的子节点的情况下,确定所述左子节点以及与所述左子节点相关的所有子节点是否为第一单表字段表达式节点,并确定所述右子节点以及与所述右子节点相关的所有子节点是否为第二单表字段表达式节点;
在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点,且所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点的情况下,基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式。
6.根据权利要求5所述的带等值索引的多数据流处理方法,其特征在于,所述基于所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点是否组成可索引表达式,包括:
在确定所述左子节点、与所述左子节点相关的所有子节点都为所述第一单表字段表达式节点的情况下,基于所述第一单表字段表达式节点对应的流表的标识更新所述第一单表字段表达式引用第一表字段的第一次数;
在确定所述右子节点、与所述右子节点相关的所有子节点都为所述第二单表字段表达式节点的情况下,基于所述第二单表字段表达式节点对应的流表的标识更新所述第二单表字段表达式引用第二表字段的第二次数;
在确定所述第一次数大于零、所述第二次数大于零,且所述第一单表字段表达式节点对应的流表的标识与所述第二单表字段表达式节点对应的流表的标识不相同的情况下,确定所述第一节点的第一子节点和所述第一子节点的左子节点和右子节点组成可索引表达式。
7.根据权利要求1所述的带等值索引的多数据流处理方法,其特征在于,所述基于所述流表的索引对待分析数据流进行网络安全分析处理,具体包括:
获取所述待分析数据流对应的流表标识,以及所述待分析数据流对应的索引值;
基于所述待分析数据流对应的索引值、所述流表标识对应的流表的索引进行数据流关联分析,得到相应的数据集;基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理。
8.根据权利要求7所述的带等值索引的多数据流处理方法,其特征在于,所述基于预设的网络安全分析处理流程和所述数据集,对所述待分析数据流进行处理,具体包括:
基于预设的删除处理流程,从索引表槽内所述流表标识对应的流表中删除与所述索引关联的待删除数据流,所述待删除数据流包含超时数据流;或者,基于预设的插入处理流程,将与所述索引关联的待插入数据流加入到预设的命中表中;或者,基于预设的更新处理流程,对与所述索引关联的待更新数据流进行更新处理;所述数据集包含所述待删除数据流、所述待插入数据流或者所述待更新数据流;所述命中表中存储有关联分析成功的数据。
9.一种带等值索引的多数据流处理装置,其特征在于,包括:
等值可索引表达式链确定单元,用于基于关联分析表达式,确定对应的等值可索引表达式链;所述关联分析表达式用于表示每个流表中存储的数据流的参数之间的关联关系;所述等值可索引表达式链中包括至少两个等值可索引表达式,每个所述等值可索引表达式的值相同;
等值索引表达式图构建单元,用于基于所述等值可索引表达式链构建等值索引表达式图;所述等值索引表达式图包括多个图节点和图节点之间的边;所述图节点包括流表对应的等值可索引表达式,所述边包括连接的两个图节点对应的等值可索引表达式的关联关系;
等值表达式路径确定单元,用于遍历所述等值索引表达式图中的图节点,确定所述等值索引表达式图的等值表达式路径;
数据分析处理单元,用于将所述等值表达式路径作为流表对应的索引,基于所述流表的索引对所述数据流进行分析处理。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任一项所述带等值索引的多数据流处理方法。
11.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述带等值索引的多数据流处理方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述带等值索引的多数据流处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310140906.2A CN116303596A (zh) | 2023-02-15 | 2023-02-15 | 一种带等值索引的多数据流处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310140906.2A CN116303596A (zh) | 2023-02-15 | 2023-02-15 | 一种带等值索引的多数据流处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116303596A true CN116303596A (zh) | 2023-06-23 |
Family
ID=86797061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310140906.2A Pending CN116303596A (zh) | 2023-02-15 | 2023-02-15 | 一种带等值索引的多数据流处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303596A (zh) |
-
2023
- 2023-02-15 CN CN202310140906.2A patent/CN116303596A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6307169B2 (ja) | 迅速なデータ解析のためのシステム及び方法 | |
CN112559554B (zh) | 一种查询语句优化方法及装置 | |
US9870382B2 (en) | Data encoding and corresponding data structure | |
US9400815B2 (en) | Method of two pass processing for relational queries in a database system and corresponding database system | |
CN103561133B (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
US9934289B2 (en) | Fuzzy full text search | |
CN114265945A (zh) | 血缘关系提取方法、装置及电子设备 | |
CN108008936B (zh) | 一种数据处理方法、装置及电子设备 | |
CN103810260B (zh) | 基于拓扑特性的复杂网络社团发现方法 | |
KR20170117155A (ko) | 필터링 데이터 계통 다이어그램 | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
CN110019384A (zh) | 一种血缘数据的获取方法、提供血缘数据的方法及装置 | |
CN115328883A (zh) | 一种数据仓库建模方法和系统 | |
US9811563B2 (en) | System and method for recursively iterating over a loosely associated data structure | |
US7814087B2 (en) | Method of hierarchical searching on a conditional graph | |
Asiler et al. | Bb-graph: A subgraph isomorphism algorithm for efficiently querying big graph databases | |
CN116303596A (zh) | 一种带等值索引的多数据流处理方法及装置 | |
CN116389049A (zh) | 一种针对单数据流的数据安全分析方法及装置 | |
WO2023030461A1 (zh) | 一种分布式数据库检测方法及装置 | |
CN116366285A (zh) | 一种带动态索引的多数据流安全分析方法及装置 | |
CN114625733A (zh) | 多维数据库中的沙箱数据查询方法、装置及设备 | |
CN117453577B (zh) | 基于流量录制生成接口自动化用例的方法、装置和计算机设备 | |
CN112732933B (zh) | 一种海量知识图谱分布式管理与查询方法 | |
CN117591705B (zh) | 基于图搜索的分表关联方法及设备 | |
CN116383345B (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 |