改变监测跨图查询的制作方法

文档序号:18516561发布日期:2019-08-24 09:29阅读:169来源:国知局
改变监测跨图查询的制作方法

在图数据库中,实体被呈现为节点,并且这些实体之间的关系被呈现为由图数据库维护的关系图的视图中的边。用户可以经由图查询周期性地查询关系图,以了解实体之间的关系。例如,用户可以发出图查询以查找社交网络内的朋友或联系人、给定用户已经与之交互的文档、已经访问给定文档的用户、满足各种搜索标准的实体等。可以理解,关系图随着数据的添加、改变和删除而改变,并且图查询的结果可以因此而改变。然而,由于运行图查询的计算成本昂贵,因此根据底层关系图的改变而保持图查询的结果是最新的可能需要访问或托管图数据库的计算设备耗费大量处理或存储资源用于运行重复的图查询或在每个节点上运行改变监视器。



技术实现要素:

提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式部分中进一步描述。本发明内容不旨在确定所要求保护的主题的所有关键或必要特征,也不旨在帮助确定所要求保护的主题的范围。

本文提供了用于监视关系图的改变的计算上较不密集的方法,以及采用所述方法的系统。提供关系图的改变的流以与一个或多个近似成员查询(amq)过滤器进行比较,而不是周期性地重新运行图查询或者监视各个节点的改变(可能错过新节点的添加)。改变的流包括受节点改变影响的节点的标识符、连接到受改变影响的边的节点的标识符、和/或包含关系图的全部或部分的节点集的搜索索引树或其他标识符。

amq过滤器由针对要监视的已运行图查询满足或考虑的节点的节点标识符集构成。amq过滤器(包括但不限于布隆过滤器、布谷鸟过滤器和商过滤器)提供针对以下的概率检查:元素是否是不提供假否定的集合的成员;对于给定的比较,过滤器返回“可能在集合中”或“不在集合中”的结果。当返回“不在集合中”的结果时,确定该改变未影响图查询的结果。当返回“可能在集合中”的结果时,可以重新运行图查询并将其与先前的运行进行比较以确定是否已经发生了改变,在这种情况下,可以将改变暴露给查询用户。除了能够防止不必要的图查询重新运行之外,amq过滤器还提供减少需要存储在计算机存储器中的数据量的能力,检测节点的添加/删除作为图查询的潜在改变的能力,并提高决定重新运行图查询的速度。

示例被实现为计算机进程、计算系统或诸如设备、计算机程序产品或计算机可读介质的制品。根据一个方面,该计算机程序产品是计算机系统可读并且编码有包括用于执行计算机过程的指令的计算机程序的计算机存储介质。

在下面的附图和描述中阐述了一个或多个方面的细节。通过阅读以下详细描述和对相关附图的回顾,其他特征和优点将是显而易见的。应理解,以下详细描述仅是解释性的,而不是对权利要求的限制。

附图说明

包含在本公开中并构成本公开的一部分的附图示出了各个方面。在图中:

图1示出了可以实践本公开的示例环境;

图2是示出用于提高图服务器的计算效率的示例方法中涉及的一般阶段的流程图,该图服务器的任务是使图查询保持最新;

图3是示出计算设备的示例物理组件的框图;以及

图4是分布式计算系统的框图。

具体实施方式

以下详细描述参考附图。只要可能,在附图中使用相同的附图标记,并且以下描述涉及相同或相似的元件。虽然可以描述示例,但是修改、改编和其他实现是可能的。例如,可以对附图中示出的元件进行替换、添加或修改,并且可以通过将阶段替换、重新排序或添加到所公开的方法来修改本文描述的方法。因此,以下详细描述不是限制性的,而是由所附权利要求限定适当的范围。示例可以采用硬件实现或完全软件实现或者结合软件和硬件方面的实现的形式,。因此,以下详细描述不应被视为具有限制意义。

本文提供了用于监视关系图的改变的计算上较不密集的方法,以及采用所述方法的系统。近似成员资格查询(amq)过滤器与对关系图的图查询结合使用,以提供跨越与查询关联的视图的改变监视。来自由图查询跨越的关系图的每个节点以及视图的索引结构被添加为amq过滤器的成员。当对关系图进行改变时,将针对amq过滤器查询改变的节点。当改变的节点被注释为amq过滤器的候选成员时,可以重新运行图查询以更新与查询相关联的视图。否则,不会重新运行图查询,从而节省计算资源并改进托管和查询关系图的系统以及amq过滤器提供的其他好处,这包括改进的存储器存储空间要求。

图1示出了可以实践本公开的示例环境100。客户端设备110与图服务器120通信,图服务器120在图数据库130中维护关系图。关系图将若干实体维护为节点,并将这些节点之间的关系维护为连接相关节点的边,并且图数据库130是可操作地存储一个或多个关系图及其子图,供客户端设备110查询。图服务器120还维护与先前运行的查询相关联的一个或多个amq过滤器140(近似成员查询过滤器),以减少用于在图数据库130上重新运行那些查询的调用的数量。

客户端设备110和图服务器120中的每一个都说明了多个计算系统,包括但不限于台式计算机系统、有线和无线计算系统、移动计算系统(例如,移动电话、上网本、平板电脑或平板型计算机、笔记本电脑和笔膝上型计算机)、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、小型计算机、打印机和大型计算机。关于图3和4更详细地讨论这些计算系统的硬件。客户端设备110由用户操作,用户可以是人或自动化系统(例如,“机器人”)。在各个方面,客户端设备110和图服务器120可以由用户访问或彼此本地地和/或通过网络访问,该网络可以包括因特网、局域网(lan)、用于实体(例如,公司、大学、政府机构)的专用分布式网络、无线自组织网络、虚拟专用网络(vpn)或其他直接数据链路(例如,蓝牙连接、直接有线链路)。

图服务器120托管关系图的图数据库130,关系图具有描述实体和那些实体的一组伴随属性的节点,例如,名称、头衔、年龄、地址等。每个属性可以被视为键/值对——属性的名称及其值。在其他示例中,实体表示为包括文档、会议、通信等的节点,而边表示这些实体之间的关系,例如,人节点与文档节点之间的边表示该人对该文档的作者身份、修改或查看。

图服务器120执行由各种用户提交的图查询。图服务器120还可操作以访问图结构描述,该图结构描述驻留在图数据库130中,图数据库130可以包括各种方面:关系数据库,nosql数据库或任何其他数据库。关系图的子图或视图存储在图数据库130中,用于以后分析或在各个方面中后续图查询相同度量。在一些方面,当图服务器120响应于图查询而产生子图时,图服务器120检查将满足图查询的子图是否存在于图数据库130中,并且将通过从图数据库130中取回它来产生该子图,否则图服务器120将通过执行图查询来产生子图,并且可以可选地存储所得到的子图以供以后取回。

客户端设备110请求的图查询跨越图结构的当前状态,但是随着图数据库130被更新或改变,对关系图(或其子图)的各种查询的结果可能受到该更新影响或者不受该更新影响。例如,当给定人员创建新文档时,可能会影响对给定人员周围流行的文档的图的查询,但当不同的人员创建新文档或将表示新人员的节点添加到图结构时,该图表不会受到影响。进而,提交这些查询的用户可能对影响他们的查询的图数据库130的改变感兴趣或不感兴趣。例如,期望图数据库130的“快照”视图的用户(例如,时间t处的视图)可能对将在稍后影响查询的任何更新不感兴趣。在另一示例中,期望图数据库130的“实时”视图的用户对将影响查询的每个更新感兴趣。在另一示例中,期望图数据库130的“周期性”视图的用户对图数据库130的影响查询的一些更新感兴趣,但不是所有更新(例如,在对另一个更新感兴趣之前,等待距离上次更新至少m分钟,等待对图的至少n次改变)。

可以理解,重新运行图查询在计算上是昂贵的,并且当重新运行图查询而没有影响查询跨越的视图的改变时,如果那些处理资源没有用于重新运行图查询(例如,用于不同的任务或保留),则重新运行图查询的机器的功能本来会得到改善。为了减少重新运行没有导致对相关联的视图进行改变的查询的数量,图服务器120可以仅在达到阈值之后更新,这可以增加相关改变已经发生的几率。例如,在将x量的数据或节点添加到关系图之后,或者在自上次重新运行之后的t时间之后,可以响应于对关系图的n次更新而重新运行一个或多个查询。这些方法可以提高已经进行相关改变的几率,但仍然在没有考虑到是否发生了相关改变的情况下导致满足重新运行要求的所有图查询再次运行。

类似地,将重新运行要求集中于特定子图可以减少需要重新运行的查询的数量,但是发现哪些子图受到影响需要额外的计算资源和存储开销。另外,通过将子图与先前查询结果进行比较来跟踪子图的组成的改变使得跟踪单个子图的效率低,因为作为查询结果包括的节点和边可能改变。例如,在查询给定人员的“朋友”的社交网络关系图的情况下,如果添加了新的“朋友”,则相比于旧视图,新视图将包括被认为是给定人员的朋友的附加节点。在类似的示例中,在查询给定人员的“朋友”的社交网络关系图的情况下,如果某些人被作为“朋友”移除,则相比于旧视图,新视图将包括被认为是给定人员的朋友的人员的较少节点。

为了减少重新运行不受对图数据库130所做的改变影响的图查询所花费的计算资源量,图服务器120维护一个或多个amq过滤器140(近似成员资格查询过滤器)来代替上面描述的阈值和整理集或者作为阈值和整理集的补充。图服务器120可操作以将amq过滤器140与关系图的查询的视图相关联,使得amq过滤器140将指示视图何时未改变,并且重新运行查询是不必要的。

图数据库130中的每个节点与唯一标识符相关联,并且响应于查询的作为视图的一部分的节点集合被认为是由相关联的amq过滤器140管理的集合的一部分。在一些方面,被考虑但被查询拒绝的节点也包含在amq过滤器140的成员集中。在另外的方面,视图中的节点的索引结构被视为amq过滤器140的成员集中的成员或者被单独存储,但是与amq过滤器140相关联。通过级联展平树结构中的节点的标识符来构造索引结构。响应于在图数据库130中更新、添加或移除节点,图服务器120可操作以查询一个或多个amq过滤器140以确定受影响的节点是否是那些amq过滤器140的成员集的一部分。在各个方面,受改变影响的节点的标识符作为改变流被馈送到图服务器120,以与一个或多个amq过滤器140进行比较。

例如,当返回节点a,b和c的视图(与最近与用户相关联的文档a,b和c相关联)的查询请求最近与用户相关联的文档列表时,使这些节点成为amq过滤器140的成员集的一部分。当用户访问documentd时,noded(与documentd相关联)被添加到图数据库130(或者在noded与用户节点之间创建边),并且图服务器120可操作以检查amq过滤器140是否noded潜在地是其成员集的一部分。当amq过滤器140返回否定响应(例如,指示noded不是其成员集的潜在部分)时,图服务器120将不会重新运行相关联的查询。当amq过滤器140返回肯定响应(例如,指示noded是其成员集的潜在部分)时,图服务器120可以重新运行相关联的查询或向用户指示对由图查询提供的先前视图的潜在改变存在。

amq过滤器140可以提供真肯定,真否定或假肯定作为对其成员集的查询的结果,但不提供假否定作为对其成员集的查询的结果;结果表明候选成员“绝对不在集合中”或“可能在集合中”。通过提供没有假否定的结果集,图服务器120可以确保它接收的任何否定结果是正确的,并且因此可以减少对图数据库130的调用次数,从而改善图服务器120的功能。

然而,可以理解,“可能在集合中”的肯定结果(真或假)可以导致图服务器120调用图数据库130并重新运行查询或要求用户授权重新运行查询。假肯定结果导致查询在视图中没有相关联的改变的情况下运行查询。假肯定的发生率(当不在集合中时“可能不在集合中”)可以由图服务器120通过调整amq滤波器140的大小来调整,其中较大的amq滤波器140(对于其成员资格被跟踪的给定数量的节点使用更多比特)导致假肯定结果的发生率较低。本领域普通技术人员将能够选择适当的大小以用于amq过滤器140,以平衡amq过滤器140的存储空间需求和由于假肯定而重新运行不必要的查询所花费的计算资源。在各个方面,基于相应视图中的实体(节点)数量和期望的假肯定率来选择为amq滤波器140选择的大小,并且amq滤波器140可以在大小方面保持静态或者随着实体添加到成员集或从成员集中删除而是动态的。在一些方面,amq过滤器140的大小是恒定的,随着更多查询被提交给图服务器120,这为管理员提供了可预测的存储需求。

