CN111538730B - 一种基于哈希桶算法的数据统计的方法及其系统 - Google Patents
一种基于哈希桶算法的数据统计的方法及其系统 Download PDFInfo
- Publication number
- CN111538730B CN111538730B CN202010363148.7A CN202010363148A CN111538730B CN 111538730 B CN111538730 B CN 111538730B CN 202010363148 A CN202010363148 A CN 202010363148A CN 111538730 B CN111538730 B CN 111538730B
- Authority
- CN
- China
- Prior art keywords
- data
- input data
- module
- storage
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于哈希桶算法的数据统计的方法及其系统,所述方法为先读取到的输入数据进行哈希编码,获取一串数字,然后取数字的后3位作为键名的存在,最多可总共生成1000个键名,将数据存入此键的列表下,存入外置缓存集群,最后再统一取出,对外置缓存集群中的数据进行统计,这样能在时间和空间上取得一个良好的平衡。本发明减少大量数据出分析结果的时间。
Description
技术领域
本发明涉及计算机通讯技术领域,特别是一种基于哈希桶算法的数据统计的方法及其系统。
背景技术
目前在对数据统计的时候,经常需要做去重、不去重等处理,然而在单台机器上可能在数据量巨大时会有性能瓶颈,特别是在关系型数据库中,容易造成阻塞,数据量越大越容易造成时间上的几何上升。目前的解决方案有:1、使用从关系型数据库直接使用语句查询(会造成从关系型数据库在执行语句区间的资源占用)2、写入机器内存(可能占用大量内存)。
发明内容
为克服上述问题,本发明的目的是提供一种基于哈希桶算法的数据统计的方法,在大量数据进行统计时,减少统计的时间,且降低了CPU的资源占用。
本发明采用以下方案实现:一种基于哈希桶算法的数据统计的方法,所述方法包括如下步骤:
步骤S1、读取多个输入数据,对每个输入数据逐一进行步骤S2至步骤S4的操作;
步骤S2、将输入数据进行哈希取值获取一串数字key,然后取数字key的后3位作为键名;将输入数据的业务标识与键名进行拼接形成一编码,每个编码都对应一存储列表;设置同类数据出现次数令为N,存储列表的列表数量为M;
步骤S3、将输入数据和出现次数N存入存储列表中,当存储列表存储相同的输入数据时,同类数据出现次数N将自动+1,并统计列表数量M;
步骤S4、将存储列表内容存入外置缓存集群中;
步骤S5、遍历所有输入数据,直至所有数据处理完毕;
步骤S6、当要进行数据统计时,读取外置缓存集群,获取所有的存储列表,并对存储列表进行步骤S7至S8的操作;
步骤S7、判断存储列表是否为空,是,则不进行操作,否,则进入步骤S8;
步骤S8、判断是否进行去重操作,否,则获取存储列表中每个数据对应的出现次数N,将所有数据对应的出现次数N进行相加得到不去重总数,是,则获取存储列表中列表数量M,该M即为去重总数;
步骤S9、遍历所有的存储列表,将所有的存储列表得到的不去重总数进行相加得到不去重最终总统计数,将所有的存储列表得到的去重总数进行相加得到去重最终总统计数。
进一步的,所述编码格式为输入数据的业务标识_3位键名,即3位键名最多总共生成1000个编码,即输入数据的业务标识_000、输入数据的业务标识_001、到输入数据的业务标识_999。
本发明还提供了一种基于哈希桶算法的数据统计的系统,所述系统包括读取模块、获取编码模块、存储列表数据统计模块、缓存模块、遍历模块、读取缓存模块、判断模块、数量统计模块、以及总统计数模块;
所述读取模块,用于读取多个输入数据,通过获取编码模块、存储列表数据统计模块、缓存模块对每个输入数据进行逐一操作;
所述获取编码模块,将输入数据进行哈希取值获取一串数字key,然后取数字key的后3位作为键名;将输入数据的业务标识与键名进行拼接形成一编码,每个编码都对应一存储列表;设置同类数据出现次数令为N,存储列表的列表数量为M;
所述存储列表数据统计模块,将输入数据和出现次数N存入存储列表中,当存储列表存储相同的输入数据时,同类数据出现次数N将自动+1,并统计列表数量M;
所述缓存模块,将存储列表内容存入外置缓存集群中;
所述遍历模块,用于遍历所有输入数据,直至所有数据处理完毕;
所述读取缓存模块,要进行数据统计时,读取外置缓存集群,获取所有的存储列表,并通过判断模块、数量统计模块对存储列表进行操作;
所述判断模块,用于判断存储列表是否为空,是,则不进行操作,否,则进行数量统计模块操作;
所述数量统计模块,用于判断是否进行去重操作,否,则获取存储列表中每个数据对应的出现次数N,将所有数据对应的出现次数N进行相加得到不去重总数,是,则获取存储列表中列表数量M,该M即为去重总数;
所述总统计数模块,用于遍历所有的存储列表,将所有的存储列表得到的不去重总数进行相加得到不去重最终总统计数,将所有的存储列表得到的去重总数进行相加得到去重最终总统计数。
进一步的,所述编码格式为输入数据的业务标识_3位键名,即3位键名最多总共生成1000个编码,即输入数据的业务标识_000、输入数据的业务标识_001、到输入数据的业务标识_999。
本发明的有益效果在于:1、分散分析,减少资源集中占用。 2、减少大量数据出分析结果的时间。
附图说明
图1是本发明的方法流程示意图。
图2是本发明系统原理框图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种基于哈希桶算法的数据统计的方法,所述方法包括如下步骤:
步骤S1、读取多个输入数据,对每个输入数据逐一进行步骤S2至步骤S4的操作;
步骤S2、将输入数据进行哈希取值获取一串数字key,然后取数字key的后3位作为键名;将输入数据的业务标识与键名进行拼接形成一编码temp_xxx,每个编码都对应一存储列表;设置同类数据出现次数令为N,存储列表的列表数量为M;
步骤S3、将输入数据和出现次数N存入存储列表中,当存储列表存储相同的输入数据时,同类数据出现次数N将自动+1,并统计列表数量M;
步骤S4、将存储列表内容存入外置缓存集群中;外置缓存集群:举例为redis,之所以设置不同的键名可以在集群中分散存储,不会造成单一存储过载。
步骤S5、遍历所有输入数据,直至所有数据处理完毕;
步骤S6、当要进行数据统计时,读取外置缓存集群,获取所有的存储列表,并对存储列表进行步骤S7至S8的操作;
步骤S7、判断存储列表是否为空,是,则不进行操作,否,则进入步骤S8;
步骤S8、判断是否进行去重操作,否,则获取存储列表中每个数据对应的出现次数N,将所有数据对应的出现次数N进行相加得到不去重总数,是,则获取存储列表中列表数量M,该M即为去重总数;
步骤S9、遍历所有的存储列表,将所有的存储列表得到的不去重总数进行相加得到不去重最终总统计数,将所有的存储列表得到的去重总数进行相加得到去重最终总统计数。
所述编码格式为输入数据的业务标识_3位键名,即3位键名最多总共生成1000个编码,即输入数据的业务标识_000、输入数据的业务标识_001、到输入数据的业务标识_999;即每种数据类型都对应有一业务标识。其中,最终存储的结果能放在数据库,记事本都可以,最后得出的统计结果(不去重最终总统计数和去重最终总统计数)只需放在任意一个载体就行。后期统计结果的统计数据,可以用于视图展现数据库的内容,或者进行数据过滤操作等等。
下面结合一具体实施例对本发明作进一步说明:
步骤一:取出第一笔数据150xxxx1112,这个手机哈希后的数字key后3位为015。然后取数字key的后3位作为键名;将输入数据的业务标识与键名进行拼接形成一编码即mobilebusiness_015(即temp_xxx),每个编码都对应一存储列表;则把这个手机号放到编码mobilebusiness_015对应的存储列表中(如表1)。
步骤二:取出一笔新数据,如139xxxx1123这个手机哈希后的数字key后3位也为015。则把这个手机也放到编码mobilebusiness_015对应的存储列表(即表1)中;mobilebusiness即为手机数据的业务标识。
这个时候编码mobilebusiness_015对应的存储列表表1里的列表数量为2,即表1:
表1
步骤三: 取出一笔新数据,如150xxxx1112这个手机哈希后的数字key后3位为015。则把这个手机放到mobilebusiness_015对应的存储列表表2中,发现已存在这个手机。
这个时候mobilebusiness_015对应的存储列表表2里的列表数量还是为2,即表2:
表2
步骤四:依次取出把数据处理完。
步骤五:(假设只有mobilebusiness_015和mobilebusiness_016有数据)
获取mobilebusiness_000对应的存储列表到mobilebusiness_999对应的存储列表。
发现mobilebusiness_000对应的存储列表为空,跳过。
...
发现mobilebusiness_015对应的存储列表有数据。
则去重总数=列表数量(即列表数量M)=2
不去重总数=(150xxxx1112出现次数)+(139xxxx1123出现字数)=2+1=3
如果mobilebusiness_016对应的存储列表:
发现mobilebusiness_016对应的存储列表有数据。
则去重总数= 列表数量=1
不去重总数= (150xxxx1199出现次数)=5
...
直接统计到mobilebusiness_999为止;
去重最终总统计数=mobilebusiness_015对应的去重总数+mobilebusiness_016对应的去重总数=2+1=3
不去重最终总统计数=mobilebusiness_015对应的不去重总数+mobilebusiness_016对应的不去重总数=3+5=8;从而得到统计的数据。
如图2所示,本发明还提供了一种基于哈希桶算法的数据统计的系统,所述系统包括读取模块、获取编码模块、存储列表数据统计模块、缓存模块、遍历模块、读取缓存模块、判断模块、数量统计模块、以及总统计数模块;
所述读取模块,用于读取多个输入数据,通过获取编码模块、存储列表数据统计模块、缓存模块对每个输入数据进行逐一操作;
所述获取编码模块,将输入数据进行哈希取值获取一串数字key,然后取数字key的后3位作为键名;将输入数据的业务标识与键名进行拼接形成一编码,每个编码都对应一存储列表;设置同类数据出现次数令为N,存储列表的列表数量为M;
所述存储列表数据统计模块,将输入数据和出现次数N存入存储列表中,当存储列表存储相同的输入数据时,同类数据出现次数N将自动+1,并统计列表数量M;
所述缓存模块,将存储列表内容存入外置缓存集群中;
所述遍历模块,用于遍历所有输入数据,直至所有数据处理完毕;
所述读取缓存模块,要进行数据统计时,读取外置缓存集群,获取所有的存储列表,并通过判断模块、数量统计模块对存储列表进行操作;
所述判断模块,用于判断存储列表是否为空,是,则不进行操作,否,则进行数量统计模块操作;
所述数量统计模块,用于判断是否进行去重操作,否,则获取存储列表中每个数据对应的出现次数N,将所有数据对应的出现次数N进行相加得到不去重总数,是,则获取存储列表中列表数量M,该M即为去重总数;
所述总统计数模块,用于遍历所有的存储列表,将所有的存储列表得到的不去重总数进行相加得到不去重最终总统计数,将所有的存储列表得到的去重总数进行相加得到去重最终总统计数。
进一步的,所述编码格式为输入数据的业务标识_3位键名,即3位键名最多总共生成1000个编码,即输入数据的业务标识_000、输入数据的业务标识_001、到输入数据的业务标识_999。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (4)
1.一种基于哈希桶算法的数据统计的方法,其特征在于:所述方法包括如下步骤:
步骤S1、读取多个输入数据,对每个输入数据逐一进行步骤S2至步骤S4的操作;
步骤S2、将输入数据进行哈希取值获取一串数字key,然后取数字key的后3位作为键名;将输入数据的业务标识与键名进行拼接形成一编码,每个编码都对应一存储列表;设置同类数据出现次数令为N,存储列表的列表数量为M;
步骤S3、将输入数据和出现次数N存入存储列表中,当存储列表存储相同的输入数据时,同类数据出现次数N将自动+1,并统计列表数量M;
步骤S4、将存储列表内容存入外置缓存集群中;
步骤S5、遍历所有输入数据,直至所有数据处理完毕;
步骤S6、当要进行数据统计时,读取外置缓存集群,获取所有的存储列表,并对存储列表进行步骤S7至S8的操作;
步骤S7、判断存储列表是否为空,是,则不进行操作,否,则进入步骤S8;
步骤S8、判断是否进行去重操作,否,则获取存储列表中每个数据对应的出现次数N,将所有数据对应的出现次数N进行相加得到不去重总数,是,则获取存储列表中列表数量M,该M即为去重总数;
步骤S9、遍历所有的存储列表,将所有的存储列表得到的不去重总数进行相加得到不去重最终总统计数,将所有的存储列表得到的去重总数进行相加得到去重最终总统计数。
2.根据权利要求1所述的一种基于哈希桶算法的数据统计的方法,其特征在于:所述编码的格式为输入数据的业务标识_3位键名,即3位键名最多总共生成1000个编码,即输入数据的业务标识_000、输入数据的业务标识_001、到输入数据的业务标识_999。
3.一种基于哈希桶算法的数据统计的系统,其特征在于:所述系统包括读取模块、获取编码模块、存储列表数据统计模块、缓存模块、遍历模块、读取缓存模块、判断模块、数量统计模块、以及总统计数模块;
所述读取模块,用于读取多个输入数据,通过获取编码模块、存储列表数据统计模块、缓存模块对每个输入数据进行逐一操作;
所述获取编码模块,将输入数据进行哈希取值获取一串数字key,然后取数字key的后3位作为键名;将输入数据的业务标识与键名进行拼接形成一编码,每个编码都对应一存储列表;设置同类数据出现次数令为N,存储列表的列表数量为M;
所述存储列表数据统计模块,将输入数据和出现次数N存入存储列表中,当存储列表存储相同的输入数据时,同类数据出现次数N将自动+1,并统计列表数量M;
所述缓存模块,将存储列表内容存入外置缓存集群中;
所述遍历模块,用于遍历所有输入数据,直至所有数据处理完毕;
所述读取缓存模块,要进行数据统计时,读取外置缓存集群,获取所有的存储列表,并通过判断模块、数量统计模块对存储列表进行操作;
所述判断模块,用于判断存储列表是否为空,是,则不进行操作,否,则进行数量统计模块操作;
所述数量统计模块,用于判断是否进行去重操作,否,则获取存储列表中每个数据对应的出现次数N,将所有数据对应的出现次数N进行相加得到不去重总数,是,则获取存储列表中列表数量M,该M即为去重总数;
所述总统计数模块,用于遍历所有的存储列表,将所有的存储列表得到的不去重总数进行相加得到不去重最终总统计数,将所有的存储列表得到的去重总数进行相加得到去重最终总统计数。
4.根据权利要求3所述的一种基于哈希桶算法的数据统计的系统,其特征在于:所述编码的 格式为输入数据的业务标识_3位键名,即3位键名最多总共生成1000个编码,即输入数据的业务标识_000、输入数据的业务标识_001、到输入数据的业务标识_999。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010363148.7A CN111538730B (zh) | 2020-04-30 | 2020-04-30 | 一种基于哈希桶算法的数据统计的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010363148.7A CN111538730B (zh) | 2020-04-30 | 2020-04-30 | 一种基于哈希桶算法的数据统计的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538730A CN111538730A (zh) | 2020-08-14 |
CN111538730B true CN111538730B (zh) | 2022-06-14 |
Family
ID=71973406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010363148.7A Active CN111538730B (zh) | 2020-04-30 | 2020-04-30 | 一种基于哈希桶算法的数据统计的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538730B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672619B (zh) * | 2021-08-17 | 2024-02-06 | 天津南大通用数据技术股份有限公司 | 一种按照hash规则切分数据使其更均匀的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298687A (zh) * | 2013-07-18 | 2015-01-21 | 阿里巴巴集团控股有限公司 | 一种哈希分区管理方法及装置 |
CN110309143A (zh) * | 2018-03-21 | 2019-10-08 | 华为技术有限公司 | 数据相似度确定方法、装置及处理设备 |
CN110471943A (zh) * | 2018-05-09 | 2019-11-19 | 北京京东尚科信息技术有限公司 | 实时数据统计装置和方法以及计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529849B2 (en) * | 2013-12-31 | 2016-12-27 | Sybase, Inc. | Online hash based optimizer statistics gathering in a database |
-
2020
- 2020-04-30 CN CN202010363148.7A patent/CN111538730B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298687A (zh) * | 2013-07-18 | 2015-01-21 | 阿里巴巴集团控股有限公司 | 一种哈希分区管理方法及装置 |
CN110309143A (zh) * | 2018-03-21 | 2019-10-08 | 华为技术有限公司 | 数据相似度确定方法、装置及处理设备 |
CN110471943A (zh) * | 2018-05-09 | 2019-11-19 | 北京京东尚科信息技术有限公司 | 实时数据统计装置和方法以及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
基于p-stable LSH的多点地质统计建模算法;喻思羽,李少华,王端平,王军,张以根,于金彪;《石油学报》;20171231;第38卷(第12期);第1425-1433页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111538730A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11238098B2 (en) | Heterogenous key-value sets in tree database | |
US8312026B2 (en) | Compressing massive relational data | |
US11036685B2 (en) | System and method for compressing data in a database | |
KR20090075885A (ko) | 개별적으로 액세스 가능한 데이터 유닛의 기억 관리 방법 및 시스템 | |
CN104486777B (zh) | 一种实现数据处理的方法及装置 | |
US9323798B2 (en) | Storing a key value to a deleted row based on key range density | |
CN111274454B (zh) | 时空数据的处理方法、装置、电子设备和存储介质 | |
CN109815238A (zh) | 用严格平衡二叉树实现数据库的动态添加方法及装置 | |
CN111538730B (zh) | 一种基于哈希桶算法的数据统计的方法及其系统 | |
CN111625561A (zh) | 一种数据查询方法及装置 | |
WO2024149207A1 (zh) | 数据处理方法和装置、介质和计算机设备 | |
CN112182021B (zh) | 一种用户数据查询方法、装置和系统 | |
CN107122412A (zh) | 一种海量电话号码快速匹配检索方法 | |
CN111190896A (zh) | 数据处理方法、装置、存储介质和计算机设备 | |
CN110569243A (zh) | 一种数据查询方法、数据查询插件和数据查询服务器 | |
CN113138985B (zh) | 一种gps数据解析方法及系统 | |
WO2009001174A1 (en) | System and method for data compression and storage allowing fast retrieval | |
CN114595215A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111611056A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN107688567B (zh) | 一种索引存储方法及相关装置 | |
CN116708480B (zh) | 一种基于Datax框架的数据同步方法 | |
CN117194355B (zh) | 基于数据库的数据处理方法、装置和电子设备 | |
CN112732662B (zh) | 一种NiFi同步数据量统计方法 | |
US20240061823A1 (en) | Memory-frugal index design in storage engine | |
CN111221816B (zh) | 基于位图汇总模型的原子指标存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |