【技术实现步骤摘要】
一种应用于数据库的排序方法、装置及相关设备
本申请涉及计算机
,尤其涉及一种应用于数据库的排序方法、装置及相关设备。
技术介绍
随着大数据技术的不断发展,计算机需要排序处理的数据量大大增加。例如在运营商领域,运营商的处理器需要将每天的通信数据(包括手机通信数量,短信数量,ip电话数量等等)进行排序,那么需要排序的数据可以达到几十个T,大约有几十至上百亿。并且,基于用户对查询速度的要求逐渐变高,也对排序提出了更高的速度要求。例如百微秒云盘,要求数据的查询在微秒级响应。因此,高数据量如何快速排序成为了大数据技术的一个重要研究方向。当前热门的排序算法包括快速排序、归并排序、堆排序等比较类排序算法,这些排序算法的时间复杂度为O(nlog(n)),其中,时间复杂度描述了该算法的运行时间,时间度越小,排序效率越高。除此之外,还有一些非比较类的热门排序算法,如计数排序、桶排序、基数排序等算法,这些算法能够将排序的时间复杂度降到O(N),其排序效率虽然高于比较类排序算法,但是在数据量过大、数据分布情况复杂时,仍易出现排序速度慢
【技术保护点】
1.一种应用于数据库的排序方法,其特征在于,所述数据库包括键key列,所述key列包括多个key,每个key对应一个或多个值value,所述方法包括:/n获取所述key列A={a
【技术特征摘要】
1.一种应用于数据库的排序方法,其特征在于,所述数据库包括键key列,所述key列包括多个key,每个key对应一个或多个值value,所述方法包括:
获取所述key列A={an},其中,n为自然数;
将所述key列A输入计算模型,获得分桶排序所需的分桶函数y=g(an),其中,所述分桶函数用于将所述key列A中的n个key均匀划分至多个数据块中,每个数据块中的key数量均小于第一阈值,y是每个数据块对应的桶编号;
将所述key列A中的每个key输入所述分桶函数y=g(an),获得每个keyan对应的桶编号y,并将n个所述keyan放至对应桶编号的数据块中;
对每个数据块中的key进行排序,获得多个分桶序列,其中,一个分桶序列对应一个桶编号;
将所述多个分桶序列按照桶编号的顺序进行拼接,获得有序的key列Z={zn}。
2.根据权利要求1所述的方法,其特征在于,所述分桶函数y=g(an)=f2[f1(an)],其中,f1为第一函数,表示keyan与投影标签y1之间的函数关系,y1=f1(an);f2为第二函数,表示所述投影标签y1与桶编号y之间的对应关系,y=f2(y1)。
3.根据权利要求1或2所述的方法,其特征在于,an的区间为(amin,amax),所述将所述key列A输入计算模型,获得分桶排序所需的分桶函数y=g(an)包括:
设置等差数列B={bm}为所述key列A的标准key列,其中,bm的区间为(bmin,bmax),bmin≤amin,amax≤bmax,m为正整数;
计算所述标准key列B中每个keybm对应的分布函数CDF值,获得所述标准key列B中每个keybm与投影标签y1之间的第一关系,其中,所述keybm的分布函数值等于投影标签y1;
将所述标准key列B中的m个keybm平均划分至多个数据块内,获得每个keybm与桶编号y之间的第二关系;
根据所述第一关系以及第二关系,获得所述投影标签y1与桶编号y之间的第二函数f2;
计算并线性拟合所述key列A={an}的分布函数CDF,获得第一函数y1=f1(an);
根据y=g(an)=f2[f1(an)]获得所述分桶函数y=g(an)。
4.根据权利要求3所述的方法,其特征在于,所述计算并线性拟合所述key列A={an}的分布函数CDF,获得第一函数y1=f1(an)包括:
计算所述最小keyamin对应的分布函数值cmin,所述最大keyamax对应的分布函数值cmax;
计算经过点O(amin,cmin)以及P(amax,cmax)的直线函数,获得所述第一函数y1=f1(an)。
5.根据权利要求4所述的方法,其特征在于,所述对每个数据块中的key进行排序,获得多个分桶序列之前,所述方法还包括:
获取所述多个数据块中key数量超过第一阈值的数据块,其中,所述数据块中的key列D={dj},j为不大于n的正整数;
将所述key列D输入所述计算模型,获得所述key列D第二次分桶排序所需的第二分桶函数y=g2(dj);
将所述key列D中的每个keydj输入所述第二分桶函数y=g2(dj),获得每个keydj对应的桶编号y,并将j个所述keydj放至对应桶编号的数据块中;
所述对每个数据块中的key进行排序,获得多个分桶序列包括:
在所述多个数据块中,没有key数量超过所述第一阈值的数据块的情况下,对每个数据块中的key进行排序,获得多个分桶序列。
6.根据权利要求3所述的方法,其特征在于,所述计算并线性拟合所述key列A={an}的分布函数,获得第一函数f1包括:
计算所述key列A中每个keyan对应的分布函数值cn,获得n个离散点(an,cn);
将所述n个离散点划分为k个区域,分别对k个区域中的每个区域的离散点进行线性拟合,获得k个线性函数,其中,k为不大于n的正整数;
根据所述k个线性函数,获得所述第一函数y1=f1(an),其中,所述第一函数y1是所述k个线性函数构成的分段线性函数。
7.根据权利要求6所述的方法,其特征在于,所述最小keyamin对应的分布函数值为cmin,所述最大keyamax对应的分布函数值为cmax,所述将所述n个离散点划分为k个区域,分别对k个区域中的每个区域的离散点进行线性拟合,获得k个线性函数包括:
计算经过点O(amin,cmin)以及P(amax,cmax)的直线函数Y1=h1(an);
将所述key列A中的每个key输入所述直线函数h1,获得每个keyan对应的Y1;
获取所述keyan中,对应的所述分布函数值c以及所述Y1之间的差值小于第二阈值的k-1个keyak-1,获得k-1个点Qk-1(ak-1,ck-1);
计算经过点O以及点Q1的直线函数h11,经过点Q1以及点Q2的直线函数h12,经过点Q2以及点Q3的直线函数h13,…,经过点Qk-1以及点P的直线函数h1k,获得所述k个线性函数。
8.一种应用于数据库的排序装置,其特征在于,所述数据库包括键key列,所述key列包括多个key,每个key对应一个或多个值value,所述装置包括:...
【专利技术属性】
技术研发人员:孙涛,谢鹏程,雷晓松,单卫华,李昆,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。