在分布式系统中存储和搜索带标签的内容项的方法

文档序号:6533021阅读:209来源:国知局
在分布式系统中存储和搜索带标签的内容项的方法
【专利摘要】一种在分布式数据交换系统用于存储带标签的内容项的方法,包括:A1.为与内容项相关的标签生成布隆1滤波器;A2.生成由布隆1滤波器的成员字与布隆1滤波器的成员字索引的并列组成的键,成员字表示布隆1过滤器的非空部分;A3.生成包括与所述内容项相关的所有标签的紧凑表示以及对所述内容项的存储位置的引用的值;和A4.添加由键和值组成的键值对到分布式哈希表,所述方法进一步包括针对检索带标签的内容项的以下步骤:B1.接收包含多个关键字的搜索查询;B2.选择关键字;B3.从分布式哈希表中检索具有以关键字作为相关标签的内容项的第一引用列表;以及B4.通过所有标签的所述紧凑表示过滤所述第一列表,以获得到包括以搜索的所有关键字作为相关标签的内容项的第二引用列表。
【专利说明】在分布式系统中存储和搜索带标签的内容项的方法

【技术领域】
[0001] 本发明一般地涉及在例如云计算系统、社会网络等的大型分布式数据交换系统中 存储和搜索带标签的内容项。在这样的系统中,大量的联网计算设备协作以提供用于存储 和检索用户标记或机器标记的内容项的基础设施,这样的内容项例如数据文件、图片、电 影、服务和/或其他资源。与内容项相关的标签表示可以被用户生成,或者可以例如通过照 片被上传到系统时的面部识别软件或诸如此类而被自动生成的元数据。典型地,数百万用 户同时通过多个关键字查询分布式环境中搜索内容项。因此,本发明一般的目的是提供一 种有效的、可扩展的计算机实现的方法和应用,用于在分布式数据交换系统存储内容项以 及对存储在这种系统中的内容项执行多关键字搜索。

【背景技术】
[0002] 在大规模分布式数据系统中存在用于多关键字搜索的各种机制。在一般情况下, 这些现有的机制或者是由于使用单点故障而不可靠,或者是由于通过过度节点访问和处理 资源的使用而效率低下,这将在下面解释。
[0003] 关系数据库是使内容可搜索的最常用方法。虽然这样的关系数据库使用各种技术 来避免成为比如对复制和备份的单点故障,他们基本上依赖于昂贵的、集中的基础设施。关 系型数据库基础架构通常受制于尺寸问题,即鉴于实际的或预期的系统负载的过度供应或 供应不足,或者受制于可靠性、可维护性和可升级性方面的问题,例如由于这样的关系型数 据库的集中性的而影响到服务。
[0004] 已经部署了可代替关系数据库、不再依赖于中央实体的对等系统。但是在这样的 对等系统中执行多关键字搜索仍然是一个复杂而高成本的操作,通常包括到索引的外部搜 索引擎并提供对内容项的访问。以下段落描述了如今在这样的对等系统中最常用的多关键 字搜索机制。
[0005] 非结构化搜索依赖于向分布式系统中的所有节点广播所述多关键字搜索查询。每 个接收搜索查询的节点返回存储在该节点中和具有所需的键作为相关标签的一组内容项。
[0006] 非结构化搜索以搜索查询淹没了分布式系统中的节点或服务器。在大规模分布式 系统中,每个节点需要处理数以百万计的搜索查询,即使搜索查询与该服务器不相关,这会 导致过载、响应时间慢和处理资源的低效率使用。
[0007] 在分布式哈希表或者DHT中,指向内容项的指针,即因内容本身的而不同的元数 据,例如URL、标签、大小、日期、作者等,存储在对应于与内容项相关的每个标签的地址上。 与内容项相关的每个标签被散列,以便获得DHT中相应的地址,其中指向内容项的指针将 被存储在DHT中。指向内容项的地址和指针表示键-值对。在基于DHT的系统中执行多关 键字搜索包括散列形成搜索查询的一部分的关键字、在对应于散列键的地址上访问DHT、利 用存储在这些地址中的指针来检索关于含有至少一个所需关键字的内容的元数据、并在合 并操作中过滤不包含所有所需的关键字的内容项。
[0008] DHT的缺点在于多关键词查询的每个关键字需要被散列,以及元数据(即内容的 标签、到内容的指针等)必须从分布式系统中的节点针对每个关键字进行检索,从而导致 低效的网络使用率、重复的结果、非相关指针等,另外,必须执行相当复杂和计算密集型的 合并操作。
[0009] 布隆过滤器是位阵列,可以用于检测多关键字搜索查询的多个或所有关键字是否 在与内容项相关的标签中出现。与内容项相关的每个标签经过若干哈希函数的被映射到位 阵列的特定位置。位排列在这些位置被设置为"1",而在阵列中的其它位保持为"0"。为了 执行多关键字搜索,在搜索查询中的每个关键字被散列以生成搜索查询布隆过滤器。该布 隆过滤器与针对所有内容项而生成的布隆过滤器相比较,以便在搜索查询布隆过滤器中选 择至少具有位设置" 1"的内容项。
[0010] 基于布隆过滤器的搜索没有生成假阴性,但由于在不同的标签/关键字的上的哈 希函数生成的位阵列位置的重叠,假阳性搜索结果是有可能的。假阳性的数量随着与内容 项相关的标签数量而增加,并且随着多关键字搜索查询的关键字数量而增加。其结果是,例 如的标签精确字符串匹配的额外机制可能会被采用以在额外步骤中除去假阳性中。
[0011] 文献中已经提出了上述机制的若干组合。对于大规模分布式数据交换系统 的多关键字搜索,作者为Xing Jin、W.-P. Ken Yiu和S.-H Gary Chan,出版于IEEE ICC 2006Proceedings 的文章 "Supporting Multiple-Keyword Search in a Hybrid Structured Peer-to-Peer Network"描述了基于布隆过滤器的Mkey方案。当大量标签与 内容项相关时,例如每个内容项超过30个标签,Mkey方案在存储的数据指针和搜索的地址 中提供了好处。对于大多数数据共享的应用程序,这样大量的标签关联是不同寻常的。
[0012] 因此,本发明的目的是公开一种计算机实现的方法和应用,用于在分布式数据交 换系统中存储带标签的内容项,以及用于在解决了现有机制的上述缺陷的系统中执行多关 键字搜索。更具体地讲,本发明的目的在于公开一种用于存储/检索带标签的内容项的方 法及应用,以有效的方式保持可扩展性、达到同时数百万个多个关键字搜索的产品规模,即 具有内容标签关联的紧凑表示,到分布式存储器的访问减少,并且假阳性的出现下降。


【发明内容】

[0013] 根据本发明,通过权利要求1所限定的用于在分布式数据交换系统中存储和检索 带标签的内容项来实现上述定义的目标,
[0014] 针对带标签的内容项的存储以及针对与所述内容项相关的每个标签,所述方法包 括以下步骤:
[0015] A1.为标签生成布隆1过滤器;
[0016] A2.生成键,所述键由所述布隆1过滤器的成员字与所述布隆1过滤器的成员字索 引的并列组成,所述成员字表示所述布隆1过滤器的非空部分;
[0017] A3.生成值,所述值包括与所述内容项相关的所有标签的紧凑表示以及对所述内 容项的存储位置的引用;和
[0018] A4.添加键值对到分布式哈希表,所述键值对由所述键和所述值组成,
[0019] 所述方法进一步包括针对检索带标签的内容项的以下步骤:
[0020] B1.接收包含多个关键字的搜索查询;
[0021] B2.从所述多个关键字中选择出关键字;
[0022] B3.从所述分布式哈希表中检索具有以所述关键字作为相关标签的内容项的第一 引用列表;以及
[0023] B4.通过所有标签的所述紧凑表示过滤所述第一列表,以获得到包括以所述搜索 的所有关键字作为相关标签的内容项的第二引用列表。
[0024] 为了保持数千同时存在的用户和数百万带标签的内容项,分布式哈希表被用作分 布式系统的结构化覆盖。在与内容项相关的每个标签上计算的布隆过滤器1的非空部分, 即布隆过滤器1的成员字(membership word),与布隆过滤器1会员字索引一起,被用作分 布式哈希表中的键,用于存储指向数据对象的指针。因此,本发明结合了两者的优点,即,分 布式哈希表的可扩展性以及由布隆过滤器提供的标签内容项关联的紧凑表示。存储的内容 项的指针的拷贝数,即到存储位置的引用,与关联到内容项的标签数量呈线性增长。对象指 针的长度也与相关的标签的数目成线性比例。在分布式环境中的多关键字搜索是通过单个 键的查询执行的,因此只需要单一存取操作。要被处理的内容项记录的数量可以进一步通 过可选的优化技术来减少,这将在下面说明。布隆1过滤器的使用,即能够在通过它们的成 员字和成员字索引在存储器中紧凑表示的大布隆过滤器,显著减少了假阳性的发生。
[0025] 优选地,由如权利要求2所限定的,选择的关键字是从多个关键字中选出的最不 受欢迎关键字,即遍历所有内容项具有最少出现次数的关键字。
[0026] 实际上,通过选择最不受欢迎或不常用的关键字时,指针的第一列表被最小化,并 在同一时间,分布式系统必须被咨询的节点数也被最小化(只有一个)。为了能够选择最不 受欢迎的关键字,跟踪适当的标签受欢迎度的表或数据库可以被保持并且在每个多关键字 搜索时被查询。或者,可以使用基于词熵(word entropy)或长度的试探法。
[0027] 可选地,由权利要求3所限定,所述值还包括在布隆1过滤器中非空过滤器字的数 量;以及
[0028] 检索第一引用列表包括:
[0029] -计算所述多个关键字的所有关键字上的布隆1过滤器;以及
[0030] -只从所述分布式哈希表检索对这些项的引用,所述项包含等于或者大于所述布 隆1过滤器中的所述非空字的数量的字量。
[0031] 事实上,第二优化可以包括在搜索查询的所有关键字上计算布隆1过滤器并且限 制对包含等于或大于布隆1过滤器中非空字的数量的量的内容项的搜索。
[0032] 根据进一步可选的方面,如权利要求4所定义的,所述值还包括指示所述内容项 的所有权和/或访问控制的信息。
[0033] 因此,可选地,存储在分布式哈希表中的该值或信息可能包含所有权和访问控制 信息,所述访问控制信息能够控制指向内容项的指针是否被允许响应于搜索查询而被返 回,这取决于例如谁执行的搜索查询或从哪儿执行的搜索查询。
[0034] 除了由权利要求1所限定的方法之外,如权利要求5所述,本发明涉及一种在分布 式数据交换系统中用于存储和检索带标签的内容项的计算机执行的应用程序,所述应用程 序包括用于存储带标签的内容项的以下装置:
[0035] A1.用于为与所述内容项相关的所述标签生成布隆1过滤器的装置;
[0036] A2.用于生成键的装置,所述键由所述布隆1过滤器的成员字与所述布隆1滤波器 的成员字索引的并列组成,所述成员字表示所述布隆1过滤器的非空部分;
[0037] A3.用于生成值的装置,所述值包括与所述内容项相关的所有标签的紧凑表示以 及对所述内容项的存储位置的引用;和
[0038] A4.用于添加键值对到分布式哈希表的装置,所述键值对由所述键和所述值组成,
[0039] 所述应用程序进一步包括用于检索带标签的内容项的以下装置:
[0040] B1.用于接收包含多个关键字的搜索查询的接口;
[0041] B2.用于从所述多个关键字中选择出关键字的装置;
[0042] B3.用于从所述分布式哈希表中检索具有以所述关键字作为相关标签的内容项的 第一引用列表的装置;以及
[0043] B4.用于通过所有标签的所述紧凑表示过滤所述第一列表,以获得到包括以所述 搜索的所有关键字作为相关标签的内容项的第二引用列表的装置。

