CN113672619B - 一种按照hash规则切分数据使其更均匀的方法 - Google Patents

一种按照hash规则切分数据使其更均匀的方法 Download PDF

Info

Publication number
CN113672619B
CN113672619B CN202110942746.4A CN202110942746A CN113672619B CN 113672619 B CN113672619 B CN 113672619B CN 202110942746 A CN202110942746 A CN 202110942746A CN 113672619 B CN113672619 B CN 113672619B
Authority
CN
China
Prior art keywords
data
hash
sampling
topn
counted
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
Application number
CN202110942746.4A
Other languages
English (en)
Other versions
CN113672619A (zh
Inventor
赵伟
李南锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Nankai University General Data Technologies Co ltd
Original Assignee
Tianjin Nankai University General Data Technologies Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Nankai University General Data Technologies Co ltd filed Critical Tianjin Nankai University General Data Technologies Co ltd
Priority to CN202110942746.4A priority Critical patent/CN113672619B/zh
Publication of CN113672619A publication Critical patent/CN113672619A/zh
Application granted granted Critical
Publication of CN113672619B publication Critical patent/CN113672619B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Fuzzy Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种按照hash规则切分数据使其更均匀的方法,首先根据设置的内存大小去计算出hash桶的数量,然后将待切分的数据集合进行采样,在采样过程中,记录下相同数据出现的次数,然后把记录下来的数据和数据的出现次数按照出现次数进行排序,将顶端的数据进行记录形成topN数据信息,然后在进行单独划分形成独立的hash数据块。本发明所述的一种按照hash规则切分数据使其更均匀的方法,各数据块切分得更均匀可以使得多个线程可以在同一时间完成工作,避免单个线程由于划分的数据量巨大使得处理时间过长的问题。

Description

一种按照hash规则切分数据使其更均匀的方法
技术领域
本发明属于数据库领域,尤其是涉及一种按照hash规则切分数据使其更均匀的方法。
背景技术
数据库的join操作是指查询过程中将两个表进行关联,形成一个迪卡尔积的两个表的行的集合,通常再加上where条件来过滤掉不需要的行,来获得真正所需要的两个表的行的组合。
在进行两表的关联查询时,通常会指定两表的连接条件,很多情况下为两表相关列的一个等值条件,例如select*from t1,t2 where t1.a=t2.a,在数据库内核中进行处理时,是通过多线程并行计算处理的,在启动多线程处理之前,需要将两个表的数据进行切分,使得相同数值的数据可以落到同一线程中处理,这个过程通常采用hash算法来进行切分,使相同hash值的数据放入同一个数据块。
但这样带来的问题是,某些hash值相同的数据过于庞大,可能存在切分出来的数据块不均匀,使得线程在计算处理这些数据块时就要比别的线程耗费较多的时间,***整体的效率则因为这个线程而受到影响,形成木桶效应,因此更均匀的数据划分则会提高***效率。
另外hash桶数量的设置也影响着***的效率,如果hash桶数量过小,那内存不能装入所有数据,则会反复从磁盘读取数据,因此这里对hash桶的数量进行了评估运算,通过内存大小和数据信息去预估hash桶的数量。
发明内容
有鉴于此,本发明旨在提出一种按照hash规则切分数据使其更均匀的方法,以解决单个线程由于划分的数据量巨大使得处理时间过长的问题。
为达到上述目的,本发明的技术方案是这样实现的:
一种按照hash规则切分数据使其更均匀的方法,包括以下步骤:
S1、对待划分数据进行采样,采样过程中记录下相同的待划分数据出现的次数;
S2、对采样后的数据按照出现次数进行排序,形成topN数据信息;
S3、结合配置内存大小和数据数量进行hash桶数量评估;
S4、根据hash桶数量及topN数据信息通过哈希算法切分为数据块文件,统计每个数据块文件中数据的平均数据条数;
S5、根据设定的条件,判断每个数据块文件中数据集的平均数据条数是否符合要求,若符合要求则重复步骤S2-S4,否则完成切分。
进一步的,步骤S1中采样时按比例进行采样,采样过程具体包括以下步骤:
第一步,确定采样条数:根据数据总量,取数据总量的10%作为要采样的总条数;
第二步,计算采样点:将总数据条数按照100份进行分配,选取每一份数据条数为起始位置,作为采样的起始点;
第三步,计算每个采样点的需采样的数据条数:将计算出来的采样数据条数除以100,得到每个采样点需要采样的数据条数。
进一步的,步骤S3中进行hash桶数量评估通过以下评估公式得到:
hash桶数量=(总数据条数*(1-数据重复率))/内存中能装下的数据条数。
进一步的,步骤S4中哈希算法切分为数据块文件的过程如下:
从topN数据中取出一条数据,通过哈希算法计算数据的hash值,使用crc32算法得到一个整数值;把整数值除以hash桶数量,得到桶的编号,根据桶的编号,把数据放入对应的桶中。
进一步的,步骤S5中设定的条件为:超出平均数据条数倍数的数据。
相对于现有技术,本发明所述的一种按照hash规则切分数据使其更均匀的方法具有以下有益效果:
(1)本发明所述的一种按照hash规则切分数据使其更均匀的方法,各数据块切分得更均匀可以使得多个线程可以在同一时间完成工作,避免单个线程由于划分的数据量巨大使得处理时间过长的问题。
(2)本发明所述的一种按照hash规则切分数据使其更均匀的方法,根据内存大小去确定hash桶使得数据可以被完全装入内存,这样避免在运算过程中由于内存不足原因产生的多趟处理,也能节省很多时间。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的一种按照hash规则切分数据使其更均匀的方法流程示意图;
图2为本发明实施例所述的一种按照hash规则切分数据使其更均匀的方法的运算示意图;
图3为本发明实施例所述的切分数据过程示意图;
图4为本发明实施例所述的一种按照hash规则切分数据使其更均匀的方法通用的数据处理流程图;
图5为本发明实施例所述的哈希算法切分为数据块文件的流程示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
下面将参考附图并结合实施例来详细说明本发明。
如图1至图5所示,一种按照hash规则切分数据使其更均匀的方法,通过对待切分的数据进行采样,得到出现次数最多的topN的数据信息,在进行hash切分时,将数据同topN中的信息进行对比,如果数据出现在topN中,则直接将这些数据形成单独的数据块,不再进行hash运算划分;
在划分完成的数据块中,统计数据块的平均行数,将大于平均行数一定倍数的数据块,继续进行数据信息分析,找出其中出现最多的数据信息,并补充到之前的topN的数据信息中,这一步可以使得topN的数据统计更加精准,在下一次对相同的数据进行切分时,则可以直接使用这些topN信息。
如图1至图4所示,具体方法包括以下步骤:
S1、对待划分数据进行采样,采样过程中记录下相同的待划分数据出现的次数;
S2、对采样后的数据按照出现次数进行排序,形成topN数据信息;
S3、结合配置内存大小和数据数量进行hash桶数量评估;
S4、根据hash桶数量及topN数据信息通过哈希算法切分为数据块文件,统计每个数据块文件中数据的平均数据条数;
S5、根据设定的条件,判断每个数据块文件中数据集的平均数据条数是否符合要求,若符合要求则重复步骤S2-S4,否则完成切分。
步骤S1中采样时按比例进行采样,采样过程具体包括以下步骤:
第一步,确定采样条数:根据数据总量,取数据总量的10%作为要采样的总条数;
计算采样点:将总数据条数按照100份进行分配,选取每一份数据条数为起始位置,作为采样的起始点;
计算每个采样点的需采样的数据条数:将计算出来的采样数据条数除以100,得到每个采样点需要采样的数据条数。
步骤S1中采样过程中记录下相同数据出现的次数,在这里,使用数据结构中的map容器,将map的key设定为数据记录,value设置为出现次数,在处理每一条数据的时候,先对容器进行查找,如果发现相同的key,则对value中的出现次数进行累加即可,如果没有发现,则将此key作为新的元素,***到map中,value同时设置为1。
步骤S3中进行hash桶数量评估通过以下评估公式得到:
hash桶数量=(总数据条数*(1-数据重复率))/内存中能装下的数据条数。
如图5所示,步骤S4中哈希算法切分为数据块文件的过程如下:
从topN数据中取出一条数据,通过哈希算法计算数据的hash值,使用crc32算法得到一个整数值;把整数值除以hash桶数量,得到桶的编号,根据桶的编号,把数据放入对应的桶中。
步骤S5中设定的条件为:超出平均数据条数倍数的数据;
将大于平均数据条数一定比例的数据进行分析,例如超出平均数据条数10倍的数据块,对数据块具体的分析方法如同步骤S2,S3,S4中的处理方法类似,分析后也会得到这些较大数据块的topN信息,并将数据信息进一步地完善到整体的topN数据信息中,这样大数据块中的出现较多的数据在下一次切分的时候,将会被独立划分,从而减少本数据块中的数据。
如果下次对同样的数据进行hash切分,则使用历史topN数据信息即可,数据信息的再利用节省了时间开销。
本专利中按照hash规则切分数据使其更均匀的方法,首先根据设置的内存大小去计算出hash桶的数量,这一步的目的是尽量使得hash算法(哈希算法)切分后落到每个hash桶的数据都能够完全装入内存,然后将待切分的数据集合进行采样,在采样过程中,记录下相同数据出现的次数,然后把记录下来的数据和数据的出现次数按照出现次数进行排序,通过排序可以找到出现得较多的一些数据,将顶端的数据进行记录形成topN数据信息,然后在进行切分的过程中,如果出现的数据在统计出来的topN数据信息中,则直接将这些数据进行单独划分形成独立的hash数据块,不再计算其hash值,这样就能够避免某些具有相同hash值的不同数据数据分布到同一个hash数据块中,最终使得出现次数较多的数据,被单独切分到一块单独的数据块中,使得hash切分更均匀。此外在切分的数据块结果中,计算出数据块的平均数据条数,将大于平均数据条数一定比例的数据块,再进行一次信息统计和切分,通过这一步,在实际切分出来的大数据块中去进行分析,可以使得数据的信息统计更准确,最后这些信息完善到topN数据记录中,待下一次对相同的数据进行切分时,可以直接使用,而不用再次去采样和计算相关数据信息。
具体实施例如下:
本专利以t1(a int,b varchar(20)),t2(a int,c varchar(20),select t1.a,b,cfrom t1,t2 where t1.a=t2.a为例说明;
varchar()函数为转换类型函数,int为整型函数,Select代表数据库中发起查询,后面跟着要投影的表名,列名,from后面表示要查询的表,where代表一些条件约束,这个语句的含义是从将表t1和t2进行关联,查询满足t1.a=t2.a的a,b,c列值。
1.进行hash桶数量评估,按照t1表进行,数据条数100000,内存中能装下10000,数据重复率5%,则
Hash桶数量=100000*(1-0.05)/10000
2.进行数据采样
对t1和t2表按照hash列,也就是表的a列进行数据采样,统计出出现次数较多的数据。
数据 出现次数
5 10000
2 30000
8 20000
3.对统计数据按照出现次数排序,取前面最多的N个。
数据 出现次数
2 30000
8 20000
5 10000
4.进行数据切分时,查看数据是否出现在统计数据中。
将出现在统计数据中的值进行单独切分,不再进行hash运算,形成单值数据块;
也就是当查看到数据为2,8,5这几个数据时,将每一个数据都对应划分为独立的数据块;
未出现在统计数据中的值进行hash算运,划分到对应的hash桶中去,形成hash数据块;
例如其余数据值为9,7,6的数据,则进行hash运算,得到hash值,再落到相应的hash桶中去。
5.待切分完成后,统计hash数据块平均行数,例如总数据条数为100000,hash桶为20个,则平均行数为5000。
6.将大于平均行数一定倍数的数据块再次进行统计,例如某个hash桶数据条数为50000,大于平均行数10倍,将选定它进行再次统计,统计方法按照2 3中的方式进行,得到大数据块的topN。
7.对统计数据进行完善,将大数据块的topN和整体的topN合并形成新的整体统计数据记录,以便再次利用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种按照hash规则切分数据使其更均匀的方法,其特征在于包括以下步骤:
S1、根据以下公式进行hash桶数量评估;
hash桶数量=(总数据条数×(1-数据重复率))/内存中能装下的数据条数;
S2、进行数据采样,统计出数据出现次数,对统计数据按照出现次数排序,取前面最多的N个作为topN数据;
S3、进行数据切分时,查看数据是否出现在统计出来的topN数据中:
将出现在统计出来的topN数据中的值进行单独切分,不再进行hash运算,形成单值数据块;
未出现在统计出来的topN数据中的值进行hash运算,划分到对应的hash桶中去,形成hash数据块;
S4、待切分完成后,统计hash数据块平均行数;
S5、将大于平均行数10倍的数据块再次按照S2、S3的方法进行统计;
S6、将大数据块的topN和整体的topN合并形成新的整体统计数据记录。
2.根据权利要求1所述的一种按照hash规则切分数据使其更均匀的方法,其特征在于,步骤S1中采样时按比例进行采样,采样过程具体包括以下步骤:
第一步,确定采样条数:根据数据总量,取数据总量的10%作为要采样的总条数;
第二步,计算采样点:将总数据条数按照100份进行分配,选取每一份数据条数为起始位置,作为采样的起始点;
第三步,计算每个采样点的需采样的数据条数:将计算出来的采样数据条数除以100,得到每个采样点需要采样的数据条数。
CN202110942746.4A 2021-08-17 2021-08-17 一种按照hash规则切分数据使其更均匀的方法 Active CN113672619B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110942746.4A CN113672619B (zh) 2021-08-17 2021-08-17 一种按照hash规则切分数据使其更均匀的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110942746.4A CN113672619B (zh) 2021-08-17 2021-08-17 一种按照hash规则切分数据使其更均匀的方法

Publications (2)

Publication Number Publication Date
CN113672619A CN113672619A (zh) 2021-11-19
CN113672619B true CN113672619B (zh) 2024-02-06

Family

ID=78543252

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110942746.4A Active CN113672619B (zh) 2021-08-17 2021-08-17 一种按照hash规则切分数据使其更均匀的方法

Country Status (1)

Country Link
CN (1) CN113672619B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292373B (zh) * 2022-10-09 2023-01-24 天津南大通用数据技术股份有限公司 一种切分数据块的方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609487A (zh) * 2012-01-20 2012-07-25 东华大学 一种面向列存储的桶内索引哈希连接方法
CN102722583A (zh) * 2012-06-07 2012-10-10 无锡众志和达存储技术有限公司 重复数据删除硬件加速装置和方法
CN106411654A (zh) * 2016-10-27 2017-02-15 任子行网络技术股份有限公司 一种处理网络流量分析的方法和装置
CN106709001A (zh) * 2016-12-22 2017-05-24 西安电子科技大学 一种面向流式大数据的基数估计方法
CN107766258A (zh) * 2017-09-27 2018-03-06 精硕科技(北京)股份有限公司 内存存储方法与装置、内存查询方法与装置
CN108256003A (zh) * 2017-12-29 2018-07-06 天津南大通用数据技术股份有限公司 一种根据分析数据重复率提高union运算效率的方法
CN110580307A (zh) * 2019-08-09 2019-12-17 北京大学 一种快速统计的处理方法及装置
CN111538730A (zh) * 2020-04-30 2020-08-14 福建天晴数码有限公司 一种基于哈希桶算法的数据统计的方法及其***
CN112463795A (zh) * 2020-11-26 2021-03-09 杭州安恒信息技术股份有限公司 一种动态哈希方法、装置、设备及存储介质
CN112612614A (zh) * 2020-12-28 2021-04-06 江苏苏宁云计算有限公司 一种数据排序方法、装置及***

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609487A (zh) * 2012-01-20 2012-07-25 东华大学 一种面向列存储的桶内索引哈希连接方法
CN102722583A (zh) * 2012-06-07 2012-10-10 无锡众志和达存储技术有限公司 重复数据删除硬件加速装置和方法
CN106411654A (zh) * 2016-10-27 2017-02-15 任子行网络技术股份有限公司 一种处理网络流量分析的方法和装置
CN106709001A (zh) * 2016-12-22 2017-05-24 西安电子科技大学 一种面向流式大数据的基数估计方法
CN107766258A (zh) * 2017-09-27 2018-03-06 精硕科技(北京)股份有限公司 内存存储方法与装置、内存查询方法与装置
CN108256003A (zh) * 2017-12-29 2018-07-06 天津南大通用数据技术股份有限公司 一种根据分析数据重复率提高union运算效率的方法
CN110580307A (zh) * 2019-08-09 2019-12-17 北京大学 一种快速统计的处理方法及装置
CN111538730A (zh) * 2020-04-30 2020-08-14 福建天晴数码有限公司 一种基于哈希桶算法的数据统计的方法及其***
CN112463795A (zh) * 2020-11-26 2021-03-09 杭州安恒信息技术股份有限公司 一种动态哈希方法、装置、设备及存储介质
CN112612614A (zh) * 2020-12-28 2021-04-06 江苏苏宁云计算有限公司 一种数据排序方法、装置及***

Also Published As

Publication number Publication date
CN113672619A (zh) 2021-11-19

Similar Documents

Publication Publication Date Title
CN109164980B (zh) 一种时序数据的聚合优化处理方法
US20030088542A1 (en) System and methods for display of time-series data distribution
US7072899B2 (en) Automatic monitoring and statistical analysis of dynamic process metrics to expose meaningful changes
CN113672619B (zh) 一种按照hash规则切分数据使其更均匀的方法
CN106202280B (zh) 一种信息处理方法及服务器
US10452676B2 (en) Managing database with counting bloom filters
US8515993B2 (en) Methods and apparatus for processing a database query
CN108733781A (zh) 基于内存计算的集群时态数据索引方法
CN117333143B (zh) 一种成本科目字典设置方法及***
CN117171157B (zh) 基于数据分析的清算数据采集清洗方法
CN113283652A (zh) 一种军工行业宏观质量水平的评价方法
CN111274270B (zh) 数据库优化器的统计信息处理和使用方法及存储设备
CN110704433B (zh) 列式存储数据的brin索引构建方法、数据检索方法及装置
CN106933934B (zh) 数据表的连接方法和装置
CN111461617B (zh) 一种库存统计方法、装置、计算机设备及存储介质
CN113360551B (zh) 一种靶场中时序数据的存储与快速统计方法及***
CN115690681A (zh) 异常判断依据的处理方法、异常判断方法及装置
US11657052B2 (en) Dual filter histogram optimization
CN110196974B (zh) 一种用于大数据清洗的快速数据聚合方法
CN112882854A (zh) 一种请求异常的处理方法及装置
CN116248126B (zh) 基于长度损失最小的矢量数据压缩方法
CN108920256A (zh) 检核任务执行方法及装置
CN113031878B (zh) 一种基于HBase的数据存储优化方法及***
CN114416705A (zh) 一种多源异构数据融合建模方法
CN116010390A (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