首页> 中国专利> 大数据量批处理系统和大数据量批处理方法

大数据量批处理系统和大数据量批处理方法

摘要

本发明提供了一种大数据量批处理系统,包括:中间件单元用于向一级缓存装置发送查询请求,以及接收来自二级缓存装置的二级分页主键集合,根据二级分页主键集合向数据库查询待处理数据并在对待处理数据进行计算处理后,向数据库发送持久化数据请求;一级缓存装置用于向数据库查询符合查询请求的主键集合,以及根据主键集合生成一级分页主键集合并将一级分页主键集合返回至二级缓存装置;二级缓存装置用于根据一级分页主键集合生成二级分页主键集合并将二级分页主键集合返回至中间件单元。本发明还提供了一种大数据量批处理方法。根据本发明的技术方案,可大大提高系统海量数据的处理速度,降低系统处理时间,进而提升系统的综合性能。

著录项

  • 公开/公告号CN103020151A

    专利类型发明专利

  • 公开/公告日2013-04-03

    原文格式PDF

  • 申请/专利权人 用友软件股份有限公司;

    申请/专利号CN201210480063.2

  • 发明设计人 张成;

    申请日2012-11-22

  • 分类号

  • 代理机构北京友联知识产权代理事务所(普通合伙);

  • 代理人尚志峰

  • 地址 100094 北京市海淀区北清路68号用友软件园

  • 入库时间 2024-02-19 18:53:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-12-02

    授权

    授权

  • 2015-11-25

    著录事项变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20121122

    著录事项变更

  • 2013-05-01

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20121122

    实质审查的生效

  • 2013-04-03

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,具体而言,涉及一种大数据量批处理系 统和一种大数据量批处理方法。

背景技术

目前大型的联机事务处理系统(OLTP)中,衡量其系统性能好坏的 指标,往往是一些关键核心算法在大数据量应用场景下的处理速度,而处 理速度的快慢直接影响整个系统的性能。

一个大型的信息化系统,往往都有一些自己比较复杂业务处理逻辑、 业务处理算法,当这些复杂的业务处理在小数据量应用场景下效率问题往 往都被忽视,因为这种场景下系统响应速度是比较快的,而在大数据量情 况下可能就会出现系统处理性能的瓶颈,长时间无响应或者直接宕机等严 重情况,那么其中比较共性和核心的问题就是:第一,如果数据量过大, 程序一次性读到内存中可能造成系统内存溢出;第二,如果不是一次性读 取数据到内存中,循环读取一条一条数据在进行处理,则算法由批处理变 成了循环单个处理,也必定大大影响系统的性能。对此,现有技术使用后 台分页技术来解决这样的问题。

现有的分页技术都是在数据库端实现分页技术,一种是直接利用SQL 语句来进行分页,例如第一次取第1-50条记录,第二次取第51-100条记 录等等依次类推,这种方式虽然达到了每次读取有限的记录加载到内存 中,但是数据库端的压力依然很大,因为每次SQL语句的查询都是对结 果集全纪录的扫描,处理速度并没有优化;另外一种是通过代码来实现分 页,例如JAVA中利用ResultSet结果集进行循环遍历来实现,第一次遍 历第1-50条记录并取出。第二次遍历第1-100条记录,但只取出第51- 100条记录,这种方式依然存在每次预先查询所有记录的缺点;其次还有 一种通过预先查出将满足条件结果集的主键PK,然后存入临时表并编上 序号,之后通过序号一批批读出PK集合,在利用PK集合到数据库中查 询出数据,这种方式虽然解决了前面的问题,但是由于要一批批从数据库 临时表中读取数据,在高并发的情况下,数据库端的压力还是非常大,并 且会有多次中间件单元到数据库的连接、查询、数据网络传输,在窄带环 境中,效率依然存在一些瓶颈,另外没有合理的利用中间件单元资源。最 后上述三种方案都没有提出加载数据到内存中后,如何用一种通用的方式 进一步优化数据处理的速度,都只是考虑解决整个算法中数据加载的瓶 颈,而往往大数据量批处理算法往往有查询加载和数据处理持久化两个过 程,并且分页处理如何自动适配多数据库,这些都是问题。

