CN108027826A - 元素从概率数据结构的删除 - Google Patents
元素从概率数据结构的删除 Download PDFInfo
- Publication number
- CN108027826A CN108027826A CN201680051926.0A CN201680051926A CN108027826A CN 108027826 A CN108027826 A CN 108027826A CN 201680051926 A CN201680051926 A CN 201680051926A CN 108027826 A CN108027826 A CN 108027826A
- Authority
- CN
- China
- Prior art keywords
- entry
- value
- bloom filter
- current iteration
- state
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种计算机***接收将条目从概率数据结构移除的请求。响应于所述请求,所述计算机***查询所述概率数据结构以确定所述概率数据结构内所述条目的当前迭代值。所述当前迭代值指示所述条目的状态,使得第一状态对应于所述条目是集合的成员并且第二状态对应于使所述条目从所述集合缺失。由于所述当前迭代值表示所述条目是所述集合的成员,所述计算机***使所述当前迭代值增量以生成对应于使所述条目从所述集合缺失的新的迭代值。所述计算机***使用所述新的迭代值和所述条目来生成然后被添加至所述概率数据结构的新的输出值。
Description
相关申请的交叉引用
本申请出于所有目的以引用的方式并入2015年9月9日提交的题为“DELETION OFELEMENTS FROM A PROBABILISTIC DATA STRUCTURE”(代理人案号0097749-543US0)的序列号为14/849,481的美国专利申请,2015年9月9日提交的、题为“VERIFICATION OF DATA SETCOMPONENTS USING DIGITALLY SIGNED PROBABILISTIC DATA STRUCTURES”(代理人案号0097749-545US0)的序列号为14/849,488的美国专利申请和2015年9月9日提交的、题为“SIGNATURE VERIFICATION FOR DATA SET COMPONENTS USING PROBABILISTIC DATASTRUCTURES”(代理人案号0097749-588US0)的序列号为14/849,493的美国专利申请的全部公开内容。
背景技术
布隆过滤器(Bloom filter)和其他概率数据结构经常用来快速地和紧密地确定某一元素是否是元素集合的一部分。例如,数据库的管理员可将数据条目添加至布隆过滤器中,所述布隆过滤器然后可用来通过识别数据库条目是否可能在数据库内或确切地不在数据库内来支持数据库查询。由于添加至布隆过滤器的条目以所产生的值仅将布隆过滤器内的位从零触发至一的方式被散列化,布隆过滤器具有存储器高效的固有优点。然而,一旦已经将条目添加至布隆过滤器,条目就不可被移除,因为使布隆过滤器位从一改变至零可影响布隆过滤器内的其他条目,从而牺牲布隆过滤器的完整性。使用针对每个布隆过滤器片段具有n位计数器的计数型过滤器可用来将条目从布隆过滤器移除,但也牺牲了存储器效率,因为布隆过滤器的每个片段现可包括许多更多的位值,从而增加布隆过滤器的大小。
附图说明
将参考附图描述根据本公开的各个实施例,在附图中:
图1示出可实现各个实施例的环境的说明性实例;
图2示出根据至少一个实施例的执行迭代查询来确定条目是否存在于布隆过滤器内的环境的说明性实例;
图3示出根据至少一个实施例的覆盖数据库属性和值的键值对的条目的布隆过滤器被数字地签名的环境的说明性实例;
图4示出根据至少一个实施例的将数据库属性和值的键值对的数字签名添加至布隆过滤器的环境的说明性实例;
图5示出根据至少一个实施例的用于至少部分地基于新的条目的当前迭代将条目添加至布隆过滤器的过程的说明性实例;
图6示出根据至少一个实施例的用于至少部分地基于条目的当前迭代将条目从布隆过滤器移除的过程的说明性实例;
图7示出根据至少一个实施例的用于执行二分搜索来识别布隆过滤器内条目的当前迭代的过程的说明性实例;
图8示出根据至少一个实施例的用于向布隆过滤器添加数据库键值对并且响应于对数据库记录签名的请求来对布隆过滤器数字地签名的过程的说明性实例;
图9示出根据至少一个实施例的用于响应于对数据库记录签名的请求来向布隆过滤器添加数据库键值对的数字签名的过程的说明性实例;并且
图10示出可实现各个实施例的环境的说明性实例。
具体实施方式
在以下描述中,将描述各种实施例。出于解释的目的,将阐述具体的配置和细节,以便提供对实施例的透彻理解。然而,对本领域的技术人员将明显的是,在没有具体细节的情况下也可以实践实施例。此外,为了不使所描述的实施例晦涩,可省略或简化众所周知的特征。
本文描述和建议的技术涉及通过使用函数添加数据(诸如数据库条目)和将所述数据从布隆过滤器移除,所述函数使用被添加或从布隆过滤器移除的数据和指示条目是被添加还是从布隆过滤器移除的迭代值作为输入。在一个实例中,当新的布隆过滤器被创建时或在稍后的时间处,可将新的条目添加至数据库。数据库***可检测这些新条目向数据库的添加并且更新布隆过滤器以指示这些条目被指定在数据库或可支持查询的条目的其他分组内。为了将新条目添加至布隆过滤器,数据库***可使用将要被添加的条目和初始迭代值零作为条目函数的输入。这一函数的输出可被散列化并且这一散列结果可用来将处于布隆过滤器内的位的数目从零设定成一。这用来指示条目现处于布隆过滤器内。因此,当针对条目提交查询时,数据库***可确定条目处于布隆过滤器内,因为仅处于布隆过滤器内的条目的值可对应于使用条目和最高迭代值零的函数的输出。
在稍后的时间处,为了第一次将这一条目从数据库移除,数据库***可使用条目并且使迭代值从零增量至一以向条目函数提供新的输入。这一函数的输出还可被散列化并且用来设定布隆过滤器内位的数目以指示布隆过滤器内函数输出的存在。然而,由于迭代值已经从零增量至一,因而这一函数输出的存在可用来指示条目不再存在于布隆过滤器内。因此,当查询被提交以确定条目是否存在于数据库内时,数据库***可从布隆过滤器确定最高迭代值是一,从而指示条目不再存在于数据库内。数据库***可继续利用这一函数来通过借助于先前迭代值的增量和条目本身计算散列和设定布隆过滤器的位来指示随时间的推移条目的存在或将所述条目从布隆过滤器移除切换条目在布隆过滤器内的存在。例如,如果最高迭代值是偶数,那么条目可以是存在于布隆过滤器内。可替代地,如果最高迭代值是奇数,那么条目可不再存在于布隆过滤器内。
当查询被提交以确定条目是否存在于数据库内时,数据库***可查询布隆过滤器有关指定条目和迭代值的函数输出。例如,数据库***可使迭代值增量以生成各种函数输出,所述各种函数输出可用来查询布隆过滤器有关这些输出的存在。如果最高迭代值是偶数,那么条目存在于布隆过滤器内。如果最高迭代值是奇数,那么已经将条目从布隆过滤器移除。
在一些情况下,布隆过滤器中的最高迭代值可以是高的,使得针对当前迭代值的线性搜索可不是最佳的。在这类情况下,数据库***可利用二分搜索或其他更多的有效算法来识别特定条目的最高迭代值并且响应于用户的查询来报告这一最后的迭代值。这一最后的迭代值可用来确定条目是存在还是从布隆过滤器缺失(即,布隆过滤器指示条目从集合缺失)。另外,为了改变布隆过滤器内这一条目的状态,可向数据库***提交使迭代值增量一并且生成新的函数输出的请求,所述新的函数输出可然后被添加至布隆过滤器来改变条目的状态。
以此方式,数据库***可当数据库随时间的推移更新时添加条目或将条目从布隆过滤器移除并且通过识别布隆过滤器内条目的最高迭代值来确定布隆过滤器内特定条目的当前状态。另外,本文描述和建议的技术促进另外的技术优点。例如,因为可通过使条目的迭代值增量来添加这些条目或将这些条目从布隆过滤器移除,所以布隆过滤器可用来指示用于数据库属性和对应值的键值对的数字签名的当前状态。例如,当数据库值和属性改变时,与这些数据库值和属性相关联的数字签名也可改变。数据库***可修改针对期满的和新的数字签名的迭代值来更新布隆过滤器以指示数据库的当前状态并且通过提供用于数据库的各种键值对的签名的当前有效集合来确保数据库的安全性。
图1示出可实现各个实施例的环境100的说明性实例。在环境100中,数据存储区104的用户通过用户客户端装置102可提交将新条目存储在数据存储区104内的请求。数据存储区104可包括可由数据库***操作和维护的一个或多个数据库,所述数据库***可处理用户请求来按需存储数据或将所述数据从这些数据库和数据存储区104移除。当用户提交将条目存储在数据存储区104中的数据库内的请求时,数据库***可评估布隆过滤器106以确定条目是否已经被添加至布隆过滤器106。例如,数据库***可利用条目和迭代值零作为进入条目函数的输入来获得输出值。例如,条目函数可使条目和迭代值并置以生成可然后被添加至布隆过滤器106的并置的条目。条目函数可因此是当条目保持恒定时,确切地或在具有可接受的可能性的情况下针对不同迭代值产生不同值的函数。
数据库***可查询布隆过滤器106以确定这一输出值是否存在于布隆过滤器106内。例如,为了确定输出值是否存在于布隆过滤器106内,数据库***可使输出值经过布隆过滤器106,这可确定是否将布隆过滤器106中对应于输出值的一系列位设定成一。如果是,那么输出值可被认为存在于布隆过滤器106中。然而,如果对应于输出值的位中的任一个设定成零,那么输出值可不包括在布隆过滤器106内并且因此条目可不处于数据存储区104内。如果输出值不存在于布隆过滤器106内,那么数据库***可确定条目尚未并入布隆过滤器106中,因为在数据存储区104内尚未观察到条目。因此,数据库***可将这一输出值添加至布隆过滤器106,这可致使布隆过滤器106的一个或多个位从值零改变至值一。这一第零个迭代值可指示这是条目存储在数据存储区104内的第一实例。另外,对应于条目的输出值添加至布隆过滤器106中可在稍后的时间处支持来自用户的针对条目的任何查询,如果用户希望确定条目在数据存储区104内的存在。
在稍后的时间处,用户通过用户客户端装置102可向数据库***提交将条目从数据存储区104内的一个或多个数据库移除的请求。数据库***可将条目从一个或多个数据库移除并且评估布隆过滤器106以确定条目是否存在于布隆过滤器106内。例如,数据库***可对布隆过滤器106执行一个或多个查询来确定条目的第零个迭代值是否存在于布隆过滤器106内。例如,数据库***可利用第零个迭代值和条目作为进入条目函数的输入来产生输出值。数据库***可使这一输出值经过布隆过滤器106以确定这一输出值是否存在于布隆过滤器106内。如果是,那么数据库***可使迭代值增量一,使得当前迭代值为一。数据库***可利用这一新的迭代值和条目作为进入条目函数的输入来生成新的输出值。数据库***可查询布隆过滤器106以确定这一新的输出值是否存在于布隆过滤器106内。如果是,那么数据库***可确定已经将条目从布隆过滤器106移除。否则,数据库***可向布隆过滤器106添加输出值以指示已经将条目从数据存储区104移除。
在实施例中,当随时间的推移条目被添加和将条目从数据存储区104移除时,数据库***将使迭代值增量,使得偶数迭代值指示条目存在于数据存储区104内并且奇数迭代值指示条目不再存在于数据存储区104内。当用户通过其用户客户端装置102提交将条目存储在数据存储区104中的一个或多个数据库内的请求时,数据库***可查询布隆过滤器106以确定条目在布隆过滤器106内的当前迭代。如果数据库***至少部分地基于布隆过滤器中的最高迭代值来确定迭代值是偶数整数,那么数据库***可确定条目当前被存储在数据存储区104内并且因此迭代值不需要被增量,因为布隆过滤器已经指示条目存在于数据存储区104内。然而,如果数据库***确定最高迭代值是奇数整数,那么数据库***可确定布隆过滤器106指示之前已经将条目从数据存储区104移除。数据库***可使最高迭代值增量一并且利用这一新的迭代值和条目作为进入条目函数的输入来获得可被添加至布隆过滤器106的输出值。可因此更新布隆过滤器106来指示这一输出值的条目。
类似地,当用户通过其用户客户端装置102提交将条目从数据存储区104的一个或多个数据库移除的请求时,数据库***可通过查询布隆过滤器106有关包括条目和迭代值作为输入的函数的输出值来确定条目的当前迭代值。如果条目的最高迭代值是奇数整数,那么数据库***可确定布隆过滤器106指示之前已经将条目从数据存储区104的一个或多个数据库移除。因此,可能不需要数据库***更新布隆过滤器106来指示将条目从数据存储区104的一个或多个数据库移除。然而,如果条目的最高迭代值是偶数整数,那么数据库***可使条目的这一最高的迭代值增量一以获得奇数整数。这一新的奇数整数以及条目可用作进入条目函数的输入来生成可被添加至布隆过滤器106的新的输出值。对布隆过滤器106的这一更新现可用来指示已经将条目从数据存储区104的一个或多个数据库移除以支持将来的条目查询。
在实施例中,当数据库***对布隆过滤器106执行查询以确定特定条目的当前迭代值时,数据库***可利用二分搜索方法来快速地确定当前迭代值。例如,数据库***可查询布隆过滤器106以识别条目先前是否被添加至布隆过滤器106。数据库***可至少部分地基于使用具有条目和第零个迭代值作为输入的条目函数来提交针对输出值的查询。如果布隆过滤器106不包括对应于第零个迭代值的输出值,那么数据库***可确定在任何先前的时间处在数据存储区104内尚未观察到条目。如果数据库***确定针对第零个迭代值的输出值存在于布隆过滤器106内,那么数据库***可选择更高的迭代值并且查询布隆过滤器106来确定针对这一更高的迭代值的输出值是否存在于布隆过滤器106内。数据库***可继续选择更高的迭代值直到对应于这一选择的值的输出值不存在于布隆过滤器106内。
如果对应于这一选择的迭代值的输出值不存在于布隆过滤器106内,那么数据库***可确定这一迭代值是否是单位增量值高于先前选择的迭代值。如果是,那么数据库***可确定先前选择的迭代值是布隆过滤器106内条目的现有迭代值。如以上所指出,如果这一迭代值是偶数整数,那么布隆过滤器106可指示条目存在于数据存储区104内的一个或多个数据库内。可替代地,如果迭代值是偶数整数,那么布隆过滤器106可指示之前已经将条目从数据存储区104内的一个或多个数据库移除。数据库***可在布隆过滤器106内找到的输出值的先前的迭代值与当前迭代值之间选择新的迭代值,以确定对应于这一新的迭代值的输出值是否存在于布隆过滤器106内。数据库***可继续这一过程直到数据库***确定正在被查询的更高的迭代值是单位增量高于在布隆过滤器106内找到的最后的迭代值。数据库***可因此利用这一二分搜索方法来识别条目在布隆过滤器106内的最高的迭代值并且将这一值返回给用户客户端装置102的用户,或利用这一值来确定这一值是否需要被增量来更新布隆过滤器106内特定条目的状况。
在实施例中,数据库***可包括进入布隆过滤器106的另外的输入以指示数据存储区104内的数据库的特定属性的当前状态。例如,数据库***可利用包括数据库属性名称和当前迭代值的函数来生成对应于特定数据库属性的当前版本的输出值。数据库***然后可向布隆过滤器106添加这一输出值以响应于任何查询来指示数据库属性的当前版本。对于这一特定数据库属性,数据库***可利用包括用于当前迭代的这一数据库属性内的数据库属性名称、当前迭代值和条目的第二函数作为条目函数的输入来生成第二输出值。还可将这一第二输出值添加至布隆过滤器106以随时间的推移启用数据库条目查询。因此,当随时间的推移更新数据库属性时,属性的迭代值(例如,版本)可增加,从而一旦发现当前迭代值就使数据库***能够针对特定数据库属性内的当前值进行查询。
如以上所指出,数据库***可从用户客户端装置接收请求以确定特定数据库条目是否存在于数据存储区内的一个或多个数据库内。响应于请求,数据库***可查询包括对应于条目在一个或多个数据库内的存在或缺乏的元素的布隆过滤器。至少部分地基于布隆过滤器中的元素,数据库***可确定所请求的条目是否存在于数据存储区内。因此,图2示出根据至少一个实施例的执行迭代查询206来确定条目是否存在于布隆过滤器208内的环境200的说明性实例。
在实施例中,计算机***可至少部分地基于布隆过滤器106内条目的迭代值的改变来确定将要在计算机***的硬件和/或软件部件上执行的一个或多个可执行指令。例如,至少部分地基于布隆过滤器106内特定条目的迭代值,计算机***可执行不同操作。例如,如果布隆过滤器106启用四个可能的条目状态,使得任何迭代值可对应于这四个可能的条目状态中的一个(例如,迭代值模数四),那么计算机***可针对这四个状态中的每一个执行不同的操作集合。作为替代性实例,条目可对应于用于计算机***的特定用户的用户账户标识符。对于这一条目,可存在四个可能的状态:账户创建待决、账户存在、账户删除待决和账户删除(例如,非数字迭代值)。当计算机***查询布隆过滤器206以确定针对用户账户标识符的当前迭代值时,计算机***可执行模数操作来确定针对用户账户的迭代值并且因此用户账户的当前状况。至少部分地基于这一状况,计算机***可执行不同操作。例如,如果用于用户账户的状况是“账户创建待决”,那么计算机***可执行一个或多个操作来完成用户账户的创建并且然后使迭代值增量以指示账户存在。因此,计算机***可生成对应于这一新的迭代值和用户账户的新的输出值并且将这一输出值添加至布隆过滤器以指示账户现存在。
作为另一个说明性实例,计算机***可维护包括对应于已知的恶意网站的统一资源定位符(URL)的条目的数据库。每个条目可包括在布隆过滤器内,只要相关联的网站仍被分类为恶意的。因此,针对每个URL的迭代值可用来确定与URL相关联的网站是否是恶意的。如果计算机***在评估特定站点之后确定所述站点不再是恶意的,那么计算机***可查询布隆过滤器206来确定针对所述站点的URL的当前迭代值。使用这一当前迭代值,计算机***可确定站点在布隆过滤器206内是否被标记为恶意的。如果是,那么计算机***可使这一迭代值增量并且将这一新的迭代值和URL经过条目函数以生成新的输出值,所述新的输出值可被添加至布隆过滤器206以将URL从恶意网站的分组移除。因此,如果计算机***的用户提交使用URL访问这一站点的请求,那么计算机***可查询布隆过滤器206并且确定这一URL不再对应于恶意网站并且使用户能够访问所述网站。
应注意,虽然出于说明性目的布隆过滤器206在整个本公开中被广泛地使用,但是可使用其他概率数据结构。在实施例中,概率数据结构是被配置成使得当被正确地维护时,针对数据结构的查询(例如,以确定元素是否在集合中)具有(例如,由于散列碰撞)不正确的非零概率的数据结构。例如,在一些实施例中,概率数据结构被配置成使得错误肯定的概率低于指定阈值以平衡由数据结构在由因为错误肯定而不必要地执行的安全性动作引起的不方便的情况下提供的计算效率。可使用减轻错误肯定的其他技术(诸如只有当潜在地检测到违规时参考数据库),使得另外的计算资源用来确保只有当检测到发生违规的可能性时存在违规。
在环境200中,用户通过用户客户端装置202可针对包括可存储条目的一个或多个数据库的数据存储区204内的特定条目提交查询。可操作和维护数据存储区204的数据库***可针对布隆过滤器208生成一个或多个查询206,以便识别条目是否被存储在数据存储区204内。例如,如图2所示,数据库***可利用条目函数来获得输出值,所述输出值可在对布隆过滤器208的查询中使用以确定输出值是否存在,并且如果存在,那么确定这是否指示条目在数据存储区204内存在。条目函数可包括散列函数,所述散列函数可用来生成迭代值和由用户通过用户客户端装置202请求的条目的散列。迭代值可对应于条目在数据存储区204中的存在或缺失。例如,为偶数整数的迭代值可对应于特定条目存在于数据存储区204内。可替代地,为奇数整数的迭代值可对应于使特定条目从数据存储区204缺失或移除。应注意,虽然出于说明性目的,奇偶校验值(例如,对应于偶数整数值和奇数整数值的存在或不存在)在整个本公开中被广泛地使用,但是其他值可用来表示数据存储区204内条目的状态。例如,如果迭代值定义多个状态,那么至少部分地基于迭代值和可能状态的数目的特定模数值可对应于条目在布隆过滤器206内的存在。例如,如果条目具有三个可能的状态,那么导致模数值等于二的迭代值可表示条目存在于布隆过滤器内(例如,5取模3,其中5是迭代值,等)。应注意,可能的状态可对应于非整数值。例如,不是利用偶数整数值来表示条目在布隆过滤器206内的存在,“存在”的迭代值可表示存在,而“不存在”的迭代值可表示条目不存在于布隆过滤器206内。
当用户通过用户客户端装置202提交将条目存储在数据存储区204内的请求时,数据库***可针对布隆过滤器208内的条目执行迭代查询206以确定条目是否当前存在于数据存储区204内或条目是否已经从数据存储区204移除或先前尚未在数据存储区204内被观察到。例如,数据库***可利用条目和第零个迭代值作为进入条目函数的输入来获得输出值。数据库***可针对这一输出值查询布隆过滤器208以确定所述输出值是否存在于布隆过滤器208内。当布隆过滤器208被配置来确切地指示如果值不存在于布隆过滤器208内,那么数据库***可确定条目的这一第零个迭代是否存在。如果第零个迭代的函数输出值不存在,那么数据库***可确定先前尚未在数据存储区204内观察到条目。
如果条目的第零个迭代存在于布隆过滤器208内,那么数据库***可针对函数输出值在布隆过滤器208内执行线性迭代搜索。例如,如图2所示,数据库***可通过使迭代值增量一(例如,使第零个迭代增量至第一个迭代等)来改变数据存储区查询206。因此,数据库***可利用使用增量的迭代值和条目的条目函数来生成可被查询的新的输出值。数据库***可查询布隆过滤器208有关这一新的输出值并且确定这一输出值是否存在于布隆过滤器208内。如果新的输出值存在,那么数据库***可再一次使迭代值增量并且执行另外的查询直到在布隆过滤器208内不会找到输出值。当数据库***确定特定输出值不存在于布隆过滤器208内时,数据库***可确定最后的迭代值表示特定条目在布隆过滤器208内的当前迭代。
在实施例中,数据库***将利用迭代值来确定特定条目是否存在于数据存储区204内或之前已经从数据存储区204移除。例如,以第零个迭代值开始,偶数迭代值可表示特定条目存储在数据存储区204内。可替代地,以第一个迭代值开始,奇数迭代值可表示之前已经将特定条目从数据存储区204移除。例如,当用户通过用户客户端装置202提交将条目存储在数据存储区204的一个或多个数据库内的请求时,数据库***可查询布隆过滤器208以确定条目的当前迭代值。如果第零个迭代值不存在于布隆过滤器208内,那么数据库***可将条目存储在数据存储区204内并且向布隆过滤器208添加对应于条目的第零个迭代的输出值。可替代地,如果数据库***确定当前迭代值是偶数整数值,那么这可表示条目已经被识别为已经被存储在数据存储区204内。这可致使数据库***指示条目已经可用并且放弃将条目存储在数据存储区204内。可替代地,如果迭代值用来表示多个状态,那么数据库***可利用模数操作来确定条目的当前状态。另外,如果条目的可能状态使用非数字值表示,那么数据库***可通过评估条目的当前非数字迭代值来确定条目的当前状态。
如果条目的当前迭代值是奇数整数值,表示先前已经将条目从数据存储区204移除,那么数据库***可将条目存储在数据存储区204内来履行请求。另外,数据库***可使迭代值增量,使得新的迭代值是偶数整数值。数据库***可利用这一新的偶数迭代值和条目作为条目函数的输入并且将这一函数的输出值添加至布隆过滤器208。因此,针对布隆过滤器208内的条目的将来的查询可导致发现偶数迭代值并且确定条目当前被存储在数据存储区204内。类似地,如果当前迭代值表示先前已经将条目从数据存储区204移除并且迭代值可对应于大于状态的奇偶校验值的多个状态,那么数据库***可修改迭代值,使得新的迭代值表示条目存在于数据存储区204内。例如,数据库***可利用模数操作来识别对应于条目存在于数据存储区204内的新的迭代值并且利用这一新的迭代值和条目作为进入条目函数的输入来生成可被添加至布隆过滤器206的输出值。
以类似的方式,用户通过用户客户端装置202可提交将条目从数据存储区204移除的请求。数据库***可查询布隆过滤器208来确定特定条目的当前迭代值并且至少部分地基于这一迭代值确定需要执行什么动作来指示已经将条目从数据存储区204和从布隆过滤器208移除。例如,如果当前迭代值是奇数整数,那么数据库***可确定布隆过滤器208当前指示已经将条目从数据存储区204移除。因此,数据库***可在无需更新当前迭代值的情况下将条目从数据存储区204移除。然而,如果当前迭代值是偶数整数值,那么数据库***可使当前迭代值增量一以生成奇数迭代值。数据库***可使用这一新的奇数迭代值以及条目作为进入条目函数的输入以生成可被添加至布隆过滤器208的新的输出值来表示将条目从数据存储区204移除。数据库***然后可通过将条目从数据存储区204移除来履行来自用户客户端装置202的请求。类似地,如果当前迭代值表示条目存储在数据存储区204内并且迭代值可对应于大于状态的奇偶校验值的多个状态,那么数据库***可修改迭代值,使得新的迭代值表示将条目从数据存储区204移除。例如,数据库***可利用模数操作来识别对应于将条目从数据存储区204移除的新的迭代值并且利用这一新的迭代值和条目作为进入条目函数的输入来生成可被添加至布隆过滤器206的输出值。
在实施例中,数据库***将使用二分搜索算法而不是线性迭代搜索针对特定条目的当前迭代值查询布隆过滤器208。数据库***可通过确定第零个迭代输出值是否存在于布隆过滤器208内来发起对布隆过滤器208的查询。如果这一输出值不存在于布隆过滤器208内,那么数据库***可确定先前在数据存储区204内尚未观察到条目并且由于不存在条目的历史信息,因而不存在条目的当前迭代值。如果第零个迭代的输出值存在于布隆过滤器208内,那么数据库***可选择更高的迭代值以用于评估。例如,数据库***可选择数据存储区204的如由数据库***的管理员确定的条目的最大可能的迭代值。可替代地,数据库***可选择大于从第零个值增加的单位增量的任意的迭代值(例如,大于一的新的迭代值)。
数据库***可查询布隆过滤器208有关对应于这一新的迭代值的输出值以确定所述输出值是否存在于布隆过滤器208内。如果针对这一新的迭代值的输出值存在于布隆过滤器208内,那么数据库***可选择更高的迭代值并且继续这一过程直到针对迭代值的输出值不存在于布隆过滤器208内的迭代值被识别。然而,如果针对这一新的迭代值的输出值不存在于布隆过滤器208内,那么数据库***可选择处于当前迭代值(例如,刚刚使用的新的迭代值)和先前的迭代值(其中针对先前迭代值的输出值在布隆过滤器208内被找到)之间的平均值的迭代值。数据库***然后可利用这一平均迭代值来确定针对这一迭代值的输出值是否存在于布隆过滤器208内。如果输出值不存在于布隆过滤器208内,那么数据库***可确定当前迭代值处于这一平均值与对应于在布隆过滤器208内找到的最近的输出值的先前迭代值之间。
数据库***可继续修改条目的迭代值直到新的迭代值是单位增量大于对应于在布隆过滤器208内找到的输出值的最后的迭代值。如果针对这一新的迭代值的输出值在布隆过滤器208内被找到,那么数据库***可确定这一新的迭代值是条目的当前迭代值并且确定所述迭代值是对应于条目存在于布隆过滤器208内还是对应于将条目从布隆过滤器208移除。类似地,如果对应于新的迭代值的输出值未在布隆过滤器208内被找到,那么数据库***可确定对应于在布隆过滤器208内找到的输出值的最后的迭代值是条目的当前迭代值。如图2所示,如果当前迭代值是偶数值,那么条目可存在于布隆过滤器208内。可替代地,如果当前迭代值是奇数值,那么可在先前的操作期间已经将条目从布隆过滤器208和数据存储区204移除。
在实施例中,数据库***可使来自数据存储区的数据库属性名称和针对这些数据库属性中的每一个的值的键值对散列化并且将这一散列的键值对添加至布隆过滤器。布隆过滤器然后可被数字地签名以便保护数据库属性和值以及布隆过滤器本身的完整性。因此,图3示出根据至少一个实施例的覆盖数据库属性和值的键值对的条目的布隆过滤器304被数字地签名的环境300的说明性实例。在环境300中,非关系数据库302可包括对应于各种数据库属性并且包括针对这些属性中的每一个的一个或多个值的各种索引。
被配置来维护和操作非关系数据库302的数据库***可利用条目函数来生成可被添加至布隆过滤器304的输出值,所述条目函数使用每个数据库属性(例如,索引)和针对属性的对应的值作为进入条目函数的输入。条目函数可包括散列函数,所述散列函数可使数据库属性和对应的值散列化以生成然后被添加至布隆过滤器304的输出值。当数据库***已经完成使布隆过滤器304更新成包括针对数据库条目和对应的值的输出值时,数据库***可对布隆过滤器304数字地签名,使得签名的布隆过滤器306对数据库***的用户可用。这些用户可利用公用-私用密钥对的公用密钥来核实数字地签名的布隆过滤器306并且出于其自己的使用解密所签名的布隆过滤器306。例如,数据库***的用户可利用所签名的布隆过滤器304来确定随时间的推移用于数据库302的数据库属性的某些条目是存在还是已经从布隆过滤器304移除。
在实施例中,数据库***针对数据库属性本身和针对数据库属性内的条目生成两个单独的输出值。例如,数据库***可利用以上描述的条目函数来指定布隆过滤器304内特定数据库属性的当前迭代。然而,与使用迭代值来表示条目是否存在于数据库内相反,迭代值可用来指定数据库属性的当前版本。可针对数据属性被添加至布隆过滤器304的第二输出值可对应于针对属性存储在数据库302内的值。这一第二输出值可使用属性名称、针对属性的迭代值和属性内的针对迭代值的条目作为条目函数的输入来生成。这些两个输出值可被添加至布隆过滤器304并且被用来确定属性的当前迭代和属性内的这一当前迭代值的条目。因此,当属性更新成包括新的值(所述新的值包括用于将值从属性移除的空集合)时,数据库***可针对属性和针对属性内的针对新的迭代值的条目生成新的输出值。
在替代性实施例中,数据库***针对数据库属性、属性内的条目和针对条目的迭代值生成输出值以表示特定的键值对是否存在于布隆过滤器304内。例如,针对键值对的迭代值可表示多个状态中的一个,由此一个状态可对应于键值对存在于布隆过滤器304内并且另一个状态可对应于将键值对从布隆过滤器304移除。当新的值被分配给特定属性时,数据库***可识别先前属性值的当前迭代值并且确定当前迭代值是否表示键值对存在于布隆过滤器304内。如果当前迭代值表示键值对存在于布隆过滤器304内,那么数据库***可修改所述迭代值使得新的迭代值表示将键值对从布隆过滤器304移除。数据库***可利用属性名称、属性内的条目和新的迭代值作为进入条目函数的输入来生成然后被添加至布隆过滤器304的输出值。另外,数据库***可使用属性名称、属性内的新的条目和表示键值对存在于布隆过滤器304内的迭代值作为进入条目函数的输入来生成然后可被添加至布隆过滤器304的输出值。因此,当针对处于布隆过滤器304内的特定键值对提交查询时,数据库***可至少部分地基于键值对的当前迭代值来确定键值对是否存在于布隆过滤器304内。
当数据库***的用户针对数据库属性内的特定值提交查询时,数据库***可对布隆过滤器304执行各种查询来对用户的查询作出响应。例如,数据库***可首先查询布隆过滤器304来确定针对指定属性的当前迭代值。数据库***可利用与以上结合图1和图2描述的条目函数类似的条目函数来生成可在对布隆过滤器304的查询中利用的输出值。一旦数据库***已经识别针对属性的当前迭代值,数据库***就可利用这一当前迭代值、属性名称和条目作为第二函数的输入,所述第二函数可用来生成可用来查询布隆过滤器304的第二输出值。数据库***可利用这一第二输出值来确定条目是否针对属性的当前迭代被指定在数据库内。如果是,那么数据库***可将对查询的指示值存在于属性内的响应返回给用户。如果输出值不存在于布隆过滤器304内,那么数据库***可指示条目针对属性的当前迭代不存在和/或访问数据库来识别针对属性的当前条目并且响应于请求将这一条目的值返回给用户。
在替代性实施例中,包括数据库属性名称和用于属性的对应的条目的每个键值对在包括在布隆过滤器内之前由数据库***数字地签名。可将针对键值对的每个数字签名添加至布隆过滤器,使得可至少部分地基于用于属性的当前数字签名来确定用于某些属性的当前条目。例如,用户可针对数据库属性和属性内的对应的条目生成数字签名并且针对这一数字签名向数据库***提交查询。因此,图4示出根据至少一个实施例的将数据库属性和值的键值对的数字签名404添加至布隆过滤器406的环境400的说明性实例。
在环境400中,数据库***可利用密钥来对数据库402中的属性名称和针对属性的对应的值的每个键值对数字地签名。数据库***可利用布隆过滤器406来以类似于以上图1和图2中描述的方式识别针对数字签名的当前迭代。例如,数据库***可针对数字签名确定针对数字签名的当前迭代值,其中偶数迭代值可表示数字签名处于布隆过滤器406内并且奇数迭代值可表示数字签名不处于布隆过滤器406内(例如,针对属性的值已经改变从而导致新的签名等)。如果数字签名针对特定属性已经改变,那么数据库***可改变针对属性的先前的数字签名的迭代值以指示其移除并且将布隆过滤器406更新成包括针对属性的新生成的数字签名404。
当用户针对特定数字签名提交查询时,数据库***可获得数字签名并且利用所述数字签名和迭代值作为进入条目函数的输入来生成输出值。数据库***可在对布隆过滤器406的查询中利用这一输出值以检测这一输出值存在于布隆过滤器406内。如果输出值针对任何迭代值不被找到,那么数据库***可确定数字签名先前尚未被观察到并且因此并不对应于数据库402内的针对任何属性的当前的或先前的条目。可替代地,如果输出值被识别,那么数据库***可使迭代值增量并且生成新的输出值直到输出值在布隆过滤器406内不能被识别。数据库***可针对数字签名识别最高的迭代值并且至少部分地基于这一值确定数字签名是当前存在于布隆过滤器406内还是之前已经从布隆过滤器406移除。例如,如果迭代值是偶数整数值,那么数字签名可存在于布隆过滤器406内。可替代地,如果迭代值是奇数整数值,那么数据库***可确定数字签名不再处于布隆过滤器406内。然而,这也可指示针对属性的值在一个点处处于数据库402内,这可对数据库***的用户充当一定的实用性。
如以上所指出,用户通过用户客户端装置可向数据库***提交将条目添加至数据库或其他数据结构的请求。为了对这一条目编目,数据库***可向布隆过滤器添加条目,使得针对条目的查询可通过评估布隆过滤器来履行。在一些实施例中,数据库***将查询布隆过滤器来识别条目的当前迭代值,所述条目的当前迭代值可用来确定条目是被指定为处于布隆过滤器内还是已经从布隆过滤器中移除。至少部分地基于这一迭代值,数据库***可更新迭代值来指示条目存在于布隆过滤器中或如果条目已经被指示存在于布隆过滤器中,那么保留相同的迭代值。因此,图5示出根据至少一个实施例的用于至少部分地基于针对新的条目的当前迭代将条目添加至布隆过滤器的过程500的说明性实例。过程500可由上述数据库***或其他计算机***执行,所述上述数据库***或其他计算机***被配置来管理布隆过滤器以便确定各种元素在数据结构(诸如数据库、电子表格、索引、数据存储装置等等)内的存在。
当用户将新的条目添加至数据库或其他数据结构中时,用户可向数据库***或其他计算机***提交将条目添加至布隆过滤器的请求,以便能够支持条目的查询而无需直接地检查数据库或其他数据结构。例如,用户可针对条目向数据库***提交查询,所述数据库***可然后利用布隆过滤器来确定条目是否不处于数据库内或可处于遭受错误肯定错误率的数据库中。因此,数据库***可接收将这一条目添加至布隆过滤器的请求502。
一旦数据库***或其他计算机***已经接收将条目添加至布隆过滤器的请求,数据库***就可确定条目是否先前已经被添加至布隆过滤器504。当条目初始地被添加至布隆过滤器时,数据库***可利用条目函数来生成对应于条目的可然后被添加至布隆过滤器的输出值。这一函数可利用迭代值和条目本身作为输入来生成被添加至布隆过滤器的输出值。迭代值可表示布隆过滤器内条目的状态。例如,迭代值可具有奇偶校验值(例如,偶数整数值或奇数整数值)来表示条目存在于布隆过滤器内或使条目从布隆过滤器缺失/移除。可替代地,迭代值可对应于条目的多个状态。例如,迭代值可表示条目是待决的,还是从布隆过滤器删除,或被添加至布隆过滤器。数据库***可使用对应于最低的可能的迭代值(例如,第零个迭代值)的输出值查询布隆过滤器来确定是否先前已经在布隆过滤器内观察到条目。如果这一输出值未在布隆过滤器内被找到,那么数据库***可利用具有新的迭代值(例如,第零个迭代值)和条目的上述函数512来生成可被添加至布隆过滤器的输出值以表示条目添加至布隆过滤器。
如果数据库***识别布隆过滤器中的对应于针对条目的第零个迭代的输出值的元素,那么数据库***可查询布隆过滤器来识别布隆过滤器内条目的当前迭代506。例如,如果迭代值定义状态的奇偶校验值,那么偶数迭代值可表示条目存在于布隆过滤器内,而奇数迭代值可表示已经将条目从布隆过滤器移除。可替代地,如果迭代值定义多个状态,那么至少部分地基于迭代值和可能的状态的数量的特定模数值可对应于条目在布隆过滤器内的存在。例如,如果条目具有三个可能的状态,那么导致模数值等于二的迭代值可表示条目存在于布隆过滤器内(例如,5取模3,其中5是导致模数值等于二的迭代值,这表示存在,等)。
为了确定特定条目的当前迭代值,数据库***可对布隆过滤器执行线性搜索查询、二分搜索查询或其他搜索查询来识别对应于存在于布隆过滤器内的最高迭代值的输出值。一旦数据库***识别布隆过滤器内条目的当前迭代值,数据库***就可确定这一迭代值是否对应于条目存在于布隆过滤器内508。例如,如果数据库***确定迭代值对应于条目存在于布隆过滤器内,那么数据库***可指示条目已经存在于布隆过滤器内或它响应于请求已经被成功地添加至布隆过滤器510。然而,如果当前迭代值并不对应于条目存在于布隆过滤器内,那么数据库***可使当前迭代值增量或以其它方式修改当前迭代值以获得对应于条目存在于布隆过滤器内的新的迭代值。例如,数据库***可将当前迭代值修改一定量以获得对应于模数操作解决方案、对应于条目存在的新的迭代值。
一旦数据库***计算条目的新的迭代值,数据库***就可利用条目函数512来生成可被添加至布隆过滤器的输出值以指示条目存在于布隆过滤器中。例如,数据库***可利用新的迭代值和条目作为函数的输入,使得来自函数的输出值对应于条目存在于布隆过滤器内。数据库***可将来自函数的这一输出值添加到布隆过滤器中514以指示条目现存在于布隆过滤器内。另外,数据库***可指示条目被添加至布隆过滤器510。例如,数据库***可向用户客户端装置传输指示已经完成条目向布隆过滤器的添加的通知。在一些情况下,数据库***可不生成这一通知,因为将布隆过滤器更新成包括这一条目可以是不需要用户参与或交互的内部过程的一部分。
如以上所指出,数据库***或其他计算机***的用户可提交将条目从布隆过滤器移除的请求。数据库***可查询布隆过滤器来确定将要被移除的条目的当前迭代值并且确定这一迭代值是否对应于条目存在于布隆过滤器内。至少部分地基于这一迭代值,数据库***可修改迭代值以表示已经将条目从布隆过滤器移除。因此,图6示出根据至少一个实施例的用于至少部分地基于针对条目的当前迭代将条目从布隆过滤器移除的过程600的说明性实例。过程600可由上述数据库***或其他计算机***执行,所述上述数据库***或其他计算机***被配置来至少部分地基于布隆过滤器内条目的当前状态,使用安装在计算机***上的硬件或软件执行可执行指令。
当用户将条目从数据库或其他数据结构移除时,用户可向数据库***提交将条目从布隆过滤器移除的请求,以便表示条目不再存在于数据库内而无需直接地检查数据库或其他数据结构。例如,用户可针对条目向数据库***提交查询,所述数据库***可然后利用布隆过滤器来确定是已经将条目从数据库移除还是可处于遭受错误肯定错误率的数据库中。可替代地,用户可请求将特定条目从不与任何数据库相关联的布隆过滤器移除,因为布隆过滤器可充当针对各种条目的信息的存储库。因此,数据库***可接收将这一条目从布隆过滤器移除的请求602。
一旦数据库***已经接收到将条目从布隆过滤器移除的请求,数据库***就可确定特定条目是否存在于布隆过滤器内604。例如,当条目初始地被添加至布隆过滤器时,数据库***可利用函数来生成对应于条目的可然后被添加至布隆过滤器的输出值。这一函数可利用迭代值和条目本身作为输入来生成然后被添加至布隆过滤器的输出值。迭代值可表示布隆过滤器内条目的状态。例如,迭代值可具有奇偶校验值来表示条目存在于布隆过滤器内或使条目从布隆过滤器缺失/移除。可替代地,迭代值可对应于条目的多个属性。数据库***可使用对应于最低的可能的迭代值(例如,第零个迭代值)的输出值查询布隆过滤器来确定是否先前已经在布隆过滤器内观察到条目。如果这一输出值未在布隆过滤器内被找到,那么数据库***可指示条目并不处于布隆过滤器内610,因为这一特定条目先前不可能被观察到。
如果数据库***确定布隆过滤器包括对应于条目的第零个迭代(例如,条目初始添加到布隆过滤器中)的输出值,那么数据库***可识别布隆过滤器内条目的当前迭代值606。例如,数据库***可通过修改迭代值和使用这一新值和条目作为条目函数的输入来生成可用来查询布隆过滤器的新的输出值来对布隆过滤器执行搜索查询。例如,如果迭代值定义状态的奇偶校验值,那么偶数迭代值可表示条目存在于布隆过滤器内,而奇数迭代值可表示已经将条目从布隆过滤器移除。可替代地,如果迭代值定义多个状态,那么至少部分地基于迭代值和可能的状态的数量的特定模数值可对应于条目在布隆过滤器内的存在。至少部分地基于条目的当前迭代值,数据库***可确定条目是否存在于布隆过滤器内608。
如果条目的当前迭代值表示条目不再存在于布隆过滤器内,那么数据库***可向用户指示条目不存在于布隆过滤器内610。可替代地,如果条目的迭代值表示条目存在于布隆过滤器内,那么数据库***可修改迭代值以获得可对应于将条目从布隆过滤器移除的新的迭代值。随后,数据库***可利用以上描述的使用新的迭代值和条目作为输入的条目函数来生成可被添加至布隆过滤器的新的输出值612。这一输出值可用来指示条目不再存在于布隆过滤器内。数据库***可向布隆过滤器添加这一新的输出值614以指示条目不再处于布隆过滤器内610,因此从而履行请求。
如以上所指出,数据库***或其他计算机***可利用二分搜索算法来确定布隆过滤器内特定条目的当前迭代值。例如,如果布隆过滤器内的条目随时间的推移广泛地被修改,那么布隆过滤器可包括与高数目的迭代值相关联的条目元素。在这类情况下,二分搜索算法可用来以减少需要的查询数目的方式识别特定条目的当前迭代值。因此,图7示出根据至少一个实施例的用于执行二分搜索来识别针对布隆过滤器内条目的当前迭代值的过程700的说明性实例。过程700可由上述数据库***或其他计算机***执行,所述上述数据库***或其他计算机***可利用布隆过滤器来响应于用户查询或在确定至少部分地基于布隆过滤器内条目的状态执行的操作中识别布隆过滤器内特定条目的当前状态。
无论何时,数据库***或其他计算机***可接收识别布隆过滤器内特定条目的当前迭代值的请求702。例如,数据库***的用户可向数据库***提交确定特定条目是否被包括在布隆过滤器内的请求。这可需要数据库***识别条目的当前迭代值以便代表用户作出这一确定。在一些情况下,当数据库***或其他计算机***可需要识别特定条目的当前状态以便至少部分地基于这一当前状态执行一个或多个操作时,数据库***或其他计算机***可在不需要从用户或其他实体接收请求的情况下执行过程700。
为了识别条目的当前迭代值,数据库***或其他计算机***可查询布隆过滤器有关对应于条目的最低迭代值(例如,第零个迭代值)的输出值704。例如,数据库***或其他计算机***可将第零个迭代值和条目输入条目函数中以生成对应于这一第零个迭代值的输出值。数据库***或其他计算机***可查询布隆过滤器以确定这一输出值是否存在于布隆过滤器内706。如果这一输出值不存在于布隆过滤器内,那么数据库***或其他计算机***可指定条目在布隆过滤器内不可用708,因为条目先前不可由数据库***或布隆过滤器观察。
如果第零个迭代值的输出值存在于布隆过滤器内,那么数据库***可选择条目的更高的迭代值710。数据库***或其他计算机***可选择等于布隆过滤器内任何条目的最高的观察到的迭代值的值。可替代地,数据库***或其他计算机***可利用指数函数来选择更高的迭代值。例如,数据库***或其他计算机***可以迭代值二开始其搜索。后续搜索可使迭代值增加至二的下一个指数值(例如,2、4、8、16等)。应注意,任何基值可用来使迭代值增量以选择更高的迭代值以便评估布隆过滤器。
数据库***可利用这一更高的迭代值和条目作为进入条目函数的输入来生成新的输出值。如同以上第零个迭代值,数据库***可查询布隆过滤器来确定对应于更高迭代值的这一新生成的输出值是否存在于布隆过滤器内712。如果这一输出值存在于布隆过滤器内,那么数据库***可再一次选择条目的更高的迭代值710并且再一次查询布隆过滤器来确定针对这一更高的迭代值的输出值是否存在于布隆过滤器内。数据库或其他计算机***可继续执行这些操作直到针对特定迭代值的输出值被确定不存在于布隆过滤器内。
如果对应于条目的更高的迭代值的输出值不存在于布隆过滤器内,那么数据库***可确定这一更高的迭代值与对应于在布隆过滤器内找到的最后的输出值的先前的迭代值之间的差是否是单位增量714。如果这些迭代值之间的差是增量值,那么数据库***可确定条目的先前的迭代值是当前迭代值。因此,数据库***可响应于请求向用户报告这一最后的迭代值716。可替代地,数据库***可利用这一最后的迭代值来确定布隆过滤器内条目的当前状态。例如,如果偶数迭代值表示条目存在于布隆过滤器中并且奇数迭代值表示将条目从布隆过滤器移除,那么数据库***可利用当前迭代值来确定条目是否存在于布隆过滤器内。应注意,虽然偶数迭代值用来表示条目存在并且奇数迭代值用来表示将条目从布隆过滤器移除,但是可将任何指代施加给偶数迭代值和奇数迭代值,包括偶数迭代值可表示将条目从布隆过滤器移除而奇数值可表示条目存在于布隆过滤器中的说明。
如果更高的迭代值与存在于布隆过滤器内的条目的最后的迭代值不具有单位差,那么数据库***可选择处于最后的迭代值与这一更高的迭代值之间的新的迭代值718。数据库***可利用这一选择的迭代值和条目来生成可用来查询布隆过滤器有关其存在的新的输出值。如果这一新的输出值不存在,那么数据库***可再一次确定这一新的迭代值与针对在布隆过滤器内找到输出值的最后的迭代值的差是否是单位增量714。如果与最后的迭代值的差不是单位增量,那么数据库***可继续选择新的迭代值718直到所述迭代值与针对在布隆过滤器内找到输出值的最后的迭代值的差仅是一个单位。数据库***然后可向用户报告这一最后的迭代值716或利用所述值来确定布隆过滤器内条目的当前状态。
如以上所指出,数据库***可向布隆过滤器添加可对应于数据库属性名称和针对这些属性的对应的值的键值对的元素。例如,数据库***可使这些键值对散列化并且将这些散列***布隆过滤器中。一旦布隆过滤器填充有这些散列,数据库***就可对布隆过滤器数字地签名以作为整体使数字签名更加紧密地绑定至数据库。因此,图8示出根据至少一个实施例的用于向布隆过滤器添加数据库键值对并且响应于对数据库记录签名的请求来对布隆过滤器数字地签名的过程800的说明性实例。过程800可由上述数据库***执行,所述上述数据库***可被配置来利用条目函数来生成针对数据库属性的键值对的输出值并且将这些输出值添加至布隆过滤器。数据库***还可被配置来利用密钥对的私用密钥来对布隆过滤器数字地签名。
无论何时,数据库***可接收对数据库记录数字地签名的请求802。例如,数据库***的用户可能想要通过使用数据库记录的数字签名向数据库记录提供添加的安全层,所述数据库记录的数字签名可在稍后的时间处用来核实记录的内容。例如,当用户利用密钥对的公用密钥来核实数字签名时,用户可确定数据库记录是否是可信的。因此,数字签名可充当为数据库记录的用户认证所述记录的方法。
响应于请求,数据库***可从数据库记录选择数据库属性和针对属性的对应的值的第一键值对804。这一第一键值对可从数据库记录随机选择或至少部分地基于记录内的偏移来选择。例如,数据库***可选择在数据库记录内具有最低偏移的属性。一旦数据库***已经从数据库记录选择第一键值对,数据库***就可利用条目函数来散列化或以其它方式使用选择的键值对作为条目函数的输入来生成可被添加至布隆过滤器的输出值。在实施例中,数据库***将生成两个单独的输出值,所述两个单独的输出值可对应于属性的键值对。例如,第一个输出值可至少部分地基于属性名称和属性的迭代值来生成。这一迭代值可用来表示属性的当前迭代。为了使用户或数据库***能够查询布隆过滤器有关属性的特定条目,数据库***可在这一给定的迭代处生成至少部分地基于属性名称、迭代值和针对属性的条目的第二输出值。因此,数据库***可在稍后的时间处查询布隆过滤器以首先识别针对属性的当前迭代值并且利用所述迭代值来履行查询以便确定特定条目在这一迭代值处是否针对属性被指定。
一旦数据库***已经使键值对散列化以生成输出值,数据库***就可将这一散列(例如,来自条目函数的输出值)添加至布隆过滤器808以指示键值对针对当前迭代值存在于布隆过滤器内。当添加至布隆过滤器的输出值可对应于针对键值对的更高的迭代值时,这可取代布隆过滤器内的任何先前的键值对条目。数据库***随后可确定是否存在需要被添加至布隆过滤器的针对数据库记录的另外的键值对810。如果是,那么数据库***可从数据库记录选择下一个键值对804并且通过使用键值对作为进入条目函数的输入来生成将要被添加至布隆过滤器的散列/输出值来使这一选择的键值对散列化806。数据库***可然后将所选择的键值对的这一散列添加至布隆过滤器808。这可继续直到将数据库记录的键值对的所有散列/输出值添加至布隆过滤器。一旦这发生,数据库***就可利用密钥对的私用密钥来对指定数据库记录的键值对的布隆过滤器数字地签名812。数据库***可向数据库***的用户提供这一数字地签名的布隆过滤器以核实数据库记录的可信性并且执行布隆过滤器查询以针对当前迭代值确定用于各种数据属性的当前值。
应注意,虽然出于说明性目的数据库键值对在整个本公开中被广泛地使用,但是可使用其他数据集合。例如,计算机***可将数据集合的多个分量编码到布隆过滤器或其他概率数据结构中,使得实体可通过针对布隆过滤器核实数据集合的个别分量并且核实布隆过滤器的数字签名来核实分量。在实施例中,数据集合可包括数据对象的多个(例如,一系列)位,使得添加至布隆过滤器或其他概率数据结构的个别分量可以是数据对象的位的子序列(例如,借助于其添加至布隆过滤器的散列)。以此方式,可使用布隆过滤器检验少于所有数据的完整性而无需访问所有数据。
如以上所指出,作为上文描述的过程800的替代方案,数据库***可代替数字地签名的每个键值对并且利用这些数字签名作为进入条目函数的输入以生成散列/输出值。数据库***可将这些散列/输出值添加至布隆过滤器,使得用户可查询布隆过滤器来确定特定数字签名是否存在于布隆过滤器内。如果是,那么特定键值对就可被认证。另外,当针对属性的值改变时,数据库***可生成可被添加至布隆过滤器以用于认证键值对的最近的迭代的新的数字签名。因此,图9示出根据至少一个实施例的用于响应于对数据库记录签名的请求来向布隆过滤器添加数据库键值对的数字签名的过程900的说明性实例。过程900可由上述数据库***执行,所述上述数据库***可被配置来对数据库记录的每个键值对数字地签名并且使这些数字签名散列化以便包括在布隆过滤器内。
类似于上文描述的过程800,数据库***可接收对数据库记录数字地签名的请求902。这可致使数据库***选择数据库属性和针对属性的对应的值的第一键值对904。这一第一键值对可从数据库记录随机选择或至少部分地基于记录内的偏移来选择。例如,数据库***可选择在数据库记录内具有最低偏移的属性。一旦数据库***从数据库记录选择这一第一键值对,数据库***就可利用密钥对的私用密钥来对所选择的键值对数字地签名906并且生成可作为条目添加到布隆过滤器中的数字签名。例如,数据库***可利用条目函数来生成至少部分地基于数字地签名的键值对和针对键值对的数字签名的迭代值的输出值(例如,散列)908。
在实施例中,数据库***将生成两个单独的输出值,所述两个单独的输出值可对应于键值对的数字签名。例如,第一输出值可至少部分地基于属性名称和属性的迭代值来生成。这一迭代值可用来表示属性的当前迭代。为了使用户或数据库***能够查询布隆过滤器有关属性的特定数字签名,数据库***可在这一给定的迭代处生成至少部分地基于属性名称、迭代值和针对属性的数字签名的第二输出值。因此,数据库***可在稍后的时间处查询布隆过滤器以首先识别针对属性的当前迭代值并且利用所述迭代值来履行查询以便确定特定数字签名在这一迭代值处是否针对属性被指定。
一旦数据库***使用条目函数来生成被添加至布隆过滤器的数字签名的输出值,数据库***就可确定是否存在需要将数字签名添加至布隆过滤器的另外的键值对910。如果是,那么数据库***可选择数据库记录的下一个键值对904并且对这一键值对数字地签名906。这一数字签名可然后用来生成可被添加至布隆过滤器的输出值。一旦数据库***生成针对键值对的数字签名的各种散列/输出值,数据库***就可将这些散列/输出值添加至布隆过滤器912以针对数据库记录的可信性启用数字签名查询。在实施例中,数据库***还可对布隆过滤器本身数字地签名,以提供用于数据库记录的另外的认证层。
类似于上文描述的过程800,应注意,虽然出于说明性目的数据库键值对在整个本公开中被广泛地使用,但是可使用其他数据集合。例如,计算机***可将数据集合的多个分量的数字签名编码到布隆过滤器或其他概率数据结构中,使得实体可通过针对布隆过滤器核实数据集合的个别分量的数字签名来核实分量。在实施例中,数据集合可包括数据对象的多个位,使得添加至布隆过滤器或其他概率数据结构的个别分量的签名可对应于数据对象的位的子序列。
图10示出根据各种实施例的用于实现各方面的示例环境1000的各方面。如将了解,尽管出于解释目的使用基于web的环境,但是可视情况使用不同环境来实现各种实施例。所述环境包括电子客户端装置1002,所述电子客户端装置1002可包括可操作来在适合网络1004上发送和/或接收请求、消息或信息并且在一些实施例中将信息传送回装置用户的任何适当的装置。这类客户端装置的实例包括个人计算机、手机、手持式消息传送装置、膝上型计算机、平板计算机、机顶盒、个人数据助理、嵌入式计算机***、电子书阅读器等。网络可包括任何适当网络,包括内联网、互联网、蜂窝网、局域网、卫星网络,或任何其他这类网络和/或上述网络的组合。用于这种***的部件可至少部分地取决于所选择的网络和/或环境的类型。用于通过这种网络通信的协议和部件是众所周知的,因而本文将不再详细讨论。通过网路进行的通信可通过有线或无线连接及其组合来实现。在这个实例中,网络包括互联网,因为环境包括用于接收请求并且响应于所述请求而提供内容的web服务器1006,但是对于其他网络来说,可使用服务类似目的替代装置,如本领域普通技术人员所明白的。
说明性环境包括至少一个应用服务器1008和数据存储区1010。应理解,可存在可链接起来或以其他方式来配置的若干应用服务器、层或其他元件、进程或部件,它们可交互以执行诸如从适当数据存储区获得数据的任务。如本文所使用的服务器可用各种方式来实现,诸如硬件装置或虚拟计算机***。在一些上下文中,服务器可以是指正在计算机***上执行的编程模块。如本文所使用的,除非另行说明或从上下文清楚地看出,否则术语“数据存储区”是指能够存储、访问和检索数据的任何装置或装置组合,其可包括任何标准、分布式、虚拟或集群式环境中的任何组合和任何数目的数据服务器、数据库、数据存储装置和数据存储介质。应用服务器可包括任何适当硬件、软件和固件,所述硬件、软件和固件用于视执行客户端装置的一个或多个应用的各方面的需要而与数据存储区集成,从而处置应用的一些或所有的数据访问和业务逻辑。应用服务器可与数据存储区协作提供访问控制服务,并且能够生成可用于向用户提供的内容,包括但不限于文本、图形、音频、视频和/或其他内容,所述内容可以超文本标记语言(“HTML”)、可扩展标记语言(“XML”)、JavaScript、级联样式表(“CSS”)或另一种合适的客户端侧结构化语言的形式通过web服务器向用户提供。传递到客户端装置的内容可由客户端装置处理,以便提供呈一种或多种形式的内容,所述形式包括但不限于用户可通过听觉、视觉和/或通过其他感觉(包括触觉、味觉和/或嗅觉)来感知的形式。所有请求和响应的处置以及客户端装置1002与应用服务器1008之间的内容递送可由web服务器使用PHP来处置:超文本预处理器(“PHP”)、Python、Ruby、Perl、Java、HTML、XML或在这个实例中的另一种合适的服务器侧结构化语言。应理解,web服务器和应用服务器不是必要的且仅仅是示例性部件,因为本文所讨论的结构化代码可在如本文其他地方所讨论的任何适当装置或主机上执行。此外,除非从上下文清楚地看出,否则如由单个装置执行的本文所述的操作可由可形成分布式和/或虚拟***的多个装置共同执行。
数据存储区1010可包括若干独立的数据表、数据库、数据文件、动态数据存储方案和/或其他数据存储机构和介质,用来存储与本公开的特定方面相关的数据。例如,所示数据存储区可包括用于存储生产数据1012和用户信息1016的机构,所述生产数据1012和用户信息1016可用于提供用于生产侧的内容。数据存储区还被示出为包括用于存储日志数据1014的机构,所述机构可用于报告、分析或其他此类目的。应当理解,可能存在可能需要存储在数据存储区中的许多其他方面,如页面图像信息和访问权信息,所述方面可视情况存储在上文列出的机构中的任何机构中或存储在数据存储区1010的中另外的机构中。数据存储区1010可通过与它关联的逻辑来操作,以便从应用服务器1008接收指令,并且响应于所述指令而获得、更新或以其他方式处理数据。应用服务器1008可响应于所接收指令提供静态、动态数据或静态和动态数据的组合。动态数据(诸如web日志(博客)、购物应用、新闻服务以及其他这类应用中使用的数据)可由如本文所描述的服务器侧结构化语言生成,或可由在应用服务器上操作或在其控制下的内容管理***(“CMS”)提供。在一个实例中,用户可通过由用户操作的装置提交对某种类型的项目的搜索请求。在这种情况下,数据存储区可访问用户信息以核实用户的身份,并且可访问目录详细信息以获得关于所述类型的项目的信息。接着可将信息如以web页上的结果列表的形式返回给用户,用户能够通过用户装置1002上的浏览器来查看所述web页。可在专用浏览器页面或窗口中查看感兴趣的特定项目的信息。然而,应注意,本公开的实施例未必局限于web页的上下文,而可更一般地应用于处理一般请求,其中请求未必是对上下文的请求。
每个服务器通常将包括提供用于所述服务器的一般管理和操作的可执行程序指令的操作***,并且通常将包括存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等),所述指令在由服务器的处理器执行时允许所述服务器执行其预期的功能。操作***的适合实现方式和服务器的一般功能是众所周知的或可商购的,并且易于由本领域普通技术人员实现,尤其是根据本文中的公开内容来实现。
在一个实施例中,环境是分布式和/或虚拟计算环境,所述环境利用通过通信链路、使用一个或多个计算机网络或直接连接来互连的若干计算机***和部件。但是,本领域普通技术人员应理解,这种***可在具有比图10所示更少或更多数目的部件的***中同样顺利地操作。因此,对图10中的***1000的描绘本质上应视为说明性的,并且不限制本公开的范围。
此外,可鉴于以下条款对本公开的实施例进行描述:
1.一种***,其包括:
一个或多个处理器;以及
包括指令的存储器,所述指令在由所述一个或多个处理器执行时致使所述***:
接收向布隆过滤器添加条目的第一请求;
查询所述布隆过滤器以确定所述布隆过滤器中所述条目的当前迭代值,所述当前迭代值具有为第一奇偶校验值或第二奇偶校验值的奇偶校验属性,所述第一奇偶校验值指示所述条目存在于所述布隆过滤器中并且所述第二奇偶校验值指示已经将所述条目从所述布隆过滤器移除;
至少通过下列各项对所述第一请求作出响应:
如果所述当前迭代值具有所述第一奇偶校验值,那么指示所述条目存在于所述布隆过滤器内;以及
如果所述当前迭代值具有所述第二奇偶校验值,那么:
使所述当前迭代值增量至具有所述第一奇偶校验值的第一当前迭代值;
利用所述第一当前迭代值和所述条目来生成第一输出值;以及
向所述布隆过滤器添加所生成的第一输出值;
接收将所述条目从所述布隆过滤器移除的第二请求;以及
至少通过下列各项对所述第二请求作出响应:
查询所述布隆过滤器以确定所述布隆过滤器中所述条目的所述当前迭代值;
如果所述第二当前迭代值对应于所述第二奇偶校验值,那么指示所述条目不存在于所述布隆过滤器内;以及
如果所述第二当前迭代值对应于所述第一奇偶校验值,那么:
使所述当前迭代值增量至具有所述第二奇偶校验值的所述第二当前迭代值;
利用所述第二当前迭代值和所述条目来生成第二输出值;以及
向所述布隆过滤器添加所生成的第二输出值。
2.如条款1所述的***,其中所述指令在由所述一个或多个处理器执行时进一步致使所述***查询所述布隆过滤器以至少通过查询所述布隆过滤器多次来确定所述当前迭代值,每次利用不同迭代值以将所述当前迭代值确定为将所述条目添加至所述布隆过滤器的最高迭代值。
3.如条款1或2所述的***,其中所述第一奇偶校验值是偶数整数的性质并且所述第二奇偶校验值是奇数整数的性质。
4.如条款1-3中任一项所述的***,其中所述指令在由所述一个或多个处理器执行时进一步致使所述***将所述第一当前迭代值和所述条目输入到条目函数中以组合所述当前迭代值和所述条目以便生成被添加至所述布隆过滤器的所述第一输出值。
5.一种计算机实现的方法,其包括:
在配置有可执行指令的一个或多个计算机***的控制下,查询概率数据结构来确定所述概率数据结构中条目的当前迭代状态,所述当前迭代状态指示所述条目的来自包括对应于所述条目是集合的成员的第一状态和对应于使所述条目在所述集合中缺失的第二状态的多个状态的状态;
由于所述当前迭代状态对应于所述条目是所述集合的成员,将所述当前迭代状态修改成新的迭代状态,使得所述新的迭代状态对应于将所述条目从所述集合移除;
利用所述新的迭代状态和所述条目来生成输出值;以及
向所述概率数据结构添加所述输出值。
6.如条款5所述的计算机实现的方法,其中:
所述概率数据结构是布隆过滤器;以及
向所述布隆过滤器添加所述输出值包括将所述布隆过滤器内的一个或多个位从零改变至一以表示所述输出值在所述布隆过滤器内的存在。
7.如条款5或6所述的计算机实现的方法,其中所述方法还包括:
接收将所述条目添加至所述概率数据结构的请求;
查询所述概率数据结构以确定所述条目的所述当前迭代状态;以及
由于所述当前迭代状态对应于所述第二状态:
将所述当前迭代状态修改成对应于所述第一状态的新的当前迭代状态;
利用所述新的当前迭代状态和所述条目来生成第二输出值;以及
向所述概率数据结构添加所生成的第二输出值。
8.如条款5-7中任一项所述的计算机实现的方法,其中所述当前迭代状态具有第一奇偶校验状态或第二奇偶校验状态的奇偶校验属性,其中所述第一奇偶校验状态对应于所述第一状态并且所述第二奇偶校验状态对应于所述第二状态。
9.如条款8所述的计算机实现的方法,其中所述第一奇偶校验状态是奇数整数的性质并且所述第二奇偶校验状态是偶数整数的性质。
10.如条款5-9中任一项所述的计算机实现的方法,其中所述输出值通过至少将所述新的迭代状态和所述条目输入到散列函数中来生成。
11.如条款5-10中任一项所述的计算机实现的方法,其中查询所述概率数据结构来确定所述当前迭代值包括:
查询所述概率数据结构多次,每次利用不同迭代状态;以及
将所述当前迭代状态确定为将所述条目添加至所述概率数据结构的所述最高迭代状态。
12.如条款5-11中任一项所述的计算机实现的方法,其中将所述条目从所述集合移除响应于由于将所述条目从与所述概率数据结构相关联的数据库移除而生成的请求来执行。
13.一种非暂时性计算机可读存储介质,其上存储有可执行指令,所述可执行指令在由计算机***的一个或多个处理器执行时,致使所述计算机***至少执行以下各项:
确定概率数据结构中条目的当前迭代值,所述当前迭代值指示所述条目的来自包括第一状态和第二状态的多个状态的状态,所述当前迭代值指示所述条目用来更新所述概率数据结构的次数;
至少部分地基于所确定的当前迭代值来确定所述条目的所述状态;以及
提供指示所确定的状态的信息。
14.如条款13所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***查询所述概率数据结构多次,每次利用不同迭代值以确定所述当前迭代值。
15.如条款13或14所述的非暂时性计算机可读存储介质,其中所述第一状态对应于所述条目在集合中的成员资格并且所述第二状态对应于使所述条目在所述集合中缺失
16.如条款13-15中任一项所述的非暂时性计算机可读存储介质,其中所述概率数据结构是包括一个或多个位的布隆过滤器,所述一个或多个位用来表示所述值在所述布隆过滤器内的存在。
17.如条款13-16中任一项所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
接收将所述条目添加至所述概率数据结构的请求;
确定所述条目的所述当前迭代值;以及
至少通过下列各项履行所述请求:
如果所述当前迭代值对应于所述第一状态,那么指示所述条目存在于所述概率数据结构中;以及
如果所述当前迭代值对应于所述第二状态,那么:
将所述当前迭代值增量至对应于所述第一状态的新的当前迭代值;
利用所述新的当前迭代值和所述条目来生成输出值;以及
向所述概率数据结构添加所生成的输出值。
18.如条款13-17中任一项所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
接收将所述条目从所述概率数据结构移除的请求,所述请求响应于检测到将所述条目从与所述概率数据结构相关联的数据库移除而生成;
响应于所述请求来确定所述条目的所述当前迭代值;以及
至少通过下列各项履行所述请求:
如果所述当前迭代值对应于所述第二状态,那么指示所述条目不存在于所述概率数据结构中;以及
如果所述当前迭代值对应于所述第一状态,那么:
将所述当前迭代值增量至对应于所述第二状态的新的当前迭代值;
利用所述新的当前迭代值和所述条目来生成输出值;以及
向所述概率数据结构添加所生成的输出值。
19.如条款13-18中任一项所述的非暂时性计算机可读存储介质,其中所述当前迭代值具有第一奇偶校验值或第二奇偶校验值的奇偶校验属性,其中所述第一奇偶校验值对应于所述第一状态并且所述第二奇偶校验值对应于所述第二状态。
20.如条款13-19中任一项所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
由于所述当前迭代值对应于所述条目存在于所述概率数据结构中,选择新的迭代值,使得所述新的迭代值对应于使所述条目从所述概率数据结构缺失;以及
向所述概率数据结构添加使用所述新的迭代值和所述条目生成的值。
21.一种***,其包括:
一个或多个处理器;以及
包括指令的存储器,所述指令在由所述一个或多个处理器执行时致使所述***:
从客户端装置接收对数据库记录数字地签名的请求,所述数据库记录包括多个键值对;
利用散列函数来使所述多个键值对中的个别键值对散列化以生成散列集合;
将所生成的散列集合添加至布隆过滤器以生成更新的布隆过滤器;
对所述更新的布隆过滤器数字地签名以生成所述更新的布隆过滤器的数字签名;以及
提供所述更新的布隆过滤器和所述生成的数字签名。
22.如条款21所述的***,其中所述指令在由所述一个或多个处理器执行时进一步致使所述***:
接收用包括先前观察到的属性和针对所述属性的新的值的新的键值对替换所述布隆过滤器内所述多个键值对的个别键值对的请求;
查询所述布隆过滤器以确定所述布隆过滤器中所述个别键值对的当前迭代值;以及
至少通过下列各项履行所述请求:
将所述当前迭代值增量成新的迭代值;
利用所述新的迭代值、所述键值对的所述键和针对所述键值对的所述新的值来生成输出值;以及
向所述布隆过滤器添加所生成的输出值。
23.如条款22所述的***,其中:
替换所述布隆过滤器内所述个别键值对的所述请求指定删除所述个别键值对的值;以及
所述指令在由所述一个或多个处理器执行时进一步致使所述***至少通过如下各项履行所述请求:
利用所述新的迭代值、所述键值对的所述键和空值来生成所述输出值;以及
向所述布隆过滤器添加所生成的输出值。
24.如条款21-23中任一项所述的***,其中所述指令在由所述一个或多个处理器执行时进一步致使所述***:
接收针对所述多个键值对的特定键确定值是否存在于所述布隆过滤器内的请求;
查询所述布隆过滤器以确定对应于所述特定键的个别键值对的当前迭代值;
利用所确定的当前迭代值、所述键和所述请求中指定的所述值来生成输出值;以及
查询所述布隆过滤器以确定所述输出值的存在,使得如果所述输出值存在于所述布隆过滤器内,那么所述请求中指定的所述值存在于所述布隆过滤器内。
25.一种计算机实现的方法,其包括:
在配置有可执行指令的一个或多个计算机***的控制下,
获得数据集合的多个分量;
使所述数据集合的所述多个分量中的个别分量散列化以生成多个散列;
将所生成的多个散列添加至概率数据结构;以及
对所述概率数据结构数字地签名。
26.如条款25所述的计算机实现的方法,其中:
所述概率数据结构是布隆过滤器;以及
将所生成的多个散列添加至所述布隆过滤器包括将所述布隆过滤器内的一个或多个位从零改变至一以表示所生成的多个散列在所述布隆过滤器内的存在。
27.如条款25或26所述的计算机实现的方法,其还包括响应于对数据库记录数字地签名的请求,提供概率数据结构和由于所述概率数据结构被数字地签名生成的数字签名。
28.如条款25-27中任一项所述的计算机实现的方法,其还包括:
接收确定分量是否存在于所述概率数据结构内的请求;
确定所述分量的当前迭代值;以及
使用所述当前迭代值和所述分量来确定所述分量是否存在于所述概率数据结构内。
29.如条款28所述的计算机实现的方法,其还包括查询所述概率数据结构多次以确定所述当前迭代值,每次利用不同的迭代值以将所述当前迭代值确定为将所述分量添加至所述概率数据结构的最高迭代值。
30.如条款25-29中任一项所述的计算机实现的方法,其还包括:
接收用新的分量替换来自所述概率数据结构的个别分量的请求;
确定针对所述个别分量的当前迭代值;
修改所述当前迭代值以生成新的迭代值;
使所述新的迭代值和所述新的分量散列化来生成新的散列;以及
将所述新的散列添加至所述概率数据结构。
31.如条款30所述的计算机实现的方法,其中:
替换所述个别分量的所述请求是将所述个别分量从所述概率数据结构移除的删除请求;以及
修改所述当前迭代值以生成所述新的迭代值包括选择所述新的迭代值,使得所述新的迭代值对应于使所述个别分量从所述概率数据结构缺失。
32.如条款31所述的计算机实现的方法,其中所述删除请求由于将所述分量从与所述概率数据结构相关联的数据库移除而生成。
33.一种非暂时性计算机可读存储介质,其上存储有可执行指令,所述可执行指令在由计算机***的一个或多个处理器执行时,致使所述计算机***至少执行以下各项:
将数据集合的多个分量编码到概率数据结构中;以及
至少通过如下各项核实所述数据集合的所述多个分量的个别分量:
针对所述概率数据结构核实所述个别分量;以及
核实所述概率数据结构的数字签名。
34.如条款33所述的非暂时性计算机可读存储介质,其中所述概率数据结构是包括一个或多个位的布隆过滤器,所述一个或多个位用来表示所述多个分量在所述布隆过滤器内的存在。
35.如条款33或34所述的非暂时性计算机可读存储介质,其中将所述数据集合的所述多个分量编码到所述概率数据结构中包括:
获得所述数据集合的所述多个分量;
使所述数据集合的所述多个分量中的个别分量散列化以生成多个散列;
将所生成的多个散列添加至所述概率数据结构;以及
对所述概率数据结构数字地签名。
36.如条款33-35中任一项所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
接收将分量从所述概率数据结构删除的请求;
确定针对所述分量的当前迭代值;以及
至少通过下列各项履行所述请求:
如果针对所述分量的所述当前迭代值对应于所述分量存在于所述概率数据结构中,那么:
将所述当前迭代值修改成新的迭代值,所述新的迭代值对应于使所述分量从所述概率数据结构缺失;
使所述分量和所述新的迭代值散列化以生成散列;以及
将所述散列添加至所述概率数据结构;以及
如果针对所述分量的所述当前迭代值对应于使所述分量从所述概率数据结构缺失,那么指示所述分量从所述概率数据结构缺失。
37.如条款33-36中任一项所述的非暂时性计算机可读存储介质,其中所述多个分量是数据库记录的键值对。
38.如条款33-37中任一项所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
响应于确定分量是否存在于所述概率数据结构内的请求确定针对所述分量的当前迭代值;
使所述当前迭代值和所述分量散列化来生成散列;以及
利用所述散列来确定所述分量是否存在于所述概率数据结构内。
39.如条款38所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***对所述概率数据结构执行多个查询以确定所述当前迭代值,每个查询使用不同的迭代值来执行以将所述当前迭代值确定为将所述分量添加至所述概率数据结构的最高迭代值。
40.如条款38所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
接收更新所述概率数据结构内的分量的请求;
确定针对所述分量的当前迭代值;
修改所述当前迭代值以生成新的迭代值;
使所述新的迭代值和所述更新的分量散列化以生成新的散列;以及
将所述新的散列添加至所述概率数据结构。
41.一种***,其包括:
一个或多个处理器;以及
包括指令的存储器,所述指令在由所述一个或多个处理器执行时致使所述***:
从客户端装置接收对数据库记录数字地签名的请求,所述数据库记录包括多个键值对;
至少部分地基于所述多个键值对中的个别键值对来生成用于所述个别键值对的个别数字签名;
将所生成的个别数字签名添加至布隆过滤器以生成更新的布隆过滤器;以及
提供更新的布隆过滤器。
42.如条款41所述的***,其中所述指令在由所述一个或多个处理器执行时进一步致使所述***:
接收用对应于包括先前观察到的属性和针对所述属性的新的值的新的键值对的新的数字签名替换对应于所述布隆过滤器内键值对的个别数字签名的请求;
查询所述布隆过滤器以确定所述布隆过滤器中所述数字签名的当前迭代值;以及
至少通过下列各项履行所述请求:
将所述当前迭代值增量成新的迭代值;
对所述新的键值对数字地签名以生成用于所述新的键值对的新的数字签名;
利用所述新的迭代值和所述新的数字签名来生成输出值;以及
向所述布隆过滤器添加所生成的输出值。
43.如条款42所述的***,其中:
替换所述数字签名的请求指定删除所述键值对的值,使得将所述数字签名从所述布隆过滤器移除;以及
所述指令在由所述一个或多个处理器执行时进一步致使所述计算机***至少通过如下各项履行所述请求:
对空值和所述键值对的键数字地签名以生成所述新的数字签名;
利用所述新的迭代值和所述新的数字签名来生成输出值;以及
向所述布隆过滤器添加所生成的输出值。
44.如条款41-43中任一项所述的***,其中所述指令在由所述一个或多个处理器执行时进一步致使所述***:
接收核实用于所述多个键值对的特定键值对的数字签名的请求;
查询所述布隆过滤器以确定所述特定数字签名的当前迭代值;
利用所确定的当前迭代值和所述数字签名来生成输出值;以及
查询所述布隆过滤器以确定所述输出值的存在,使得如果所述输出值存在于所述布隆过滤器内,那么将所述数字签名核实为可信
45.一种计算机实现的方法,其包括:
在配置有可执行指令的一个或多个计算机***的控制下,
获得数据集合的多个分量;
对所述多个分量的个别分量数字地签名以生成多个数字签名;
将所述多个数字签名添加至概率数据结构;以及
利用所述概率数据结构来核实所述多个数字签名的个别数字签名。
46.如条款45所述的计算机实现的方法,其中:
所述概率数据结构是布隆过滤器;以及
向所述布隆过滤器添加所述多个数字签名包括在零至一之间改变所述布隆过滤器内的一个或多个位以表示所述多个数字签名在所述布隆过滤器内的存在。
47.如条款45或46所述的计算机实现的方法,其还包括:
接收用新的分量替换来自所述概率数据结构的个别分量的请求;
确定针对所述个别分量的当前迭代值;
修改所述当前迭代值以生成新的迭代值;
对所述新的分量数字地签名以生成新的数字签名;
利用所述新的迭代值和所述新的数字签名来生成输出值;以及
向所述概率数据结构添加所生成的输出值。
48.如条款45-47中任一项所述的计算机实现的方法,其还包括响应于对数据库记录数字地签名的请求来提供所述概率数据结构。
49.如条款45-48中任一项所述的计算机实现的方法,其还包括:
接收将个别分量从所述概率数据结构删除的请求;
针对所述个别分量确定对应的数字签名;
确定针对所述对应的数字签名的当前迭代值;
将所述当前迭代值修改成新的迭代值,使得所述新的迭代值对应于将所述对应的数字签名从所述概率数据结构移除;
利用所述新的迭代值和所述对应的数字签名来生成输出值;以及
向所述概率数据结构添加所生成的输出值。
50.如条款49所述的计算机实现的方法,其中将所述个别分量从所述概率数据结构删除的所述请求由于将所述分量从与所述概率数据结构相关联的数据库移除而生成。
51.如条款45-50中任一项所述的计算机实现的方法,其中利用所述概率数据结构来核实所述多个数字签名的个别数字签名包括:
确定针对所述个别数字签名的当前迭代值;
利用所确定的当前迭代值和用于所述个别分量的所述数字签名来生成输出值;以及
查询所述概率数据结构来确定所述输出值的存在,使得如果对应于个别数字签名的个别输出值存在于所述概率数据结构内,那么用于所述个别分量的所述数字签名被核实为可信。
52.如条款51所述的计算机实现的方法,其还包括查询所述概率数据结构多次以确定所述当前迭代值,每次利用不同的迭代值以将所述当前迭代值确定为将个别数字签名添加至所述概率数据结构的最高迭代值。
53.一种非暂时性计算机可读存储介质,其上存储有可执行指令,所述可执行指令在由计算机***的一个或多个处理器执行时,致使所述计算机***至少执行以下各项:
存储至少部分地基于多个数字签名生成的概率数据结构,其中所述多个数字签名中的个别数字签名至少部分地基于数据集合的多个分量中的相应分量生成;
接收数字签名;以及
通过针对所述概率数据结构核实所述数字签名来核实所接收的数字签名。
54.如条款53所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
响应于确定数字签名是否存在于所述概率数据结构内的请求确定针对所述数字签名的当前迭代值;
利用所述当前迭代值和所述数字签名来生成输出值;以及
利用所述输出值来确定所述数字签名是否存在于所述概率数据结构内。
55.如条款54所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***对所述概率数据结构执行多个查询以确定所述当前迭代值,每个查询使用不同的迭代值来执行以将所述当前迭代值确定为将所述数字签名添加至所述概率数据结构的最高迭代值。
56.如条款54所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
接收更新所述概率数据结构内的数字签名的请求;
确定对应于所述分量的数字签名的当前迭代值;
修改所述当前迭代值以生成新的迭代值;
利用所述新的迭代值和所述更新的分量来生成新的输出值;以及
向所述概率数据结构添加所述新的输出值。
57.如条款53-56中任一项所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
接收将数字签名从所述概率数据结构删除的请求;
确定所述数字签名的当前迭代值;以及
至少通过下列各项履行所述请求:
如果所述数字签名的所述当前迭代值对应于所述数字签名存在于所述概率数据结构中,那么:
将所述当前迭代值修改成新的迭代值,所述新的迭代值对应于使所述数字签名从所述概率数据结构缺失;
利用所述数字签名和所述新的迭代值来生成新的输出值;以及
向所述概率数据结构添加所述新的输出值;以及
如果针对所述数字签名的所述当前迭代值对应于使所述数字签名从所述概率数据结构缺失,那么指示所述数字签名从所述概率数据结构缺失。
58.如条款53-57中任一项所述的非暂时性计算机可读存储介质,其中所述概率数据结构是包括一个或多个位的布隆过滤器,所述一个或多个位用来表示所述多个数字签名在所述布隆过滤器内的存在。
59.如条款53-58中任一项所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***对所述概率数据结构数字地签名。
60.如条款53-59中任一项所述的非暂时性计算机可读存储介质,其中所述概率数据结构通过如下各项生成:
获得所述数据集合的所述多个分量;
针对所述多个分量的所述个别分量生成用于所述个别分量的数字签名;以及
向所述概率数据结构添加用于所述个别分量的所述数字签名。
可在广泛多种操作环境中进一步实现各个实施例,所述操作环境在一些情况下可包括一个或多个用户计算机、计算装置或者可用于操作多个应用中的任何一个的处理装置。用户或客户端装置可包括多个通用个人计算机中的任一种,诸如运行标准操作***的台式机、膝上型计算机或平板计算机,以及运行移动软件并且能够支持多种网络连接协议和消息传送协议的蜂窝装置、无线装置和手持式装置。这种***还可包括多个工作站,所述工作站运行多种可商购得的操作***和用于诸如开发和数据库管理目的的其他已知应用中的任一种。这些装置还可包括其他电子装置,诸如虚终端、瘦客户端、游戏***和能够通过网络通信的其他装置。这些装置还可包括虚拟装置,诸如虚拟机、管理程序以及能够通过网络通信的其他虚拟装置。
本公开的各种实施例利用本领域技术人员可能熟悉的至少一种网络来支持使用多种可商购得的协议中的任一种进行通信,所述协议诸如传输控制协议/互联网协议(“TCP/IP”)、用户数据报协议(“UDP”)、在开放***互连(“OSI”)模型的各个层中操作的协议、文件传送协议(“FTP”)、通用即插即用(“UpnP”)、网络文件***(“NFS”)、公共互联网文件***(“CIFS”)以及AppleTalk。网络可以是例如局域网、广域网、虚拟专用网、互联网、内联网、外联网、公共交换电话网、红外网、无线网、卫星网络以及上述网络的任何组合。
在利用web服务器的实施例中,web服务器可以运行多种服务器或中间层级应用中的任一种,包括超文本传送协议(“HTTP”)服务器、FTP服务器、通用网关接口(“CGI”)服务器、数据服务器、Java服务器、Apache服务器和业务应用服务器。所述服务器还可以能够响应于来自用户装置的请求而执行程序或脚本,诸如通过执行一个或多个可实现为一个或多个以任何编程语言(诸如C、C#或C++)或任何脚本语言(诸如Ruby、PHP、Perl、Python或TCL)及其组合撰写的脚本或程序的web应用。所述服务器还可包括数据库服务器,包括但不限于可从和商购得的服务器以及开源服务器(诸如MySQL、Postgres、SQLite、MongoDB),以及能够存储、检索和访问结构化或非结构化数据的任何其他服务器。数据库服务器可包括基于表格的服务器、基于文件的服务器、非结构化服务器、关系式服务器、非关系式服务器或这些和/或其他数据库服务器的组合。
环境可包括如上文讨论的多种数据存储区以及其他存储器和存储介质。这些可驻留在多种位置中,诸如在一个或多个计算机本地(和/或驻留在一个或多个计算机中)的存储介质上,或远离网络上的计算机中的任何或所有计算机的存储介质上。在一组特定实施例中,信息可驻留于在本领域技术人员熟悉的存储区域网(“SAN”)中。类似地,用于执行属于计算机、服务器或其他网络装置的功能的任何必要的文件可视情况存储在本地和/或远程。在***包括计算机化装置的情况下,每个这种装置可包括可通过总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)和至少一个输出装置(例如,显示装置、打印机或扬声器)。这种***还可以包括一个或多个存储装置,诸如磁盘驱动器、光存储装置和固态存储装置(诸如随机存取存储器(“RAM”)或只读存储器(“ROM”)),以及可移动介质装置、存储卡、闪存卡等。
此类装置还可包括计算机可读存储介质读取器、通信装置(例如调制解调器、网络卡(无线或有线)、红外线通信装置等)和工作存储器,如上文所论述的。计算机可读存储介质读取器可与计算机可读存储介质连接或被配置来接收计算机可读存储介质,计算机可读存储介质表示远程、本地、固定和/或可移动存储装置以及用于临时和/或更永久地包含、存储、发射和检索计算机可读信息的存储介质。***和各种装置通常还将包括位于至少一个工作存储器装置内的多个软件应用、模块、服务或其他元件,包括操作***和应用程序,诸如客户端应用或web浏览器。应了解,替代性实施例相比上文描述的实施例可具有众多变化。例如,也可使用定制硬件,和/或特定元件可以硬件、软件(包括可移植软件,诸如小应用)或两者来实现。此外,可以采用与其他计算装置诸如网络输入/输出装置的连接。
用于包含代码或部分代码的存储介质和计算机可读介质可包括本领域已知或已使用的任何适当介质,包括存储介质和通信介质,诸如但不限于以用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术所实现的易失性和非易失性、可移动和不可移动的介质,包括RAM、ROM、电可擦除可编程只读存储器(“EEPROM”)、闪存或其他存储器技术、光盘只读存储器(“CD-ROM”)、数字通用光盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所需信息且可由***装置访问的任何其他介质。基于本文所提供的公开内容和教义,本领域普通技术人员将了解实现各种实施例的其他方式和/或方法。
因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,将明显的是:在不脱离如权利要求书中阐述的本发明的更宽广精神和范围的情况下,可以对本发明做出各种修改和改变。
其他变型在本公开的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施例。然而,应理解,并不意图将本发明局限于所公开的一种或多种具体形式,但相反,意图涵盖如所附权利要求书中所限定落在本发明的精神和范围内的所有修改、替代构造和等效物。
在描述所公开实施例的上下文中(尤其是在以下权利要求书的上下文中),术语“一个(a/an)”和“所述”以及类似指称对象的使用应解释为涵盖单数和复数两者,除非本文另外指示或明显地与上下文矛盾。术语“包括”、“具有”、“包括”和“含有”应解释为开放式术语(即,意味着“包括但不限于”),除非另外注解。当无修饰并且指代物理连接时,术语“连接的”应解释为部分地或全部地纳入,附接到或连结在一起,即使存在介入物。除非本文另外指示,否则本文中对值范围的列举仅仅意图用作单独地表示落入所述范围的各单独值的速记方法,并且犹如本文单独描述地那样将各单独值并入本说明书中。除非另外指示或与上下文矛盾,否则术语“集”(例如,“项目集”)或“子集”的使用解释为包括一个或多个成员的非空集合。此外,除非另外指示或与上下文矛盾,否则术语对应集的“子集”不一定指对应集的真子集,而是子集和对应集可以相等。
连接性语言,除非另外特别指明或以其他方式明显地与上下文矛盾,否则如一般情况下使用的,诸如“A、B和C中的至少一个”形式的或“A、B和C中的至少一个”的短语另外与上下文一起理解来表示一个项目、项等可以是A或B或C、或A和B和C的集合的任何非空子集。例如,在具有三个成员的集合的说明性实例中,连接性短语“A、B和C中的至少一个”和“A、B和C中的至少一个”指代以下集合中的任意一个:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,此类连接性语言一般并非意图暗示某些实施例需要A中的至少一个、B中的至少一个以及C中的至少一个每个存在。
可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机***的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。代码可以(例如)计算机程序的形式存储在计算机可读存储介质上,所述计算机程序包括可由一个或多个处理器执行的多个指令。计算机可读存储介质可以是非暂时的。
本文所提供的任何以及所有实例或示例性语言(例如,“如”)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。本说明书中的语言不应解释为将任何非要求的元素指示为实践本发明所必需。
本文描述了本公开的实施例,包括发明人已知用于执行本发明的最佳模式。在阅读了上述描述后,这些所述实施例的变化对本领域的技术人员将变得明显。发明人希望技术人员视情况采用此类变型,并且发明人意图以不同于如本文具体描述的方式来实践本公开的实施例。因此,经适用的法律许可,本公开的范围包括在此所附的权利要求书中叙述的主题的所有修改和等效物。此外,本公开的范围涵盖其所有可能变型中的上述元素的任意组合,除非本文另外指示或以其他方式明显地与上下文矛盾。
本文所引用的所有参考文件,包括公布、专利申请和专利,据此按照相同的程度以引用方式并入本文中,如同每个参考文件都个别地和特别地表示为通过引用并入到本文中并且其全部内容都进行了陈述。
Claims (15)
1.一种***,其包括:
一个或多个处理器;以及
包括指令的存储器,所述指令在由所述一个或多个处理器执行时致使所述***:
接收向布隆过滤器添加条目的第一请求;
查询所述布隆过滤器以确定所述布隆过滤器中所述条目的当前迭代值,所述当前迭代值具有为第一奇偶校验值或第二奇偶校验值的奇偶校验属性,所述第一奇偶校验值指示所述条目存在于所述布隆过滤器中并且所述第二奇偶校验值指示已经将所述条目从所述布隆过滤器移除;
至少通过下列各项对所述第一请求作出响应:
如果所述当前迭代值具有所述第一奇偶校验值,那么指示所述条目存在于所述布隆过滤器内;以及
如果所述当前迭代值具有所述第二奇偶校验值,那么:
使所述当前迭代值增量至具有所述第一奇偶校验值的第一当前迭代值;
利用所述第一当前迭代值和所述条目来生成第一输出值;以及
向所述布隆过滤器添加所生成的第一输出值;
接收将所述条目从所述布隆过滤器移除的第二请求;以及
至少通过下列各项对所述第二请求作出响应:
查询所述布隆过滤器以确定所述布隆过滤器中所述条目的所述当前迭代值;
如果所述第二当前迭代值对应于所述第二奇偶校验值,那么指示所述条目不存在于所述布隆过滤器内;以及
如果所述第二当前迭代值对应于所述第一奇偶校验值,那么:
使所述当前迭代值增量至具有所述第二奇偶校验值的所述第二当前迭代值;
利用所述第二当前迭代值和所述条目来生成第二输出值;以及
向所述布隆过滤器添加所生成的第二输出值。
2.如权利要求1所述的***,其中所述指令在由所述一个或多个处理器执行时进一步致使所述***查询所述布隆过滤器以至少通过查询所述布隆过滤器多次来确定所述当前迭代值,每次利用不同迭代值以将所述当前迭代值确定为将所述条目添加至所述布隆过滤器的最高迭代值。
3.如权利要求1所述的***,其中所述指令在由所述一个或多个处理器执行时进一步致使所述***将所述第一当前迭代值和所述条目输入到条目函数中以组合所述当前迭代值和所述条目以便生成被添加至所述布隆过滤器的所述第一输出值。
4.一种计算机实现的方法,其包括:
在配置有可执行指令的一个或多个计算机***的控制下,
查询概率数据结构来确定所述概率数据结构中条目的当前迭代状态,所述当前迭代状态指示所述条目的来自包括对应于所述条目是集合的成员的第一状态和对应于使所述条目在所述集合中缺失的第二状态的多个状态的状态;
由于所述当前迭代状态对应于所述条目是所述集合的成员,将所述当前迭代状态修改成新的迭代状态,使得所述新的迭代状态对应于将所述条目从所述集合移除;
利用所述新的迭代状态和所述条目来生成输出值;以及
向所述概率数据结构添加所述输出值。
5.如权利要求4所述的计算机实现的方法,其中:
所述概率数据结构是布隆过滤器;以及
向所述布隆过滤器添加所述输出值包括将所述布隆过滤器内的一个或多个位从零改变至一以表示所述输出值在所述布隆过滤器内的存在。
6.如权利要求4所述的计算机实现的方法,其中所述方法还包括:
接收将所述条目添加至所述概率数据结构的请求;
查询所述概率数据结构以确定所述条目的所述当前迭代状态;以及
由于所述当前迭代状态对应于所述第二状态:
将所述当前迭代状态修改成对应于所述第一状态的新的当前迭代状态;
利用所述新的当前迭代状态和所述条目来生成第二输出值;以及
向所述概率数据结构添加所生成的第二输出值。
7.如权利要求4所述的计算机实现的方法,其中所述输出值通过至少将所述新的迭代状态和所述条目输入到散列函数中来生成。
8.如权利要求4所述的计算机实现的方法,其中查询所述概率数据结构来确定所述当前迭代值包括:
查询所述概率数据结构多次,每次利用不同迭代状态;以及
将所述当前迭代状态确定为将所述条目添加至所述概率数据结构的所述最高迭代状态。
9.如权利要求4所述的计算机实现的方法,其中将所述条目从所述集合移除响应于由于将所述条目从与所述概率数据结构相关联的数据库移除而生成的请求来执行。
10.一种非暂时性计算机可读存储介质,其上存储有可执行指令,所述可执行指令在由计算机***的一个或多个处理器执行时,致使所述计算机***至少执行以下各项:
确定概率数据结构中条目的当前迭代值,所述当前迭代值指示所述条目的来自包括第一状态和第二状态的多个状态的状态,所述当前迭代值指示所述条目用来更新所述概率数据结构的次数;
至少部分地基于所确定的当前迭代值来确定所述条目的所述状态;以及
提供指示所确定的状态的信息。
11.如权利要求10所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***查询所述概率数据结构多次,每次利用不同迭代值以确定所述当前迭代值。
12.如权利要求10所述的非暂时性计算机可读存储介质,其中所述第一状态对应于所述条目在集合中的成员资格并且所述第二状态对应于使所述条目在所述集合中缺失。
13.如权利要求10所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
接收将所述条目添加至所述概率数据结构的请求;
确定所述条目的所述当前迭代值;以及
至少通过下列各项履行所述请求:
如果所述当前迭代值对应于所述第一状态,那么指示所述条目存在于所述概率数据结构中;以及
如果所述当前迭代值对应于所述第二状态,那么:
将所述当前迭代值增量至对应于所述第一状态的新的当前迭代值;
利用所述新的当前迭代值和所述条目来生成输出值;以及
向所述概率数据结构添加所生成的输出值。
14.如权利要求10所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
接收将所述条目从所述概率数据结构移除的请求,所述请求响应于检测到将所述条目从与所述概率数据结构相关联的数据库移除而生成;
响应于所述请求来确定所述条目的所述当前迭代值;以及
至少通过下列各项履行所述请求:
如果所述当前迭代值对应于所述第二状态,那么指示所述条目不存在于所述概率数据结构中;以及
如果所述当前迭代值对应于所述第一状态,那么:
将所述当前迭代值增量至对应于所述第二状态的新的当前迭代值;
利用所述新的当前迭代值和所述条目来生成输出值;以及
向所述概率数据结构添加所生成的输出值。
15.如权利要求10所述的非暂时性计算机可读存储介质,其中所述指令进一步致使所述计算机***:
由于所述当前迭代值对应于所述条目存在于所述概率数据结构中,选择新的迭代值,使得所述新的迭代值对应于使所述条目从所述概率数据结构缺失;以及
向所述概率数据结构添加使用所述新的迭代值和所述条目生成的值。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/849,481 | 2015-09-09 | ||
US14/849,481 US10078687B2 (en) | 2015-09-09 | 2015-09-09 | Deletion of elements from a probabilistic data structure |
US14/849,493 | 2015-09-09 | ||
US14/849,493 US10263784B2 (en) | 2015-09-09 | 2015-09-09 | Signature verification for data set components using probabilistic data structures |
US14/849,488 US10262160B2 (en) | 2015-09-09 | 2015-09-09 | Verification of data set components using digitally signed probabilistic data structures |
US14/849,488 | 2015-09-09 | ||
PCT/US2016/051129 WO2017044867A1 (en) | 2015-09-09 | 2016-09-09 | Deletion of elements from a bloom filter |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027826A true CN108027826A (zh) | 2018-05-11 |
CN108027826B CN108027826B (zh) | 2022-05-17 |
Family
ID=56959083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680051926.0A Active CN108027826B (zh) | 2015-09-09 | 2016-09-09 | 元素从概率数据结构的删除 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP3347831B1 (zh) |
JP (1) | JP6646847B2 (zh) |
CN (1) | CN108027826B (zh) |
CA (1) | CA2997922C (zh) |
WO (1) | WO2017044867A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7323804B2 (ja) | 2019-12-10 | 2023-08-09 | 富士通株式会社 | データ処理装置およびデータ処理プログラム |
JP7479501B2 (ja) * | 2020-10-05 | 2024-05-08 | グーグル エルエルシー | カウントのベクトルによるブルームフィルタのメタ推定 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070078827A1 (en) * | 2005-10-05 | 2007-04-05 | Microsoft Corporation | Searching for information utilizing a probabilistic detector |
CN101901248A (zh) * | 2010-04-07 | 2010-12-01 | 北京星网锐捷网络技术有限公司 | 一种布隆过滤器的生成、更新以及查询元素方法和装置 |
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
US20120084459A1 (en) * | 2010-10-04 | 2012-04-05 | Futurewei Technologies, Inc. | Content Router Forwarding Plane Architecture |
US20130166576A1 (en) * | 2011-12-22 | 2013-06-27 | Sap Ag | Dynamic, hierarchical bloom filters for network routing |
US20130226972A1 (en) * | 2012-02-27 | 2013-08-29 | Ramakumar Kosuru | Methods and systems for processing data arrays using bloom filters |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8032529B2 (en) * | 2007-04-12 | 2011-10-04 | Cisco Technology, Inc. | Enhanced bloom filters |
US20130219116A1 (en) * | 2012-02-16 | 2013-08-22 | Wenguang Wang | Data migration for composite non-volatile storage device |
US8949544B2 (en) * | 2012-11-19 | 2015-02-03 | Advanced Micro Devices, Inc. | Bypassing a cache when handling memory requests |
-
2016
- 2016-09-09 CN CN201680051926.0A patent/CN108027826B/zh active Active
- 2016-09-09 EP EP16767493.6A patent/EP3347831B1/en active Active
- 2016-09-09 CA CA2997922A patent/CA2997922C/en active Active
- 2016-09-09 WO PCT/US2016/051129 patent/WO2017044867A1/en active Application Filing
- 2016-09-09 JP JP2018509746A patent/JP6646847B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070078827A1 (en) * | 2005-10-05 | 2007-04-05 | Microsoft Corporation | Searching for information utilizing a probabilistic detector |
CN101901248A (zh) * | 2010-04-07 | 2010-12-01 | 北京星网锐捷网络技术有限公司 | 一种布隆过滤器的生成、更新以及查询元素方法和装置 |
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
US20120084459A1 (en) * | 2010-10-04 | 2012-04-05 | Futurewei Technologies, Inc. | Content Router Forwarding Plane Architecture |
US20130166576A1 (en) * | 2011-12-22 | 2013-06-27 | Sap Ag | Dynamic, hierarchical bloom filters for network routing |
US20130226972A1 (en) * | 2012-02-27 | 2013-08-29 | Ramakumar Kosuru | Methods and systems for processing data arrays using bloom filters |
Non-Patent Citations (1)
Title |
---|
JUEFAN_C: ""布隆过滤器的改进及其应用实践"", 《博客园》 * |
Also Published As
Publication number | Publication date |
---|---|
WO2017044867A9 (en) | 2017-07-06 |
CA2997922C (en) | 2022-10-11 |
JP2018526737A (ja) | 2018-09-13 |
CN108027826B (zh) | 2022-05-17 |
CA2997922A1 (en) | 2017-03-16 |
EP3347831A1 (en) | 2018-07-18 |
EP3347831B1 (en) | 2021-08-11 |
JP6646847B2 (ja) | 2020-02-14 |
WO2017044867A1 (en) | 2017-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11128465B2 (en) | Zero-knowledge identity verification in a distributed computing system | |
US11082226B2 (en) | Zero-knowledge identity verification in a distributed computing system | |
CN106708921A (zh) | 对加密数据的多对数范围查询 | |
Djenouri et al. | Intelligent blockchain management for distributed knowledge graphs in IoT 5G environments | |
CN102741845A (zh) | Url信誉*** | |
WO2021202094A1 (en) | Method and system for a data custodian implemented as an entity-centric, resource-oriented database within a shared cloud platform | |
Xiangyang et al. | MUSE: an efficient and accurate verifiable privacy‐preserving multikeyword text search over encrypted cloud data | |
US20210124732A1 (en) | Blockchain based distributed file systems | |
Kvet et al. | Concept of temporal data retrieval: Undefined value management | |
CN108027826A (zh) | 元素从概率数据结构的删除 | |
JP2008501175A (ja) | プロテクトされた構造化されたデータのクエリ方法及び装置 | |
CN106960158A (zh) | 一种防止博客被网络爬虫检索的方法和装置 | |
Singh et al. | Privacy-preserving multi-keyword hybrid search over encrypted data in cloud | |
Sun et al. | Location privacy protection research based on querying anonymous region construction for smart campus | |
Raghavendra et al. | Split keyword fuzzy and synonym search over encrypted cloud data | |
Burke et al. | K-anonymity for privacy preserving crime data publishing in resource constrained environments | |
CN103701844B (zh) | 管理用户信息的方法及*** | |
He et al. | FMSM: A fuzzy multi-keyword search scheme for encrypted cloud data based on multi-chain network | |
Sun et al. | On the identity anonymization of high‐dimensional rating data | |
Noble | Distributed Oblivious RAM: Progress and Pitfalls | |
Gharajeh | Security issues and privacy challenges of NoSQL databases | |
Halim | A Federated Learning Framework for Medical Data | |
CN116112264B (zh) | 一种基于区块链的策略隐藏大数据访问控制方法和装置 | |
Datta et al. | An efficient approach to perform multi-fuzzy keyword search over encrypted data in cloud computing | |
Alsheekhhussain et al. | Weighted Graph Irregularity Indices Defined on the Vertex Set of a Graph |
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 |