缩减概率过滤器查询延时的制作方法

文档序号:28962117发布日期:2022-02-19 13:28阅读:63来源:国知局
缩减概率过滤器查询延时1.分案申请的相关信息2.本案是分案申请。该分案的母案是申请日为2018年08月07日、申请号为201880063595.1、发明名称为“缩减概率过滤器查询延时”的发明专利申请案。3.优先权申请案4.此申请案主张2017年8月31日申请的序列号为15/691,998的美国申请案的优先权的权益,所述美国申请案以其全文引用的方式并入本文中。
技术领域
:5.本文中所描述的实施例大体上涉及块装置(例如,磁盘)操作且更具体来说涉及缩减概率过滤器查询延时。
背景技术
::6.计算机存储装置包括各种存储技术,其可划分为块可寻址“磁盘”‑例如基于nand或其它非易失性存储器(nvm)技术的固态驱动(ssd)、硬盘驱动(hdd)、光盘(cd)及类似物-及字节可寻址“存储器”‑例如随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)、电阻式随机存取存储器(rram)或3d交叉点及类似物。通常,数据在由计算系统的处理器使用之前从磁盘移动到存储器。针对存储于文件系统中的数据,所述文件系统或操作系统通常管理此移动,从而导致存储器中的文件系统高速缓存反映存储于磁盘上的数据的部分。7.概率过滤器通常在数据存储系统中用来有效地确定数据项是否存储于数据结构中,而无须例如从磁盘加载整个数据结构。例如,在关键值数据存储系统中,可使用概率过滤器来确定关键值存储区中的关键值的可能存在,而无须加载及搜索所述关键值存储区。概率过滤器通常是高速且节省空间的数据结构,其支持具有单侧错误的集合成员资格测试。这些过滤器可确立给定集合项目肯定不在项目集合中表示。如果过滤器未确立所述项目肯定不在所述集合中,那么所述项目可或可不在所述集合中。换句话来说,否定响应(例如,不在集合中)是结论性的,而肯定响应(例如,可在集合中)引发假肯定概率(fpp)。通常,此单侧错误的权衡是节省空间的。例如,一些概率过滤器(例如布谷鸟(cuckoo)过滤器及布隆(bloom)过滤器)每项目使用近似7个位来提供3%的fpp,而与项目的大小无关。8.存在各种概率过滤器,包含布谷鸟过滤器及布隆过滤器,其操作在此出于说明性目的而提供。布谷鸟过滤器通过将关键值的f位指纹插入到两个贮体(bucket)中的一者中来操作。第一贮体是所述关键值的哈希且第二贮体通过哈希所述指纹而导出。如果两个贮体已满,那么移除现存指纹以腾出空间,且接着,将那个指纹移动到其自身的替代贮体。定位关键值涉及针对关键值检验贮体以确定指纹是否存在。基本布隆过滤器包括m个位(初始化为空值,例如零)及k个不同哈希函数的阵列(例如,布隆过滤器阵列),每一哈希函数将集合元素映射到m个位中的一者,从而导致布隆过滤器中的集合元素的k位表示。当将元素新增到所述过滤器时,将对应于所述阵列中的哈希函数的位的每一者设置为1。为确定元素的存在(例如,执行布隆过滤器查询或布隆查询),应用相同哈希函数以针对所查询元素确定阵列中的对应位置。如果每个位置具有值1而非0,那么所述关键值可在所述集合中。如果一个位置具有值0,那么所述关键值不在所述集合中。技术实现要素:9.本技术的一个方面涉及一种系统,其包括用以执行操作的处理电路系统,所述操作包括:从呼叫软件应用程序接收对存储于第一媒体上的概率过滤器的查询;响应于接收所述查询,获得存储于第二媒体上的所述概率过滤器的高速缓存片段,所述高速缓存片段包括存储于所述第一媒体上的所述概率过滤器的子集,所述概率过滤器用于确定元素不在集合中;对所述高速缓存片段执行所述查询,从而导致部分查询结果;将所述部分查询结果传回到所述呼叫软件应用程序;在所述呼叫软件应用程序不介入的情况下,在执行所述概率过滤器的非高速缓存片段从所述第一媒体到所述第二媒体的检索的同时:在所述部分查询结果内搜索停止条件;响应于识别所述停止条件,停止所述搜索并放弃检索任何剩余非高速缓存片段。10.本技术的另一个方面涉及一种方法,其包括:从呼叫软件应用程序接收对存储于第一媒体上的概率过滤器的查询;响应于接收所述查询,获得存储于第二媒体上的所述概率过滤器的高速缓存片段,所述高速缓存片段包括存储于所述第一媒体上的所述概率过滤器的子集,所述概率过滤器用于确定元素不在集合中;对所述高速缓存片段执行所述查询,从而导致部分查询结果;将所述部分查询结果传回到所述呼叫软件应用程序;在所述呼叫软件应用程序不介入的情况下,在执行所述概率过滤器的非高速缓存片段从所述第一媒体到所述第二媒体的检索的同时:在所述部分查询结果内搜索停止条件;响应于识别所述停止条件,停止所述搜索并放弃检索任何剩余非高速缓存片段。11.本技术的又一个方面涉及一种包括指令的非暂时性机器可读存储媒体,所述指令在由处理电路系统执行时引起所述处理电路系统执行包括以下各者的操作:从呼叫软件应用程序接收对存储于第一媒体上的概率过滤器的查询;响应于接收所述查询,获得存储于第二媒体上的所述概率过滤器的高速缓存片段,所述高速缓存片段包括存储于所述第一媒体上的所述概率过滤器的子集,所述概率过滤器用于确定元素不在集合中;对所述高速缓存片段执行所述查询,从而导致部分查询结果;将所述部分查询结果传回到所述呼叫软件应用程序;在所述呼叫软件应用程序不介入的情况下,在执行所述概率过滤器的非高速缓存片段从所述第一媒体到所述第二媒体的检索的同时:在所述部分查询结果内搜索停止条件;响应于识别所述停止条件,停止所述搜索并放弃检索任何剩余非高速缓存片段。附图说明12.在不必按比例绘制的图式中,类似元件符号可描述不同视图中的类似组件。具有不同字母下标的类似元件符号可表示类似组件的不同例子。图式通过实例而非限制的方式大体上说明本文件中所论述的各项实施例。13.图1是根据实施例的用于缩减概率过滤器查询延时的系统的实例的框图。14.图2是根据实施例的用于缩减概率过滤器查询延时的控制流程的实例的泳道图。15.图3是根据实施例的用于缩减概率过滤器查询延时的方法的实例的流程图。16.图4是根据实施例的用于缩减概率过滤器查询延时的方法的实例的流程图。17.图5是根据实施例的用于缩减概率过滤器查询延时的方法的实例的流程图。18.图6是说明可在其上实施一或多个实施例的机器的实例的框图。具体实施方式19.如上所述,概率过滤器通常用来在执行昂贵操作(例如将数据从磁盘加载到存储器)之前测试集合成员资格。概率过滤器是可存储于媒体上的数据结构,且在一些数据集中,自身可散布于若干可加载单元(例如页、块等)上。例如,概率过滤器可部分地高速缓存于存储器中,而剩余部分常驻于磁盘上。因此,为使用过滤器,从磁盘检索剩余部分且将其存储于待查询的存储器中。此操作在查询概率过滤器时引入额外延时。20.本发明的实施方案描述一种用来缩减概率过滤器查询延时的技术。此可经由检查及提取技术来实现,借此响应于过滤器查询,对照查询约束检查当前高速缓存数据(例如,存储器中的过滤器的部分)且可从磁盘有条件地检索剩余数据并将其加载到存储器中。加载剩余数据的条件包含高速缓存数据是否提供查询的明确应答。例如,在检查阵列中的每个位之前,布隆查询可被“短路”或暂停,因为任何经检查的空(例如,零)位提供正被测试的元素不在集合中的明确应答。因此,如果过滤器的任何高速缓存部分指示否定集合成员资格,那么无需从磁盘加载过滤器的剩余部分。如果高速缓存过滤器部分未提供明确应答(例如,全部对应位具有非空值),那么从磁盘加载过滤器的剩余部分,而将部分检查的结果(例如,高速缓存数据部分)传回到呼叫者。因此,当呼叫应用程序处理部分过滤器查询结果时,过滤器的磁盘到存储器加载已开始且可准备好在处理部分查询结果时供呼叫应用程序使用。此序列通过以下来缩减过滤器查询中的延时:在一些情况中提供查询的应答而未从磁盘加载整个过滤器;及在其它情况中允许处理应用程序调查过滤器的子集。为简化论述,使用标准布隆过滤器来说明所描述技术,尽管所述技术可用于满足上文所论述的“短路”原理的其它概率过滤器或数据结构。21.图1是根据实施例的用于缩减概率过滤器查询延时的系统100的实例的框图。如所说明,系统100包含第一媒体115(例如,具有kvs树及对应关键值集文件120的磁盘)、第二媒体110(例如,具有关键值集文件120的高速缓存片段125的存储器)及处理电路系统105(例如,处理器)。处理电路系统105、第二媒体110及第一媒体115都在电子硬件中实施。如所说明,高速缓存片段125的交叉阴影块对应于概率过滤器130中正被查询的片段。在此,片段对应于划分文件120或过滤器130,例如可能在文件被划分为块、存储器页(例如,页)或某一其它分区时发生。22.处理电路105经布置(例如,经硬接线或由软件配置)以从呼叫者接收对存储于第一媒体115上的概率过滤器130的查询。在此,呼叫者是应用程序、组件或能够提出请求的其它实体。例如,处理电路系统105可实施管理磁盘存取的操作系统(os)且呼叫者是向os提出请求的应用程序。因此,用户空间(例如,而非内核空间)过程可经由os呼叫发起查询。23.在实例中,查询包含概率过滤器130的片段识别符。在此,片段识别符指定概率过滤器130的全部片段中的哪些片段与查询相关。如果片段可提供查询的结果,那么其与查询相关。例如,概率过滤器130可为用于跨越四个虚拟存储器(vm)页的关键值集的布隆过滤器,其中如果布隆过滤器阵列中针对对布隆过滤器的查询中的关键值的k个哈希的对应贮体是在第一及第三vm页中,那么第一及第三vm页是布隆过滤器的用于关键值的查询的相关片段。因为查询实体(例如文件系统、os、程序等)可执行布隆哈希,所以那个实体也可在进行呼叫时针对查询提供所关注片段。在实例中,片段识别符是文件120中的字节偏移。在实例中,查询包含文件120的文件识别符。24.在实例中,文件120是关键值集文件。关键值集(例如,kvset)是用来将关键值项目保存于kvs树中的数据结构。kvs树是树数据结构,包含基于关键值的预定导出而非所述树的内容在父节点与子节点之间具有连接的节点。节点包含关键值集的时间定序序列,也称为kvs。关键值集含有关键值排序结构中的关键值对。一旦被写入,kvs树中的关键值集便是不可变的。kvs树实现wb树的写入处理量,同时通过维持节点中的关键值集来改进wb树搜索,关键值集包含排序关键值以及关键值度量,例如布隆过滤器。因此,在此实例中,文件120包含可包含过滤器130的至少一个关键值集。25.在实例中,关键值集文件包含一个以上kvs树(例如,来自一个以上kvs树(不必是全部kvs树)的组件,例如元数据、关键值集等)。在实例中,概率过滤器130应用于关键值集文件中的单个kvs树。将多个关键值集组合成单个关键值集文件或将其它数据结构组合成单个文件可利用环境的特性。例如,如果操作系统对文件管理、文件载入等强加显著额外开销,那么可更有效地将若干实体组合成文件以降低这些额外开销。26.在实例中,查询包含一组测试参数。在本文中,测试参数指示查询将对过滤器130测试什么。例如,测试参数可为布隆过滤器中的索引,其中可找到关键值的位。在实例中,测试参数包含位置(例如,在过滤器130中)。在实例中,所述位置是片段中的位偏移。27.处理电路系统105经布置以响应于接收查询而获得存储于第二媒体110上的概率过滤器130的高速缓存片段125。在此,高速缓存片段125小于存储于第一媒体115(例如,文件120)上的概率过滤器130的全部。因此,为响应于查询而获得高速缓存片段125,处理电路系统105可从第二媒体110读取高速缓存片段125。在实例中,概率过滤器130的片段是基于第二媒体110中的概率过滤器130的表示。因此,虽然文件120可分段成由第一媒体115(例如,磁盘)定义的块,但在第二媒体110(例如,存储器)中,所述片段被定义为存储器的页大小。在实例中,片段具有均匀大小。在实例中,均匀大小是存储器页大小。在实例中,片段识别符是页识别符。在实例中,片段识别符是存储器地址。在其中查询包含片段识别符的实例中,获得高速缓存片段125包含获得第二媒体110中的概率过滤器对应于片段识别符的片段。28.处理电路系统105经布置以对高速缓存片段125执行查询,从而导致部分查询结果。在其中查询包含测试参数的实例中,部分查询结果包含对高速缓存片段125执行的测试参数的子集的结果。在其中测试参数包含一或多个位置(例如,布隆过滤器阵列中的索引)的实例中,测试参数的子集包含每一位置的位值(例如,待测试)。在实例中,部分查询结果包含与查询相关且不在高速缓存片段125中的片段识别符的列表。29.处理电路系统105经布置以在呼叫者不介入的情况下起始概率过滤器130的剩余数据从第一媒体115到第二媒体110的检索同时对高速缓存片段125执行查询。在此,剩余数据对应于查询及不在高速缓存片段125中的数据(例如,不在高速缓存片段125中的过滤器130的部分)。因此,呼叫者无须提出单独请求以从文件120载入剩余片段。减少由呼叫者进行的呼叫的次数通常导致系统100的额外开销减少及延时缩减。在实例中,处理电路系统105经布置以识别部分查询结果中的概率过滤器130的停止条件且避免剩余数据的检索。此实例说明“短路”操作,其中查询可通过部分查询结果应答。例如,在具有包含零(例如,空)关键值索引的高速缓存片段125的布隆过滤器中,无需加载剩余数据,因为所述关键值不在由所述布隆过滤器表示的集合中。在实例中,概率过滤器是布隆过滤器、计数布隆过滤器或布谷鸟过滤器中的至少一者。30.处理电路系统105经布置以将部分查询结果传回到呼叫者。部分查询结果表示对过滤器130的部分执行查询,并且可能识别从查询执行省略过滤器130的哪些片段,因为其不在第二媒体110中。因此,相对于概率查询部分地满足呼叫者的请求,且也从磁盘加载查询的剩余片段。在其中由呼叫者提供测试参数的实例中,部分查询结果包含对高速缓存片段125执行的测试参数的子集的结果。在实例中,部分查询结果包含与查询相关且不在高速缓存片段125中的片段识别符的列表。31.在实例中,处理电路系统105经布置以例如由呼叫者-接收部分查询结果,针对由概率过滤器130定义的停止条件(例如,被定义为在真时暂停搜索的条件)搜索测试参数的子集,且在测试参数的子集中未找到所述停止条件时在片段识别符的片段内搜索所述停止条件(例如,以停止搜索)。在此,片段由于起始概率过滤器的剩余数据的检索而常驻于第二媒体110中。即,已完成剩余数据的起始检索-例如,在呼叫者正搜索部分查询结果以确定过滤器130是否指示所查询关键值的可能存在-将剩余数据放入第二媒体中时。因此,查询的单个结果对呼叫者提供高速缓存片段125上的过滤器查询的结果以及此时应已从第一媒体115加载到第二媒体110从而允许呼叫者执行其余过滤器查询的剩余片段的识别两者。32.本文中所描述的检查及提取技术具有优于传统技术的若干优点,传统技术测试是否高速缓存文件页(例如,linuxfincore)或加载非高速缓存文件页(例如,linuxfadvise)。例如,本文中所描述的检查及提取技术可获得页常驻信息-例如,高速缓存页中的所关注位的值-且可在单次系统呼叫中起始非高速缓存页的后台加载。通常,例如fincore或fadvise的技术使用至少三次系统呼叫来实现相同任务,从而大大地降低性能。例如,为完成检查及提取,传统fincore及fadvise使用来自高速缓存页的一或多次文件读取且最终使用非高速缓存页的fadvise呼叫。此外,本文中所描述的检查及提取技术可在文件中的非连续页上操作。通常,例如fincore及fadvise的技术仅在文件中的连续页上操作。此外,现存方法使用各自在非连续页上操作的多次系统呼叫,从而大大地降低性能。另外,本文中所描述的检查及提取技术可指定将引用文件页的顺序。此提供优化页加载的机会。此信息并非通过限于“随机”及“循序”的现存方法(例如fadvise)传达。33.上述优点与基于文件的存取技术相关,但本文中所描述的检查及提取技术还具有优于基于存储器的文件存取的优点(例如,当文件经存储器映射时)。在此上下文中,现存技术(例如linuxmincore及linuxmadvise)处于劣势。例如,本文中所描述的检查及提取技术可获得页常驻信息且可在单次系统呼叫中起始非高速缓存页的后台加载。此外,现存技术使用至少两次系统呼叫来完成相同任务(例如,呼叫mincore且接着呼叫madvise)。此外,与通常在文件中的连续页上操作的其它技术(例如,mincore及madvise)相比,检查及提取可在文件中的非连续页上操作。此外,现存技术使用各自在非连续页上操作的多次系统呼叫,此再次大大地降低性能。另外,检查及提取可指定将引用文件页的顺序,此提供优化页加载的机会。此信息通常并非通过限于“随机”及“顺序”的现存技术(例如madvise)传达。34.为在真实世界实例中说明本技术,在以下实例中使用具有支持kvs树的linux虚拟文件系统(vfs)的linux操作系统,尽管可类似地修改其它操作系统或文件系统。kvs树中的每一关键值集可包含布隆过滤器以跟踪与存储于那个关键值集中的项目(例如,关键值对或标记删除,其中标记删除指示对应于关键值的值被删除)相关联的关键值。可实施将存储于磁盘上的关键值集作为只读文件揭露给用户空间过程及linux内核的linuxvfs。此关键值集文件中的布隆过滤器包括开始于已知偏移(以字节为单位)且具有已知大小(以字节为单位)的连续字节序列。根据标准文件操作,从关键值集文件读取的数据以各自是虚拟存储器(vm)页的大小的单位处于标准linux页高速缓存中(例如,在存储器中)。每一此单位开始于关键值集文件中的零基偏移(其是vm页大小的倍数)。例如,给定4096个字节的vm页大小,关键值集文件中的页开始于偏移0、4096、8192等。在实例中,如同其它文件,用户空间过程可任选地使用标准linuxmmap系统呼叫将关键值集文件存储器映射到过程的虚拟地址空间中。在此,用户空间过程可经由存储器读取命令存取关键值集数据(包含布隆过滤器),且操作系统(或vm管理器)管理底层位的磁盘到存储器加载。35.图2到4呈现使用以下上下文描述的各项实例。以下定义假定关键值集文件f中的布隆过滤器b及将关键值k映射到b中的位的哈希函数h:36.·bf_file_offset_byte(f,b)是布隆过滤器b的第一字节的关键值集文件f中的字节偏移。37.·bf_size_byte(f,b)是关键值集文件f中的布隆过滤器b的大小(以字节为单位)。38.·bf_offset_bit(b,h,k)是通过针对关键值k执行哈希函数h来选择的布隆过滤器b中的位偏移。39.·vmpage_size_byte(f)是关键值集文件f中的页的大小(以字节为单位)。40.如本文中所描述,关键值集文件f中的全部字节偏移是零基的。即,关键值集文件f中的第一字节被定义为处于偏移零(0)。此外,如所描述,布隆过滤器b中的全部位偏移也是零基的;布隆过滤器b中的第一位被定义为处于偏移零(0)。尽管本文中使用这些零基索引,但其并非必需的(例如,第一位可处于偏移一(1))。此外,如本文中所使用,floor(x)被定义为小于或等于实数x的最大整数。41.给定这些定义,可计算以下各者:42.·bfpage_file_offset_first_byte(f,b)=floor(bf_file_offset_byte(f,b)/vmpage_size_byte(f))*vmpage_size_byte(f),其是含有布隆过滤器b的第一字节的关键值集文件f中的页的字节偏移。43.·bfpage_file_offset_last_byte(f,b)=floor((bf_file_offset_byte(f,b)+bf_size_byte(f,b)-1)/vmpage_size_byte(f))*vmpage_size_byte(f),其是含有布隆过滤器b的最后字节的关键值集文件f中的页的字节偏移。44.·bfpage_count(f,b)=((bfpage_file_offset_last_byte(f,b)-bfpage_file_offset_first_byte(f,b))/vmpage_size_byte(f))+1,其是含有布隆过滤器b的至少一个字节的关键值集文件f中的页的计数。45.·hbyte_file_offset_byte(f,b,h,k)=bf_file_offset_byte(f,b)+floor(bf_offset_bit(b,h,k)/8),其是含有通过针对关键值k执行哈希函数h来选择的布隆过滤器b中的位的关键值集文件f中的字节的字节偏移。46.·hbyte_offset_bit(f,b,h,k)=bf_offset_bit(b,h,k)模8,其是处于偏移hbyte_file_offset_byte(f,b,h,k)(其是通过针对关键值k执行哈希函数h来选择的布隆过滤器b中的位)的关键值集文件f的字节中的位偏移。47.·hpage_file_offset_byte(f,b,h,k)=floor(hbyte_file_offset_byte(f,b,h,k)/vmpage_size_byte(f))*vmpage_size_byte(f),其是含有通过针对关键值k执行哈希函数h来选择的布隆过滤器b中的位的关键值集文件f中的页的字节偏移。48.·hpage_offset_bit(f,b,h,k)=((8*bf_file_offset_byte(f,b))+bf_offset_bit(b,h,k))modulo(8*vmpage_size_byte(f)),其是处于字节偏移hpage_file_offset_byte(f,b,h,k)(其是通过针对关键值k执行哈希函数h来选择的布隆过滤器b中的位)的关键值集文件f的页中的位偏移。49.这些值一旦经计算,便可以各种方式使用。例如,为读取通过针对关键值k执行哈希函数h来选择的布隆过滤器b中的位,可使用以下操作:50.·将开始于字节偏移hpage_file_offset_byte(f,b,h,k)的关键值集文件f中的页读取到存储器缓冲器中;且接着51.·从处于位偏移hpage_offset_bit(f,b,h,k)的所述存储器缓冲器读取所关注位。52.在另一实例中,为读取通过对关键值k执行哈希函数h来选择的布隆过滤器b中的位,可使用以下操作:53.·将关键值集文件f中的字节(处于字节偏移hbyte_file_offset_byte(f,b,h,k))读取到存储器缓冲器中;且接着54.·从所述存储器缓冲器读取所关注位(处于位偏移hbyte_offset_bit(f,b,h,k))。55.如上所述,下文在其内呈现若干实例的上下文包含这些定义及计算值。56.图2是根据实施例的用于缩减概率过滤器查询延时的控制流程200的实例的泳道图。以下实例涉及在linuxos上下文中的基于文件的检查及提取技术。此技术确定含有布隆过滤器数据的关键值集文件页的指定集合的哪些片段(如果有)是在linux页高速缓存中,且仅在需要时异步地加载那些页的余部。另外,本技术提供关于页高速缓存中的页(例如,高速缓存页)中的指定位的值的信息。在实例中,所述检查及提取技术是vfs的部分。在实例中,本技术是由用户空间过程经由系统呼叫来执行。在实例中,本技术是由linux内核经由直接方法呼叫(例如,标准c语言函数调用)来执行。57.控制流程200说明请求者(例如,呼叫者)、os或文件系统、高速缓存媒体(例如,存储器或存储器子系统)与存储媒体(例如,磁盘或磁盘子系统)之间的检查及提取函数的操作。在呼叫者执行检查及提取函数作为布隆查询的部分(操作205)之后,确定布隆过滤器阵列的高速缓存部分(操作210)。读取高速缓存中的布隆过滤器阵列的部分(操作215)且对其执行布隆查询(操作220)。如果操作220的结果指示查询项不在布隆过滤器中,那么处理程序(例如,os或文件系统)传回查询项(例如,项目)不在关键值集中的指示(操作225)。在实例中,所述指示是作为部分查询结果的部分而传回。58.如果处理程序无法完全地解析查询(例如,布隆过滤器的高速缓存部分指示查询项可能在关键值集中),那么起始布隆过滤器阵列的非高速缓存部分的异步加载(操作230)。在此,异步是呼叫者在转到另一操作之前不阻止(例如,等待)完成的操作。因此,处理程序可立即提供高速缓存部分的查询结果(例如,部分查询结果)(操作235),而无需等待布隆过滤器阵列的非高速缓存部分从存储媒体移动到高速缓存媒体(操作240)。59.下文说明使用伪码的基于文件的检查及提取的实例。首先,在本技术中使用以下结构及原型:[0060][0061][0062]其中:[0063]·fd是开放式关键值集文件的句柄,是检查及提取函数的输入(例如,由linuxvfs响应于开放式系统呼叫而传回的文件描述符)。[0064]·pagev是page_info结构的阵列,是所述函数的输入。在此,pagev的每一元素指定关键值集文件fd中的页的字节偏移(例如,“page_offset”)及那个页中的位偏移(例如,“bit_offset”),如下文所描述。[0065]·page_cached是设置为所述函数的输出的布尔值阵列,如下文所描述。[0066]·bit_set是设置为所述函数的输出的布尔值阵列,如下文所描述。[0067]·count是pagev、page_cached及bit_set阵列中的元素的整数数目,是所述函数的输入。[0068]在下文中,给定阵列a,记号a[i]指代a的第i元素,其中第一元素是a[0],即,阵列元素是零基的。鉴于上述情况,通过基于文件的检查及提取技术执行以下操作:[0069][0070][0071]在实例中,file_check_fetch函数假定非高速缓存关键值集文件页将按其在阵列pagev中出现的顺序读取,且可将此纳入考虑以优化载入这些页(例如,在序列中选择下一页进行加载)。为使用上文所描述的呼叫执行布隆查询,用户空间过程(或其它呼叫者)可执行以下操作。给定关键值集文件f中的布隆过滤器b及j个哈希函数h[0]、...、h[j-1]的阵列h(每一哈希函数将关键值映射到b中的位),可经由以下操作执行对关键值k的布隆查询:[0072][0073][0074][0075]图3是根据实施例的用于缩减概率过滤器查询延时的方法300的实例的流程图。使用例如上文或下文所描述的计算机硬件来执行方法300的操作。如前所述,用户空间过程可任选地使用标准linuxmmap系统呼叫或类似物将关键值集文件存储器映射到其虚拟存储器地址空间中。在此情况下,用户空间过程可经由存储器读取操作存取关键值集数据,包含布隆过滤器。可使用类似于前文所描述的基于文件的检查及提取函数而操作的基于存储器的检查及提取函数改进查询延时。在实例中,基于文件的检查及提取伪码实例也可与存储器映射文件一起使用。[0076]接收布隆查询(操作305)。所述查询的处理程序可计算来自关键值集文件的与所述查询相关的片段(操作310)。在此实例中,所述查询提供文件识别符及查询项(例如,关键值集查询中的关键值),且os计算关键值集文件的哪个部分含有关键值哈希(例如,对应于k个哈希的结果的阵列的索引)的布隆过滤器阵列的特定部分。在存储器映射文件中,此确定涉及从存储器映射关键值集文件中的布隆过滤器的页的字节偏移计算多个阵列索引的位偏移。[0077]一旦确定过滤器的相关片段,便处理所述片段。此过程包含选择下一片段(操作315)及确定那个片段是否在高速缓存中(操作320)。如果所述片段不在高速缓存中,那么标记所述片段以便检索(操作345)。在实例中,标记待检索片段实际上不起始片段的检索,而是指示如果可使用额外数据来完成查询就将检索所述片段。在任一情况下(例如,检索片段或标记而不检索),操作345是异步的。[0078]如果所述片段在高速缓存中,就测试所述片段以确定过滤器是否通过(操作325)。使用标准布隆过滤器,如果将对应于关键值的任何阵列索引设置为零,那么查询未通过。如果过滤器未通过,那么方法300可被终止且传回查询项并非集合的部分的指示(操作330)。然而,如果过滤器通过,且存在更多片段(操作335),那么处理继续直到不存在片段或过滤器不通过。[0079]在已处理片段之后且方法300归因于过滤器未通过而无法退出,将标记片段从磁盘加载到存储器(操作340)。此时,方法300退出,将部分结果传回到呼叫者。[0080]下文描述基于存储器的检查及提取函数,其确定含有布隆过滤器数据的存储器映射关键值集文件页的指定集合中的哪些(如果有)是在linux页高速缓存中且仅在需要那些页的余部来完成查询时异步地加载那些页的余部。实例函数还提供关于高速缓存页中的指定位的值的信息。在此实例中,基于存储器的检查及提取函数是在vfs中实施且由用户空间过程经由系统呼叫来执行。所述函数使用以下数据结构及原型:[0081][0082]其中:[0083]·addrv是page_addr_info结构的阵列,是所述方法的输入;addrv的每一元素指定对应于存储器映射关键值集文件页的第一字节的过程虚拟存储器地址(page_addr)及那个页中的位偏移(bit_offset),如下文所描述。[0084]·page_cached是设置为所述方法的输出的布尔值集阵列,如下文所描述。[0085]·bit_set是设置为所述方法的输出的布尔值阵列,如下文所描述。[0086]·count是addrv、page_cached及bit_set阵列中的元素的整数数目,是所述方法的输入。[0087]在下文中,给定阵列a,记号a[i]指代a的第i元素,其中第一元素是a[0]。鉴于上述情况,通过基于存储器的检查及提取技术执行以下操作:[0088][0089][0090][0091]在实例中,mem_check_fetch函数假定非高速缓存关键值集文件页将按其在阵列addrv中出现的顺序读取,且可将此纳入考虑以优化载入这些页。在实例中,mem_check_fetch允许addrv阵列指定相关联于(映射到)一个以上关键值集文件中的页的地址。以下伪码说明如何使用mem_check_fetch函数执行布隆查询。给定存储器映射关键值集文件f中的布隆过滤器b及j个哈希函数h[0]、...、h[j-1]的阵列h(每一哈希函数将关键值映射到b中的位),可经由以下操作执行对关键值k的布隆查询:[0092][0093][0094][0095][0096]上文所描述的mem_check_fetch的实施例假定关键值集文件经完全存储器映射(例如,整个文件被映射)到虚拟存储器地址的连续序列。如果关键值集文件经部分存储器映射,例如仅含有布隆过滤器数据的部分被映射,那么相应地调整上述技术中所使用的存储器偏移。[0097]图4是根据实施例的用于缩减概率过滤器查询延时的方法400的实例的流程图。使用例如上文或下文所描述的计算机硬件来执行方法400的操作。上文关于图2及3所描述的技术调用概率过滤器数据从磁盘到存储器的显式且有条件的异步加载,因为呼叫过程期望发生异步加载,除非可使用概率过滤器的高速缓存部分来应答查询。因此,针对存储器映射关键值集文件,mem_check_fetch函数允许用户空间过程显式地起始将含有布隆过滤器数据的页异步地加载到linux页高速缓存中。替代或补充技术使用来自概率过滤器的非高速缓存片段的隐式异步加载。例如,基于存储器的“提取群组”函数允许用户空间过程通过将页群组定义为群组(例如,提取群组)且在所述群组的成员中存在页面错误时载入整个群组来隐式地起始将含有布隆过滤器数据的页异步地加载到linux页高速缓存中。[0098]方法400通过产生提取群组而开始(操作405)。所述提取群组包含文件中彼此相关的页。可通过指定待分组的页且将页识别存储于数据结构(例如,表、阵列等)中来产生所述提取群组。在实例中,页通过其在存储概率过滤器时的使用而相关。[0099]一旦产生所述提取群组,那么当存在页面错误时查阅所述提取群组(操作410)。在此,页面错误是对不常驻于存储器中的页的引用(例如,其需要从待使用的磁盘加载)。如果存在页面错误,那么检查提取群组以确定所述错误页是否在所述提取群组中(操作420)。如果是,那么异步地加载提取群组中的其它页(操作440)。在起始异步加载之后,或如果所述错误页不在提取群组中,那么方法400结束。此技术是隐式的,因为过程仅请求页执行布隆(或其它概率)查询,且当第一经检查页不在高速缓存中时,异步地加载整个非高速缓存页。[0100]如下文所说明,mem_fetch_group函数对存储器映射关键值集文件进行操作。如同file_check_fetch及mem_check_fetch函数,mem_fetch_group函数可在vfs中实施且由用户空间过程经由系统呼叫来执行。以下是mem_fetch_group函数的原型:[0101]mem_fetch_group(address_type*addrv,integercount;)[0102]其中:[0103]·addrv是address_type值的阵列,是所述方法的输入;addrv中的每一元素指定对应于存储器映射关键值集文件页的第一字节的过程虚拟存储器地址。[0104]·count是addrv阵列中的元素的整数数目,是所述方法的输入。[0105]在下文中,给定阵列a,记号a[i]指代a的第i元素,其中第一元素是a[0]。鉴于上述情况,执行以下操作以实施提取群组技术:[0106]createanentryinafetchgrouptableidentifyingthekey-valuesetfilepagesassociatedwithaddressesaddrv[0],…,addrv[count-1]asallbelongingtothesamefetchgroup.[0107]done;[0108]在响应于发起(instigate)从存储器映射关键值集文件加载页的vm页面错误填入fetchgroup表(例如,定义提取群组)之后,vfs执行以下操作:[0109][0110][0111]在实例中,按由产生对应fetchgroup表项目的mem_fetch_group执行的addrv输入指定的顺序读取提取群组中的非高速缓存关键值集文件页。处理程序(例如,vfs)可使用此顺序来优化加载这些页。在实例中,mem_fetch_group函数允许addrv阵列指定对应于(例如,映射到)一个以上关键值集文件中的页的地址。以下伪码说明如何使用mem_fetch_group函数执行布隆查询。给定存储器映射关键值集文件f中的布隆过滤器b及j个哈希函数h[0]、...、h[j-1]的阵列h(每一哈希函数将关键值映射到b中的位),可如下般执行对关键值k的布隆查询:[0112][0113]首先,执行以下步骤以针对布隆过滤器b建立提取群组:[0114][0115][0116]接着,在未来某个时间,如下那样执行对关键值k的布隆查询:[0117][0118][0119]上述伪码假定关键值集文件经完全存储器映射到虚拟存储器地址的连续序列。如果关键值集文件经部分存储器映射-例如,仅包含布隆过滤器数据的文件部分被映射-那么将上述算法中所使用的存储器偏移调整到那种情况。[0120]提取群组技术的条件性质是区别于试图在需要时提前将文件数据从磁盘加载到高速缓存中的其它预提取技术的特性。因此,如果存取文件页中的一者导致页面错误,那么这些其它技术不适合加载文件页的经明确定义集合。[0121]尽管在上述实例中使用在linux下读取的关键值集文件,但这些技术并非是linux特定的;全部技术可应用于高速缓存文件页且提供存储器映射文件的任何操作系统。file_check_fetch及mem_check_fetch的变化也可应用于其它概率过滤器以测试集合成员资格。例如,这些函数可延伸到计数布隆过滤器-包括m个f位计数器及j个不同哈希函数的阵列,每一哈希函数将集合元素映射到m个计数器中的一者-或映射到布谷鸟哈希表或布谷鸟过滤器-包括m个f位值(其中值在布谷鸟哈希表的情况下是关键值,且在布谷鸟过滤器的情况下是关键值指纹)及两个不同哈希函数(每一哈希函数将集合元素映射到m个f位值中的一者)的阵列。mem_fetch_group可应用于存储于一或多个已知页中的存储器映射文件中的任何数据结构,且其中在处理这些页的任一者的页面错误时起始包括数据结构的非高速缓存页的异步加载是有益的。因此,mem_fetch_group可有益于广泛范围的应用程序,而不仅仅有益于用于测试集合成员资格的概率过滤器。[0122]图5是根据实施例的用于缩减概率过滤器查询延时的方法500的实例的流程图。使用例如上文或下文所描述的计算机硬件来执行方法500的操作。[0123]在操作505,从呼叫者接收对存储于第一媒体上的概率过滤器的查询。在实例中,接收所述查询包含接收片段识别符。在实例中,所述片段识别符指定概率过滤器的全部片段中的哪些片段与所述查询相关。在实例中,所述片段识别符是文件中的字节偏移。在实例中,所述查询包含所述文件的文件识别符。[0124]在实例中,所述文件是关键值集文件。在实例中,所述关键值集文件包含来自一个以上kvs树的关键值集。在实例中,所述概率过滤器应用于所述关键值集文件中的单个kvs树。在实例中,针对所述关键值集文件的页维持提取群组数据结构。在此实例中,响应于所述提取群组数据结构中的一个页上的页面错误而检索所述关键值集文件的提取群组数据结构中的页。[0125]在实例中,所述查询包含一组测试参数。在实例中,所述测试参数包含位置(例如,布隆过滤器阵列的索引、布谷鸟过滤器中的贮体、地址等)。在实例中,所述位置是片段中的位偏移。在实例中,所述测试参数的子集包含每一位置中的位值。[0126]在操作510,响应于接收所述查询,获得存储于第二媒体上的概率过滤器的高速缓存片段。在实例中,所述高速缓存片段小于存储于所述第一媒体上的概率过滤器的全部。在实例中,所述概率过滤器提供在确定元素不在集合中时是结论性的集合成员资格确定。在实例中,所述概率过滤器是布隆过滤器、计数布隆过滤器或布谷鸟过滤器中的至少一者。[0127]在实例中,接收所述查询包含接收片段识别符。在实例中,所述片段识别符指定所述概率过滤器的全部片段的哪些片段与所述查询相关。在实例中,获得所述高速缓存片段包含获得所述第二媒体中的所述概率过滤器对应于所述片段识别符的片段。[0128]在实例中,所述概率过滤器的片段是基于所述第二媒体中的所述概率过滤器的表示。在实例中,所述片段具有均匀大小。在实例中,所述均匀大小是存储器页大小。在实例中,所述片段识别符是存储器页识别符。在实例中,所述片段识别符是存储器地址。[0129]在操作515,对所述高速缓存片段执行所述查询,从而导致部分查询结果。[0130]在操作520,在呼叫者不介入的情况下,起始(例如,开始)所述概率过滤器的剩余数据从所述第一媒体到所述第二媒体的检索。在实例中,所述剩余数据对应于所述查询及不在所述高速缓存片段中的数据。在实例中,所述概率过滤器的剩余数据的检索包含识别所述部分查询结果中的所述概率过滤器的停止条件及避免(例如,中止或不采取相关进一步动作)检索剩余数据。[0131]在操作525,将所述部分查询结果传回到所述呼叫者。在其中所述查询包含测试参数的实例中,所述部分查询结果包含对所述高速缓存片段执行的所述测试参数的子集的结果。在实例中,所述部分查询结果包含与所述查询相关且不在所述高速缓存片段中的片段识别符的列表。在实例中,所述呼叫者接收所述部分查询结果,针对由所述概率过滤器定义的停止条件搜索测试参数的子集,且当在测试参数的子集中未找到所述停止条件时在所述片段识别符的片段内搜索所述停止条件。在此,所述片段由于起始所述概率过滤器的剩余数据的检索而常驻于所述第二媒体中。[0132]图6说明实例机器600的框图,可对机器600执行本文中所论述的任何一或多种技术(例如,方法)。如本文中所描述,实例可包含机器600中的逻辑或数个组件或机构,或可通过机器600中的逻辑或数个组件或机构操作。电路系统(例如,处理电路系统)是在包含硬件(例如,简单电路、门、逻辑等)的机器600的有形实体中实施的电路的集合。电路系统成员资格可随时间变通。电路系统包含可在操作时单独地或组合地执行指定操作的成员。在实例中,可不可变地设计电路系统的硬件以实施特定操作(例如,硬接线)。在实例中,电路系统的硬件可包含可变连接的物理组件(例如,执行单元、晶体管、简单电路等),包含物理上经修改(例如,不变质量的粒子的磁性、电、可移动放置等)以编码特定操作的指令的机器可读媒体。在连接物理组件时,硬件构成的基本电性质例如从绝缘体变为导体,或反之亦然。指令使嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接在硬件中产生电路系统的成员,以在操作时实施特定操作的部分。因此,在实例中,机器可读媒体元素是电路系统的部分或当装置操作时通信地耦合到电路系统的其它组件。在实例中,物理组件中的任一者可用于一个以上电路系统的一个以上成员中。例如,在操作下,执行单元可在一个时间点用于第一电路系统的第一电路中且在不同时间由所述第一电路系统中的第二电路重用,或由第二电路系统中的第三电路重用。下文是关于机器600的这些组件的额外实例。[0133]在替代实施例中,机器600可操作为独立装置或可经连接(例如,联网)到其它机器。在联网部署中,机器600可作为服务器-客户端网络环境中的服务器机器、客户端机器或两者而操作。在实例中,机器600可充当对等(p2p)(或其它分布式)网络环境中的对等机器。机器600可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、移动电话、网络设备、网络路由器、交换机或网桥,或能够执行指定待由那个机器采取的动作的(循序或以其它方式)指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”也应被视为包含个别地或共同地执行一组指令(或多组指令)以执行本文中所论述的任何一或多种方法的任何机器集合,例如云计算、软件即服务(saas)、其它计算机集群配置。[0134]机器(例如,计算机系统)600可包含硬件处理器602(例如,中央处理单元(cpu)、图形处理单元(gpu)、硬件处理器核心或其任何组合)、主存储器604、静态存储器(例如,固件、微代码、基本输入输出系统(bios)、统一可扩展固件接口(uefi)等的存储器或存储装置)606及大容量存储装置608(例如,硬驱动、磁带驱动、快闪存储装置或其它块装置),其中一些或全部可经由互连(例如,总线)630彼此通信。机器600可进一步包含显示器单元610、字母数字输入装置612(例如,键盘)及用户接口(ui)导航装置614(例如,鼠标)。在实例中,显示器单元610、输入装置612及ui导航装置614可为触摸屏显示器。机器600可另外包含存储装置(例如,驱动单元)608、信号产生装置618(例如,扬声器)、网络接口装置620及一或多个传感器616,例如全球定位系统(gps)传感器、指南针、加速度计或其它传感器。机器600可包含输出控制器628(例如串行(例如,通用串行总线(usb)、并行、或其它有线或无线(例如,红外(ir)、近场通信(nfc)等)连接)以与一或多个外围装置(例如,打印机、读卡器等)通信或控制一或多个外围装置(例如,打印机、读卡器等)。[0135]处理器602、主存储器604、静态存储器606或大容量存储装置608的寄存器可为或包含机器可读媒体622,体现本文中所描述的任何一或多种技术或功能或由本文中所描述的任何一或多种技术或功能利用的一或多组数据结构或指令624(例如,软件)存储在机器可读媒体622上。指令624也可在其由机器600执行期间完全地或至少部分地常驻于处理器602、主存储器604、静态存储器606或大容量存储装置608的寄存器中的任一者内。在实例中,硬件处理器602、主存储器604、静态存储器606或大容量存储装置608的一个或任何组合可构成机器可读媒体622。虽然机器可读媒体622被说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令624的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存及服务器)。[0136]术语“机器可读媒体”可包含能够存储、编码或载送由机器600执行的指令且引起机器600执行本发明的任何一或多种技术,或能够存储、编码或载送由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有含不变(例如,静止)质量且因此是组合物的多个粒子的机器可读媒体。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))、快闪装置;磁盘,例如内部硬盘及可移动磁盘;磁光盘;及cd-rom及dvd-rom磁盘。[0137]指令624可进一步经过通信网络626使用传输媒体经由利用数个传送协议中的任一者(例如,帧中继、因特网协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)、超文本传送协议(http)等)的网络接口装置620加以传输或接收。实例通信网络可包含局域网络(lan)、广域网(wan)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、简易老式电话(pots)网络及无线数据网络(例如,电气及电子工程师协会(ieee)802.11系列标准(称为)、ieee802.16系列标准(称为)、ieee802.15.4系列标准、对等(p2p)网络,等等)。在实例中,网络接口装置620可包含一或多个物理插孔(例如,以太网、同轴或电话插孔)或一或多个天线以连接到通信网络626。在实例中,网络接口装置620可包含多个天线以使用单输入多输出(simo)、多输入多输出(mimo)或多输入单输出(miso)技术中的至少一者进行无线通信。术语“传输媒体”应被视为包含能够存储、编码或载送由机器600执行的指令的任何无形媒体,且包含促进此软件的通信的数字或模拟通信信号或其它无形媒体。传输媒体是机器可读媒体。[0138]额外注释&实例[0139]实例1是一种用于缩减概率过滤器查询延时的系统,所述系统包括用于以下各者的处理电路系统:从呼叫者接收对存储于第一媒体上的概率过滤器的查询;响应于接收所述查询,获得存储于第二媒体上的所述概率过滤器的高速缓存片段,其中所述高速缓存片段小于存储于所述第一媒体上的所述概率过滤器的全部,其中所述概率过滤器提供在确定元素不在集合中时是结论性的集合成员资格确定;对所述高速缓存片段执行所述查询,从而导致部分查询结果;在所述呼叫者不介入的情况下,起始所述概率过滤器的剩余数据从所述第一媒体到所述第二媒体的检索,其中所述剩余数据对应于所述查询及不在所述高速缓存片段中的数据;及将所述部分查询结果传回到所述呼叫者。[0140]在实例2中,实例1的标的物包含,其中为接收所述查询,所述处理电路系统接收片段识别符,所述片段识别符指定所述概率过滤器的全部片段的哪些片段与所述查询相关。[0141]在实例3中,实例2的标的物包含,其中所述片段识别符是文件中的字节偏移。[0142]在实例4中,实例3的标的物包含,其中所述查询包含所述文件的文件识别符。[0143]在实例5中,实例3到4的标的物包含,其中所述文件是关键值集文件。[0144]在实例6中,实例5的标的物包含,其中所述处理电路系统进一步用以:针对所述关键值集文件的页维持提取群组数据结构;及响应于所述提取群组数据结构中的一个页上的页面错误而检索所述关键值集文件的所述提取群组数据结构中的页。[0145]在实例7中,实例5到6的标的物包含,其中所述关键值集文件包含一个以上kvs树。[0146]在实例8中,实例7的标的物包含,其中所述概率过滤器应用于所述关键值集文件中的单个kvs树。[0147]在实例9中,实例2到8的标的物包含,其中为获得所述高速缓存片段,所述处理电路系统获得所述第二媒体中的所述概率过滤器对应于所述片段识别符的片段。[0148]在实例10中,实例1到9的标的物包含,其中所述概率过滤器的片段是基于所述第二媒体中的所述概率过滤器的表示。[0149]在实施例11中,实例10的标的物包含,其中所述片段具有均匀大小。[0150]在实例12中,实例11的标的物包含,其中所述均匀大小是存储器页大小。[0151]在实例13中,实例12的标的物包含,其中所述片段识别符是页识别符。[0152]在实例14中,实例11到13的标的物包含,其中所述片段识别符是存储器地址。[0153]在实例15中,实例1到14的标的物包含,其中所述查询包含一组测试参数,且其中所述部分查询结果包含对所述高速缓存片段执行的所述测试参数的子集的结果。[0154]在实例16中,实例15的标的物包含,其中所述测试参数包含位置。[0155]在实例17中,实例16的标的物包含,其中所述位置是片段中的位偏移。[0156]在实例18中,实例17的标的物包含,其中所述测试参数的所述子集包含每一位置中的位值。[0157]在实例19中,实例15到18的标的物包含,其中所述部分查询结果包含与查询相关且不在所述高速缓存片段中的片段识别符的列表。[0158]在实例20中,实例19的标的物包含,其中所述处理电路系统进一步用以:由所述呼叫者接收所述部分查询结果;针对由所述概率过滤器定义的停止条件搜索所述部分查询结果中的所述测试参数子集;及当在所述测试参数子集中未找到所述停止条件时,在所述片段识别符的片段内搜索所述停止条件,所述片段由于起始所述概率过滤器的所述剩余数据的所述检索而常驻于所述第二媒体中。[0159]在实例21中,实例1到20的标的物包含,其中为起始所述概率过滤器的剩余数据的检索,所述处理电路系统识别所述部分查询结果中的所述概率过滤器的停止条件且放弃所述剩余数据的所述检索。[0160]在实例22中,实例1到21的标的物包含,其中所述概率过滤器是布隆过滤器、计数布隆过滤器或布谷鸟过滤器中的至少一者。[0161]实例23是一种用于缩减概率过滤器查询延时的方法,所述方法包括:从呼叫者接收对存储于第一媒体上的概率过滤器的查询;响应于接收所述查询,获得存储于第二媒体上的所述概率过滤器的高速缓存片段,其中所述高速缓存片段小于存储于所述第一媒体上的所述概率过滤器的全部,其中所述概率过滤器提供在确定元素不在集合中时是结论性的集合成员资格确定;对所述高速缓存片段执行所述查询,从而导致部分查询结果;在所述呼叫者不介入的情况下,起始所述概率过滤器的剩余数据从所述第一媒体到所述第二媒体的检索,其中所述剩余数据对应于所述查询及不在所述高速缓存片段中的数据;及将所述部分查询结果传回到所述呼叫者。[0162]在实例24中,实例23的标的物包含,其中接收所述查询包含接收片段识别符,所述片段识别符指定所述概率过滤器的全部片段的哪些片段与所述查询相关。[0163]在实例25中,实例24的标的物包含,其中所述片段识别符是文件中的字节偏移。[0164]在实例26中,实例25的标的物包含,其中所述查询包含所述文件的文件识别符。[0165]在实例27中,实例25到26的标的物包含,其中所述文件是关键值集文件。[0166]在实例28中,实例27的标的物包含:针对所述关键值集文件的页维持提取群组数据结构;及响应于所述提取群组数据结构中的一个页上的页面错误而检索所述关键值集文件的所述提取群组数据结构中的页。[0167]在实例29中,实例27到28的标的物包含,其中所述关键值集文件包含一个以上kvs树。[0168]在实例30中,实例29的标的物包含,其中所述概率过滤器应用于所述关键值集文件中的单个kvs树。[0169]在实例31中,实例24到30的标的物包含,其中获得所述高速缓存片段包含获得所述第二媒体中的所述概率过滤器对应于所述片段识别符的片段。[0170]在实例32中,实例23到31的标的物包含,其中所述概率过滤器的片段是基于所述第二媒体中的所述概率过滤器的表示。[0171]在实施例33中,实施例32的标的物包含,其中所述片段具有均匀大小。[0172]在实例34中,实例33的标的物包含,其中所述均匀大小是存储器页大小。[0173]在实例35中,实例34的标的物包含,其中所述片段识别符是页识别符。[0174]在实例36中,实例33到35的标的物包含,其中所述片段识别符是存储器地址。[0175]在实例37中,实例23到36的标的物包含,其中所述查询包含一组测试参数,且其中所述部分查询结果包含对所述高速缓存片段执行的所述测试参数的子集的结果。[0176]在实例38中,实例37的标的物包含,其中所述测试参数包含位置。[0177]在实例39中,实例38的标的物包含,其中所述位置是片段中的位偏移。[0178]在实例40中,实例39的标的物包含,其中所述测试参数的所述子集包含每一位置中的位值。[0179]在实例41中,实例37到40的标的物包含,其中所述部分查询结果包含与查询相关且不在所述高速缓存片段中的片段识别符的列表。[0180]在实例42中,实例41的标的物包含:由所述呼叫者接收所述部分查询结果;针对由所述概率过滤器定义的停止条件搜索所述部分查询结果中的所述测试参数子集;及当在所述测试参数子集中未找到所述停止条件时,在所述片段识别符的片段内搜索所述停止条件,所述片段由于起始所述概率过滤器的所述剩余数据的所述检索而常驻于所述第二媒体中。[0181]在实例43中,实例23到42的标的物包含,其中起始所述概率过滤器的剩余数据的检索包含识别所述部分查询结果中的所述概率过滤器的停止条件及放弃所述剩余数据的所述检索。[0182]在实例44中,实例23到43的标的物包含,其中所述概率过滤器是布隆过滤器、计数布隆过滤器或布谷鸟过滤器中的至少一者。[0183]实例45是一种包含指令的机器可读媒体,所述指令在由机器执行时引起所述机器执行实例23到44的任一方法。[0184]实施例46是一种包括用来执行实例23到44的任一方法的构件的系统。[0185]实例47是一种包含用于缩减概率过滤器查询延时的指令的机器可读媒体,所述指令在由所述处理电路系统执行时引起所述处理电路系统执行包括以下各者的操作:从呼叫者接收对存储于第一媒体上的概率过滤器的查询;响应于接收所述查询,获得存储于第二媒体上的所述概率过滤器的高速缓存片段,其中所述高速缓存片段小于存储于所述第一媒体上的所述概率过滤器的全部,其中所述概率过滤器提供在确定元素不在集合中时是结论性的集合成员资格确定;对所述高速缓存片段执行所述查询,从而导致部分查询结果;在所述呼叫者不介入的情况下,起始所述概率过滤器的剩余数据从所述第一媒体到所述第二媒体的检索,其中所述剩余数据对应于所述查询及不在所述高速缓存片段中的数据;及将所述部分查询结果传回到所述呼叫者。[0186]在实例48中,实例47的标的物包含,其中接收所述查询包含接收片段识别符,所述片段识别符指定所述概率过滤器的全部片段的哪些片段与所述查询相关。[0187]在实例49中,实例48的标的物包含,其中所述片段识别符是文件中的字节偏移。[0188]在实例50中,实例49的标的物包含,其中所述查询包含所述文件的文件识别符。[0189]在实例51中,实例49到50的标的物包含,其中所述文件是关键值集文件。[0190]在实例52中,实例51的标的物包含,其中所述操作包括:针对所述关键值集文件的页维持提取群组数据结构;及响应于所述提取群组数据结构中的一个页上的页面错误而检索所述关键值集文件的所述提取群组数据结构中的页。[0191]在实例53中,实例51到52的标的物包含,其中所述关键值集文件包含一个以上kvs树。[0192]在实例54中,实例53的标的物包含,其中所述概率过滤器应用于所述关键值集文件中的单个kvs树。[0193]在实例55中,实例48到54的标的物包含,其中获得所述高速缓存片段包含获得所述第二媒体中的所述概率过滤器对应于所述片段识别符的片段。[0194]在实例56中,实例47到55的标的物包含,其中所述概率过滤器的片段是基于所述第二媒体中的所述概率过滤器的表示。[0195]在实施例57中,实施例56的标的物包含,其中所述片段具有均匀大小。[0196]在实例58中,实例57的标的物包含,其中所述均匀大小是存储器页大小。[0197]在实例59中,实例58的标的物包含,其中所述片段识别符是页识别符。[0198]在实例60中,实例57到59的标的物包含,其中所述片段识别符是存储器地址。[0199]在实例61中,实例47到60的标的物包含,其中所述查询包含一组测试参数,且其中所述部分查询结果包含对所述高速缓存片段执行的所述测试参数的子集的结果。[0200]在实例62中,实例61的标的物包含,其中所述测试参数包含位置。[0201]在实例63中,实例62的标的物包含,其中所述位置是片段中的位偏移。[0202]在实例64中,实例63的标的物包含,其中所述测试参数的所述子集包含每一位置中的位值。[0203]在实例65中,实例61到64的标的物包含,其中所述部分查询结果包含与查询相关且不在所述高速缓存片段中的片段识别符的列表。[0204]在实例66中,实例65的标的物包含,其中所述操作包括:由所述呼叫者接收所述部分查询结果;针对由所述概率过滤器定义的停止条件搜索所述部分查询结果中的所述测试参数子集;及当在所述测试参数子集中未找到所述停止条件时,在所述片段识别符的片段内搜索所述停止条件,所述片段由于起始所述概率过滤器的所述剩余数据的所述检索而常驻于所述第二媒体中。[0205]在实例67中,实例47到66的标的物包含,其中起始所述概率过滤器的剩余数据的检索包含识别所述部分查询结果中的所述概率过滤器的停止条件及放弃所述剩余数据的所述检索。[0206]在实例68中,实例47到67的标的物包含,其中所述概率过滤器是布隆过滤器、计数布隆过滤器或布谷鸟过滤器的至少一者。[0207]实例69是一种用于缩减概率过滤器查询延时的系统,所述系统包括:用于从呼叫者接收对存储于第一媒体上的概率过滤器的查询的构件;用于响应于接收所述查询而获得存储于第二媒体上的所述概率过滤器的高速缓存片段的构件,其中所述高速缓存片段小于存储于所述第一媒体上的所述概率过滤器的全部,其中所述概率过滤器提供在确定元素不在集合中时是结论性的集合成员资格确定;用于对所述高速缓存片段执行所述查询从而导致部分查询结果的构件;用于在所述呼叫者不介入的情况下起始所述概率过滤器的剩余数据从所述第一媒体到所述第二媒体的检索的构件,其中所述剩余数据对应于所述查询及不在所述高速缓存片段中的数据;及用于将所述部分查询结果传回到所述呼叫者的构件。[0208]在实例70中,实例69的标的物包含,其中用于接收所述查询的所述构件包含用于接收片段识别符的构件,所述片段识别符指定所述概率过滤器的全部片段的哪些片段与所述查询相关。[0209]在实例71中,实例70的标的物包含,其中所述片段识别符是文件中的字节偏移。[0210]在实例72中,实例71的标的物包含,其中所述查询包含所述文件的文件识别符。[0211]在实例73中,实例71到72的标的物包含,其中所述文件是关键值集文件。[0212]在实例74中,实例73的标的物包含:用于针对所述关键值集文件的页维持提取群组数据结构的构件;及用于响应于所述提取群组数据结构中的一个页上的页面错误而检索所述关键值集文件的所述提取群组数据结构中的页的构件。[0213]在实例75中,实例73到74的标的物包含,其中所述关键值集文件包含一个以上kvs树。[0214]在实例76中,实例75的标的物包含,其中所述概率过滤器应用于所述关键值集文件中的单个kvs树。[0215]在实例77中,实例70到76的标的物包含,其中用于获得所述高速缓存片段的所述构件包含用于获得所述第二媒体中的所述概率过滤器对应于所述片段识别符的片段的构件。[0216]在实例78中,实例69到77的标的物包含,其中所述概率过滤器的片段是基于所述第二媒体中的所述概率过滤器的表示。[0217]在实施例79中,实施例78的标的物包含,其中所述片段具有均匀大小。[0218]在实例80中,实例79的标的物包含,其中所述均匀大小是存储器页大小。[0219]在实例81中,实例80的标的物包含,其中所述片段识别符是页识别符。[0220]在实例82中,实例79到81的标的物包含,其中所述片段识别符是存储器地址。[0221]在实例83中,实例69到82的标的物包含,其中所述查询包含一组测试参数,且其中所述部分查询结果包含对所述高速缓存片段执行的所述测试参数的子集的结果。[0222]在实例84中,实例83的标的物包含,其中所述测试参数包含位置。[0223]在实例85中,实例84的标的物包含,其中所述位置是片段中的位偏移。[0224]在实例86中,实例85的标的物包含,其中所述测试参数的所述子集包含每一位置中的位值。[0225]在实例87中,实例83到86的标的物包含,其中所述部分查询结果包含与查询相关且不在所述高速缓存片段中的片段识别符的列表。[0226]在实例88中,实例87的标的物包含:用于由所述呼叫者接收所述部分查询结果的构件;用于针对由所述概率过滤器定义的停止条件搜索所述部分查询结果中的所述测试参数子集的构件;及用于当在所述测试参数子集中未找到所述停止条件时在所述片段识别符的片段内搜索所述停止条件的构件,所述片段由于起始所述概率过滤器的所述剩余数据的所述检索而常驻于所述第二媒体中。[0227]在实例89中,实例69到88的标的物包含,其中用于起始所述概率过滤器的剩余数据的检索的所述构件包含用于识别所述部分查询结果中的所述概率过滤器的停止条件及放弃所述剩余数据的所述检索的构件。[0228]在实例90中,实例69到89的标的物包含,其中所述概率过滤器是布隆过滤器、计数布隆过滤器或布谷鸟过滤器中的至少一者。[0229]实例91是一种用于缩减概率过滤器查询延时的系统,所述系统包括用于以下各者的处理电路系统:接收页面错误的通知,所述页面错误是对对应于存储器映射文件的存储器页的请求,所述存储器页不在存储器中;确定所述存储器页是提取群组的部分;及起始所述提取群组中并非处于存储器中的存储器页的加载。[0230]在实例92中,实例91的标的物包含,其中为起始所述加载,所述处理电路系统执行所述提取群组中并非处于存储器中的所述存储器页的异步加载。[0231]在实例93中,实例91到92的标的物包含,其中为确定所述存储器页是提取群组的部分,所述处理电路系统在数据结构中寻找所述存储器页。[0232]在实例94中,实例93的标的物包含,其中所述数据结构是表。[0233]在实例95中,实例94的标的物包含,其中所述表保存一个以上提取群组。[0234]在实例96中,实例93到95的标的物包含,其中所述处理电路系统进一步用以:接收提取群组中的页的识别符;及将所述识别符存储到所述数据结构中。[0235]实例97是一种用于缩减概率过滤器查询延时的方法,所述方法包括:接收页面错误的通知,所述页面错误是对对应于存储器映射文件的存储器页的请求,所述存储器页不在存储器中;确定所述存储器页是提取群组的部分;及起始所述提取群组中并非处于存储器中的存储器页的加载。[0236]在实例98中,实例97的标的物包含,其中起始所述加载包含执行所述提取群组中并非处于存储器中的所述存储器页的异步加载。[0237]在实例99中,实例97到98的标的物包含,其中确定所述存储器页是提取群组的部分包含在数据结构中寻找所述存储器页。[0238]在实例100中,实例99的标的物包含,其中所述数据结构是表。[0239]在实例101中,实例100的标的物包含,其中所述表保存一个以上提取群组。[0240]在实例102中,实例99到101的标的物包含:接收提取群组中的页的识别符;及将所述识别符存储到所述数据结构中。[0241]实例103是一种包含用于缩减概率过滤器查询延时的指令的机器可读媒体,所述指令在由处理电路系统执行时引起所述处理电路系统执行包括以下各者的操作:接收页面错误的通知,所述页面错误是对对应于存储器映射文件的存储器页的请求,所述存储器页不在存储器中;确定所述存储器页是提取群组的部分;及起始所述提取群组中并非处于存储器中的存储器页的加载。[0242]在实例104中,实例103的标的物包含,其中起始所述加载包含执行所述提取群组中并非处于存储器中的所述存储器页的异步加载。[0243]在实例105中,实例103到104的标的物包含,其中确定所述存储器页是提取群组的部分包含在数据结构中寻找所述存储器页。[0244]在实例106中,实例105的标的物包含,其中所述数据结构是表。[0245]在实例107中,实例106的标的物包含,其中所述表保存一个以上提取群组。[0246]在实例108中,实例105到107的标的物包含,其中所述操作包括:接收提取群组中的页的识别符;及将所述识别符存储到所述数据结构中。[0247]实例109是一种用于缩减概率过滤器查询延时的系统,所述系统包括:用于接收页面错误的通知的构件,所述页面错误是对对应于存储器映射文件的存储器页的请求,所述存储器页不在存储器中;用于确定所述存储器页是提取群组的部分的构件;及用于起始所述提取群组中并非处于存储器中的存储器页的加载的构件。[0248]在实例110中,实例109的标的物包含,其中用于起始所述加载的所述构件包含用于执行所述提取群组中并非处于存储器中的所述存储器页的异步加载的构件。[0249]在实例111中,实例109到110的标的物包含,其中用于确定所述存储器页是提取群组的部分的所述构件包含用于在数据结构中寻找所述存储器页的构件。[0250]在实例112中,实例111的标的物包含,其中所述数据结构是表。[0251]在实例113中,实例112的标的物包含,其中所述表保存一个以上提取群组。[0252]在实例114中,实例111到113的标的物包含:用于接收提取群组中的页的识别符的构件;及用于将所述识别符存储到所述数据结构中的构件。[0253]实例115是至少一种包含指令的机器可读媒体,所述指令在由处理电路系统执行时引起所述处理电路系统执行操作以实施实例1到114中的任一者。[0254]实施例116是一种包括用来实施实例1到114中的任一者的构件的设备。[0255]实施例117是一种用来实施实例1到114中的任一者的系统。[0256]实施例118是一种用来实施实例1到114中的任一者的方法。[0257]上文实施方式包含对形成实施方式的一部分的附图的参考。图式通过说明的方式展示可实践的特定实施例。这些实施例在本文中也称为“实例”。这些实例可包含除所展示或所描述元件之外的元件。然而,本发明人还预期其中仅提供那些所展示或所描述元件的实例。此外,本发明人还预期关于特定实例(或其一或多个方面)或关于本文中所展示或所描述的其它实例(或其一或多个方面)使用那些所展示或所描述元件的任何组合或置换的实例。[0258]本文档中所提及的全部公开案、专利及专利文档的全文如同以引用方式个别地并入般以引用方式并入本文中。本文档与那些以参考方式并入的文档之间如果有不一致的用法,并入的参考文件中的使用状况应视为本文档用法的补充;对于矛盾的不一致,以本文档中的使用状况为主。[0259]在本文档中,如常见于专利文档中,术语“一(a或an)”用来包含独立于“至少一个”或“一或多个”的任何其它例子或用法的一个或一个以上例子或用法。在本文档中,术语“或”用来指代非排他性或,使得“a或b”包含“a但非b”、“b但非a”及“a及b”,除非另有指示。在所附权利要求书中,术语“包含”及“其中”用作相应术语“包括”及“其中”的白话英语等效物。此外,在下文权利要求书中,术语“包含”及“包括”是开放式的,即,包含在如权利要求中的此术语后所列元件以外的元件的系统、装置、物品或过程仍然是视为属于所述权利要求书的范围内。此外,在下文权利要求书中,术语“第一”、“第二”及“第三”等仅用作标签,且并不希望对其目标强加数字要求。[0260]上文描述希望是说明性且非限制性。例如,上文所描述的实例(或其一或多个方面)可彼此组合使用。在审阅上文描述后,例如所属领域的一般技术人员可使用其它实施例。说明书摘要允许读者能够快速地确定本发明的性质,且在提交所述说明书摘要的同时应理解并非用于解译或限制权利要求书的范围或含义。此外,在上文实施方式中,各种特征可集合在一起以简化本发明。此不应被解译为希望未主张的揭示特征是任何权利要求的关键值。而是,发明标的物可能在于少于特定揭示实施例的全部特征。因此,下文权利要求书特此并入实施方式中,其中每一权利要求自身作为单独实施例。应参考所附权利要求书连同此类权利要求所赋予权利的等效物的全范围来确定实施例的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1