一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种布隆过滤器配置方法、装置及设备与流程

2022-11-23 10:35:49 来源:中国专利 TAG:
1.本技术涉及存储
技术领域
:,尤其涉及一种布隆过滤器配置方法、装置及设备。
背景技术
::2.日志化结构合并树(log-structuredmerge-tree,lsm-tree)是一种分层、有序、面向磁盘的数据存储结构。lsm-tree的结构类比于树,lsm-tree为多层结构,当前一层中存储数据量达到一定阈值时,前一层的数据会并入到下一层。所以在lsm-tree中最上层存储的数据是最新写入的数据,下层存储的数据是之前写入的数据。3.lsm-tree的引入,使得数据能够有序的写入到存储器中,提高了数据写入效率。当需要从lsm-tree(以lsm-tree存储数据的存储器)中读取数据时,需要按照lsm-tree中各层的先后顺序,依次从对每层进行查询,直至查询到需要读取的数据,这种数据读取方式导致数据读取效率变差。4.为了能够提高数据读取效率,可以为lsm-tree的每层配置布隆过滤器(bloomfilter,bf),在查询某层是否存储有需要读取的数据时,先将该数据的键输入到布隆过滤器,根据布隆过滤器的输出确定该层是否存储有该数据。这样能够有效减少数据查询次数,提高数据读取的效率。但布隆过滤器的原理是以空间换时间,为布隆过滤器配置的空间越大,布隆过滤器的误报率就越低,lsm-tree的数据读取效率就更好。但目前为布隆过滤器配置的空间通常是固定的,对于层数较多的lsm-tree,下层的布隆过滤器的误判数量会变大,会影响lsm-tree整体的数据读取效率。技术实现要素:5.本技术提供一种布隆过滤器配置方法、装置及设备,用以灵活的配置布隆过滤器的空间。6.第一方面,本技术实施例提供了一种布隆过滤器配置方法,该方法可以由配置装置执行,该方法可以应用于以lsm-tree存储数据的存储器或存储系统中。在该方法中,配置装置可以执行数据并入操作。例如,配置装置可以将目标数据从lsm-tree中的第一层并入至lsm-tree中的第二层,第二层为第一层的下一层。7.除了执行数据并入操作,配置装置还可以为第二层的布隆过滤器配置存储空间,该第二层的布隆过滤器可以是第二层为数据并入新创建的sstable的布隆过滤器。配置装置为第二层的布隆过滤器配置存储空间时,可以根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间。8.通过上述方法,配置装置能够根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间,布隆过滤器的存储空间不再是相对固定的,这样配置的第二层的布隆过滤器的存储空间更能符合目标数据在第二层的数据访问情况,进一步,能够减少第二层的布隆过滤器的误判次数。9.在一种可能的实施方式中,采用前述方式配置布隆过滤器的存储空间,允许不同层的布隆过滤器中键所对应的空间不同。例如,第一层的布隆过滤器中键所对应的空间与第二层的布隆过滤器中键所对应的位数不同。10.通过上述方法,不同层的布隆过滤器中键所对应的空间不同,这样不同层的布隆过滤器的存储空间存在较大差别,布隆过滤器的存储空间配置方式更加灵活,也更加能够符合所在层的数据访问情况。11.在一种可能的实施方式中,采用前述方式配置布隆过滤器的存储空间,允许同层的不同布隆过滤器中键所对应的空间不同。例如,第二层中不同sstable的布隆过滤器中键所对应的位数可以不同。12.通过上述方法,同层的布隆过滤器中键所对应的空间不同,这样同层的布隆过滤器的存储空间存在较大差别,同一层的布隆过滤器的存储空间配置方式更加灵活,也更加能够符合所在层所对应的sstable的数据访问状态。13.在一种可能的实施方式中,数据访问状态可以通过下列的至少一种表示。14.数据访问次数、数据命中次数、数据访问频率(数据访问频率可以理解为单位时间或特定时间内的数据访问次数)、数据命中频率(数据命中频率可以理解为单位时间或特定时间内的数据命中次数)。上述参数仅是举例,凡是能够表征数据访问状态的参数均适用于本技术实施例。15.其中,数据访问次数指示在查询目标数据时对第一层的布隆过滤器访问的次数。这里的第一层的布隆过滤器可以是目标数据所在sstable的布隆过滤器。在具体应用中,第一层的布隆过滤器可以是该第一层的所有布隆过滤器(如在lsm-tree中数据并入方式为以层粒度进行的场景中),也可以是第一层中的部分布隆过滤器(如在lsm-tree中数据并入方式为以sstable粒度进行的场景中)。16.数据命中次数指示在查询目标数据时对第一层的sstable遍历数据时命中数据的次数。这里的第一层的sstable可以是目标数据所在sstable。在具体应用中,第一层的sstable可以是该第一层的所有sstable(如在lsm-tree中数据并入方式为以层粒度进行的场景中),也可以是第一层中的部分sstable(如在lsm-tree中数据并入方式为以sstable粒度进行的场景中)。17.通过上述方法,数据访问状态的表征方式较为灵活,适用于不同应用场景。18.在一种可能的实施方式中,配置装置在根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间时,可以根据目标数据在第一层的数据访问状态计算确定第二层的布隆过滤器中键所对应的空间,第二层的布隆过滤器的存储空间等于布隆过滤器所对应的sstable中的键总数与布隆过滤器中键所对应的空间的乘积。19.通过上述方法,配置装置可以根据目标数据在第一层的数据访问状态灵活的配置第二层的布隆过滤器中键所对应的空间,使得最终确定的第二层的布隆过滤器的存储空间能够符合目标数据的数据访问情况,减少第二层布隆过滤器的误判次数。20.在一种可能的实施方式中,若目标数据包括第一层的所有sstable的数据;第二层的布隆过滤器中键所对应的空间满足如下条件:21.条件一、目标数据在第二层中的误遍历次数最小,误遍历次数是指由于第二层的布隆过滤器的误判导致的对第二层的sstable遍历的次数,误遍历次数是根据目标数据在第一层的数据访问状态和第二层的布隆过滤器中键所对应的空间预测的。22.条件二、第二层的布隆过滤器的总存储空间小于第一存储空间阈值。这里第二层的布隆过滤器可以为新创建的sstable的布隆过滤器,也可以是第二层中所有sstable的布隆过滤器。23.配置装置在根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间时,可以先根据第一层的数据访问状态计算目标数据在第二层中的误遍历次数;之后,在满足条件二的情况下,确定目标数据在第二层中的误遍历次数最小时第二层的布隆过滤器中键所对应的空间。24.通过上述方法,在目标数据为第一层中所有sstable的数据的情况下,所配置的第二层的布隆过滤器中键所对应的空间能够使得第二层的布隆过滤器所占用的总的存储空间较少,误判次数较少。25.在一种可能的实施方式中,若目标数据包括第一层的所有sstable的数据;配置装置在根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间,可以根据第一时间段内lsm-tree各层的数据访问状态预测第二层的布隆过滤器的存储空间。也就是说,配置装置可以根据第一时间段内lsm-tree所有层的数据访问状态估计之后一段时间内,如第二时间段内第二层的数据访问状态,进而确定第二层的布隆过滤器的存储空间。26.举例来说,配置装置可以根据第一时间段内lsm-tree各层的数据访问状态预测第二时间段内lsm-tree各层的数据遍历次数,每层的数据遍历次数等于遍历层中sstable的次数;在满足目标条件的情况下,配置装置确定第二时间段内lsm-tree各层的数据遍历次数的总值最小时第二层的布隆过滤器中键所对应的空间,目标条件为lsm-tree所有布隆过滤器的总存储空间小于第二存储空间阈值。27.通过上述方法,配置装置能够综合考虑lsm-tree整体的数据访问状态为第二层的布隆过滤器配置存储空间,使得第二层的布隆过滤器能够更加贴合lsm-tree整体的数据访问状态,从整体上减少第二层的布隆过滤器的误判次数。28.在一种可能的实施方式中,若目标数据包括第一层的部分sstable的数据;第二层的布隆过滤器中键所对应的空间满足如下条件:29.条件一、目标数据在第二层中的误遍历次数最小,误遍历次数是指由于第二层的布隆过滤器的误判导致的对第二层的新创建的sstable遍历的次数,误遍历次数是根据目标数据在第一层的数据访问状态和第二层的布隆过滤器中键所对应的空间预测的。30.条件二、第二层的布隆过滤器的总存储空间小于第一存储空间阈值。这里第二层的布隆过滤器可以为新创建的sstable的布隆过滤器,也可以是第二层中所有sstable的布隆过滤器。31.配置装置在根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间时,可以根据目标数据在第一层的数据访问状态计算目标数据在第二层中的误遍历次数,之后,在满足条件二的情况下,确定目标数据在第二层中的误遍历次数最小时第二层的各个布隆过滤器中键所对应的空间。32.通过上述方法,在以sstable为粒度数据并入方式中,配置装置能够确定第二层的各个布隆过滤器中键所对应的空间,使得第二层的不同布隆过滤器键所对应的空间可以不同,这样每个布隆过滤器的存储空间不同,更能符合所对应的sstable的数据访问特点,以达到减少误判次数的效果。33.在一种可能的实施方式中,若目标数据包括第一层的部分sstable的数据;配置装置在根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间时,可以根据第一时间段内lsm-tree各层的各个sstable的数据访问状态预测第二层的布隆过滤器的配置空间。也就是说,配置装置可以根据第一时间段内lsm-tree中所有sstable的数据访问状态估计之后一段时间内,如第二时间段内第二层的sstable的数据访问状态,进而确定第二层的布隆过滤器的存储空间。34.举例来说,配置装置可以根据第一时间段内lsm-tree各层的各个sstable的数据访问状态预测第二时间段内lsm-tree各层的数据遍历次数,每层的数据遍历次数等于遍历层中各个sstable的次数。在满足目标条件的情况下,确定第二时间段内lsm-tree各层的数据遍历次数的总值最小时第二层的各个布隆过滤器中键所对应的空间,目标条件为lsm-tree所有布隆过滤器的总存储空间小于第二存储空间阈值。35.通过上述方法,配置装置能够综合考虑lsm-tree各个sstable的数据访问状态为第二层的各个布隆过滤器配置存储空间,使得第二层的各个布隆过滤器能够更加贴合lsm-tree整体的数据访问状态,从整体上减少第二层的各个布隆过滤器的误判次数。36.第二方面,本技术实施例还提供了一种配置装置,该配置装置具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述配置装置的结构中包括数据迁移模块、空间配置模块。这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。37.第三方面,本技术还提供了一种计算设备,所述计算设备包括处理器和存储器,还可以包括通信接口,所述处理器执行所述存储器中的程序指令执行上述第一方面或第一方面任一可能的实现方式提供的方法。该计算设备可以为存储系统中的计算节点、服务器、或控制器等设备,也可以是需要数据交互的计算设备。所述存储器与所述处理器耦合,其保存确定数据处理过程中必要的程序指令和数据(如保存布隆过滤器)。所述通信接口,用于与其他设备进行通信。38.第四方面,本技术提供了一种计算设备系统,该计算设备系统包括至少一个计算设备。每个计算设备包括存储器和处理器。至少一个计算设备的处理器用于访问所述存储器中的代码以执行第一方面或第一方面的任意一种可能的实现方式提供的方法。39.第五方面,本技术提供了一种计算机可读存储介质,所述计算书可读存储介质被计算设备执行时,所述计算设备执行前述第一方面或第一方面的任意可能的实现方式中提供的方法。该存储介质中存储了程序。该存储介质包括但不限于易失性存储器,例如随机访问存储器,非易失性存储器,例如快闪存储器、硬盘(harddiskdrive,hdd)、固态硬盘(solidstatedrive,ssd)。40.第六方面,本技术提供了一种计算设备程序产品,所述计算设备程序产品包括计算机指令,在被计算设备执行时,所述计算设备执行前述第一方面或第一方面的任意可能的实现方式中提供的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面或第一方面的任意可能的实现方式中提供的方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。41.第七方面,本技术还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实现方式中所述的方法。附图说明42.图1为本技术提供的一种lsm-tree的结构示意图;43.图2为本技术提供的一种布隆过滤器的结构示意图;44.图3a~图3b为本技术提供的一种系统的架构示意图;45.图4为本技术提供的一种布隆过滤器配置方法示意图;46.图5为本技术提供的一种配置装置的结构示意图。具体实施方式47.在对本技术实施例提供的一种布隆过滤器配置方法进行说明之前,先对本技术实施例涉及的概念进行说明:48.(1)排序字符串表(sortedstringtable,sstable)。49.sstable是一种持久化、有序且不可变的键值(keyvalue)存储结构,在申请实施例中sstable的数据即为该sstable所存储的数据。sstable中包括一系列可配置大小的块(block),每个块用于存储key和value,该块为存储器的逻辑空间,如lun。每个块的索引(index)存储在sstable的尾部。当节点中的处理器打开一个sstable时,该sstable中存储的index会被加载到节点的内存,之后,根据指定的key在加载到内存中的索引进行查找,确定该key所在的块的索引,之后根据该key所在的块的索引确定该key所在的块在磁盘中的位置,之后,从磁盘中将该key所在的块中的数据(如value)读出来。50.(2)、日志化结构合并树(log-structuredmerge-tree,lsm-tree)。51.lsm-tree是一种分层、有序、面向磁盘的数据存储结构,lsm-tree提供了一种数据顺序写的方式,能够有效提供数据写入效率。基于lsm-tree的存储系统,将该存储系统中各个存储器形成的存储空间分为多层,lsm-tree的每一层包括多个sstable。52.如图1所示,为lsm-tree的一种结构示意图,lsm-tree为一种多层结构,图1中仅示例性的绘制出了lsm-tree中的部分层。在将lsm-tree应用于不同的存储系统中,可以根据实际需要设置lsm-tree的层数。53.基于lsm-tree的存储系统,将该存储系统中存储器形成的存储空间分为多层,具体到lsm-tree的每一层,lsm-tree的每一层包括多个sstable。54.在lsm-tree中数据的存储顺序为层0-》层1-》层2-》层3。当数据需要写入到lsm-tree时,优先写入层0,新写入的数据始终存在层0中。层0中的数据量较大时,可以将层0中的数据下沉(也可称为并入)到层1。当层1中的数据量较大时,可以将层1中的数据下沉到层2。55.当需要从基于lsm-tree的存储系统中读取数据时,存储系统中的节点在接收到读数据请求时,会先在内存中的sstable查询,若查询到则反馈查询到的数据。若没有查询到,按照lsm-tree的层序进行下沉,依次查询lsm-tree每一层的sstable,直至查询到需要读取的数据。56.需要说明的是,本技术实施例并不限定sstable中数据的类型,可以是数据本身,也可以是数据的元数据。也就是说,sstable中以键值对的形式存储数据,其中,key是为数据分配的键,用于唯一的标识该数据。value可以为数据本身,也可以是该数据的元数据。57.(3)、布隆过滤器(bloomfilter,bf)。58.布隆过滤器是一个二进制向量和一系列随机映射函数,可以用于检索一个元素是否在一个集合中。在读数据时,需要查询lsm-tree每一层的sstable,若直接遍历sstable,需要查询sstable中所有数据,效率较低。为此,可以为lsm-tree每一层的sstable配置布隆过滤器,用于确定待读取的数据是否存储在该层的各个sstable中。每个sstable可以对应一个布隆过滤器。当然在一些场景中,也可以灵活的设置lsm-tree各层中的布隆过滤器,如多个sstable可以对应一个布隆过滤器,本技术实施例并不限定布隆过滤器所对应的sstable的数量,在本技术实施例中仅以一个sstable对应一个布隆过滤器为例进行说明。59.图2是一种布隆过滤器的结构示意图。初始状态时,布隆过滤器中包括m=n*l位的位数组,每一位都置为0。为了表达s={x1,x2,…,xn}这样一个n个元素的数据集合,l是为每一个数据对应的空间(这里l也可以理解为数据对应的比特数或位数),bloomfilter可以调用k个相互独立的哈希函数(hashfunction),每个哈希函数可以将该数据集合中的每个元素映射到该包括m位的位数组中的一位上。当映射到一位上,该位的值可以置为1。对于数据集合中的同一元素,k个哈希函数中的任意两个哈希函数映射到的一位可以相同,也可以不同。对于数据集合中的不同元素,该不同元素经过不同哈希函数也可以映射到同一位,也可以映射到不同位。60.令ρ为位数组中0的比例,则ρ的数学期望e(ρ)=p’。在ρ已知的情况下,布隆过滤器的误报率fp为:61.(1-ρ)k≈(1-p’)k≈(1-p)k≈(1-e-kn/m)k≈(1-e-k/l)k62.其中,当p=e-kn/m时,存在63.在本技术实施例,由于布隆过滤器是sstable的布隆过滤器,布隆过滤器的位数组m=n*l,其中,n可以为sstable中键(key)的数量,l是为key对应的空间(所对应的空间即为key所对应的位数或比特数)。也就是说,通过布隆过滤器可以判断需要读取的数据的键是否在该sstable中,进而判断该sstable是否记录有该需要读取的数据。64.为lsm-tree中每层配置的布隆过滤器可以保存在节点的内存中,当节点的处理器接收到读数据请求时,节点的处理器可以按照lsm-tree的层序依次访问该lsm-tree的各层,直到从lsm-tree中查询到需要读取的数据。65.当节点的处理器在对该lsm-tree中的一层进行数据访问时,首先,节点的处理器先从内存中调取该层中各个sstable的布隆过滤器。利用该层中各个sstable的布隆过滤器确定待读取的数据是否存储在该层的各个sstable中。以一个sstable的布隆过滤器为例,节点的处理器可以将需要读取的数据的键(需要读取的数据的键是读数据请求中携带的)输入至该布隆过滤器中,根据该布隆过滤器的输出确定该需要读取的数据是否存在该sstable中。具体的,利用该布隆过滤器的k个哈希函数作用于需要读取的数据的键上,确定各个哈希函数映射到位组中的位的值是否全为1,当全为1时,确定该待读取数据存储在该sstable,节点的处理器可以获取该sstable,遍历该sstable中的数据以查找该读取的数据,若找到该数据,则数据命中,否则,该布隆过滤器误报。若存在为0的位,则该待读取数据未存储在该sstable中。66.在本技术实施例中,一层的数据访问次数是指访问布隆过滤器的次数,一层数据遍历次数是指遍历该层sstable的次数,一层的数据误遍历次数是指遍历该层的sstable未找到数据的次数。sstable的数据访问次数是指访问sstable的布隆过滤器的次数,sstable的数据遍历次数是指遍历该sstable的次数,sstable的数据误遍历次数是指遍历该sstable未找到数据的次数。67.基于布隆过滤器的描述可知,布隆过滤器的误报率不能为零,当位组数越大,其误报率就越低,但位组数越大,布隆过滤器所需占用的存储空间也就越大,在内存有限的情况下,布隆过滤器所需占用的存储空间过大,会使得其他数据的存储空间减少。68.目前,在配置布隆过滤器的存储空间时,无论该布隆过滤器是lsm-tree中哪一层的sstable的布隆过滤器,均采用统一的配置标准。也即在布隆过滤器中key对应的空间(每个key对应的空间为布隆过滤器中key可占用的存储空间,也可以理解为key对应的比特数或位数)均相同,如布隆过滤器中为key分配10比特(bit)。当给每个key分配10比特时,可以一层中布隆过滤器的误判率可以控制在1%左右。69.这种按照统一配置标准配置布隆过滤器的存储空间的方式,忽略了lsm-tree中的数据读取特点。在读取数据时,针对最新写入的数据,读取频率较大。而写入较久的数据,也即旧数据,读取频率也就较小。也就是说,在lsm-tree中,处于上层的数据(上层sstable的数据)访问较为频繁,数据访问次数越多,处于下层的数据访问频率会有所下降,数据访问次数少。若每层布隆过滤器的key配置相同的存储空间,每层的布隆过滤器的误判率接近。但处于上层的数据访问次数较大,会导致布隆过滤器的误判次数增多。使得该lsm-tree整体的误判率会增大,误判次数增多。70.为此,本技术实施例提供了一种布隆过滤器配置方法,在配置布隆过滤器时,可以根据每层的数据访问状态来配置该层的布隆过滤器的存储空间,或者根据数据并入前目标数据的数据访问状态配置数据并入后布隆过滤器的存储空间。71.如图3a所示,为本技术实施例提供的一种系统架构示意图,该系统架构中包括应用服务器100、交换机110、存储系统120。72.用户通过应用程序来存取数据。运行这些应用程序的计算机被称为“应用服务器”。应用服务器100可以是物理机,也可以是虚拟机。物理应用服务器包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。应用服务器通过光纤交换机110访问存储系统以存取数据。然而,交换机110只是一个可选设备,应用服务器100也可以直接通过网络与存储系统120通信。73.图3a所示的存储系统120是一个集中式存储系统。集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎121。引擎121是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。74.如图3a所示,引擎121中有一个或多个控制器。图3a以引擎包含两个控制器为例予以说明,控制器0与控制器1之间具有镜像通道,使得两个控制器可以互为备份。引擎121还包含前端接口125和后端接口126,其中前端接口125用于与应用服务器100通信,为应用服务器100提供存储服务。而后端接口126用于与硬盘134通信,以扩充存储系统的容量。通过后端接口126,引擎121连接更多的硬盘134,从而形成一个非常大的存储资源池。75.在硬件上,如图3a所示,控制器0至少包括处理器123、内存124。处理器123是一个中央处理器(centralprocessingunit,cpu),用于处理来自存储系统外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储系统内部生成的请求。示例性的,处理器123通过前端端口125接收应用服务器100发送的数据写请求时,处理器123可以优先将数据存储在内存124中,如存储在内存124中sstable中。当内存124中部分或全部sstable的数据量达到一定阈值时,处理器123通过后端端口将内存124中存储的数据发送给硬盘134进行持久化存储。在本技术实施例中,该多个硬盘134构成的存储空间可以采用lsm-tree的形式构建。处理器123可以执行本技术实施提供的布隆过滤器配置方法,能够为该lsm-tree的各个布隆过滤器配置存储空间。76.内存124是指与处理器直接交换数据的内部存储器。内存124包括至少两种存储器,例如内存124既可以是随机存取存储器,也可以是只读存储器(readonlymemory,rom)。举例来说,随机存取存储器是动态随机存取存储器(dynamicrandomaccessmemory,dram),或者存储级存储器(storageclassmemory,scm)。内存还可以包括其他随机存取存储器,例如静态随机存取存储器(staticrandomaccessmemory,sram)等。本技术并不限定内存124的具体类型,凡是能够作为内存124与处理器进行交互的存储器均适应于本技术实施例。内存124中存储有软件程序,处理器123运行内存124中的软件程序可实现对硬盘的管理。77.控制器1(以及其他图3a中未示出的控制器)的硬件组件和软件结构与控制器0类似,这里不再赘述。78.图3a所示的是一种盘控分离的集中式存储系统。在该系统中,引擎121可以不具有硬盘槽位,硬盘134需要放置在硬盘框130中,后端接口126与硬盘框130通信。后端接口126以适配卡的形态存在于引擎121中,一个引擎121上可以同时使用两个或两个以上后端接口126来连接多个硬盘框130。或者,适配卡也可以集成在主板上,此时适配卡可通过pcie总线与处理器123通信。可选的,该存储系统120还可以是盘控一体的存储系统,引擎121具有硬盘槽位,硬盘134可直接部署在引擎121中,即硬盘134和引擎121部署于同一台设备。79.硬盘框130包括控制单元131、网卡104和若干硬盘134,控制单元131可以执行地址转换以及数据读写操作。网卡104用于与引擎121通信。80.本技术实施例提供的数据处理方法除了适用于集中式存储系统,也同样适用于分布式存储系统,如图3b所示,为本技术实施例提供的一种分布式存储系统的系统架构示意图,分布式存储系统包括服务器集群。服务器集群包括一个或多个服务器140(图3b中示出了三个服务器140,但不限于两个服务器140),各个服务器140之间可以相互通信。在服务器140上可以创建虚拟机107,所需的计算资源来源于服务器140本地的处理器123和内存124,虚拟机107中可运行各种应用程序。81.服务器110可以执行本技术实施例提供的布隆过滤器配置方法,在硬件上,如图3b所示,服务器110至少包括处理器123、内存124、网卡104和硬盘134。处理器123、内存124、网卡104和硬盘134之间通过总线连接。关于处理器123、内存124、网卡104和硬盘134作用和具体类型可以参见图3a中的相关说明,此处不再赘述。82.上述如图3a~图3b所示的系统架构仅是举例,本技术并不限定系统的结构,凡是基于lsm-tree构建的存储系统均适用于本技术实施例。83.图4是本技术提供的一种布隆过滤器配置方法示意图,下面结合附图4,以本技术实施例提供的布隆过滤器配置方法应用于图3a~图3b所示的系统构架中,该方法中提及的配置装置可以是图3a中的控制器的处理器(如控制器0以及控制器1),也可以是图3b中的服务器140中的处理器。对本技术实施例提供的布隆过滤器配置方法进行说明。84.步骤401:配置装置将目标数据从lsm-tree中的第一层并入至lsm-tree中的第二层,第二层为第一层的下一层。85.在本技术实施例并不限定该目标数据的大小。例如,该目标数据可以是lsm-tree中的第一层中所有sstable的数据,也即lsm-tree中数据并入是以层为粒度进行的。又例如,该目标数据可以是lsm-tree中的第一层中部分sstable的数据,也即lsm-tree中数据并入是以sstable为粒度进行的。86.方式一、以层为粒度的数据并入。87.在该种并入方式中,当lsm-tree一层中所有sstable的总数据量大于阈值时,该层所有sstable的数据可以并入到该层的下一层。88.当层0中sstable的总数据量(所有sstable的大小)大于阈值一时,层0中所有sstable的数据并入到层1。举例来说,当层0中sstable的总数据量大于阈值一,层0中各个sstable-可以并入到层1中的一个或多个sstable中。具体在并入到层1时,可以在层1中可以创建新的一个或多个sstable,删除掉该层1中原有的一个或多个sstable。在该新的一个或多个sstable中存储层0中所有sstable的数据,还存储层1原有的、被删除掉的一个或多个sstable的数据。89.当层1中sstable的总数据量(所有sstable的大小)大于阈值二时,层1各个sstable的数据并入到层2。当层2中sstable的总数据量大于阈值三(所有sstable的大小)时,层2各个sstable的数据并入到层3。不同层中的阈值(如阈值一、阈值二或阈值三)可以相同,也可以不同。90.在这种方式下,目标数据是lsm-tree中的第一层中所有sstable的数据时,配置装置在将目标数据并入到lsm-tree中的第二层时,删除掉该第二层的原有的一个或多个sstable,这里并不限定删除的sstable的数量。91.配置装置可以在第二层中创建新的一个或多个sstable,将该目标数据以及该第二层中删除的sstable中的数据填入到新的一个或多个sstable中。92.方式二、以sstable为粒度的数据并入。93.当层0中一个或多个sstable大于阈值a,层0中的该一个或多个sstable并入到层1中。举例来说,当层0中的sstable-1和sstable-2均大于阈值a,层0中的sstable-1和sstable-2并入到层1中的sstable-3中。具体在并入到层1时,可以在层1中可以创建新的sstable-4,在该新的sstable-4中存储sstable-1、sstable-2以及sstable-3中的数据。当层1中一个或多个sstable大于均阈值b,层1中的该一个或多个sstable并入到层2中。当层2中一个或多个sstable大于均阈值c,层2中的该一个或多个sstable并入到层3中。不同层中不同sstable的阈值(如阈值a、阈值b或阈值c)可以相同,也可以不同。94.这种方式下,目标数据是lsm-tree中的第一层中部分sstable中的数据时,配置装置在将目标数据并入到lsm-tree中的第二层时,删除掉该第二层原有的一个或多个sstable,这里并不限定删除的sstable的数量。95.配置装置可以在第二层中创建新的一个或多个sstable,将该目标数据以及该第二层中删除的sstable中的数据填入到新的一个或多个sstable中。96.需要说明的是,这里数据并入的时机是以数据量大于阈值为例进行说明的。在实际应用中,数据并入也可以是以时间维度进行的,也就是说,在特定时间点进行数据并入,例如,lsm-tree中可以进行周期性的数据并入,当时间到达某一时间点时,可以以层为粒度或以sstaable为粒度进行数据并入。97.步骤402:配置装置根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间。98.配置装置在第二层创建了新的一个或多个sstable,可以为该一个或多个sstable配置布隆过滤器,配置装置可以为每一个sstable配置一个布隆过滤器,也即布隆过滤器与sstable是一一对应的。配置装置也可以为两个或两个以上的sstable配置一个布隆过滤器,也即布隆过滤器与sstable之间的关系是一对多的。在本技术实施例中仅是以一个sstable对应一个布隆过滤器为例进行说明,sstable的布隆过滤器即为该sstable对应的布隆过滤器。99.配置装置在配置布隆过滤器,可以配置布隆过滤器的存储空间。布隆过滤器的存储空间等于该布隆过滤器对应的sstable中key的数量以及布隆过滤器中key所对应的空间的乘积。在配置装置将该目标数据以及该第二层中删除的sstable中的数据填入到新的一个或多个sstable后,新的一个或多个sstable中key的数量是可以确定的,配置装置在配置布隆过滤器的存储空间,需要确定该一个或多个sstable的布隆过滤器中key所对应的空间。100.配置装置可以根据目标数据在第一层的数据访问状态确定第二层中该一个或多个sstable的布隆过滤器中key所对应的空间。101.(1)、当lsm-tree中数据并入是以层为粒度进行数据并入时,同一层中各个sstable的布隆过滤器中key所对应的空间相同。允许不同层中sstable的布隆过滤器中key所对应的空间不同。102.由于在这种方式下,同一层中各个sstable的布隆过滤器中key所对应的空间相同。为方便说明,将第二层中该一个或多个sstable的布隆过滤器中key所对应的空间简称为第二层布隆过滤器中key所对应的空间。103.方式一、在数据迁移时配置装置确定第二层布隆过滤器中key所对应的空间。104.配置装置确定第二层布隆过滤器中key所对应的空间可以满足如下条件:105.1、目标数据在第二层中的误遍历次数最小,该误遍历次数是指由于第二层的布隆过滤器的误判导致的对第二层的sstable遍历的次数,误遍历次数是根据目标数据在第一层的数据访问状态和第二层的布隆过滤器中键所对应的空间预测的。2、第二层的布隆过滤器的总存储空间小于第一存储空间阈值。106.这里以确定第二层中的布隆过滤器中key所对应的空间为例进行说明,配置装置可以先确定目标数据在第一层的数据访问状态。107.由于目标数据为第一层中所有sstable中的数据。该数据访问状态是第一层的数据访问状态,如数据访问次数、数据命中次数。108.配置装置可以根据第一层的数据访问状态预估目标数据在第二层的误遍历次数。目标数据在第二层中误遍历次数是指由于第二层的布隆过滤器的误报导致的目标数据被访问的次数。目标数据在第二层中误遍历次数与第二层布隆过滤器的误报率有关,而布隆过滤器的误报率与该布隆过滤器中key对应的空间有关。也就是说,目标数据在第二层中的误遍历次数是一个随第二层的布隆过滤器中key所对应的空间变化的值。109.在预估了目标数据在第二层的误遍历次数之后,配置装置可以确定目标数据在第二层的误遍历次数小于第二层的误访问阈值时,第二层的布隆过滤器中key所对应的空间的候选值,若存在多个候选值,从中选择最小的候选值作为第二层的布隆过滤器中key对应的空间。若只存在一个候选值,则将该候选值作为第二层的布隆过滤器中key对应的空间。110.举例来说,以目标数据在第一层时,特定时间段内的数据访问频率为v1,数据命中频率为f1。以第二层布隆过滤器中key所对应的空间为l2,则布隆过滤器的误报率fp(l2)是一个与l2有关的函数。目标数据在第二层的误遍历次数w2满足如下公式:[0111][0112]其中,k2为第二层每个布隆过滤器中所引用的哈希函数的数量。[0113]上述公式可知,目标数据在第二层的误遍历次数w2随着l2发生变化。假设第二层的误访问阈值为p2,当w2小于p2,会得到l2一个或多个可能的候选值。也就是说,每个l2的候选值均能够使得w2小于p2。若存在多个可能的候选值,可以从中选取一个候选值作为l2,如可以选择最小的候选值作为l2。[0114]需要说明的是,第二层的误访问阈值p2是灵活可变的,第二层的误访问阈值p2可以是根据第二层的数据访问次数或数据访问频率确定的。由于lsm-tree中每层的数据访问次数不同,每层的误访问阈值pi可以不同,例如对于数据访问频率高的层i,该层的误访问阈值pi可以设置为较小的值。例如对于数据访问频率低的层i,该层的误访问阈值pi可以设置为较大的值。本技术实施例并不限定每一层的误访问阈值pi的设置方式,凡是能够根据每层的数据访问次数或数据访问频率确定的方式均适用于本技术实施例。[0115]另外,上述在计算过程中仅涉及到误遍历次数,在实际计算中,也可以计算lsm-tree的第二层的数据遍历次数,其中第二层的数据遍历次数是指对第二层的sstable的数据遍历次数,其中第二层的数据遍历次数g2满足如下公式:[0116]g2=f1v1 (1-f1)v1fp(l2)[0117]配置装置可以确定在g2小于第二层的遍历次数阈值q2时,l2可能一个或多个可能的候选值。也就是说,每个l2的候选值均能够使得g2小于q2。若存在多个可能的候选值,可以从中选取一个候选值作为l2,如可以选择最小的候选值作为l2。[0118]方式二、配置装置预先根据各层的数据访问状态确定各层布隆过滤器中key所对应的空间。[0119]在方式二中,配置装置可以预先统计各层的数据访问状态。例如配置装置可以确定在一定时间段内,每一层的数据访问次数以及数据命中次数。[0120]配置装置可以根据第一时间段内lsm-tree各层的数据访问状态预测第二层的布隆过滤器的存储空间。也就是说,配置装置可以根据第一时间段内lsm-tree所有层的数据访问状态估计之后一段时间内lsm-tree各层的数据访问状态,其中,包括第二时间段内第二层的数据访问状态,进而确定第二层的布隆过滤器的存储空间。[0121]举例来说,配置装置可以根据各层的数据访问状态预估各层的误遍历次数的和值。每层的误遍历次数是指由于该层的布隆过滤器的误报导致的数据被访问的次数。每层中误遍历次数与该层的布隆过滤器中key所对应的空间有关。各层的误遍历次数的和值是一个随各层的布隆过滤器中key所对应的空间变化的值。[0122]在预估了各层的误遍历次数的和值之后,配置装置可以确定在各层布隆过滤器的总存储空间小于存储空间阈值的情况下,使得各层的误遍历次数的和值达到最小值时,每层的布隆过滤器中key所对应的空间的候选值,若存在多个候选值,从中选择最小的候选值作为该层的布隆过滤器中key对应的空间。若只存在一个候选值,则将该候选值作为该层的布隆过滤器中key对应的空间。[0123]举例来说,以lsm-tree中第i层在特定时间段内的数据访问频率为vi,数据命中频率为fi。第i层每个布隆过滤器中每个key对应的空间为li,则布隆过滤器的误报率fp(li)是一个与li有关的函数。各层的误遍历次数的和值w满足如下公式:[0124][0125]其中,h为lsm-tree的总层数,其中,ki为第i层每个布隆过滤器中所引用的哈希函数的数量。从上述公式可知,各层的误遍历次数的和值w随着li发生变化。[0126]配置装置确定在li满足如下条件时,w取最小值时,li的取值。[0127][0128]其中,ni为第i层中所有sstable中键的总数,u为存储空间阈值。u可以等于也即每层的布隆过滤器中key对应的空间相同时(如均为10比特,这里以空间为10比特为例进行说明,在实际应用中也可以为其他值)时,各层布隆过滤器所占用的存储空间。[0129]在方式二中,配置装置是统一的为各层的布隆过滤器确定中key所对应的空间。也就是说,通过上述方式,配置装置可以一次性确定出各层的布隆过滤器中key所对应的空间。这样,当lsm-tree中的任一层发生数据并入(也即当有数据并入到任一层)时,如第一层的数据并入到第二层中,配置装置可以按照确定的第二层的布隆过滤器中key所对应的空间,为第二层中新创建的sstable的布隆过滤器配置存储空间。[0130]配置装置还可以定期或不定期的更新所确定的各层的布隆过滤器中key所对应的空间。例如,配置装置可以统计在第一时间段内各层的数据访问状态,根据第一时间段内各层的数据访问状态确定各层的布隆过滤器中key所对应的空间。在第一时间段之后的第二时间段内,若lsm-tree中的任一层发生数据并入时,可以按照第一时间段内确定的各层的布隆过滤器中key所对应的空间,为该层中新创建的sstable的布隆过滤器配置存储空间。之后配置装置可以统计第二时间段内各层的数据访问状态,根据第二时间段内各层的数据访问状态确定各层的布隆过滤器中key所对应的空间。在第二时间段之后的第三时间段内,若lsm-tree中的任一层发生数据并入时,可以按照第二时间段内确定的各层的布隆过滤器中key所对应的空间,为该层中新创建的sstable的布隆过滤器配置存储空间。采用这种方式,能够使得为新创建的sstable的布隆过滤器配置的存储空间适应于之前临近时间段内的数据访问状态。能够有效减少布隆过滤器的误判次数。[0131]需要说明的是,上述在计算过程中仅涉及到误遍历次数。在实际应用中,也可以计算lsm-tree的每层的数据遍历次数,其中一层的数据遍历次数是指对该层的sstable的数据遍历次数,其中层i的数据遍历次数gi满足如下公式:[0132]gi=fivi (1-fi)vifp(li)[0133]各层的数据遍历次数g满足如下公式:[0134][0135]配置装置确定在li满足如下条件时,g取最小值时,li的取值。[0136][0137](2)、当lsm-tree中数据并入是以sstable为粒度进行数据并入时,允许同一层中各个sstable的布隆过滤器中key所对应的空间不同。[0138]方式一、在数据迁移时配置装置确定第二层中新创建的一个或多个sstabel的布隆过滤器中key所对应的空间。[0139]该一个或多个sstabel的布隆过滤器中key所对应的空间满足如下条件:[0140]1、目标数据在第二层中的误遍历次数最小,误遍历次数是指由于第二层的布隆过滤器的误判导致的对第二层的新创建的sstable遍历的次数,误遍历次数是根据目标数据在第一层的数据访问状态和第二层的布隆过滤器中键所对应的空间预测的;2、第二层的布隆过滤器的总存储空间小于第一存储空间阈值。[0141]这里以确定第二层中新创建的一个或多个sstabel的布隆过滤器中key所对应的空间为例进行说明,配置装置可以先确定目标数据在第一层的数据访问状态。[0142]由于目标数据为第一层中部分sstable中的数据。该数据访问状态包括该部分sstable中每个sstable的数据访问状态,如每个sstable的数据访问次数、数据命中次数。[0143]每个sstable的数据访问次数为访问该sstabel的布隆过滤器的次数,每个sstable的数据命中次数是指在该sstabel中查找到数据的次数。[0144]配置装置可以根据目标数据在第一层的数据访问状态预估目标数据在第二层的误遍历次数。目标数据在第二层中误遍历次数是指由于第二层的布隆过滤器的误报导致的目标数据被访问的次数。目标数据在第二层中误遍历次数与第二层中新创建的各个sstabe的布隆过滤器中key所对应的空间有关。也就是说,目标数据在第二层中的误遍历次数是一个随第二层新创建的各个sstabe的布隆过滤器中key对应的空间变化的值。[0145]在预估了目标数据在第二层的误遍历次数之后,配置装置可以确定目标数据在第二层的误遍历次数小于第二层的误访问阈值时第二层的布隆过滤器中key对应的空间的候选值,若存在多个候选值,从中选择最小的候选值作为第二层的新创建的各个sstable的布隆过滤器中key所对应的空间。各个sstable的布隆过滤器中key所对应的空间可能存在一组或多组候选值(一组候选值中候选值的数量等于该新创建的sstable的数量),也就是说,将该各个sstable的布隆过滤器中key所对应的空间赋值为其中一组候选值时,均能够使得目标数据在第二层的误遍历次数小于第二层的误访问阈值。在存在多组候选值时,从中选择一组候选值,如选择使得各个sstable的布隆过滤器的存储空间的总值最小的一组候选值。若只存在一组候选值,则将直接将该组候选值作为第二层新创建的各个sstable的布隆过滤器中key所对应的空间。[0146]举例来说,以目标数据在第一层时,特定时间段内的数据访问频率为v1,数据命中频率为f1。以第二层各个布隆过滤器中key对应的空间为l2j,其中,j为小于f的正整数,f为第二层中新创建的sstable的数量。布隆过滤器的误报率fp(l2j)是一个与l2j有关的函数。目标数据在第二层的误遍历次数w2满足如下公式:[0147][0148]其中,k2j为第二层每个布隆过滤器中所引用的哈希函数的数量。需要说明的是,目标数据在第二层的误遍历次数w2也可以采用其他方式计算,上述方式仅是一种示例,凡是能够指示目标数据在第二层的误遍历次数的计算方式均适用于本技术实施例。[0149]上述公式可知,目标数据在第二层的误遍历次数w2随着l2j发生变化。假设第二层的误访问阈值为p2,当w2小于p2,f个l2j可能存在一组或多组候选值,其中一组候选值包括f个值。也就是说,当f个l2j赋值为其中一组候选值时,能够使得w2小于p2。若存在多组可能的候选值,可以从中选取一组候选值作为l2j,如可以选择能够使得该f个布隆过滤器的存储空间最小的一组候选值。[0150]需要说明的是,第二层的误访问阈值p2是灵活可变的,第二层的误访问阈值p2可以是根据第二层的数据访问次数或数据访问频率确定的。由于lsm-tree中每层的数据访问次数不同,每层的误访问阈值pi可以不同,例如对于数据访问频率高的层i,该层的误访问阈值pi可以设置为较小的值。例如对于数据访问频率低的层i,该层的误访问阈值pi可以设置为较大的值。本技术实施例并不限定每一层的误访问阈值pi的设置方式,凡是能够根据每层的数据访问次数或数据访问频率确定的方式均适用于本技术实施例。[0151]另外,上述在计算过程中仅涉及到误遍历次数,在实际计算中,也可以计算lsm-tree的第二层的数据遍历次数,其中第二层的数据遍历次数是指对第二层的新创建的各个sstable的数据遍历次数之和,其中第二层的数据遍历次数g2满足如下公式:[0152][0153]需要说明的是,目标数据在第二层的数据遍历次数g2也可以采用其他方式计算,上述方式仅是一种示例,凡是能够指示目标数据在第二层的遍历次数的计算方式均适用于本技术实施例。[0154]配置装置可以确定在g2小于第二层的遍历次数阈值q2时,f个l2j可能存在一组或多组候选值,其中一组候选值包括f个值。也就是说,当f个l2j赋值为其中一组候选值时,能够使得w2小于q2。若存在多组可能的候选值,可以从中选取一组候选值作为l2j,如可以选择能够使得该f个布隆过滤器的存储空间最小的一组候选值。[0155]方式二、配置装置预先根据各层的数据访问状态确定各层中的每个布隆过滤器中key所对应的空间。[0156]配置装置可以根据第一时间段内lsm-tree各层的各个sstable的数据访问状态预测第二层的布隆过滤器的配置空间。也就是说,配置装置可以根据第一时间段内lsm-tree中所有sstable的数据访问状态估计之后一段时间内,如第二时间段内lsm-tree中所有sstable的数据访问状态,其中包括第二时间段内第二层的sstable的数据访问状态,进而确定第二层的布隆过滤器的存储空间。[0157]在方式二中,配置装置可以预先统计各层的数据访问状态。例如配置装置可以确定在一定时间段内,每一层的数据访问次数以及数据命中次数。[0158]配置装置可以根据各层的数据访问状态预估各层的误遍历次数的和值。每层的误遍历次数是指由于该层的布隆过滤器的误报导致的数据被访问的次数。每层中误遍历次数与该层的布隆过滤器中key对应的空间有关。各层的误遍历次数的和值是一个随各层的各个布隆过滤器中key对应的空间变化的值。[0159]在预估了各层的误遍历次数的和值之后,配置装置可以确定在各层布隆过滤器的总存储空间小于存储空间阈值的情况下,使得各层的误遍历次数的和值达到最小值时,每层的各个布隆过滤器中key所对应的空间的候选值。对于任一层各个布隆过滤器中key所对应的空间的候选值,可能存在一组或多组候选值,若存在多组候选值,可以从中选择一组候选值,如可以选择使得该层的布隆过滤器的存储空间总值最小的一组候选值。若只存在一组候选值,则将该组候选值作为该层的各个布隆过滤器中key所对应的空间。[0160]举例来说,以lsm-tree中第i层在特定时间段内的数据访问频率为vi,数据命中频率为fi。第i层第j个布隆过滤器中key所对应的空间为lij,则该布隆过滤器的误报率fp(lij)是一个与lij有关的函数。各层的误遍历次数的和值w满足如下公式:[0161][0162]其中,h为lsm-tree的总层数,其中,kij为第i层中第j个布隆过滤器中所引用的哈希函数的数量。从上述公式可知,各层的误遍历次数的和值w随着li发生变化。其中,e为每层中布隆过滤器的数量,这里是以每层中布隆过滤器的数量相同为例进行说明的,在实际应用中每层中布隆过滤器的数量也可以不同。[0163]配置装置确定在lij′满足如下条件时,w取最小值时,lij的取值。[0164][0165]其中,nij为第i层中第j个sstable中键的总数,u为存储空间阈值。u可以等于也即u为每层的各个布隆过滤器中key对应的空间均为10比特时,各层所以布隆过滤器所占用的存储空间。[0166]在方式二中,配置装置是统一的为各层的各个布隆过滤器确定key对应的空间。也就是说,通过上述方式,配置装置可以一次性确定出各层的每个布隆过滤器key对应的空间。这样,当lsm-tree中的任一层发生数据并入时,如第一层的数据并入到第二层中,配置装置可以按照确定的第二层的各个布隆过滤器key对应的空间,为第二层中新创建的sstable的布隆过滤器配置存储空间。[0167]配置装置还可以定期或不定期的更新所确定的各层的各个布隆过滤器中key所对应的空间。例如,配置装置可以统计在第一时间段内各层的数据访问状态,根据第一时间段内各层的数据访问状态确定各层的各个布隆过滤器中key所对应的空间。在第一时间段之后的第二时间段内,若lsm-tree中的任一层发生数据并入时,可以按照第一时间段内确定的各层的各个布隆过滤器中key所对应的空间,为该层中新创建的sstable的布隆过滤器配置存储空间。之后配置装置可以统计第二时间段内各层的数据访问状态,根据第二时间段内各层的数据访问状态确定各层的各个布隆过滤器中key所对应的空间。在第二时间段之后的第三时间段内,若lsm-tree中的任一层发生数据并入时,可以按照第二时间段内确定的各层的各个布隆过滤器中key对应的空间,为该层中新创建的sstable的布隆过滤器配置存储空间。采用这种方式,能够使得为新创建的sstable的布隆过滤器配置的存储空间适应于之较近一段时间内的数据访问状态,匹配程度较高,能够进一步减少布隆过滤器的误判个数。[0168]需要说明的是,上述在计算过程中仅涉及到误遍历次数,在实际计算中,也可以计算lsm-tree的每层的数据遍历次数,其中一层的数据遍历次数是指对该层的所有sstable的数据遍历次数的总和,其中层i的数据遍历次数gi满足如下公式:[0169][0170]各层的数据遍历次数g满足如下公式:[0171][0172]配置装置确定在lij满足如下条件时,w取最小值时,li的取值。[0173][0174]基于与方法实施例同一发明构思,本技术实施例还提供了一种配置装置,该配置装置用于执行上述方法实施例中配置装置执行的方法。如图5所示,配置装置500包括数据迁移模块501、空间配置模块502。具体地,在配置装置500中,各模块之间通过通信通路建立连接。[0175]数据迁移模块501,用于将目标数据从lsm-tree中的第一层移至lsm-tree中的第二层,第二层为第一层的下一层。数据迁移模块501可以执行如图4所示的实施例中的步骤401。[0176]空间配置模块502,用于根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间。空间配置模块502可以执行如图4所示的实施例中的步骤402。[0177]一种可能的实施方式中,第一层的布隆过滤器中键所对应的位数与第二层的布隆过滤器中键所对应的位数不同。[0178]一种可能的实施方式中,第二层中不同sstable的布隆过滤器中键所对应的位数不同。[0179]一种可能的实施方式中,数据访问状态包括下列的至少一种:[0180]数据访问次数、数据命中次数、数据访问频率、数据命中频率。[0181]其中,数据访问次数指示在查询目标数据时对第一层的布隆过滤器访问的次数,数据命中次数指示在查询目标数据时对第一层的排序字符串表sstable遍历数据时命中数据的次数。[0182]一种可能的实施方式中,空间配置模块502在根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间,可以根据目标数据在第一层的数据访问状态计算确定第二层的布隆过滤器中键所对应的空间,第二层的布隆过滤器的存储空间等于布隆过滤器所对应的sstable中的键总数与布隆过滤器中键所对应的空间的乘积。[0183]一种可能的实施方式中,目标数据包括第一层的所有sstable的数据;第二层的布隆过滤器中键所对应的空间满足如下条件:[0184]条件一、目标数据在第二层中的误遍历次数最小,误遍历次数是指由于第二层的布隆过滤器的误判导致的对第二层的sstable遍历的次数,误遍历次数是根据目标数据在第一层的数据访问状态和第二层的布隆过滤器中键所对应的空间预测的;[0185]条件二、第一目标条件为第二层的布隆过滤器的总存储空间小于第一存储空间阈值。[0186]例如,空间配置模块502可以根据第一层的数据访问状态计算目标数据在第二层中的误遍历次数。在满足条件二的情况下,空间配置模块502可以确定目标数据在第二层中的误遍历次数最小时第二层的布隆过滤器中键所对应的位数。[0187]一种可能的实施方式中,目标数据包括第一层的所有sstable的数据;[0188]空间配置模块502在根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间时,可以根据第一时间段内lsm-tree各层的数据访问状态预测第二层的布隆过滤器的配置空间。[0189]例如,空间配置模块502可以根据第一时间段内lsm-tree各层的数据访问状态预测第二时间段内lsm-tree各层的数据遍历次数,每层的数据遍历次数等于遍历层中sstable的次数;在满足目标条件的情况下,确定第二时间段内lsm-tree各层的数据遍历次数的总值最小时第二层的布隆过滤器中键所对应的空间,目标条件为lsm-tree所有布隆过滤器的总存储空间小于第二存储空间阈值。[0190]一种可能的实施方式中,目标数据包括第一层的部分sstable的数据;第二层的布隆过滤器中键所对应的空间满足如下条件:[0191]条件一、目标数据在第二层中的误遍历次数最小,误遍历次数是指由于第二层的布隆过滤器的误判导致的对第二层的新创建的sstable遍历的次数,误遍历次数是根据目标数据在第一层的数据访问状态和第二层的布隆过滤器中键所对应的空间预测的;[0192]条件二、第二层的布隆过滤器的总存储空间小于第一存储空间阈值。[0193]例如,空间配置模块502可以根据目标数据在第一层的数据访问状态计算目标数据在第二层中的误遍历次数;在满足条件二的情况下,确定目标数据在第二层中的误遍历次数最小时第二层的各个布隆过滤器中键所对应的空间。[0194]一种可能的实施方式中,目标数据包括第一层的部分sstable的数据;空间配置模块502在根据目标数据在第一层的数据访问状态为第二层的布隆过滤器配置存储空间时,可以根据第一时间段内lsm-tree各层的各个sstable的数据访问状态预测第二层的布隆过滤器的配置空间。[0195]例如,空间配置模块502可以根据第一时间段内lsm-tree各层的各个sstable的数据访问状态预测第二时间段内lsm-tree各层的数据遍历次数;在满足目标条件的情况下,确定第二时间段内lsm-tree各层的数据遍历次数的总值最小时第二层的各个布隆过滤器中键所对应的空间,目标条件为lsm-tree所有布隆过滤器的总存储空间小于第二存储空间阈值。[0196]本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本技术各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。[0197]该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是个人计算机,手机,或者网络设备等)或处理器(processor)执行本技术各个实施例该方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0198]上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。[0199]在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括计算机程序指令,在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例图4所述的流程或功能。[0200]所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如ssd)。[0201]显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献