amq过滤器140提供比特数组,其中存储其成员集的散列。可以使用各种散列算法来将节点的成员资格记录在amq过滤器140中。散列算法(也称为“散列函数”)产生数据的单向加密(称为散列),其可以根据本领域普通技术人员已知的各种算法(sha-2、sha256、md5、blake2、keccak、gost等)来实现。在各个方面,amq过滤器140是布隆过滤器、布谷鸟过滤器、商过滤器或另一概率过滤器,其向图服务器120提供结构以测试节点是否是集合的候选成员。

amq过滤器140通过一个或多个散列函数(或相同散列函数的多个初始化)来对作为其集合的成员的节点的标识符进行散列运算以确定数组中的位置(例如,用散列1(hash1)的位置a处的比特,散列2(hash2)的位置b处的比特,散列3(hash3)的位置c处的比特)。然后将数组中指定位置的比特设置为1/true,以将节点记录为由amq滤波器140监视的集合的成员。amq滤波器140的数组被初始地设置,以使得其所有比特都被设置为零/false,并且当元素被添加到成员集时,由散列函数指定的比特被设置为1/true。如果散列函数指定数组中已经将该比特设置为1/true的位置,则该比特将保持设置为1/true,这为amq滤波器140提供100%的重新调用。

当从amq过滤器140读取以确定节点是否是记录在数组中的成员集的一部分时,候选节点的标识符被散列,就好像它被添加到数组中一样,并且为该候选节点生成的位置(即,候选位置)针对数组进行逐比特逻辑检查。如果为候选节点生成的所有位置具有1/true的数组中的值,则amq滤波器140返回肯定结果(例如,“可能在集合中”)。如果从候选节点生成的一个或多个位置具有零/false的数组中的值,则amq滤波器140返回否定结果(例如,“绝对不在该集合中”)。可以意识到,在不脱离本公开的精神的情况下,分配给比特值的含义可以在另一方面反转(例如,初用零/true初始化并且用1/false指示具有成员资格等);amq过滤器140可操作以根据各种惯例从基线第一状态经由第二状态跟踪成员资格。

例如,考虑nodea,nodeb和nodec的成员集,其使用三个散列函数和三十二比特(位置)的有序数组记录到amq过滤器140中。根据每个散列函数对每个节点的标识符进行散列,在数组中产生九个位置(尽管不是所有九个位置都可以是唯一的)。例如,nodea可以映射到位置1,7和26;nodeb可以映射到到位置5,30和31;以及nodec可以映射到位置5,12和26;在数组中产生九个位置(七个唯一)。数组中的每个位置(1,5,7,12,26,30和31)处的比特被设置为1/true(第二状态),并且在所有其他位置处,比特保持被设置为零/false(第一状态)。当用户检查noded是否是amq过滤器140的成员时,根据每个散列函数对noded进行散列,在数组中产生三个候选位置——在本示例中的位置1,5和23处。数组中的位置1,5和23处的比特值分别为1/true,1/true和0/false,并且因为至少一个位置的值为零/false(第一状态),所以amq过滤器140将返回否定响应,指示noded不是成员集的一部分。在另一示例中,当用户检查nodee是否是amq过滤器140的成员时,根据每个散列函数对nodee进行散列,在数组中产生三个候选位置——在本示例中的位置7,12和30处。在数组中的位置7,12和30处的比特的值都是1/true(第二状态),并且amq滤波器140将返回肯定响应(尽管是假肯定),指示nodee潜在地是集合的成员。

图2是示出用于提高图服务器120的计算效率的示例方法200中涉及的一般阶段的流程图,该图服务器120的任务是使图查询保持最新。方法200使图服务器120能够发现先前进行的图查询的节点或图形树何时已经潜在地改变,并且重新运行该图查询以提供最新结果或警告用户先前提交的查询存在潜在的改变。换句话说,方法200使图服务器120能够避免在发现改变未影响节点或图形树时重新运行图查询。

方法200开始于操作210,其中图服务器120接收图查询。在各个方面,由于各种用户动作,从客户端设备110进行图查询。在一个示例中,将鼠标指针悬停在显示具有特定属性的文档的用户界面元素上启动图查询以使用到这些文档的链接来填充该元素。在第二示例中,经由搜索引擎或个人数字助理(例如,由苹果公司提供的或由微软公司提供的)提交请求,启动图查询以响应该请求。

响应于接收到图查询,在操作215图服务器120跨越关系图以产生图数据库130的一个或多个视图或子图。例如,图查询可以请求组织中具有给定头衔的所有人的列表,这些人已经在组织中至少m个月,已经与某个人一起参与项目,具有对给定文件/目录的访问权限等。在另一个示例中,可以针对从起始位置到达给定目的地的最短路线而查询关系图,以返回一系列街道。在另一示例中,可以针对用户在过去d天中最频繁地与之交互的n个文档来查询包括人和文档的节点的关系图。当跨越图数据库130时,为视图创建索引结构,该索引结构标识跨越的节点及其彼此之间的关系。

在操作220,图查询返回的视图由图服务器120发送到请求客户端。在各个方面,视图以各种格式的列表返回(例如,符合图查询的变量的文档的名称和链接)或以子图返回(例如,查询的关系图的缩小版本)。客户端设备110可以对返回的视图或子图执行附加的查询,分析和格式化操作,以在期望的用户界面中向客户端显示相关数据。

继续到操作225,将作为返回的视图/子图的一部分的节点添加到与图查询相关联的amq过滤器140。当首次提交图查询时,创建amq过滤器140并将其与图查询相关联。当重新提交图查询(或重新请求运行)时,重新选择已创建并与amq过滤器140相关联的amq过滤器140,并将重新运行图查询的节点部分添加到amq过滤器。在各个方面,当amq过滤器140重新运行其关联查询时,除了记录在amq过滤器140的数组中的现有节点之外,还可以记录由重新运行查询返回的节点,或者可以重置amq过滤器140(例如,将数组的值设置回零/false)以使重新运行结果存储在amq滤波器140中而不影响数组的先前结果。

另外,客户端在查询时或之后可以指定客户端是否有兴趣在进行改变时以及以什么频率接收对视图或子图的更新。在客户端已经指示查询将是“快照”或“静态”视图(即,客户端对接收对视图的更新不感兴趣)的方面中,方法200可以在不为查询创建amq过滤器140以跟踪潜在的改变的情况下结束。在其他方面,为查询创建amq过滤器140,而不管客户端当前声明的对接收更新的兴趣如何,以使得可以向客户端警告潜在的改变,从而指示对接收潜在改变的视图/子图的兴趣。

amq滤波器140包括k个散列函数(例如,用k个键初始化的一个散列算法)和m个比特的成员资格数组。在各个方面,选择作为视图的一部分的每个节点的标识符、被视为视图的潜在部分的节点的标识符、由边连接到视图的节点部分或被视为视图的潜在部分的节点的标识符和/或索引结构用于amq过滤器140中的成员资格。所选择的标识符被馈送到每个散列函数,散列函数返回成员资格数组中的位置。每个返回位置处的比特被设置为指示成员资格(例如,将比特设置为1/true),并且任何重叠/重复位置导致比特被保持设置为1/true。

在一些方面中由查询跨越的视图或子图的索引结构与amq过滤器140相关联地被记录。以树结构跨越关系图;其他叶节点所依赖的根节点沿着边从图服务器120向外跨越,所述边充当从一个节点到下一个节点的分支。根据树结构收集视图中的每个节点的标识符,并且结构折叠,例如,级联树结构以创建展平化的索引结构并对其进行散列以产生标准化的大小。记录索引结构允许跟踪视图的改变,例如,向视图添加新节点,该节点不是amq过滤器140的原始成员集的一部分,但潜在地影响由查询返回的视图。

