CN107004024A - 上下文驱动的多用户通信 - Google Patents

上下文驱动的多用户通信 Download PDF

Info

Publication number
CN107004024A
CN107004024A CN201580067705.8A CN201580067705A CN107004024A CN 107004024 A CN107004024 A CN 107004024A CN 201580067705 A CN201580067705 A CN 201580067705A CN 107004024 A CN107004024 A CN 107004024A
Authority
CN
China
Prior art keywords
record
data
context data
user
stored
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
Application number
CN201580067705.8A
Other languages
English (en)
Other versions
CN107004024B (zh
Inventor
D.A.哈丁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107004024A publication Critical patent/CN107004024A/zh
Application granted granted Critical
Publication of CN107004024B publication Critical patent/CN107004024B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种上下文驱动的多用户系统可以包括向(一个或者多个)计算设备复制用户相关的上下文数据的(一个或者多个)合适子集的(一个或者多个)分布式计算资源。复制服务器可以接收与所存储的上下文数据相对应的更新记录,以及至少部分上基于其确定传播记录。每个传播记录可以与所述上下文数据的相应的、不同的合适子集相对应。所述复制服务器可以将所述传播记录发射给相应的复制客户端。复制客户端可以接收传播记录,以及作为响应,对本地上下文数据进行修改。所述复制客户端可以接收数据记录,以及作为响应并且使用所述本地上下文数据来确定更新记录。所述计算设备可以发射所确定的更新记录。服务器可以接收引用数据源的查询指定,以及将所述查询指定发射给所述多用户系统的复制客户端,所述客户端是与所述数据源相对应的。

Description

上下文驱动的多用户通信
背景技术
诸如个人计算机、智能电话和平板型设备这样的计算设备可以充当用于访问诸如在线技术支持系统、多用户游戏系统和其它多用户系统这样的多种多用户系统的用户门户。这样的计算设备可以与多用户系统的服务器通信以便在系统的用户之间传达信息。多用户系统一般被配置为,基于用户在系统定义的用户组中的成员关系提供对所存储的信息的访问。这可能给可能不能够访问期望的信息或者可能被要求传输或者搜遍大量可用信息以找到期望的信息的用户带来不便。额外地,用户在与系统交互时可能被要求多次提供相同的信息。
发明内容
本公开内容描述了用于管理多用户系统中的上下文和查询的技术。本文中描述的技术可以在(一个或者多个)计算设备之间复制上下文或者发射将在合适的(一个或者多个)计算设备上被执行的查询。本文中的一些技术可以降低带宽使用和处理器负载,同时改进在定位期望的信息时的用户效率。
在一些示例中,一种内容驱动的多用户系统可以包括(一个或者多个)分布式计算资源,例如,向例如复制客户端这样的(一个或者多个)计算设备复制用户相关的上下文数据的(一个或者多个)合适子集的复制服务器。一种示例方法可以包括:将上下文数据存储在所述复制服务器上,所述上下文数据是与一个或多个用户与或者经由多用户系统进行的交互相关的。更新记录可以在(一个或者多个)分布式计算资源处被接收,例如在复制服务器处。更新记录可以与所存储的上下文数据相对应,其中,可以至少部分上基于更新记录修改所存储的上下文数据。传播记录可以至少部分上基于所接收的更新记录被确定。每个传播记录可以与上下文数据的相应的、不同的合适子集相对应。传播记录可以被发射给例如相应的复制客户端。一种示例复制客户端可以被配置为,接收传播记录,以及,作为响应,修改本地上下文数据。确定和发射传播记录可以降低带宽使用,以及通过为每个计算设备提供仅被需要或者被批准由该计算设备访问的数据来提高安全性。响应于所接收的更新记录发射传播记录可以通过在设备的(一个或者多个)用户请求对信息的访问之前将该信息存储在那个(那些)计算设备中减少访问信息的等待时间。
在一些示例中,诸如复制客户端这样的计算设备可以经由其用户界面接收数据记录,以及,作为响应和使用本地上下文数据确定更新记录。计算设备可以发射所确定的更新记录。
一种示例服务器可以被配置为,接收引用多个数据源中的一个或多个数据源的查询指定,至少部分上基于所接收的查询指定选择对于所述上下文数据的合适子集的指示,以及,将所述查询指定发射给与所述子集指示中的所选择的一个子集指示相对应的所述多用户系统的复制客户端,例如,发射给保存了所指定的查询的输入数据的计算设备。这可以通过减少为组装查询的输入而将在计算设备之间被传输的数据的量而降低带宽使用。
提供本概要以便以简化形式介绍下面在详细说明中进一步描述的概念的选择。本概要不打算标识所要求保护的主题的关键特征或者必要特征,其也不打算被用作在确定所要求保护的主题的范围时的辅助。例如,术语“技术”可以在被上面描述的上下文允许时和贯穿本文档指(一个或者多个)系统、(一个或者多个)方法、计算机可读指令、(一个或者多个)模块、算法、硬件逻辑和/或(一个或者多个)操作。
附图说明
参考附图描述了详细说明。在附图中,参考标号的最左(一个或者多个)数字标识了该参考标号在其中第一次出现的图。不同的图中的相同的(一个或者多个)标号指示相似或者相同的项目。
图1是描绘根据本文中描述的一些示例的用于实现上下文管理或者上下文驱动的处理的示例环境的方框图。
图2是图示了根据本文中描述的一些示例的用于实现上下文驱动的多用户系统的示例技术的方框图。
图3是根据本文中描述的一些示例的示例客户支持用户界面的图形化的表示。
图4是示出了根据本文中描述的一些示例的分布式计算资源的示例部件的原理图。
图5是示出了根据本文中描述的一些示例的计算设备的示例部件的原理图。
图6是图示了根据本文中描述的一些示例的用于传播对上下文数据的变更的示例过程的流程图。
图7是图示了根据本文中描述的一些示例的用于在分布式系统中管理查询的示例过程的流程图。
图8是图示了根据本文中描述的一些示例的用于在分布式系统中管理上下文数据的传播的示例过程的流程图。
图9是图示了根据本文中描述的一些示例的用于在分布式系统中管理上下文数据的示例过程的流程图。
图10是图示了根据本文中描述的一些示例的用于在分布式系统中管理上下文数据的示例过程的流程图。
图11是图示了根据本文中描述的一些示例的用于在分布式系统中处理上下文数据的示例过程的流程图。
图12是图示了根据本文中描述的一些示例的用于在分布式系统中管理上下文数据的传播的示例过程的流程图。
图13是图示了根据本文中描述的一些示例的用于在分布式系统中修改本地上下文数据的示例过程的流程图。
图14是图示了根据本文中描述的一些示例的用于在分布式系统中基于对本地上下文数据的变更修改上下文数据的示例过程的流程图。
图15是图示了根据本文中描述的一些示例的用于基于对本地上下文数据的变更而变更用户界面的形式或者内容的示例过程的流程图。
具体实施方式
概述
本文中描述的示例提供了用于在多用户系统中的计算设备之间复制数据库子集(“上下文管理”)和用于在计算设备之间分布数据库查询(“查询管理”)的技术和结构。上下文管理可以为用户提供期望的信息,同时减少对于传输或者处理不期望或者相关的信息的需求。查询管理可以改进数据库搜索或者其它查询的速度和效率,这是通过导致这样的查询在输入数据在其上轻松可得的多用户系统中的计算设备上被执行来达到的。
本文中描述的示例对“上下文”进行管理。如本文中使用的,术语“上下文”指被多用户系统存储或者控制的可能是与一个或多个用户与或者经由多用户系统进行的(一个或者多个)交互相关的信息。通过示例而非限制,上下文数据可以包括关于用户的产品和/或服务的信息、与产品和/或服务相关的用户偏好信息、关于用户经由多用户系统进行的之前的交互的历史信息、由多用户系统响应于这样的交互采取的行动等。(一个或者多个)交互可以是用户之间的,不论用户并发地还是在时间上隔开地访问系统。(一个或者多个)交互也可以是一个或多个用户与例如自动化帐户管理这样的由系统提供的服务之间的。系统的用户可以是人类或者执行用于执行预定的功能的自动化“代理”软件的计算设备。
多用户系统的每个用户具有对上下文数据的相应合适子集(即,少于全部的上下文数据)的访问,以及可以将该合适子集复制(拷贝)到该用户正在用于访问多用户系统的计算设备上。“本地上下文数据”指上下文数据的合适子集的副本。本地上下文数据位于用户的计算设备上。用户的合适子集可以在范围上随时间变更,这取决于该用户或者多用户系统的其它用户的活动。提供合适子集给予每个用户对相关信息的访问,而不具有相比于复制上下文数据自身的减少的带宽和处理器负载。
多用户系统可以提供大致上实时的“推送”对本地上下文数据的更新。这可以帮助确保多用户系统的每个用户及时地具有对与该用户的角色相关的上下文信息的访问,以及还可以减少系统中的等待时间。例如,在用户Alice变更Alice的本地上下文数据的元素时,Alice的计算设备可以将该变更传送给多用户系统的服务器。服务器然后可以将该变更或者该变更的后果传播给用户Bob的计算设备。多用户系统可以利用由Bob作出的变更相反地提供传播以便更新Alice的计算设备。响应于用户Bob的活动更新用户Alice的合适子集可以减少例如Alice在Bob的数据上运行的数据库查询的等待时间。对于这样的可以从Alice的合适子集检索Bob的数据的查询,Alice不必在运行查询之前等待数据从Bob被检索出来。
额外地,等待时间可以例如通过允许Alice和Bob通过与经由高速连接被连接的服务器的链接而非通过彼此的计算设备之间的较慢的直接连接共享数据而被进一步减少。在一些示例中,Alice与在物理上或者跨网络(例如,低跳数或者往返时间)位于她的计算设备附近的服务器通信,以及,Bob与在物理上或者跨网络位于他的计算设备附近的服务器通信。服务器可以经由骨干或者其它高带宽连接被连接。双向传播可以允许Bob和Alice接近实时地共享数据。
等待时间可以被进一步减少,这是通过在基于Alice的行动对上下文数据的更新之前或者与之并行地基于Alice的行动更新Alice的计算设备的本地上下文数据和用户界面,以及同样地,对于Bob的计算设备,基于Bob的行动执行这样的操作。可以经由对由多用户系统提供的变更进行补偿来调和Alice的本地上下文数据与Bob的本地上下文数据之间的任何不一致。这可以允许具有相比于使用常规的ACID(原子性、一致性、隔离性和持久性)事务模型的常规数据库的减少的开销和等待时间的多用户通信。取代ADIC模型而使用对变更进行补偿也可以允许多用户系统支持更多的总用户或者更多的并发用户。
用户可能期望相对于它们的合适子集运行数据库查询。在一些示例中,多用户系统通过将查询传输到将被执行的其它计算设备来管理这样的查询。例如,如果Alice和Bob共享关于Alice的最爱的歌曲的数据,则Bob可能希望定期地运行对于Alice的新的最爱物的查询。多用户系统可以通过将查询传输到Alice的计算设备来管理该查询。由于最爱的歌曲信息在被复制之前被添加到Alice的本地上下文数据,所以查询可以在新的最爱物复制到服务器之前或者与之并行地被高效地运行。这可以减少查询执行的等待时间,比如果查询在复制完成之后在Bob的计算设备上被执行时将可能的那样更快地为Bob提供信息。
在一些示例中,用户的设备、服务器或者多用户系统的其它部件可以包括响应于所指定的对上下文数据或者本地上下文数据的变更而进行触发的规则。例如,在就任何单个用户或者就用户组而言特定的条件出现在上下文数据中时被激活的业务规则可以被实现。被规则触发的部件可以修改上下文数据或者采取其它行动。在一些示例中,被规则触发的部件可以使用机器学习来检测上下文数据中的模式。这可以允许检测跨用户组的共性,允许用户界面针对被该用户组执行的公共任务被精简。
贯穿本公开内容,为清楚起见,呈现了客户寻求伴随产品的支持的非限制的示例(“客户支持示例”)。在该示例中,上下文驱动的多用户系统是可经由互联网或者允许客户和支持技术人员进行通信的另一个网络访问的系统。在该示例中,客户和支持技术人员是多用户系统的用户。上下文驱动的多用户系统可以包括在解决客户问题时为技术人员提供辅助的特征,例如,问题日志记录、票据跟踪或者远程登录能力。额外地或者替换地,上下文驱动的多用户系统可以包括与为客户呈现反映该用户的上下文信息的信息和选项相关联的特征。
一些现有技术的方案已在服务器之间拷贝整个数据集。然而,这样的拷贝可以消耗大量带宽和时间。在本文中的一些示例中,仅复制具体的上下文子集可以提供对公共信息的安全的访问,而具有减少的等待时间和网络负载。对上下文子集的复制还可以允许向诸如智能电话、智能手表或者其它客户端设备这样的具有有限的存储装置的设备上的复制。
一些用于传播上下文更新的算法可以包括接收与所存储的上下文数据相对应更新记录。多个传播记录可以至少部分上基于所接收的更新记录被确定。传播记录中的每个传播记录可以与所存储的上下文数据的相应的、不同的合适子集相对应。多个传播记录可以经由一个或多个通信接口被发射。在一些示例中,计算设备可以经由通信接口接收传播记录。计算设备然后可以至少部分上基于所接收的传播记录修改本地上下文数据。
计算设备可以进一步例如从用户界面接收数据记录。计算设备可以至少部分上基于数据记录和本地上下文数据确定更新记录。计算设备然后可以经由通信接口发射所确定更新记录。这可以提供对上下文数据子集的双向的更新和复制。
在查询管理的一些示例中,复制控制器或者其它计算设备可以包括其上具有上下文数据和多个子集指示的计算机存储介质,每个子集指示标识上下文数据的相应的合适子集。处理单元可以执行用于接收查询指定和至少部分上基于所接收的查询指定选择子集指示中的一个子集指示的指令。处理单元可以进一步执行用于经由通信接口例如向可以处置该查询的计算设备发射所接收的查询指定和所选择的子集指示的标识信息的指令。
参考图1-15进一步描述了用于上下文管理或者查询管理的计算设备和方法的一些环境、配置。尽管本文中描述的许多示例涉及服务器和台式设备,或者涉及智能电话和其它的便携式计算设备,但例如如参考图1讨论的那样,其它类型的计算设备或者分布式计算资源可以被使用。
图示性环境
图1示出了上下文管理或者其它上下文驱动的系统可以在其中运行或者诸如本文中描述的那些方法这样的上下文更新方法、查询管理方法和其它方法可以在其中被执行的示例环境100。所图示的部件可以是如本文中描述的上下文驱动的多用户系统的部件。在所图示的示例中,环境100的一些设备和/或部件包括分布式计算资源102(1)-102(M)(例如,在本文中单个地或者集体地用参考标号102来引用的计算设备),其中,M是任何大于或者等于1的整数。分布式计算资源102可以经由一个或多个网络106与彼此和与计算设备104(1)-104(N)(例如,在本文中单个地或者集体地用参考标号104来引用的计算设备)通信,其中,N是任何大于或者等于1的整数。尽管被图示为台式计算机、膝上型计算机、平板型计算机或者移动电话,但分布式计算资源102和/或(一个或者多个)计算设备104可以包括多种多样的设备类型,而不限于一种具体类型的设备。
通过示例而非限制,分布式计算资源102可以包括但不限于诸如web服务器(例如,102(1))这样的服务器计算机、诸如数据库服务器(例如,102(2))这样的存储系统或者包括由诸如MICROSOFT AZURE或者AMAZON WEB SERVICE这样的远程或者云计算服务运行的服务器的其它服务器。(一个或者多个)计算设备104可以包括但不限于:台式计算机(例如,104(1))、膝上型计算机、瘦客户端、终端或者其它移动计算机(例如,104(3))、智能电话、移动电话、平板型计算机、移动电话平板型混合设备、个人数字助理(PDA)或者其它电信设备(例如,104(N))、诸如车辆控制系统、车辆安全系统或者车辆的电子钥匙这样的汽车用计算机、便携式或者基于控制台的游戏设备或者诸如启用网络的电视机、机顶盒、媒体播放器、照相机或者个人录像机(PVR)这样的其它娱乐设备、计算机导航客户端计算设备、包括全球定位系统(GPS)设备或者其它基于卫星的导航系统设备的基于卫星的导航系统设备、诸如智能手表或者生物测定或者医疗传感器这样的可穿戴计算机、诸如生物测定或者医疗传感器这样的植入式计算设备、用于包括在计算设备、家电或者被配置为参与或者实现如本文中描述的上下文管理(例如,出于复制和数据访问目的)或者如本文中描述的查询管理(例如,为了处理数据时的效率)的(一个或者多个)其它计算设备中的集成部件。
不同的设备或者设备类型可以具有不同的上下文管理查询管理方案或者需求。例如,便携式计算设备可以规律地连接到网络和从网络断开。这样的设备可能需要用于在被连接时快速地复制本地上下文数据的小集合的高突发带宽。这样的设备可以在被断开时保存本地上下文数据的变更,以使得一旦该设备被连接则那些变更可以被复制到其它用户。诸如办公计算机这样的台式计算机一般具有稳定的网络连接,因此可能比它们需要突发带宽更需要实时交互的低等待时间。
在一些示例中,(一个或者多个)分布式计算资源102可以实现一个或多个复制控制器。在这些示例中的一些示例中,(一个或者多个)计算设备104可以实现向(一个或者多个)复制控制器提供数据或者从(一个或者多个)复制控制器接收数据的(一个或者多个)复制客户端。(一个或者多个)复制控制器与(一个或者多个)计算设备104上的模块协作,以便为(一个或者多个)计算设备104提供对上下文数据118的公共集合的相应的合适子集的访问。贯穿本公开内容,计算设备104可以具有如下面参考本地上下文数据132讨论的相应的、不同的合适子集。一个合适子集可以在数据的一个或多个项的存在、不存在或者值方面与另一个合适子集不同。贯穿本公开内容,多用户系统的管理员可以具有经由他们的(一个或者多个)计算设备104对上下文数据118的整体的访问。在本文中对“用户”的讨论不包括以在其中他们具有这样的访问的角色起作用的管理员。
在一些示例中,计算设备104可以经由(一个或者多个)网络106与彼此、与分布式计算资源102或者与其它计算设备通信。例如,(一个或者多个)网络106可以包括诸如互联网这样的公共网络、诸如机构或者个人内联网这样的私有网络或者私有和公共网络的(一个或者多个)组合。(一个或者多个)网络106可以还包括任何类型的有线或者无线网络,包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、有线电视网、WI-FI网络、WiMAX网络、移动通信网络(例如,3G、4G等)或者其任意组合。(一个或者多个)网络106可以使用诸如例如是基于分组或者基于数据报的协议这样的通信协议,诸如互联网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、其它类型的协议或者其组合。此外,(一个或者多个)网络106还可以包括促进网络通信或者构成网络的硬件基础设施的一些设备,诸如交换机、路由器、网关、接入点、防火墙、基站、复示器、骨干设备等。(一个或者多个)网络106还可以包括使用一些拓扑的总线协议促进计算设备104之间的通信的设备,例如纵横交换机、INFINIBAND交换机或者FIBRE CHANNEL交换器或者集线器。
不同的网络具有例如带宽、等待时间、可访问性(开放的、已通告但受保护的、或者未通告的)或者覆盖面积这样的不同的特性。复制传输(例如,下面讨论的更新记录和传播记录)的时序和数据速率可以取决于给定的计算设备被连接到其的具体网络的特性而被调整。
在一些示例中,(一个或者多个)网络106可以进一步包括使能实现与无线网络的连接的设备,诸如无线接入点(WAP)。示例支持通过经由某些电磁频率(例如,射频)发送和接收数据的WAP实现的连接,这样的WAP包括支持电气和电子工程师协会(IEEE)802.11标准(例如,802.11g、802.11n等)、其它标准(例如,蓝牙、诸如GSM、LTE或者WiMAX这样的蜂窝电话标准)或者其多项或者其组合的WAP。其它示例支持特别是通过路由器、交换机或者支持IEEE 802.3以太网标准的集线器、支持RS-232标准的点到点链路、或者支持IBM TOKENRING或者IEEE-488标准的网络接口或者其多项或者其组合实现的有线连接。
在插图108处图示了示例分布式计算资源102(1)的细节。示例分布式计算资源102(1)的细节可以代表(一个或者多个)分布式计算资源102中的其它分布式计算资源102。然而,分布式计算资源102中的每个分布式计算资源102可以包括额外的或者替换的硬件和/或软件部件。仍然参考图1的示例,分布式计算资源102(1)可以包括诸如经由总线114被可运行地连接到一个或多个计算机可读介质112的一个或多个处理单元110,总线114在一些实例中可以包括系统总线、数据总线、地址总线、PCI总线、迷你PCI总线、外设部件互连特快总线(PCIe)总线和任何多种多样的本地、外设或者独立总线中的一项或多项或者其任意组合。在一些未示出的示例中,(一个或者多个)分布式计算资源102中的一个分布式计算资源102中的(一个或者多个)处理单元110中的一个或多个处理单元110可以例如经由通信接口116(在下面讨论)和网络106被可运行地连接到(一个或者多个)分布式计算资源102中的一个不同的分布式计算资源102中的计算机可读介质112。
在一些示例中,多个处理单元110可以不同于或者除了网络106之外还通过总线114交换数据。尽管处理单元110被描述为位于单个分布式计算资源102上,但不同的处理单元110在一些示例中也可以位于不同的分布式计算资源102上。在一些示例中,至少两个处理单元110可以位于相应的、不同的分布式计算资源102上。在这样的示例中,相同的分布式计算资源102上的多个处理单元110可以使用该分布式计算资源102的总线114来交换数据,而不同的分布式计算资源102上的处理单元110可以经由(一个或者多个)网络106交换数据。
(一个或者多个)处理单元110可以是或者包括一个或多个单核处理器、多核处理器、中央处理单元(CPU)、图形处理单元(GPU)、通用图形处理单元(GPGPU)或者例如经由来自模块或者API的编程被配置为执行本文中描述的功能的硬件逻辑部件。例如而不限于,可以在处理单元110中或者作为处理单元110被使用的硬件逻辑单元的图示性的类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统(SOC)、复杂可编程逻辑设备(CPLD)、数字信号处理器(DSP)和其它类型的可定制处理器。例如,处理单元110可以代表混合型设备,诸如包括被嵌入在FPGA结构中的CPU核的来自ALTERA或者XILINX的设备。这些或者其它的硬件逻辑部件可以独立地运行,或者,在一些实例中,可以由CPU驱动。在一些示例中,(一个或者多个)分布式计算资源102(1)-102(M)中的至少一些分布式计算资源可以包括多个多种类型的处理单元110。例如,分布式计算资源102(1)中的处理单元110可以包括一个或多个GPGPU和一个或多个FPGA的组合。
计算机可读介质112可以例如存储上下文数据118、保存操作系统(为简洁起见被省略)和复制框架120的可执行指令的(一个或者多个)模块以及可以被(一个或者多个)处理单元110加载和执行的其它模块、程序或者应用。例如,用于执行本文中的流程图的操作的程序代码(例如,被存储的SQL或者LINQ查询)可以例如经由网络106从例如分布式计算资源102(1)这样的服务器被下载到例如分布式计算资源102(2)这样的数据库服务器,以及被分布式计算资源102(1)中的一个或多个处理单元110执行。
例如计算机可读介质112和计算机可读介质126(在下面讨论)这样的本文中描述的计算机可读介质包括计算机存储介质和/或通信介质。计算机存储介质包括有形存储单元,诸如易失性存储器、非易失性存储器和/或使用任何用于存储诸如计算机可读指令、数据结构、程序模块或者其它数据这样的信息的方法或者技术实现的其它持久的和/或辅助的计算机存储介质、可移除和非可移除计算机存储介质。计算机存储介质包括被包括在作为设备的一部分或者位于设备的外部的设备或者硬件部件中的有形或者物理形式的介质,包括而不限于可以被用于存储和维护用于被计算设备访问的信息的随机存取存储器(RAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、相变存储器(PRAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、压缩盘只读存储器(CD-ROM)、数字多功能光盘(DVD)、光学卡或者其它光学存储介质、盒式磁带、磁带、磁盘存储装置、磁卡或者其它磁性存储设备或者介质、固态存储器设备、存储阵列、网络附接的存储装置、存储区域网络、寄宿的计算机存储装置或者存储器、存储设备和/或存储介质。
与计算机存储介质相反,通信介质可以将计算机可读指令、数据结构、程序模块或者其它数据体现在诸如载波这样的经调制的数据信号或者其它传输机制中。如本文中定义的,计算机存储介质不包括通信介质。
在一些示例中,计算机可读介质112可以存储可以被(一个或者多个)处理单元110执行的指令,如上面讨论的,处理单元110可以代表被并入分布式计算资源102的处理单元。计算机可读介质112可以额外地或者替换地存储可被外部的处理单元执行的指令,诸如被上面讨论的任何类型的外部CPU或者外部处理器执行的指令。在一些示例中,例如CPU、GPU或者硬件逻辑设备这样的至少一个处理单元110被并入分布式计算资源102,而在一些示例中,例如CPU、GPU或者硬件逻辑设备中的一项或多项这样的至少一个处理单元110位于分布式计算资源102的外部。
分布式计算资源102还可以包括用于使能实现分布式计算资源102与上下文管理或者查询管理中涉及的其它连网的分布式计算资源102或者(一个或者多个)其它的分布式计算资源或者计算设备104之间的通过(一个或者多个)网络106的有线或者无线通信的一个或多个通信接口116。这样的(一个或者多个)通信接口116可以包括一个或多个收发机设备,例如,诸如以太网NIC这样的网络接口控制器(NIC)或者用于通过网络发送和接收通信的其它类型的收发机设备。通信接口116和本文中描述的其它通信接口可以是单宿主的或者多宿主的,以及可以包括任何数量的端口。处理单元110可以通过相应的(一个或者多个)通信接口116交换数据。在一些示例中,通信接口116可以是PCIe收发机,以及网络106可以是PCIe总线。在一些示例中,通信接口116可以包括而不限于用于蜂窝(3G、4G或者其它的蜂窝)、WI-FI、超宽带(UWB)、蓝牙或者卫星传输的收发机。通信接口116可以包括有线I/O接口,诸如以太网接口、串行接口、通用串行总线(USB)接口、INFINIBAND接口或者其它的有线接口。为简单起见,从所图示的分布式计算资源102中省略了这些和其它的部件。
在插图122处图示了示例计算设备104(1)的细节。示例计算设备104(1)的细节可以代表(一个或者多个)计算设备104中的其它计算设备104。然而,每个计算设备104可以包括额外的或者替换的硬件和/或软件部件。仍然参考图1,计算设备104(1)可以包括诸如经由总线128被可运行地连接到一个或多个计算机可读介质126的一个或多个处理单元124,总线128可以包括上面参考总线114讨论的任何类型的总线。在一些未示出的示例中,(一个或者多个)计算设备104中的一个计算设备104中的(一个或者多个)处理单元124中的一个或多个处理单元124可以例如经由通信接口130(在下面讨论)和网络106被可运行地连接到(一个或者多个)计算设备104中的一个不同的计算设备104中的计算机可读介质126。
在一些示例中,多个处理单元124可以不同于或者除了网络106之外还通过总线128交换数据。尽管处理单元124被描述为位于单个计算设备104上,但处理单元124在一些示例中也可以位于不同的计算设备104上。在一些示例中,处理单元124中的至少两个处理单元124可以位于不同的计算设备104上。在这样的示例中,相同的计算设备104上的多个处理单元124可以使用该计算设备104的总线128来交换数据,而不同的计算设备104上的处理单元110可以经由(一个或者多个)网络106交换数据。(一个或者多个)处理单元124可以是或者包括上面参考(一个或者多个)处理单元110列出的类型中的任一种类型。例如,计算设备104(1)中的处理单元124可以是一个或多个微控制器和一个或多个ASIC的组合。
计算机可读介质126可以例如存储本地上下文数据132(在下面讨论)、操作系统(为简洁起见被省略)、交互框架134和可以被(一个或者多个)处理单元124加载和执行的其它模块、程序或者应用的可执行指令。例如,用于执行本文中的流程图的操作的程序代码可以例如经由网络106从例如分布式计算资源102(1)这样的服务器被下载到例如计算设备104(1)这样的客户端,以及被计算设备104(1)中的一个或多个处理单元124执行。在一些示例中,分布式计算资源102(1)包括web服务器,计算设备104(1)包括具有JAVASCRIPT或者其它代码执行引擎的web浏览器,并且该web浏览器下载和执行由web服务器提供的代码。这样的代码可以例如包括分布式应用的用户界面代码,包括在分布式计算资源102(1)和计算设备104(1)两者上运行的代码。
本地上下文数据132是上下文数据118的合适子集,并且有时被称为上下文数据118的“投影”。任何数量的(一个或者多个)计算设备104可以与具有具体的上下文数据118的(一个或者多个)分布式计算资源102通信。(一个或者多个)计算设备104中的每个计算设备104可以在它相应的本地上下文数据132中复制上下文数据118的子集,该子集可以是与针对(一个或者多个)计算设备104中的任何其它计算设备104的子集相同或者不同的。在使用SQL或者其它的表/记录/列数据库的示例中,本地上下文数据132的每个集合可以例如包括上下文数据118中的少于全部的列、少于全部的记录或者少于全部的表。可以基于数据库的属性(例如,仅所选择的列)、基于数据的属性(例如,仅在所选择的列中具有特定的值或者值的范围的行,即使那些行的全部列被返回)或者基于其任何组合选择本地上下文数据132的每个集合的内容。
在一些示例中,复制框架120可以在(一个或者多个)计算设备104上被执行。在一些示例中,交互框架134可以在(一个或者多个)分布式计算资源102上被执行。例如,在机房或者数据中心监控应用中,复制框架120可以在平板型或者膝上型计算机上被执行,以及,交互框架134可以在安装在机架上的服务器上被执行。下面讨论了这样的和其它的示例。
在一些示例中,计算机可读介质126可以存储可被(一个或者多个)处理单元124执行的指令,如上面讨论的,(一个或者多个)处理单元124可以代表被并入计算设备104的处理单元。诸如上面参考计算机可读介质112讨论的那样,计算机可读介质126可以额外地或者替换地存储可以被外部的处理单元执行的指令。在一些示例中,例如CPU、GPU或者硬件逻辑设备这样的至少一个处理单元124被并入计算设备104,而在一些示例中,例如CPU、GPU或者硬件逻辑设备中的一项或多项这样的至少一个处理单元124位于计算设备104的外部。
计算设备104还可以包括用于使能实现计算设备104与上下文管理或者查询管理中涉及的其它连网的计算设备104或者(一个或者多个)其它计算设备之间的通过(一个或者多个)网络106的有线或者无线通信的一个或多个通信接口130。这样的(一个或者多个)通信接口130和与之通信的网络106可以包括上面参考通信接口116讨论的设备或者网络的类型中的任一种类型。处理单元124可以通过相应的(一个或者多个)通信接口130交换数据。为简洁起见,从所图示的计算设备104中省略了这些和其它的部件。
计算设备104还可以包括用户界面136。用户界面136可以包括被配置为用于与用户或者与与该用户相关的另一个计算设备(未示出)的通信的一个或多个固有的和/或外设输出设备。输出设备的示例可以包括显示器、打印机、音频扬声器、寻呼机或者其它的音频输出设备、振动马达、线性振动器或者其它触觉输出设备等。
用户界面136可以包括一个或多个固有的和/或外设输入设备。外设输入设备可以是用户可操作的,或者可以被配置为用于来自其它计算设备的输入。输入设备的示例可以例如包括键盘、键区、鼠标、轨迹球、钢笔传感器或者智能笔、光笔或者光枪、诸如操纵杆和游戏手柄这样的游戏控制器、诸如麦克风、语音识别设备或者语声识别设备这样的语音输入设备、其它听觉输入、诸如触摸屏、加速度计、抓握传感器这样的触觉输入设备、手势输入设备或者其它触觉输入等。
图示性部件
图2是图示了用于实现上下文驱动的多用户系统的示例技术200的方框图。示例技术200可以包括复制框架120和交互框架134。复制框架120可以使用如上面参考图1讨论的分布式计算资源102来实现。交互框架134可以使用如上面参考图1讨论的计算设备104来实现。分布式计算资源102和计算设备104可以经由相应的通信接口116、130进行通信。
在上面介绍的客户支持示例中,客户正在使用计算设备104(1)来请求支持,以及,客户支持技术人员正在使用计算设备104(2)来提供支持。计算设备104(2)可以包括在文本中参考计算设备104(1)描述的部件,为简洁起见,未示出那些部件。计算设备104(1)、104(2)被连接到网络106,并且被配置为经由分布式计算资源102互相通信。其它配置是可能的,并且在本文中描述了额外的示例。
多用户系统是上下文驱动的。即,计算设备104(1)、104(2)具有对如上面描述的上下文的相应部分的基本实时的访问。计算设备104(1)、104(2)中的一个计算设备可以例如通过在数据库中添加、移除或者改变信息来修改上下文。修改因此基本实时地对计算设备104(1)、104(2)中的另一个计算设备可见。上下文可以被分布式计算资源102存储和管理。
在客户支持示例和其它的示例中,计算设备104(1)的交互框架134经由用户界面136接收对于支持的请求。例如,用户可以使用web浏览器访问支持网站,或者启动支持应用或者智能电话应用。请求被交互框架134接收。如本文中使用的,术语“数据记录”指可以被用于或者是在修改本地上下文数据132时有用的例如通过用户界面136或者经由(一个或者多个)通信接口130被提供给交互框架134的数据。
继续客户支持示例,响应于指示用户已访问支持网站的数据记录,交互框架134确定本地上下文数据132是否应当被修改,并且作出任何合适的修改。交互框架134可以额外地或者替换地作出例如由对本地上下文数据132的修改触发的对用户界面136的形式或者内容任何期望的变更。例如,交互框架134可以在用户导航到支持网站时将本地上下文数据132修改为具有请求的日期和时间,以及将用户界面136的形式或者内容变更为指示所请求的页面正在加载(例如,通过显示进度条或者下拉列表)。交互框架134确定是否对本地上下文数据132的变更中的任何变更应当被复制到其它设备,并且经由通信接口130发射任何合适的更新记录。例如,交互框架134可以发射包括关于所接收的对于支持网页的请求和关于请求支持的用户的身份的上下文信息的更新记录。
分布式计算资源102从计算设备104接收(一个或者多个)更新记录,并且将它们传递给复制框架120。复制框架120确定上下文数据118是否应当被修改,并且如果是,则作出合适的修改。例如,复制框架120可以记录关于所接收的对于支持网页的请求的上下文信息。
响应于上下文数据118的变更,或者响应于经由通信接口116作出的数据发射或者接收,复制框架120可以激活一个或多个观察者单元202。观察者单元202可以包括在与复制框架120相同的分布式计算资源102上或者在不同的(一个或者多个)分布式计算资源102上执行的计算机程序指令或者逻辑。复制框架120可以例如经由通信接口116、例如对动态链接库的过程调用或者(一个或者多个)分布式计算资源102的过程间通信(IPC)或者远程过程调用(RPC)子系统与(一个或者多个)观察者单元202通信。(一个或者多个)观察者单元202可以例如使用诸如C#这样的MICROSOFT.NET语言或者诸如JAVASCRIPT这样的语言被实现为软件插件。
观察者单元202可以对来自所选择的(一个或者多个)源、具有所选择的(一个或者多个)类型、、具有所选择的(一个或者多个)值或者(一个或者多个)值的(一个或者多个)范围或者那些项的任何组合的信息作出响应。观察者202对其作出响应的准则在本文中可以被称为其“触发条件”。每个观察者单元202可以指定其自己的触发条件,或者,多个观察者单元202可以共享触发条件。每个观察者单元202可以额外地或者替换地指定其自己的输入准则。“输入准则”指示对应的观察者单元202预期接收哪些数据以进行处理。每个观察者单元202可以指定其自己的输入准则,或者多个观察者单元202可以共享输入准则。在一个示例中,输入准则包括将针对所存储的上下文数据118被执行的数据库查询,并且对应的触发条件是数据库查询返回至少一行(即,上下文数据118中的至少一些数据与数据库查询中阐述的条件相匹配)。
观察者单元202可以响应于信息满足该观察者单元202的触发条件采取任何期望的行动。在一些示例中,观察者单元202可以响应于所接收的信息而请求复制框架120修改上下文数据118。对修改的该请求允许上下文数据118的变更,以触发上下文数据118的其它变更。对上下文数据118中的具体变更的响应可以取决于在任何给定的时间哪个(哪些)观察者单元202被运行地耦合到复制框架120而不同。
在客户支持示例中,观察者单元202可以响应于接收支持请求进行触发。该观察者单元202可以访问与提交请求的用户相对应的上下文数据118。上下文数据118可以包括关于该用户的偏好或者背景的信息。观察者单元202可以基于关于偏好或者背景的信息确定被请求的支持网页应当如何被呈现。观察者单元202然后可以使用所确定的呈现将被请求的支持网站发射给计算设备104(1)。额外地或者替换地,观察者单元202可以将上下文数据118修改为指示所确定的呈现。web服务器(例如,在分布式计算资源102或者另一个服务器上运行的)可以例如使用观察者单元202从上下文数据118中检索所确定的呈现,并且具有包括对网页的所确定的呈现的修改的触发条件。web服务器然后可以使用所确定的呈现将被请求的支持网站发射给计算设备104(1)。在下面讨论的图3中示出了对该示例的图示。
在一些示例中,复制框架120包括或者被运行地连接到分析框架204。分析框架204可以执行对上下文数据118或者触发条件的具体集合的除上下文之外的其它信息的分析。例如,分析框架204可以收集对上下文数据118或者上下文数据118的时间点采样的变更,并且执行机器学习,以便确定针对一个或多个观察者单元202的新的或者经修改的触发条件。为简洁起见,未在图2中示出分析框架204的内部细节。分析框架204可以在内部执行处理、请求来自分布式计算资源102(M)的处理或者执行其任何组合。
分析框架204可以作为专用代码或者使用一个或多个观察者单元202被实现。例如,分析框架204可以包括记录观察者单元202,记录观察者单元202对上下文数据118的所选择的变更进行触发,并且将上下文数据118的相关部分拷贝或者摘要到例如分布式计算资源102(2)这样的离线存储装置中,离线存储装置代表数据库服务器。分析框架204还可以包括更新观察者单元202,更新观察者单元202例如从机器学习引擎(未示出)接收新的或者已更新的触发条件,并且将该条件发射给其它的、相关的观察者单元202以进行处理,或者请求复制框架120根据该新条件修改上下文数据118。
在一些示例中,每个计算设备104在该计算设备104的本地上下文数据132中保存上下文数据118的少于全部的数据。在客户支持示例中,用户的计算设备104(1)可以存储包括由该用户作出的服务请求的日期和时间的本地上下文数据132。技术人员的计算设备104(2)可以存储包括该用户的服务历史、计算设备104(1)的服务历史(例如,如果计算设备104(1)已具有多于一个所有者的话)、可能与用户对支持的请求有关的被该用户购买的产品的销售信息和来自已具有与由请求用户经历的问题相似的问题的其它用户的信息的本地上下文数据132。
例如由于来自(一个或者多个)观察者单元202或者分析框架204的请求或者由于经由(一个或者多个)通信接口116进行的数据交换导致的对修改上下文数据118的请求在本文中被称为“更新记录”。在接收更新记录时,复制框架120可以确定例如与相应的(一个或者多个)计算设备104相对应的一个或多个传播记录。复制框架120然后可以将(一个或者多个)传播记录发射给相应的(一个或者多个)计算设备104。继续客户支持示例,在用户请求支持时,在上下文数据118中为该请求记录日志。复制框架120然后将(一个或者多个)传播记录发射给与相关的支持技术人员相对应的(一个或者多个)计算设备104。那些(一个或者多个)计算设备104在相应的本地上下文数据132中为该请求记录日志。发射传播记录可以减少支持技术人员寻找信息花费的时间,提高用户与支持技术人员之间的交互的效率。将传播记录而非整个更新记录发射给(一个或者多个)计算设备104可以通过仅发射每个具体的计算设备104可以利用的信息减少网络带宽。例如,被销售人员使用的(一个或者多个)计算设备104可以在本地上下文数据132中存储关于用户的熟人或者朋友的信息。被支持技术人员使用的(一个或者多个)计算设备104将不需要这样的信息,因此不将该信息发射给这样的设备可以减少带宽使用。
在一些示例中,在(一个或者多个)分布式计算资源102与(一个或者多个)计算设备104之间双向地发射上下文修改(复制)。这在图2中由虚线箭头图形化地代表。箭头206代表更新记录,即,例如由计算设备104(1)主动传输到分布式计算资源102的用于如上面讨论的那样修改上下文数据118的数据。该数据可以包括“拉取”数据(从计算设备104(1)的角度看),例如,利用来自计算设备104(1)的超文本传输协议(HTTP)请求被传输的针对网页的数据。箭头208代表例如在分布式计算资源102的带领下传输的数据。该数据可以包括例如经由web套接字连接传输的“推送”数据。如本文中使用的,“传播记录”包括从分布式计算资源102发射到计算设备104的用于修改本地上下文数据132的数据。在一些示例中,本地上下文数据132如上面讨论的那样仅包括上下文数据118的合适子集。箭头206、208不代表上下文数据118与本地上下文数据132之间的直接连接。作为代替,箭头206、208图示了一些示例中的双向信息流,并且图示了在其中被使用的术语。
经由通信接口116、130进行的通信可以使用各种协议或者格式,例如诸如SOAP服务这样的基于RPC的web服务、REST风格的web服务、web套接字、传输控制协议(TCP)、用户数据报协议(UDP)、NetBIOS或者其它协议。也可以使用诸如安全套接字层(SSL)、OData、OAuth2和OpenID这样的认证、加密和授权标准。在一些示例中,使用REST风格的web服务传输更新记录。在一些示例中,使用web套接字连接传输传播记录。
在一些示例中,交互框架134、复制框架120或者(一个或者多个)观察者单元202中的一项或多项包括例如通过数据管道部件被连接的内部数据过滤器部件。例如,(一个或者多个)观察者单元202可以包括针对相关事件扫描来自复制框架120的上下文数据修改的搜索过滤器、根据修改中的值产生新的值的变换过滤器和对新的值进行格式化以用于包括在上下文数据118中的输出过滤器。过滤器可以包括被配置为处理上下文数据118或者本地上下文数据132中的具体的数据结构的过滤器。交互框架134可以包括用于选择哪些数据记录导致产生更新记录的过滤器和用于选择哪些数据记录触发用户界面变更的分离过滤器。在一些示例中,使用MICROSOFT REACTIVE EXTENSIONS(“Rx”)或者观察者设计模式的其它实现方式来实现数据过滤器部件和数据管道部件。
在一些示例中,上下文驱动的多用户系统可以包括使用数据管道部件和数据过滤器部件(“管道和过滤器”设计模式)实现触发逻辑的观察者单元202或者(一个或者多个)交互框架134。在经由更新记录从本地上下文数据132向上下文数据118或者经由投影记录从上下文数据118向本地上下文数据132复制数据时,可以将被复制的数据提供给处理管线中的数据过滤器部件。这些处理管线中的过滤器部件可以对所选择的变更作出响应,以便提供用于包括在上下文数据118或者本地上下文数据132中的额外的或者经修改的数据。在一些示例中,观察者单元202可以包括响应于Alice的最爱的歌曲列表的变更来计算Alice更喜欢哪些类型的音乐的统计数据的处理管线。那些统计数据可以被添加到上下文数据118,从那里它们可以被复制到Bob的本地上下文数据132。Bob然后可以使用统计数据来为Alice选择生日礼物。在一些示例中,交互框架134可以包括响应于对统计数据的复制确定是否自最后一次Bob为她买专辑以来Alice的音乐品味已显著改变,以及如果是这样则经由用户界面136通知Bob的处理管线。
在一些示例中,上下文驱动的多用户系统提供诸如天气警报这样的地理上本地化的信息。分布式计算资源102包括被配置为生成和发射警报的例如web服务器这样的服务器。例如智能电话的计算设备104被配置为接收和显示警报。上下文可以包括何时给定的用户请求天气信息或者警报、何时警报被递送给该用户、在作出这样的请求或者接收这样的警报时该用户位于何处(例如,用户的智能电话的GPS位置数据)、每个警报的类型、该用户是否例如通过在吐司通知(toast notification)上进行点击来请求与给定的警报相关的额外的信息、或者该用户通常位于哪里的每用户的记录。(一个或者多个)观察者单元202或者分析框架204可以通过修改上下文数据118或者触发条件以使得仅符合每个用户的具体偏好的天气警报将被发送来对上下文和更新记录作出响应。
例如,住在北达科他州的用户可能在冬天不想要暴风雪警报,因为该用户一般预期大雪。然而,在住在亚利桑那州的用户访问北达科他州时,暴风雪警报对于该用户可能是更有用的。类似地,住在亚利桑那州的用户在亚利桑那州可能不想要高温警告,但住在北达科他州的用户在访问亚利桑那州时可能想要高温警告。相应地,示例观察者单元202可以对指示用户针对其请求额外的信息的那些警报的上下文数据作出响应。示例观察者单元202可以预测用户对暴风雪警报还是高温警告更感兴趣,并且将该预测存储在上下文数据118中,从那里该预测可以被复制到用户的(一个或者多个)计算设备104的本地上下文数据132。计算设备104然后可以从本地上下文数据132中检索投影,并且仅显示由该预测指示的天气警报。类似地,上下文数据118可以包括天气警报的频率,该频率例如默认是每天一个。示例观察者单元202可以覆盖正常的频率,以便导致警报在针对用户的区域的龙卷风警告发布时被发送,而不考虑是否用户已接收天气警报。另一个示例观察者单元202可以在用户位于距离该用户的住宅地址多于例如100英里的地方时通过将上下文数据118修改为指示用户应当接收与用户的当前位置而非用户的家庭位置相关的警报对来自用户的对于天气信息的请求作出响应。这可以允许不具有位置传感器的计算设备104调整它们的行为以适应用户的当前的位置。
在一些示例中,上下文驱动的多用户系统提供与管理数据中心中的功率消耗相关的服务。用户包括数据中心的人类操作员、数据中心客户(例如,主机托管客户)和提供指示与数据中心的部件有关的功率消耗、温度、正常运行时间或者其它状态信息的更新记录或者接收用于控制诸如空调系统或者断路器这样的数据中心的控制部件的传播记录或者其它命令的自动化代理或者其它软件或者硬件系统。在一些示例中,数据中心可以具有位于遍及设施的不同的电力电路上的冗余服务器。上下文数据118可以包括功率消耗和断路器跳闸的时间历史。分析框架204可以例如使用神经网络对时间历史进行分析,以便确定很可能导致断路器跳闸的功率消耗的模式。分析框架204然后可以将一个或多个观察者单元202的触发条件修改为对所确定的模式作出响应。在被触发时,那些(一个或者多个)观察者单元202可以将上下文数据118修改为向自动化代理用户指示数据中心的相关部分应当被断电以去除负载,以及网络业务被转移到其它电路上的备份机。这可以增加单个机器和数据中心整体上的正常运行时间,以及降低预期的服务中断的概率。
在一些示例中,上下文驱动的多用户系统是促进用户之间的实时交互和用户之间的简档信息的交换的系统。简档信息可以被存储在上下文数据118中。这样的系统的示例包括可以支持数百或者数千的用户实时交互的多玩家在线游戏系统。在这样的系统中将传播记录限于专用于每个计算设备104的上下文数据118的子集可以显著降低带宽消耗和等待时间。在一些示例中,这样的系统的用户可以将其它用户指定为“朋友”。Alice的朋友的简档信息可以被复制到Alice的本地上下文数据132,以使得她具有对她的朋友的状态信息的低等待时间访问,她的朋友的状态信息例如是每个朋友当前正在玩哪个游戏。在一些示例中,每个用户的计算设备104可以将上下文数据118更新为包括当前的ping时间、被放弃的分组的计数或者对于在线游戏系统来说在选择用于在正在玩给定的游戏的用户之间传输实时游戏信息的网络连接是有用的其它信息。
图3示出了客户支持示例的上下文中的例如参考图2讨论的例如网页300这样的示例客户支持用户界面的图形化表示。网页300是由上下文驱动的多用户系统提供的用于如下面在各种示例中讨论的那样为每个客户呈现反映与该具体的客户相关的上下文数据118的信息和选项的示例界面。网页300具有两个主要部分:在线服务部分302和技术人员呼叫部分304。在线服务部分包括可例如被用户选择以便执行病毒移除(按钮306)或者PC调整(按钮308)的按钮。技术人员呼叫部分304包括可例如被在线聊天、SKYPE或者电话选择以便建立与相应的支持技术人员的通信的按钮310(1)-310(4)。每个按钮306、308、310(1)-310(4)可以包括或者关联例如用于帮助用户决定用户期望哪种形式的支持的额外的信息。在所图示的示例中,每个按钮310(1)-310(4)包括一些组件,为清楚起见,仅在按钮310(1)上标记了这样的组件。这些组件包括技术人员的图片312、技术人员的名字314、基于之前的呼叫的技术人员的排名316和技术人员的主要语言318(由说该语言的国家的旗帜图形化地代表)。这些组件中的全部组件可以被包括在上下文数据118中。
仍然参考图3以及还参考图2,继续客户支持示例,在用户请求网页300时,观察者单元202可以基于来自上下文数据118的关于用户偏好或者背景的信息而确定被请求的网页300应当如何被呈现。例如,该用户或者与作出请求的用户处于相同的人群中的其它用户可能倾向于更喜欢与技术人员交谈而非使用自动化的服务。相应地,观察者单元202可以确定部分304应当在网页300上被呈现在部分302之上。由于用户一般在页面的顶部开始查看网页,将用户更喜欢的选择定位得更靠近顶部可以减少用户在找到更喜欢的选择之前阅读页面花费的时间的量。该定位可以减少用户工作量,以及使与网页300的用户交互更高效。该定位还可以减少被由用户作出的探索性的选择消耗的网络带宽。例如,取代选择病毒移除按钮306,决定不前进,以及然后选择技术人员按钮310(1)-310(4),用户可以首先选择技术人员按钮310(1)-310(4)。使用观察者单元202作出对网页300的安排的确定允许基于上下文数据118中的关于其它用户的信息确定放置,即使用户未具体地指示与页面安排相关的偏好,这也可以提升与网页300的用户交互的效率。
在一些示例中,观察者单元202可以定制网页300的内容以及布局。例如,如果上下文数据118指示请求的用户只说日语或者请求的用户的IP地址处在其它用户通常选择说日语的技术人员的范围中,则观察者单元202可以指导技术人员按钮310(3)(说日语的Matsuko Y.)被呈现,以及技术人员按钮310(1)、310(2)和310(4)在网页300上被隐藏或者以其它方式不被呈现或者以比技术人员按钮310(3)更不可见的方式(例如,更小或者更暗)被呈现。
网页300的布局可以另外或者替换地由计算设备104(1)的交互框架134确定。在一些示例中,网页300包括例如采用JAVASCRIPT、VBSCRIPT或者其它脚本语言的可被交互框架134执行为从本地上下文数据132中检索数据和调整网页300的代码。在用户请求网页300时,代码和初始布局被立即返回,以便减少初始页面加载时间。交互框架134然后可以执行所接收的代码中的至少一些代码,以便例如经由之前所接收的传播记录使用已被存储在本地上下文132中的数据显示网页300的元素。
在页面被加载时,交互框架134可以发送例如是指示用户现在正在查看网页300的“上下文变更”记录这样的更新记录。该更新记录可以对观察者单元202进行触发,观察者单元202可以通过导致被网页300需要的数据从上下文数据118被复制到本地上下文132中作出响应。一旦数据存在于本地上下文132中,交互框架134可以基于新的数据执行网页300的进一步的代码以便更新网页300。使用具有之后跟随上下文驱动的更新的初始加载的“两阶段”方法可以允许对初始选择的更快速的显示,从而提升用户效率。使用两阶段方法还可以使用web套接字连接(新被建立的或者之前被建立的)来传输数据,这可以是比打开新的HTTP连接并且通过HTTP传输数据更快的。此外,使用两阶段方法允许计算设备102(1)根据支持用户交互的需要将额外的数据复制到本地上下文数据134。这可以降低带宽使用,因为仅被需要的数据可以被传输。
在一些示例中,网页300可以初始显示在线服务部分302而不显示技术人员部分304。观察者单元202可以基于用户报告的问题、人群或者上下文数据118中的其它信息选择候选技术人员。观察者单元202然后可以将候选技术人员的信息添加到上下文数据118,从那里该信息可以被复制到本地上下文数据134。网页300的代码然后可以显示具有针对每个候选技术人员的技术人员按钮的部分304,例如按钮310(1)。
在一些示例中,响应于对技术人员按钮310(1)-310(4)中的一个技术人员按钮的用户选择,复制框架120将上下文数据118修改为指示哪个技术人员被选择。复制框架120然后向所选择的技术人员的计算设备104(2)发送传播记录。该发送可以为所选择的技术人员提供对关于请求的用户的信息的更高效的访问,从而提升该技术人员与计算设备104(2)的交互的效率。计算设备104(2)的用户界面136然后可以呈现具有用于对用户进行辅助的选项或者工具(例如远程登录工具)的所选择的技术人员。
在所选择的技术人员与请求的用户一起工作时,计算设备104(2)的交互框架134可以将更新记录发射给复制框架120。复制框架120可以响应于更新记录将传播记录发射给请求的用户的计算设备104(1)。计算设备104(1)然后可以至少部分上基于经修改的本地上下文数据132变更它的用户界面136。类似地,计算设备104(1)可以发射更新记录,复制框架120将传播记录提供给计算设备104(2),并且计算设备104(2)变更它的用户界面136的形式或者内容。对上下文修改的该双向交换允许请求的用户、支持技术人员和分布式计算资源102维护对于解决用户的问题的进度的一致视图。例如,计算设备104(2)可以提供指示对于解决问题的每个尝试的更新记录。复制框架120可以将这样的指示记录日志在上下文数据118中,而不将对应的传播记录提供给请求的用户的计算设备104(1)。该记录日志而不进行对应的传播允许提供支持的公司和技术人员查看具体问题的完整历史,这可以允许更有效地实施具体的问题的后续呼叫或者逐步升级。此外,记录日志而没有向计算设备104(1)的传播减少了计算设备104(1)的存储空间和由计算设备104(1)或者在与计算设备104(1)通信时消耗的带宽,而从请求的用户的角度看不损失功能。
记录日志而不传播还可以允许精简用户与提供支持的公司之间的交互。在一些示例中,观察者单元202可以分析与请求的用户的交互的历史,并且指导包括或者突出地显示与很可能能够解决用户问题的技术人员相对应的按钮310(1)-310(4)中的一个(一些)按钮的网页300被呈现。这样的分析和呈现可以降低为解决问题将需要逐步升级的可能性,以及因此可以减少解决问题的过程中消耗的网络带宽的量。
在一些示例中,观察者单元202可以确定跨多个用户一致的行为模式,并且将网页300配置为相应地作出响应。例如,如果用户的行为历史与已表达不满意的其它用户的行为历史相对应,则观察者单元202可以指导对更有经验的(例如,第二等级的)技术人员的访问通过按钮310(1)-310(4)被呈现。这可以减少解决用户的问题需要的时间,或者减少在找出解决方案时消耗的网络带宽。这是“如果客户足够不满意则逐步升级”的业务规则的示例。(一个或者多个)观察者单元202可以各自实现一个或多个业务规则,或者可以协作地实现一个或多个业务规则。在这些示例中的一些示例中,分析框架204可以通过对上下文数据118的分析确定行为模式或者所选择的业务规则的其它方面,以及将对应的触发条件提供给观察者单元202。
图4是示出例如多用户系统的服务器这样的分布式计算资源102的示例部件的原理图。所图示的示例中的分布式计算资源102包括(一个或者多个)处理单元110,其可以被运行地耦合到例如高速缓存存储器这样的存储器402。分布式计算资源102还包括被连接到(一个或者多个)网络106(被虚线示出)的(一个或者多个)通信接口116。(一个或者多个)处理单元110经由总线114被耦合到(一个或者多个)通信接口116和计算机可读介质112。所图示的示例中的计算机可读介质112包括上下文数据118。在一些示例中,上下文数据118可以是多用户系统的上下文数据。上下文数据118可以是与一个或多个用户与或者经由多用户系统进行的(一个或者多个)交互相关的,以及可以包括来自例如电子设备104的传感器512(图5)这样的多个数据源中的每个数据源的相应数据。
在一些示例中,计算机可读介质112可以将上下文数据118存储在诸如数据库或者数据仓库这样的结构化或者非结构化的数据存储装置中。在一些示例中,计算机可读介质112可以包括语料或者关系数据库,其具有用于使能实现数据访问的一个或多个表、数组、索引、存储过程等,例如包括超文本标记语言(HTML)表、JavaScript对象记号(JSON)记录、资源描述框架(RDF)表、web本体论语言(OWL)表或者可扩展标记语言(XML)表。可以使用与诸如HTML、XML和JAVASCRIPT这样的行业标准一致的表格式。
在所图示的示例中,上下文数据118包括一个或多个上下文数据集404(1)-404(K),其中,K是任何大于或者等于1的整数。每个上下文数据集404可以存储不同类型的数据或者关于不同的对象或者人的数据。复制框架120可以如下面参考确定传播模块414讨论的那样作为任何给定的传播记录的部分提供来自(一个或者多个)上下文数据集404中的一个或多个上下文数据集404的数据。在一个示例中,上下文数据集404(1)保存针对一群用户的支持数据,以及上下文数据集404(K)保存关于一群用户的销售数据。在另一个示例中,上下文数据集404(1)保存与和智能电话的用户交互相关的上下文数据,例如,定制的拼写词典和联系人,以及,上下文数据集404(K)保存与和多玩家游戏系统的用户交互相关的上下文数据。任何给定的用户可以由一个或多个上下文数据集404中的数据代表。
分布式计算资源102可以被配置为,就第一上下文数据集404(1)与一个或多个第一计算设备104通信,以及,就第二上下文数据集404(K)与一个或多个第二计算设备104通信。任何给定的计算设备104可以被包括在所述一个或多个第一设备、所述一个或多个第二设备或者这两者中。该安排允许分布式计算资源102有效地向计算设备104提供相关的上下文数据,同时将单个上下文数据集404维持在合理大小,以及减少处理对任何单个上下文数据集404的修改需要的处理器时间。在一些示例中,分布式计算资源102可以将对于每个上下文数据集404的更新推送到正在复制该上下文数据集404的已连接的(一个或者多个)计算设备104中的那些计算设备104。在一些示例中,分布式计算资源102可以从例如数据库服务器102(2)这样的多个存储设备访问上下文数据集404的数据。每个计算设备104可以从分布式计算资源102接收对相关的(一个或者多个)上下文数据集404的更新,而不考虑哪个数据库服务器102(2)存储任何具体的数据项。
在一些示例中,计算机可读介质112可以存储计算机程序指令、逻辑或者其它指令。所存储的指令可以与本文中描述的应用或者过程相对应。在一些示例中,计算机可读介质112存储复制框架120、(一个或者多个)观察者单元202、分析框架204、查询管理框架406(在下面讨论)或者可以被(一个或者多个)处理单元110执行的其它软件的指令。计算机可读介质112可以存储用于被存储在计算机可读介质112中或者被(一个或者多个)处理单元110执行的过程、应用、组件或者模块的运行的数据。在一些示例中,计算机可读介质112可以存储被查询管理框架406使用的子集指示408或者被分析框架204使用的规则集合410。每个子集指示408可以标识上下文数据的相应的合适子集,并且与多用户系统的相应的复制客户端相对应。
被存储在计算机可读介质112上的复制框架120的模块可以包括一个或多个模块或者API,所述模块或者API被图示为接收模块412、确定传播模块414和发射模块416。在一些示例中,复制框架120可以包括提交模块418。在一些示例中,与在下面更详细讨论的分析框架204的(一个或者多个)模块一起使用复制框架120的模块。
在复制框架120中,模块的数量可以变得更高或者更低,以及一些类型的模块可以以一些组合被使用。例如,与所图示的模块相关联地被描述的功能可以被组合以便被更少数量的模块或者API执行,或者可以被拆分并且被更大数量的模块或者API执行。
在一些示例中,复制框架120的模块可以包括被配置为接收与所存储的上下文数据118相对应的更新记录的接收模块412。如上面参考图2描述的,更新记录可以与来自(一个或者多个)观察者单元202或者分析框架204的更新请求或者由于经由(一个或者多个)通信接口116进行的数据交换产生的更新相对应。更新记录可以经由通信接口116和网络106被直接接收。更新记录可以例如包括SQL INSERT、UPDATE、DELETE或者MERGE查询、另一种查询指定或者HTTP POST、PUT或者DELETE请求。更新记录可以另外或者替换地从(一个或者多个)观察者单元202或者分析框架204被接收。在一些示例中,接收模块412可以被配置为,接收与相应的、不同的上下文数据集404(1)-404(K)相对应的多个更新记录。
在一些示例中,复制框架120的模块可以包括被配置为至少部分上基于所接收的更新记录确定多个(或者至少一个)传播记录的确定传播模块414。传播记录中的每个传播记录可以与所存储的上下文数据118的相应的、不同的合适子集(即,少于全部的数据)相对应。这可以允许减少处理对各种子集的修改需要的带宽,提高多用户系统的速度和性能。
在客户支持示例中,在用户的计算设备104(1)提供具有与用户所报告的问题有关的信息的更新记录时,确定传播模块414可以确定指示问题已被成功地报告的打算用于用户的计算设备104(1)的传播记录和指示问题的本质的打算用于技术人员的计算设备104(2)的单独的传播记录。在一些示例中,(一个或者多个)观察者单元202可以对所接收的更新记录进行处理,以及,确定传播模块414可以将这样的处理的结果包括在传播记录中。继续客户支持示例,观察者单元202可以对在所接收的更新记录中被指示的所报告的用户问题进行处理,并且确定可能的解决方案。确定传播模块414然后可以将对于所确定的可能的解决方案的指示包括在打算用于用户的计算设备104(1)的传播记录中。
在一些示例中,接收模块412可以接收多个如上面讨论的更新记录。在这些示例中的一些示例中,确定传播模块414可以确定例如与相应的、不同的上下文数据集404(1)-404(K)相对应的多个传播记录。
在与分析框架204协作的示例中,分析框架204的修改模块420可以至少部分上基于所接收的更新记录和上下文数据118确定传播记录。下面参考修改模块420讨论了示例。
在与分析框架204协作的一些示例中,修改模块420可以进一步至少部分上基于一个规则集合410(或者多于一个规则集合410)确定传播记录。规则集合可以代表如上面讨论的业务规则。下面参考修改模块420对此作了讨论。
在一些示例中,复制框架120的模块可以包括被配置为经由一个或多个通信接口116发射多个传播记录的发射模块416。在一些示例中,发射模块416可以将一个或多个传播记录发射给例如具有下面讨论的(一个或者多个)传播接收模块516的计算设备104这样的一个或多个复制客户端。发射模块416可以使用MICROSOFT Rx或者通过诸如TCP或者由SIGNALA库提供的高层web服务信道(例如,web套接字或者Comet,也被称为反向Ajax)这样的通信信道运行的类似技术来发射传播记录。在一些示例中,发射模块416可以随多个传播记录中的每个传播记录发射相应的标识信息,例如,对应的计算设备104的IP地址。
在一些示例中,确定传播模块414可以确定多个如上面讨论的传播记录。在这些示例中的一些示例中,发射模块416可以将例如与相应的、不同的上下文数据集404(1)-404(K)相对应的多个传播记录中的每个传播记录发射给例如相应的计算设备104。
在一些示例中,复制框架120的模块可以包括被配置为至少部分上基于所接收的更新记录修改所存储的上下文数据118的提交模块418。提交模块418例如可以相对于上下文数据118执行所提供的SQL查询、对所提供的XPath查询的结果应用所提供的XSL样式表并且存储结果、或者以其它方式修改上下文数据118的(一个或者多个)表或者其它内容或者结构。
在一些示例中,(一个或者多个)分布式计算资源102可以实现分析框架204。分析框架204可以机器学习,例如用以修改如上面描述的业务规则。在一些示例中,相应地,被存储在计算机可读介质112上的分析框架204的模块可以包括所图示的示例修改模块420中的一个或多个模块或者API。在一些示例中,分析模块204可以与复制框架120的接收模块412和确定传播模块414协作。
在分析框架204中,额外的模块可以被包括,并且一些类型的模块可以以一些组合被使用。例如,与所图示的修改模块420相关联地被描述的功能可以被拆分并且被更大数量的模块或者API执行。
如上面讨论的,在一些示例中,确定传播模块414在确定传播记录时使用(一个或者多个)规则集合410。规则集合可以例如包括使用诸如SQL这样的数据库查询语言或者其它计算机可执行指令对业务规则的表述。在一些示例中,确定传播模块414可以被配置为,至少部分上通过对更新记录和上下文数据应用规则集合以标识指示可采取行动的事件的上下文数据中的模式来确定一个或多个传播记录。传播记录中的每个传播记录可以与所存储的上下文数据118的相应的、不同的合适子集相对应。这可以允许检测预测很可能的事件的模式,以及然后反馈结果以更新上下文数据118,以便未来作出更好的预测。
在一些示例中,分析框架204的模块可以包括被配置为至少部分上基于上下文数据118修改规则集合的修改模块420。修改模块420可以定期地、间歇地、在被事件触发时或者在其它所选择的时间处修改规则集合。在一些示例中,修改模块420包括神经网络或者与神经网络通信,所述神经网络提供对规则集合的修改。可以在上下文数据118中或者与其分离地存储规则集合。在一些示例中,观察者单元202可以接收对于对规则集合的修改的通知。观察者单元202的触发条件然后可以至少部分上基于对规则集合的修改被修改。
在一些示例中,修改模块420被配置为,将上下文数据118中的至少一些数据应用于例如预训练的深度神经网络这样的神经网络(未示出)。神经网络系数或者公式可以被存储在计算机可读介质112上。这些示例中的至少一些示例中的修改模块420可以被配置为,至少部分上基于神经网络的输出修改规则集合。
在这些示例中的一些示例中,上下文数据118包括针对神经网络的训练数据以及将被神经网络分析的测试数据。继续客户支持示例,训练数据可以包括用户报告的问题和解决那些问题的解决方案的已存储的数据。分析框架204可以例如在新的解决方案被找到时在线地或者基于上下文数据118的快照批量地训练神经网络。神经网络训练输入可以是问题的数据,以及,训练输出可以是解决方案。这样,神经网络将随着训练进行而学习针对不同的用户报告的问题的典型解决方案。在新的用户问题被报告时,观察者单元202可以将用户报告的问题提供给神经网络,并且为复制框架120提供具有从神经网络产生的建议的解决方案的更新记录。
通过与复制框架120的(一个或者多个)模块协作地使用分析框架204的(一个或者多个)模块,本地上下文数据132的触发条件和集合可以随时间被修改以便更有效地处理到来的数据。继续客户支持示例,多个支持技术人员是频繁可用的。每个技术人员的计算设备104保存了相应的本地上下文数据132。规则集合可以指定关于用户的哪些信息被复制到哪些计算设备104。如果一个具体的技术人员具有比其它技术人员更高的、解决伴随一个具体的软件包的问题的成功率,则修改模块420可以将规则集合修改为使得该技术人员的计算设备104接收比其它技术人员的计算设备104更完整的关于具有伴随该软件包的问题的用户的信息。修改模块420可以进一步将规则集合修改为使得观察者单元202具有针对伴随该软件包的问题的专业的触发条件。这可以被完成,以使得在用户报告伴随该软件包的问题时,具有相对较高的成功率的技术人员将被指派给该用户或者被建议与该用户一起工作。将技术人员指派到他们很可能能够解决的问题可以减少用户和技术人员为解决用户的问题而进行交互需要的时间和带宽。
在一些示例中,分析框架204可以处理大量用户的上下文数据118,以便检测问题和解决方案的典型模式。例如,用户的计算设备104的交互框架134可以提供关于库、系统组件和被安装在计算设备104上的其它软件的信息。分析框架204例如使用分析框架204可以标识具体的被报告的用户问题(如响应于来自计算设备104的更新记录被记录在上下文数据118中的)与具体的被安装的软件包或者那些软件包的版本之间的相关性,以及具体的软件包或者版本的不存在与那些具体的问题的不存在之间的相关性。针对一个或多个观察者单元202的上下文数据118或者触发条件然后可以被修改,以便反映所标识的相关性。在用户问题被报告并且用户的计算设备104包括与所标识的相关性相对应的软件或者版本时,观察者单元202可以被触发,并且可以向用户或者支持技术人员提供建议移除或者更新处于以下情况下的具体的软件包或者版本的信息:存在于用户的计算设备104上、通过它们的存在与所报告的问题相关或者通过它们的不存在与所报告的问题的不存在相关。这可以允许使用减少的或者不使用任何与支持技术人员的交互解决用户的问题,减少在计算设备104(1)与104(2)之间传送信息需要的带宽。
在一些示例中,支持技术人员经由列出常见的问题、解决方案和故障排除任务的脚本与用户一起工作。脚本对于新被聘用的或者较少经验的技术人员可以是特别有用的。脚本可以经由计算设备104(2)被呈现给支持技术人员。结合上面描述的对相关性的标识或者单独地,分析框架204可以对指示脚本的一些步骤在解决问题用户时的有效性的上下文数据118进行分析。分析框架204然后可以修改触发条件或者上下文数据118,以便修改脚本。例如,更频繁地成功的脚本步骤可以更早被放置在脚本中,或者较不频繁地成功的脚本步骤可以更晚被放置在脚本中或者从脚本中被移除或者被移动到不同的脚本(例如,第二等级的脚本)中。
如上面讨论的,分布式计算资源102可以实现查询管理,例如用于安排查询在所需的数据可用的网络节点处被执行。在一些示例中,相应地,被存储在计算机可读介质112上的查询管理框架406的模块可以包括一个或多个模块或者API,所述模块或者API被图示为查询接收模块422、确定模块424和发射模块426。查询管理框架406可以还包括用于接收和存储子集指示408的模块(未示出)。例如,复制框架120的确定传播模块414可以确定与所确定的传播记录相对应的子集指示408,并且将所确定的子集指示408存储在计算机可读介质112中,或者将所确定的子集指示408提供给查询管理框架406,查询管理框架406然后可以将所确定的子集指示408存储在计算机可读介质112中。在一些示例中,传播记录还可以基于子集指示408中的相应的子集指示408被确定。规则集合可以额外地或者替换地代表哪个(些)计算设备104应当接收上下文数据118的哪些子集。
在查询管理框架406中,模块的数量可以变得更高或者更低,并且一些类型的模块可以以一些组合被使用。例如,与所图示的模块相关联地被描述的功能可以被组合以便被更少数量的模块或者API执行,或者可以被拆分并且被更大数量的模块或者API执行。
在一些示例中,查询管理框架406的模块可以包括被配置为接收查询指定的查询接收模块422。查询指定可以经由分布式计算资源102的(一个或者多个)通信接口116或者例如管理员图形用户界面这样的用户界面(未示出)被接收。查询指定可以包括使用例如MICROSOFT Rx、LINQ、XPATH或者SQL这样的数据库查询语言的源代码或者经编译的查询。查询指定可以引用数据源中的一个或多个数据源。
在一些示例中,查询管理框架406的模块可以包括被配置为至少部分上基于所接收的查询指定选择子集指示408中的一个子集指示408的确定模块424。子集指示中的每个子集指示可以标识上下文数据118的相应的合适子集(即,少于全部的数据)。子集指示中的每个子集指示可以进一步包括对于将上下文数据118的相应的合适子集存储在计算设备104的本地上下文数据132中的计算设备104的指示。确定模块424可以额外地或者替换地至少部分上基于上下文数据118选择子集指示408中的一个子集指示408。下面讨论的选择的一些示例。
在一些示例中,查询管理框架406的模块可以包括被配置为经由通信接口发射所接收的查询指定和所选择的子集指示408的标识信息的发射模块426。标识信息可以包括例如数据库主键这样的唯一ID号、存储过程名称、目的地IP地址、子集指示408的副本或者标识子集指示408的其它信息。在一些示例中,发射模块426可以经由通信接口116将所接收的查询指定发射给与子集指示中的所选择的子集指示相对应的多用户系统的复制客户端。这可以通过减少在执行查询的同时在复制客户端与服务器之间被传输的数据的量而减少查询执行的等待时间。
在一些示例中,保存所选择的子集指示的分布式计算资源102或者计算设备104可以接收查询指定并且执行查询。该计算设备104然后可以将结果提供给分布式计算资源102、在查询指定中指定的替换的目的地或者另一个分布式计算资源102或者计算设备104。将查询指定发射给被装备为用于处置它们的网络节点允许减少否则可能被分配为用于在网络节点之间传输数据的网络带宽使用。这样的发射还可以通过允许查询取代通常较慢的网络数据传输速率而使用磁盘或者存储器数据传输速率将将数据移入和移出执行查询的处理单元124地被执行而提高查询速度。在一些示例中,查询指定包括实现MICROSOFT RxIQbservable或者IQbservable(TSource)接口的对象实例。
将查询指定发射给被装备为用于处置它们的网络节点还可以即使节点被限制访问运行查询所需的数据也允许它们接收查询结果。在一个示例中,查询指定可以依赖于用户Alice的智能电话(计算设备104)的位置数据。Bob可能期望使用他的计算设备104来确定Alice是否在工作。然而,Alice例如由于隐私原因而可能已选择不与Bob共享她的坐标或者其它的细粒度的位置数据。在这种情况下,分布式计算资源102可以从Bob接收询问Alice的位置是否处在Alice的办公楼的已知坐标内的查询指定。分布式计算资源102可以将该查询指定发射给Alice的智能电话。Alice的智能电话执行所接收的查询指定,并且例如作为更新记录向分布式计算资源102提供对于Alice是否在办公室的是或否的指示。分布式计算资源102然后可以将包括该指示的传播记录提供给Bob的计算设备104,Bob的计算设备104可以利用查询的结果更新Bob的本地上下文数据132。相应地,在该示例中,将Bob的查询指定发射给Alice的智能电话允许Bob通过检查他的本地上下文数据132确定Alice是否在办公室,而不侵犯Alice的关于对她的坐标数据的使用的隐私限制。
在一些示例中,Alice的智能电话在Alice的坐标变更时发射更新记录。实现流处理或者数据流处理功能(例如,MICROSOFT Rx、Elm或者LABVIEW)的(一个或者多个)观察者单元202可以响应于这样的更新记录对计算进行触发。被触发的计算可以包括将查询指定提供给分布式计算资源102以便确定Alice是否在办公室,该查询指定可以如上面描述的那样在Alice的智能电话上被处理。被触发的计算可以还包括将确定的结果提供给Bob的本地上下文数据132。在一些示例中,Alice的智能电话可以确定Alice是否在办公室,或者计算其它的数据,例如对位置数据进行聚合。Alice的智能电话可以对所选择的时间表或者以所选择的间隔发送更新记录以使得Bob具有关于Alice的位置的当前的信息,并且具有与发射被用于确定Alice是否在办公室的位置数据相比的减少的带宽消耗。
在一些示例中,查询管理框架406与复制框架120互操作。在这些示例中的一些示例中,复制框架120的发射模块416可以发射具有相应的子集指示的标识信息的所确定的传播记录中的每个传播记录。可以与例如相同的网络分组或者相同的连接的不同网络分组中的传播记录相关联地发射标识信息。在一些示例中,由建立子集指示通过其被发射的连接的分组传达标识信息。该发射允许查询或者传播记录的接受者轻松地使查询与传播记录产生关联。如下面参考图5讨论的,例如在给定的计算设备104保存多于一个本地上下文子集514时,这可以减少对查询进行处置所需的处理。
在一些示例中,确定模块424被配置为,确定与被查询指定请求的输入值相关的子集指示。例如,如果查询指定需要来自多个数据表中的每个数据表的所选择的列的输入值,则确定模块424可以确定哪个子集指示408包括例如那些表中的最高的数量、被引用的列中的最高的数量或者将被处理的数据的预期量的最高百分比。确定模块424然后可以选择所确定的子集指示接收查询指定。这样的选择允许减少为执行查询在网络节点之间被传输的数据的量。
在一些示例中,确定模块424被配置为,选择与被查询指定需要的输入值中的至少一些输入值的源相对应的子集指示408。继续客户支持示例,如果查询指定使用对解决用户的问题的尝试的数据作为输入,则确定模块424可以确定与支持技术人员的计算设备104(2)相对应的子集指示408。这样的确定可以减少在执行查询指定时的等待时间,因为查询指定可以一旦支持技术人员已选择了具体的尝试时并且在该尝试的数据已从支持技术人员的计算设备104(2)的本地上下文数据132被复制到上下文数据118之前在支持技术人员的计算设备104(2)上被执行。
图5是示出例如多用户系统的复制客户端这样的计算设备104的示例部件的原理图。所图示的示例中的计算设备104包括可以被运行地耦合到例如高速缓存存储器这样的存储器502的(一个或者多个)处理单元124。计算设备104还包括被连接到(一个或者多个)网络106(虚线示出)的(一个或者多个)通信接口130。(一个或者多个)处理单元124经由总线128被耦合到(一个或者多个)通信接口130和计算机可读介质126。所图示的示例中的计算机可读介质126包括本地上下文数据132和交互框架134的计算机程序指令、逻辑或者其它指令。
计算设备104可以包括或者被连接到用户界面136。用户界面136可以包括显示器504。显示器504可以包括有机发光二极管(OLDE)显示器、液晶显示器(LCD)、阴极射线管(CRT)或者另一种类型的视觉显示器。显示器504可以是触摸屏的部件,或者可以包括触摸屏。用户界面136可以包括上面参考用户界面136描述的一些类型的输出设备。(一个或者多个)处理单元124可以被可运行地耦合到用户界面136。
用户界面136可以包括用户可操作的输入设备506(被图形化地表示为游戏手柄)。用户可操作的输入设备506可以包括上面参考用户界面136描述的一些类型的输入设备。
计算设备104可以进一步包括用于允许计算设备104与输入、输出或者I/O设备(为清楚起见,一些未被描绘)通信的一个或多个输入/输出(I/O)接口508。这样的设备的示例可以包括诸如上面参考用户界面136描述的用户可操作的输入设备和输出设备这样的用户界面136的部件。计算设备104可以经由与合适的设备的I/O接口508或者使用合适的电子/软件交互方法进行通信。例如用户可操作的输入设备506上的用户输入的输入数据可以经由(一个或者多个)I/O接口508被接收,以及,例如用户界面屏幕的输出数据可以经由(一个或者多个)I/O接口508被提供给显示器504以用于被用户查看。
在一些示例中,计算设备104可以包括一个或多个测量单元510。测量单元510可以检测计算设备104或者其环境的物理属性或者状态。测量单元510可以是如下面讨论的传感器的示例。用户界面136的部件也可以是如下面讨论的传感器的示例。
测量单元510的示例可以包括用于检测计算设备104的感应范围之中或者之内的运动、温度、压力、光、声音、电磁辐射(例如,用于无线连网)或者任何其它可检测的形式的能量或者物质的单元。在智能电话计算设备104的一些示例中,测量单元510可以包括加速度计、麦克风、前置和后置照相机和用于与蓝牙、WI-FI和LTE的收发机。测量单元510的示例可以包括用于测量物理属性的设备、用于进行通信的设备或者用于接收信息的设备。在一些示例中,测量单元510可以包括网络收发机(例如,通信接口130)、运动传感器、接近检测器(例如,针对附近的生物、人或者设备)、光传感器(例如,CdS光敏电阻器或者光敏晶体管)、静止成像器(例如,CCD或者CMOS)、视频成像器(例如,CCD或者CMOS)、麦克风、指纹读取器、视网膜扫描仪或者触摸屏(例如,位于用户界面136的显示器504之中或者与之相关联的)。
计算设备104可以包括一个或多个传感器512,传感器512可以代表测量单元510或者用户界面136的部件。在一些示例中,用户界面136可以包括传感器512中的至少一个传感器512。例如,用户界面136可以包括作为传感器512的触摸屏。处理单元124可以被可运行耦合到传感器512。传感器512可以向(一个或者多个)处理单元124提供数据记录。
在一些示例中,计算机可读介质126可以将本地上下文数据132存储在诸如数据库或者数据仓库这样的结构化或者非结构化的数据存储装置中。在一些示例中,计算机可读介质126可以包括语料或者关系数据库,所述数据库具有用于使能实现数据访问的一个或多个表、数组、索引、存储过程等,例如包括超文本标记语言(HTML)表、JavaScript对象记号(JSON)记录、资源描述框架(RDF)表、web本体论语言(OWL)表或者可扩展标记语言(XML)表。可以使用与诸如HTML、XML和JAVASCRIPT这样的行业标准一致的表格式。
在所图示的示例中,本地上下文数据132包括一个或多个上下文1-L的本地上下文子集514(1)-514(L),其中,L是任何大于或者等于1的整数。每个本地上下文子集514可以与图4的相应的上下文子集404相对应。存储多个本地上下文子集514允许交互框架134更高效地处理与具体的数据记录相关的本地上下文数据132。交互框架134可以利用少量的处理确定任何给定的数据记录与哪个本地上下文子集514相对应,然后仅对该本地上下文子集514中的记录进行处理以便采取进一步的行动。存储多个本地上下文子集514还可以减少在修改本地上下文数据132时使用的网络带宽的量,因为每个修改仅可以影响本地上下数据132的部分(并且因此可以仅包括针对其的数据)。
计算机可读介质126可以存储用于被存储在计算机可读介质126中或者被(一个或者多个)处理单元124执行的过程、应用、组件或者模块的运行的数据。在一些示例中,数据存储库可以存储计算机程序指令,例如,与应用、智能电话应用、本文中描述的过程、交互框架134或者可被(一个或者多个)处理单元124执行的其它软件相对应的指令。
被存储在计算机可读介质126上的交互框架134的模块可以包括一个或多个模块,例如,壳模块或者被图示为传播接收模块516、传播应用模块518、输入模块520、复制模块522、发射模块524和交互模块526的应用编程接口(API)模块。
在交互框架134中,模块的数量可以变得更高或者更低,并且一些类型的模块可以以一些组合被使用。例如,与所图示的模块相关联地被描述的功能可以被组合以便被更少的数量的模块或者API执行,或者可以被拆分并且被更大的数量的模块或者API执行。
在一些示例中,交互框架134的模块可以包括被配置为经由通信接口例如从复制服务器接收传播记录的传播接收模块516。传播记录可以从复制控制器或者其它的分布式计算资源102被接收。如上面讨论的,传播记录可以指定将对本地上下文数据132作出的变更。传播记录可以与被(一个或者多个)分布式计算资源120保存的上下文数据118中的少于全部的数据相对应。
在一些示例中,交互框架134的模块可以包括被配置为至少部分上基于所接收的传播记录而修改本地上下文数据132的传播应用模块518。通过使用传播接收模块516和传播应用模块518,可以保持本地上下文数据132与来自(一个或者多个)分布式计算资源102或者其它(一个或者多个)计算设备104的对上下文数据118的变更同步。本地上下文数据可以是与一个或多个用户与多用户系统的(一个或者多个)交互相关的。
在一些示例中,传播接收模块516可以被进一步配置为,例如如上面参考传播记录讨论的那样经由通信接口接收第二传播记录。在这些示例中的一些示例中,传播应用模块518可以被进一步配置为,至少部分上基于所接收的第二传播记录来修改与本地上下文数据不同的第二本地上下文数据。例如,本地上下文子集514(1)可以响应于所述传播记录而被修改,以及,本地上下文子集514(L)可以响应于第二传播记录而被修改。所述传播记录和第二传播记录可以从单个分布式计算资源102或者相应的、不同的分布式计算资源102被接收。
在一些示例中,交互框架134的模块可以包括被配置为接收第一数据记录的输入模块520。第一数据记录可以例如从或者经由用户界面136、测量单元510或者另一个传感器512被接收。第一数据记录可以例如指示与计算设备104的用户交互或者围绕计算设备104的环境的状态或者状态变更。
在一些示例中,输入模块520被配置为,例如经由I/O接口508和总线128使用一个或多个传感器512检测多个信号。贯穿本公开内容,计算设备104可以检测不被本文中描述的模块处理或者不经历本文中描述的处理操作的额外的信号或者信号的集合。
所检测的信号可以包括例如使用GPS、来自手机塔或者WI-FI接入点的三角测量或者其它地理位置技术测量的计算设备104的位置。所检测的信号可以包括例如由位于计算设备104之上或者与计算设备104相关联的(一个或者多个)加速度计测量的计算设备104的运动的速度、速率、加速度或者加速度变化率、或者计算设备104的朝向。所检测的信号可以包括例如使用(一个或者多个)抓握传感器或者(一个或者多个)触摸屏确定的计算设备104在人手中的朝向、人的手的大小或者人正在使用左手还是右手抓握计算设备104。所检测的信号可以包括例如是附近的人的语音或者语声这样的音频数据。音频数据可以被智能电话的话筒或者被计算设备104的另一个麦克风捕获。所检测的信号可以包括使用计算设备104的人的视频数据。所检测的信号可以包括使用计算设备104的人的行为特性,例如,这个人在键盘或者软键盘上的键入的节奏或者用户正在主要使用什么风格的输入(例如,每字母的触摸还是在触摸屏上的整字滑动)。所检测的信号可以包括携带计算设备104的人的步态的特性,例如,速度、脚步频率、腿长度(从速度和脚步推断的)或者人是否更喜欢一条腿而超过另一条腿。所检测的信号可以使用其它的所检测的信号被确定(例如,步态信号可以通过对加速度计和GPS数据进行处理被检测)。
在一些示例中,交互框架134的模块可以包括被配置为至少部分上基于第一数据记录和本地上下文数据132确定更新记录的复制模块522。复制模块522可以对第一数据记录或者本地上下文数据132应用过滤规则、业务规则或者其它逻辑,以便确定应当对上下文数据118作出哪些变更。在一些示例中,上下文数据118将全部数据的副本包括在本地上下文数据132中,以及,更新记录将响应于所接收的第一数据记录在值上被变更或者将变更的任何项的新值包括在本地上下文数据132中。
在一些示例中,交互框架134的模块可以包括被配置为经由通信接口发射所确定的更新记录的发射模块524。发射模块524可以将所确定的更新记录发射给分布式计算资源102。通过使用输入模块520、复制模块522和发射模块524,可以保持上下文数据118是与对本地上下文数据132的变更同步的。(一个或者多个)分布式计算资源102可以如上面描述的那样将变更复制到上下文数据118,以使得可以保持其它计算设备的本地上下文数据132是与对所图示的本地上下文数据132的变更同步的。在一些示例中,发射模块524可以经由通信接口130将所确定的更新记录发射给复制服务器,以便更新被存储在复制服务器处的上下文数据。
在一个示例中,用户Alice可以具有包括测量单元510的智能电话(计算设备104),测量单元510被配置为,检测智能电话的位置,以及因此暗含地检测Alice的位置。在一些示例中,Alice可以选择允许她的位置信息被公开地或者与仅指定的个人(例如,朋友或者联系人)共享。额外地,Alice可以选择共享她的坐标或者对于她的位置的更一般化的描述(例如,在家、在工作等)。在这些示例中的一些示例中,例如坐标或者一般化的描述这样的Alice的位置信息可以被存储在Alice的本地上下文数据132中。Alice的智能电话可以在Alice变更位置时(就坐标而言的,例如,在Alice在任何方向上移动多于10 米时,或者就一般化的描述而言的)向分布式计算资源102提供更新记录(方框522、524)。分布式计算资源102可以将上下文数据118修改为包括Alice的位置信息(方框412、418)。分布式计算资源102可以将包括Alice的位置信息的更新记录发射给具有对该信息的访问的用户的(一个或者多个)计算设备104(方框414、416)。
在一些示例中,上下文数据118可以保存Alice的位置的坐标和一般化的描述两者。分布式计算资源102可以将包括坐标的传播记录发射给例如用户Hector的计算设备这样的一些计算设备,以及将包括一般化的描述而不包括坐标的传播记录发射给其它计算设备104,例如用户Bob的计算设备104。Bob的计算设备104可以例如响应于Alice的变更位置而接收携带一般描述的传播记录(方框516),并且相应地修改Bob的本地上下文数据132(方框518)。Bob然后可以通过咨询他自己的本地上下文数据132确定Alice的一般化的位置。Hector的计算设备104可以接收携带坐标的传播记录(方框516),并且可以相应地修改Hector的本地上下文数据132(方框518)。Hector然后可以通过咨询他自己的本地上下文数据132确定Alice的坐标。
在一些示例中,输入模块520可以被进一步配置为,例如经由用户界面136接收第二数据记录。在这些示例中的一些示例中,复制模块522可以被进一步配置为,至少部分上基于第二数据记录和与本地上下文数据不同的第二本地上下文数据来确定第二更新记录。在这些示例中的一些示例中,发射模块524可以被进一步配置为,经由通信接口130发射所确定的第二更新记录。例如,本地上下文子集514(1)可以响应于所述更新记录而被修改,以及,本地上下文子集514(L)可以响应于第二更新记录而被修改。所述更新记录和第二更新记录可以被发射给单个分布式计算资源102或者相应的、不同的分布式计算资源102。
在一些示例中,交互框架134的模块可以包括交互模块526。交互模块526可以被配置为,经由用户界面136接收额外的数据记录。交互模块526可以被进一步配置为,至少部分上基于额外的数据记录而修改本地上下文数据132,以及,至少部分上基于额外的数据记录和经修改的本地上下文数据132提供输出。交互模块526可以经由用户界面136提供输出。在一些示例中,交互模块526被配置为,在不经由通信接口130进行通信的情况下或者在经由通信接口130进行通信之前提供输出。这可以减少在对用户请求或者行动作出响应时的用户界面136的等待时间。响应于对本地上下文数据132的修改,交互框架134可以如上面参考图2的箭头206讨论的那样提供更新记录。
使用交互模块526允许本地的变更被更迅速地应用或者显示,而不需要等待网络往返。如由交互模块526执行的计算设备104上的处理可以减少处理时间和等待时间,以及因此改进计算设备104对用户的响应性。
在一些示例中,分布式计算资源102可以例如通过与更新记录中指示的修改不同地修改上下文数据118来拒绝或者覆写来自计算设备104的更新记录。在一些示例中,交互模块526可以修改本地上下文数据132。交互框架134然后可以提供更新记录。复制框架120可以接收更新记录,对更新记录进行处理(例如,使用观察者单元202),并且确定对上下文数据118的修改。传播记录然后可以被发射给计算设备104。本地上下文数据132然后可以根据传播记录被更新。相应地,应用传播记录之后的本地上下文数据132可以与发射更新记录之前的本地上下文数据132不同。这被称为“补偿”。对本地上下文数据132的变更可以被应用,然后稍后,补偿上下文变更可以被应用,以便将本地上下文数据132转变到之前的状态或者另一个被允许的状态。相比于如在诸如“ACID”模型这样的常规事务数据库模型中常见的那样延迟对本地上下文数据132的更新直到传播记录被接收为止,使用补偿可以减少与计算设备104的用户交互的等待时间。
模块的一些组合可以在交互框架134中被使用。在一些示例中,交互框架134包括传播接收模块516和传播应用模块518。在一些示例中,交互框架134包括输入模块520、复制模块522和发射模块524。在一些示例中,交互框架134包括交互模块526。这些模块的其它组合可以被使用。例如,交互框架134可以包括传播接收模块516、传播应用模块518和交互模块526,或者可以包括输入模块520、复制模块522、发射模块524和交互模块526。
在一些示例中,计算设备104的计算机可读介质126可以包括查询处理框架528的指令。所存储的指令可以是可被(一个或者多个)处理单元124执行的。查询处理框架528可以包括接收模块530、检索模块532、执行模块534和发射模块536。所述模块可以以与上面参考交互框架134的模块讨论的方式类似的各种方式被组合。可以作为复制客户端的计算设备104可以包括如上面讨论的传感器512。
在一些示例中,查询处理框架528可以包括被配置为经由通信接口130接收查询指定的接收模块530,所述查询指定包括引用传感器512的数据库查询。查询指定可以例如从服务器被接收,所述服务器例如是复制服务器或者其它分布式计算资源102。
在一些示例中,查询处理框架528可以包括被配置为从传感器512检索数据的检索模块532。检索模块532可以直接从传感器512或者从传感器512数据被存储在其中的存储器502或者计算机可读介质126的区域检索数据。
在一些示例中,查询处理框架528可以包括被配置为使用所检索的数据执行数据库查询的执行模块534。执行模块534例如可以执行SQL存储过程或者XPATH或者其它查询。
在一些示例中,查询处理框架528可以包括被配置为经由通信接口130发射所执行的数据库查询的结果的发射模块536。发射模块536可以将结果发射给服务器、复制服务器、复制客户端或者另一个计算设备104或者分布式计算资源102。
图示性过程
图6是图示了用于使用多用户系统的例如分布式计算资源102这样的复制服务器传播对上下文数据118的变更或者以其它方式对数据进行复制的示例过程600的流程图。“复制服务器”不限于服务器类的计算机,以及可以例如使用膝上型或者平板型计算机来实现。图6和其它流程图中所示的示例功能和本文中的示例过程可以在一个或多个分布式计算资源102或者计算设备104上被实现或者体现。在一些示例中,示例功能可以使用在分布式计算资源102或者计算设备104上运行的软件来实现。为了进行图示,下面参考图1的分布式计算资源102(1)中的处理单元110描述了示例过程600。然而,诸如(一个或者多个)分布式计算资源102或者(一个或者多个)计算设备104的处理单元124和/或其部件这样的其它处理单元可以实现诸如过程600这样的所描述的示例过程的(一个或者多个)步骤。
在每个示例流程图或者过程中对操作进行描述所按照的次序不打算理解为限制,以及,任何数量的所描述的操作可以以任何次序和/或并行地被组合以便实现每个过程。此外,图6-15中的每个图中的操作可以用硬件、软件及其组合来实现。在软件的上下文中,操作代表在被一个或多个处理器执行时导致一个或多个处理器执行所详述的操作的计算机可执行指令。在硬件的上下文中,操作代表在电路中被实现的逻辑功能,例如,数据通路控制和有限状态机排序功能。仅为了解释清楚起见就图1-5中示出的被专门标识的部件描述了本文中的流程图,并且这样的具体的标识不是限制性的。
在方框602处,复制框架120可以将上下文数据118存储在复制服务器上。如上面讨论的,上下文数据可以是与一个或多个用户与或者经由多用户系统进行的(一个或者多个)交互相关的。对上下文数据118进行存储可以允许分布式计算资源102充当中间层代理。基于来自每个复制客户端的输入修改所存储的上下文数据可以允许复制服务器对数据进行重新打包以便支持下面讨论的“混搭(mashup)”。
在方框604处,复制框架120可以接收与所存储的上下文数据118中的少于全部的数据相对应的更新记录。这可以是中间层代理的接收功能的一部分。更新记录可以从多用户系统的多个复制客户端中的第一复制客户端被接收。复制客户端可以包括计算设备104。在一些示例中,所述接收可以包括响应于来自多个复制客户端中的第一复制客户端的信号而接受更新记录的数据。该信号可以例如包括经由REST API的HTTP“推送”(客户端发起的)事务。在上面参考图4的接收模块412描述了在方框604中被执行的示例功能。方框604之后可以跟随方框608或者方框606。
在方框606处,至少部分上基于所接收的更新记录额修改所存储的上下文数据118。在上面参考图4的提交模块418描述了在方框604中被执行的示例功能。
在方框608处,复制框架120可以使用复制服务器(例如,(一个或者多个)处理单元216)至少部分上基于所接收的更新记录自动地确定多个传播记录。这可以是中间层代理的发射功能的一部分。传播记录中的每个传播记录可以与所存储的上下文数据118的相应的、不同的子集相对应,例如,与相应的计算设备104的本地上下文数据132相对应。相应地,可以通过在下面的方框610中将传播记录而非全部上下文数据118发射给每个复制客户端来减少带宽。在上面参考图4的确定传播模块414描述了在方框608中被执行的示例功能。
在方框610处,复制框架120可以经由一个或多个通信接口116将多个传播记录中的传播记录发射给例如复制客户端中的相应的复制客户端。在上面参考图4的发射模块416描述了在方框610中被执行的示例功能。例如,复制框架120可以使用多个传播记录中的每个传播记录发射相应的标识信息。复制框架120可以如上面参考发射模块416讨论的那样将(一个或者多个)传播记录发射给(一个或者多个)复制客户端或者其它(一个或者多个)计算设备104。(一个或者多个)复制客户端可以向(一个或者多个)复制服务器发射消息以便订阅上下文数据118的具体的投影(合适子集)。在一些示例中,所述发射可以包括向复制客户端中的相应的复制客户端发射相应的通知信号。这可以与例如经由web套接字连接进行的“推送”(服务器发起的)传输相对应。分布式计算资源102可以例如经由SOAP或者其它web服务或者RPC接口与观察者单元202和其它后端系统通信,以及经由REST或者其它面向客户端的接口与复制客户端通信。这可以允许分布式计算资源102桥接web服务与REST接口之间的“阻抗失配”。
继续客户支持示例,更新记录可以与来自用户的对于技术支持的请求相对应。所存储的上下文数据可以包括与用户的计算设备的配置有关的第一信息和标识支持技术人员的第二信息。多个传播记录可以包括:包括第一信息并且省略第二信息的第一传播记录;以及,包括第二信息并且省略第一信息的第二传播记录。所述发射(方框610)可以进一步包括将第一传播记录发射给支持技术人员的复制客户端,以及,将第二传播记录发射给用户的复制客户端。使用与相应的合适子集相对应的传播记录可以降低带宽消耗,因为每个参与者仅接收与该参与者相关的数据。使用这样的传播记录也可以提高系统的安全性,因为每一方仅被提供了该方具有对其的访问的信息。向用户或者技术人员显示信息在这些示例中可以是比在现有技术的方案中更高效的,因为少于上下文数据118的全部内容的信息被显示,并且每个传播记录中的信息可以是更有可能与接收相应的信息的用户有关的。
在一些示例中,方法600进一步包括:从多个复制客户端中的第二、不同的复制客户端接收与所存储的上下文数据的少于全部的数据相对应的第二更新记录;使用复制服务器至少部分上基于所接收的第二更新记录而自动地确定多个第二传播记录,其中,第二传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及,经由一个或多个通信接口发射多个第二传播记录,其中,所述传播记录中的至少一个传播记录和第二传播记录中的至少一个第二传播记录被发射给多个复制客户端中的一个所选择的复制客户端。这允许使用分布式计算资源102执行“混搭”操作。在混搭中,复制服务器聚合或者组合来自多个源的数据,并且将该聚合或者组合发射给复制客户端。
图7是图示了用于例如使用运行查询管理框架406的分布式计算资源102管理分布式系统中的查询的示例过程700的流程图。
在方框702处,查询管理框架406接收例如经编译的查询或者其它数据库查询这样的查询指定。方框702可以包括经由通信接口116例如从计算设备104的用户界面136接收查询指定。在上面参考图4的查询接收模块422描述了在方框702中被执行的示例功能。
在方框704处,查询管理框架406至少部分上基于所接收的查询指定而选择子集指示中的一个子集指示。在上面参考图4的确定模块424描述了在方框608中被执行的示例功能。
在方框706处,查询管理框架406经由通信接口发射所接收的查询指定和所选择的子集指示的标识信息。在上面参考图4的发射模块426描述了在方框706中被执行的示例功能。
图8是图示了用于例如使用运行分析框架204的分布式计算资源102管理分布式系统中的上下文数据118的传播的示例过程800的流程图。在一些示例中,图7的方框706之后跟随方框802。
在方框802处,分析框架204经由通信接口116接收例如SQL或者HTTP事务这样的更新记录。在上面参考图5的查询接收模块422描述了在方框702中被执行的示例功能。方框802之后可以跟随方框804或者方框810。
在方框804处,分析框架204至少部分上基于更新记录、上下文数据、规则集合和子集指示中的相应的子集指示来确定一个或多个传播记录。在上面参考图4的修改模块420描述了在方框804中被执行的示例功能。
在方框806处,分析框架204至少部分上基于上下文数据而修改规则集合。在上面参考图4的修改模块420描述了在方框806中被执行的示例功能。方框806之后可以跟随方框802或者方框808。这样,分析框架204可以例如随着新的更新记录被提供而重复地修改规则集合。修改可以例如被定期地、间歇地或者以所选择的时间表执行。
在一些示例中,在方框808处,分析框架204经由通信接口116发射具有(例如,伴随)相应的子集指示的标识信息的所确定的传播记录中的每个传播记录或者一个或多个传播记录。在上面参考图4的发射模块416描述了在方框808中被执行的示例功能。
在方框810中,分析框架204至少部分上基于所接收的更新记录而修改上下文数据。在上面参考图4的提交模块418描述了在方框810中被执行的示例功能。
图9是图示了用于例如使用运行复制框架120或者分析框架204的分布式计算资源102管理分布式系统中的上下文数据118的示例过程900的流程图。
在方框902处,可以例如由分布式计算资源102接收更新记录。在一些示例中,方框902可以代表方框604或者方框802。在这些示例中的一些示例中,可以在方框604或者方框802之后执行方框904(在下面被讨论)。在一些示例中,可以响应于接收与例如是至少一个上下文数据集404这样的所存储的上下文数据118相对应的更新记录而执行方框904。
在方框904处,分布式计算资源102确定所接收的更新记录与所存储的触发条件之间的匹配。触发条件可以例如是如在上面参考(一个或者多个)观察者单元202讨论的那样的。如果不存在任何匹配,则接下来的方框可以是例如用于等待另一个更新记录的方框902。如果存在匹配,则接下来的方框是方框906。
在方框906处,响应于所述匹配,分布式计算资源102至少部分上基于所存储的输入准则,从所存储的上下文数据118中选择数据。所存储的输入准则可以如上面参考图2讨论的那样阐述例如观察者单元202被配置为处理哪些数据。该选择可以包括执行查询、过滤、产生报告或者以其它方式进行变换、取子集或者提取来自上下文数据118的数据。
在方框908处,分布式计算资源102将所选择的数据发射给观察者单元202。在上面参考图2的观察者单元202描述了在方框908中被执行的示例功能。该发射可以例如经由通信接口116或者在(一个或者多个)处理单元110上执行的进程间通信(IPC)或者远程过程调用(RPC)子系统被执行。方框908可以之后跟随例如用于根据安全性限制执行(一个或者多个)观察者单元202的方框910或者例如用于对(一个或者多个)观察者单元202的远程的或者非限制性的执行的方框912。
在方框910处,分布式计算资源102使用通常被称为“沙盒”的权限受限的执行配置执行观察者单元202的计算机程序指令。如上面讨论的,(一个或者多个)观察者单元202可以使用软件插件来实现。分布式计算资源102可以执行允许(一个或者多个)软件插件运行的插件宿主的计算机程序指令。插件宿主可以建立沙盒,沙盒防止软件插件例如写计算机可读介质112上的文件或者经由网络106建立与不处在受信任的系统的“白名单”上的计算系统的连接。插件宿主还可以在允许任何软件插件执行之前使用密码签名验证技术来确定该插件携带来自受信任方的密码签名。插件宿主可以防止未经签名的软件插件执行。
在方框912处,分布式计算资源102从观察者单元202接收第二更新记录。在上面参考图2的观察者单元202描述了在方框912中被执行的示例功能。所述接收可以例如经由通信接口116或者进程间通信(IPC)或者远程过程调用(RPC)子系统被执行。
在方框914处,分布式计算资源102至少部分上基于所接收的第二更新记录而修改所存储的上下文数据118。在上面参考图1和2的复制框架120描述了在方框914中被执行的示例功能。
图10是图示了用于例如使用运行复制框架120或者分析框架204的分布式计算资源102管理分布式系统中的上下文数据118的示例过程1000的流程图。
在方框1002处,分布式计算资源102可以等待用于对上下文数据118进行测试的信号。在一些示例中,该信号可以由复制框架120或者其提交模块418响应于上下文数据的变更而产生。在一些示例中,该信号可以由分布式计算资源102或者一个或多个计算设备104的模块产生。在一些示例中,方框1002可以是响应于在方框604、方框606、方框802、方框810或者方框914中被产生的信号的。在这些示例中的一些示例中,方框1004(在下面被讨论)可以在方框604、方框606、方框802、方框810或者方框914之后或者在方框1012或者方框1106(这两者在下面被讨论)之后被执行。在一些示例中,方框1004可以响应于接收与例如是至少一个上下文数据集404这样的所存储的上下文数据118相对应的更新记录而被执行。在一些示例中,方框1004可以响应于对例如是至少一个上下文数据集404这样的所存储的上下文数据118的修改而被执行。
在方框1004处,分布式计算资源102可以确定所存储的上下文数据118的至少一部分与所存储的触发条件之间的匹配。所存储的上下文数据118的至少一部分可以包括最近被修改的数据(例如,在方框1004跟随在方框914之后时)或者未在最近被修改的数据。触发条件可以例如是如在上面参考(一个或者多个)观察者单元202讨论的触发条件。如果不存在任何匹配,则接下来的方框可以是例如用于等待用于对上下文数据118进行测试的另一个信号的方框1002。如果存在匹配,则接下来的方框是方框1006。在一个示例中,分布式计算资源102可以例如使用在上下文数据的部分与触发条件相匹配时成功的MICROSOFT Rx固定查询或者SQL存储过程确定匹配。在一些示例中,触发条件可以包括多个单独的准则,以使得触发条件在所述准则中的任一个准则被满足时被匹配。
在方框1006处,响应于所述匹配,分布式计算资源102可以将所存储的上下文数据的所述至少一部分发射给观察者单元202。例如,触发条件可以是基于所指定的准则返回来自所选择的表的整行的数据库查询。所存储的上下文的所述至少一部分可以是被返回的行。发射可以如上面参考方框908描述的那样被执行。方框1006可以之后跟随方框1008或者方框1010。
在方框1008处,分布式计算资源102使用权限受限的执行配置(“沙盒”)执行观察者单元202的计算机程序指令。在上面参考方框910描述了在方框1008中被执行的示例功能。
在方框1010处,分布式计算资源102从观察者单元202接收第二更新记录。在上面参考方框912描述的在方框1010中被执行的示例功能。
在方框1012处,分布式计算资源102至少部分上基于所接收的第二更新记录而修改所存储的上下文数据。在上面参考方框914描述了在方框1012中被执行的示例功能。
在一些示例中,通过使用复制服务器,第二多个传播记录可以至少部分上基于所接收的第二更新记录被确定,其中,所述传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应。第二多个传播记录中的传播记录可以经由一个或多个通信接口被发射给复制客户端中的相应的复制客户端。这可以允许反应性的事件触发,在反应性的事件触发中,一个事件可以触发其它的事件。
图11是图示了用于例如使用运行复制框架120或者分析框架204的分布式计算资源102处理分布式系统中的上下文数据118的示例过程1100的流程图。在一些示例中,方框604或者方框802可以之后跟随方框1102。方框1102可以响应于接收与例如是至少一个上下文数据集404这样的所存储的上下文数据118相对应的更新记录而被执行。方框1102可以额外地或者替换地以时间表、规律地、间歇地或者在上下文数据118的大小或者内容已比所选择的阈值更多地变更时(例如,分别以被更新的记录的字节或者数量计)被执行。
在方框1102处,分布式计算资源102存储所存储的上下文数据118的快照。方框1102可以例如包括将所存储的上下文数据118或者一个或多个上下文数据集404的一些或者全部数据复制到例如数据库服务器或者另一个存储库这样的分布式计算资源102(2)。方框1102可以包括将所存储的上下文数据118或者一个或多个上下文数据集404的一些或者全部数据输出到例如CD-ROM、蓝光数据光盘、磁带或者可移除闪存存储装置这样的可移除介质。所述方法可以在方框1102之后终止,或者,如果期望处理,则方框1102可以之后跟随方框1104。
在方框1104处,分布式计算资源102(例如,图2的102(1)或者102(M))使用机器学习算法对所存储的快照进行处理。在一些示例中,机器学习算法可以包括神经网络训练算法。在上面参考分析框架204和修改模块420描述了在方框1104中被执行的示例功能。
在方框1106处,分布式计算资源102至少部分上基于机器学习算法的输出修改所存储的上下文数据。在上面参考提交模块418描述了在方框1106中被执行的示例功能。
图12是图示了用于例如使用运行复制框架120的分布式计算资源102管理分布式系统中的上下文数据118的传播的示例过程1200的流程图。在一些示例中,方框604、方框610或者方框802可以之后跟随方框1202。方框1202可以响应于接收与例如至少一个上下文数据集404这样的所存储的上下文数据118相对应的更新记录而被执行。
在方框1202处,分布式计算资源102接收与第二所存储的上下文数据相对应的第二更新记录。在至少一些示例中,图6的方框604包括接收与例如是上下文数据集404(1)这样的第一上下文数据集相对应的更新记录。在这些示例中,方框1202包括接收与例如上下文数据集404(K)这样的第二上下文数据集相对应的第二更新记录。在上面参考接收模块412描述的在方框1106中被执行的示例功能。
在方框1204处,分布式计算资源102至少部分上基于所接收的更新记录确定多个第二传播记录。第二传播记录中的每个第二传播记录与例如上下文数据集404(K)这样的所存储的上下文数据的相应的、不同的合适子集相对应。在上面参考确定传播模块414描述了在方框1106中被执行的示例功能。
在方框1206处,分布式计算资源102经由一个或多个通信接口发射多个第二传播记录,其中,第二传播记录中的至少一个第二传播记录与第二标识信息一同被发射。在上面参考发射模块416描述了在方框1106中被执行的示例功能。在一些示例中,第二标识信息与多个传播记录中的至少一个传播记录的相应的标识信息相匹配。这允许对于不同的上下文数据集的两个不同的上下文修改被提供给例如单个计算设备104这样的相同的目的地。
图13是图示了用于例如使用运行交互框架134的计算设备104修改本地上下文数据130的示例过程1300的流程图。
在方框1302处,交互框架134经由通信接口130例如从复制控制器或者其它分布式计算资源102接收传播记录。在上面参考图5的传播接收模块516描述了在方框1302中被执行的示例功能。
在方框1304处,交互框架134至少部分上基于所接收的传播记录修改本地上下文数据132。在上面参考图5的传播应用模块518描述了在方框1304中被执行的示例功能。在一些示例中,方框1304可以之后跟随图14的方框1402。
在一些示例中,方框1304可以之后跟随方框1302。这样,可以对于额外的传播记录重复方框1302、1304。在一些示例中,在方框1302处,经由通信接口接收第二传播记录。在方框1304处,至少部分上基于所接收的第二传播记录修改与所述本地上下文数据(例如,本地上下文数据集514(1))不同的第二本地上下文数据(例如,本地上下文数据集514(L))。
图14是图示了用于例如使用运行交互框架134的计算设备104基于对本地上下文数据130的变更修改上下文数据118的示例过程1400的流程图。
在方框1402处,交互框架134例如经由用户界面136接收数据记录。在上面参考图5的输入模块520描述了在方框1402中被执行的示例功能。所接收的数据记录可以被称为第一数据记录。
在方框1404处,交互框架134至少部分上基于所接收的数据记录和本地上下文数据132确定更新记录。在上面参考图5的复制模块522描述了在方框1404中被执行的示例功能。
在方框1406处,交互框架134经由通信接口130发射所确定的更新记录。在上面参考图5的发射模块524描述了在方框1406中被执行的示例功能。方框1406可以之后跟随方框1404。这样,可以针对给定的数据记录确定和发射一个或多个更新记录。在一些示例中,方框1406之后可以跟随图15的方框1502。
在一些示例中,方框1406可以之后跟随方框1402。这样,可以对于多个数据记录重复方框1402、1404和1406。方框1402可以包括例如经由用户界面136接收第二数据记录。方框1404可以包括至少部分上基于第二数据记录和与所述本地上下文数据(例如,本地上下文数据集514(1))不同的第二本地上下文数据(例如,本地上下文数据集514(L))确定第二更新记录。方框1406可以包括经由通信接口130发射所确定的第二更新记录。
图15是图示了用于例如使用运行交互框架134的计算设备104至少部分上基于对本地上下文数据130的变更例如在形式或者内容上对用户界面136进行变更的示例过程1500的流程图。
在方框1502处,交互框架134经由用户界面136接收数据记录。该数据记录可以被称为额外的数据记录。在上面参考图5的输入模块520和交互模块526描述了在方框1502中被执行的示例功能和可以从其接收(一个或者多个)数据记录的示例传感器512。
在方框1504处,交互框架134至少部分上基于数据记录修改本地上下文数据132。在上面参考图5的交互模块526描述了在方框1504中被执行的示例功能。
在方框1506处,交互框架134经由用户界面136提供输出。例如是视觉上的显示或者听觉上的警告这样的输出是至少部分上基于数据记录和经修改的本地上下文数据132的。在上面参考图5的交互模块526描述了在方框1506中被执行的示例功能。输出可以例如在发射更新记录(方框1406)之前或者与之并发地被提供,这可以减少基于数据记录更新用户界面136时的等待时间。
在一些示例中,图9、14和15中所示的操作可以按照任何次序被执行、被执行任何次。例如,可以在对两个额外的数据记录的处理(图15)之间接收和处理多个第一数据记录(图14)。
上面描述的一些示例涉及使用(一个或者多个)分布式计算资源102在(一个或者多个)计算设备104之间分布上下文数据118。一些示例的技术效果在于,减少处理对上下文数据118和本地上下文数据132的修改所需的(一个或者多个)计算设备104或者(一个或者多个)分布式计算资源102上的带宽和处理循环。一些示例的另一个技术效果在于,对使用(一个或者多个)传感器512确定的世界的数据进行处理,以及,基于经处理的数据修改上下文数据118。一些示例的另一个技术效果在于,在电子显示器上呈现计算设备104的内部状态的视觉表示,所述内部状态例如是,诸如从使用(一个或者多个)传感器512进行的测量导出的信息这样的本地上下文数据132中的信息。
示例条款
A:一种使用多用户系统的复制服务器复制数据的方法,所述方法包括:将上下文数据存储在所述复制服务器上,所述上下文数据是与一个或多个用户与或者经由所述多用户系统进行的(一个或者多个)交互相关的;从所述多用户系统的多个复制客户端中的第一复制客户端接收与所存储的上下文数据中的少于全部的数据相对应更新记录;至少部分上基于所接收的更新记录,修改所存储的上下文数据;使用所述复制服务器至少部分上基于所接收的更新记录,自动地确定多个传播记录,其中,所述传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及,经由一个或多个通信接口将所述多个传播记录中的所述传播记录发射给所述复制客户端中的相应的复制客户端。
B:如段A详述的所述方法,其中:所述更新记录与来自用户的对于技术支持的请求相对应;所存储的上下文数据包括与所述用户的计算设备的配置有关的第一信息和标识支持技术人员的第二信息;所述多个传播记录包括:包括所述第一信息并且省略所述第二信息的第一传播记录;以及,包括所述第二信息并且省略所述第一信息的第二传播记录;以及,所述发射进一步包括:将所述第一传播记录发射给所述支持技术人员的复制客户端,以及,将所述第二传播记录发射给所述用户的复制客户端。
C:如段A或者B详述的所述方法,进一步包括:从所述多个复制客户端中的不同的第二复制客户端接收与所存储的上下文数据中的少于全部的数据相对应的第二更新记录;使用所述复制服务器至少部分上基于所接收的第二更新记录,自动地确定多个第二传播记录,其中,所述第二传播记录中的每个第二传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及,经由一个或多个通信接口发射所述多个第二传播记录,其中,所述传播记录中的至少一个传播记录和所述第二传播记录中的至少一个第二传播记录被发射给所述多个复制客户端中的所选择的复制客户端。
D:如段A-D中的任一段详述的所述方法,进一步包括:确定所述更新记录与所存储的触发条件之间的匹配;以及,响应于所述匹配执行以下项:至少部分上基于所存储的输入准则,从所存储的上下文数据中选择数据;将所选择的数据发射给观察者单元;从所述观察者单元接收第二更新记录;以及,至少部分上基于所接收的第二更新记录,修改所存储的上下文数据。
E:如段D详述的所述方法,进一步包括:使用所述复制服务器至少部分上基于所接收的第二更新记录,自动地确定第二多个传播记录,其中,所述传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;经由所述一个或多个通信接口将所述第二多个传播记录中的所述传播记录发射给所述复制客户端中的相应的复制客户端。
F:如段D或者E详述的所述方法,进一步包括:使用权限受限的执行配置执行所述观察单元的计算机程序指令。
G:如段A-F中的任一段详述的所述方法,进一步包括:确定所存储的上下文数据的至少一部分与所存储的触发条件之间的匹配;以及,响应于所述匹配执行以下项:将所存储的上下文数据的所述至少一部分发射给观察者单元;从所述观察者单元接收第二更新记录;以及,至少部分上基于所接收的第二更新记录,修改所存储的上下文数据。
H:如段A-G中的任一段详述的所述方法,其中:所述接收包括:响应于来自所述多个复制客户端中的所述第一复制客户端的信号,接受所述更新记录的数据;以及,所述发射包括:向所述复制客户端中的相应的复制客户端发射相应的通知信号。
I:如段A-H中的任一个段详述的所述方法,进一步包括:与所存储的上下文数据分离地存储所存储的上下文数据的快照;使用机器学习算法对所存储的快照进行处理;以及,至少部分上基于所述机器学习算法的输出,修改所存储的上下文数据。
J:如段I详述的所述方法,所述机器学习算法包括神经网络训练算法。
K:多用户系统的一种服务器,所述服务器包括:通信接口;被可运行地耦合到所述通信接口的一个或多个处理单元;以及,具有存储在其上的以下内容的一个或多个计算机可读介质:多用户系统的上下文数据,所述上下文数据是与一个或多个用户与或者经由所述多用户系统进行的(一个或者多个)交互相关的,并且包括来自多个数据源中的每个数据源的相应的数据;多个子集指示,每个子集指示标识所述上下文数据的相应的合适子集,并且与所述多用户系统的相应的复制客户端相对应;以及指令,其在被所述一个或多个处理单元执行时导致所述一个或多个处理单元执行包括以下项的操作:接收引用所述多个数据源中的一个或多个数据源的查询指定;至少部分上基于所接收的查询指定,选择所述子集指示中的一个子集指示;以及,经由所述通信接口将所接收的查询指定发射给与所述子集指示中的所选择的子集指示相对应的所述多用户系统的复制客户端。
L:如段K详述的所述服务器,所述操作进一步包括:经由所述通信接口接收更新记录;至少部分上通过对所述更新记录和所述上下文数据应用规则集合以标识指示可采取行动的事件的所述上下文数据中的模式来确定一个或多个传播记录,其中,所述传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及,至少部分上基于所述上下文数据,修改所述规则集合。
M:如段L详述的所述服务器,所述操作进一步包括:至少部分上基于所接收的更新记录,修改所述上下文数据。
N:如段L或者M详述的所述服务器,所述修改操作包括:将所述上下文数据中的至少一些上下文数据应用于神经网络,以及,至少部分上基于所述神经网络的输出修改所述规则集合。
O:多用户系统的一种复制客户端,所述复制客户端包括:通信接口;用户界面;被可运行地耦合到所述通信接口和所述用户界面的一个或多个处理单元;以及,具有存储在其上的本地上下文数据和指令的一个或多个计算机可读介质,所述指令在被所述一个或多个处理单元执行时导致所述一个或多个处理单元执行包括以下项的操作:经由所述通信接口从复制服务器接收传播记录;至少部分上基于所接收的传播记录修改所述本地上下文数据,其中,所述本地上下文数据是与一个或多个用户与所述多用户系统的(一个或者多个)交互相关的;经由所述用户界面接收数据记录;至少部分上基于所述数据记录和所述本地上下文数据确定更新记录;以及,经由所述通信接口向所述复制服务器发射所确定的更新记录以更新被存储在所述复制服务器处的上下文数据。
P:如段O详述的所述复制客户端,所述操作进一步包括:经由所述用户界面接收额外的数据记录;至少部分上基于所述额外的数据记录修改所述本地上下文数据;以及,至少部分上基于所述经修改的本地上下文数据经由所述用户界面提供输出。
Q:如段P详述的所述复制客户端,提供所述输出在经由所述通信接口进行通信之前被执行。
R:段O-Q中的任一段详述的所述复制客户端,所述操作进一步包括:经由所述通信接口接收第二传播记录;以及,至少部分上基于所接收的第二传播记录修改与所述本地上下文数据不同的第二本地上下文数据。
S:如段O-R中的任一段详述的所述复制客户端,所述操作进一步包括:接收第二数据记录;至少部分上基于所述第二数据记录和与所述本地上下文数据不同的第二本地上下文数据确定第二更新记录;以及,经由所述通信接口发射所确定的第二更新记录。
T:如段O-S中的任一段详述的所述复制客户端,所述复制客户端进一步包括传感器,以及,所述操作进一步包括:经由所述通信接口接收包括引用所述传感器的数据库查询的查询指定;检索来自所述传感器的数据;使用所检索的数据执行所述数据库查询;以及,经由所述通信接口发射所执行的数据库查询的结果。
U:一种系统,包括:一个或多个通信接口;被耦合到所述一个或多个通信接口的一个或多个处理单元;以及,被耦合到所述处理单元并且存储指令的例如计算机存储介质这样的一个或多个计算机可读介质,所述指令在被所述一个或多个处理单元执行时导致一个或多个处理单元执行如段A-J中的任一段详述的操作。
V:一种其上具有的计算机可执行指令的计算机可读介质,所述计算机可执行指令在执行时将计算机配置为执行如段A-J中的任一段详述的操作。
W:一种系统,包括:用于将上下文数据存储在多用户系统的复制服务器上的装置,所述上下文数据是与一个或多个用户与或者经由所述多用户系统进行的(一个或者多个)交互相关的;用于从所述多用户系统的多个复制客户端中的第一复制客户端接收与所存储的上下文数据中的少于全部的数据相对应更新记录的装置;用于至少部分上基于所接收的更新记录修改所存储的上下文数据的装置;用于使用所述复制服务器至少部分上基于所接收的更新记录自动地确定多个传播记录的装置,其中,所述传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及,用于经由一个或多个通信接口将所述多个传播记录中的所述传播记录发射给所述复制客户端中的相应的复制客户端的装置。
X:如段W详述的所述系统,其中:所述更新记录与来自用户的对于技术支持的请求相对应;所存储的上下文数据包括与所述用户的计算设备的配置有关的第一信息和标识支持技术人员的第二信息;所述多个传播记录包括:包括所述第一信息并且省略所述第二信息的第一传播记录;以及,包括所述第二信息并且省略所述第一信息的第二传播记录;以及,用于发射的所述装置进一步包括:用于将所述第一传播记录发射给所述支持技术人员的复制客户端,以及,将所述第二传播记录发射给所述用户的复制客户端的装置。
Y:如段W或者X详述的所述系统,进一步包括:用于从所述多个复制客户端中的不同的第二复制客户端接收与所存储的上下文数据中的少于全部的数据相对应的第二更新记录的装置;用于使用所述复制服务器至少部分上基于所接收的第二更新记录自动地确定多个第二传播记录的装置,其中,所述第二传播记录中的每个第二传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及,用于经由一个或多个通信接口发射所述多个第二传播记录的装置,其中,所述传播记录中的至少一个传播记录和所述第二传播记录中的至少一个第二传播记录被发射给所述多个复制客户端中的所选择的复制客户端。
Z:如段W-Z中的任一个段详述的所述系统,进一步包括:用于确定所述更新记录与所存储的触发条件之间的匹配的装置;以及,用于响应于所述匹配执行以下项的装置:至少部分上基于所存储的输入准则从所存储的上下文数据中选择数据;将所选择的数据发射给观察者单元;从所述观察者单元接收第二更新记录;以及,至少部分上基于所接收的第二更新记录修改所存储的上下文数据。
AA:如段Z详述的所述系统,进一步包括:用于使用所述复制服务器至少部分上基于所接收的第二更新记录自动地确定第二多个传播记录的装置,其中,所述传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及,用于经由所述一个或多个通信接口将所述第二多个传播记录中的所述传播记录发射给所述复制客户端中的相应的复制客户端的装置。
AB:如段Z或者AA详述的所述系统,进一步包括:用于使用权限受限的执行配置执行所述观察单元的计算机程序指令的装置。
AC:如段W-AB中的任一段详述的所述系统,进一步包括:用于确定所存储的上下文数据的至少一部分与所存储的触发条件之间的匹配的装置;以及,用于响应于所述匹配执行以下项的装置:将所存储的上下文数据的所述至少一部分发射给观察者单元;从所述观察者单元接收第二更新记录;以及,至少部分上基于所接收的第二更新记录修改所存储的上下文数据。
AD:如段W-AC中的任一段详述的所述系统,其中:用于接收的所述装置包括:用于响应于来自所述多个复制客户端中的所述第一复制客户端的信号接受所述更新记录的数据的装置;以及,用于发射的装置单元包括:用于向所述复制客户端中的相应的复制客户端发射相应的通知信号的装置。
AE:如段W-AD中的任一段详述的所述系统,进一步包括:用于与所存储的上下文数据分离地存储所存储的上下文数据的快照的装置;用于使用机器学习算法对所存储的快照进行处理的装置;以及,用于至少部分上基于所述机器学习算法的输出修改所存储的上下文数据的装置。
AF:如段AE详述的所述系统,所述机器学习算法包括神经网络训练算法。
AG:如段A-J中的任一段详述的所述方法,进一步包括:使用权限受限的执行配置执行所述观察者单元的计算机程序指令。
AH:如段A-J中的任一段详述的所述方法,所述发射进一步包括:使用所述多个传播记录中的每个传播记录发射相应的标识信息,以及,所述方法进一步包括:接收与第二所存储的上下文数据相对应的第二更新记录;至少部分上基于所接收的更新记录确定多个第二传播记录,其中,所述第二传播记录中的每个第二传播记录与所述第二所存储的上下文数据的相应的、不同的合适子集相对应;以及,经由一个或多个通信接口发射所述多个第二传播记录,其中,所述第二传播记录中的至少一个第二传播记录带着第二标识信息被发射,以及,所述第二标识信息与所述多个传播记录中的至少一个传播记录的相应的标识信息相匹配。
AI:一种系统,包括:一个或多个通信接口;被耦合到所述通信接口的一个或多个处理单元;以及,被耦合到所述处理单元并且存储指令的例如计算机存储介质这样的一个或多个计算机可读介质,所述指令在被所述一个或多个处理单元执行时,导致一个或多个处理单元执行如段AG或者AH详述的操作。
AJ:一种其上具有的计算机可执行指令的计算机可读介质,所述计算机可执行指令在执行时将计算机配置为执行如段AG或者AH详述的操作。
AK:段W-AF中的任一段详述的所述系统,进一步包括:用于使用权限受限的执行配置执行所述观察者单元的计算机程序指令的装置。
AL:如段W-AF或者AK中的任一段详述的所述系统,用于发射的所述装置进一步包括:用于随所述多个传播记录中的每个传播记录发射相应的标识信息的装置,以及,所述系统进一步包括:用于接收与第二所存储的上下文数据相对应的第二更新记录的装置;用于至少部分上基于所接收的更新记录确定多个第二传播记录的装置,其中,所述第二传播记录中的每个第二传播记录与所述第二所存储的上下文数据的相应的、不同的合适子集相对应;以及,用于经由一个或多个通信接口发射所述多个第二传播记录的装置,其中,所述第二传播记录中的至少一个第二传播记录带着第二标识信息被发射,以及,所述第二标识信息与所述多个传播记录中的至少一个传播记录的相应的标识信息相匹配。
结论
尽管已使用专用于结构化特征和/或方法学动作的语言描述了所述技术,但应当理解,所附权利要求不必限于所描述的特征或者动作。相反,作为这样的技术的示例实现方式描述了所述特征和动作。
在单个方框中图示并且参考那些方框概述了示例过程的操作。过程被图示为方框的逻辑流,所述方框中的每个方框可以代表可以用硬件、软件或者其组合来实现的一个或多个操作。在软件的上下文中,操作代表被存储在一个或多个计算机可读介质上的在被一个或多个处理器执行时使所述一个或多个处理器能够执行所详述的操作的计算机可执行指令。概括地,计算机可执行指令包括执行具体的功能或者实现具体的抽象数据类型的例程、程序、对象、模块、组件、数据结构等。对操作进行描述所按照的次序不打算理解为限制,并且任何数量的所描述的操作可以按照任何次序被执行、按照任何次序被组合、被细分成多个子操作和/或被并行地执行,以便实现所描述的过程。所描述的过程可以被与一个或多个设备102、104相关联的资源执行,所述资源诸如是一个或多个内部或者外部CPU或者GPU和/或一个或多个诸如是FPGA、DSP或者上面描述的其它类型这样的硬件逻辑。
上面描述的方法和过程中的全部方法和过程可以在被一个或多个通用计算机或者处理器执行的软件代码模块中被体现,并且经由所述软件代码模块被完全地自动化。代码模块可以被存储在任何类型的计算机可读存储介质或者其它计算机存储设备中。所述方法中的一些方法或者全部方法可以替换地在专业计算机硬件中被体现。
除非另外专门指出,否则特别诸如是“可以”、“可以是”、“可能”或者“可能是”这样的条件词在本上下文中被理解为呈现特定的示例包括而其它的示例不包括特定的特征、元素和/或操作。因此,这样的条件词一般不打算暗示特定的特征、元素和/或操作对于一个或多个示例是以任何方式必需的,或者一个或多个示例必须包括用于在具有或者不具有用户输入或者提示的情况下决定是否特定的特征、元素和/或操作在任何具体的示例中被包括或者将被执行的逻辑。除非另外专门指出,否则诸如短语“X、Y或者Z中的至少一项”这样的连接词应当理解为呈现一个项目、术语等可以是X、Y或者Z或者其组合。
在本文中被描述和/或在附图中被描绘的流程图中的任何例行的描述、元素或者方框应当理解为,潜在地代表包括用于例行地实现具体的逻辑功能或者元素的一个或多个可执行指令的模块、段或者代码的部分。替换的实现方式被包括在本文中描述的示例的范围内,在替换的实现方式中,取决于如本领域的技术人员应当理解的所涉及的功能,元素或者功能可以被删除,或者按照与所示或者所讨论的次序不同的次序被执行,包括基本同步地或者按照逆序被执行。应当强调,可以对上面描述的示例作出许多改变或者修改,所述改变或者修改的元素应当理解为特别是可接受的示例。全部这样的修改和改变打算在本文中被包括在本公开内容的范围的内并且受下面的权利要求的保护。

Claims (15)

1.一种使用多用户系统的复制服务器复制数据的方法,所述方法包括:
将上下文数据存储在所述复制服务器上,所述上下文数据是与一个或多个用户与或者经由所述多用户系统进行的(一个或者多个)交互相关的;
从所述多用户系统的多个复制客户端中的第一个复制客户端接收与所存储的上下文数据中的少于全部的所存储的上下文数据相对应的更新记录;
至少部分上基于所接收的更新记录,修改所存储的上下文数据;
使用所述复制服务器至少部分上基于所接收的更新记录而自动地确定多个传播记录,其中,所述传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及
经由一个或多个通信接口将所述多个传播记录中的所述传播记录发射给所述复制客户端中的相应的复制客户端。
2.根据权利要求1所述的方法,其中:
所述更新记录与来自用户的对于技术支持的请求相对应;
所存储的上下文数据包括与所述用户的计算设备的配置有关的第一信息和标识支持技术人员的第二信息;
所述多个传播记录包括:
包括所述第一信息并且省略所述第二信息的第一传播记录;以及
包括所述第二信息并且省略所述第一信息的第二传播记录;以及
所述发射进一步包括:将所述第一传播记录发射给所述支持技术人员的复制客户端,以及,将所述第二传播记录发射给所述用户的复制客户端。
3.根据权利要求1或者权利要求2所述的方法,进一步包括:
从所述多个复制客户端中的不同的第二复制客户端接收与所存储的上下文数据中的少于全部的所存储的上下文数据相对应的第二更新记录;
使用所述复制服务器至少部分上基于所接收的第二更新记录而自动地确定多个第二传播记录,其中,所述第二传播记录中的每个第二传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及
经由一个或多个通信接口发射所述多个第二传播记录,其中,所述传播记录中的至少一个传播记录和所述第二传播记录中的至少一个第二传播记录被发射给所述多个复制客户端中的所选择的一个复制客户端。
4.根据前述权利要求中的任一项权利要求所述的方法,进一步包括:
确定所述更新记录与所存储的触发条件之间的匹配;以及
响应于所述匹配,执行以下操作:
至少部分上基于所存储的输入准则,从所存储的上下文数据中选择数据;
将所选择的数据发射给观察者单元;
从所述观察者单元接收第二更新记录;以及
至少部分上基于所接收的第二更新记录,修改所存储的上下文数据。
5.根据前述权利要求中的任一项权利要求所述的方法,进一步包括:
确定所存储的上下文数据的至少一部分与所存储的触发条件之间的匹配;以及
响应于所述匹配,执行以下操作:
将所存储的上下文数据的所述至少一部分发射给观察者单元;
从所述观察者单元接收第二更新记录;以及
至少部分上基于所接收的第二更新记录,修改所存储的上下文数据。
6.根据前述权利要求中的任一项权利要求所述的方法,其中:
接收所述更新记录包括:响应于来自所述多个复制客户端中的第一复制客户端的信号,接受所述更新记录的数据;以及
发射所述传播记录包括:向所述复制客户端中的相应的复制客户端发射相应的通知信号。
7.根据前述权利要求中的任一项权利要求所述的方法,进一步包括:
与所存储的上下文数据分离地存储所存储的上下文数据的快照;
使用机器学习算法对所存储的快照进行处理,所述机器学习算法包括神经网络训练算法;以及
至少部分上基于所述机器学习算法的输出,修改所存储的上下文数据。
8.多用户系统的一种服务器,所述服务器包括:
通信接口;
一个或多个处理单元,其被可运行地耦合到所述通信接口;以及
一个或多个计算机可读介质,其具有存储在其上的以下内容:
多用户系统的上下文数据,所述上下文数据是与一个或多个用户与或者经由所述多用户系统进行的(一个或者多个)交互相关的,并且包括来自多个数据源中的每个数据源的相应的数据;
多个子集指示,每个子集指示标识所述上下文数据的相应的合适子集,并且与所述多用户系统的相应的复制客户端相对应;以及
指令,其被所述一个或多个处理单元执行时导致所述一个或多个处理单元执行包括以下项的操作:
接收引用所述多个数据源中的一个或多个数据源的查询指定;
至少部分上基于所接收的查询指定,选择所述子集指示中的一个子集指示;以及
经由所述通信接口将所接收的查询指定发射给与所述子集指示中的所选择的子集指示相对应的所述多用户系统的复制客户端。
9.根据权利要求8所述的服务器,所述操作进一步包括:
经由所述通信接口接收更新记录;
至少部分上通过对所述更新记录和所述上下文数据应用规则集合以标识指示可交互的事件的所述上下文数据中的模式来确定一个或多个传播记录,其中,所述传播记录中的每个传播记录与所存储的上下文数据的相应的、不同的合适子集相对应;以及
至少部分上基于所述上下文数据,修改所述规则集合。
10.根据权利要求9所述的服务器,所述操作进一步包括:至少部分上基于所接收的更新记录,修改所述上下文数据。
11.根据权利要求9或者权利要求10所述的服务器,所述修改操作包括:将所述上下文数据中的至少一些上下文数据应用于神经网络,以及,至少部分上基于所述神经网络的输出而修改所述规则集合。
12.多用户系统的一种复制客户端,所述复制客户端包括:
通信接口;
用户界面;
一个或多个处理单元,其被可运行地耦合到所述通信接口和所述用户界面;以及
一个或多个计算机可读介质,其具有存储在其上的本地上下文数据和指令,所述指令在被所述一个或多个处理单元执行时导致所述一个或多个处理单元执行包括以下项的操作:
经由所述通信接口从复制服务器接收传播记录;
至少部分上基于所接收的传播记录而修改所述本地上下文数据,其中,所述本地上下文数据是与一个或多个用户与所述多用户系统的(一个或者多个)交互相关的;
经由所述用户界面接收数据记录;
至少部分上基于所述数据记录和所述本地上下文数据,确定更新记录;以及
经由所述通信接口向所述复制服务器发射所确定的更新,以更新被存储在所述复制服务器处的上下文数据。
13.根据权利要求12所述的复制客户端,所述操作进一步包括:
经由所述用户界面接收额外的数据记录;
至少部分上基于所述额外的数据记录,修改所述本地上下文数据;以及
至少部分上基于所述经修改的本地上下文数据,经由所述用户界面提供输出。
14.根据权利要求13所述的复制客户端,提供所述输出在经由所述通信接口进行通信之前被执行。
15.根据权利要求12-14中的任一项权利要求所述的复制客户端,所述复制客户端进一步包括传感器,以及,所述操作进一步包括:
经由所述通信接口接收包括引用所述传感器的数据库查询的查询指定;
检索来自所述传感器的数据;
使用所检索的数据执行所述数据库查询;以及
经由所述通信接口发射所执行的数据库查询的结果。
CN201580067705.8A 2014-12-12 2015-11-30 上下文驱动的多用户通信 Active CN107004024B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/569,575 US10242082B2 (en) 2014-12-12 2014-12-12 Context-driven multi-user communication
US14/569575 2014-12-12
PCT/US2015/062881 WO2016094105A1 (en) 2014-12-12 2015-11-30 Context-driven multi-user communication

Publications (2)

Publication Number Publication Date
CN107004024A true CN107004024A (zh) 2017-08-01
CN107004024B CN107004024B (zh) 2020-07-07

Family

ID=54838457

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580067705.8A Active CN107004024B (zh) 2014-12-12 2015-11-30 上下文驱动的多用户通信

Country Status (4)

Country Link
US (2) US10242082B2 (zh)
EP (1) EP3230901B1 (zh)
CN (1) CN107004024B (zh)
WO (1) WO2016094105A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109656984A (zh) * 2018-12-21 2019-04-19 树根互联技术有限公司 数据规则管理系统、方法和装置
CN112567359A (zh) * 2018-08-21 2021-03-26 谷歌有限责任公司 使用历史数据访问模式来优化分布式数据分析系统中的存储复制的系统
CN112860799A (zh) * 2021-02-22 2021-05-28 浪潮云信息技术股份公司 一种分布式数据库数据同步的管理方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9886347B2 (en) * 2015-01-08 2018-02-06 International Business Machines Corporation Data replication in a database management system
JP6671470B2 (ja) * 2015-10-06 2020-03-25 ティモシー イー. モーガン 車両追跡警報システム
US11226985B2 (en) * 2015-12-15 2022-01-18 Microsoft Technology Licensing, Llc Replication of structured data records among partitioned data storage spaces
US10896178B2 (en) * 2016-03-30 2021-01-19 Microsoft Technology Licensing, Llc High performance query processing and data analytics
US10339179B2 (en) 2016-04-11 2019-07-02 Oracle International Corporation Graph processing system that can define a graph view from multiple relational database tables
US10339164B2 (en) * 2016-09-22 2019-07-02 Rockwell Automation Technologies, Inc. Data exchange in a collaborative environment
US11481644B2 (en) * 2017-02-17 2022-10-25 Nike, Inc. Event prediction
KR102455056B1 (ko) * 2018-02-01 2022-10-17 삼성전자주식회사 컨텍스트에 따라 이벤트의 출력 정보를 제공하는 전자 장치 및 이의 제어 방법
US11120082B2 (en) 2018-04-18 2021-09-14 Oracle International Corporation Efficient, in-memory, relational representation for heterogeneous graphs
EP3561742A1 (en) * 2018-04-25 2019-10-30 Volume Limited Test and training data
US10341172B1 (en) 2018-10-22 2019-07-02 CSG Media, LLC System and method for configuring networks
CN111382174B (zh) * 2018-12-28 2023-10-17 百度在线网络技术(北京)有限公司 多方数据联合查询方法、装置、服务器和存储介质
US10656898B1 (en) * 2019-08-30 2020-05-19 Capital One Services, Llc Application replication platform
US11093459B2 (en) 2020-01-21 2021-08-17 Oracle International Corporation Parallel and efficient technique for building and maintaining a main memory, CSR-based graph index in an RDBMS
US11507579B2 (en) 2020-10-26 2022-11-22 Oracle International Corporation Efficient compilation of graph queries involving long graph query patterns on top of SQL based relational engine
US11989178B2 (en) 2020-10-26 2024-05-21 Oracle International Corporation Efficient compilation of graph queries including complex expressions on top of sql based relational engine
US11567932B2 (en) 2020-10-26 2023-01-31 Oracle International Corporation Efficient compilation of graph queries on top of SQL based relational engine
US20230065546A1 (en) * 2021-08-31 2023-03-02 Advanced Micro Devices, Inc. Distributing Model Data in Memories in Nodes in an Electronic Device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060224597A1 (en) * 2005-04-04 2006-10-05 Mark Fitzpatrick Distributed management framework for personal attributes
CN101807170A (zh) * 2009-02-17 2010-08-18 英业达集团(天津)电子技术有限公司 存储局域网络的快取内存的管理方法
US20110039522A1 (en) * 2009-08-13 2011-02-17 Palo Alto Research Center Incorporated Venue inference using data sensed by mobile devices
US20110246490A1 (en) * 2010-04-01 2011-10-06 Sony Ericsson Mobile Communications Ab Updates with context information
US8185501B1 (en) * 2010-03-08 2012-05-22 Sprint Communications Company L.P. Conditional fractional data store replication
CN103890749A (zh) * 2011-10-18 2014-06-25 迈克菲股份有限公司 协作式移动分析

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758355A (en) * 1996-08-07 1998-05-26 Aurum Software, Inc. Synchronization of server database with client database using distribution tables
JP4179880B2 (ja) * 2001-03-16 2008-11-12 シャープ株式会社 データを同期させるシステム、そのシステムに用いられる装置およびデータ同期方法
CA3006804C (en) * 2001-12-26 2021-05-18 Blackberry Limited Security interface for a mobile device
US20060046742A1 (en) * 2004-08-25 2006-03-02 Nokia Corporation Enabling access to private information
US7680908B2 (en) 2006-09-28 2010-03-16 Microsoft Corporation State replication
WO2008111081A2 (en) * 2007-03-14 2008-09-18 New Act Ltd. System and method for propagating personal identification information to communication devices
US8479286B2 (en) * 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US8719207B2 (en) 2010-07-27 2014-05-06 Oracle International Corporation Method and system for providing decision making based on sense and respond
WO2012051389A1 (en) * 2010-10-15 2012-04-19 Expressor Software Method and system for developing data integration applications with reusable semantic types to represent and process application data
US9286182B2 (en) * 2011-06-17 2016-03-15 Microsoft Technology Licensing, Llc Virtual machine snapshotting and analysis
US8873428B1 (en) * 2011-06-29 2014-10-28 Marvell International Ltd. Peer-to-peer based group configuration for interconnected devices
US9286354B2 (en) 2011-08-15 2016-03-15 Software Ag Systems and/or methods for forecasting future behavior of event streams in complex event processing (CEP) environments
JP5605341B2 (ja) * 2011-10-03 2014-10-15 株式会社日立製作所 アクセス制御方法および、それを用いた情報表示装置、情報表示システム
US9152725B2 (en) * 2011-11-04 2015-10-06 Salesforce.Com, Inc. Computer implemented methods and apparatus for configuring and performing a custom rule to process a preference indication
US20130191185A1 (en) 2012-01-24 2013-07-25 Brian R. Galvin System and method for conducting real-time and historical analysis of complex customer care processes
US20130332240A1 (en) 2012-06-08 2013-12-12 University Of Southern California System for integrating event-driven information in the oil and gas fields
US8635373B1 (en) * 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
US9171252B2 (en) 2012-10-11 2015-10-27 Sap Se Synchronization for context-aware complex event processing
EP2941848A4 (en) * 2013-03-15 2016-06-15 Huawei Tech Co Ltd SYNCHRONIZATION AND COLLABORATION OF INFORMATION IN A GROUP OF MOBILE DEVICES
US10410003B2 (en) * 2013-06-07 2019-09-10 Apple Inc. Multiple containers assigned to an application
US20150106403A1 (en) * 2013-10-15 2015-04-16 Indooratlas Oy Generating search database based on sensor measurements
US9462441B2 (en) * 2014-07-01 2016-10-04 At&T Intellectual Property I, L.P. Method and apparatus for dynamically managing user profiles and status change information
US9497267B1 (en) * 2016-03-31 2016-11-15 Atlassian Pty Ltd Systems and methods for synchronizing integrations in a collaboration platform

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060224597A1 (en) * 2005-04-04 2006-10-05 Mark Fitzpatrick Distributed management framework for personal attributes
CN101807170A (zh) * 2009-02-17 2010-08-18 英业达集团(天津)电子技术有限公司 存储局域网络的快取内存的管理方法
US20110039522A1 (en) * 2009-08-13 2011-02-17 Palo Alto Research Center Incorporated Venue inference using data sensed by mobile devices
US8185501B1 (en) * 2010-03-08 2012-05-22 Sprint Communications Company L.P. Conditional fractional data store replication
US20110246490A1 (en) * 2010-04-01 2011-10-06 Sony Ericsson Mobile Communications Ab Updates with context information
CN103890749A (zh) * 2011-10-18 2014-06-25 迈克菲股份有限公司 协作式移动分析

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112567359A (zh) * 2018-08-21 2021-03-26 谷歌有限责任公司 使用历史数据访问模式来优化分布式数据分析系统中的存储复制的系统
CN109656984A (zh) * 2018-12-21 2019-04-19 树根互联技术有限公司 数据规则管理系统、方法和装置
CN112860799A (zh) * 2021-02-22 2021-05-28 浪潮云信息技术股份公司 一种分布式数据库数据同步的管理方法

Also Published As

Publication number Publication date
WO2016094105A1 (en) 2016-06-16
US11537629B2 (en) 2022-12-27
US20160171068A1 (en) 2016-06-16
EP3230901B1 (en) 2019-09-11
US10242082B2 (en) 2019-03-26
CN107004024B (zh) 2020-07-07
US20190171649A1 (en) 2019-06-06
EP3230901A1 (en) 2017-10-18

Similar Documents

Publication Publication Date Title
CN107004024A (zh) 上下文驱动的多用户通信
US11625620B2 (en) Techniques for building a knowledge graph in limited knowledge domains
CN105900396B (zh) 移动云服务体系架构
EP3535656B1 (en) Ingress and egress of data using callback notifications
CN104145257B (zh) 用于被连接设备的语义缓存云服务
CN108292323A (zh) 使用数据源的元数据的数据库操作
CN110383308A (zh) 预测管道泄漏的新型自动人工智能系统
CN110140121A (zh) 聚合查询的数据库系统和处理
CN109845221A (zh) 用于服务层的访问控制策略同步
CN106687932A (zh) 跨设备应用发现和控制
CN107925701A (zh) 对于应用的事件通知
CN110447025A (zh) 在物联网中启用语义混搭
US11379510B2 (en) Automatic ontology generation for internet of things applications
CN108345543A (zh) 一种数据处理方法、装置、设备及存储介质
CN110391918A (zh) 利用机器学习的通讯频道推荐系统、方法和计算机可读介质
CN109952752A (zh) 针对隔离集合的有条件授权
CN109392309A (zh) 建立与非注册资源的基于音频的网络会话
CN104008089B (zh) 用于验证文档的方法和系统
CN105637842B (zh) 用于网络通信环境中的中介的可靠消息传送的方法
WO2024097671A1 (en) Infrastructure for composed supergraphs
US20230359667A1 (en) Infrastructure for queryable supergraph subset representations
US20220198156A1 (en) Machine-learning-based techniques for predictive monitoring of a software application framework
US10979284B2 (en) Systems and methods for providing cross-network event attribution
CN115803729A (zh) 中间件生成的记录的直接数据加载
US20240111766A1 (en) Infrastructure for live queries

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