一种大数据的分表数据展示方法与流程

专利查询4月前  38



1.本发明涉及大数据技术领域,尤其涉及一种大数据的分表数据展示方法。


背景技术:

2.在质量平台这种需要对大量数据进行分析的平台,大数据量或者超大数据量是很正常的现象。但是,当一个数据表的数据量达到上千万甚至几千万后,会出现两个问题。一个是查询速度慢导致的页面展示数据非常慢,甚至于数据库加了索引都无济于事;二是更严重的问题,数据量大了直接撑爆了单表,导致系统直接瘫痪。前者还可以用加缓存的办法来解决,但是表被撑爆的问题却不能用一般的方法来解决。目前在技术领域通常有两种办法来处理表的问题,一是会直接购买价格更昂贵的大数据处理系统来避开这些难题,但是,直接上大数据处理系统工具,一是系统价格高,很多的公司无法承受这样的价格,二是本身大数据处理需要进行技术的学习,学习成本也高。第二种办法,是直接先将数据库分表,即同时建立多个一模一样的表,按照创建时间或者创建公司来对表进行后缀命名,然后将数据按照创建时间或者创建公司来区分,分别存储到各个表,解决了数据的存储问题,再利用缓存来解决数据处理慢的问题。但是,在分表后,数据的衔接问题就很重要,比如当某页按照查询条件,需要将第一个表的最后3条数据和第二张表的第2到第5条数据和第四张表的第3条到第5条数据组合展示成10条数据展示给用户时,实时计算需要的数据的位置、剩余数据不够后计算需要续上的数据量和数据的位置,并实时实现切换表并查询表就成了难题,目前在技术领域还没找到相应的解决办法。


技术实现要素:

3.本发明的目的就在于为了解决上述问题而提供一种大数据的分表数据展示方法,本发明采用数据点位标记的原理加上缓存机制,解决大数据量分表存储后正确展示数据的问题,从而解决本在分表后出现多数据源,如何正确的按照查询条件查询各个表需要的数据并组合展示的问题。
4.本发明通过以下技术方案来实现上述目的:
5.一种大数据的分表数据展示方法,包括以下步骤:
6.首先为了解决数据量大了直接撑爆了单表的问题,先将数据进行分表存储,为了分表存储数据,要针对表的类型进行分类,如公司a、公司b、公司c的数据量最大,其他的公司的数据量加起来才抵得上一个公司的数据量,这种情况下,就先按公司名进行分类,就分成4个表,分别存a、b、c和其他公司的数据。如果各个子公司的数据量都很小,但是总的来看每个月的所有公司的总数据量很大,就可以按月份进行分类,将数据以月份进行区分,分别建立月份数据表,依次导入数据。
7.其次,将实现数据的点位标记,就是在数据进入表后,将数据的分段条件(如创建时间、数据类型、所属公司)和位置进行点位标记处理,依次对分出去的每个表进行操作,将表内的数据按分段条件进行分段,并对这些分成多段的数据段进行段命名,然后遍历每一
个表的每一个段,依次拿到段的首尾数据的点位,将再按照表名加上段数据名再加上首尾数据点位组合在一起,组合成多个缓存数据,将所有的缓存数据依次存到缓存中。
8.最后,查询的部分,当遇到某类查询条件组合(公司集合、创建时间开始时间、创建时间结束时间、数据类型集合)时,首先按照查询条件组合的要求,在缓存里对数据进行全点位搜索,比如将公司集合加上创建时间开始时间加上数据类型作为起始条件,将公司集合加上创建时间结束时间加上数据类型作为结束条件,去缓存里获取到起始点位到结束点位的段,段的个数可能是0个,可能是1个,可能是多个,这个是根据查询条件组合出来的结果。如果是0个,直接返回空数据串给前端展示。如果是大于0个的段,根据分页的要求获取需要的数据的所有的点位,即将查询出的所有的段内的缓存数据按照页面大小(pagesize)重新进行组合,段内点位数据总数除以pagesize的值再向上取整得到总页数,建立总页数个数的页对象,每个页对象里面设置pagesize个位置,将点位数据按顺序排到各个页对象里面,再按照页数(pagenumber)得到对应页的所有点位数据,再算出本次需要的真实数据在各个表里面的点位分布,最后在数据库表里集中根据点位分别同时去各个表拿数据,在集中数据合并进行展示。
9.本发明的有益效果在于:
10.本发明的一种大数据的分表数据展示方法,在实现快速展示时不是去缓存数据,而是只缓存数据的点位和分段信息,通过点位和分段信息去查询数据所在位置,在能正确查询出数据并展示的同时,不会造成缓存数据冗余和缓存量庞大,实现了系统的优化。在不对数据本身进行缓存的情况下,实现对大数据量的问题进行正确展示,即实现了大数据的低成本存储,又实现了在小缓存的情况下数据能正确展示。
附图说明
11.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要实用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
12.图1为本发明流程图。
具体实施方式
13.为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
14.在任一实施例中,如图1所示,本发明的一种大数据的分表数据展示方法,包括:
15.1、按照数据所属的时间或者公司,将数据分别存储在各个分表里面;(如总数据量4000万条数据,其中公司a、公司b、公司c的数据量最大,其他的公司的数据量加起来才抵得上一个公司的数据量,就分成4个表,分别存a、b、c和其他公司的数据,分别对表进行命名data_company_a,data_company_b,data_company_c,data_company_other);
16.各个表按照数据的另一种分类方式(如表按公司分,那表内数据就按时间分,反之
亦然),分别记下各个段(此例子为时间段)数据的起始点位(如a-20210101-1-13243,a-20210102-13244-27643,b-20210101-1-13,b-20210102-14-22,other-20210101-1-124,other-20210102-125-227等,a表示a公司表,中间时间是段的时间,后续的第一个数字是段数据在当前表的起始的id位置,最后的数字是段数据在当前表的结束的id位置),将数据点位存到缓存;
17.数据查询时:
18.根据查询条件首先将数据初步定位在哪些表;(如查询条件有查b公司和d公司数据,遍历表名,获取到数据在data_company_b,由于没有以d公司结尾的表,所以d公司数据在data_company_other里);
19.根据查询条件任何将数据定位在哪些段:(如查询条件是20210101到20210102的数据,根据上一步的结果,将b和other开头的20210101和20210102的点位数据从缓存里获取,按查询条件依次排列);
20.根据查询条件的pagenum和pagesize计算出需要展示的数据的点位(如pagenum是3,pagesize是10,也就是取第三页的10个数据,前面需要过掉(3-1)*10=20条数据,首先从b开头的点位数据为b-20210101-1-13,b-20210102-14-22,从点位分析是从b-20210101-1-13算这里的数据量是不够到需要过滤的20的,然后就对下一个点位数据b-20210102-14-22分析,分析结果是数据超过了需要过滤的20条数据(22-20>0),但是不到需要的10条数据(22-20<10),即从第21条位置开始,到22条结束,共可以获取2条数据,还需要补上8条数据,就对获取的other开头的点位数据分析,other-20210101-1-124点位里超过8条满足条件(124-0>8),即需要从第1条位置开始,到第8条结束);
21.根据上一步计算的点位,同时去各个表里按照位置获取数据;(去data_company_b表获取id为21和22的数据,去data_company_other获取id为1到8的数据);
22.将数据合并成统一格式,并按用户需要的数据格式展示给用户;在不对数据本身进行缓存的情况下,实现对大数据量的问题进行正确展示,即实现了大数据的低成本存储,又实现了在小缓存的情况下数据能正确展示。
23.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

