首页> 中国专利> 图形数据的复合语句索引

图形数据的复合语句索引

摘要

一种用于图形数据的索引系统。在具体实施方式中,该索引系统提供了非规范化和副本索引功能,以改善查询性能。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-02-08

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F17/30 专利号:ZL2011800670099 变更事项:专利权人 变更前:脸谱公司 变更后:元平台公司 变更事项:地址 变更前:美国加利福尼亚 变更后:美国加利福尼亚

    专利权人的姓名或者名称、地址的变更

  • 2017-05-03

    授权

    授权

  • 2014-01-08

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20111130

    实质审查的生效

  • 2013-10-09

    公开

    公开

说明书

技术领域

本公开总体上涉及数据库,并且更具体地,涉及用于图形数据结构的 数据索引系统。

背景技术

通过包括专有网络以及诸如因特网的公共网络的各种局域和广域计 算机网络,计算机用户能够访问并共享大量信息。通常,用户的计算装置 上安装的网络应用便于访问位于由相关统一资源定位符(URL)标识的各 网络服务器的信息并与之互动。使得能够共享用户生成的内容的传统方法 包括各种信息共享技术或诸如社交网络网站的平台。这种网站可以包括、 链接到、或提供使得用户能够查看由其他用户创建或定制的网页的应用的 平台,其中,其他用户对于这种页面的可视性以及互动由某些规则组的特 性来支配。

这种社交网络信息,并且一般地大部分信息,通常存储在关系数据库 中。总体上,关系数据库是关系的集合(通常称为表)。关系数据库使用 一组数学语句,这些语句可以使用结构化查询语言(SQL)数据库术语。 例如,关系可以定义为具有相同属性的一组元组。元组通常表示对象以及 关于该对象的信息。关系通常被描述为以行和列来组织的表。总体上,属 性所引用的所有数据在同一域中并且遵循相同的约束。

关系模型规定关系的元组没有具体顺序,并且元组也不对属性施加顺 序。应用通过指定查询来访问数据,该查询使用操作来识别元组、识别属 性、以及组合关系。关系可以修改,并且新的元组可以提供明确的值或从 查询衍生。类似地,查询识别可能的元组从而更新或删除。关系的每个元 组都需要可通过其属性值的一些组合(一个或多个)来唯一地识别。该组 合称为主键。在关系数据库中,经由关系来存储和访问所有数据。存储数 据的关系通常用表实现或称为表。

诸如在关系数据库管理系统中实现的关系数据库已经成为例如财务 记录、制造及物流信息、个人数据、以及其他应用的数据库中的信息存储 的主要选择。随着计算机能力的增大,关系数据库对传统应用的易用性已 经超过了使得关系数据库在较早时期不实用的关系数据库的效率低下。三 个主导性的开源实施方式是MySQL、PostgreSQL和SQLite。MySQL是 关系数据库管理系统(RDBMS),其作为为多个数据库提供多用户接入的 服务器运行。流行的LAMP软件栈的缩写中的“M”是指MySQL。其用 于网络应用的受欢迎程度与PHP(LAMP中的“P”)的受欢迎程度密切相 关。很多高流量网站将MySQL用于数据存储和用户数据记录。

数据库索引是提高数据库表的数据检索操作速度的数据结构。可以使 用数据库表的一个或多个列来创建数据库索引,这提供了快速随机查找和 有序记录的有效访问。存储索引所需的磁盘空间通常小于表所需的磁盘空 间(这是因为索引通常只含有据以布置表的关键域,并且排除了表中的所 有其他细节),产生了在存储器中存储表(该表的数据太大而不能存储在 存储器中)的索引的可能性。可以使用各种数据结构来实现索引。流行的 索引包括平衡树、B+树、和哈希。

图形是一组对象的抽象表示,其中对象的至少一些对通过链接连接。 互连的对象通常称为节点,而连接节点的链接称为边。然而,图形结构中 的模型数据对可扩展性和性能提出了挑战。需要遍历图形结构的查询可能 需要许多数据库查找表。高度可扩展的系统通常依赖于缓存和索引,以改 善查询响应时间和总体性能。

发明内容

本发明提供了针对图形数据的索引系统的方法、设备、和系统。在特 定实施方式中,索引系统提供了非规范化和副本索引功能以改善查询性 能。以下在详细说明书中结合附图更详细地描述了本公开的这些及其他特 征、方面和优点。

附图说明

图1示出了根据本发明一个实施方式的示例性索引系统架构。

图2示出了示例性计算机系统架构。

图3提供了示例性网络环境。

图4示出了说明用于向图形和复合索引添加新对象的示例性方法的流 程图。

具体实施方式

现在参照附图中示出的几个实施方式来详细描述本发明。在以下的说 明书中,给出了许多具体细节,以提供对本公开的透彻理解。然而,对于 本领域中的技术人员来说,显然在没有这些具体细节中的一些或全部的情 况下,也可以实践本公开。在其他情况下,为了避免不必要地模糊本公开, 没有详细描述公知的处理步骤和/或结构。另外,虽然结合特定实施方式描 述了本公开,但是应当理解,说明书无意将本公开限制到所描述的实施方 式。相反,说明书旨在涵盖可能包括在由所附权利要求定义的本公开的实 质和范围内的替换、修改、和等同物。

在特定实施方式中,本发明针对为数据对象和数据对象之间的关联提 供灵活搜索能力的数据库索引基础。特定实施方式涉及用于存储和提供被 建模为图形的信息的索引系统,该图形包括节点和边,边定义了该边在图 形中连接的节点之间的关联或关系。在特定实施方式中,图形是或包括社 交图形,并且索引系统是使得集成社交网络环境可行的更大网络系统、基 础、或平台的一部分。在本公开中,可以在包括社交图形信息的社交图形 的方面来描述社交网络环境。实际上,本公开的特定实施方式依赖于、利 用、或使用由/为社交网络环境存储的大部分或所有数据可以表示为社交图 形这一事实。特定实施方式提供了一种符合成本效益的基础,就像本文中 描述的那样,其能够有效地、智能地、以及成功地随着社交网络环境的用 户数量的指数增加而扩展。

在特定实施方式中,文中描述的分布式索引系统和后端基础提供了以 下的一个或多个:扩展的低延迟、每个请求的更低成本、开发者更容易使 用的框架、使涉及本文中通过示例描述的社交图形的关联(边)和对象(节 点)的组合查询可行的基础、为存储的对象和关联提供灵活和明确的查询 模式的基础以及容易从PHP直接调用的基础。另外,如本文中所使用的, “或”可以意味着“和”以及“或”,即,除非明确说明或暗指,否则“或” 并不必然排除“和”。

特定实施方式可以在包括多个网络可寻址系统的诸如因特网的广域 网环境中运行。图3示出了示例性网络环境,其中,可以运行各种示例性 实施方式。网络云60总体上表示本文中描述的系统和主机可以在上面通 信的一个或多个互连网络。网络云60可以包括基于包的广域网(诸如因 特网)、私有网络、无线网络、卫星网络、蜂窝网络、寻呼网络等。如图3 所示,特定实施方式可以在包括社交网络系统20以及一个或多个客户装 置30的网络环境中运行。客户装置30经由网络服务提供者、无线运营商、 或其他合适的装置可操作地连接至网络环境。

在一个示例性实施方式中,如本文中描述的,社交网络系统20包括 允许用户彼此通信或互连并访问诸如用户档案的内容的计算系统。在各示 例性实施方式中,社交网络系统20是包括一个或多个物理服务器22和数 据存储库24的网络寻址系统。一个或多个物理服务器22例如经由一组路 由器和/或网络交换机26可操作地连接至计算机网络60。在示例性实施方 式中,一个或多个物理服务器22承载的功能可以包括网络或HTTP服务 器、FTP服务器、以及但不限于使用通用网关接口(CGI)脚本、PHP超 文本预处理器(PHP)、有源服务器页面(ASP)、超文本标记语言(HTML)、 可扩展标记语言(XML)、Java、JavaScript、Asynchronous JavaScript以及 XML(AJAX)等实现的网页和应用。

物理服务器22可以承载(host)针对社交网络系统20的操作的功能。 例如,社交网络系统20可以承载允许一个或多个用户在一个或多个客户 装置30处查看和发布信息并且经由网站彼此通信的网站。在下文中,多 个服务器22可以称为服务器22,虽然服务器22可以包括承载例如社交网 络系统20的多个服务器以及其他内容分布服务器、数据存储和数据库。 数据存储库24可以将与社交网络系统的操作相关并使该操作可行的内容 和数据存储为数字数据对象。在特定实施方式中,数据对象是通常存储或 嵌入在数据文件、数据库、或记录中的数字信息的项。内容对象可以有多 种形式,包括:文本(例如,ASCII、SGML、HTML)、图像(例如,jpeg、 tif、和gif)、图形(基于矢量的或位图)、音频、视频(例如,mpeg)、或 其他多媒体、及其组合。内容对象数据还可以包括可执行代码对象(例如, 可在浏览器窗口或帧中执行的游戏)、播客等。逻辑上,数据存储库24对 应于诸如关系数据库和面向对象的数据库的各种分开和集成的数据库中 的一个或多个,这些数据库将信息作为在一个或多个物理系统上存储的逻 辑相关记录或文件的集成的集合来维持。结构上,数据存储库24总体上 可以包括一大类的数据存储和管理系统中的一个或多个。在特定实施方式 中,数据存储库24可以通过任意适当物理系统来实现,该物理系统包括 诸如一个或多个数据库服务器的部件、大容量存储介质、媒体库系统、存 储区域网络、数据存储云等。在一个示例性实施方式中,数据存储库24 包括一个或多个服务器、数据库(例如,MySQL)、和/或数据仓库。