【专利附图】

【附图说明】
[0044] 图1示出了根据本发明的用于存储和搜索带标签的内容项的方法的第一实施例;
[0045] 图2示出在降低假阳性率方面,本发明改进的性能;以及
[0046] 图3示出在待处理返回对象记录的平均量方面,本发明的改进的效率。

【具体实施方式】
[0047] 在图1所示的第一实施例中,多关键字搜索功能由分布式系统提供,并作为社交 网络和文件共享应用程序的用户之间的数据交换的基础。用户或用户激活的软件组件可以 用适当的接口或呈现装置向系统提交多关键词查询并接收作为响应的匹配数据项列表,所 述适当的接口或呈现允许访问、下载、或以其它方式对一个或多个所检索的数据项进行操 作。
[0048] 在图1中,第一实施例是由对等体实施来代表。图1中绘制的数据交换网络采用 大量的具有与网络109(如IP网络)的连通性110的最终用户PC100的形式,每个都运行 包括以下子集的软件应用101 :
[0049] -对等体发现模块102,发现对等体,以便检测其他哪些节点存在于网络上,所述 对等体即运行在其他用户PC上的软件应用101的其他实例;
[0050] -网络加入模块103,作为对等体加入到数据交换网,以使参与其中和在网络上发 布呈现?目息;
[0051] -数据发现模块104,发现终端用户的本地网络的数据,包括但不限于运行软件 应用程序上的PC机;换句话说,这是一个使自己的内容或数据为他人可用的可选履带 (crawler);
[0052] -元数据发布模块105,在数据交换网络发布与发现的自己的内容项有关的元数 据,包括但不限于描述该项的项目名称、关键字/标签、指向发现的项目或提供到该项目的 访问的指针、访问限制、以及布隆过滤器1,总结了一套与该项目相关的关键字;
[0053] -元数据存储模块106,在数据交换网络中存储关于可用项目的子集的元数据;
[0054] -搜索引擎107,用于在数据交换网络中基于多关键字搜索查询和基于根据以下 描述的本发明的方法搜索内容项;
[0055] -用户接口 108,使得用户能够输入多关键字搜索查询的关键字/标签来搜索数据 交换网络中的数据项。
[0056] 对于每一个要被存储数据对象或项目,对象记录在对应于所述相关的标签的键的 每一个上被保存在分布式哈希表(DHT)中。这样的对象记录包括:
[0057] -项的标签的紧凑表示,其在于完整的标签集上计算的布隆1过滤器的非空部分, 表示为形式〈索引;字〉的一组元组;
[0058] -满的布隆1过滤器中的非空布隆1过滤器字的数量;
[0059] -项目的URL或统一资源标识符;
[0060] -最终对象所有权和访问控制信息;和
[0061] -最终的额外元数据。
[0062] 有兴趣寻找与某话题相关的一个或多个项目的用户,在接口 108输入一个或多个 关键字,虽然在例子中假设用户生成一个查询,应该注意到,多个查询可以由例如计算机程 序、感知的日期等的其他源生成。基于这些关键字来计算布隆1过滤器,布隆1过滤器用于 发现数据交换网络中知道哪些数据项匹配所有输入的关键字的节点。匹配的项的列表-可 能是部分的-被呈现给用户。
[0063] 搜索这些项包括以下操作:
[0064] -在发出查询的那些中选择单个标签和通过查阅分布式哈希表检索与其相关的对 象指针的列表;和
[0065]-过滤检索的指针来获取指向那些含有至少所有查询中的标签的指针;过滤是通 过存储在DHT中的项目的标签的紧凑表不完成。
[0066] 上面搜索方法的第一操作,可以通过优化适当选择单个标签/关键字以在形成了 发出查询的一部分的所有关键字中查找。合适的标签是包含查询所包含的最不频繁使用的 字。为了选择好的键,跟踪全局标签的受欢迎程度的表格,可以被保持,即使是近似的,以在 搜索时进行查询。或者可以使用基于字信息熵和/或长度的简单试探法。
[0067] 在上面的搜索方法的第二操作,可以通过在所有查询标签上计算布隆1过滤器并 限制对对象指针的检索来进行优化,其中所说的对象指针包含等于或大于布隆1过滤器的 非空查询字的数量。
[0068] 值得注意,第一实施例中也可以用替代方式实现。特别地,一些实施可能涉及运行 软件应用程序的一部分并可能拥有或控制部署软件的硬件的服务提供商的出现。不考虑部 署方法,本领域技术人员将认识到,这种实现仅代表同一第一实施例的某种不同形式,因为 它使用上述的相同目的中描述的相同功能,但具有构成分布式计算系统的网络硬件上的软 件应用的模块102到108 (或其子集)的不同的重新划分。
[0069] 在第二实施例中,云计算基础设施的机器发布有关其资源的信息,如核心数、当前 (PU负载、可用带宽、在其上运行的服务的数量、物理位置、可用内存等。发布的信息在分布 式多关键字搜索引擎中被索引。网络配置工具可以询问分布式搜索引擎在云计算基础设施 中发现与负载、带宽、内存、位置等需求数量精确匹配的那些机器。
[0070] 第二实施例也可以用任何一个充分分散的对等系统的形式实现,云计算基础设施 的各个机器都运行与第一实施例中的软件应用程序101基本类似的软件应用程序。可选 地,第二实施例可以实现为分布式系统,其中只有可用的硬件的子集是专门用于支持根据 本发明的搜索引擎特性,其他节点充当向系统发布最新信息的简单客户端。
[0071] 图2示出一个表格,其中根据本发明的方法的假阳性率与现有技术中已知的基于 Mkey的方案进行比较。对于相同的键空间的大小,即128个字节的前缀长度,对于η = 100 标签,假阳性率pF从基于Mkey实施方式的62, 47%下降到本发明的基于布隆1过滤器或 B1F 方法的 1. 875310-%。
[0072] 图3显示了列出使用基于布隆1或B1过滤器的根据本发明的方法相对于基于 Mkey的实施方式,每10. 000随机成功的多关键字搜索返回的对象指针的平均数。"更智能" 的版本实现了基于标签受欢迎度的标签选择优化,如上所述。由于标签受欢迎度信息的损 失(标签被编码在布隆过滤器中),这样的优化在基于Mkey的实施中是不可用的。表中通 过举例示出了要检索和处理的对象记录的数量从基于Mkey实施方式的570个记录下降到 根据本发明的基于布隆1或B1过滤器的33。
[0073] 虽然本发明已经参考具体实施例作了描述,但对于本领域技术人员来说显而易见 的,本发明不限于前述说明性实施例的细节,并且本发明可以在不脱离其范围的情况下用 各种变化和改进实施。因此,本实施例在所有方面都是说明性的,而不是限制性的,本发明 的范围由所附的权利要求书而不是由前面的描述限定,因此权利要求的等同范围内的含义 和范围内的所有改变都旨在被包含在其中。换言之,可以预期覆盖落入本专利申请的基本 原理的范围内任何和所有修改、变化或等同物,并且其本质属性都在本专利申请者要求保 护以及。此外,本专利申请的读者应当理解,用词"包括"或"包含括"不排除其他元件或步 骤,词语"一"或"一个"不排除多个,并且单个元件,例如计算机系统,处理器或另一个集成 单元可以实现权利要求中所述的几个装置的功能。在权利要求中的任何附图标记不应当被 解释为限制有关的权利要求。当在说明书或权利要求中使用时引入的术语"第一"、"第二"、 "第三"、"八"、"8"、"(:"等,在类似的元件或步骤之间进行区分使用,不一定描述顺序或时间 顺序。类似地,术语"顶部"、"底部"、"之上"、"之下"等等被引入用于描述的目的并且不一 定表示相对的位置。可以理解的是,这样使用的术语在适当情况下是可互换的,并且本发明 的实施例能够根据本发明以与上述实施例中不同的其他顺序、或方向上进行操作。
【权利要求】
1. 一种在分布式数据交换系统用于存储和检索带标签的内容项的方法,针对带标签的 内容项的存储以及针对与所述内容项相关的每个标签,所述方法包括以下步骤: A1.为与所述内容项相关的所述标签生成布隆1滤波器; A2.生成键,所述键由所述布隆1滤波器的成员字与所述布隆1滤波器的成员字索引的 并列组成,所述成员字表示所述布隆1过滤器的非空部分; A3.生成值,所述值包括与所述内容项相关的所有标签的紧凑表示以及对所述内容项 的存储位置的引用;和 A4.添加键值对到分布式哈希表,所述键值对由所述键和所述值组成, 所述方法进一步包括针对检索带标签的内容项的以下步骤: B1.接收包含多个关键字的搜索查询; B2.从所述多个关键字中选择出关键字; B3.从所述分布式哈希表中检索具有以所述关键字作为相关标签的内容项的第一引用 列表;以及 B4.通过所有标签的所述紧凑表示过滤所述第一列表,以获得到包括以所述搜索的所 有关键字作为相关标签的内容项的第二引用列表。
2. 根据权利要求1所述的方法,其中选择的所述关键字是从所述多个关键字中选出的 最不受:欢迎关键字。
3. 根据权利要求1所述的方法,其中,所述值还包括在所述布隆1过滤器中非空滤波器 字的数量;以及 检索第一引用列表包括: -计算所述多个关键字的所有关键字上的布隆1过滤器;和 -只从所述分布式哈希表检索到这些项的引用,所述项包含等于或者大于所述布隆1 过滤器中的所述非空字的数量的字量。
4. 根据权利要求1所述的方法,其中,所述值还包括指示所述内容项的所有权和/或访 问控制的信息。
5. -种在分布式数据交换系统中用于存储和检索带标签的内容项的计算机执行的应 用程序,所述应用程序包括用于存储带标签的内容项的以下装置: A1.用于为与所述内容项相关的所述标签生成布隆1滤波器的装置; A2.用于生成键的装置,所述键由所述布隆1滤波器的成员字与所述布隆1滤波器的成 员字索引的并列组成键,所述成员字表示所述布隆1过滤器的非空部分; A3.用于生成值的装置,所述值包括与所述内容项相关的所有标签的紧凑表示以及对 所述内容项的存储位置的引用;和 A4.用于添加键值对到分布式哈希表的装置,所述键值对由所述键和所述值组成, 所述应用程序进一步包括用于检索带标签的内容项的以下装置: B1.用于接收包含多个关键字的搜索查询的接口; B2.用于从所述多个关键字中选择出关键字的装置; B3.用于从所述分布式哈希表中检索具有以所述关键字作为相关标签的内容项的第一 引用列表的装置;以及 B4.用于通过所有标签的所述紧凑表示过滤所述第一列表,以获得到包括以所述搜索
【文档编号】G06F17/30GK104115146SQ201380008653
【公开日】2014年10月22日 申请日期:2013年2月11日 优先权日:2012年2月14日
【发明者】B·西坦恩, F·皮安尼斯 申请人:阿尔卡特朗讯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1