CN108363766A - 一种均匀切分数据库表数据的方法及计算机设备 - Google Patents
一种均匀切分数据库表数据的方法及计算机设备 Download PDFInfo
- Publication number
- CN108363766A CN108363766A CN201810116401.1A CN201810116401A CN108363766A CN 108363766 A CN108363766 A CN 108363766A CN 201810116401 A CN201810116401 A CN 201810116401A CN 108363766 A CN108363766 A CN 108363766A
- Authority
- CN
- China
- Prior art keywords
- row
- cutting
- numerical
- database
- subregion
- 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.)
- Pending
Links
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/221—Column-oriented storage; Management thereof
-
- 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
-
- 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
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
本发明提供一种均匀切分数据库表数据的方法,通过扫描所需切分的表,获取表中的列明、列类型以及索引状况;挑选出类型为整型且无重复值的列,若找不到对应列,则在该表中新添加一自增类型的列,该列作为切分列;否则任意选取一列作为切分列;设定预分区数M;读取切分列全部数值至数组,通过分位点算法计算该数组的M个分区区间,得到M个数值区间;本发明还提供一种计算机设备,以较低算法复杂度和数据库开销进行数据切分,较好地解决了数据库负担和快速分区的问题。
Description
技术领域
本发明涉及一种均匀切分数据库表数据的方法及计算机设备。
背景技术
数据分区是分布式计算的重要内容:要求数据被比较均匀地分成多份再分配合适的计算资源,并且分区数通常是动态变化(如当前剩余的计算资源量、用户所能支配的资源量)。传统数据库表中数据一般未被分区(即使被分区也不是实际计算时所需要的分区数),提交计算任务时再进行分区,通常的做法要求扫描切分列的全部数据,加重数据库负担,并且由于切分列数值分布不均匀,简单的算法无法实施,复杂算法的实时性将受极大影响。
发明内容
本发明要解决的技术问题,在于提供一种均匀切分数据库表数据的方法及计算机设备,以较低算法复杂度和数据库开销进行数据切分,较好地解决了数据库负担和快速分区的问题。
本发明之一是这样实现的:一种均匀切分数据库表数据的方法,包括:
步骤1、通过扫描所需切分的表,获取表中的列明、列类型以及索引状况;
步骤2、挑选出类型为整型且无重复值的列,若找不到对应列,则在该表中新添加一自增类型的列,该列作为切分列;否则任意选取一列作为切分列;
步骤3、设定预分区数M;
步骤4、读取切分列全部数值至数组,通过分位点算法计算该数组的M个分区区间,得到M个数值区间。
进一步地,还包括步骤5、将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用。
进一步地,所述步骤5进一步具体为:将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用;从应用程序获取将要分区的表以及实际分区数K,获取M个数值区间,将M个数值区间生成K个数值分区,并将K个数值分区返回给应用程序。
本发明之二是这样实现的:一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
步骤1、通过扫描所需切分的表,获取表中的列明、列类型以及索引状况;
步骤2、挑选出类型为整型且无重复值的列,若找不到对应列,则在该表中新添加一自增类型的列,该列作为切分列;否则任意选取一列作为切分列;
步骤3、设定预分区数M;
步骤4、读取切分列全部数值至数组,通过分位点算法计算该数组的M个分区区间,得到M个数值区间。
进一步地,还包括步骤5、将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用。
进一步地,所述步骤5进一步具体为:将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用;从应用程序获取将要分区的表以及实际分区数K,获取M个数值区间,将M个数值区间生成K个数值分区,并将K个数值分区返回给应用程序。
本发明具有如下优点:
1)如果使用简单算法,由于“跳跃”现象导致切分不均匀,这将导致分布式计算某个计算节点的“崩溃”(处理太多数据而资源不足)或“木桶”效应(等待最慢的节点处理完毕);本发明算法可以避免不均匀问题。
2)如果直接使用较为复杂的算法,当计算任务很多时,表记录数很大或者表数目很多时,会对数据库造成很大压力;本发明预计算阶段请求数据库频繁程度很低不会对数据库造成压力。
3)此外,直接采用复杂算法还会对实时性响应造成很大影响;本发明实时计算阶段没有数据库开销,且运行简单算法可以满足实时性。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法执行流程图。
具体实施方式
本发明均匀切分数据库表数据的方法,包括:
步骤1、通过扫描所需切分的表,获取表中的列明、列类型以及索引状况;
步骤2、挑选出类型为整型且无重复值的列,若找不到对应列,则在该表中新添加一自增类型的列,该列作为切分列;否则任意选取一列作为切分列;
步骤3、设定预分区数M;
步骤4、读取切分列全部数值至数组,通过分位点算法计算该数组的M个分区区间,得到M个数值区间。
步骤5、将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用;从应用程序获取将要分区的表以及实际分区数K,获取M个数值区间,将M个数值区间生成K个数值分区,并将K个数值分区返回给应用程序。
本发明计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
步骤1、通过扫描所需切分的表,获取表中的列明、列类型以及索引状况;
步骤2、挑选出类型为整型且无重复值的列,若找不到对应列,则在该表中新添加一自增类型的列,该列作为切分列;否则任意选取一列作为切分列;
步骤3、设定预分区数M;
步骤4、读取切分列全部数值至数组,通过分位点算法计算该数组的M个分区区间,得到M个数值区间。
步骤5、将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用;从应用程序获取将要分区的表以及实际分区数K,获取M个数值区间,将M个数值区间生成K个数值分区,并将K个数值分区返回给应用程序。
本发明实现的方法分两步走,预计算阶段扫描切分列全部数据,计算M分位点。实时计算部分再根据M分位点,实时算出分布式计算所需的K分位点。应用程序将K分位点转为K个数据库范围查询请求数据,从而将数据快速且比较均匀地分成K份。
如图1所示,方案结构:
离线切分系统,实时切分系统,应用程序,元数据系统
主要步骤:
A:预计算阶段(离线切分系统实施)
1)离线系统扫描数据库元数据系统,获取将要切分表的的列名、列类型和建索引状况,元数据库存储了所有已建索引的信息,包含字段是否被索引;
2)从1)所获取的列中挑选类型为整型(int)且无重复值的列。如果符合这类条件的列大于等于1列,则任取一个列作为切分列(假设为field_A)。并获取该列的最大值记为idmax和最小值记为idmin,(分区实质上是将不同记录(行)分成几组,无重复值的int类型的列很自然地起到“行号”的作用,虽然这种“行号”可能不连续。String、date等其他类型要起“行号”作用首先要转成int,其次还不能有重复值,很不便。对Int且无重复值的列建索引,在做区间查询时比较快)。
注:为后文描述方便,该列的任意一个值记为id。
3)如果2)找不到相应列,则在该表新添加一个自增类型(AUTO_INCREMENT)的列,起到“行号”的作用。
4)确定预分区数M,M可人为给定也可预先设定(数量级一般为104-105)
注:M值远大于实际需要的分区数K(K数量级101~103),但又远小于表的总记录数N(数量级为107~109或更大)。K受现实计算资源约束,因此不可能太大。而且过大还容易造成每个分区内数据太少,无法发挥批处理的优势。
5)确定预分区数M,M可人为给定也可预先设定(数量级一般为104-105)
注:M值远大于实际需要的分区数K(K数量级101~103),但又远小于表的总记录数N(数量级为107~109或更大)。K受现实计算资源约束,因此不可能太大。而且过大还容易造成每个分区内数据太少,无法发挥批处理的优势。
5)读取field_A列内全部数值到数组,调用分位点算法(记为alg_Q),计算该列的M个分区区间,得到M个数值区间I1=[min1,max1],…IM=[minM,maxM],满足如下要求:
i)每个区间内id值满足:区间最小值(如minM)≤id≤区间最大值(如maxM);
ii)每个区间数目近似相等(误差可控制在101~102内);
iii)min1=idmin(所有id的最小值),maxM=idmax(所有id的最大值)。
iv)对于任意1≤k≤M,区间Ik内的id值都小于区间Ik+1内的id值。
注1:alg_Q计算要求扫描field_A列全部数值,因为表的删除可能造成field_A的取值存在“跳跃”现象,如4,5,100,101,1000,1006,…,因此无法使用简单算法(alg_S)来获取M个数值区间。alg_Q具体实现很多,原则上可以任意调用一个满足5)中要求的i)-iii)的算法即可。
注2:假设idmin按自然数增长幅度(+1)递增到idmax。可用简单算法alg_S进行区间等分划分,I1=[idmin,idmin+Δ],I2=[idmin+Δ+1,idmin+2Δ],…IM=[maxM-Δ+1,maxM],其中Δ=(idmax-idmin)/M。
6)将该表的M个分区区间存入数据库或内存,对外暴露服务接口,方便在线切分系统调用。
注:1)至4)原则上只要首次预计算时进行即可,除非遇到表结构变化。5)至6)可设置每天/周定时执行一次或视数据记录增长快慢灵活把握。
B:实时计算阶段(实时切分系统实施)
1)实时切分系统从应用程序获取将要分区的表和实际分区值K。
2)实时切分系统访问离线系统中已生成的分区表的M个分区区间。
3)实时切分系统调用简单算法(alg_S),快速从M个分区区间中生成K个分区区间。
4)实时切分系统将K个分区区间返回给应用程序。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (6)
1.一种均匀切分数据库表数据的方法,其特征在于:包括:
步骤1、通过扫描所需切分的表,获取表中的列明、列类型以及索引状况;
步骤2、挑选出类型为整型且无重复值的列,若找不到对应列,则在该表中新添加一自增类型的列,该列作为切分列;否则任意选取一列作为切分列;
步骤3、设定预分区数M;
步骤4、读取切分列全部数值至数组,通过分位点算法计算该数组的M个分区区间,得到M个数值区间。
2.根据权利要求1所述的一种均匀切分数据库表数据的方法,其特征在于:还包括步骤5、将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用。
3.根据权利要求2所述的一种均匀切分数据库表数据的方法,其特征在于:所述步骤5进一步具体为:将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用;从应用程序获取将要分区的表以及实际分区数K,获取M个数值区间,将M个数值区间生成K个数值分区,并将K个数值分区返回给应用程序。
4.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
步骤1、通过扫描所需切分的表,获取表中的列明、列类型以及索引状况;
步骤2、挑选出类型为整型且无重复值的列,若找不到对应列,则在该表中新添加一自增类型的列,该列作为切分列;否则任意选取一列作为切分列;
步骤3、设定预分区数M;
步骤4、读取切分列全部数值至数组,通过分位点算法计算该数组的M个分区区间,得到M个数值区间。
5.根据权利要求4所述的一种计算机设备,其特征在于:还包括步骤5、将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用。
6.根据权利要求5所述的一种计算机设备,其特征在于:所述步骤5进一步具体为:将所述M个数值区间存入数据库或内存,并对外暴露服务接口,用于调用;从应用程序获取将要分区的表以及实际分区数K,获取M个数值区间,将M个数值区间生成K个数值分区,并将K个数值分区返回给应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810116401.1A CN108363766A (zh) | 2018-02-06 | 2018-02-06 | 一种均匀切分数据库表数据的方法及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810116401.1A CN108363766A (zh) | 2018-02-06 | 2018-02-06 | 一种均匀切分数据库表数据的方法及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108363766A true CN108363766A (zh) | 2018-08-03 |
Family
ID=63004530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810116401.1A Pending CN108363766A (zh) | 2018-02-06 | 2018-02-06 | 一种均匀切分数据库表数据的方法及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108363766A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040145984A1 (en) * | 2002-10-21 | 2004-07-29 | Yuichi Kadokawa | Data recording/reproducing device |
CN102214176A (zh) * | 2010-04-02 | 2011-10-12 | 中国人民解放军国防科学技术大学 | 超大维表的切分与表连接方法 |
CN103207843A (zh) * | 2013-04-15 | 2013-07-17 | 山东大学 | 一种数据行宽度可动态配置的cache结构设计方法 |
CN105808577A (zh) * | 2014-12-29 | 2016-07-27 | 北京神州泰岳软件股份有限公司 | 一种基于HBase数据库的数据批量入库的方法和装置 |
-
2018
- 2018-02-06 CN CN201810116401.1A patent/CN108363766A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040145984A1 (en) * | 2002-10-21 | 2004-07-29 | Yuichi Kadokawa | Data recording/reproducing device |
CN102214176A (zh) * | 2010-04-02 | 2011-10-12 | 中国人民解放军国防科学技术大学 | 超大维表的切分与表连接方法 |
CN103207843A (zh) * | 2013-04-15 | 2013-07-17 | 山东大学 | 一种数据行宽度可动态配置的cache结构设计方法 |
CN105808577A (zh) * | 2014-12-29 | 2016-07-27 | 北京神州泰岳软件股份有限公司 | 一种基于HBase数据库的数据批量入库的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078488B (zh) | 数据采集方法、装置、存储介质及系统 | |
Konstantinou et al. | On the elasticity of NoSQL databases over cloud management platforms | |
US20140258221A1 (en) | Increasing distributed database capacity | |
CN106371924B (zh) | 一种最小化MapReduce集群能耗的任务调度方法 | |
CN110941602B (zh) | 数据库的配置方法、装置、电子设备及存储介质 | |
CN112163048A (zh) | 基于ClickHouse实现OLAP分析的方法、装置 | |
CN112085644A (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
US6549931B1 (en) | Distributing workload between resources used to access data | |
CN110263059A (zh) | Spark-Streaming中间数据分区方法、装置、计算机设备和存储介质 | |
CN112036931A (zh) | 一种实时标签计算方法、装置、计算机设备及存储介质 | |
CN113867953A (zh) | 一种资源分配方法、装置、存储介质和电子设备 | |
CN107679133B (zh) | 一种实用于海量实时pmu数据的挖掘方法 | |
CN108363766A (zh) | 一种均匀切分数据库表数据的方法及计算机设备 | |
CN104700255B (zh) | 多进程处理方法、装置和系统 | |
CN109660587B (zh) | 基于随机数的数据推送方法、装置、存储介质及服务器 | |
KR102124897B1 (ko) | 분산 메시지 시스템 및 분산 메시지 시스템에서의 동적 파티셔닝 방법 | |
CN106155594A (zh) | 一种数据处理方法及装置 | |
CN112256427B (zh) | 一种基于改进分支限界法的大规模资源快速分配装置 | |
CN112015554B (zh) | 任务处理方法和装置 | |
CN113254271A (zh) | 一种数据序列恢复方法、装置、设备及存储介质 | |
CN111143456B (zh) | 基于Spark的Cassandra数据导入方法、装置、设备及介质 | |
CN113378069A (zh) | 基于智能推荐算法的主配网自动绘图方法 | |
CN112148792A (zh) | 一种基于HBase的分区数据调整方法、系统及终端 | |
CN110297807A (zh) | 一种二维码管理方法和装置 | |
CN110297693A (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 |