数据存储库24可以包括与不同社交网络系统20用户和/或客户装置 30相关联的数据。在特定实施方式中,社交网络系统20维持系统20的每 个用户的用户档案。用户档案包括描述社交网络的用户的数据,例如,其 可以包括:适当的名称(人的姓、中间名、和名、商业实体的商标名和/ 或公司名等)、履历、人口结构、和其他类型的描述性信息,诸如工作经 历、教育背景、爱好或偏好、地理位置、以及额外的描述性数据。例如, 用户档案可以包括用户的生日、婚姻状况、居住城市等。系统20可以进 一步存储描述不同用户之间的一个或多个关系的数据。该关系信息可以指 示具有类似或共同的工作经历、组成员身份、爱好、或教育背景的用户。 用户档案还可以包括管理其他用户对该用户的信息的访问的隐私设置。

客户装置30一般是包括用于在计算机网络上进行通信(例如,远程 地)的功能的计算机或计算装置。除其他适当的计算装置外,客户装置30 还可以是台式计算机、膝上型计算机、平板电脑、个人数字助理(PDA)、 车内或车外导航系统、蜂窝电话或其他智能或移动电话、或移动游戏装置。 客户装置30可以执行诸如网络应用(例如,Microsoft Windows Internet  Explorer、Mozilla Firefox、Apple Safari、Google Chrome、以及Opera等) 的一个或多个客户应用,从而在计算机网络上访问和查看内容。在特定实 施方式中,客户应用允许客户装置30的用户输入待检索的具体网络资源 (诸如由社交网络系统20承载的资源)的地址。这些地址可以是统一资 源定位符或URL。另外,一旦已经检索了页面或其他资源,当用户“点击” 到其他资源的超链接时,客户应用可以提供对其他页面或记录的访问。例 如,这种超链接可以位于网页内部,并为用户提供输入另一页面的URL 并检索该页面的自动化方法。

图1示出了能够实现图3中示出的社交网络系统20的后端功能的网 络系统、架构、或基础100(下文中,称为网络系统100)的示例性实施 方式。在特定实施方式中,网络系统100使得网络系统100的用户能够经 由网络系统100提供的社交网络服务彼此互动以及与第三方互动。例如, 在远程用户计算装置(例如,个人计算机、上网本、多媒体装置、蜂窝电 话(尤其是智能电话)等)处的用户可以经由网络应用或其他用户客户应 用访问网络系统100,以访问至少部分地由网络系统100承载或至少部分 地可由网络系统100访问的网站、网页、或网络应用以查看信息、存储或 更新信息、通信信息、或另外地与由网络系统100存储、承载、或可访问 的其他用户、第三方网站、网页、或网络应用、或其他信息互动。在特定 实施方式中,如在下文中更详细地描述的,网络系统100维持包括表示用 户、概念、主题、和其他信息(数据)的图形节点以及连接或定义图形节 点之间的关系的图形边的图形。

参照图1,在特定实施方式中,网络系统100包括向/从网络系统100 的用户通信信息的多个客户或网络服务器104(下文中,称为客户服务器 104)。例如,经由网络和服务提供者的任意适当组合,远程用户计算装置 的用户可以经由负载平衡器或其他适当系统与客户服务器104通信。客户 服务器104可以查询本文中描述的索引和数据库系统以检索数据,以生成 用于响应用户请求的结构化文档。网络系统100还可以包括:索引层,包 括一个或多个索引服务器106;缓存层108,包括一个或多个缓存服务器; 以及数据库层,包括一个或多个数据库服务器以及相关数据库管理功能 110。数据库110总体上意味着其本身可以包括用于处理其他查询类型的 其他缓存层的数据库系统。

客户服务器104中的每个都与缓存层108通信。缓存层108可以实现 为一个或多个分布式缓存集群或环。在一个实施方式中,缓存层108是写 通过/读通过(write-thru/read-thru)缓存层,其中所有的读取和写入都通过 缓存层。在一个实施方式中,缓存层维持相关信息,并且因此可以处理该 信息的查询。其他查询被传送到数据库110用于执行。在特定实施方式中, 数据库110是关系数据库。数据库110可以实施为MySQL和/或任何适当 的关系数据库管理系统,诸如例如HAYSTACK、CASSANDRA及其他。 在特定实施方式中,缓存层108可以包括插件,该插件被操作为与数据库 110的任何适当实现进行互操作。在一个实施方式中,插件执行各种翻译 操作,诸如将在缓存层中存储为图形节点和边的数据翻译成适于包括一个 或多个表或平面文件的关系数据库的查询和命令。

在特定实施方式中,由网络系统100存储的信息存储在数据库110和 缓存层108中。在特定实施方式中,每个数据库110中存储的信息被关系 地(例如,经由MySQL作为对象和表)存储,而由缓存层以图形形式存 储的相同信息包括图形节点以及节点之间的关联或连接(文本中称为图形 边)。

在特定实施方式中,每个图形节点或对象都被分配唯一地标识图形中 的图形节点的唯一标识符(ID)(下文中,称为节点ID);即,每个节点 ID是全局唯一的。在一个实施方式中,每个节点ID都是64比特标识符。 在一个实施方式中,碎片被分配给节点ID空间的段。

在特定实施方式中,图形可以维持各种不同节点类型,诸如将会对表 示为节点有用的用户、页面、事件、涂鸦墙(wall post)、评论、照片、视 频、背景信息、概念、兴趣以及任何其他元素。边类型对应于节点之间的 关联,并且可以包括朋友、追随者、用户、爱好者、喜好(或兴趣的其他 表示)、涂鸦墙、评论、链接、建议、推荐、以及节点之间的其他类型的 关联。在一个实施方式中,图形的一部分可以是包括用户节点的社交图形, 每个用户节点都与社交网络环境的相应用户对应。社交图形还可以包括其 他节点,诸如各自都专用于或针对特定概念的概念节点,以及可能短暂或 可能不短暂的各自都专用于或针对社交网络环境用户的当前兴趣的特定 主题的主题节点。在特定实施方式中,每个节点都具有、表示在社交网络 环境中承载或可访问的对应网页(“档案页面”),或由该对应网页表示。 例如,用户节点可以具有对应用户档案页面,在该页面中对应用户可以添 加内容,作出声明,或另外地表达他或她自己。例如,如将在下文中描述 的,在社交网络环境中承载或可访问的各种网页(例如,用户档案页面、 概念档案页面、或主题档案页面)使得用户能够发布内容、发布状态更新、 发布消息、发布评论(包括对由该用户或其他用户提交的其他发布的评 论)、声明兴趣、声明对任意前述发布(post,帖子)以及页面和具体内容 的“喜爱”(在下文中描述)、或另外地表达自我或执行各种动作(下文中, 这些和其他用户动作可以统称为“发布”或“用户动作”)。在一些实施方 式中,发布可以包括经由其相应的档案页面、其他用户档案页面、概念档 案页面、主题页面、或其他网页或网络应用链接到或另外地引用额外内容, 诸如媒体内容(例如,照片、视频、音乐、文本等)、唯一资源定位符(URL)、 以及其他节点。这种发布、声明、或动作对于认证用户和其他用户可见。 在特定实施方式中,社交图形进一步包括多个边,每个边都定义或表示社 交图形中的一对对应节点之间的连接。如上所述,内容的每个项都可以是 链接到其他节点的图形中的节点。

如上所述,在各示例性实施方式中,所描述的一个或多个网页或网络 应用与社交网络环境或社交网络服务相关。如本文中所使用的,“用户” 可以是通过这种社交网络环境互动或通信的个人(真人用户)、实体(例 如,企业、商业、或第三方应用)、或组(例如,个人或实体)。如文本中 所使用的,“注册用户”是指在社交网络环境中正式注册的用户(总体上, 文本中描述的用户和用户节点仅指注册用户,虽然这在其他实施方式中并 不一定被要求;即,在其他实施方式中,本文中描述的用户和用户节点可 以指还没有在本文中描述的社交网络环境中注册的用户)。在特定实施方 式中,每个用户都具有对应的“档案”页面,该页面由社交网络环境存储、 承载、或可由社交网络环境访问,并且对其他用户的中全部或所选择的子 集可见。总体上,用户对他或她自己的相应档案页面具有管理权,并且潜 在地对由或为特定用户创建的其他页面(例如,主页、页面托管网络应用、 即其他可能性)具有管理权。如本文中所使用的,“认证用户”是指已经 被社交网络环境认证为在该用户具有管理权的对应档案页面中主张的用 户、或所主张的用户的适当的可信代表的用户。

两个用户或概念之间的连接可以表示社交网络环境的用户或概念之 间的定义关系,并且可以在社交网络环境的适当数据结构中逻辑地定义为 对应于用户、概念、事件的节点或已经作出关联的社交网络环境的其他节 点之间的边。如本文中所使用的,“友谊”表示社交网络环境的一对用户 之间的关联,诸如定义的社交关系。如本文中所使用的,“朋友”可以指 已经与另一用户形成连接、友谊、关联、或关系使得将在这两个用户之间 生成边的社交网络环境的任意用户。例如,两个用户之一通过向可以接受 或拒绝请求的另一用户传输友谊请求或使该友谊请求得以传输来选择与 该另一用户建立友谊,从而两个注册用户可以彼此明确地成为朋友。可选 地,可以自动建立友谊关系或其他连接。这种社交友谊关系对其他用户可 见,特别是对于本身与注册用户中的一个或两个是朋友的用户可见。注册 用户的朋友对注册用户的档案或其他页面上的内容,特别是用户生成或声 明的内容,具有增大的访问特权。然而,应注意,在社交图形中建立了它 们之间的朋友连接的两个用户在现实生活中(在社交网络环境之外)不一 定是朋友(在传统意义上)。例如,在一些实现方式中,用户可以是商业 或其他非真人实体,并且因此,在该词的传统意义上,其不能与真人用户 成为朋友。

如本文中所使用的,“爱好者”可以指作为可在社交网络环境中访问 的特定用户、网页、网络应用、或其他网络内容的支持者或追随者的用户。 在特定实施方式中,当用户是特定网页的爱好者时(“爱好”特定网页), 该用户可以作为爱好者而在该页面上列出,以便其他注册用户或一般公众 查看。另外,该用户的头像或档案图片可以显示在页面上(或在以下描述 的任意页面中/上)。如本文中所使用的,“喜欢”可以指某物,诸如(例如 但不限于)用户,并且特别是注册或认证用户已经声明或表明他或她喜欢、 是其爱好者、支持、欣赏、或有正面看法的发布、评论、兴趣、链接、媒 体(例如,照片、相册、视频、歌曲等)、概念、实体、页面及其他可能 性(在一些实现方式中,用户可以表示或声明对由社交网络系统或环境承 载或可由社交网络系统或环境访问的任意页面上的几乎任何事物的喜 欢)。在一个实施方式中,表示或声明“喜欢”或表示或声明该用户是某 物的“爱好者”在社交网络环境中可以被等效地处理和定义,并且可以互 换地使用;类似地,声明自己是诸如概念或概念档案页面的某物的“爱好 者”,或声明自己“喜欢”该事物,可以在社交网络环境中等效地定义并 且可以在本文中互换地使用。另外,如本文中所使用的,“兴趣”可以指 用户声明的兴趣,诸如在用户档案页面中呈现的用户声明的兴趣。如本文 中所使用的,“想要”可以虚拟地指代用户想要的几乎任何事物。如上所 述,“概念”可以虚拟地指代用户可以声明或另外表明有兴趣、喜欢、或 有关系的几乎任何事物,例如,体育、体育队、音乐流派、音乐作曲家、 爱好、商业(企业)、实体、组、名人、不是注册用户的人、甚或事件、 在一些实施方式中,另一用户(例如,非认证用户)等。例如,可以存在 著名的专业足球运动员“Jerry Rice”的概念节点和概念档案页面,其由多 个用户中的一个或多个(例如,Jerry Rice以外的用户)创建和管理,而 社交图形额外地包括由Jerry Rice自己(或Jerry Rice的信任或授权代表) 创建和管理的Jerry Rice的用户节点和用户档案页面。

在示例性图形结构中,数据结构包括多个属性。属性可以是名称-值 对。例如,与人对应的数据对象可以包括以下属性:

数据对象标识符(id)可以是在对象创建时分配的64比特值。数据 对象的属性可以在由一个或多个索引服务器106维持的搜索索引中解析和 维持。例如,当创建了新数据对象时,语句产生器模块可以从前述数据对 象创建以下的语句(term):

文档标识符(docid)可以包括时间戳(诸如32比特计数器或时钟值) 以及对应数据对象的数据对象标识符(id)。语句可以存储在与对应docid 相关的一个或多个索引中。例如,在示例性搜索索引中,从对象ID和“创 建的”时间戳生成docid,使得所有发布列表按反向时间顺序排序(概念 上讲,docid是“created(32比特):OBid(64比特)”)。时间戳(created) 对应于第一次创建数据对象的时间。在其他实施方式中,时间戳可以对应 于给定的数据对象最后被修改的时间。在一个实施方式中,构造索引的 docid,使得可以通过创建时间将给定搜索的结果按反向时间顺序排序。例 如,基于该机制,name: smurf type: person的搜索将返回名字为“smurf”的 所有人员,并按照与该人员相关的数据对象的创建时间按反向时间顺序排 序。在其他实施方式中,如果需要基于其他要素将对象排序,则可以使用 任意32比特分类键(sort key)来代替时间戳。

