技术领域
[0001] 本发明涉及分布式计算机环境中的数据库技术和数据处理,该环境包括至少一个服务器和多个客户端,该多个客户端包括至少第一客户端和第二客户端。更具体地说,它涉及数据处理和使数据对客户端可用。
相关背景技术
[0002] 网络技术和分布式计算系统在过去几十年中的发展导致网络流量负载和服务器工作负载的显著增加。因此,预计网络流量负载和服务器工作负载将进一步增加,从而导致对此类分布式计算系统的硬件和软件需求增加。在过去几年中,已经采取了一些方法来解决不断增加的网络流量工作负载和服务器工作负载。
[0003] US2007/0005679A1提出了用于在客户端‑服务器系统中执行搜索的方法。客户端子系统从服务器子系统接收一组初始搜索结果,规则引擎启动对客户端子系统的扫描以收集与客户端子系统相关联的技术信息,规则引擎在客户端子系统处过滤一组初始搜索结果。过滤步骤基于收集的技术信息。
[0004] US8,276,084B2提出了虚拟世界中的性能调整。在基于服务器/对等的混合方法中,随着区域内化身数量的增加,传输责任转向对等计算。服务器可以将数据的进一步处理“卸载”到客户端以增强服务器性能。例如,在虚拟世界中移动的用户可以从已经在该区域中并且先前已经从虚拟世界服务器中获取诸如纹理、几何结构等的高分辨率数据的其他用户接收关于景观的高分辨率信息。
[0005] US8,616,976B2描述了通过自组织对等网络供应游戏服务。用作客户端的对等设备从充当服务器的数据库下载游戏数据。对等设备可以将下载的数据和生成的数据发送到其他对等设备。
具体实施方式
[0025] 在分布式计算环境和内容分发网络中,由于客户端发送的对数据的请求数量的增加以及随后对数据的搜索、接收和处理带来的服务器工作负载的增加导致运行服务器的成本增加,例如CPU成本和存储成本。此外,客户端必须等待更长的时间,直到他们的请求被处理并返回所请求的数据。假设当前请求没有被正确处理,这会导致用户设备和界面响应较慢以及来自用户设备和用户的进一步不必要的后续请求。
[0026] 此外,客户端发送的对数据的请求数量的增加以及随后对数据的搜索、接收和处理导致分布式计算环境中的网络流量负载增加,从而降低传输速度并增加带宽利用率。客户端必须等待更长的时间才能交付所请求的数据,并且网络负载会增加。
[0027] 例如,经常访问的因特网可访问的内容数据库的命中率可以超过每天10亿次事务,并具有预期的指数增长。数据库主机通过利用高速缓存和安装实时内容交付/分发网络来响应这些发展,从而优化性能并降低成本。然而,到目前为止,这些方法并未使用在客户端上日益增加的可用计算能力。
[0028] 由于诸如智能电话处理单元和图形卡等更强大的硬件,诸如移动电话和笔记本电脑等客户端设备的计算能力和数据存储容量在过去几十年中有所增加。随着浏览器中的如和 的操作系统和用于移动设备的应用(通常称为“app”)已经进入市场,由于软件方面的发展,客户端设备的计算能力也有所提高,。
因此,当前的客户端系统在操作软件工具和平台的能力以及使客户端能够接管增强的计算和服务器功能的数据存储能力方面拥有显著的自主权。
[0029] 根据本实施例,为了在分布式计算环境中,当来自客户端的请求数量和请求数据的量级增加时处理服务器工作负载的增加,请求数据的处理至少在某种程度上从被请求的服务器转移到进行请求的客户端。
[0030] 图1以示意方式图示了如本文所用的分布式计算系统,其包括服务器4、多个客户端1、多个数据库5和多个通信接口6。
[0031] 根据性能要求,服务器4、客户端1和数据库5可以由几个硬件机器构成。服务器4和客户端1二者都被体现为例如包括如图7所示的计算机器100的固定或移动硬件机器,和/或体现为专用系统,例如布置用于特定技术目的的嵌入式系统,和/或体现为在通用或专用计算硬件机器(例如网络服务器和网络客户端)上运行的软件组件。
[0032] 服务器4和客户端1通过通信接口6互连。每个接口6利用有线或无线局域网(LAN)或有线或无线城域网(MAN)或有线或无线广域网(WAN),诸如因特网,或上述网络技术的组合,并通过任何合适的通信和网络协议实现。
[0033] 在当前的现有技术解决方案中,客户端1向服务器4发送对数据的请求。服务器4随后识别并接收与来自一个或多个数据库5的请求相对应的数据。一个或多个数据库5可以被托管在服务器4本身或者可以位于远离服务器4。在这两种情况下,服务器都可以通过通信接口7访问数据库5。保存在数据库5中的数据通常还没有完全按照来自客户端1的请求进行处理,即服务器可用的数据通常还没有以响应于接收到请求要直接返回给客户端1的形式存在。相反,服务器4处理数据库5中可用的数据,以便提取、重新格式化、排序、操纵数据等,以获取与客户端请求中提出的要求相对应的数据的表示。然后仅将处理后的数据返回到客户端1,即在服务器侧执行对保存在数据库5中的数据的完整处理。
[0034] 示例性地,根据现有技术执行的基于服务器的数据处理的过程在图2中被描述和可视化。服务器4保存关系SQL数据库(图1中的数据库5之一)并从客户端接收SQL查询(请求10),以从SQL数据库中检索一些数据,例如基于两个数据库表“tableA”和“tableB”的视图“tableAB”。在接收到来自客户端1A的请求15之后,服务器4识别SQL数据库的相关数据库表。随后,服务器4接收识别的数据库表并将数据库表存储在例如服务器4的主存储系统中。
[0035] 仍参考图2的示例,服务器4继续处理检索到的数据库表并使用SQL命令CREATEVIEW从数据库表创建数据库表的子集。数据库表的子集再次形成数据库表,通常称为视图,并作为使用SQL语句(例如JOIN、LEFTOUTERJOIN、RIGHTOUTERJOIN等)创建新数据库表的基础。随后,使用诸如SELECT之类的SQL语句,服务器4创建由客户端1A之一请求的数据。此外,根据在来自客户端1A的请求10中识别的标准对数据进行分类。
[0036] 为了进一步指定该示例,数据库表“tableA”可以驻留在第一数据库5上并且数据库表“tableB”可以驻留在第二数据库5上。服务器4接收“tableA”和“tableB”并将它们存储在服务器4的高速缓存或主存储系统中。如上述示例中所述,在取消编码、消除错误和定义通用格式后,服务器4使用以下SQL语句继续处理:
[0037] CREATEVIEWviewA(data1A,data2A)AS
[0038] SELECTdata1A,data2AFROMtableA;
[0039] CREATEVIEWviewB(data1B,data2B)AS
[0040] SELECTdata1B,data2BFROMtableB;
[0041] CREATEVIEWtableABAS
[0042] SELECTdata1C,data2C,data2A,data3C,data2B
[0043] fromtableC,viewA,viewB
[0044] wheretableC.data1C=viewA.data1A
[0045] andtableC.data2C=viewB.data1B
[0046] 最后,存储在视图“tableAB”中的数据在发送到请求数据(视图“tableAB”)的客户端1A之前由服务器4进一步处理(例如数据压缩)。
[0047] 因此,如图2所示的示例,服务器4采用大量计算资源和计算时间来处理存储在SQL数据库5中的数据,然后将处理后的数据返回给客户端1A,这构成了服务器4上的显著负载,特别是在每次需要回答大量客户请求的时候。
[0048] 为了解决这种情况,根据本实施例,服务器4不再对从一个或多个数据库5接收的数据执行完整处理以产生客户端1请求的数据。相反,至少数据处理的一部分被重定位到请求客户端1。为此,以下考虑称为第一客户端1A的特定客户端1。第一客户端1A向服务器4发送数据请求10,也称为第一请求,以获取结果数据。此处的术语“结果数据”通常表示客户端1所请求的表示中的数据,即如上文参考图2所描述的在服务器侧进行传统处理的数据。
[0049] 然而,根据本实施例,服务器4并不返回客户端1A所请求的结果数据,而是仅返回原始数据。术语“原始数据”在本文中通常是指保存在数据库5处并从服务器4检索的数据,该数据处于尚未被服务器4完全处理以满足来自客户端1的请求10的要求的状态。原始数据例如组织在数据库表中。在一些实施例中,数据库5是使用SQL语句查询的关系数据库。原始数据尚未构成客户端请求的内容、格式、顺序等方面的数据。相反,原始数据可能是与不同数据库相关的不同格式,并且可能未编码或未格式化。此外,原始数据可能包含冗余或开销,或者可能仍未过滤,从而包含比客户端1实际请求的内容更多的内容。例如,原始数据是客户端1请求的结果数据的超集,即换句话说,请求的结果数据是服务器4响应于第一请求返回的原始数据的子集(如所解释的,该子集可以进行进一步处理,例如聚合、解码、格式化、排序等)。原始数据还没有以这种方式处理以获得客户端实际请求的那些类型的结果数据。相应地,结果数据是根据客户端请求的要求对原始数据进行处理的结果。
[0050] 根据本实施例,将原始数据转换为结果数据的处理的至少一部分由请求客户端1A响应于客户端的请求10对从服务器4接收的原始数据执行。更具体地,在一些实施例中,部分处理仍由服务器4完成,而其余部分的处理(迄今为止也由服务器4执行)重定位到客户端侧。例如,服务器4仍然可以移除冗余数据集,并从数据库表中选择那些实际需要的数据,而其他的诸如对数据进行格式化和排序等任务仅由客户端来完成。这将服务器4从响应数据请求的至少一部分数据处理任务中解放出来,并且反而利用客户端设备的分布式计算资源。
[0051] 在一些实施例中并示例性地显示在图3中,解码接收到的数据库表,消除驻留在数据库表中的错误(通过移除例如数据库表中的冗余数据集或缺少条目的数据集)以及建立通用格式的任务保留在服务器4处。此外,服务器4还从查询的数据库表中创建子集,在本示例中该子集为“viewA”和“viewB”。在此之后进一步处理发生在已请求数据的客户端1A处。创建的视图(“viewA”、“viewB”)被发送到已请求数据的客户端1A。在已请求数据的客户端
1A处,创建的视图(“viewA”、“viewB”)被存储在高速缓存或另一存储系统中并且继续处理以获得结果数据。对于本示例,这意味着视图“tableAB”的创建和结果数据的最终排序。
[0052] 在一些实施例中,服务器4甚至可以避免从数据库5中提取所请求的数据,但是例如将完整或部分数据库表(例如一个或多个数据库表的未处理行或列)发送到请求客户端1A,并且客户端1A对数据库表采用数据库操作(例如SQL语句)以提取和处理所请求的数据。
因此,在这些实施例中,原始数据由完整或部分数据库表给出。这进一步减轻了服务器4响应数据请求的数据处理任务的负担,并且相反利用客户端设备的分布式计算资源。
[0053] 再次参考图3的本示例,在该变体中,被查询的数据库表“tableA”和“tableB”由服务器4直接发送到客户端1A。在客户端1A,处理因此也包括解码接收到的数据库表,从数据库表中移除冗余数据集或数据集,建立通用格式以及从查询的数据库表中提取子集的示例性任务,在本示例中该子集为“viewA”和“viewB”。
[0054] 作为进一步的示例,在服务器侧的部分数据处理可以包括格式化,例如根据工业基础类标准(IFC标准)使数据适合发送到客户端1并由客户端1进一步处理。部分处理的另一个示例是在所请求的数据库5是高速缓存并且存储在高速缓存中的数据不一定是最新的情况下更新数据集。在这种情况下,服务器4可以在将原始数据与消息16一起返回给客户端之前,用另一个数据库或原始数据源验证从数据库5检索到的原始数据。
[0055] 在一些实施例中,将原始数据16从服务器4返回到客户端1采用数据压缩技术,例如,使用可重复使用的码本来生成zip格式的压缩数据。因此,与以未压缩的方式返回原始数据相比,网络流量负载减少了,原始数据可能比结果数据更庞大(例如,由于过滤和数据提取仅发生在客户端侧)。由于码本只有在更新时才会改变,因此没有必要随每个数据批发送码本。码本可以与数据批分开发送,并且仅在发送数据开始时和码本已经更新时发送一次。
[0056] 附加地或替代地,在一些实施例中,要传输到请求客户端1A的原始数据由服务器4加密。例如,可以应用诸如安全多方计算(MPC)或点对点加密之类的加密技术。
[0057] 在第一客户端1A,接收到的原始数据使用图7所示的计算引擎100,由包括驻留在第一客户端1A的计算机器100的存储器106中的计算机程序代码的数据处理功能109进行处理,以获得结果数据。在第一客户端1A处的数据处理可以通过使用可以在客户端上运行的任何合适的本地软件应用来完成。此外,数据处理可以使用第一客户端的任何合适的浏览器应用或者本地应用和浏览器应用的组合来完成。在第一客户端1A处生成结果数据的数据处理可以被集成到客户端设备的用户界面中。用户界面可以向用户显示结果数据。结果数据可以作为数据批或流式数据呈现给用户,由此可以通过服务器4发送的数据更新来控制流式传输。
[0058] 在客户端1A结束对接收到的原始数据的客户端侧处理并从而生成结果数据之后,客户端除了通常的进一步处理(如前所述,例如通过客户端设备的图形用户界面显示结果数据),与US2007/0005679A1不同的是,第一客户端1A还存储结果数据19,以使第一客户端1A生成的结果数据可供其他将来可能寻求获取相同结果的客户端1使用。具体地,响应于另一个请求(这里称为第三请求)以从另一个客户端(这里称为第二客户端1B)获取结果数据,第一客户端1A将结果数据发送给第二客户端1B。
[0059] 直接使第一客户端1A生成的结果数据对其他客户端1B、1C可用而不依赖于服务器4的处理和存储能力构成了本实施例的对等方面。根据本实施例,对等连接是分布式计算环境中同等特权、等能参与者之间的连接。对等点既是资源的提供者,也是资源的消费者,这与传统的客户端‑服务器模型不同,在传统的客户端‑服务器模型中,资源的消耗和供应在多个服务器和多个客户端之间进行划分。在本实施例内,客户端(客户端1A、1B或1C)从而可以在它们之间直接交换数据,而不使用服务器4作为中介节点。服务器4仍然可以通过提供后端架构,即促进客户端交互的过程,对对等通信做出贡献。根据本实施例并在下面进一步详细解释,服务器4的后端架构从客户端1接收对数据的请求并且向该客户端1发回所请求的数据在另一客户端处可用的指示。此外,服务器4的后端架构还可以包括服务器4的高速缓存,高速缓存中可以存储诸如表“tableA”和“tableB”、视图“viewA”和“viewB”或结果数据在某个客户端处可用的指示。
[0060] 该整体处理机制(客户端侧处理,以及客户端1生成的结果数据的对等可用性)的消息序列图由图4和图5给出。第一客户端1A向服务器4发送用于搜索数据的第一请求10。服务器存储11第一请求10以便于通过对等连接的方式帮助使来自发出请求的第一客户端1A的结果数据可用,将在下面详细解释。对所请求数据的搜索16由服务器4在例如用于所请求的数据的数据库5A中执行。在一些实施例中,服务器4查询多于一个数据库5。通过搜索12获取的原始数据被服务器4接收14并部分处理,然后响应于第一请求10发送16到第一客户端1A以获取结果数据。
[0061] 此外,并再次参考图4,将所请求数据的处理转移到客户端1A包括由第一客户端1A向第二客户端1B发送结果数据(图4中的消息20)。为此,第一客户端1A通过处理18获取的结果数据被存储19。在一些实施例中,第一客户端1A在本地存储19结果数据并且因此能够响应于来自另一个客户端1的任何请求返回结果数据。在其他实施例中,第一客户端1A是DHT网络(分布式哈希表,如下文进一步详细解释)的成员并且将结果数据存储19在DHT网络中,通常在DHT网络的另一个客户端处。
[0062] 如图5所示,从第一客户端1A向第二客户端1B发送结果数据可以响应于从第二客户端1B到第一客户端1A的请求(第三请求28),从第一客户端1A请求结果数据而不是通过第一请求10从服务器4请求结果数据而发生。这超出了通常的对等网络,例如US8,276,084B2和US8,616,976B2中描述的最初从服务器接收的数据在对等点之间进一步传播。这些通常的对等网络从而没有被布置为使第一客户端的客户端侧处理的结果(以及从而有效地被采用以获取结果数据的计算资源)对其他客户端可用,从而与通常的对等网络(例如US8,276,084B2和US8,616,976B2中描述的)相比,减轻其他客户端再次处理原始数据的负担。
[0063] 进一步参考图5,第二客户端1B可能已经通过用于从服务器4获取结果数据的第二请求22知道所请求的结果数据在第一客户端1A处可用的事实。响应于接收到第二请求22,服务器查找存储的第一请求(图4和5中的活动11)并从中确定结果数据已经在第一客户端1A处可用(因为服务器4先前将相对应的原始数据返回给第一客户端1A并且知道第一客户端1A已经基于返回的原始数据生成并随后存储了结果数据)。因此,代替再次从一个或多个数据库5中检索原始数据,执行部分处理并将原始数据返回给第二客户端1B,服务器4返回结果数据在第一客户端1A处可用的指示24。响应于接收到该指示,第二客户端1B存储26该指示(以便能够通知其他客户端1结果数据在第一客户端1B处可用的事实)并且从第一客户端1A通过第三请求28和结果数据响应20检索结果数据。
[0064] 根据一些实施例,客户端1和服务器4使用分布式哈希表(DHT)形成分布式计算系统的节点。为了再次使用上述使用SQL语句查询关系数据库的示例,可以基于识别结果数据的搜索参数(例如,如上所述,用于检索视图“tableAB”的SQL参数)来计算唯一标识符,所述唯一标识符包括字母数字字符串并且通常称为键。唯一标识符或键的计算可以由任何客户端执行,例如通过对请求参数进行哈希函数。这些键向客户端指示对应结果数据(例如视图“tableAB”)存储在哪些其他客户端1处(例如通过采用DHT键空间分区算法),以便任何其他参与客户端1可以有效地从存储对应结果数据的另一个客户端1检索与给定唯一标识符相关联的视图。存储对应结果数据的客户端1不一定必须是先前计算过对应结果数据的同一客户端。结果数据可能已经例如在第一客户端1A处计算过,然后发送到结果数据被最终存储在的另一个客户端1(例如第三客户端1C)。
[0065] 在一些实施例中,由服务器4发送24到第二客户端1B的指示和/或由第二客户端1B发送到第三客户端1C的指示32,如下文参考图6进一步讨论的,可以包括一个或多个唯一的DHT标识符。
[0066] 在一些实施例中,客户端1也可以在不包括服务器的情况下使用分布式哈希表(DHT)形成上述分布式计算系统。此可选配置从服务器中移除了更多工作负载。
[0067] 回到上面参考图4和图5讨论的结果数据从第一客户端1A到第二客户端1B的基于对等的传输,并继续参照上面图3的实施示例,第二客户端1B向服务器4发送第二请求22以检索与第一客户端1A相同的结果数据,在本示例的情况下,该结果数据是包含在视图“tableAB”中的数据。服务器4通知24第二客户端1B结果数据(“tableAB”)在第一客户端1A处可用。指示24可以包括DHT系统的键,而该键是从视图“tableAB”计算的。视图“tableAB”可以存储在第一客户端1A的高速缓存中以便例如简化视图“tableAB”在客户端之间的分布。
[0068] 第二客户端1B然后通过第三请求28从第一客户端1A检索结果数据(“tableAB”)以获取结果数据。从而,减轻了服务器4的处理和存储资源的负担,超出例如US2007/0005679A1。第三请求28类似于第一请求10和第二请求22,不同之处在于它指向第一客户端
1A而不是服务器4。换言之,从第二客户端1B的角度来看,第一客户端1A用作用结果数据进行响应的服务器。与图2所示的现有技术结果数据响应相比较,然而,第一客户端1A能够显著更快地返回所请求的结果数据并且使用更少的计算资源,因为结果数据(“tableAB”)以已经完全处理的状态在第一客户端1A可用和存储,并且不需要进一步的数据库检索或处理。
[0069] 作为附加选项,在一些实施例中,客户端1,特别是第一客户端1A,不仅被布置为存储和使使用从服务器4接收的原始数据处理的结果数据可用,而且还对至少部分或完整的原始数据本身如此。再次参考上面的示例,除了视图“tableAB”之外,第一客户端1A还存储两个表“tableA”和“tableB”。如上所述,原始数据存储在本地,或DHT网络中(即通常在作为DHT网络成员的另一个客户端)。响应于来自另一客户端(例如第二客户端1B)的对原始数据的请求,第一客户端1A返回所请求的原始数据。原始数据存储在第一客户端1A处的事实可以由第二客户端1B以与上面已经针对结果数据详细解释的方式相同的方式发现。这样,在客户端不请求存储在另一个客户端处的确切结果数据(例如,视图“tableAB‑2”与视图“tableAB”不同,但可产生自两个表“tableA”和“tableB”)、而是通过客户端侧处理可以从相同的原始数据中获取的不同结果数据的用例中,服务器4可以进一步减轻提供原始数据的负担。
[0070] 可选地,在一些实施例中,第一客户端1A也接收来自服务器4的关于与响应16一起返回的原始数据的有效性持续时间的指示。服务器4通过消息20(图4和图5)返回给第一客户端的原始数据可以在一定时间后改变,因此使第一客户端1A基于原始数据生成的结果数据无效18。为了避免第一客户端1A将过时的结果数据分发给其他客户端1,服务器4可以提供原始数据的有效性指示。如图4示例性地,该有效性指示可以被包括在响应于第一请求10而携带原始数据的响应消息16中。附加地或替代地,在返回16原始数据之后,该指示由服务器4在单独的消息中传输到第一客户端1A。在一些实施例中,有效性指示也可以被更新(例如,如果原始数据的有效性已经证明比在原始数据的返回16时由第一有效性指示所指示的更长)。
[0071] 有效性指示指示原始数据可能会改变的特定时间点并且因此第一客户端1A基于原始数据生成的结果数据不再有效。该指示可以指示绝对时间点(例如,2018年10月22日,下午3点)或参考响应消息16的时间点的相对时间。
[0072] 有效性指示也被存储在服务器4处并且由第一客户端1A和服务器4两者帮助以避免分发可能过时的结果数据。更具体地说,如图4所示,第一客户端1A在与服务器指示的有效性持续时间相对应的给定时间(例如,在接收到响应消息16并存储结果数据之后)删除36结果数据。相应地,服务器4在给定时间(例如,返回与有效性持续时间对应的原始数据后)删除34存储的第一请求。这样,第一客户端1A被阻止将结果数据返回给其他客户端1,并且服务器4被阻止将请求结果数据的其他客户端1引导到第一客户端1A(但会将潜在更新的原始数据返回给下一个请求客户端1)。
[0073] 在一些实施例中,通过使用元搜索引擎将第一客户端1A的数据请求10发送到几个服务器4。元搜索引擎是使用其他搜索引擎检索到的数据来产生它们自己的结果的搜索工具。根据一些实施例,元搜索引擎从客户端获取输入并同时向第三方搜索引擎发送对原始数据的查询。相关的原始数据被收集起来,按照他们的等级进行格式化并呈现给客户端。
[0074] 在一些实施例中,第一客户端1A采用侦听模式并等待服务器4发送的原始数据的更新。更新可以由特定事件触发,例如在服务器4上一定数量的原始数据改变或通过定时器。再次引用关系数据库和SQL语句的示例,第一客户端1A可以订阅存储在视图“tableAB”中的结果数据的定期更新,因此将从服务器4接收视图“tableA”和“tableB”的更新。第一客户端1A然后处理更新的视图“tableA”和“tableB”以获得视图“tableAB”的更新版本。
[0075] 现在参考图6,在一些实施例中,如上文参考图4和图5所讨论的机制还包括,在第二客户端1B处,从第三客户端1C接收24获取结果数据的第四请求30,并且作为响应,向第三客户端1C发送32先前由服务器4接收的、结果数据在第一客户端1A处可用的指示(图5中的消息24)。为此,第二客户端1B先前已在从服务器4接收之后存储26该指示。同样,指示25的发送可以包括DHT系统的键,而该键已经从视图“tableAB”被计算。
[0076] 类似于图5中的第二客户端1B,第三客户端1C然后能够通过例如前述对等连接,通过第三请求28和结果数据响应20(图6),从第一客户端1A检索结果数据。
[0077] 在一些实施例中,在第一客户端1A发送20结果数据给第二客户端1B或第三客户端1C之前,将结果数据存储在第一客户端1A的计算机器100的高速缓存107或第一客户端1A的另一存储系统(图7中未示出)中。
[0078] 在一些实施例中,与上文针对服务器4已经阐述的类似,响应于第一请求10向第一客户端1A发送20原始数据,结果数据在将结果数据发送20到第二客户端1B或第三客户端1C之前被加密。对于加密过程,可以应用诸如安全多方计算(MPC)或点对点加密等技术。
[0079] 在一些实施例中,从第一客户端1A到第二客户端1B和/或到第三客户端1C的结果数据的发送20利用数据压缩技术(例如,使用可重复使用的码本,以与上述类似的方式生成zip格式的压缩数据)。
[0080] 注意,通常,参与图1所示系统的任何客户端1都可以取决于哪个结果数据在给定时间点在哪个客户端可用,而配备以上针对第一客户端1A(客户端侧处理18原始数据以生成结果数据,存储19生成的结果数据,响应于请求28将存储的结果数据返回20给其他客户端28以获取结果数据,在给定的有效性时间过去之后删除36结果数据)、第二客户端1B(从服务器4接收24所请求的结果数据在另一客户端1处可用的指示,存储26指示24,请求28来自另一个客户端的结果数据,并且响应于接收到用于从再一个客户端获取结果数据的请求30而响应32以结果数据在另一客户端处可用的指示)以及第三客户端(从另一个客户端请求30结果数据,接收32结果数据在再一个客户端处可用的指示,并从这个再一个客户端请求28结果数据)描述的功能。为了减轻服务器4的负担,客户端1可以例如被布置为首先从其他客户端1请求结果数据,并且仅在没有其他已知客户端具有可用结果数据的情况下或在对其他客户端1的给定数量的不成功请求之后才请求服务器4。
[0081] 此外,在特定实施例中组合了各种客户端角色的功能。例如,除了在第一客户端1A处存储结果数据之外,用作第二客户端1B的客户端1也可以存储19从第一客户端1A检索到的结果数据,以便使结果数据通过对等网络对其他客户端可用。这样,第二客户端1B也用作该结果数据的第一客户端1A,并且相同的结果数据在多个客户端1处变得可用,从而进一步有助于减轻服务器4的负担。
[0082] 图7是服务器4或客户端1A、1B、1C的计算机器的内部组件的图解表示。计算机器100包括一组指令以当由计算机器100执行时使计算机器100执行这里讨论的任何方法。计算机器100包括至少一个处理器101、主存储器106和网络接口设备103,其通过总线104相互通信。可选地,计算机器100还可以包括静态存储器105和盘驱动单元。可以提供视频显示器、字母数字输入设备和光标控制设备作为用户接口102的示例。网络接口设备103将计算机器100连接到分布式计算系统的其他组件,例如客户端1A、1B、1C、服务器4或数据库5。
[0083] 计算机器100也托管高速缓存107。高速缓存107也可以将接收到的数据库表存储在高速缓存中。本实施例中的高速缓存107可以由存储数据库表的硬件和软件组件组成,以便可以比没有高速缓存的情况更快地处理对数据库表的未来请求。可以有基于硬件的高速缓存,例如CPU高速缓存、GPU高速缓存、数字信号处理器和翻译后备高速缓存,以及基于软件的高速缓存,例如页面高速缓存、网络高速缓存(HTTP高速缓存)等。服务器4和客户端1二者都可以包括高速缓存107。然后服务器4开始数据处理,例如解码接收到的数据库表,通过移除例如数据库表中的冗余数据集或缺少条目的数据集来消除驻留在数据库表中的错误。此外,使数据库表采用通用数据格式,以方便进一步处理。
[0084] 总之,本实施例允许在具有服务器和客户端的分布式网络中进行有效的数据处理。服务器从计算能力密集的处理中被减轻负担,以便通过利用客户端的计算能力来响应来自客户端的数据请求。也减轻了服务器缓存结果数据的负担,因为可使客户端生成的结果数据经由客户端通过对等网络可用。服务器保存关于哪个客户端请求了哪个结果数据以及因此哪个结果数据在哪个客户端可用的日志,并且将请求特定结果数据的客户端引导到具有可用结果数据的对应客户端。本实施例还促进无效机制以避免经由客户端传播潜在过时的结果数据。通过采用压缩和加密机制提供了进一步的增强。
[0085] 体现本文描述的任何一个或所有方法的一组计算机可执行指令(即,计算机程序代码)完全地或至少部分地驻留在机器可读介质中或机器可读介质上,例如,主存储器106。主存储器106托管用于功能实体的计算机程序代码,例如数据库请求处理108,其包括接收和处理数据库请求的功能以及数据处理功能109。指令可以进一步作为传播信号经由因特网通过网络接口设备103或经由用户接口103被传输或接收。计算机器内的通信通过总线
104执行。计算机器100的基本操作由同样位于主存储器106中的操作系统、至少一个处理器
101和/或静态存储器105控制。
[0086] 一般而言,为了实现实施例而执行的例程,无论是作为操作系统的一部分还是作为特定应用、组件、程序、对象、模块或指令序列,或者甚至是其子集实现,在本文中可以称为“计算机程序代码”或简称为“程序代码”。程序代码通常包括在不同时间驻留在计算机中的各种存储器和存储设备中的计算机可读指令,并且当被计算机中的一个或多个处理器读取和执行时,使该计算机进行执行操作所必需的操作和/或体现本发明实施例的各个方面的元素。用于执行本发明实施例的操作的计算机可读程序指令可以是例如汇编语言或以一种或多种编程语言的任意组合编写的源代码或目标代码。