CN108717448B - 一种面向键值对存储的范围查询过滤方法和键值对存储系统 - Google Patents
一种面向键值对存储的范围查询过滤方法和键值对存储系统 Download PDFInfo
- Publication number
- CN108717448B CN108717448B CN201810477268.2A CN201810477268A CN108717448B CN 108717448 B CN108717448 B CN 108717448B CN 201810477268 A CN201810477268 A CN 201810477268A CN 108717448 B CN108717448 B CN 108717448B
- Authority
- CN
- China
- Prior art keywords
- range
- key
- filter
- node
- query
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向键值对存储的范围查询过滤方法和键值对存储系统。该范围查询过滤方法通过对键值对存储系统中每个容器所包含键值对的索引,用生长和收缩的方法,依据给定的空间预算生成范围过滤器,来实现对范围查询的过滤。并在查询过程中学习系统工作负载,调整范围过滤器。通过这样的动态调整,能够有效降低范围过滤器的假阳性率,提升其过滤效果,大大减少键值对存储系统的无效磁盘IO,提升整个系统的读性能。
Description
技术领域
本发明属于存储技术领域,具体涉及一种面向键值对存储的范围查询过滤方法、范围查询方法和键值对存储系统。
背景技术
随着移动互联网时代的到来,数字设备开始渗透到人类社会的方方面面,而这就带来了数据量的急速增长。根据IDC公司2017年的报告,到2025年,全球的数据量将扩展至163ZB,这是2016年的10倍。报告还指出,物联网的实时数据将会占据一个极大的份额。它们生成的数据形式也会非常多样,数据也会呈现出非结构化的特点,而这类数据非常适合用键值对存储(Key-Value Store)系统来进行存储。
根据百度的观察,在键值对存储系统中,读操作数是写操作数的两倍,很多键值对存储系统都过分强调了写操作优化,而忽视了读操作对键值对存储系统的重大影响。可以想见,在未来的相当长一段时间内,键值对存储的重要性会不断提升。而作为键值对存储的主要操作之一,范围查询(range query)所扮演的角色也会变得日益重要。
为了解决键值对存储的随机写问题,很多系统使用了一种名为LSM树(Log-Structured Merge-Tree)的写优化的数据结构,其主要写优化方式为延迟以及合并写入操作,将大量微小的随机写操作转化为少量较大的顺序写操作,从而最大化磁盘的写入性能。
同时,为了保证读取的性能,LSM树结构的键值对存储会将磁盘上的数据分为若干层,每一层都由同样大小的容器组成。每一层的覆盖范围都是键的分布范围,层与层之间的范围是互相重叠的,但每一层能够容纳的容器数量是逐渐递增的,即下一层的键值对容量是上一层的数倍。而每一层中,各个容器的覆盖范围是互不重叠的,且每个容器内部的键值对都是完全有序的。这样,如果要查询某一个键值对是否在磁盘中,只需在从上往下的每一层中,找到对应的容器,看是否有相应的键值对;如果找到就停止搜索过程,否则就继续寻找下一层,直到找到为止。由于读取磁盘数据的开销相当大,因此,键值对存储系统普遍会利用过滤器,来过滤不必要的磁盘IO。
但是,一般的过滤器只能应对单点查询,而无法对范围查询进行过滤。当一个键值对存储系统处理一次范围查询时,它无法像应对单点查询一样进行高效的过滤,只能每次都访问磁盘读取数据,如果对应的容器中并没有所查找范围内的键值对,就会造成大量的资源浪费。更糟糕的是,由于范围查询对应结果的不确定性,键值对存储系统无法在某一层提前得到结果并结束查询过程,必须从上往下检查每一层的数据,以防遗漏相应的键值对,从而保证结果的准确性。而这就会使得范围查询带来更多开销。因此,对于键值对存储系统而言,范围查询性能是一个相当严重的问题。
发明内容
发明目的:针对现有技术的不足,本发明提出一种面向键值对存储的范围查询过滤方法,能够有效地过滤键值对存储系统中的范围查询,避免不必要的磁盘IO,提升整个键值对存储系统的读取性能。
本发明的另一目的在于提供一种使用上述范围查询过滤方法的键值对存储系统。
技术方案:为了对本发明的技术方案有更清楚的认识,首先阐述本发明的技术构思如下:
在键值对存储系统中,键值对的内容虽然是不断变化的,但其中的容器,例如LevelDB中的SSTable,在其生命周期内是不变的。因此,只需要能够根据确定的一组键值对,生成相应的范围过滤器,然后利用这个范围过滤器对范围查询进行过滤就可以实现范围查询的过滤目标。此外,由于实际的键值对存储系统中,并不能对工作负载有先验知识,因此,范围过滤器需要动态调整以适应工作负载。不仅如此,尽管容器在其生命周期内键值对不会有变化,但其负责处理的工作负载却有可能变化,尤其是对于以读操作为主的键值对存储系统而言。因此,最好还要考虑使键值对存储系统能够动态调整,包括生长和收缩,以使之更加适应所需处理的工作负载。同时,由于键值对存储系统对内存需求很高,因此,范围过滤器应该尽量满足空间高效性。
根据上述技术构思,本发明采用的具体技术方案如下:
一种面向键值对存储的范围查询过滤方法,包括以下步骤:
1)依据键值对存储系统中容器内的键,结合内存开销,利用生长和收缩构建范围过滤器,该范围过滤器结构为二叉树,其中根节点代表着整个容器中键的范围区间,每一个非根节点都有其所对应的键的范围区间,该范围区间根据根节点的对应区间求出;每个节点都有一个形状变量,用于表明该节点是否为中间节点;每个叶节点还有一个标记变量,用于表明容器在该叶节点对应范围内是否有对应键值对;
2)利用范围过滤器,过滤范围查询操作,具体包括:
21)根据查询范围,找到对应叶节点;
22)根据叶节点的标记变量信息,判断是否有对应键,如有则返回真,系统读取容器内容,否则回到步骤21),继续查找下一个叶节点,直到有对应键或者超出查询范围;
23)如果所有与查询范围有重叠的叶节点都没有对应键,则返回假,系统不用读取容器内容。
上述范围过滤器在查询中出现假阳性(即范围过滤器判断某个查询在该容器内有对应的键值对,但实际上该容器中并没有相应结果)时触发生长,在内存开销超出预算时启动收缩。其生长过程如下:如果对某个范围的查询出现了假阳性情况,则根据该范围的左右两个边界,令范围过滤器尽量生长,直到到达预设的最大深度,或者对应键正好落在两个叶节点的分界处;并将所有被该查询范围完全覆盖的叶节点对应的标记变量设为假。
范围过滤器的收缩过程如下:顺序查找所有叶节点,如果该叶节点的兄弟节点也是叶节点,就让它们合并;不断收缩,直至范围过滤器的内存开销重新符合预算为止。当范围过滤器进行新一轮收缩过程时,从上一次停止收缩过程的叶节点开始继续查找过程。
查询过程如下:从根节点出发,找到查询范围所对应的第一个子节点,如果其标记变量值为真,则返回真;否则继续查找下一个对应范围内的子节点,直至标记变量为假,或超出查询范围为止。
一种键值对存储系统,在该存储系统中,一个容器对应如上所述的一个范围过滤器。范围过滤器根据容器所包含的键值对,以及容器面对的工作负载进行动态调整,并且对容器所遇到的范围查询进行过滤。
有益效果:
1、本发明采用二叉树结构来建立范围过滤器,用根节点代表着整个容器中键的范围区间,每一个非根节点所对应的键的范围区间不需要保存在内存中,而是可以根据根节点的对应区间求出。这样就可以只保存根节点的区间,通过计算来得到所有叶节点的对应区间,大大节省了内存开销,使得范围过滤器满足空间高效性目标。
2、本发明的范围过滤器的生长采用了一个非常巧妙的方法:在范围过滤器给出假阳性结果的时候让它生长。很显然,给出假阳性结果意味着,在范围过滤器的某一个或几个叶节点中,有一部分对应范围明明在容器中没有相应的键,却依旧标记为真。那么,通过处理这些节点,就可以将这部分范围重新标记为假。此外,因为这一生长过程是由查询操作触发的,因此,根据帕累托法则,这部分近期会被再次查询的可能也会比较高。通过满足以上两个条件,这样的生长过程理论上能够很好地提升范围过滤器的过滤能力。
3、本发明的范围过滤器当过滤器的大小超过内存预算时启动收缩,收缩策略为:按照叶节点顺序进行遍历,一旦遇到一个叶节点,其兄弟节点也是叶节点,就将它们两个节点合并。这一做法的优势在于非常简单,不需要额外的存储空间,能够将过滤器所有的内存开销都用于生长过程,对提升精度有一定的帮助;此外,该策略足够简单,从而也能够有效节省计算开销。
附图说明
图1是根据本发明实施例的范围过滤器示意图;
图2是根据本发明实施例的范围过滤器生长示意图;
图3是根据本发明实施例的范围过滤器收缩示意图;
图4是根据本发明实施例的范围过滤器在键值对存储系统中的示意图。
具体实施方式
下面结合附图对本发明的技术方案作进一步说明。
首先依据键值对存储系统中容器内的键,结合内存开销,利用生长和收缩构建范围过滤器。图1是根据本发明实施例的范围过滤器示意图。如图1所示,范围过滤器是一棵二叉树,其中根节点代表着整个容器中键的范围区间,在图中即为[aa,iq)。每一个非根节点都有其所对应的键的范围区间,但是,这个区间不需要保存在内存中,而是可以根据根节点的对应区间求出。非叶节点的作用就在于,对于每一次查询,都能依靠非叶节点找到相对应的叶节点。每一个非叶节点都必然有两个子节点,通过对这两个子节点应用求两个字符串中点的算法,将父节点的对应范围均分。对两个字符串求中点的本质是将两个字符串之间的范围均分。算法具体操作为:将每一个字符都视作整型数,对两个字符串的每一位的对应字符求中值,如果不整除,则将余数留到下一位进行处理。如果下一位的两个字符数值很大,而上一位还有余数,则会导致进位。例如节点[aa,ei),在ASCII编码中,a对应的十进制数为97,e对应101,i对应105,因此a与e的中值为99,即c,而a与i的中值为101,即e,因此范围aa和ei的中间值为ce,从而它的左右子节点对应的范围分别为[aa,ce)以及[ce,ei)。这样就可以只保存根节点的区间,通过计算来得到所有叶节点的对应区间,大大节省了内存开销,这也是范围过滤器空间高效性的主要来源。注意,每个节点的区间都是一个左闭右开区间,这样就能确保整个范围都能被彻底地覆盖,而不会出现有某个区间被遗漏的情况。由于每棵树都有根节点,且根节点肯定不是叶节点,因此,在这里规定根节点的子节点为第0层的节点,往下依次为第1层、第2层等。
如果内存预算充足,理论上范围过滤应该是一棵完全二叉树。但实际上,这么做的内存开销过大,违背了设计目标中的空间高效性。因此,范围过滤器实际上会有一定的内存预算,在生长和收缩过程中取得一个动态平衡。因此,范围过滤器一般情况下是一棵不平衡的二叉树。
根据之前的说明,每个非叶节点都有两个子节点。在此基础上,通过区分叶节点和非叶节点,就可以很容易地构建树形结构。这里,用一个布尔变量(即形状变量)来进行区分:
0:叶节点,例如图中的节点[ei,iq)
1:非叶节点,例如图中的节点[aa,ei)
很显然,每一个范围过滤器都是有根节点的,因此,根节点的布尔变量可以省略。从而图1所示的示例范围过滤器可以表示为:
第0层 1 0
第1层 0 1
第2层 0 0
以第0层为例,节点[aa,ei)是一个中间节点,因此其对应的值为1;而节点[ei,iq)是一个叶节点,因而其对应的值为0。其他两层也是类似的。通过这样的方式,完全可以不使用指针就表示出范围过滤器的形状。非但如此,根据根节点的范围,还可以很容易求出每一个节点对应的范围,从而在消耗很少的存储空间的情况下,保留下相当大的信息量。
此外,每一个叶节点还需要有一个布尔变量,即标记变量,用于表明该叶节点所对应的区间是否有相应的键在容器中。以图1所示的范围过滤器为例,它的叶节点对应的布尔变量序列为:
第0层 1
第1层 0
第2层 1 0
第0层的叶节点[ei,iq)覆盖范围内有对应的键值对,因而其布尔变量为1;而第1层的叶节点[aa,ce)覆盖范围内无对应键值对,所以其对应布尔变量为0。第2层类似。
范围过滤器的生长和收缩同其他所有的树形结构一样,通过叶节点的分裂而生长,通过叶节点的合并来收缩。注意到,如果要提升范围过滤器的过滤能力,就需要产生尽可能多的叶节点,令其标记变量值为假,且覆盖范围尽可能大;并且这些节点的覆盖范围会经常被查询到。但是,怎样才能很好地满足这两个条件呢?如果采用一般的树形结构,比如B树的生长方式,就很难达到这些要求,反而会带来较大的负担。因此,本发明采用了一个非常巧妙的方法:在范围过滤器给出假阳性结果的时候让它生长。很显然,给出假阳性结果意味着,在范围过滤器的某一个或几个叶节点中,有一部分对应范围明明在容器中没有相应的键,却依旧标记为真。那么,通过处理这些节点,就可以将这部分范围重新标记为假。此外,因为这一生长过程是由查询操作触发的,因此,根据帕累托法则,这部分近期会被再次查询的可能也会比较高。通过满足以上两个条件,这样的生长过程理论上能够很好地提升范围过滤器的过滤能力。
图2是图1所描绘的范围过滤器的生长过程。左侧是最原始状态的范围过滤器,仅仅包含根节点及其左右叶子节点,并且这两个叶子节点的标记状态都为真,因此该过滤器还没有任何过滤能力,任何的查询请求都会导致系统从容器中读取数据。而右图是节点[aa,ei)分裂之后的结果。通过将[aa,ei)均分为[aa,ce)与[ce,ei)之后,[aa,ce)这一子节点的标记变量为假,此时,范围过滤器已经有了一定的过滤能力,能够将[aa,ce)范围内的查询操作完美过滤。如果过滤器进一步分裂,将节点[ce,ei)均分,那么,最后得到的结果就是图1所示的过滤器了,而由于[dg,ei)部分的标记变量为假,它的过滤能力会进一步提升。
图2右图到图1的生长过程具体如下:
1)开始的状态如图2右侧所示,此时出现了一个查询q=[dg,ei),过滤器给出的结果是true。
2)系统读取了磁盘上的容器,发现并没有相应的键值对存在。
3)此时,已经知道[dg,ei)是一个假阳性结果,因此,图2右侧的过滤器是不准确的。为了提升准确性,需要让过滤器生长以反映出已知的信息,其结果为图1的形态,正确地表示出SSTable在[dg,ei)这一范围并不包含键值对。为了达到这一目的,首先让过滤器的节点[ce,ei)分裂,然后将[dg,ei)这一部分的标记变量值标记为假。
4)在这一过程中,其他分裂出的叶节点的标记变量值依旧为真,因为并不知道它们是否有对应键值对,并且准确性要求必须避免假阴性(即某次查询实际在容器中有相应的结果,而范围过滤器判断没有)的出现。由于不会涉及到任何查询范围外的叶节点,因此能够保证正确性。
通过这样的生长过程,可以提升范围过滤器的准确度,避免犯下同样的错误。但是,生长不可避免会带来内存开销的增大,如果一味追求更好地精度,那么过滤器的大小只会越来越大,甚至赶上容器的元数据大小,那就与本发明的目标背道而驰了。而范围过滤器的内存预算显然是有限的。因此,当过滤器的大小超过内存预算时,就需要对其进行收缩。下面描述范围过滤器的收缩过程。
收缩过程采用一种最简单的策略。按照叶节点顺序进行遍历,一旦遇到一个叶节点,其兄弟节点也是叶节点,就将它们两个节点合并。这一做法的优势在于非常简单,不需要额外的存储空间,能够将过滤器所有的内存开销都用于生长过程,对提升精度有一定的帮助;此外,这么做足够简单,能够有效节省计算开销。
如图3所示,首先检查节点[aa,ce),发现其兄弟节点是一个中间节点,无法进行合并,因此检查下一个叶节点[ce,dg),它的兄弟节点[dg,ei)也是一个叶节点,因而可以合并,最后的合并结果如图3右侧所示。
查找的过程也相对简单。首先,正如之前所说的,根节点没有表示形状的比特,因此规定,根节点的子节点为第0层的节点。首先以根节点为父节点,得到其左右子节点分别对应的范围,然后判断出所查找的字符串在哪个子节点对应范围内。如果该子节点正好是叶节点,则返回该子节点的信息,否则,将该子节点作为新的父节点,进入新一轮迭代,直至找到对应的叶节点。如果范围过滤器要处理某个查询请求q=[left,right],那么,它会首先判断这个查询请求的范围是否与根节点范围有重叠,如果没有,则直接判定无对应值,否则,首先找到left所对应的叶节点,如果该叶节点的标记变量值为真,则表明容器中含有相应的键值对,需要从磁盘读取数据;否则,继续查找覆盖范围相邻的叶节点,直到某个叶节点的标记变量值为真,或者对应叶节点包含right为止。如果所有查询的叶节点标记变量值都为假,则表明这个容器中并不包含所查询的键值对,因此就不需要访问磁盘,成功地减少了不必要的开销。以图1所示的容器为例,如果q1=[aa,bb],则首先找到aa对应的叶节点为[aa,ce),而该节点的标记变量值为假,且bb也包含在该范围内,因此不需要访问磁盘;而如果q2=[dg,em],则首先找到的叶节点为[dg,ei),该节点标记变量值为假,但em并不在该范围内,因此继续寻找下一个包含em的叶节点,发现叶节点[ei,iq)对应的标记变量值为真,因此需要访问磁盘读取容器的数据,最终将对应值el加入结果中。
图4是配备范围过滤器的键值对存储系统示意图。如图所示,在键值对存储系统中,一个容器对应一个范围过滤器。范围过滤器根据容器所包含的键值对,以及容器面对的工作负载进行动态调整,并且对容器所遇到的范围查询进行过滤,从而避免不必要的磁盘IO,提升了整个系统的读取性能。
Claims (4)
1.一种面向键值对存储的范围查询过滤方法,其特征在于,包括以下步骤:
1)依据键值对存储系统中容器内的键,结合内存开销,利用生长和收缩构建范围过滤器,该范围过滤器结构为二叉树,其中根节点代表着整个容器中键的范围区间,每一个非根节点都有其所对应的键的范围区间,该范围区间根据根节点的对应区间求出;每个节点都有一个形状变量,用于表明该节点是否为中间节点;每个叶节点还有一个标记变量,用于表明容器在该叶节点对应范围内是否有对应键值对;所述范围过滤器在查询中出现假阳性时触发生长,在内存开销超出预算时启动收缩,所述范围过滤器的生长过程如下:如果对某个范围的查询出现了假阳性情况,则根据该范围的左右两个边界,令范围过滤器尽量生长,直到到达预设的最大深度,或者对应键正好落在两个叶节点的分界处;并将所有被查询范围完全覆盖的叶节点对应的标记变量设为假;所述范围过滤器的收缩过程如下:顺序查找所有叶节点,如果该叶节点的兄弟节点也是叶节点,就让它们合并;不断收缩,直至范围过滤器的内存开销重新符合预算为止;
2)利用范围过滤器,过滤范围查询操作,具体包括:
21)根据查询范围,找到对应叶节点;
22)根据叶节点信息,判断是否有对应键,如有则返回真,系统读取容器内容,否则回到步骤21),继续查找下一个叶节点,直到有对应键或者超出查询范围;
23)如果所有与查询范围有重叠的叶节点都没有对应键,则返回假,系统不用读取容器内容。
2.根据权利要求1所述的面向键值对存储的范围查询过滤方法,其特征在于,所述非根节点对应的键的范围区间计算方法如下:将每一个字符都视作整型数,对两个字符串的每一位的对应字符求中值,如果不能整除,则将余数留到下一位进行处理;如果下一位的两个字符数值很大,而上一位还有余数,则进行进位。
3.根据权利要求1所述的面向键值对存储的范围查询过滤方法,其特征在于,所述范围过滤器进行新一轮收缩过程时,从上一次停止收缩过程的叶节点开始继续查找过程。
4.一种键值对存储系统,其特征在于,所述键值对存储系统中一个容器对应一个范围过滤器,所述范围过滤器为根据权利要求1-3中的任一项所述的范围查询过滤方法中生成的范围过滤器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810477268.2A CN108717448B (zh) | 2018-05-18 | 2018-05-18 | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810477268.2A CN108717448B (zh) | 2018-05-18 | 2018-05-18 | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108717448A CN108717448A (zh) | 2018-10-30 |
CN108717448B true CN108717448B (zh) | 2022-02-25 |
Family
ID=63899901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810477268.2A Active CN108717448B (zh) | 2018-05-18 | 2018-05-18 | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108717448B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542912B (zh) * | 2018-12-04 | 2020-10-30 | 北京锐安科技有限公司 | 区间数据存储方法、装置、服务器及存储介质 |
CN113326262B (zh) * | 2021-05-14 | 2022-06-24 | 锐掣(杭州)科技有限公司 | 基于键值数据库的数据处理方法、装置、设备及介质 |
CN116595015B (zh) * | 2023-07-18 | 2023-12-15 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
CN118193540B (zh) * | 2024-05-10 | 2024-08-09 | 中移(苏州)软件技术有限公司 | 索引处理方法、装置、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110171A (zh) * | 2011-03-22 | 2011-06-29 | 湖南大学 | 基于树形结构的布鲁姆过滤器的查询与更新方法 |
CN105159915A (zh) * | 2015-07-16 | 2015-12-16 | 中国科学院计算技术研究所 | 可动态适应的lsm树合并方法及系统 |
CN107330094A (zh) * | 2017-07-05 | 2017-11-07 | 湖南大学 | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 |
-
2018
- 2018-05-18 CN CN201810477268.2A patent/CN108717448B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110171A (zh) * | 2011-03-22 | 2011-06-29 | 湖南大学 | 基于树形结构的布鲁姆过滤器的查询与更新方法 |
CN105159915A (zh) * | 2015-07-16 | 2015-12-16 | 中国科学院计算技术研究所 | 可动态适应的lsm树合并方法及系统 |
CN107330094A (zh) * | 2017-07-05 | 2017-11-07 | 湖南大学 | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 |
Non-Patent Citations (1)
Title |
---|
Accelerating Range Query Execution of in-Memory Stores: A Performance Study;Duc Hai Nguyen 等;《IEEE 18th International Conference on High Performance Computing and Communications》;20161231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108717448A (zh) | 2018-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108717448B (zh) | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 | |
CN102521334B (zh) | 一种基于分类特性和平衡二叉树的数据存储、查询方法 | |
US9442929B2 (en) | Determining documents that match a query | |
CN102890722B (zh) | 应用于时序历史数据库的索引方法 | |
CN105975587B (zh) | 一种高性能的内存数据库索引组织与访问方法 | |
US9141666B2 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
US10452676B2 (en) | Managing database with counting bloom filters | |
CN102110171B (zh) | 基于树形结构的布鲁姆过滤器的查询与更新方法 | |
CN106777003B (zh) | 一种面向Key-Value存储系统的索引查询方法和系统 | |
CN112765405B (zh) | 空间数据搜索结果的聚类和查询的方法及系统 | |
US11294816B2 (en) | Evaluating SQL expressions on dictionary encoded vectors | |
CN108009265B (zh) | 一种云计算环境下的空间数据索引方法 | |
CN107436911A (zh) | 模糊查询方法、装置及查询系统 | |
CN106991149B (zh) | 一种融合编码和多版本数据的海量空间对象存储方法 | |
CN111125120A (zh) | 一种面向流数据的快速索引方法、装置、设备及存储介质 | |
CN110134335A (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
US20070094313A1 (en) | Architecture and method for efficient bulk loading of a PATRICIA trie | |
CN103092992A (zh) | 基于Key/Value型NoSQL数据库的矢量数据先序四叉树编码和索引方法 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN112395288A (zh) | 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 | |
CN104794196B (zh) | 一种树形结构数据的采集和更新方法 | |
CN112632118A (zh) | 查询数据的方法、装置、计算设备和存储介质 | |
Lang et al. | The case for hybrid succinct data structures | |
Roumelis et al. | Bulk Insertions into xBR-trees | |
KR102388458B1 (ko) | 데이터 키 값 변환 방법 및 장치 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190719 Address after: 210093 Nanjing, Gulou District, Jiangsu, No. 22 Hankou Road Applicant after: Nanjing University Applicant after: Zhejiang Electric Power Co., Ltd. Applicant after: NARI Group Co. Ltd. Address before: 210093 Nanjing, Gulou District, Jiangsu, No. 22 Hankou Road Applicant before: Nanjing University |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |