本发明专利技术提供一种时序数据库的分位数计算方法及装置、介质、设备,方法包括:确定第一内存量和第二内存量;其中,所述第一内存量为时序数据库的序列数据所需要的内存空间大小,所述第二内存量为当前可用的内存空间大小;根据所述第一内存量和第二内存量的大小关系,选择对应的分位数确定方法;根据选择的分位数确定方法,在所述序列数据中获取所需分位数的数值。本发明专利技术实施例增加了辅助判断条件,即第一内存量和第二内存量之间的大小关系,进而在不同内存资源情况下选择不同的方式,从而适配当前的内存情况,尽可能提高效率,可以起到事半功倍的效果。功倍的效果。功倍的效果。
【技术实现步骤摘要】
时序数据库的分位数计算方法及装置、介质、设备
[0001]本专利技术涉及数据处理
,尤其是涉及一种时序数据库的分位数计算方法及装置、介质、设备。
技术介绍
[0002]目前,分位数计算的最基本方法是将满足条件的数据全部读取出来,然后进行排序,再定位到需要的分位数上。随着流式数据库的数据量不断增加,针对一个需求仅提供一种计算方法已无法满足更高的要求,这就要求数据库实现者根据不同的需求以及硬件条件采用不同的计算方法以满足性能需求。
技术实现思路
[0003]针对以上至少一个技术问题,本专利技术实施例提供一种时序数据库的分位数计算方法及装置、介质、设备。
[0004]根据第一方面,本专利技术实施例提供的时序数据库的分位数计算方法,包括:
[0005]确定第一内存量和第二内存量;其中,所述第一内存量为时序数据库的序列数据所需要的内存空间大小,所述第二内存量为当前可用的内存空间大小;
[0006]根据所述第一内存量和第二内存量的大小关系,选择对应的分位数确定方法;
[0007]根据选择的分位数确定方法,在所述序列数据中获取所需分位数的数值。
[0008]根据第二方面,本专利技术实施例提供的时序数据库的分位数计算装置,包括:
[0009]第一确定模块,用于确定第一内存量和第二内存量;其中,所述第一内存量为时序数据库的序列数据所需要的内存空间大小,所述第二内存量为当前可用的内存空间大小;
[0010]方法选择模块,用于根据所述第一内存量和第二内存量的大小关系,选择对应的分位数确定方法;
[0011]数值确定模块,用于根据选择的分位数确定方法,在所述序列数据中获取所需分位数的数值。
[0012]根据第三方面,本专利技术实施例提供计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行实现第一方面提供的方法。
[0013]根据第四方面,本专利技术实施例提供的计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面提供的方法。
[0014]本专利技术实施例提供的时序数据库的分位数计算方法及装置、介质、设备,首先确定第一内存量和第二内存量,然后根据两个内存量之间的大小关系,选择合适的分位数确定方法,进而利用选择的分位数确定方法来确定所需分位数的数值。可见,本专利技术实施例增加了辅助判断条件,即第一内存量和第二内存量之间的大小关系,进而在不同内存资源情况下选择不同的方式,从而适配当前的内存情况,尽可能提高效率,可以起到事半功倍的效果。
附图说明
[0015]图1为本专利技术一实施例中时序数据库的分位数计算方法的流程示意图;
[0016]图2为本专利技术一实施例中时序数据库的分位数计算方法的流程示意图。
具体实施方式
[0017]第一方面,本专利技术实施例提供一种时序数据库的分位数计算方法,参见图1~2,该方法包括如下步骤S110~S130:
[0018]S110、确定第一内存量和第二内存量;其中,所述第一内存量为时序数据库的序列数据所需要的内存空间大小,所述第二内存量为当前可用的内存空间大小;
[0019]其中,序列数据是指按照时间先后顺序排列的一组数据。
[0020]在一个实施例中,所述确定第一内存量和第二内存量之前,所述方法可以进一步包括:
[0021]判断所述时序数据库的序列数据是否为有序状态;
[0022]若不是有序状态,则执行确定第一内存量和第二内存量的步骤;
[0023]否则,从所述序列数据中获取所需分位数的数值。
[0024]其中,有序状态是指从小到大排列或者从大到小排列的状态。
[0025]也就是说,首先判断序列数据是否已经按照数值大小排列好,如果已经排列好,则直接从排列好的序列数据中获取所需分位数的数值。例如,所需分位数为1/2,则取排列好的序列数据中的中间位置的数值作为所需分位数的数值。
[0026]当然,如果序列数据不是有序状态,则可以执行S110。
[0027]S120、根据所述第一内存量和第二内存量的大小关系,选择对应的分位数确定方法;
[0028]可见,这里确定分位数确定方法时考虑到了两个内存量,一个是序列数据所需要的内存空间大小,一个是当前可用的内存空间大小。可见根据硬件资源的实际情况和所需内存大小选择一个合适的位数确定方法,这样可以快速的定位到所需分位数,
[0029]在一个实施例中,所述S120可以包括:
[0030]判断所述第二内存量是否大于等于3倍的所述第一内存量;
[0031]若是,则采用分段式百分位查找方法。
[0032]例如,第一内存量为A,第二内存量为B,则如果B大于3*A,则选择的分位数确定方法为分段式百分位查找方法。
[0033]其中,分段式百分位查找方法的效率最高,但是对于内存的要求也最高,因此在B大于3*A时选择该方法。
[0034]在一个实施例中,所述分段式百分位查找方法,可以包括S1~S6:
[0035]S1、在内存空间中申请三个内存块,为每一个内存块设置一个对应的指针;其中,每一个内存块的指针的初始位置为该内存块的首地址,每一个内存块的大小为当前的序列数据所需要的内存空间大小;
[0036]其中,一个内存块中每存入一个数据,该内存块的指针就会向后移动一位。每一个内存块的大小为当前的序列数据所需要的内存空间大小,第一次迭代过程中,当前的序列数据为初始的时序数据,此时每一个内存块的大小为第一内存量。随着迭代次数的增加,当
前的序列数据发生变化,因此每一个内存块的大小发生变化。
[0037]S2、从当前的序列数据中选择出第一个数据,将所述第一个数据作为参考值;
[0038]例如,当前的序列数据中的第一个数据为a,则将a作为参考值。
[0039]S3、判断当前的序列数据中的每一个数据和所述参考值之间的大小关系;若该数据小于所述参考值,则将该数据放置在第一个内存块中;若该数据等于所述参考值,则将该数据放置在第二个内存块中;若该数据大于所述参考值,则将该数据放置在第三个内存块中;每向任意一个内存块中存放一个数据,就将该内存块的指针向后移动一位;
[0040]即,将当前的序列数据中的第i个数据和参考值进行比较,i的取值范围为[1,N],N为当前的序列数据中的数据的数量。
[0041]可理解的是,放置在第二个内存块中的各个数据是相同的。在第一个内存块中放置的是比较小的数据,在第三个内存块中放置的是比较大的数据。
[0042]S4、在将当前的序列数据中的各个数据放置于内存块之后,根据每一个内存块中的指针的位置,确定该内存块中的数据量;
[0043]即,当前的序列数据中的各个数据均放置在内存块之后,数据的放置工作结束,此时可以根据每个内存块中指针的位置确定该内存块中数据的数量。
[0044]S5、若所需分位数小于第一个内存块的数据本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种时序数据库的分位数计算方法,其特征在于,包括:确定第一内存量和第二内存量;其中,所述第一内存量为时序数据库的序列数据所需要的内存空间大小,所述第二内存量为当前可用的内存空间大小;根据所述第一内存量和第二内存量的大小关系,选择对应的分位数确定方法;根据选择的分位数确定方法,在所述序列数据中获取所需分位数的数值。2.根据权利要求1所述的方法,其特征在于,所述确定第一内存量和第二内存量之前,所述方法进一步包括:判断所述时序数据库的序列数据是否为有序状态;若不是有序状态,则执行确定第一内存量和第二内存量的步骤;否则,从所述序列数据中获取所需分位数的数值。3.根据权利要求1所述的方法,其特征在于,所述根据所述第一内存量和第二内存量的大小关系,选择对应的分位数确定方法,包括:判断所述第二内存量是否大于等于3倍的所述第一内存量;若是,则采用分段式百分位查找方法。4.根据权利要求3所述的方法,其特征在于,所述分位数确定方法为所述分段式百分位查找方法;对应的,所述根据选择的分位数确定方法,在所述序列数据中获取所需分位数的数值,包括:S1、在内存空间中申请三个内存块,为每一个内存块设置一个对应的指针;其中,每一个内存块的指针的初始位置为该内存块的首地址,每一个内存块的大小为当前的序列数据所需要的内存空间大小;S2、从当前的序列数据中选择出第一个数据,将所述第一个数据作为参考值;S3、判断当前的序列数据中的每一个数据和所述参考值之间的大小关系;若该数据小于所述参考值,则将该数据放置在第一个内存块中;若该数据等于所述参考值,则将该数据放置在第二个内存块中;若该数据大于所述参考值,则将该数据放置在第三个内存块中;每向任意一个内存块中存放一个数据,就将该内存块的指针向后移动一位;S4、在将当前的序列数据中的各个数据放置于内存块之后,根据每一个内存块中的指针的位置,确定该内存块中的数据量;S5、若所需分位数小于第一个内存块的数据量,则将第一个内存块作为选定内存块;若所需分位数大于等于所述第一个内存块的数据量且小于第一个内存块和第二个内存块的数据量之和,则将第二个内存块作为选定内存块;若所需分位数大于等于第一个内存块和第二个内存块的数据量之和,则将第三个内存块作为选定内存块;S6、判断所述选定内存块是否为第二个内存块;若是,则将第二个内存块中的数据作为所需分位数的数值;否则,将所述选定内...
【专利技术属性】
技术研发人员:李国亮,
申请(专利权)人:上海沄熹科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。