在一个示例中,索引结构允许与发现社交网络中的给定个体的“朋友”相关联的amq过滤器140发现何时将另外的朋友添加到个人的社交网络。该示例中的新朋友的节点不是amq过滤器140的成员,但是其添加到关系图将影响视图或子图的树结构;导致索引结构发生突变。

运行操作210,215,220和225以针对相关联的查询而初始化amq过滤器140。在针对相关联的查询而初始化amq过滤器140之后,方法200将等待接收影响查询被寻址的关系图的改变。如将理解的,一个改变可以影响多个amq滤波器140,并且尽管通常关于单个amq滤波器140讨论方法200,但是可以响应于对关系图的改变而串行或并行地操作多个amq滤波器140。

在操作230,接收对关系图的改变。在各个方面,改变构成节点的添加或移除;添加,移除或修改节点的属性;或者加强,削弱,创建或破坏在一个或多个节点之间的边。例如,当提升员工以管理其他员工时,可以通过向代表该员工的节点添加经理属性并在该员工与向该员工的直接报告(以及代表提升的其他改变)之间创建边来改变该员工所属组织的关系图。对图数据库130的每个改变进行解析以确定受影响的节点(直接或经由到这些节点的边),并且组织这些节点的标识符以形成改变流。

改变流包括受到对图数据库130的改变影响的节点的各个标识符,并且在一些方面包括对子图的索引结构或查询的视图的改变或突变。改变流可以表示单个改变,或者在一段时间内接收的或影响至少阈值数量的节点的几个批量改变。在各个方面,索引结构是源自根节点的基于树的结构,其中跨越发起于根节点,并且包括响应于图查询作为叶节点的其他节点。索引可以通过根据树结构级联节点的标识符(例如,使树变平)并且压缩(例如,经由一个或多个散列函数操作)得到的索引结构来构造。

在操作235,将改变流与amq过滤器140进行比较。改变流包含受改变影响的节点或索引结构的标识符,并且查询amq过滤器140以确定该标识符是否看起来是amq过滤器140中记录的集合中的成员。对从改变流接收的标识符进行散列,就好像它被添加到amq过滤器140的成员集一样,以在数组中产生若干位置,其中相应节点或索引结构将被记录在该若干位置处。如果每个位置已经指示它已被记录到,则amq过滤器140返回肯定结果,指示与标识符相关联的节点或索引结构是作为amq过滤器140中记录的集合的成员的候选者。如果数组中的至少一个位置指示它尚未被记录到,则amq过滤器140返回否定结果,指示与标识符相关联的节点或索引结构不是记录在amq滤波器140中的集合的成员。

判定240根据操作235中来自amq过滤器140的响应来引导方法200的流程。如上所述,amq过滤器140用“可能在集合中”(真肯定或假肯定响应)或“绝对不在集合中”(真否定响应)来响应查询。当返回肯定响应时,方法200前进到判定245。当返回否定响应时,方法200返回到操作230以等待对关系图的下一次改变。

在判定245,确定客户端是否批准重新运行图查询。在各个方面,可以通过向客户端设备110发送指示存在可用于客户端的查询的潜在更新的请求来寻求客户端的批准。在其他方面,客户端可以设置关于何时自动批准重新运行查询或何时经由警报寻求客户端的许可的重新运行批准规则。例如,客户端可以设置返回肯定结果的标识符的数量的阈值,忽略潜在更新除非索引结构也已经改变的规则,更新/警报之间的最小时间,客户端是否需要静态视图,生成的最后一个视图与客户端感兴趣的改变之间的阈值时间段等。当确定客户端批准重新运行图查询时,方法200前进到操作250。当确定客户端不批准重新运行图查询,方法200可以等待直到客户端批准重新运行图查询(例如,以满足时间阈值或接收对发送到客户端设备的警报的响应)为止并且可以响应于接收到对关系图的新改变而返回到操作230。

