CN106997361A - 一种数据分布方法及装置 - Google Patents
一种数据分布方法及装置 Download PDFInfo
- Publication number
- CN106997361A CN106997361A CN201610049811.XA CN201610049811A CN106997361A CN 106997361 A CN106997361 A CN 106997361A CN 201610049811 A CN201610049811 A CN 201610049811A CN 106997361 A CN106997361 A CN 106997361A
- Authority
- CN
- China
- Prior art keywords
- data
- distribution
- performance indications
- tables
- row
- 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.)
- Granted
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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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/21—Design, administration or maintenance of databases
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据分布方法及装置,针对数据库中的任一数据表,可在确定所述数据表为偏移表时,根据确定的所述数据表中的每个数据列的、用于反映该数据列中的数据的离散性能的性能指标,确定对应的数据列的数据离散度,并根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列来建立新的分布列,以根据该新的分布列将相应数据重新分布到各分区节点上。从而解决了现有的数据分布方法由于对开发人员经验的完全依赖而存在的、分布列的准确性和合理性较低、以及数据分布的效率较低等的问题。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据分布方法及装置。
背景技术
Greenplum是一个关系型数据库集群,它实际上是由多个独立的数据库服务组合而成的逻辑数据库。Greenplum采用Shared-Nothing(无共享)架构,整个集群由一个控制节点(Master Host)和多个分区节点(Segment Host)组成,且每个分区节点上可以运行一个数据库。由于在典型的Shared-Nothing架构中,每一分区节点均是独立的,即每一分区节点上的数据库所占用的资源(如CPU,内存,磁盘等)都是独立的,也就是说,一个分区节点不可利用另一个分区节点上的资源。
在Greenplum中,需要存储的所有数据在进入Greenplum数据库集群时,首先需要进行数据分布,即,为需要存储的所有数据中的每个数据表指定一个分布列(Distribute Column),然后根据每个数据表对应的分布列,基于Hash算法等,将每个数据表中的数据平均分布到每个分区节点上。另外,若需要对某个数据表的分布列进行修改,则必须要重新创建该数据表才能实现对该数据表的分布列的修改。
具体地,对于Greenplum等并行执行的数据库集群而言,只有将数据均匀分布在各个分区节点上才能充分发挥该数据库集群的分布式处理数据的优势,如果数据并没有均匀的分布到各个分区节点上,而是发生了数据偏移(即负载不均衡)的现象,则数据量较多的分区节点在处理数据时,必然需要更长的时间,容易使数据的入库加载、查询分析、导出处理等受到影响。
目前,为了防止出现上述数据偏移所带来的问题,业内常采用人工方式,重新确定存在数据偏移的数据表的分布列,以重新进行数据的分布。如,具体地,利用SQL(Structured Query Language,结构化查询语言)语句查询每个数据表在每一个分区节点上的数据量,找出发生数据偏移的数据表(即偏移表),人工地将偏移表中的数据导出,以及,根据开发人员的经验构建新的分布列并重新创建新的数据表,再将原数据表中的数据人工导入具有新分布列的新的数据表中,并根据新的分布列将该新的数据表中的数据均匀分布到各个分区节点上。
由上述内容可知,现有的数据分布方法中,分布列的确定完全依赖于开发人员的经验,若开发人员的技术水平和/或对数据库内的表数据以及结构的了解程度较低,则很容易存在所确定的分布列的准确性和合理性较低的问题。另外,由于人工确定分布列的速度较慢,因而,还会降低数据分布的效率。
发明内容
本发明实施例提供了一种数据分布方法及装置,用以解决现有的数据分布方法由于对开发人员经验的完全依赖而存在的、分布列的准确性和合理性较低、以及数据分布的效率较低等的问题。
本发明实施例提供了一种数据分布方法,包括:
针对数据库中的任一数据表,确定所述数据表是否为偏移表;
若是,则确定所述数据表中的每个数据列的性能指标,并根据每个数据列的性能指标,确定对应的数据列的数据离散度;所述性能指标用于反映数据列中的数据的离散性能;
根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列,并根据选择的数据列,确定分布列;
基于确定的分布列,将所述数据表中的数据分布到各分区节点上。
本发明实施例还提供了一种数据分布装置,包括:
确定模块,用于针对数据库中的任一数据表,确定所述数据表是否为偏移表;若是,则确定所述数据表中的每个数据列的性能指标,并根据每个数据列的性能指标,确定对应的数据列的数据离散度;所述性能指标用于反映数据列中的数据的离散性能;
选择模块,用于根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列,并根据选择的数据列,确定分布列;
分布模块,用于基于确定的分布列,将所述数据表中的数据分布到各分区节点上。
本发明有益效果如下:
本发明实施例提供了一种数据分布方法及装置,针对数据库中的任一数据表,可在确定所述数据表为偏移表时,根据确定的所述数据表中的每个数据列的、用于反映该数据列中的数据的离散性能的性能指标,确定对应的数据列的数据离散度,并根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列来建立新的分布列,以根据该新的分布列将相应数据重新分布到各分区节点上。从而可自动化地根据每个数据列对应的性能指标确定合理的分布列,无需依靠人为经验,解决了现有的数据分布方法由于对开发人员经验的完全依赖而存在的、分布列的准确性和合理性较低、以及数据分布的效率较低等的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1所示为本发明实施例一中所述的数据分布方法的流程示意图;
图2所示为样本数据的抽取示意图;
图3所示为本发明实施例二中所述的数据分布装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一:
为了解决现有的数据分布方法存在的对人的依赖性过强、导致分布列的准确性不高、合理性较差以及数据分布效率较低等的问题,本发明实施例一提供了一种数据分布方法,如图1所示,其为本发明实施例一中所述的数据分布方法的流程示意图,由图1可知,所述数据分布方法可包括以下步骤:
步骤101:针对数据库中的任一数据表,确定所述数据表是否为偏移表。
可选地,针对任一数据表,可通过以下方式确定所述数据表是否为偏移表:
确定所述数据表是否在至少一个分区节点上分布的数据量大于设定的数据量平均值,若是,则确定所述数据表为偏移表;或者,
确定所述数据表在任意两个分区节点上分布的数据量之差是否不小于设定阈值,若是,则确定所述数据表为偏移表。
其中,所述设定的数据量平均值可根据实际情况灵活设定,如可通过所述数据表中数据的总个数与分区节点的总个数进行相应的除法运算来确定。例如,假设所述除法运算的结果为整数,则可直接将该整数作为设定的数据量平均值;假设所述除法运算的结果不为整数,则可对该结果进行向上取整,并将向上取整之后的整数作为设定的数据量平均值等,此处不再赘述。
另外,所述设定阈值也可根据实际情况灵活设定,如可设定为几十、几百个、或者几千等,对此不作任何限定。
再有,需要说明的是,每一数据表在分区节点上分布的数据量,可通过SQL语句(或其它方法)查询得到。例如,针对任一数据表,可通过SQL语句依次查询该数据表在每个分区节点上的分布情况,如果确定该数据表在某一分区节点上的数据量超出了该数据表在各分区节点上的数据量平均值、或者该数据表在某一分区节点上的数据量相较于该数据表在其它分区节点上的数据量过多或过少,则可确定该数据表中的数据在分布时发生了数据偏移,即可确定该数据表为偏移表。
另外,需要说明的是,在本实施例中,可在接收到用户下发的搜索偏移表的指令时,再利用SQL语言等查询相应数据库中的偏移表,此处不作赘述。
步骤102:确定所述数据表中的每个数据列的性能指标,并根据每个数据列的性能指标,确定对应的数据列的数据离散度;所述性能指标用于反映数据列中的数据的离散性能。
可选地,所述性能指标可包括列平均抽样误差、列数据差异率以及列值频率,其中:
所述列平均抽样误差,是指数据列的样本数据与数据列的总体数据的平均误差;
所述列数据差异率,是指数据列的样本数据中的数据差异数与数据列的总体数据中的数据差异数的比值;
所述列值频率,是指在设定时间段内数据列与数据库中的其它数据表之间发生关联查询的次数。
其中,需要说明的是,针对任一数据列,该数据列的样本数据可为从该数据列中抽取的设定比例的数据,如可为该数据中总数据的10%、20%、或50%等(也可为整个数据列的全部数据),即,每个数据列的样本数据可为该数据列总数据的子集。
例如,在如图2所示的偏移表A中,该偏移表A共有N个数据列,如图2中所示的COL1、COL2、COL4、……、COLN。从偏移表A的第1个数据列(COL1)中抽取的样本数据组成的集合{a1,a2,a3,a4,……,an}可为偏移表A的第1个数据列(COL1)对应的集合{A1,A2,A3,A4,……,AN}的子集;从偏移表A的第2个数据列(COL2)中抽取的样本数据组成的集合{b1,b2,b3,b4……bn}可为偏移表A的第2个数据列(COL2)对应的集合{B1,B2,B3,B4……BN}的子集;从偏移表A的第N个数据列(COLN)中抽取的样本数据的集合{x1,x2,x3,x4……xn}可为偏移表A的第N个数据列(COLN)对应的集合{X1,X2,X3,X4……XN}的子集,对此不作赘述。
另外,需要说明的是,为了提高分布列的准确性以及合理性,在进行偏移表中各数据列性能指标的计算时,还可将各数据中的换行符、回车符、空格等特殊符号去除,同时,若偏移表中的字符为中文字符,还可将中文字符转化为十进制等,对此不再赘述。
下面,将通过对应的表达式,对数据列的各性能指标进行进一步的介绍:
具体的,针对任一偏移表,所述偏移表的第i个数据列的列平均抽样误差Scoli可表示为:
其中,n为从该数据列中抽取的样本数据的总个数,N为该数据列中数据的总个数,表示抽取的n个样本数据的方差,xj表示该数据列的样本数据中的第j个数据,x为抽取的n个样本数据的平均值,i为正整数、且i的取值不大于所述偏移表中数据列的列数。
由上述表达式可知,列平均抽样误差是指抽样平均数的标准差,反映了数据列中样本数据与总体数据的平均误差程度,此处不再赘述。
进一步地,针对任一偏移表,所述偏移表的第i数据列的列数据差异率Wcoli可表示为:
其中,count(n)为从该数据列中抽取的样本数据中、存在差异的数据的总数,count(N)为该数据列的总数据中、存在的差异的数据的总数。需要说明的是,针对偏移表中的每个数据列,若确定该数据列中的两个数据互不相同,则可认为这两个数据存在差异。
例如,假设偏移表如表1所示,则由表1可知,第1个数据列中存在差异的数据的总个数为4,第2个数据列中存在差异的数据的总个数为5,此处不再赘述。
表1偏移表
第1个数据列 | 第2个数据列 |
1 | 1 |
1 | 2 |
2 | 3 |
3 | 5 |
2 | 4 |
4 | 1 |
进一步地,针对任一偏移表,所述偏移表的第i数据列在设定时间段T内的列值频率Tcoli可表示为:
其中,T可指设定的时间段,如可为1天、1小时、1分钟等。Ai表示该数据列与其它表(如其它偏移表或其它数据表)之间发生关联查询的次数。
例如,以数据列与其它表之间发生关联查询的次数为关联查询的SQL语句的条数为例,可通过相关视图收集(如pg_stat_activity等)对数据库中的其它表与相应偏移表中每一列进行关联的SQL语句进行详细统计,得到与该数据列关联查询的SQL语句的条数等。
进一步地,在计算每个数据列的性能指标后,还可将所述性能指标进行保存,以使得在后续处理中,可通过调用保存的性能指标来确定每个数据列对应的数据离散度,从而进一步节省了时间、提高了效率。
进一步地,需要说明的是,每一数据列的性能指标除了可包括以上三种性能指标之外,还可包括其它的性能指标。如还可包括用于表示每个数据列中的总数据的数据差异数的列数据差异指标、用于表示每个数据列中的抽样数据的数据差异数的抽样数据差异指标、或者,用于表示每个数据列中的抽样数据的列值频率的抽样数据列值频率指标等,本发明实施例对此不作任何限定。
进一步地,根据每个数据列的性能指标,确定对应的数据列的数据离散度,可包括:
针对任一数据列,确定该数据列的各性能指标的权重;
根据该数据列的各性能指标的权重,对该数据列的各性能指标进行加权求和,并将加权求和的结果作为该数据列的数据离散度。
具体地,针对任一数据列,确定该数据列的各性能指标的权重,可包括:
确定该数据列的各性能指标的负相关系数;每一性能指标的负相关系数用于反映该性能指标与其它性能指标之间的相关性大小,该性能指标的负相关系数越大,该性能指标与其它性能指标之间的相关性越大;
将各性能指标的负相关系数的倒数,或各性能指标的负相关系数的倒数的归一化值,作为对应的性能指标的权重。
下面,将以对应的性能指标如表2所示的某一偏移表为例,对确定偏移表中每个数据列的数据离散度的过程进行详细说明:
表2偏移表中各数据列的性能指标
第一步,针对该偏移表的每一数据列,确定该数据列的各性能指标的权重。
具体地,可先分别确定该数据列的各性能指标与其它性能指标的负相关系数,如确定Scoli与Wcoli、Tcoli的负相关系数R1,Wcoli与Scoli、Tcoli的负相关系数R2,以及Tcoli与Scoli、Wcoli的负相关系数R3。
其中,需要说明的是,Scoli、Wcoli以及Tcoli中任一性能指标与其它性能指标的负相关系数越大,就说明该任一性能指标与其它性能指标之间的共线性关系越强,即相关性越大,该任一性能指标越容易由其它性能指标的线性组合表示。
另外,需要说明的是,各性能指标的负相关系数R1、R2、R3可通过excel表中的、用于计算负相关系数的公式求得,也可利用现有的、相关系数的数学公式求得,对此不作任何限定。
具体地,在计算出各性能指标与其它性能指标之间的负相关系数之后,可将各性能指标的负相关系数的倒数作为对应的性能指标的权重,如将1/R1、1/R2以及1/R3分别作为Scoli、Wcoli以及Tcoli的权重;另外,还可对各性能指标的负相关系数的倒数进行归一化处理,并将归一化处理后的数值作为对应的性能指标的权重值,对此不作任何限定。
需要说明的是,通常情况下,偏移表中的任意两个不同的数据列的同一性能指标可对应同一个权重,当然,也可分别对应不同的权重,此处不再赘述。
第二步,根据每一数据列的性能指标的权重,确定该数据列的性能指标的加权求和值,并将该加权求和值作为该数据列的数据离散度。
例如,假设偏移表中的第i个数据列的各性能指标Scoli、Wcoli以及Tcoli对应的权重分别为Sqz、Wqz以及Tqz,则该数据列的数据离散度可表示为P(i),其中:
P(i)=Scoli×Sqz+Wcoli×Wqz+Tcoli×Tqz。
步骤103:根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列,并根据选择的数据列,确定分布列。
其中,所述设定离散度阈值可根据实际情况灵活设定,对此不作任何限定。
可选地,为了使得数据在各分区节点上的分布更加均匀,通常可选取对应的数据离散度最大的一数据列,以确定合理的分布列。
例如,若确定偏移表中第k个数据列的数据离散度P(k)最大,则说明偏移表中的第k个数据列的性能指标所占的权重相对最合理,可直接选取第k列以确定分布列,此处不再赘述。
具体地,根据选择的数据列,确定分布列,可包括:
将选择的数据列作为分布列;或者,
根据选择的数据列中的数据的数量以及分区节点的数量,建立分布列。
步骤104:基于确定的分布列,将所述数据表中的数据分布到各分区节点上。
具体地,基于确定的分布列,将所述数据表中的数据分布到各分区节点上,可包括:
根据所述分布列建立一新数据表,并将所述数据表中的数据导入至所述新数据表中,以及,根据所述分布列将所述新数据表中的数据分布到各分区节点上。
其中,需要说明的是,可通过Hash算法等,将偏移表中的数据合理的分布到各个分区节点上。
进一步地,所述方法还可包括:
在根据所述分布列将所述新数据表中的数据分布到各分区节点上之后,对本次分布进行记录,以便于后续查看与调用。
进一步地,需要说明的是,本发明实施例中所述的数据分布方法,可根据数据库DBA(Database Administrator,数据库管理员)下发的数据分布任务指令来执行;或者,也可根据相应设定,定时执行。
另外,本发明实施例中所述的数据分布过程可仅执行一次,也可循环执行多次,对此不作任何限定。
再有,需要说明的是,本发明实施例中,可仅针对指定主机(即指定数据库)中的数据表执行相应的数据分布任务;并且,可仅针对指定主机(即指定数据库)中的部分数据表执行相应的数据分布任务,如仅对新增的数据表、或者发生更新的数据表进行数据分布等,从而可进一步节省时间,提高效率,此处不再赘述。
本发明实施例一提供了一种数据分布方法,针对数据库中的任一数据表,可在确定所述数据表为偏移表时,根据确定的所述数据表中的每个数据列的、用于反映该数据列中的数据的离散性能的性能指标,确定对应的数据列的数据离散度,并根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列来建立新的分布列,以根据该新的分布列将相应数据重新分布到各分区节点上。从而可自动化地根据每个数据列对应的性能指标确定合理的分布列,无需人工依靠经验,解决了现有的数据分布方法由于对开发人员经验的完全依赖而存在的、分布列的准确性和合理性较低、以及数据分布的效率较低等的问题。
实施例二:
基于与本发明实施例一相同的发明构思,本发明实施例二提供了一种数据分布装置,如图3所示,其为本发明实施例二中所述的数据分布装置的结构示意图,具体地,如图3可知,本发明实施例二中所述的数据分布装置可包括:
确定模块31,用于针对数据库中的任一数据表,确定所述数据表是否为偏移表;若是,则确定所述数据表中的每个数据列的性能指标,并根据每个数据列的性能指标,确定对应的数据列的数据离散度;所述性能指标用于反映数据列中的数据的离散性能;
选择模块32,用于根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列,并根据选择的数据列,确定分布列;
分布模块33,用于基于确定的分布列,将所述数据表中的数据分布到各分区节点上。
进一步地,所述性能指标包括列平均抽样误差、列数据差异率以及列值频率;
所述列平均抽样误差,是指数据列的样本数据与数据列的总体数据的平均误差;
所述列数据差异率,是指数据列的样本数据中的数据差异数与数据列的总体数据中的数据差异数的比值;
所述列值频率,是指在设定时间段内数据列与数据库中的其它数据表之间发生关联查询的次数。
进一步地,所述确定模块31,具体用于针对任一数据列,确定该数据列的各性能指标的权重;根据该数据列的各性能指标的权重,对该数据列的各性能指标进行加权求和,并将加权求和的结果作为该数据列的数据离散度。
进一步地,所述确定模块31,具体用于确定该数据列的各性能指标的负相关系数;每一性能指标的负相关系数用于反映该性能指标与其它性能指标之间的相关性大小,该性能指标的负相关系数越大,该性能指标与其它性能指标之间的相关性越大;以及,
将各性能指标的负相关系数的倒数,或各性能指标的负相关系数的倒数的归一化值,作为对应的性能指标的权重。
进一步地,所述选择模块32,具体用于将选择的数据列作为分布列;或者,根据选择的数据列中的数据的数量以及分区节点的数量,建立分布列。
进一步地,所述确定模块31,具体用于确定所述数据表是否在至少一个分区节点上分布的数据量大于设定的数据量平均值,若是,则确定所述数据表为偏移表;或者,
确定所述数据表在任意两个分区节点上分布的数据量之差是否不小于设定阈值,若是,则确定所述数据表为偏移表。
进一步地,所述分布模块33,具体用于根据所述分布列建立一新数据表,并将所述数据表中的数据导入至所述新数据表中,以及,根据所述分布列将所述新数据表中的数据分布到各分区节点上。
本领域技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种数据分布方法,其特征在于,包括:
针对数据库中的任一数据表,确定所述数据表是否为偏移表;
若是,则确定所述数据表中的每个数据列的性能指标,并根据每个数据列的性能指标,确定对应的数据列的数据离散度;所述性能指标用于反映数据列中的数据的离散性能;
根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列,并根据选择的数据列,确定分布列;
基于确定的分布列,将所述数据表中的数据分布到各分区节点上。
2.如权利要求1所述的方法,其特征在于,所述性能指标包括列平均抽样误差、列数据差异率以及列值频率;
所述列平均抽样误差,是指数据列的样本数据与数据列的总体数据的平均误差;
所述列数据差异率,是指数据列的样本数据中的数据差异数与数据列的总体数据中的数据差异数的比值;
所述列值频率,是指在设定时间段内数据列与数据库中的其它数据表之间发生关联查询的次数。
3.如权利要求2所述的方法,其特征在于,根据每个数据列的性能指标,确定对应的数据列的数据离散度,包括:
针对任一数据列,确定该数据列的各性能指标的权重;
根据该数据列的各性能指标的权重,对该数据列的各性能指标进行加权求和,并将加权求和的结果作为该数据列的数据离散度。
4.如权利要求3所述的方法,其特征在于,针对任一数据列,确定该数据列的各性能指标的权重,包括:
确定该数据列的各性能指标的负相关系数;每一性能指标的负相关系数用于反映该性能指标与其它性能指标之间的相关性大小,该性能指标的负相关系数越大,该性能指标与其它性能指标之间的相关性越大;
将各性能指标的负相关系数的倒数,或各性能指标的负相关系数的倒数的归一化值,作为对应的性能指标的权重。
5.如权利要求1所述的方法,其特征在于,根据选择的数据列,确定分布列,包括:
将选择的数据列作为分布列;或者,
根据选择的数据列中的数据的数量以及分区节点的数量,建立分布列。
6.如权利要求1所述的方法,其特征在于,针对任一数据表,通过以下方式确定所述数据表是否为偏移表:
确定所述数据表是否在至少一个分区节点上分布的数据量大于设定的数据量平均值,若是,则确定所述数据表为偏移表;或者,
确定所述数据表在任意两个分区节点上分布的数据量之差是否不小于设定阈值,若是,则确定所述数据表为偏移表。
7.如权利要求1所述的方法,其特征在于,基于确定的分布列,将所述数据表中的数据分布到各分区节点上,包括:
根据所述分布列建立一新数据表,并将所述数据表中的数据导入至所述新数据表中,以及,根据所述分布列将所述新数据表中的数据分布到各分区节点上。
8.一种数据分布装置,其特征在于,包括:
确定模块,用于针对数据库中的任一数据表,确定所述数据表是否为偏移表;若是,则确定所述数据表中的每个数据列的性能指标,并根据每个数据列的性能指标,确定对应的数据列的数据离散度;所述性能指标用于反映数据列中的数据的离散性能;
选择模块,用于根据所述数据表中的每个数据列的数据离散度,选取对应的数据离散度不低于设定离散度阈值的一数据列,并根据选择的数据列,确定分布列;
分布模块,用于基于确定的分布列,将所述数据表中的数据分布到各分区节点上。
9.如权利要求8所述的装置,其特征在于,所述性能指标包括列平均抽样误差、列数据差异率以及列值频率;
所述列平均抽样误差,是指数据列的样本数据与数据列的总体数据的平均误差;
所述列数据差异率,是指数据列的样本数据中的数据差异数与数据列的总体数据中的数据差异数的比值;
所述列值频率,是指在设定时间段内数据列与数据库中的其它数据表之间发生关联查询的次数。
10.如权利要9所述的装置,其特征在于,
所述确定模块,具体用于针对任一数据列,确定该数据列的各性能指标的权重;根据该数据列的各性能指标的权重,对该数据列的各性能指标进行加权求和,并将加权求和的结果作为该数据列的数据离散度。
11.如权利要求10所述的装置,其特征在于,
所述确定模块,具体用于确定该数据列的各性能指标的负相关系数;每一性能指标的负相关系数用于反映该性能指标与其它性能指标之间的相关性大小,该性能指标的负相关系数越大,该性能指标与其它性能指标之间的相关性越大;以及,
将各性能指标的负相关系数的倒数,或各性能指标的负相关系数的倒数的归一化值,作为对应的性能指标的权重。
12.如权利要求8所述的装置,其特征在于,
所述选择模块,具体用于将选择的数据列作为分布列;或者,根据选择的数据列中的数据的数量以及分区节点的数量,建立分布列。
13.如权利要求8所述的装置,其特征在于,
所述确定模块,具体用于确定所述数据表是否在至少一个分区节点上分布的数据量大于设定的数据量平均值,若是,则确定所述数据表为偏移表;或者,
确定所述数据表在任意两个分区节点上分布的数据量之差是否不小于设定阈值,若是,则确定所述数据表为偏移表。
14.如权利要求8所述的装置,其特征在于,
所述分布模块,具体用于根据所述分布列建立一新数据表,并将所述数据表中的数据导入至所述新数据表中,以及,根据所述分布列将所述新数据表中的数据分布到各分区节点上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610049811.XA CN106997361B (zh) | 2016-01-25 | 2016-01-25 | 一种数据分布方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610049811.XA CN106997361B (zh) | 2016-01-25 | 2016-01-25 | 一种数据分布方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106997361A true CN106997361A (zh) | 2017-08-01 |
CN106997361B CN106997361B (zh) | 2020-05-12 |
Family
ID=59428365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610049811.XA Active CN106997361B (zh) | 2016-01-25 | 2016-01-25 | 一种数据分布方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106997361B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299191A (zh) * | 2018-09-18 | 2019-02-01 | 新华三大数据技术有限公司 | 一种数据分布方法、装置、服务器及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110099167A1 (en) * | 2004-05-26 | 2011-04-28 | Nicholas Galbreath | Graph Server Querying for Managing Social Network Information Flow |
CN102156714A (zh) * | 2011-03-22 | 2011-08-17 | 清华大学 | 实现自适应垂直划分的关系型数据库的方法及系统 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库系统的数据处理方法以及数据库系统 |
-
2016
- 2016-01-25 CN CN201610049811.XA patent/CN106997361B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110099167A1 (en) * | 2004-05-26 | 2011-04-28 | Nicholas Galbreath | Graph Server Querying for Managing Social Network Information Flow |
CN102156714A (zh) * | 2011-03-22 | 2011-08-17 | 清华大学 | 实现自适应垂直划分的关系型数据库的方法及系统 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库系统的数据处理方法以及数据库系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299191A (zh) * | 2018-09-18 | 2019-02-01 | 新华三大数据技术有限公司 | 一种数据分布方法、装置、服务器及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106997361B (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8001109B2 (en) | System and method for automating data partitioning in a parallel database | |
CN106055563B (zh) | 一种基于网格划分的并行空间查询方法及其系统 | |
CA2150745C (en) | Method and apparatus for implementing partial declustering in a parallel database system | |
US7930294B2 (en) | Method for partitioning a query | |
DE102016105472A1 (de) | Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen | |
WO2015184762A1 (zh) | 数据库查询方法及装置 | |
CN103324765B (zh) | 一种基于列存储的多核并行数据查询优化方法 | |
CN104077407B (zh) | 一种智能数据搜索系统及方法 | |
CN107609154A (zh) | 一种多源异构数据的处理方法及装置 | |
DE112012000280T5 (de) | Organisation von Tabellen mit reduzierten Indizes | |
EP3416065B1 (en) | Query method and query device | |
US10210280B2 (en) | In-memory database search optimization using graph community structure | |
EP2901344A1 (en) | System and method for flexible distributed massively parallel processing (mpp) database | |
EP1341098A2 (en) | Getpage - Workload based Index Optimizer | |
US20090319476A1 (en) | Adaptive materialized view selection for databases | |
Papadakis et al. | Progressive, holistic geospatial interlinking | |
CN110222071A (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
Lorie et al. | A low communication sort algorithm for a parallel database machine | |
US9177024B2 (en) | System, method, and computer-readable medium for optimizing database queries which use spools during query execution | |
Li et al. | 2PCP: Two-phase CP decomposition for billion-scale dense tensors | |
CN106997361A (zh) | 一种数据分布方法及装置 | |
CN106855862A (zh) | 一种快速比较方法及装置 | |
CN103199548B (zh) | 电容器分组配平系统及方法 | |
CN108446378A (zh) | 基于用户搜索的方法、系统及计算机存储介质 | |
US8832157B1 (en) | System, method, and computer-readable medium that facilitates efficient processing of distinct counts on several columns in a parallel processing system |
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 |