图形数据的复合语句索引的制作方法与工艺

文档序号:11733288阅读:353来源:国知局
图形数据的复合语句索引的制作方法与工艺
本公开总体上涉及数据库,并且更具体地,涉及用于图形数据结构的数据索引系统。

背景技术:
通过包括专有网络以及诸如因特网的公共网络的各种局域和广域计算机网络,计算机用户能够访问并共享大量信息。通常,用户的计算装置上安装的网络应用便于访问位于由相关统一资源定位符(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、AsynchronousJavaScript以及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可以执行诸如网络应用(例如,MicrosoftWindowsInternetExplorer、MozillaFirefox、AppleSafari、GoogleChrome、以及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空间的段。在特定实施方式中,图形可以维持各种不同节点类型,诸如将会对表示为节点有用的用户、页面、事件、涂鸦墙(wallpost)、评论、照片、视频、背景信息、概念、兴趣以及任何其他元素。边类型对应于节点之间的关联,并且可以包括朋友、追随者、用户、爱好者、喜好(或兴趣的其他表示)、涂鸦墙、评论、链接、建议、推荐、以及节点之间的其他类型的关联。在一个实施方式中,图形的一部分可以是包括用户节点的社交图形,每个用户节点都与社交网络环境的相应用户对应。社交图形还可以包括其他节点,诸如各自都专用于或针对特定概念的概念节点,以及可能短暂或可能不短暂的各自都专用于或针对社交网络环境用户的当前兴趣的特定主题的主题节点。在特定实施方式中,每个节点都具有、表示在社交网络环境中承载或可访问的对应网页(“档案页面”),或由该对应网页表示。例如,用户节点可以具有对应用户档案页面,在该页面中对应用户可以添加内容,作出声明,或另外地表达他或她自己。例如,如将在下文中描述的,在社交网络环境中承载或可访问的各种网页(例如,用户档案页面、概念档案页面、或主题档案页面)使得用户能够发布内容、发布状态更新、发布消息、发布评论(包括对由该用户或其他用户提交的其他发布的评论)、声明兴趣、声明对任意前述发布(post,帖子)以及页面和具体内容的“喜爱”(在下文中描述)、或另外地表达自我或执行各种动作(下文中,这些和其他用户动作可以统称为“发布”或“用户动作”)。在一些实施方式中,发布可以包括经由其相应的档案页面、其他用户档案页面、概念档案页面、主题页面、或其他网页或网络应用链接到或另外地引用额外内容,诸如媒体内容(例如,照片、视频、音乐、文本等)、唯一资源定位符(URL)、以及其他节点。这种发布、声明、或动作对于认证用户和其他用户可见。在特定实施方式中,社交图形进一步包括多个边,每个边都定义或表示社交图形中的一对对应节点之间的连接。如上所述,内容的每个项都可以是链接到其他节点的图形中的节点。如上所述,在各示例性实施方式中,所描述的一个或多个网页或网络应用与社交网络环境或社交网络服务相关。如本文中所使用的,“用户”可以是通过这种社交网络环境互动或通信的个人(真人用户)、实体(例如,企业、商业、或第三方应用)、或组(例如,个人或实体)。如文本中所使用的,“注册用户”是指在社交网络环境中正式注册的用户(总体上,文本中描述的用户和用户节点仅指注册用户,虽然这在其他实施方式中并不一定被要求;即,在其他实施方式中,本文中描述的用户和用户节点可以指还没有在本文中描述的社交网络环境中注册的用户)。在特定实施方式中,每个用户都具有对应的“档案”页面,该页面由社交网络环境存储、承载、或可由社交网络环境访问,并且对其他用户的中全部或所选择的子集可见。总体上,用户对他或她自己的相应档案页面具有管理权,并且潜在地对由或为特定用户创建的其他页面(例如,主页、页面托管网络应用、即其他可能性)具有管理权。如本文中所使用的,“认证用户”是指已经被社交网络环境认证为在该用户具有管理权的对应档案页面中主张的用户、或所主张的用户的适当的可信代表的用户。两个用户或概念之间的连接可以表示社交网络环境的用户或概念之间的定义关系,并且可以在社交网络环境的适当数据结构中逻辑地定义为对应于用户、概念、事件的节点或已经作出关联的社交网络环境的其他节点之间的边。如本文中所使用的,“友谊”表示社交网络环境的一对用户之间的关联,诸如定义的社交关系。如本文中所使用的,“朋友”可以指已经与另一用户形成连接、友谊、关联、或关系使得将在这两个用户之间生成边的社交网络环境的任意用户。例如,两个用户之一通过向可以接受或拒绝请求的另一用户传输友谊请求或使该友谊请求得以传输来选择与该另一用户建立友谊,从而两个注册用户可以彼此明确地成为朋友。可选地,可以自动建立友谊关系或其他连接。这种社交友谊关系对其他用户可见,特别是对于本身与注册用户中的一个或两个是朋友的用户可见。注册用户的朋友对注册用户的档案或其他页面上的内容,特别是用户生成或声明的内容,具有增大的访问特权。然而,应注意,在社交图形中建立了它们之间的朋友连接的两个用户在现实生活中(在社交网络环境之外)不一定是朋友(在传统意义上)。例如,在一些实现方式中,用户可以是商业或其他非真人实体,并且因此,在该词的传统意义上,其不能与真人用户成为朋友。如本文中所使用的,“爱好者”可以指作为可在社交网络环境中访问的特定用户、网页、网络应用、或其他网络内容的支持者或追随者的用户。在特定实施方式中,当用户是特定网页的爱好者时(“爱好”特定网页),该用户可以作为爱好者而在该页面上列出,以便其他注册用户或一般公众查看。另外,该用户的头像或档案图片可以显示在页面上(或在以下描述的任意页面中/上)。如本文中所使用的,“喜欢”可以指某物,诸如(例如但不限于)用户,并且特别是注册或认证用户已经声明或表明他或她喜欢、是其爱好者、支持、欣赏、或有正面看法的发布、评论、兴趣、链接、媒体(例如,照片、相册、视频、歌曲等)、概念、实体、页面及其他可能性(在一些实现方式中,用户可以表示或声明对由社交网络系统或环境承载或可由社交网络系统或环境访问的任意页面上的几乎任何事物的喜欢)。在一个实施方式中,表示或声明“喜欢”或表示或声明该用户是某物的“爱好者”在社交网络环境中可以被等效地处理和定义,并且可以互换地使用;类似地,声明自己是诸如概念或概念档案页面的某物的“爱好者”,或声明自己“喜欢”该事物,可以在社交网络环境中等效地定义并且可以在本文中互换地使用。另外,如本文中所使用的,“兴趣”可以指用户声明的兴趣,诸如在用户档案页面中呈现的用户声明的兴趣。如本文中所使用的,“想要”可以虚拟地指代用户想要的几乎任何事物。如上所述,“概念”可以虚拟地指代用户可以声明或另外表明有兴趣、喜欢、或有关系的几乎任何事物,例如,体育、体育队、音乐流派、音乐作曲家、爱好、商业(企业)、实体、组、名人、不是注册用户的人、甚或事件、在一些实施方式中,另一用户(例如,非认证用户)等。例如,可以存在著名的专业足球运动员“JerryRice”的概念节点和概念档案页面,其由多个用户中的一个或多个(例如,JerryRice以外的用户)创建和管理,而社交图形额外地包括由JerryRice自己(或JerryRice的信任或授权代表)创建和管理的JerryRice的用户节点和用户档案页面。在示例性图形结构中,数据结构包括多个属性。属性可以是名称-值对。例如,与人对应的数据对象可以包括以下属性:数据对象标识符(id)可以是在对象创建时分配的64比特值。数据对象的属性可以在由一个或多个索引服务器106维持的搜索索引中解析和维持。例如,当创建了新数据对象时,语句产生器模块可以从前述数据对象创建以下的语句(term):文档标识符(docid)可以包括时间戳(诸如32比特计数器或时钟值)以及对应数据对象的数据对象标识符(id)。语句可以存储在与对应docid相关的一个或多个索引中。例如,在示例性搜索索引中,从对象ID和“创建的”时间戳生成docid,使得所有发布列表按反向时间顺序排序(概念上讲,docid是“created(32比特):OBid(64比特)”)。时间戳(created)对应于第一次创建数据对象的时间。在其他实施方式中,时间戳可以对应于给定的数据对象最后被修改的时间。在一个实施方式中,构造索引的docid,使得可以通过创建时间将给定搜索的结果按反向时间顺序排序。例如,基于该机制,name:smurftype:person的搜索将返回名字为“smurf”的所有人员,并按照与该人员相关的数据对象的创建时间按反向时间顺序排序。在其他实施方式中,如果需要基于其他要素将对象排序,则可以使用任意32比特分类键(sortkey)来代替时间戳。对象之间的关联(边)可以从概念上建模并存储为数据对象——称为“边对象”。因此,索引可以存储条目,该条目与诸如人的数据对象以及其他对象(这些对象与促进社交网络或其他图形相关信息的搜索的边关系对应)对应,从而增大系统性能。以下的数据对象与以上人员对象(id12345)和对应于音乐组(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:papatype: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(docid67890)的新爱好者对应的对象的文档标识符(例如,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的显示装置(未示出)。这些元件旨在共同地表示宽泛范畴的计算机硬件系统,包括但不限于基于由IntelCorporationofSantaClara,California制造的x86可兼容处理器以及由AdvancedMicroDevices(AMD),Inc.,ofSunnyvale,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操作系统、可从AppleComputerInc.ofCupertino,Calif.获得的AppleMacintosh操作系统、UNIX操作系统、Microsoft(r)Windows(r)操作系统、BSD操作系统等。当然,其他实施方式也是可能的。例如,可以在固件或专用集成电路中实施本文中描述的绰号生成功能。此外,上述元件和操作可以由存储介质上存储的指令构成。该指令可以由处理系统检索并执行。指令的一些示例是软件、程序代码、以及固件。存储介质的一些示例是存储装置、磁带、磁盘、集成电路、以及服务器。当由处理系统执行时,指令可操作为指示处理系统根据本发明来操作。术语“处理系统”是指单个处理装置或一组内部操作处理装置。处理装置的一些示例是集成电路和逻辑电路。本领域中的技术人员熟悉指令、计算机、以及存储介质。本公开包括本领域中的普通技术人员应当理解的对本文的示例性实施方式的所有改变、替换、变形、变更、和修改。类似地,适当时,所附权利要求包括本领域中的普通技术人员应当理解的对本文的示例性实施方式的所有改变、替换、变形、变更、和修改。例如,虽然本发明的实施方式被描述为联系社交网站来操作,但是本发明可以联系任何支持网络应用并将数据建模为关联图形的通信设施来使用。此外,在一些实施方式中,术语“网络服务”和“网站”可以互换地使用,并且另外可以指在使API直接调用服务器的诸如移动装置(例如,蜂窝电话、智能电话、个人GPS、个人数字助理、个人游戏装置等)的装置上的定制或一般的API。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1