在操作250,再次运行图查询,并且将重新运行图查询产生的视图与由图查询的先前运行产生的视图进行比较。在判定255确定视图是否等同。在各个方面,将每个视图的索引结构彼此进行比较以确定索引结构是否相同,其中如果索引相同,则确定视图是等同的。例如,如果amq过滤器140返回假肯定,并且改变流中指示的节点实际上不是amq过滤器140的成员集的一部分,则针对图查询的两次运行的视图中的节点的索引将是相同的。

在另一示例中,如果amq过滤器140返回真肯定,并且改变流中指示的节点是amq过滤器140的成员集的一部分,但是该改变不足以改变索引结构,则视图被认为是等同的。例如,对于给定用户对十个最多查看的文档的查询,如果改变交换了第十一最多查看的文档和第十二最多查看的文档的顺序,则可以将节点肯定地标识为amq过滤器140的成员集的一部分,但前十个文档的视图将保持不受影响;视图被认为是等同的。类似地,在给定用户对十个最多查看的文档的查询的另一个示例中,如果改变影响第五最多查看文档的属性,但是不改变前十个文档的顺序,则前十个文档的视图将不受影响,视图被视为是等同的。

响应于确定重新运行视图和先前视图是等同的,方法200返回到操作230以等待关系图中的下一个改变。响应于确定重新运行视图和先前视图不等同,方法200前进到操作260以将改变暴露给客户端。在各个方面,通过将最新视图发送到客户端来将改变暴露给客户端。在其他方面,通过向客户端设备110发送改变通知来将改变暴露给客户端。客户端可以响应改变通知并请求图服务器120将最新视图发送到接收设备,或者用“忽略”或“关闭”命令而进行响应(或不响应)而继续,而不接收最新视图。

然后,方法200可选地进行到操作265以更新amq过滤器140的成员资格。在一些方面,因为amq过滤器140具有完美的重新调用并且成员不能从amq过滤器140的数组中丢弃,所以amq过滤器140被重新初始化并且当前成员集被记录到数组中,如在操作210,215,220和225中那样。在其他方面,当改变指示已将新成员添加到视图或子图中时,添加该成员到数组,并忽略修改数组成员或从数组中移除成员的任何改变。

然后,方法200返回到操作230以等待对关系图进行下一个改变。

虽然已经在与在计算机上的操作系统上运行的应用程序一起执行的程序模块的一般上下文中描述了实现方式,但是本领域技术人员将认识到,这些方面也可以与其他程序模块一起实现。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。

这里描述的方面和功能可以通过多种计算系统来操作,包括但不限于台式计算机系统、有线和无线计算系统、移动计算系统(例如,移动电话、上网本、平板电脑或平板型计算机、笔记本计算机和膝上型计算机)、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、小型计算机和大型计算机。

另外,根据一个方面,本文描述的方面和功能在分布式系统(例如,基于云的计算系统)上操作,其中应用功能、存储器、数据存储和取回以及各种处理功能通过分布式计算网络(例如因特网或内联网)彼此远程地操作。根据一个方面,通过车载计算设备显示器或通过与一个或多个计算设备相关联的远程显示单元显示各种类型的用户界面和信息。例如,在用户界面和各种类型的信息被投影到的墙壁表面上显示和交互各种类型的用户界面和信息。与实践实现方式的多个计算系统的交互包括击键输入、触摸屏输入、语音或其他音频输入、手势输入(其中相关联的计算设备配备有用于捕获和解释用于控制计算设备的功能的用户手势的检测(例如,相机)功能)等。

图3和图4以及相关描述提供了对其中实践示例的各种操作环境的讨论。然而,关于图3和图4示出和讨论的设备和系统是出于示例和说明的目的,而不是限制用于实践本文所述方面的大量计算设备配置。

图3是示出计算设备300的物理组件(即,硬件)的框图,利用其可以实践本公开的示例。在基本配置中,计算设备300包括至少一个处理单元302和系统存储器304。根据一个方面,根据计算设备的配置和类型,系统存储器304包括但不限于易失性存储器(例如,随机存取存储器)、非易失性存储器(例如,只读存储器)、闪存或这些存储器的任何组合。根据一个方面,系统存储器304包括操作系统305和适合于运行软件应用程序350的一个或多个程序模块306。根据一个方面,系统存储器304包括与先前提交的图查询相关联的一个或多个amq过滤器140。例如,操作系统305适合于控制计算设备300的操作。此外,各方面结合图形库、其他操作系统或任何其他应用程序来实践,并且不限于任何特定应用或系统。该基本配置在图3中由虚线308内的那些组件示出。根据一个方面,计算设备300具有附加特征或功能。例如,根据一个方面,计算设备300包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种附加存储在图3中由可移动存储设备309和不可移动存储设备310示出。