所以,如何解决大数据量加载过程中中间件单元资源和数据库资源的 合理使用,如何使分页底层自适应多种数据库,如何提出一整套解决方法 和系统,防止中间件单元内存溢出、减轻数据库端处理压力、降低中间件 单元和数据库之间网络传输数据量,这是亟待解决的技术问题。

发明内容

本发明正是基于上述问题,提出了一种大数据量批处理技术,能够防 止中间件单元内存溢出、减轻数据库端的处理压力。

根据本发明的一个方面,本发明提供了一种大数据量批处理系统,包 括:中间件单元、一级缓存装置和二级缓存装置,其中,所述中间件单元 用于向所述一级缓存装置发送查询请求,以及接收来自所述二级缓存装置 的二级分页主键集合,根据所述二级分页主键集合向数据库查询待处理数 据并在对所述待处理数据进行计算处理后,向所述数据库发送持久化数据 请求;所述一级缓存装置用于向所述数据库查询符合所述查询请求的主键 集合,以及根据所述主键集合生成一级分页主键集合并将所述一级分页主 键集合返回至所述二级缓存装置;所述二级缓存装置用于根据所述一级分 页主键集合生成二级分页主键集合并将所述二级分页主键集合返回至所述 中间件单元。

通过上述技术方案,在中间件读取数据的过程中加入两级缓存结构, 大大优化数据读取,解决了中间件内存溢出的技术问题。

在上述技术方案中,优选的,还可以包括:第一设置单元,设置所述 一级缓存装置的一级缓存阈值;所述一级缓存装置还用于在所述主键集合 的数据量小于等于所述一级缓存阈值时,直接将所述一级分页主键集合返 回至所述二级缓存装置,以及在所述主键集合的数据量大于所述一级缓存 阈值时,建立并插入临时表,对所述临时表进行分页并将获取的主键返回 至所述二级缓存装置。

如果只有一级缓存结构来解决中间件内存溢出的问题,则必须对每页 主键数据量做更细粒度的控制,当采用了两级缓存结构之后,由于一级缓 存返回的只是主键,每一个主键只是一个固定长度的字符串,占用内存较 少,所以可大大提高一级缓存结构每页的主键数据总量。

在上述技术方案中,优选的,还可以包括:第二设置单元,设置所述 二级缓存装置的二级缓存阈值;所述二级缓存装置还用于在所述一级分页 主键的数据量小于等于所述二级缓存阈值时,直接将所述二级分页主键集 合返回至所述中间件单元,以及在所述主键集合的数据量大于所述二级缓 存阈值时,将所述二级分页主键集合暂存于内存,从所述内存中取出每一 页主键数据,根据所述每一页主键数据查询所述待处理数据。

基于中间件实际处理数据的占用量设置二级缓存装置的二级缓存阈 值,合理设置各级缓存结构的存储阈值能够最大限度的提升系统的处理效 率。

上述技术方案中,优选的,所述中间件单元包括:事务建立子单元, 用于建立独立事务;加锁子单元,用于对所述待处理数据添加中间件单元 级别主键锁,对所述待处理数据进行处理,在处理结束后,对所述中间件 单元级别锁进行解锁。

每一页数据采用独立事务处理,也就是说每页数据处理完毕后事务立 即提交,而不是仅在整个算法最外层起一个事务,不会对数据库中所有数 据进行长时间加锁锁定,从而提升数据库整体并发处理能力,降低了数据 库端的压力。

在上述任一技术方案中,优选的,还可以包括:自识别装置,使所述 一级缓存装置自适应多类型数据库。

根据本发明的另一方面,还提供了一种大数据量批处理方法,包括以 下步骤:步骤402,中间件单元向一级缓存装置发送查询请求,数据库返 回符合所述查询请求的主键集合至所述一级缓存装置;步骤404,所述一 级缓存装置根据所述主键集合生成一级分页主键集合并将所述一级分页主 键集合返回至二级缓存装置;步骤406,所述二级缓存装置根据所述一级 分页主键集合生成二级分页主键集合并将所述二级分页主键集合返回至所 述中间件单元;步骤408,所述中间件单元根据所述二级分页主键集合向 所述数据库查询待处理数据并再对所述待处理数据进行计算处理后,向所 述数据库发送持久化数据请求。

通过上述技术方案,在中间件读取数据的过程中加入两级缓存结构, 大大优化数据读取,解决了中间件内存溢出的技术问题。

在上述技术方案中,优选的,所述步骤404具体包括:设置所述一级 缓存装置的一级缓存阈值;在所述主键集合的数据量小于等于所述一级缓 存阈值时,直接将所述一级分页主键集合返回至所述二级缓存装置;在所 述主键集合的数据量大于所述一级缓存阈值时,建立并插入临时表,对所 述临时表进行分页并将获取的主键返回至所述二级缓存装置。

如果只有一级缓存结构来解决中间件内存溢出的问题,则必须对每页 主键数据量做更细粒度的控制,当采用了两级缓存结构之后,由于一级缓 存返回的只是主键,每一个主键只是一个固定长度的字符串,占用内存较 少,所以可大大提高一级缓存结构每页的主键数据总量。

在上述技术方案中,优选的,所述步骤406具体包括:设置所述二级 缓存装置的二级缓存阈值;在所述一级分页主键的数据量小于等于所述二 级缓存阈值时,直接将所述二级分页主键集合返回至所述中间件单元;在 所述主键集合的数据量大于所述二级缓存阈值时,将所述二级分页主键集 合暂存于内存,从所述内存中取出每一页主键数据,根据所述每一页主键 数据查询所述待处理数据。

基于中间件实际处理数据的占用量设置二级缓存装置的二级缓存阈 值,合理设置各级缓存结构的存储阈值能够最大限度的提升系统的处理效 率。

在上述技术方案中,优选的,所述步骤408具体包括:在所述中间件 单元建立独立事务,对所述待处理数据添加中间件单元级别主键锁,对所 述待处理数据进行处理,在处理结束后,对所述中间件单元级别锁进行解 锁。

每一页数据采用独立事务处理,也就是说每页数据处理完毕后事务立 即提交,而不是仅在整个算法最外层起一个事务,不会对数据库中所有数 据进行长时间加锁锁定,从而提升数据库整体并发处理能力,降低了数据 库端的压力。

在上述任一技术方案中,优选的,所述步骤404还可以包括,在所述 一级缓存装置处,采用自识别装置自适应多类型数据库。

因此,根据本发明的大数据量批处理方法能够大大提高系统对大数据 量业务的处理速度,最大程度上平衡使用中间件和数据库资源,在降低各 自负载的境况下,又充分利用各自资源,以达到系统性能的最大提升

附图说明

图1示出了相关技术中大数据量批处理的原理图;

图2示出了根据本发明的实施例的大数据量批处理系统的框图;

图3示出了根据本发明的实施例的大数据量批处理的原理图;

图4示出了根据本发明的实施例的大数据量批处理方法的流程图;

图5示出了根据本发明的实施例的大数据量批处理方法的流程图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附 图和具体实施方式对本发明进行进一步的详细描述。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是, 本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明 并不限于下面公开的具体实施例的限制。

在说明根据本发明的大数据量批处理系统之前,先简单介绍现有的大 数据匹配处理过程。

如图1所示,一般的大数据量批处理业务场景,所有的处理逻辑和算 法都大致分为如下几个过程:中间件向数据库发起查询加载数据的请求, 中间件获取数据并在内存计算处理,处理结束后最后向数据库发起持久化 数据的请求,数据库完成持久化操作,这样的处理过程很容易造成中间件 内存溢出。为了解决该技术问题,公开了根据本发明的大数据量批处理系 统。

图2示出了根据本发明的实施例的大数据量批处理系统的框图。

如图2所示,根据本发明实施例的大数据量批处理系统200包括:中 间件单元202、一级缓存装置204和二级缓存装置206,其中,所述中间 件单元202用于向所述一级缓存装置204发送查询请求,以及接收来自所 述二级缓存装置206的二级分页主键集合,根据所述二级分页主键集合向 数据库查询待处理数据并在对所述待处理数据进行计算处理后,向所述数 据库发送持久化数据请求;所述一级缓存装置204用于向所述数据库查询 符合所述查询请求的主键集合,以及根据所述主键集合生成一级分页主键 集合并将所述一级分页主键集合返回至所述二级缓存装置206;所述二级 缓存装置206用于根据所述一级分页主键集合生成二级分页主键集合并将 所述二级分页主键集合返回至所述中间件单元202。

通过上述技术方案,在中间件读取数据的过程中加入两级缓存结构, 大大优化数据读取,解决了中间件内存溢出的技术问题。

上述技术方案中,优选的,还可以包括:第一设置单元208,设置所 述一级缓存装置204的一级缓存阈值;所述一级缓存装置204还用于在所 述主键集合的数据量小于等于所述一级缓存阈值时,直接将所述一级分页 主键集合返回至所述二级缓存装置206,以及在所述主键集合的数据量大 于所述一级缓存阈值时,建立并插入临时表,对所述临时表进行分页并将 获取的主键返回至所述二级缓存装置206。

如果只有一级缓存结构来解决中间件内存溢出的问题,则必须对每页 主键数据量做更细粒度的控制,当采用了两级缓存结构之后,由于一级缓 存返回的只是主键,每一个主键只是一个固定长度的字符串,占用内存较 少,所以可大大提高一级缓存结构每页的主键数据总量。

优选的,大数据量批处理系统200还可以包括:第二设置单元210, 设置所述二级缓存装置206的二级缓存阈值;所述二级缓存装置206还用 于在所述一级分页主键的数据量小于等于所述二级缓存阈值时,直接将所 述二级分页主键集合返回至所述中间件单元202,以及在所述主键集合的 数据量大于所述二级缓存阈值时,将所述二级分页主键集合暂存于内存, 从所述内存中取出每一页主键数据,根据所述每一页主键数据查询所述待 处理数据。

基于中间件实际处理数据的占用量设置二级缓存装置206的二级缓存 阈值,合理设置各级缓存结构的存储阈值能够最大限度的提升系统的处理 效率。

上述技术方案中,优选的,所述中间件单元202包括:事务建立子单 元2022,用于建立独立事务;加锁子单元2024,用于对所述待处理数据 添加中间件单元202级别主键锁,对所述待处理数据进行处理,在处理结 束后,对所述中间件单元202级别锁进行解锁。

每一页数据采用独立事务处理,也就是说每页数据处理完毕后事务立 即提交,而不是仅在整个算法最外层起一个事务,不会对数据库中所有数 据进行长时间加锁锁定,从而提升数据库整体并发处理能力,降低了数据 库端的压力。

优选的,大数据量批处理系统200还可以包括:自识别装置212,使 所述一级缓存装置204自适应多类型数据库。

综合上述,整个大数据量批处理系统可分为如下几个模块相互传递数 据协调工作:一级缓存装置解决中间件内存瓶颈;数据库自识别装置自动 适配多类型数据库;二级缓存装置降低数据库负载压力的同时合理化使用 中间件资源;独立事务处理装置进一步提升数据库和中间件多并发处理能 力,从而整体提升系统效率。

下面结合图3详细说明根据本发明的大数据量批处理系统的处理原 理。图3示出了根据本发明的实施例的大数据量批处理的原理图。

如图3所示,在中间件(对应图2中的中间件单元)读取数据的过程 中加入两级缓存结构,优化数据读取;在中间件发起持久化处理过程中采 用独立事务,优化减轻数据库端压力。从图中可以看到整个过程如下:

1.向一级缓存装置发起查询请求。

2.一级缓存装置向数据库查询满足查询条件的主键,数据库返回所有 主键集合到一级缓存结构。

3.二级缓存装置向一级缓存装置请求获取一级分页主键集合。

4.二级缓存装置接收由一级缓存装置返回的二级分页主键集合。

5.中间件向二级缓存装置请求获取二级分页主键结合。

6.二级缓存装置向中间件返回二级分页主键集合。

7.中间件根据二级分页主键向数据库结合查询待处理数据。

8.采用独立事务处理计算数据。

9.持久化二级分页数据。

其中,第2步到第4步为第一级分页循环处理过程;第5步到第9步 为第二级分页循环处理过程,同时内部采用独立事务,减轻数据库端处理 压力。系统中一级缓存装置内部利用数据库临时表来实现,同时内部包含 自动适应底层数据库的自识别装置212,适用于各类数据库。二级缓存结 构采用在中间件级别建立内存级缓存,暂存数据主键信息。

如果只采用一级缓存装置防止中间件内存溢出,必须对每页主键数据 量做更细粒度的控制,例如必须要处理总量1000万的数据量,为保证内 存不溢出,必须做到每页最多5000条记录,对应的主键也是5000条,那 么就需要2000页,也就是2000次分页查询。

而现在如果采用两级缓存结构,同样二级缓存每页最多5000条数 据,对应的主键也是5000条,但由于一级缓存装置返回的只是主键,每 一个主键只是一个固定长度的字符串,占用内存较少,所以它的每页主键 数据可以达到例如4万条记录,由于二级缓存分页取数完全是在内存中完 成,不会有远程查询,那么一级缓存带来的查询开销只有:1000万/4万 =250,也就是说总共只有250次分页查询。相比只有一级缓存装置的 2000次分页查询,采用二级缓存结构的方法对数据库端的压力会更小, 同时还降低了中间件与数据库之间的网络传输流量,从而进一步的提升整 个系统大数据量批处理的能力。

接下来结合图4和图5来详细说明根据本发明的大数据量批处理方 法。

图4示出了根据本发明的实施例的大数据量批处理方法的流程图。

如图4所示,根据本发明的实施例的大数据量批处理方法,包括以下 步骤:步骤402,中间件单元向一级缓存装置发送查询请求,数据库返回 符合查询请求的主键集合至一级缓存装置;步骤404,一级缓存装置根据 主键集合生成一级分页主键集合并将一级分页主键集合返回至二级缓存装 置;步骤406,二级缓存装置根据一级分页主键集合生成二级分页主键集 合并将二级分页主键集合返回至中间件单元;步骤408,中间件单元根据 二级分页主键集合向数据库查询待处理数据并再对待处理数据进行计算处 理后,向数据库发送持久化数据请求。

通过上述技术方案,在中间件读取数据的过程中加入两级缓存结构, 大大优化数据读取,解决了中间件内存溢出的技术问题。

上述技术方案中,优选的,所述步骤404具体包括:设置所述一级缓 存装置的一级缓存阈值;在所述主键集合的数据量小于等于所述一级缓存 阈值时,直接将所述一级分页主键集合返回至所述二级缓存装置;在所述 主键集合的数据量大于所述一级缓存阈值时,建立并插入临时表,对所述 临时表进行分页并将获取的主键返回至所述二级缓存装置。

如果只有一级缓存结构来解决中间件内存溢出的问题,则必须对每页 主键数据量做更细粒度的控制,当采用了两级缓存结构之后,由于一级缓 存返回的只是主键,每一个主键只是一个固定长度的字符串,占用内存较 少,所以可大大提高一级缓存结构每页的主键数据总量。

上述技术方案中,优选的,所述步骤406具体包括:设置所述二级缓 存装置的二级缓存阈值;在所述一级分页主键的数据量小于等于所述二级 缓存阈值时,直接将所述二级分页主键集合返回至所述中间件单元;在所 述主键集合的数据量大于所述二级缓存阈值时,将所述二级分页主键集合 暂存于内存,从所述内存中取出每一页主键数据,根据所述每一页主键数 据查询所述待处理数据。

