CN110377642B - 一种快速获取有序序列数据的装置 - Google Patents

一种快速获取有序序列数据的装置 Download PDF

Info

Publication number
CN110377642B
CN110377642B CN201910673180.2A CN201910673180A CN110377642B CN 110377642 B CN110377642 B CN 110377642B CN 201910673180 A CN201910673180 A CN 201910673180A CN 110377642 B CN110377642 B CN 110377642B
Authority
CN
China
Prior art keywords
sequence
ordered
data
oscillation
value
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
CN201910673180.2A
Other languages
English (en)
Other versions
CN110377642A (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.)
Hangzhou Taini Technology Co Ltd
Original Assignee
Hangzhou Taini Technology 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 Hangzhou Taini Technology Co Ltd filed Critical Hangzhou Taini Technology Co Ltd
Priority to CN201910673180.2A priority Critical patent/CN110377642B/zh
Publication of CN110377642A publication Critical patent/CN110377642A/zh
Application granted granted Critical
Publication of CN110377642B publication Critical patent/CN110377642B/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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

一种快速获取有序序列数据的装置,用于从多个分布式计算设备中存储的n个有序序列中获取从某一序列位置起始的若干个有序数据,这些分布式计算设备包括主计算设备和与之通讯的多个从计算设备,所述装置包括:设置在所述从计算设备中的初始化单元,被配置为将这n个有序序列的每一者各设定一初始化位置;以及设置在所述主计算设备中的处理单元,被配置为基于所设定的初始化位置,将每一有序序列中的序列取值位置调整若干次以构成一或多次振荡调整以得到所需查找有序的该某一序列位置的数据在每个序列中的起始位置,其中每次振荡调整的振幅是将前一次振荡调整的振幅幅度缩少。

Description

一种快速获取有序序列数据的装置
技术领域
本发明主要是关于在分布式计算和数据库等应用场景中查找所需数据时如何实现更低资源和数据计算占用率或时间/空间复杂度的调用优化装置和方法,尤其是关于在一或多个序列中对分页数据元素快速查找的改进。这其中,包含了将从这些分布式计算和数据库等应用场景中获取的有序数据按照统一排序方式排序的从第x个数据开始的y个数据(x,y均为正整数)按照一致的排序的方式排列后提供给调用设备方,一些需求仅需返回分页数据,在多数情形下,返回的分页数据具有有序性,诸如升序和/或降序排列。
背景技术
通常,序列是指被排列成一列的多个元素,在本发明任何实施例中,元素通常指称计算机可读数据的简化表达,这些元素可通过在一个序列中的序号(或索引)被快速调用而无需每次轮询查找。序列可以是数据索引、列表、数据集、结果集等具有有序、可以按索引号获取的特征元素集合。
可将一个序列中的元素按照统一的比较方式进行相互比较,在该序列中的某一序号对应位置所引用的元素之前的元素小于等于/大于等于它的时候,这个序列被确定为具有序性,例如正序/逆序。在本发明任何实施例中,多个有序序列的元素类型被认为是一致的,并且按相同方式排序,也就是说,统一设定为正序/逆序排列。
在一些实现中,设备调用方仅需获取有序的分页数据。例如,可获取一或多个有序序列中从第x元素开始随后的y个有序的元素。如果将所有获得的有序序列合并为一个序列并且排序方式不变,则形成一个新的序列L,获取该序列L中从第x元素开始随后的y个有序的元素以生成一个有序分页。
在多个有序序列中,如果要取它们合并为一个序列后的从x序号开始的y个元素,调用设备的性能是非常低的,如何快速找到满足要求的元素在实际应用中是非常常见的。在一些数据计算应用系统中,随着获取数据量的增加,查找数据的效率会急剧下降,这个时候常会把海量数据按照某种规则分解为多个数据块,由不同的应用或数据服务器提供服务。例如在数据库领域,是典型的分库分表解决方案,在分布式检索系统中会把多个服务器检索到的结果进行合并。
有时,需要把多个应用程序或数据服务器提供的数据合并为一个完整的结果后返回给调用方,而且并非要求返回所有数据而是仅返回分页数据即可。如果返回的结果是无序的,则简单从第一个序列扫描起,使用例如贪心算法快速定位到需要的索引位置后取其后需要的y个数据即可。但是,许多时候返回的结果是有序的,就出现如何快速从多个有序序列中获取有序分页数据的问题,这是本发明所需解决的问题。
在分布式计算和数据库分库分表等应用领域,经常遇到上述问题。例如,当前获得 一Product数据表,该表里有9条数据,如下表所列:
产品ID NAME
1 Product1
2 Product2
3 Product3
4 Product4
5 Product5
6 Product6
7 Product7
8 Product8
9 Product9
如果我们按照ID号进行对3取模的方式分库分表,数据存放在Product1、Product2、 Product3三个列表中,即:
Product1
ID NAME
1 Product1
4 Product4
7 Product7
Product2
ID NAME
2 Product2
5 Product5
8 Product8
Product3
ID NAME
3 Product3
6 Product6
9 Product9
可执行Select * from Product1 order by id, Select * from Product2order by id, Select * from Product3 order by id逻辑,获得上面三个表格中的数据集。
但是,数据调用方又需要拿到未分表前的select * from Product order by id的结果,就需要对结果集resultSet1、resultSet2、resultSet3进行结果合并。一般来说,由于采用数据分表时数据量非常巨大,所以一次获取所有数据的情况并不多,往往采用分页形式来返回结果,这时就产生了从多个有序序列中获取有序分页数据的问题。按照前述原理,假设x取2(由于一般来说序列开始位置为0,因此跳过两个元素,实际从第三个取起)、y取2,列举传统实现方式以比较实际的运算复杂度。
传统实现方案A
新建一个序列,把所有先前序列中的数据按照先前排序规则合并到此队列中,然后直接从x位置取y个值即可。
对时间复杂度的判断:考虑此方案共有两个步骤,步骤1、将所有序列的共K个数据的产品ID序号进行全排序。这里,按照快速排序的平均时间复杂度是O(klog2k);步骤2、从这K个数据中的第x位置取y个数据的时间复杂度为O(y)。所以,总时间复杂度为O(klog2k)+ O(y) = O(klog2k)。
对空间复杂度的判断:在此方案中,需要一个长度为k的序列作为辅助数据,所以综合空间复杂度是O(k)。
传统实现方案B
基于前述传统方案A,合并序列为下表:
Figure 843728DEST_PATH_IMAGE002
首先,将这三个结果集的第一个值进行比较,参照下表:
Figure 317216DEST_PATH_IMAGE004
可知三个元素1最小,所以将记录数据集Product1向下移动一位,形成下表,其中灰色背景的表示在当前表中位置:
Figure 95423DEST_PATH_IMAGE006
于此,可知三个元素2最小,所以,记录数据集Product2向下移动一位,形成下表:
Figure 388564DEST_PATH_IMAGE008
现在已经跳过两个元素开始取值,三个元素比较3最小,因此取3,记录数据集Product3向下移动一位,形成下表:
Figure 128112DEST_PATH_IMAGE010
这三个值比较4最小,因此取4,记录数据集Product1向下移动一位,形成下表:
Figure 676512DEST_PATH_IMAGE012
至此,我们通过两次比较,跳过了两次元素位置,通过两次比较获得了两个值,由此可以类推:如果有n个序列,一般情况下需要进行x+y次比较动作才可获得正确的结果,每次比较过程中都要进行n-1次比较,所以共进行(x+y)·(n-1)次比较。
对时间复杂度的判断:此方案的时间复杂度为分为三个步骤,步骤1、定位到第x位置的时间复杂度为O((n-1)x);步骤2、取数的时间复杂度为O((n-1)y);步骤3、取完数后进行排序的时间复杂度为O(ylog2y)。故总时间复杂度为O((n-1)·(x+y)) + O(ylog2y) = O(nx)。
对空间复杂度的判断:此方案需要长度为n的数据索引记录位置下标,总空间复杂度为O(n)。
传统实现方案C
本方案是在前述方案B的基础上引入了堆运算的概念,解决步骤如下:
步骤1、先取每个升序序列的第一位构建小根堆,同时准备一个长度为(x+y)的队列。小根堆结构。此时,其在这三个升序序列中的位置状态如下表所列:
Figure 467531DEST_PATH_IMAGE013
移除该小根堆的堆顶元素,将堆顶元素所在序列位置向后移动一位,然后将该位置数据加入小根堆同时调整堆结构。此时,在这三个序列中的位置状态如下表所列:
Figure 417776DEST_PATH_IMAGE015
步骤3、重复步骤2共x次;
步骤4、从第x+1次开始,在步骤2操作前将堆顶元素加入队列;
重复步骤4直到查找结束(取到了y个元素)。
对时间复杂度的判断:此方案的时间复杂度分以下几个组成部分,定位开始位置的时间复杂度O(log2n·x)、取元素的时间复杂度O(log2n·y),因此总时间复杂度为O(xlog2n) + O(ylog2n) = O((x+y)·log2n) = O(xlog2n)。
对空间复杂度的判断:此方案需要一个额外的堆辅助调整,故空间复杂度为O(n)。
综上可以预见的是,前述方案A占用的数据存储空间将非常大,在海量数据下几乎不具可用性,同时其时间复杂度非常大。方案B由于序列数n随着开始位置x和取值数y的变大,会极大增加比较成本。在实际应用当中,当x>1000时效率非常低,尤其是对所需比较的所有数据都要读取一遍,对于数据库分表方案来说,磁盘I/O和网络I/O的成本都非常高,在x取值非常大的情况下完全不可用,这也是许多实际应用方案对x做了小于等于10000限制的原因。方案C实际上是方案B的优化,主要是降低数据库的读取量和比较次数,较方案B的性能有了非常大的提升,但是实际应用过程依然无法满足应用需要。方案B和C两者的时间复杂度都会随着n和x的变大而急剧增加,因此如何设计一种高效的算法,使得时间复杂受x的影响低,尤其是x非常巨大的时候(诸如x=1000,000,000时)依然具有可用性(耗费时间在秒级)是非常需要的,而本发明可以非常好地解决此问题。
发明内容
本发明对前述传统实现方案进行改进优化,在已经对所期望定位的第x位之前的x个数据集完成排序的基础上实现一种快速从多个有序序列中获取从某一位置开始后的若干个有序数据的装置。
在本发明的任何实施例中,对于所获得的n个有序序列而言,将所期望的第x位的值划分为x/n,将这n个有序序列的每一者均设定初始化位置在x/n,然后将取值最大的元素和取值最小的元素记录调整位置以形成一次振荡调整。在一个例子里,可在整体数据量级足够大的情况下将该振荡调整的初始化位置(即振幅)设定的非常大,然后逐次缩减该振幅以快速接近所期望查找的数据集的位置。一般来说,可将初始振幅设定为x/2n,随后逐次除以2直至该振幅为1,从而能够快速地确定期望数据集所处的位置。
本发明的主要技术方案是:一种快速获取有序序列数据的装置,用于从多个分布式计算设备中存储的n个有序序列中获取从某一序列位置起始的若干个有序数据,这些分布式计算设备包括主计算设备和与之通讯的多个从计算设备,所述装置包括:设置在所述从计算设备中的初始化单元,被配置为将这n个有序序列的每一者各设定一初始化位置;以及设置在所述主计算设备中的处理单元,被配置为基于所设定的初始化位置,将每一有序序列中的序列取值位置调整若干次以构成一或多次振荡调整以得到所需查找有序的该某一序列位置的数据在每个序列中的起始位置,其中每次振荡调整的振幅是将前一次振荡调整的振幅幅度缩少。
在一个改进中,所述处理单元包括振荡单元,被配置为当初始化位置不满足预设结果要求时通过上述振荡方式来重置所述初始化位置以更接近所需查找的数据位置。
在此基础上的进一步改进中,所述装置还包括设置在至少一从计算设备中的比较单元,被配置为将来自其它从计算设备的至少两个所述有序序列的初始化位置的值进行比较以选择其中一个有序序列并传输给主计算设备。
在此基础上更进一步地,所述处理单元进一步被配置为:仅当所述振荡调整出现循环时,将任意一个出现该循环的位置的数据集记录调整一个位置并构造至少一个大小为n的堆,对该堆进行2n次调整运算以得到所需查找数据集的起始位置。
在一个实施例中,所述处理单元还被配置为定义多个所述有序序列的边界位置。
本发明实施例的时间复杂度可分以下几个组成部分:对于n个序列从第x位开始取y个元素来说,振荡次数平均为O(log2(x/2n)),振荡后精确定位平均为O(2(x/n)·log2n),取数过程的时间复杂度为O(ylog2n),总平均时间复杂度为O(log2(x/2n)) + O(2(x/n)·log2n) + O(ylog2n) = O(log2(x/n)) + O(ylog2n) = O(log2(x/n))。
同时,本发明实施例需要构建一个额外的堆实现辅助调整,故空间复杂度为O(n)。
实际来说,当n=100,k=1000000,x=10000,y=100时,比较前述三种传统实现方案的大致运算次数差异可知,方案A为1000000·log21000000 + 100 = 20000100,方案B为(100-1)·(10000+100) + 100log2100 = 100560,方案C为10000·log2100+100log2100 =66660。本发明实施例为log2(10000/100) + 100·log2100 = 666。
由此可以看出,前述传统方案A不管从时间复杂度还是空间复杂度来说都表现的相当不理想,传统方案B较方案A从时间复杂度来说降低了两个数量级,空间复杂度方面降低了四个数量级,而传统方案C较方案B来说时间复杂度降低了数倍,空间复杂度与方案B持平。本发明技术方案与方案B和方案C相比时间复杂度降低了两个数量级(当忽略取数时,更是降低了四个数量级),在空间复杂度近乎相同的情况下,使用本发明的技术方案是最好的选择。
具体实施方式
本发明使用的数据存取方式可基于多个服务器通过有线/无线方式向计算主站根据振荡逻辑传输数据的装置和方法,服务器可使用客户端、受信任的蜂窝电话、智能电话、个人电脑(PC)或便携式电脑(桌面型或膝上型的)以及可联网的PDA、媒体设备等移动设备或前述的任意组合。每一服务器的传输信道配置是以计算主站来执行分配。每一服务器包含数据库或代理服务器提供的数据库用于存放各自大小的数据和不同的数据类型。
从一个方面来说,本发明的装置可主要应用于分布式数据存取环境下,包括:初始化单元,被配置为将从若干个分布式数据库获得的n个有序序列的每一者设定初始化位置在x/n;以及处理单元,基于所设定的初始化位置,将每一有序序列中的序列取值位置调整若干次以构成振荡调整,从而得到所需查找有序的该某一位置的数据在每个序列的起始位置,其中每次振荡调整的振幅是将前一次振荡调整的有序序列的振幅幅度缩少。在一个实施例中,所述振幅幅度缩少为减半运算。
例如,对于单个的有序序列来说,可直接定位查找位置到x。而对于两个有序序列来说,因为存在相互影响与比较的关系不能直接得出结论,但可以把x划分为x/2,将两个序列都初始化位置为x/2。然后将这两个位置的元素进行比较,较小的向下记录调整移动一位(如果是降序则上移),较大的往上移动一位(如果是降序则下移)。在经过一定次数的移动之后就会产生循环,这个时候可认为非常接近所期望查找的位置。
进一步地,该初始化单元还被配置为检测每一分布式数据库的所需读取和处理的有序序列的数据容量大小l,其中根据所述容量大小的最小值l min 来确定对其余较大数据容量的有序序列根据该最小值来分隔成例如m个有序子序列(m为正整数,且不为整数时向上取整)。较佳地,这m个有序子序列中的每一个设有对于该有序子序列中对应的数据内容的数据索引或元数据。其中该数据索引或元数据用于关联和表示所需获取的文件数据内容的特定标识(例如文件类型、属性等)或时间戳。例如,在需要查找一个用户的多个移动设备上存储的彼此不同的数据内容时,可通过对每一有序序列数据生成关于每一类文件(诸如图片、文档和/或应用程序)以仅把该数据索引或元数据构成有序序列。在一个实施例中,某些文件可被分割成多个子文件部分以分别地提供数据索引。
在此基础上,初始化单元还被配置为将这m个有序子序列按照与该最小值对应的有序子序列相同类型选取至少一个有序子序列来确定所述初始化位置,并将该初始化位置后的若干个有序数据。在一个较佳例子里,将所选取的这若干个有序数据对计算主站形成映射并执行合并后进行振荡处理。在此基础上,当根据所述振荡处理未得到所需获取的有序序列的最终位置时,删除当前的映射并重新选取这m个有序子序列中的剩余的一或多个重新执行所述映射。
同样,对于n个被合并的有序子序列而言,划分为x/n,然后将每个有序子序列都初始化位置为x/n。之后,将取值最大的数据集进行上移(降序则下移),取值最小的元素进行下移(降序则上移),将这种操作称之为振荡。在数据量够大的情况下我们完全可以将移动的初始化位数(即振幅)定的非常大,然后逐步缩小达到快速接近正确解的位置。在一个例子里,将初始振幅设定在x/2n,随后每次振荡调整将之前一次振荡振幅除以2直到振幅为1。
在此基础上,当出现无限次振荡(即死循环)时,现有的振荡算法已经无法得出精确解。通过分析整个振荡过程可知,距离每个位置上的最优解只有±1差距(振荡到最后出现死循环时的振幅必定为1)。例如,在位置一和位置二上已经出现了循环。这时可将任意一个出现循环的位置数据索引上移两个位置(为了确保正确值在该位置下方)。
在此,调整之后由于与精确解比较接近,这时可用精确算法来进行准确定位。可利用构造一个大小为n的小根堆,再对小根堆进行2n(n对应为有序序列的个数)次调整即可得出2n个排序后的元素,最后更新开始位置就得到了最终的期望调用的数据集位置。得到该位置之后,后面的取数过程也可以用小根堆(或大根堆)取完。
例如,假设有三个降序排列的文件的数据索引A、B、C(取l min =5)如下:A=[14,9,8,4,3],B=[13,12,6,2,1],C=[15,11,10,9,1],现在需求在这三个降序排列的有序子序列中从第9个元素开始取1个元素。根据本发明的方法实施例,在步骤S100中,将这三个有序子序列的每一者设定初始化位置在x/n。例如,根据数据调用设备的需求,将9划分为9/3=3,即每个数据索引中的初始化位置为第三个数据/数据集所在位置,即表1所列。然后,计算出振幅为9/(2·3),结果可将振幅设定为1。
Figure DEST_PATH_IMAGE016
表1
在步骤S200中,基于所设定的初始化位置,将每一有序子序列A、B、C中取值最小和最大的数据集记录调整位置若干次以形成振荡调整,从而得到所需查找数据的最终位置,其中每次振荡调整的振幅是将前一次振荡调整的有序序列的位置数量减半。例如,将定位的初始化位置的数据集中的最小值所在位置下移振幅1而最大值所在位置上移振幅1,形成表2所列。
Figure 172235DEST_PATH_IMAGE017
表2
重复步骤S200,将其中记录(也就是表中标记出)最大值数据集所处位置下移和最小值数据集所处位置上移将出现循环的情况,如表3所列。
Figure DEST_PATH_IMAGE018
表3
将当前各序列中的数据集记录调整的位置整体上移两位,得出表4所列。
Figure 243484DEST_PATH_IMAGE019
表4
在步骤S200中进一步包括:基于表2所列初始化构建一个大根堆。序列中元素位置:
Figure DEST_PATH_IMAGE020
表5
该序列中元素为[15]。然后,删除堆顶元素并将堆顶元素加入该子序列中,然后将堆顶元素所在序列的下一个元素插入堆中,最后对堆进行调整。
Figure DEST_PATH_IMAGE021
该序列中的元素为[12,11,10,9,9,8]。重复该步骤直到序列中元素为6个(也就是2n个),此时得出最终的开始位置。按照前述方式,取每个序列开始位置后一位新建大根堆,堆顶元素即为我们期望调取的元素。
在一些实施例中,需要考虑对振荡边界值的处理,振荡过程可能会出现上界越界或者是下界越界的情况,出现这种情况有两种原因:接近最优解(最优解在该序列全取或者是全不取)或一次振荡幅度太大。为了应对这两种情况,可引入一个boolean数据索引用于标识该数据索引是否被访问完(全取或者全不取)。当出现第二种情况时,将位置调整为0或者该数据索引长度,然后继续振荡,当出现第一种情况时(一般来说,振幅为1且出现了循环可被认为属于第一种情况),则标记该数据索引为访问完全的状态,然后剩余数据索引继续进行振荡操作。
提供和实现以上方法实施例的一种快速获取有序序列数据的装置,用于从多个分布式计算设备中存储的n个有序序列中获取从某一序列位置起始的若干个有序数据,这些分布式计算设备包括主计算设备和与之通讯的多个从计算设备,所述装置包括:设置在所述从计算设备中的初始化单元,被配置为将这n个有序序列的每一者各设定一初始化位置;以及设置在所述主计算设备中的处理单元,被配置为基于所设定的初始化位置,将每一有序序列中的序列取值位置调整若干次以构成一或多次振荡调整以得到所需查找有序的该某一序列位置的数据在每个序列中的起始位置,其中每次振荡调整的振幅是将前一次振荡调整的振幅幅度缩少。
在一个例子中,所述振幅幅度缩少为对该振幅幅度值的逐次减半运算。
在另一个例子中,所述的装置还包括设置在至少一从计算设备中的比较单元,被配置为将来自其它从计算设备的至少两个所述有序序列的初始化位置的值进行比较以选择其中一个有序序列并传输给主计算设备。
在此基础上,所述处理单元包括振荡单元,被配置为当初始化位置不满足预设结果要求时通过上述振荡方式来重置所述初始化位置以更接近所需查找的数据位置。
进一步来说,所述振荡单元进一步被配置为仅当所述振荡调整出现循环时,将任意一个出现该循环的位置的数据集记录整体上移两位,并在一个主计算设备中构造至少一个大小为n的堆,对该堆进行2n次调整运算以得到所需查找数据集的起始位置。
另外,所述处理单元还被配置为定义多个所述有序序列的边界位置。
进一步来说,所述处理单元还被配置为根据所述振荡调整和所确定的边界位置控制至少一个从计算设备执行一次对新的初始化位置的设定。
一种从多个有序序列中获取从某一位置开始后的若干个有序数据的程序,该程序可用于:将从n个有序序列的每一者设定初始化位置在x/n;以及基于所设定的初始化位置,将每一有序序列中的序列取值位置调整若干次以构成振荡调整,从而得到所需查找有序的第x个数据在每个序列起始位置,其中每次振荡调整的振幅是将前一次振荡调整的有序序列的振幅数量缩少。

Claims (5)

1.一种快速获取有序序列数据的装置,用于从多个分布式计算设备中存储的n个有序序列中获取从某一序列位置起始的若干个有序数据,其特征在于所述分布式计算设备包括主计算设备和与之通讯的多个从计算设备,所述装置包括:
所述从计算设备中设置的初始化单元,被配置为将这n个有序序列的每一者各设定一初始化位置, 将所期望的第x 位的值划分为x/n ,将这n 个有序序列的每一者均设定初始化位置在x/n;以及
所述主计算设备中设置的处理单元,被配置为基于所设定的初始化位置,将每一具有有序特性的序列中的序列取值位置调整一次或多次以构成一或多次振荡调整,一次振荡调整为将取值最大的元素和取值最小的元素记录调整位置,当序列为升序时,取值最大的元素对应的序列取值位置上移,取值最小的元素对应的序列取值位置下移;当序列为降序时,取值最大的元素对应的序列取值位置下移,取值最小的元素对应的序列取值位置上移;位置移动的位数是振荡调整的振幅;
以得到所需查找具有有序特性的该某一序列位置的数据在每个序列中的起始位置,其中每次振荡调整的振幅是将前一次振荡调整的振幅幅度缩少,
所述处理单元包括振荡单元,被配置为当初始化位置不满足预设结果要求时通过上述振荡调整来重置所述初始化位置以接近所需查找的数据位置,
所述振荡单元进一步被配置为仅当所述振荡调整出现死循环时,将任意一个出现该循环的位置的序列值记录上移两个位置,并在一个主计算设备中构造至少一个大小为n的堆,对该堆进行2n次位置调整运算以得到所需查找序列值的起始位置。
2.根据权利要求1所述的装置,其特征在于,所述振幅幅度缩少为对该振幅幅度值的逐次减半运算。
3.根据权利要求1所述的装置,其特征在于,还包括至少一从计算设备中设置的比较单元,被配置为将来自其它从计算设备的至少两个所述有序序列的初始化位置的值进行比较以选择其中一个具有有序特性的序列并传输给主计算设备。
4.根据权利要求1所述的装置,其特征在于,所述处理单元还被配置为定义多个所述具有有序特性的序列的边界位置。
5.根据权利要求4所述的装置,其特征在于,所述处理单元还被配置为根据所述振荡调整所定义的边界位置控制至少一个从计算设备执行一次对新的初始化位置的设定。
CN201910673180.2A 2019-07-24 2019-07-24 一种快速获取有序序列数据的装置 Active CN110377642B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910673180.2A CN110377642B (zh) 2019-07-24 2019-07-24 一种快速获取有序序列数据的装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910673180.2A CN110377642B (zh) 2019-07-24 2019-07-24 一种快速获取有序序列数据的装置

Publications (2)

Publication Number Publication Date
CN110377642A CN110377642A (zh) 2019-10-25
CN110377642B true CN110377642B (zh) 2020-06-02

Family

ID=68255661

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910673180.2A Active CN110377642B (zh) 2019-07-24 2019-07-24 一种快速获取有序序列数据的装置

Country Status (1)

Country Link
CN (1) CN110377642B (zh)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519510B2 (en) * 2014-03-31 2016-12-13 Amazon Technologies, Inc. Atomic writes for multiple-extent operations
CN104601732B (zh) * 2015-02-12 2018-01-23 北京金和软件股份有限公司 一种快速实现多路数据归并的方法
CN104850618B (zh) * 2015-05-18 2018-06-01 北京京东尚科信息技术有限公司 一种提供有序数据的系统和方法
CN109219808B (zh) * 2016-06-23 2022-01-18 施耐德电气美国股份有限公司 分布式系统的上下文特征数据驱动的顺序联合查询方法
CN106407395B (zh) * 2016-09-19 2019-09-20 北京百度网讯科技有限公司 数据查询的处理方法及装置
CN108777689A (zh) * 2018-06-08 2018-11-09 山东超越数控电子股份有限公司 一种快速确定ip所对应的地理位置信息的方法
CN109325032B (zh) * 2018-09-18 2020-10-27 厦门市美亚柏科信息股份有限公司 一种索引数据存储及检索方法、装置及存储介质

Also Published As

Publication number Publication date
CN110377642A (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
CN109325032B (zh) 一种索引数据存储及检索方法、装置及存储介质
CN110413611B (zh) 数据存储、查询方法及装置
CN111868710B (zh) 搜索大规模非结构化数据的随机提取森林索引结构
CN111801665B (zh) 用于大数据应用的分层局部敏感哈希(lsh)分区索引
CN107193813B (zh) 数据表连接方式处理方法及装置
CN107330094B (zh) 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法
CN108549696B (zh) 一种基于内存计算的时间序列数据相似性查询方法
CN104636349A (zh) 一种索引数据压缩以及索引数据搜索的方法和设备
WO2017095413A1 (en) Incremental automatic update of ranked neighbor lists based on k-th nearest neighbors
CN114090695A (zh) 分布式数据库的查询优化的方法和装置
CN114721594A (zh) 一种分布式存储方法、装置、设备及机器可读存储介质
CN115918110A (zh) 使用键值存储库的空间搜索
CN111723089B (zh) 一种基于列式存储格式处理数据的方法和装置
CN110069523A (zh) 一种数据查询方法、装置和查询系统
CN116982035A (zh) 分布式数据系统中索引质量的测量与改进
CN112445776B (zh) 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN110377642B (zh) 一种快速获取有序序列数据的装置
WO2017065795A1 (en) Incremental update of a neighbor graph via an orthogonal transform based indexing
CN112380004A (zh) 内存管理方法、装置、计算机可读存储介质及电子设备
WO2021012211A1 (zh) 一种为数据建立索引的方法以及装置
Li et al. Optimizational method of HBase multi-dimensional data query based on Hilbert space-filling curve
CN108763381A (zh) 基于一致性哈希算法的分表方法及设备
CN114547384A (zh) 资源对象处理方法、装置及计算机设备
Wang et al. Efficient spatial big data storage and query in HBase
CN111258955A (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