对象之间的关联(边)可以从概念上建模并存储为数据对象——称为 “边对象”。因此,索引可以存储条目,该条目与诸如人的数据对象以及 其他对象(这些对象与促进社交网络或其他图形相关信息的搜索的边关系 对应)对应,从而增大系统性能。以下的数据对象与以上人员对象(id 12345)和对应于音乐组(Coldplay)的另一数据对象(id67890)之间的 类型“爱好者”的关联对应。

边可以在与源对象和目的对象相关的搜索索引中生成具体语句。例 如,搜索查询connection.fan.to(67890)将返回与所有Coldplay(docid67890) 爱好者相关的文档标识符。类似地,搜索查询connection.fan.from(12345) 返回人员(id12345)已经建立了爱好者连接的所有数据对象的文档标识 符。使用该语法,应用可以用该查询从人员的朋友或其他连接找到所有状 态更新:

Connection.from(12345)type:status

另外一个示例是,以下的搜索查询返回也是Coldplay的爱好者的人员 (id12345)的所有朋友:connection.friend.from(12345) connection.fan.to(67890)。由于可以用属性使数据对象直接“指向”另一对 象,因此可以在没有分开的边对象的情况下创建特定类型的关联。例如, 状态对象可以包括具有与创建用户对应的数据对象的值的所有者属性,而 不是具有状态消息和用户之间的“所有者”边对象——例如:

在一个实施方式中,索引服务器106支持图形遍历查询复合的简单语 法。例如,以下的搜索查询将返回人员(id12345)的所有朋友的朋友: connection.friend.from(connection.friend.from(12345))。在该情况下,索引服 务器首先执行内部查询,connection.friend.from(12345)。由内部查询返回 的文档标识符然后被应用到外部前缀(prefix),使得整个表达式扩展到该 人员的所有朋友的connection.from语句的OR。

该查询复合语法可以用于广泛构造各种查询。例如,以下的搜索将返 回具有标识人员(id12345)的朋友的标签并在Stanford网络中的所有照 片:connection.tag.from(connection.friend.from(12345)newtwork:stanford) type:photo。内部查询语法可以应用于任意属性,而不仅是边。例如,假设 “author”是状态消息的属性,则以下的搜索将返回来自人员(id12345) 的朋友的所有状态消息:author(connection.friend.from(12345))type:status。 另外,以下的搜索查询将返回来自名字为Papa的人员的所有状态信息: author(name:papa type:person) type:status。另外,以下的搜索查询将以反向 时间顺序返回创建的该人员(id12345)的朋友连接: source(connection.friend.from(12345)) type:connection。

索引服务器106响应于查询返回文档标识符,客户处理104可以使用 该文档标识符来访问诸如数据库110或缓存层108的数据存储库中存储的 对应数据对象。在一个实施方式中,如上所述,语句产生器模块从数据对 象的属性生成搜索索引的语句。语句产生器将对象视为输入,并且输出指 示应当为该数据对象索引什么语句的一组(docid、语句)对。在一个实现 方式中,基于插入的对象的类型来选择语句产生器模块类型或行为。例如, 为了教学目的,假设调用了语句产生器模块来处理以下边对象:

连接语句产生器模块可以产生以下的语句以用于插入到索引中:

图4描述了与创建新对象并将其存储在根据本发明的实现方式配置的 系统中相关联的示例性方法。如图4所示,对于新对象,对象创建处理生 成可以包括创建的时间戳(created)成分和对象标识符成分(见上文)的 新文档标识符(docid)(402)。然后调用一个或多个语句产生器模块,从 而基于对象的类型创建docid-语句对(404)。对象创建处理然后将docid- 语句对插入到由索引服务器106维持的一个或多个索引中(406)并将对 象写入数据库110(408)。在一些实现方式中,可以将每个docid-语句对 维持为给定索引中的单独条目。在其他实现方式中,可以将docid-语句对 的docid添加到具有相同语句的现有索引。例如,可以将与Coldplay(docid 67890)的新爱好者对应的对象的文档标识符(例如,docid12345)添加 到具有语句“connection.to:67890”和/或“connection.fan.to:67890”的一个 或多个现有索引条目。

可以更新语句产生器模块,并且所有新对象将从语句产生器索引新的 语句。另外,更新处理还可以在MapReduce工作中每天重新生成整个索 引,使得所有旧对象都更新有新语句。索引重建可以用作通过非规范化来 改善性能的机制。许多存储系统在应用级要求数据的非规范化,以改善性 能。语句生成器使得能够更动态地作出非规范化决定,并且便于随着查询 模式的改变而改变这些决定。此外,非规范化配置的改变不要求改变底层 数据持久存储在数据库110中的方式。例如,假设页面生成脚本(home.php) 频繁地执行以下搜索以得到来自朋友的状态消息: author(connection.from(UID))type:status。如果性能因为查询量以及 type:status发布列表的尺寸而成为问题,则语句产生器模块可以添加或更 新状态消息,以输出author和type的复合语句,使得结果在单个、更小的 发布列表或索引中。例如,语句产生器模块可以配置为添加状态对象的额 外语句,诸如:

可以更新语句产生器模块以输出额外的语句:(321224, “status:author:12345”)。可以更新页面生成脚本,使得查询被表示为: status:author(connection.from(UID))。另外,如下文中更详细地描述的,为 了进一步改善性能,可以为特定语句创建一组副本索引。该机制的一个特 定优点在于,非规范化决定可以容易地改变,并且不需要在应用级发生。 这意味着,开发者能够以概念上最合乎逻辑的方式来存储数据。可以以相 对独立于这些应用级决定的方式来调整查询性能,这使得应用更整洁、更 容易理解、并且更容易随着时间而更新。

在一个实施方式中,搜索索引被文档标识符(docid)共享。例如,如 图1所示,可以通过包括根服务器106a和多个叶服务器106b的索引服务 器的分层配置来实现索引层。在一个实施方式中,每个叶服务器106b都 被分配一个或多个碎片。在另一实施方式中,可以使用集群或环拓扑。在 默认情况下,可以通过并行地向所有碎片发送查询、在混合器或根索引服 务器106a中合并结果来执行搜索。在一个实施方式中,碎片被分配文档 标识符空间的片段。在特定实施方式中,每个文档标识符(docid)都映射 到(例如,算术上或经由一些数学函数)唯一对应碎片ID。因此,可以 在对象Coldplay(docid67890)对应的一个碎片以及与人员(docid12345) 已经建立了“fan”关系的其他对象对应的其他碎片中保持特定语句(例如, “connection.fan.from:12345”)。在一个实施方式中,每个索引服务器106 都被分配其负责维持的一组碎片ID。可以调整该分配来从系统添加或去 除索引服务器106。

向所有碎片发送所有查询在运算上可能是昂贵的,并且可能限制系统 的总体查询速率。在一个实现方式中,由索引服务器106实现的索引层支 持仅对索引系统中的语句的子集进行索引的特定副本索引。例如,除了主 要或主索引,索引层可以包括适于一个或多个特定查询类型的一个或多个 额外副本索引。例如,假设查询conneciton.from(*)是系统中的非常普通的 查询。本文中描述的索引系统可以配置为使得所有connection.from语句都 在仅含有这些语句的额外副本索引中被复制。以下的命令示出了允许创建 这种副本索引的示例性应用编程界面。

当索引服务器106执行查询时,其选择满足搜索的最小副本索引。例 如,查询connection.from(12345)将被转发到专用于connection.from副本索 引的索引服务器。另一方面,诸如connection.from(12345)type:page的更 一般或更宽泛的搜索将在主索引或支持这两个语句的另一副本上执行。然 而,在理论上,没有理由反对将语句分片以改善特定查询的性能。该设计 的一个优点在于,系统可以支持所有查询并且被调整为将最佳处理量和性 能用于最重要查询。一旦查询变得足够普通,则管理员可以通过创建专用 于满足该类查询的一组副本来调整系统,以增大查询速率。这对应用开发 的简化在于,网络应用首先可以配置为执行其所需要的任何查询。在发起 应用之前,基于在应用开发期间创建的查询结构,可以创建副本索引以改 善性能。

图2示出了可以用于实现服务器22a、22b的示例性计算系统架构。 在一个实施方式中,硬件系统1000包括处理器1002、缓存存储器1004、 以及在有形计算机可读介质上存储的针对本文中描述的功能的一个或多 个可执行模块和驱动。另外,硬件系统1000包括高性能输入/输出(I/O) 总线1006和标准I/O总线1008。主桥1010将处理器1002耦接至高性能 I/O总线1006,而I/O总线桥1012将两个总线1006和1008彼此耦接。系 统存储器1014以及一个或多个网络/通信接口1016耦接至总线1006。硬 件系统1000可以进一步包括视频存储器(未示出)以及耦接至视频存储 器的显示装置。大容量存储器1018以及I/O端口1020耦接至总线1008。 硬件系统1000可以可选地包括键盘和定点装置、以及耦接至总线1008的 显示装置(未示出)。这些元件旨在共同地表示宽泛范畴的计算机硬件系 统,包括但不限于基于由Intel Corporation of Santa Clara,California制造的 x86可兼容处理器以及由Advanced Micro Devices(AMD),Inc.,of  Sunnyvale,California制造的x86可兼容处理器以及任何其他适当处理器的 通用计算机系统。