基于中间件实际处理数据的占用量设置二级缓存装置的二级缓存阈 值,合理设置各级缓存结构的存储阈值能够最大限度的提升系统的处理效 率。

上述技术方案中,优选的,所述步骤408具体包括:在所述中间件单 元建立独立事务,对所述待处理数据添加中间件单元级别主键锁,对所述 待处理数据进行处理,在处理结束后,对所述中间件单元级别锁进行解 锁。

每一页数据采用独立事务处理,也就是说每页数据处理完毕后事务立 即提交,而不是仅在整个算法最外层起一个事务,不会对数据库中所有数 据进行长时间加锁锁定,从而提升数据库整体并发处理能力,降低了数据 库端的压力。

上述任一技术方案中,优选的,所述步骤404还可以包括,在所述一 级缓存装置处,采用自识别装置自适应多类型数据库。

如图5所示,大数据量批处理过程可大致分为3个过程:1)一级缓 存结构处理查询请求;2)二级缓存结构处理查询请求;3)使用独立事务 提交最终数据

1)一级缓存结构处理查询请求。

1.一级缓存结构接收查询请求后,首先执行SQL语句获得结果集。

2.遍历结果集,如果结果集的数据量总大小未超过一级缓存阀值,直 接返回结果集。

3.如果结果集的数据量总大小超过一级缓存阀值,临时表缓存装置处 理SQL语句。

4.临时表缓存装置根据底层数据源类型,自动创建各种数据库类型插 入临时表SQL语句。

临时表的字段如下:编号(自增长型)、主键、传入临时表缓存SQL 中的字段。其中,编号是为了后续分页使用,并且每种数据库自增长型字 段实现技术有差异,所以在此会根据数据库类型自动区别处理,最终形成 插叙临时表的SQL语句,类似:insert into temp(select rownum From…)。

5.一级缓存结构从内部临时表中分页取出待处理数据,分页的原理就 是利用临时表中编号字段,由于编号字段是自增长型(例如, 12,3,4…),所以分页取数的SQL类似select pk from temp where no>=1 and no<=50……。

6.最后将分页取出的主键数据集合传给二级缓存结构(即二级缓存装 置)。

2)二级缓存结构处理查询请求。

1.二级缓存结构接收一级缓存结构返回的主键数据。

2.如果结果集的数据量总大小未超过二级缓存阀值,则直接返回主键 结果集。

3.如果结果集的数据量总大小超过二级缓存阀值,则将主键数据暂存 在内存中。

4.二次分页从内存级缓存中取出每一页主键数据。

5.根据每一页主键数据去数据库中查询出待处理数据。

3)使用独立事务提交数据。

1.在中间件层创建独立事务。

2.对待处理数据加中间件级别主键锁。

3.对数据进行计算、最后持久化数据。

4.释然锁。

4)各缓存结构阀值设置。

1.一级缓存结构默认分页数据阀值20000。

2.二级缓存结构默认分页数据阀值5000。

3.一级缓存结构和二级缓存结构的阀值都可以根据中间件的硬件条件 动态设置。

4.一级缓存结构阀值的设置主要考虑主键字符内存占用量。

5.二级缓存结构阀值的设置主要考虑中间件中实际处理数据的占用 量。合理设置各级缓存结构的阀值能够最大的提升系统的处理效率。

因此,根据本发明的大数据量批处理方法能够大大提高系统对大数据 量业务的处理速度,最大程度上平衡使用中间件和数据库资源,在降低各 自负载的境况下,又充分利用各自资源,以达到系统性能的最大提升。综 上,该方法这使得信息系统能够更好的适应更多、条件更苛刻的网络环 境、大数据量环境,能够使客户在更大的业务数据场景下运行系统。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于 本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精 神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明 的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号