技术特征:
1.一种大数据的分表数据展示方法,其特征在于,包括以下步骤:步骤1,将数据进行分表存储,并针对表的类型进行分类,分别建立数据表,依次导入数据;步骤2,根据数据的分段条件和位置进行点位标记处理,依次对分出去的每个表进行操作,将表内的数据按分段条件进行分段,并对这些分成多段的数据段进行段命名,然后遍历每一个表的每一个段,依次拿到段的首尾数据的点位,将再按照表名加上段数据名再加上首尾数据点位组合在一起,组合成多个缓存数据,将所有的缓存数据依次存到缓存中;步骤3,当遇到某类查询条件组合时,按照查询条件组合的要求,在缓存里对数据进行全点位搜索,在缓存里获取到起始点位到结束点位的段,段的个数可能是0个、1个或多个,如果是0个,直接返回空数据串给前端展示;如果是大于0个的段,根据分页的要求获取需要的数据的所有的点位,即将查询出的所有的段内的缓存数据按照页面大小重新进行组合,段内点位数据总数除以pagesize的值再向上取整得到总页数,建立总页数个数的页对象,每个页对象里面设置pagesize个位置,将点位数据按顺序排到各个页对象里面,再按照页数得到对应页的所有点位数据,算出本次需要的真实数据在各个表里面的点位分布,最后在数据库表里集中根据点位分别同时去各个表拿数据,在集中数据合并进行展示。2.如权利要求1所述的一种大数据的分表数据展示方法,其特征在于,所述步骤1中,分表存储按公司名进行分类或按月份进行分类,分别建立数据表,依次导入数据。3.如权利要求1所述的一种大数据的分表数据展示方法,其特征在于,所述步骤2中,查询条件组合包括公司集合、创建时间开始时间、创建时间结束时间、数据类型集合。

技术总结
本发明公开了一种大数据的分表数据展示方法,在实现快速展示时不是去缓存数据,而是只缓存数据的点位和分段信息,通过点位和分段信息去查询数据所在位置,在能正确查询出数据并展示的同时,不会造成缓存数据冗余和缓存量庞大,实现了系统的优化。实现了系统的优化。实现了系统的优化。


技术研发人员:马越
受保护的技术使用者:四川启睿克科技有限公司
技术研发日:2021.12.03
技术公布日:2022/3/8

最新回复(0)