本公开涉及数据处理,具体地,涉及一种数据处理方法、装置、存储介质和电子设备。
背景技术:
1、后台业务常常需要使用一组复合条件(即匹配特定属性、全文搜索、范围查找等条件)来过滤数据条目。业务若希望在进程本地执行此操作、而不希望借助外部依赖(如各种外部流处理引擎、数据库引擎等),则需要手动实现一套高级过滤引擎。
技术实现思路
1、提供该部分内容以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该部分内容并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
2、第一方面,本公开提供一种数据处理方法,包括:
3、接收过滤条件,并读取内存中的多个结构体,每一所述结构体用于存储一个数据条目,所述数据条目中包含至少一个属性的数据;
4、针对每一所述结构体,确定所述结构体对应的数据条目类型,并根据所述数据条目类型确定所述结构体的数据条目中每一属性的内存地址信息,获得所述结构体对应的属性信息表;
5、根据每一所述结构体对应的所述属性信息表,将所述过滤条件即时编译为本地代码或字节码;
6、通过处理器运行所述本地代码或通过创建的虚拟机运行所述字节码,得到表征所述多个结构体中的数据条目是否满足所述过滤条件的运行结果。
7、第二方面,本公开提供一种数据处理装置,包括:
8、第一信息获取模块,用于接收过滤条件,并读取内存中的多个结构体,每一所述结构体用于存储一个数据条目,所述数据条目中包含至少一个属性的数据;
9、第二信息获取模块,用于针对每一所述结构体,确定所述结构体对应的数据条目类型,并根据所述数据条目类型确定所述结构体的数据条目中每一属性的内存地址信息,获得所述结构体对应的属性信息表;
10、代码编译模块,用于根据每一所述结构体对应的所述属性信息表,将所述过滤条件即时编译为本地代码或字节码;
11、代码运行模块,用于通过处理器运行所述本地代码或通过创建的虚拟机运行所述字节码,得到表征所述多个结构体中的数据条目是否满足所述过滤条件的运行结果。
12、第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理装置执行时实现本公开第一方面所提供的数据处理方法的步骤。
13、第四方面,本公开提供一种电子设备,包括:
14、存储装置,其上存储有至少一个计算机程序;
15、至少一个处理装置,用于执行所述存储装置中的所述至少一个计算机程序,以实现本公开第一方面所提供的数据处理方法的步骤。
16、在上述技术方案中,先根据每一结构体的数据条目类型确定每一结构体的数据条目中的每一属性的内存地址信息,获得每一结构体的属性信息表,再采用即时编译技术,根据每一结构体的属性信息表,将过滤条件即时编译为处理器可直接运行的本地代码,或者虚拟机字节码,处理器或虚拟机能够根据本地代码或字节码中的指令,直接寻址到数据条目中的所需属性并读取内存地址中的数据,完成过滤操作,因此本技术方案能够在进程本地高效过滤数据内存空间中的数据条目。
17、本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
1.一种数据处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据条目类型确定所述结构体的数据条目中每一属性的内存地址信息,获得所述结构体对应的属性信息表,包括:
3.根据权利要求2所述的方法,其特征在于,根据所述数据条目类型,确定所述结构体的数据条目中每一属性相对于所述数据条目的起始内存地址的偏移量,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据上一属性的属性类型确定目标长度,包括:
5.一种数据处理装置,其特征在于,包括:
6.根据权利要求5所述的装置,其特征在于,所述第二信息获取模块包括:
7.根据权利要求6所述的装置,其特征在于,所述信息确定子模块包括偏移量确定子模块,所述偏移量确定子模块用于:针对所述数据条目中的第一个属性,确定所述第一个属性相对于所述起始内存地址的偏移量为零,针对所述第一个属性之后的每一属性,根据上一属性的属性类型确定目标长度,并将上一属性相对于所述起始内存地址的偏移量与所述目标长度之和,确定为所述属性相对于所述起始内存地址的偏移量。
8.根据权利要求7所述的装置,其特征在于,所述偏移量确定子模块用于:根据所述上一属性的属性类型确定所述上一属性的长度为变长或定长,若所述上一属性的长度为变长,则读取所述上一属性的数据,将所述上一属性的数据的长度确定为所述目标长度,若所述上一属性的长度为定长,则将所述上一属性对应的固定长度确定为所述目标长度。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理装置执行时实现权利要求1-4中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括: