数据合并方法及装置制造方法及图纸

技术编号:21735982 阅读:119 留言:0更新日期:2019-07-31 19:08
本申请公开了一种数据合并方法及装置,涉及数据库。该方法包括:将目标事务生成的数据组,存储到所述目标事务对应的数据缓存;当满足预设条件时,将缓存的多个数据组合并为列批量数据组;将所述列批量数据组插入所述目标事务对应的数据库表中;清空所述数据缓存中存储的数据组。本申请避免了服务器频繁解析SQL语句的CPU消耗,以及频繁写入数据造成的磁盘I/O消耗,从而提高了服务器的整体服务性能。

Data Merging Method and Device

【技术实现步骤摘要】
数据合并方法及装置
本申请涉及数据库领域,特别涉及一种数据合并方法及装置。
技术介绍
随着网络技术的发展和应用软件的成熟,软件即服务(Software-as-a-service,SaaS)作为一种新的软件应用模式,得到越来越多的关注。SaaS特别之处在于,用户无需对应用程序进行安装,而是通过网络直接使用应用程序,对数据进行阅读、编辑和保存。目前,服务器以数据库表的形式存储各个用户的数据,SaaS模式的兴起意味着服务器需要存储大量不同用户的不同数据,于是宽表应运而生。宽表从字面意义上讲就是字段比较多的数据库表,通常是指将业务主题相关的指标、维度、属性列等类型记录在一起的一张数据库表。由于宽表在创建时会预留若干(比如100,500)个无类型字段作为具体数据的存储字段,因此可以适应大量不同用户的不同类型的数据的存储。现有技术中,服务器是将数据组逐条写入宽表中(比如当一件事务触发后,服务器需要将与该事务关联的多条数据组一条一条写入宽表中),显然,频繁解析结构化查询语言(StructuredQueryLanguage,SQL)语句和频繁写入数据,无疑增加了服务器的中央处理器(CentralProcessingUnit,CPU)消耗和磁盘输入/输出(Input/Output,I/O)消耗,降低了服务器的整体服务性能。
技术实现思路
为了解决相关技术的问题,本申请公开了一种数据合并方法及装置。所述技术方案如下:第一方面,提供了一种数据合并方法,所述方法包括:将目标事务生成的数据组,存储到所述目标事务对应的数据缓存;当满足预设条件时,将缓存的多个数据组合并为列批量数据组;将所述列批量数据组插入所述目标事务对应的数据库表中;清空所述数据缓存中存储的数据组。本申请实施例提供的数据合并方法,通过先将目标事务生成的数据组合并为列批量数据组,再将列批量数据组插入目标事务对应的数据库表中,由于服务器在只需对列批量数据组执行依次写入操作,即可将合并成该列批量数据组的的数据组全部写入宽表中,避免了服务器频繁解析SQL语句的CPU消耗,以及频繁写入数据造成的磁盘I/O消耗,从而提高了服务器的整体服务性能。结合第一方面或者第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,根据数据组属性列与数据库表属性列的对应关系,将类型不同的数据组合并为列批量数据组,使得插入数据库表中的列批量数据组,所包含的每个数据对应的属性列与数据库表的数据库表属性列均对应,从而减少空数据的数量,降低列批量数据组的占用空间,所述将缓存的多个数据组合并为列批量数据组,包括:确定所述多个数据组中,每个数据组的数据组属性列;根据预存的数据组属性列与数据库表属性列的对应关系,将所述多个数据组中对应同一数据库表属性列的数据合并到同一列,得到第一数据集合;在所述第一数据集合中,对于所述多个数据组中的每个数据组,在所述数据组中添加对应所述第一数据集合的数据集合属性列的空数据,得到第二数据集合;在所述第二数据集合中,将同一列数据绑定为列数据,得到所述列批量数据组。结合第一方面、第一方面的第一种可能的实现或者第一方面的第二种可能的实现,在第一方面的第三种可能的实现中,将多个数据组中同一属性的数据合并为列数据,使得插入数据库表中的列批量数据组,所包含的同一列数据对应的属性列相同,便于工作人员的查阅,所述将缓存的多个数据组合并为列批量数据组,包括:确定所述多个数据组中,每个数据组的数据组属性列;将所述多个数据组中同一数据组属性列的数据合并到同一列,得到第三数据集合;在所述第三数据集合中,对于所述多个数据组中的每个数据组,在所述数据组中添加对应所述第三数据数据集合的数据集合属性列的空数据,得到第四数据集合;在所述第四数据集合中,将同一列数据绑定为列数据,得到所述列批量数据组。结合第一方面、第一方面的第一种至第三种可能的实现,在第一方面的第四种可能的实现中,所述将所述列批量数据组插入所述目标事务对应的数据库表中,包括:将所述列批量数据组中的每个列数据分别作为对应所述数据库表的数据库表属性列的数据,插入所述数据库表中。结合第一方面、第一方面的第一种至第四种可能的实现,在第一方面的第五种可能的实现中,服务器会对同一列数据的数据类型不同的数据自动进行数据类型的转换,而这种自动转换通常伴随着较高的出错率,为了避免服务器的自动转换,在所述将所述列批量数据组插入所述目标事务对应的数据库表中之前,所述方法还包括:将所述列批量数据组中同一列数据的数据类型转换为相同的数据类型。结合第一方面、第一方面的第一种至第五种可能的实现,在第一方面的第六种可能的实现中,所述预设条件为接收到事务提交指令,和/或,所述数据缓存中存储的数据组数量达到预定阈值,和/或,达到预设周期。第二方面,提供了一种数据合并装置,所述装置包括:存储模块,用于将目标事务生成的数据组,存储到所述目标事务对应的数据缓存;合并模块,用于当满足预设条件时,将缓存的多个数据组合并为列批量数据组;插入模块,用于将所述列批量数据组,插入所述目标事务对应的数据库表中;清空模块,用于清空所述数据缓存中存储的数据组。第三方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述第一方面的数据合并方法所涉及的相应步骤。第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述第一方面中任意一种可能的实现方式所提供的数据合并方法。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1A是本申请一个实施例应用的SaaS应用系统的系统架构示意图;图1B是本申请一个实施例应用的数据访问节点的主要功能架构示意图;图2是本申请一个示例性实施例应用的数据访问节点的结构示意图;图3A是本申请一个示例性实施例提供的数据合并方法的流程图;图3B是本申请另一个示例性实施例提供的数据合并方法的流程图;图4是本申请再一个示例性实施例提供的数据合并方法的流程图;图5是本申请又一个示例性实施例提供的数据合并方法的流程图;图6是本申请实施例所涉及的数据访问节点的一种可能的结构示意图;图7是本申请一个实施例提供的数据合并装置的框图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。在本文提及的“模块”是指存储在存储器中的能够实现某些功能的程序或指令;在本文中提及的“单元”是指按照逻辑划分的功能性结构,该“单元”可以由纯硬件实现,或者,软硬件的结合实现。请参考图1A,其示出了本申请一个实施例应用的SaaS应用系统的系统架构示意图,该SaaS应用系统包括:负载均衡节点、应用节点、数据访问节点和数据库节点。负载均衡器,用于接收各个SaaS应用客户端的请求,根据应用节点集群中各个应用节点的负载情况,将请求分发给各个应用节点。应用节点,用于运行SaaS应用系统的业务服务。在大容量场景下,应用节点通常采本文档来自技高网...

【技术保护点】
1.一种数据合并方法,其特征在于,所述方法包括:将目标事务生成的数据组,存储到所述目标事务对应的数据缓存;当满足预设条件时,将缓存的多个数据组合并为列批量数据组;将所述列批量数据组插入所述目标事务对应的数据库表中;清空所述数据缓存中存储的数据组。

【技术特征摘要】
1.一种数据合并方法,其特征在于,所述方法包括:将目标事务生成的数据组,存储到所述目标事务对应的数据缓存;当满足预设条件时,将缓存的多个数据组合并为列批量数据组;将所述列批量数据组插入所述目标事务对应的数据库表中;清空所述数据缓存中存储的数据组。2.根据权利要求1所述的方法,其特征在于,所述将缓存的多个数据组合并为列批量数据组,包括:确定所述多个数据组中,每个数据组的数据组属性列;根据预存的数据组属性列与数据库表属性列的对应关系,将所述多个数据组中对应同一数据库表属性列的数据合并到同一列,得到第一数据集合;在所述第一数据集合中,对于所述多个数据组中的每个数据组,在所述数据组中添加对应所述第一数据集合的数据集合属性列的空数据,得到第二数据集合;在所述第二数据集合中,将同一列数据绑定为列数据,得到所述列批量数据组。3.根据权利要求1所述的方法,其特征在于,所述将缓存的多个数据组合并为列批量数据组,包括:确定所述多个数据组中,每个数据组的数据组属性列;将所述多个数据组中同一数据组属性列的数据合并到同一列,得到第三数据集合;在所述第三数据集合中,对于所述多个数据组中的每个数据组,在所述数据组中添加对应所述第三数据数据集合的数据集合属性列的空数据,得到第四数据集合;在所述第四数据集合中,将同一列数据绑定为列数据,得到所述列批量数据组。4.根据权利要求1所述的方法,其特征在于,所述将所述列批量数据组插入所述目标事务对应的数据库表中,包括:将所述列批量数据组中的每个列数据分别作为对应所述数据库表的数据库表属性列的数据,插入所述数据库表中。5.根据权利要求1所述的方法,其特征在于,在所述将所述列批量数据组插入所述目标事务对应的数据库表中之前,所述方法还包括:将所述列批量数据组中同一列数据的数据类型转换为相同的数据类型。6.根据权利要求1-5中任一所述的方法,其特征在于,所述预设条件为接收到事务提交指令,和/或,所述数据缓存中存储的数据组数量达到预定阈值,和/或,达到预设周期。7.一种数据合并装置,其特征在于,所述装置包括:存储模块,用于将目标事务生成的数据组,存储到所述目标事务对应的数据缓存;合并模块,用于当满足预设条件时,将缓存的多...

【专利技术属性】
技术研发人员:朱文琦邓勇杨宜东莫晓军
申请(专利权)人:华为软件技术有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1