以下更详细地描述了硬件系统1000的元件。具体地,网络接口1016 提供了硬件系统1000和诸如以太网(例如,IEEE802.3)网络、背板等的 任何宽范围的网络之间的通信。大容量存储器1018为数据和编程指令提 供了永久存储,以执行在服务器22a、22b中实现的上述功能,而当由处 理器1002执行时,系统存储器1014(例如,DRAM)为数据和编程指令 提供了临时存储。I/O端口620是在可以耦接至硬件系统1000的额外外围 装置之间提供通信的一个或多个串行和/或并行通信端口。

硬件系统1000可以包括各种系统架构;并且可以重新布置硬件系统 1000的各部件。例如,缓存1004可以与处理器1002在同一芯片上。可选 地,缓存1004和处理器1002可以封装在一起作为“处理器模块”,其中 处理器1002称为“处理器核”。此外,本发明的特定实施方式可能不要求 包括所有以上部件。例如,示出为耦接至标准I/O总线1008的外围装置 可以耦接至高性能I/O总线1006。另外,在一些实施方式中,可以只存在 单个总线,而硬件系统1000的部件耦接至该单个总线。此外,硬件系统 1000可以包括额外的部件,诸如额外的处理器、存储装置、或存储器。

在一个实施方式中,本文中所描述的实施方式的操作实施为由硬件系 统1000单独或共同在分布式计算环境中运行的一系列可执行模块。在特 定实施方式中,一组软件模块和/或驱动器实施网络通信协议栈、浏览和其 他计算功能、优化处理等。前述功能模块可以由硬件、计算机可读介质上 存储的可执行模块、或二者的组合来实现。例如,功能模块可以包括将要 由硬件系统中的处理器(诸如处理器1002)执行的多个或一系列指令。最 初,该一系列指令可以存储在诸如大容量存储器1018的存储装置上。然 而,该一系列指令可以切实存储在诸如软盘、CD-ROM、ROM、EEPROM 等任何适当的存储介质上。此外,该一系列指令不需要本地存储,并且可 以经由网络/通信接口1016从诸如网络上的服务器的远程存储装置接收。 该指令从诸如大容量存储器1018的存储装置复制到存储器1014中,并且 然后由处理器1002访问并执行。

操作系统管理并控制硬件系统1000的操作,包括到/从软件应用(未 示出)的数据输入和输出。操作系统在系统上执行的软件应用和系统的硬 件部件之间提供了接口。可以使用任何适当的操作系统,诸如LINUX操 作系统、可从Apple Computer Inc.of Cupertino,Calif.获得的Apple  Macintosh操作系统、UNIX操作系统、Microsoft(r)Windows(r)操作 系统、BSD操作系统等。当然,其他实施方式也是可能的。例如,可以在 固件或专用集成电路中实施本文中描述的绰号生成功能。

此外,上述元件和操作可以由存储介质上存储的指令构成。该指令可 以由处理系统检索并执行。指令的一些示例是软件、程序代码、以及固件。 存储介质的一些示例是存储装置、磁带、磁盘、集成电路、以及服务器。 当由处理系统执行时,指令可操作为指示处理系统根据本发明来操作。术 语“处理系统”是指单个处理装置或一组内部操作处理装置。处理装置的 一些示例是集成电路和逻辑电路。本领域中的技术人员熟悉指令、计算机、 以及存储介质。

本公开包括本领域中的普通技术人员应当理解的对本文的示例性实 施方式的所有改变、替换、变形、变更、和修改。类似地,适当时,所附 权利要求包括本领域中的普通技术人员应当理解的对本文的示例性实施 方式的所有改变、替换、变形、变更、和修改。例如,虽然本发明的实施 方式被描述为联系社交网站来操作,但是本发明可以联系任何支持网络应 用并将数据建模为关联图形的通信设施来使用。此外,在一些实施方式中, 术语“网络服务”和“网站”可以互换地使用,并且另外可以指在使API 直接调用服务器的诸如移动装置(例如,蜂窝电话、智能电话、个人GPS、 个人数字助理、个人游戏装置等)的装置上的定制或一般的API。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号