本发明涉及大数据应用与处理技术领域,更具体地,涉及一种于对大数据进行处理的方法及系统。
背景技术:
粮食保管的温度和湿度直接影响着粮食的质量,以及决定后期粮食的处理过程,所以粮食局领导非常重视。在国家粮食系统信息化的背景下,粮温粮情也要作为一个业务点,纳入进系统,粮食监管解决方案是分级管理系统,分为两级管理,一级是在各个粮库库点,部署粮库出入库系统以及粮库业务管理系统,是一套完备的出入库流程的电子监控系统。二级是粮食监管平台,部署在省市县粮食局,粮库出入库系统通过网络将日常得的粮情业务数据传到粮食监管平台。如图2所示。
粮情粮温数据统计一般都用于每个粮仓之中,一个库点一般有20个仓房,一个省大概有库点100多个,一天一个仓房按照一条粮情粮温计算,那么一天的数据量大概有20*100=2000条。那么一年大概有2000*365=73万条数据。由于列表中还要显示平均温的走势,平均湿度的走势,那么需要计算每个测温点的,那么一年的测温点的数据超过一亿,就会出现如下问题:
现有技术由于数据量太大,造成粮情粮温界面初始化需要10多分钟才可以展现出来。用户不能接受这样的速度,所以在系统架构上需要解决此问题。由于每年都会产生上亿条数据,数据库容量难以承受,一个单独表结构满足不了现在的业务量的增长。
因此,需要一种技术,以实现对大数据进行处理。
技术实现要素:
本发明技术方案提供一种于对大数据进行处理的方法及系统,以解决如何对大数据进行处理及快速查询的问题。
为了解决上述问题,本发明提供了一种用于对大数据进行处理的方法,所述方法包括:
按预先设置的切分单位对数据库进行数据库分表处理,将数据库中的数据按所述预先设置的切分单位对数据库进行分表,将数据库中的数据按照切分单位分别存储于对应的数据库分表中;
设置数据库的缓存区,所述数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据;
根据用户对指定单位的数据查询请求,判断所述缓存区中是否存储所述指定单位的数据,当所述缓存区中存储所述指定单位的数据时,直接从所述缓存区中调用所述指定单位的数据,获取指定单位的数据调用结果;
当所述缓存区中未存储所述指定单位的数据时,通过所述指定单位对应的数据分表调用所述指定单位的数据,获取指定单位的数据调用结果。
优选地,所述设置数据库的缓存区,所述数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据,还包括:
利用远程字典服务redis对预定时间区间内的所有单位的数据库分表中的数据进行缓存。
优选地,还包括:
对获取的指定单位的数据调用结果进行缓存。
优选地,还包括:对获取的指定单位的数据调用结果以哈希hash散列的形式进行缓存。
优选地,还包括:
对数据库分表添加单位编码标识;
当有新增加数据时,按照新增加数据的所属单位的单位编码标识,查找与所属单位对应的数据库分表,将新添加数据添加到对应的数据库分表中。
基于本发明的另一方面,提供一种用于对大数据进行处理的系统,所述系统包括:
初始单元,用于按预先设置的切分单位对数据库进行数据库分表处理,将数据库中的数据按所述预先设置的切分单位对数据库进行分表,将数据库中的数据按照切分单位分别存储于对应的数据库分表中;
设置单元,用于设置数据库的缓存区,所述数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据;
第一调用单元,用于根据用户对指定单位的数据查询请求,判断所述缓存区中是否存储所述指定单位的数据,当所述缓存区中存储所述指定单位的数据时,直接从所述缓存区中调用所述指定单位的数据,获取指定单位的数据调用结果;
第二调用单元,用于当所述缓存区中未存储所述指定单位的数据时,通过所述指定单位对应的数据分表调用所述指定单位的数据,获取指定单位的数据调用结果。
优选地,所述设置单元用于设置数据库的缓存区,所述数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据,还用于:
利用远程字典服务redis对预定时间区间内的所有单位的数据库分表中的数据进行缓存。
优选地,还包括存储单元,用于:
对获取的指定单位的数据调用结果进行缓存。
优选地,所述存储单元还用于:对获取的指定单位的数据调用结果以哈希hash散列的形式进行缓存。
优选地,还包括:
初始单元,还用于对数据库分表添加单位编码标识;
更新单元,用于当有新增加数据时,按照新增加数据的所属单位的单位编码标识,查找与所属单位对应的数据库分表,将新添加数据添加到对应的数据库分表中。
本发明技术方案提供一种用于对大数据进行处理的方法及系统,其中方法包括:按预先设置的切分单位对数据库进行数据库分表处理,将数据库中的数据按预先设置的切分单位对数据库进行分表,将数据库中的数据按照切分单位分别存储于对应的数据库分表中;设置数据库的缓存区,数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据;根据用户对指定单位的数据查询请求,判断缓存区中是否存储指定单位的数据,当缓存区中存储指定单位的数据时,直接从缓存区中调用指定单位的数据,获取指定单位的数据调用结果;当缓存区中未存储指定单位的数据时,通过指定单位对应的数据分表调用指定单位的数据,获取指定单位的数据调用结果。本发明技术方案利用数据库分表技术以及redis缓存技术,增强了系统的性能,可用性,易用性,也增加的系统的强壮性,解决了页面加载慢的问题,可以一劳永逸,增添了一个redis缓存服务器,从技术角度来讲,分布式对各个系统进行了解耦,使得系统更加灵活。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为根据本发明优选实施方式一种用于对大数据进行处理的方法流程图;
图2为根据现有技术实施方式的粮情业务数据传到粮食监管平台结构示意图;
图3为根据本发明优选实施方式的对数据库进行分表的示意图;
图4为根据本发明优选实施方式的增加缓存服务器后的粮食监管平台结构示意图;以及
图5为根据本发明优选实施方式一种用于对大数据进行处理的系统结构图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为根据本发明优选实施方式一种用于对大数据进行处理的方法流程图。本申请以粮情数据进行举例说明,由于粮情数据量巨大,数据的调用非常缓慢,本申请实施方式提出了一种用于对大数据进行处理的方法,方法包括:
优选地,在步骤101:按预先设置的切分单位对数据库进行数据库分表处理,将数据库中的数据按预先设置的切分单位对数据库进行分表,将数据库中的数据按照切分单位分别存储于对应的数据库分表中。本申请中,由于关系型数据库本身比较容易成为系统瓶颈,此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间,数据库分布式核心内容无非就是数据切分(sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。以粮情数据为例,数据库粮情表中一年会出现73万条数据,用户在查询粮情数据时,每个数据库中的每天的数据还要进行对比,对比前一天的数据情况给出降温,升温的提示,并且要保证数据精确的数值,这样一来查询起来会非常的吃力,所以需要分表处理,分表就存在如何切分的问题,库区表中有库区所在的省,市,县的编码,
本申请的用户在查询粮库的粮情的时候,经常是查询某一个库点的粮温情况,那么我们就需要以库点为切分单位进行分表,那么这样一来一个表一年最多7300条数据,因此查询起来速度非常的快,在表中的主键需要改为日期+自增序列就可以了,不需要库点编码了,这样一来就解决了列表加载慢的情况,经过实际测试以前页面加载需要10分钟,现在需要5秒钟就可以了,图3为数据库分表示意图。
优选地,在步骤102:设置数据库的缓存区,数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据。本申请为了更快地处理数据的话,需要在数据库前加一个缓存服务器(redis服务器),把所有库点最近几天的数据缓存起来,进行存储,这样一来用户再次查询数据的时候,就不会从数据库中查询,就直接从缓存服务器中取得即可,那么页面的速度会提升数百倍,经过实际测试,页面的加载速度会提升到几毫秒,几乎体会不到延迟。那么需要在架构中加一个redis服务器如图4所示。
优选地,在步骤103:根据用户对指定单位的数据查询请求,判断缓存区中是否存储指定单位的数据,当缓存区中存储指定单位的数据时,直接从缓存区中调用指定单位的数据,获取指定单位的数据调用结果。
本申请提供一台redis服务器,保证与监管平台和各个库点软件网络互联互通。本申请对平台的程序进行改进,在spring容器中注入切面,在查询粮情页面service层进行环绕处理,在查询前先查看redis服务器中是否存在服务查询条件的结果值,如果含有直接返回给action层,进行页面回显,如果没有就进行数据库查询,进行回显,并将本次的查询条件以及查询结果以hash散列的形式放入redis服务器中。本申请在数据查询记录页面中,必须要用户选择相应的库点,否则提示用户要选择库点,根据用户选择的库点对相对应的库点数据进行调用。
优选地,在步骤104:当缓存区中未存储指定单位的数据时,通过指定单位对应的数据分表调用指定单位的数据,获取指定单位的数据调用结果。本申请中,如缓存区未存储指定单位的粮情数据,通过指定单位的数据分表调用指定单位的粮情数据,通过数据分表获取指定单位的数据调用结果。
优选地,设置数据库的缓存区,数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据,还包括:利用远程字典服务redis对预定时间区间内的所有单位的数据库分表中的数据进行缓存。本申请设置数据库的缓存区,通过设置的数据库缓存区,对指定时间,如最近5天内的所有单位的数据库分表中的数据通过远程字典服务redis进行缓存。
优选地,还包括:对获取的指定单位的数据调用结果进行缓存。优选地,还包括:对获取的指定单位的数据调用结果以哈希hash散列的形式进行缓存。本申请中,对指定单位的粮情数据调用结果以哈希hash散列的形式进行缓存。
优选地,还包括:对数据库分表添加单位编码标识;当有新增加数据时,按照新增加数据的所属单位的单位编码标识,查找与所属单位对应的数据库分表,将新添加数据添加到对应的数据库分表中。
本申请通过对数据库也要进行改进,将以前的粮情记录表,分为库点编码+粮情记录表,在接口服务接到库点上传的粮情数据后,首先判断是哪个库点的数据,然后插入到相应的表记录中。
本申请通过在平台端加入redis服务器,并对调用的数据结果进行结果缓存,必须通过spring中的面向切面编程(aop)的方法,将service层中的方面进行环绕增强,进行存取缓存的操作。
本申请有效地将数据库分表技术,运用于粮情业务点,解决了数据过大造成的种种弊端。
利用数据库分表技术以及redis缓存技术,增强了系统的性能,可用性,易用性,也增加的系统的强壮性,解决了页面加载慢的问题,可以一劳永逸,增添了一个redis缓存服务器,从技术角度来讲,分布式对各个系统进行了解耦,使得系统更加灵活。
图5为根据本发明优选实施方式一种用于对大数据进行处理的系统结构图。如图5所示,本申请提供一种用于对大数据进行处理的系统,系统包括:
初始单元501,用于按预先设置的切分单位对数据库进行数据库分表处理,将数据库中的数据按预先设置的切分单位对数据库进行分表,将数据库中的数据按照切分单位分别存储于对应的数据库分表中。本申请中,由于关系型数据库本身比较容易成为系统瓶颈,此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间,数据库分布式核心内容无非就是数据切分(sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。以粮情数据为例,数据库粮情表中一年会出现73万条数据,用户在查询粮情数据时,每个数据库中的每天的数据还要进行对比,对比前一天的数据情况给出降温,升温的提示,并且要保证数据精确的数值,这样一来查询起来会非常的吃力,所以需要分表处理,分表就存在如何切分的问题,库区表中有库区所在的省,市,县的编码,
本申请的用户在查询粮库的粮情的时候,经常是查询某一个库点的粮温情况,那么我们就需要以库点为切分单位进行分表,那么这样一来一个表一年最多7300条数据,因此查询起来速度非常的快,在表中的主键需要改为日期+自增序列就可以了,不需要库点编码了,这样一来就解决了列表加载慢的情况,经过实际测试以前页面加载需要10分钟,现在需要5秒钟就可以了,图3为数据库分表示意图。
设置单元502,用于设置数据库的缓存区,数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据。本申请为了更快地处理数据的话,需要在数据库前加一个缓存服务器(redis服务器),把所有库点最近几天的数据缓存起来,进行存储,这样一来用户再次查询数据的时候,就不会从数据库中查询,就直接从缓存服务器中取得即可,那么页面的速度会提升数百倍,经过实际测试,页面的加载速度会提升到几毫秒,几乎体会不到延迟。那么需要在架构中加一个redis服务器如图4所示。
第一调用单元503,用于根据用户对指定单位的数据查询请求,判断缓存区中是否存储指定单位的数据,当缓存区中存储指定单位的数据时,直接从缓存区中调用指定单位的数据,获取指定单位的数据调用结果。本申请提供一台redis服务器,保证与监管平台和各个库点软件网络互联互通。本申请对平台的程序进行改进,在spring容器中注入切面,在查询粮情页面service层进行环绕处理,在查询前先查看redis服务器中是否存在服务查询条件的结果值,如果含有直接返回给action层,进行页面回显,如果没有就进行数据库查询,进行回显,并将本次的查询条件以及查询结果以hash散列的形式放入redis服务器中。本申请在数据查询记录页面中,必须要用户选择相应的库点,否则提示用户要选择库点,根据用户选择的库点对相对应的库点数据进行调用。
第二调用单元504,用于当缓存区中未存储指定单位的数据时,通过指定单位对应的数据分表调用指定单位的数据,获取指定单位的数据调用结果。本申请中,如缓存区未存储指定单位的粮情数据,通过指定单位的数据分表调用指定单位的粮情数据,通过数据分表获取指定单位的数据调用结果。
优选地,设置单元用于设置数据库的缓存区,数据库的缓存区用于存储预定时间区间内的所有单位的数据库分表中的数据,还用于:利用远程字典服务redis对预定时间区间内的所有单位的数据库分表中的数据进行缓存。本申请设置数据库的缓存区,通过设置的数据库缓存区,对指定时间,如最近5天内的所有单位的数据库分表中的数据通过远程字典服务redis进行缓存。
优选地,系统还包括存储单元,用于:对获取的指定单位的数据调用结果进行缓存。优选地,系统存储单元还用于:对获取的指定单位的数据调用结果以哈希hash散列的形式进行缓存。本申请中,对指定单位的粮情数据调用结果以哈希hash散列的形式进行缓存。
优选地,系统还包括:初始单元,还用于对数据库分表添加单位编码标识;更新单元,用于当有新增加数据时,按照新增加数据的所属单位的单位编码标识,查找与所属单位对应的数据库分表,将新添加数据添加到对应的数据库分表中。
本申请通过对数据库也要进行改进,将以前的粮情记录表,分为库点编码+粮情记录表,在接口服务接到库点上传的粮情数据后,首先判断是哪个库点的数据,然后插入到相应的表记录中。
已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。