一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于缓存和数据处理规则实现数据表更新的方法和系统与流程

2022-10-26 17:29:28 来源:中国专利 TAG:
1.本发明涉及数据处理
技术领域
:,特别涉及一种基于缓存和数据处理规则实现数据表更新的方法和系统。
背景技术
::2.现有的数据交换工具大多采用数据库的批量插入功能,或是对数据和字典转换的读取处理更多的依赖于sql(结构化查询语言)的拼接级联。其中,针对数据的多表读取和更新处理,对于大数据量表的处理性能较差,且在数据交换的批量插入时,依赖于数据库的io、性能和表使用情况以及索引等多种外部条件影响,其数据交换处理效率较低。技术实现要素:3.本发明提供一种基于缓存和数据处理规则实现数据表更新的方法和系统,用以解决现有技术中对大批量数据交换处理性能较差的缺陷,从而实现提高数据交换性能,节约硬件成本的目的。4.本发明提供一种基于缓存和数据处理规则实现数据表更新的方法,包括:利用流式读取方式,将源数据库中的待更新数据表读取至内存进行缓存;根据所述内存中的变量表和所述待更新数据表,利用预设算法,对所述待更新数据表进行数据交换处理,获得目标数据表,并将所述目标数据表组成文本数据表;利用mysql,将所述文本数据表生成新数据表,并重建所述新数据表的索引。5.在一种可能的实施方式中,所述利用流式读取方式,将源数据库中的待更新数据表读取至内存进行缓存,包括:将源数据库与jdbc链接;初始化preparedstatement的类型为resultset.type_forward_only和resultset.concur_read_only;设置fetchdirection属性为resultset.fetch_reverse;设置每次读取待更新数据表的数量,循环批量读取待更新数据表至内存中。6.在一种可能的实施方式中,所述设置每次读取待更新数据表的数量,包括:通过fetchsize属性设置每次读取待更新数据表中的数据数量,其中,根据内存可配置的大小,确定每次读取待更新数据表中的数据数量。7.在一种可能的实施方式中,所述根据所述内存中的变量表,包括:将变量表与业务关联表进行关联,获取关联路径;根据关联路径将所述变量表中的数据读取至内存中。8.在一种可能的实施方式中,所述利用预设算法,对所述待更新数据表进行数据交换处理,获得目标数据表,包括:根据所述变量表的关联信息,读取所述内存中所述待更新数据表中的替换字段值;根据所述业务关联表的数据,对所述替换字段值进行数据交换处理,获得目标数据表。9.本发明还提供一种基于缓存和数据处理规则实现数据表更新的系统,包括:读取模块,利用流式读取方式,将源数据库中的待更新数据表读取至内存进行缓存;数据交换模块,根据所述内存中的变量表和所述待更新数据表,利用预设算法,对所述待更新数据表进行数据交换处理,获得目标数据表,并将所述目标数据表组成文本数据表;重建索引模块,利用mysql,将所述文本数据表生成新数据表,并重建所述新数据表的索引。10.在一种可能的实施方式中,所述读取模块包括:链接单元,将源数据库与jdbc链接;初始化单元,初始化preparedstatement的类型为resultset.type_forward_only和resultset.concur_read_only;属性单元,设置fetchdirection属性为resultset.fetch_reverse;读取单元,设置每次读取待更新数据表的数量,循环批量读取待更新数据表至内存中。11.在一种可能的实施方式中,所述读取单元通过fetchsize属性设置每次读取待更新数据表中的数据数量,其中,根据内存可配置的大小,确定每次读取待更新数据表中的数据数量。12.在一种可能的实施方式中,还包括配置模块,所述配置模块包括:关联单元,将变量表与业务关联表进行关联,获取关联路径;缓存单元,根据关联路径将所述变量表中的数据读取至内存中。13.在一种可能的实施方式中,所述数据交换模块包括:获取单元,根据所述变量表的关联信息,读取所述内存中所述待更新数据表中的替换字段值;处理单元,根据所述业务关联表的数据,对所述替换字段值进行数据交换处理,获得目标数据表。14.本发明提供的一种基于缓存和数据处理规则实现数据表更新的方法和系统,通过采用流式读取方式和预设的算法,对待更新数据表进行数据交换处理,并采用mysql本地文件读取的方式来直接写入表数据文件,屏蔽索引,在数据交换完成后重建索引,通过上述方法比正常的数据库批量处理数据性能提高5-10倍的效率,从而提高数据交换性能,节约硬件成本。附图说明15.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。16.图1是本发明提供的基于缓存和数据处理规则实现数据表更新的方法的流程示意图;图2是本发明提供的流式读取方法的流程示意图;图3是本发明提供的步骤s200中的流程示意图;图4是本发明提供的预设算法的流程示意图;图5是本发明提供的基于缓存和数据处理规则实现数据表更新的系统的结构示意图。具体实施方式17.为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。18.需要说明的是:在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本发明一部分实施例,而不是全部的实施例,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。19.在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明保护范围的限制。20.下面参考图1-4详细描述本发明公开的一种基于缓存和数据处理规则实现数据表更新的方法的第一实施例。21.如图1所示,本实施例主要包括以下步骤:s100、利用流式读取方式,将源数据库中的待更新数据表读取至内存进行缓存。22.如图2所示,在步骤s100中,利用流式读取方式,将源数据库中的待更新数据表读取至内存进行缓存,具体通过以下步骤:s110、将源数据库与jdbc链接;s120、初始化preparedstatement的类型为resultset.type_forward_only和resultset.concur_read_only;s130、设置fetchdirection属性为resultset.fetch_reverse;s140、设置每次读取待更新数据表的数量,循环批量读取待更新数据表至内存中。23.进一步,通过fetchsize属性设置每次读取待更新数据表中的数据数量,其中,根据内存可配置的大小,确定每次读取待更新数据表中的数据数量,例如,内存大小可配置10000万条数据。24.具体的,利用流式读取方式,将源数据库与jdbc链接,初始化preparedstatement的类型为resultset.type_forward_only和resultset.concur_read_only,并设置fetchdirection属性为resultset.fetch_reverse,从而保证游标只能向下移动即按照从上到下的顺序,读取源数据库中的待更新数据表中的数据,对于已访问的待更新数据表的数据在内存中释放节约内存空间,从而屏蔽目标表的索引。通过fetchsize属性设置每次读取待更新数据表中的数据数量,将一批次的待更新数据数量从源数据库中读取至内存中,循环此过程,直至将源数据库中的待更新数据表中的数据全部读取完成。25.s200、根据内存中的变量表和待更新数据表,利用预设算法,对待更新数据表进行数据交换处理,获得目标数据表,并将新数据表组成文本数据表。26.如图3所示,在步骤s200中,内存中的变量表,包括:s210、将变量表与业务关联表进行关联,获取关联路径;s220、根据关联路径将变量表中的数据读取至内存中。27.进一步,变量表即为字典表,是随着系统升级和后期变化,可能需要改变的。字典表通常会和具体代码实现紧密联合。28.具体的,将变量表与业务关联表进行关联,获取关联路径,并通过该关联路径将变量表中的数据缓存至内存(公共内存map)中,也就是,将需要的变量表和业务关联表中的相关数据存至内存中进行缓存,以便于对业务关联表相关联的数据进行更新、交换操作。将内存缓存作为处理更新数据的转化媒介,避免做级联消耗数据库和io性能。29.进一步,业务关联表为待更新数据表的相关新的数据表。30.进一步,将变量表与业务关联表进行关联,获取关联信息,通过关联信息获取关联路径,其中,关联信息包含表名、表字段、字段数据类型和字段关系等信息。31.进一步,字段数据类型可概括为字符、数值和时间类型。32.进一步,字段关系包括映射关系和父子关系。33.如图4所示,在步骤s200中,利用预设算法,对待更新数据表进行数据交换处理,获得目标数据表,包括:s230、根据变量表的关联信息,读取内存中待更新数据表中的替换字段值;s240、根据业务关联表的数据,对替换字段值进行数据交换处理,获得目标数据表。34.具体的,变量表的关联信息包括通过变量表的字段规则配置,读取内存中待更新数据表中的替换字段值,其中,字段规则包括表名、表字段、字段数据类型和字段关系等信息,或是通过自定义规则方法提取新的字段值等方法,读取内存中待更新数据表中的需要更新的数据。根据业务关联表的数据,对替换字段值进行数据交换处理,获得目标数据表。35.在步骤s200中,将目标数据表组成文本数据表,包括:将当前批次的最终新数据表的结果采用stringbuild组装成csv格式的文本数据,其中行数据采用\t分隔符,行间采用\n分隔符。36.进一步,将所有的待更新数据进行更新完成之后,关闭源数据库的读取流。37.s300、利用mysql,将文本数据表生成新数据表,并重建新数据表的索引。38.在步骤s300中,通过mysql(关系型数据库管理系统)的jdbc把文本数据传递给数据库,该数据库一般为源数据库。39.在步骤300中,通过mysql的loaddatainfile方法,把文件数据生成数据表文件。40.进一步,重建新数据表文件的索引,可采用mysql表重新生成目标表的索引,包括:使用altertabletablenameenablekeys方式启用索引来重新创建丢失的索引。41.本发明采用常用关联表字段关联缓存读取方式,在流内存中处理完毕后,采用mysql本地文件读取的方式来直接写入表数据文件,屏蔽索引等外部条件,等数据交换完成后重建。针对大批量数据交换(千万级以上)在有限的硬件资源下,通过内存缓存和文本传输等处理方式后,比正常的数据库批量处理数据性能提高5-10倍的效率,从而通过内存和硬盘使用率来提高数据交换性能,节约硬件成本。42.下面参考图5,基于同一发明构思,本发明实施例还提供了一种基于缓存和数据处理规则实现数据表更新的系统的第一实施例。43.如图5所示,本实施例主要包括:读取模块、数据交换模块和重建索引模块。44.读取模块利用流式读取方式,将源数据库中的待更新数据表读取至内存进行缓存。其中,读取模块包括链接单元、初始化单元、属性单元和读取单元,链接单元将源数据库与jdbc链接;初始化单元初始化preparedstatement的类型为resultset.type_forward_only和resultset.concur_read_only;属性单元设置fetchdirection属性为resultset.fetch_reverse;读取单元设置每次读取待更新数据表的数量,循环批量读取待更新数据表至内存中。45.进一步,读取单元通过fetchsize属性设置每次读取待更新数据表中的数据数量,其中,根据内存可配置的大小,确定每次读取待更新数据表中的数据数量。46.具体的,利用流式读取方式,将源数据库与jdbc链接,初始化preparedstatement的类型为resultset.type_forward_only和resultset.concur_read_only,并设置fetchdirection属性为resultset.fetch_reverse,从而保证游标只能向下移动即按照从上到下的顺序,读取源数据库中的待更新数据表中的数据,对于已访问的待更新数据表的数据在内存中释放节约内存空间,从而屏蔽目标表的索引。通过fetchsize属性设置每次读取待更新数据表中的数据数量,将一批次的待更新数据数量从源数据库中读取至内存中,循环此过程,直至将源数据库中的待更新数据表中的数据全部读取完成。47.进一步,系统还包括配置模块,配置模块包括关联单元和缓存单元,其中,关联单元将变量表与业务关联表进行关联,获取关联路径;缓存单元根据关联路径将变量表中的数据读取至内存中。48.进一步,变量表即为字典表,是随着系统升级和后期变化,可能需要改变的。字典表通常会和具体代码实现紧密联合。49.具体的,将变量表与业务关联表进行关联,获取关联路径,并通过该关联路径将变量表中的数据缓存至内存(公共内存map)中,也就是,将需要的变量表和业务关联表中的相关数据存至内存中进行缓存,以便于对业务关联表相关联的数据进行更新、交换操作。将内存缓存作为处理更新数据的转化媒介,避免做级联消耗数据库和io性能。50.进一步,业务关联表为待更新数据的相关新数据表。51.进一步,将变量表与业务关联表进行关联,获取关联信息,通过关联信息获取关联路径,其中,关联信息包含表名、表字段、字段数据类型和字段关系等信息。52.进一步,字段数据类型可概括为字符、数值和时间类型。53.进一步,字段关系包括映射关系和父子关系。54.数据交换模块根据内存中的变量表和待更新数据表,利用预设算法,对待更新数据表进行数据交换处理,获得目标数据表,并将新数据表组成文本数据表。55.进一步,将当前批次的最终新数据表的结果采用stringbuild组装成csv格式的文本数据,其中行数据采用\t分隔符,行间采用\n分隔符。56.进一步,将所有的待更新数据进行更新完成之后,关闭源数据库的读取流。57.进一步,数据交换模块包括获取单元和处理单元,其中,获取单元根据变量表的关联信息,读取内存中待更新数据表中的替换字段值;处理单元根据业务关联表的数据,对替换字段值进行数据交换处理,获得目标数据表。58.具体的,变量表的关联信息包括通过变量表的字段规则配置,读取内存中待更新数据表中的替换字段值,其中,字段规则包括表名、表字段、字段数据类型和字段关系等信息,或是通过自定义规则方法提取新的字段值等方法,读取内存中待更新数据表中的需要更新的数据。根据业务关联表的数据,对替换字段值进行数据交换处理,获得目标数据表。59.重建索引模块利用mysql,将文本数据表生成新数据表,并重建新数据表的索引。60.通过mysql的jdbc把文本数据传递给数据库,该数据库一般为源数据库。61.通过mysql的loaddatainfile方法,把文件数据生成数据表文件。62.进一步,重建新数据表文件的索引,可采用mysql表重新生成目标表的索引,包括:使用altertabletablenameenablekeys方式启用索引来重新创建丢失的索引。63.本发明采用常用关联表字段关联缓存读取方式,在流内存中处理完毕后,采用mysql本地文件读取的方式来直接写入表数据文件,屏蔽索引等外部条件,等数据交换完成后重建。针对大批量数据交换(千万级以上)在有限的硬件资源下,通过内存缓存和文本传输等处理方式后,比正常的数据库批量处理数据性能提高5-10倍的效率,从而通过内存和硬盘使用率来提高数据交换性能,节约硬件成本。64.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献