如上所述,根据一个方面,多个程序模块和数据文件存储在系统存储器304中。当在处理单元302上执行时,程序模块306(例如,amq过滤器140的处理程序)执行的处理包括但不限于图2所示的方法200的一个或多个阶段。根据一个方面,根据示例使用其他程序模块,并且包括诸如电子邮件和联系人应用程序、文字处理应用程序、电子表格应用程序、数据库应用程序、幻灯片演示应用程序、绘图或计算机辅助应用程序等之类的应用程序。

根据一个方面,计算设备300具有一个或多个输入设备312,诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等。根据一个方面还包括输出设备314,诸如显示器、扬声器、打印机等。上述设备是示例,可以使用其他设备。根据一个方面,计算设备300包括允许与其他计算设备318通信的一个或多个通信连接316。合适的通信连接316的示例包括但不限于射频(rf)发射器、接收器和/或收发器电路;通用串行总线(usb),并行和/或串行端口。

这里使用的术语计算机可读介质包括计算机存储介质。计算机存储介质包括以用于存储例如计算机可读指令、数据结构或程序模块的信息的任何方法或技术实现的易失性和非易失性,可移动和不可移动介质。系统存储器304、可移动存储设备309和不可移动存储设备310都是计算机存储介质示例(即,存储器存储)。根据一个方面,计算机存储介质包括ram、rom、电可擦除可编程只读存储器(eeprom)、闪存或其他存储器技术、cd-rom、数字通用盘(dvd)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备或可以用于存储信息并且可以由计算设备300访问的任何其他制品。根据一个方面,任何这样的计算机存储介质是计算设备300的一部分。计算机存储介质不包括载波或其他传播的数据信号。

根据一个方面,通信介质由计算机可读指令、数据结构、程序模块或已调制数据信号中的其他数据(诸如载波或其他传输机制)来体现,并且包括任何信息传递介质。根据一个方面,术语“已调制数据信号”描述了具有以对信号中的信息进行编码的方式设置或改变的一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(rf)、红外和其他无线介质的无线介质。

图4示出了用于在监视如上所述的关系图的改变时提高计算效率的系统的体系结构的一个示例。与amq过滤器140相关联地开发,交互或编辑的内容能够存储在不同的通信信道或其他存储类型中。例如,可以使用目录服务422、网络门户424、邮箱服务426、即时消息传递存储428或社交网站430来存储各种文档。服务器420可操作以使用这些类型的系统等等中的任何一种来提高监视关系图的改变的计算效率,如本文所述。根据一个方面,服务器420将amq过滤器140暴露给客户端405a,b,c。作为一个示例,服务器420是通过web或另一网络440提供amq过滤器140的web服务器。作为示例,客户端计算设备被实现并体现在个人计算机405a、平板计算设备405b或移动计算设备405c(例如,智能电话)或其他计算设备中。

例如,以上参考根据方面的方法、系统和计算机程序产品的框图和/或操作图示描述了实现方式。框中记录的功能/动作可以不按任何流程图所示的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能/动作。

本申请中提供的一个或多个示例的描述和说明不旨在以任何方式限制或限制所要求保护的范围。本申请中提供的方面,示例和细节被认为足以传达占有并使其他人能够制作和使用最佳模式。实现方式不应被解释为限于本申请中提供的任何方面、示例或细节。无论是组合地还是单独地示出和描述,旨在选择性地包括或省略各种特征(结构和方法)以产生具有特定特征集的示例。已经提供了本申请的描述和说明,本领域技术人员可以设想落入本申请中体现的总体发明构思的更广泛方面的精神内的变型、修改和替换示例,它们不脱离更宽泛的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1