持久混洗系统的制作方法

文档序号:13744330阅读:132来源:国知局

本说明书涉及分布式数据处理系统中的混洗操作。



背景技术:

混洗操作是分布式数据处理系统中的中间步骤,其中写入器产生的数据通过键数据被聚组用于通过读取器消耗。利用混洗操作的分布式数据处理算法的一个示例是映射化简算法。写入器在映射阶段被实现,在所述映射阶段期间并行任务被创建以对数据操作从而生成中间结果。在混洗阶段中,映射阶段的部分计算结果被布置用于通过实现化简操作的读取器访问。在化简阶段期间,每个读取器执行聚合了映射阶段生成的数据的化简任务。其他分布式数据处理算法也通过混洗操作混洗数据。

混洗操作包含根据包括在记录中的键对记录的流聚组。键可以是字母数字串或数字标识符。记录可被混洗写入器的集合以随机顺序呈现至混洗操作。混洗器组件的集合可接收记录并根据它们包括的键对它们聚组。混洗器组件可以接着将现在通过键被聚组的记录提供至混洗读取器的集合。



技术实现要素:

本申请的主题涉及,当混洗操作激活时,诸如通过改变键范围分配来重新配置混洗操作。本申请的主题还涉及在持久储存器中存储混洗操作的结果用于以后消耗。

一般地,本说明书中所描述的主题的一个创新的方面可以被体现在包括以下动作的方法中:响应于接收对数据流执行混洗操作的请求,所述混洗操作是通过键对所述数据流中设键的记录进行聚组的操作:接收所述数据流的至少一部分,所述数据流包括多个记录,每个记录包括键,并且所述数据流从一个或多个写入器被接收;在来自持久储存器位置的集合中的持久储存器位置中存储所述多个记录中的每一个,每个持久储存器位置被指派至键范围,所述键范围对应于被包括在多个记录中的键,每个记录的所述持久储存器位置至少部分基于该特定记录的所述键被选择;从消耗者接收对于包括键的范围的所述多个记录的子集的请求;以及在从所述消耗者接收到所述请求之后,从所述一个或多个持久储存器位置提供包括键的所述范围的所述多个记录的所述子集。

这方面的其他实施例包括被配置为执行被编码在计算机储存器设备上的所述方法的动作的对应的系统、装置和计算机程序。

通过在操作正在运行时重新配置混洗操作,可以获得更好的效率和表现。此外,远离初始键范围建议而重新配置的能力在处理没有限制的数据集或未知大小的数据集时尤其有用,因为最优键范围在混洗操作开始时可能无法辨别。因此,通过允许这样的重新配置,可以对可能无限的记录流有效地执行混洗操作。

通过在持久储存器中存储混洗操作结果,混洗操作可被重复而不需要重复提供数据至混洗器的步骤。这在大数据集需要以不同方式(例如,被排序、碎片)被不同消耗者消耗的情况下会特别有用。持久性也允许数据生产者从消耗者被解耦合。生产者可以产生数据而不管数据将在何时被消耗。当数据以适合的格式被保持以用于以后被混洗消耗者消耗时,整个产生阶段可以完成并且生产者转去做其他工作。持久数据集还可以被进一步重组(例如,被排序、被合并)以减少已摊销的处理和储存成本。此外,如描述的一样保持数据可允许相比于先前方法有所提高的容错性,例如,通过如果操作混洗器故障则允许混洗操作从故障点重新开始。

本说明书中所描述的主题的一个或多个实施例的细节在附图和以下描述中被阐述。主题的其他特征、方面和优势将通过描述、附图和权利要求变得显而易见。

附图说明

图1是可以发生混洗操作的动态重新配置的环境的框图。

图2A是示例初始混洗器配置的框图。

图2B是在键范围合并后,更改的混洗器配置的框图。

图3A是另一个示例初始混洗器配置的框图。

图3B是在键范围拆分后,更改的混洗器配置的框图。

图4A是另一个示例初始混洗器配置的框图。

图4B是在键范围复制后,更改的混洗器配置的框图。

图5是用于混洗操作的动态重新配置的示例过程的流程图。

图6是用于执行持久混洗操作的示例过程的流程图。

图7是示例计算设备的框图。

各个附图中的相同的参考数字和标号指示相同元素。

具体实施方式

数据处理系统接收对数据流执行混洗操作的请求。混洗操作是通过键在数据流中对经设键的记录进行聚组的操作。所接收的请求包括初始键范围的集合,经设键的记录在混洗操作的期间应该被聚组至所述集合中。系统生成混洗器配置,所述混洗器配置将混洗器指派至初始键范围中的每一个。混洗器中的每一个被配置为从一个或多个写入器接收与所指派的键范围相关联的数据流的部分。每个混洗器还被配置为将所接收的数据流的部分提供至一个或多个读取器。在一些情况下,读取器可以查阅与混洗操作相关联的元数据以确定联系哪个混洗器以消耗数据流的特定部分。读取器还可以在数据流的部分被混洗器放置在持久储存器之后直接从该持久储存器消耗数据流的该部分。

系统启动混洗器的集合以对数据流执行混洗操作。混洗器中的每个在混洗操作期间都产生描述其正在经历的负荷统计的元数据统计。系统分析这些元数据统计以确定混洗器配置是否应该被更新以优化混洗操作。例如,一个示例优化是在混洗器之间平衡负荷。如果系统确定混洗器配置应该被更新,系统更改混洗器配置从而使得混洗器至键范围的指派不同于在所述更改之前的键范围指派。更改根据期望的优化被配置。

数据处理系统还可以接收对数据流执行混洗操作的请求,并随后从一个或多个写入器接收数据流的至少一部分。数据流包括多个记录,每个都包括键。系统可以在持久储存器位置中存储多个记录中的每个。将每个持久储存器位置指派至对应于包括在多个记录中的键的键范围,并且至少部分基于特定记录的键,选择用于存储每个记录的特定持久储存器位置。系统可接着从消耗者接收对于包括键的范围的多个记录的子集的请求。在接收了请求之后,系统从一个或多个持久储存器位置提供多个记录的子集,并且,如果混洗操作仍在进行中,可以提供匹配键的范围的任意附加的记录至请求的读取器。

图1是可以发生混洗操作的动态重新配置的环境100的框图。环境100包括将记录的数据流提供至一个或多个混洗器104的一个或多个写入器102。在一些实现中,写入器102可以是诸如服务器的计算设备,其被连接至网络并经由这样的网络将数据流提供至混洗器104。写入器102产生的数据流包括每个都通过键被识别的多个记录。写入器102可以在数据流中以布兰登键顺序(Brandonkeyorder)产生记录至混洗器104。

在一些实现中,写入器102可以是参与映射化简操作的映射器。写入器102还可以是参与生产者-消耗者工作流程或任意其他分布式数据处理系统流程的任意类型的生产者。

混洗器104从写入器102接收数据流中的记录。在操作中,混洗器104通过键对数据流中的记录进行聚组。在一些实现中,混洗器104中的每个可被指派键范围,并且可负责对数据流中带有落入所指派的键范围内的键的记录进行聚组。例如,如果混洗器被指派键范围“A”到“G”,所述混洗器将负责对写入器102产生的包括键“B”的记录进行聚组。

在一些实现中,混洗器104可以是在网络上操作并从写入器102接收数据流的计算设备。混洗器104可包括用于存储在混洗操作期间从写入器102接收的记录的集成储存器或相关联的储存器。混洗器104可被包括在混洗器的大型池中,并可以随着时间被指派至不同的混洗操作。此外,混洗器104可以同时执行多个混洗操作。

在操作中,混洗器104可以将通过键被聚组的数据流的记录提供至一个或多个读取器108。在一些实现中,一个或多个读取器108可以是参与映射化简操作的化简器。一个或多个读取器108还可以是分散生产者-消耗者操作的消耗者。读取器108还可以是接收写入器102提供的数据流记录的客户端。

在一些实现中,写入器102、混洗器104和读取器108根据标准应用编程接口(API)或协议通信,所述协议诸如,例如,超文本传输协议(HTTP)、简单对象访问协议(SOAP)或任意其他合适的API或协议。写入器102、混洗器104和读取器108还可以经由网络(未示出)相互通信,诸如互联网协议(IP)网络。

如示出的,环境100还包括一个或多个持久源位置110。在操作中,在混洗操作期间,混洗器104可以在持久储存器位置110中存储从写入器102接收的记录。例如,如果混洗器104从写入器102接收还没有被读取器108请求的记录,混洗器104可以在诸如随机存取存储器(RAM)或磁盘的本地资源中存储所述记录,直到所述数据被请求。然而,如果混洗器104接收了多于可存储和它的本地资源的记录,其可以开始将记录存储至持久储存器位置110中的一个。在一些实现中,持久储存器位置110可以是包括分布式数据库的部分(例如,碎片)的服务器。持久储存器位置110可包括任意类型的非易失性储存器。在一些情况下,持久储存器位置110可以是存储区域网络(SAN)内的节点。持久储存器位置110还可以是分布式文件系统内的位置,或者在持久储存器位置110中的每个本地的文件系统内的位置。

在一些实现中,混洗器104执行的混洗操作可被指定为持久混洗操作,如下面更详细地描述的。在这种情况下,混洗器104可以在持久储存器位置110中存储从写入器102接收的所有记录直到被指示删除记录。这样存储记录可以允许读取器108中的多个以不同方式消耗记录的相同集合,诸如排序的和未排序的,并可以允许混洗操作以每四分之一秒被重复,而不需要写入器102必须将数据流中的记录提供至混洗器。

元数据111还可以在混洗操作期间由混洗器104产生。在一些情况下,元数据111被存储在持久储存器位置110中。元数据111还可以被平衡器112监测。在这样的情况下,元数据111可以根据诸如简单网络管理协议(SNMP)的网络管理协议被产生。

元数据111可以指示与一个或多个混洗器104相关联的负荷状态。例如,混洗器104中的一个可以产生指示了在特定的时间它的处理器使用率是100%的元数据111,而混洗器104中的另一个可以产生指示了它的处理器使用率是50%的元数据111。在另一个示例中,混洗器104中的一个可以产生指示了它正在处理如另一个混洗器的数据的量的两倍的元数据111,其可指示键范围指派的重新平衡是必要的。

元数据111可被平衡器112分析以基于一个或多个混洗器104上的负荷确定混洗操作是否应该被重新配置。平衡器112可以在混洗操作的过程中期间监控监测元数据111并且当确定重新配置是必要的时执行混洗器104的重新配置。该确定可以基于特别用于期望的优化的标准。例如,如果元数据111指示混洗器104中的一个具有高负荷系数,而混洗器104中的另一个具有低负荷系数,平衡器112可改变被分配指派至混洗器104的键范围,因此使得具有高负荷系数的混洗器被分配指派较小的键范围,并且具有低负荷系数的混洗器被分配指派较大的键范围。在一些实现中,平衡器112可以是与混洗器104单独分离的组件或混洗器104的组件的集合。平衡器112可以从元数据111的混洗器104接收指示。平衡器112还可以从持久储存器位置110读取元数据111。混洗器重新配置参照图2A、2B、3A、4b、4A和4B被更详细地描述。

元数据111还可以包括键范围到储存器位置(例如,碎片)的映射,使得消耗特定键范围的读取器可以确定在持久混洗操作中要读取哪个持久储存器位置。

元数据111还可以包括读取器108创建的与来自混洗器104的数据集合的消耗有关的信息。例如,读取器108可以各自创建指示它们在数据集合内的当前位置的元数据记录。这样的当前位置可指示特定读取器已经消耗了在所述位置之前数据集中的所有记录。这样的位置元数据可被无用信息收集器(garbagecollector)116使用以确定混洗数据什么时候可以是由于数据已经由被配置为接收它的所有读取器108消耗而被收集的无用信息。

持久储存器位置110还包括混洗数据113。在一些情况下,混洗数据113可以是被混洗器104接收的数据,混洗操作已经在所述混洗器104上被执行。在这样的情况下,数据可以在被混洗的状态下被存储在持久储存器位置110中,使得它可被提供至读取器108。在一些实现中,混洗数据113可被存储在持久储存器位置110内直到它由被配置为接收它的读取器108中的每个消耗。混洗数据113还可以被存储在持久储存器位置110中直到相关联的混洗操作完成。

在一些情况下,读取器108不从混洗器104接收数据或除此之外,可以从持久储存器位置110读取混洗数据113。例如,读取器108可以查阅元数据111以确定持久储存器位置110中的哪一个存储了混洗数据113的特定部分。读取器108可以接着联系持久储存器位置110以诸如通过从顺序文件读取、从数据库选择数据、经由API查询持久储存器位置110和/或通过其他机制来检索数据。

排序器/合并器114对被混洗器104聚组的记录执行排序和合并操作。例如,如果混洗操作被配置为使得记录应该被提供至根据键顺序被排序的读取器108,混洗器104可以将记录传递至排序器/合并器以执行这些操作。在一些实现中,排序器/合并器114从混洗器104接收记录并随着它们被接收而将它们排序。排序器/合并器114可以在经排序的批次中将记录提供至读取器108,使得给定批次内的所有记录根据键顺序被排序。排序器/合并器114还可以将数据流的多个经排序的部分结合进更大的经排序的集合内,并将该经排序的集合提供至读取器108。

无用信息收集器116监测混洗操作的多个组件,并将与组件相关联的资源解除分配。在一些情况下,当资源被另一组件请求时,无用信息收集器116可以将资源解除分配。无用信息收集器116还可以自动地执行无用信息收集,诸如通过确定资源在什么时候不再被与混洗操作相关联的任何组件使用并将该资源解除分配。例如,无用信息收集器116可接收数据流的部分已经被读取器108消耗的指示。无用信息收集器116可接着执行无用信息收集操作以将与数据流的该部分相关联的资源解除分配。

图2A是示例初始混洗器配置200的框图。当混洗操作被启动时,这样的混洗器配置可被产生。如示出的,初始混洗器配置200包括一个或多个初始键范围204a-c。在一些实现中,初始键范围204a-c被已经启动了混洗操作的程序、实体或用户提供。各种适合的键范围指派处理可被使用。初始键范围204a-c被各自指派至混洗器202a-c中的一个。在一些情况下,该初始指派被平衡器112执行,诸如,例如,通过将键空间划分为相同大小的键范围并将每个键范围指派至混洗器104中的一个。假如重复的数据处理在来自相同源的数据上运行,关于先前的运行的统计还可以被用于确定随后的运行的初始键范围拆分。

图2B是在键范围合并后,更改的混洗器配置206的框图。如示出的,平衡器112已经将键范围204b和204c合并进了包括这两个键范围的单个键范围208内,并将该键范围208指派至混洗器202b。被合并的键范围208包括键范围204b和204c的并集。混洗器202c不再被指派键范围,并且因此平衡器可以从混洗操作中将其解除分配,诸如通过将其返回至可用混洗器的池。在一些情况下,平衡器112可响应于检测到混洗器202b和混洗器202c在负荷阈值以下操作,执行图示的合并操作,在所述负荷阈值以下操作指示混洗器202b和混洗器202c在混洗操作中未被充分利用。例如,平衡器112可以检测混洗器202b和混洗器202c具有低于某个百分比的处理器利用率度量,并确定混洗器202b和混洗器202c在负荷阈值以下操作。通过将两个相邻的键范围204b和204c合并进键范围204d内,平衡器112可以增加混洗器202b上的负荷,混洗器202b现在被指派了较大的键范围并且推测地将从写入器102接收更多记录。虽然该示例示出了被合并进一个键范围内的两个键范围,平衡器112可以同时合并三个或更多相邻的键范围。平衡器112还可以一次执行多个合并,诸如从五个原始键范围产生两个键范围。

除了上面的操作,平衡器112还可以复制键范围,使得多个混洗器将处理相同的键范围,实际上是在多个混洗器之间拆分对于该键范围的负荷。

图3A是另一个示例初始混洗器配置300的框图。当混洗操作被启动时,这样的混洗器配置可以被产生。如示出的,初始混洗器配置300包括一个或多个初始键范围304a-c。在一些实现中,初始键范围304a-c由被启动了混洗操作的程序、实体或用户提供。初始键范围304a-c被各自指派至混洗器302a-c中的一个。在一些情况下,该初始指派被平衡器112执行。

图3B是在键范围拆分后,更改的混洗器配置306的框图。如示出的,平衡器112已经将键范围304c拆分成两个新的键范围304d和304e。平衡器112已经将新的键范围304d指派至混洗器302c,以及将新的键范围304e指派至附加的混洗器302d。在一些实现中,平衡器112可以在混洗操作期间分配诸如混洗器302d的附加的混洗器来处理新的键范围,诸如通过拆分产生的键范围。平衡器112可以响应于混洗器302c正在经历高负荷状态的指示,诸如处理器或存储器使用超过了阈值,执行图示的拆分操作。通过将键范围304c拆分成两个键范围304d和304e,平衡器112可以在混洗器302c和附加的混洗器302d之间平衡混洗器302c上的负荷,因为推测地拆分键范围也将拆分混洗器302c和混洗器302d之间的数据流中的记录。

图4A是另一个示例初始混洗器配置400的框图。当混洗操作被启动时,这样的混洗器配置可以被产生。如示出的,初始混洗器配置400包括一个或多个初始键范围404a-c。在一些实现中,初始键范围404a-c由被启动了混洗操作的程序、实体或用户提供。初始键范围404a-c被各自指派至混洗器402a-c中的一个。在一些情况下,该初始指派被平衡器112执行。

图4B是在键范围复制后,更改的混洗器配置406的框图。如示出的,平衡器112已经分配了附加的混洗器402d,并且将键范围404c指派至混洗器402c和附加的混洗器402d两者。在一些情况下,键范围的该复制可被用作前瞻性度量以处置慢的/故障的混洗器。当混洗器变慢或故障时,写入器可以后退至处理相同键-范围的不同混洗器。这样的调整可通过快于平衡器112的写入器被做出,所述平衡器112可观察变慢或故障的混洗器,并重新指派键范围以补偿。

图5是用于混洗操作的动态重新配置的示例过程500的流程图。过程500可以被平衡器112实现。平衡器112接收对数据流执行混洗操作的请求,所述请求包括初始键范围(502)。例如,平衡器112可以从实体接收执行作为较大的数据操作的部分的混洗操作的请求,所述较大的数据操作诸如映射化简、生产者-消耗者工作流程或任意其他合适的操作。

平衡器112生成混洗器配置,所述混洗器配置将来自混洗器104的集合的混洗器指派至初始键范围中的每一个(504)。在一些实现中,如果这样的配置被请求或者如果平衡器112确定这样的配置是必要的,平衡器112可以将两个或多个混洗器指派至特定初始键范围。在一些情况下,平衡器112可在持久储存器位置110中存储混洗器配置。

平衡器112启动混洗器104的集合以对数据流执行混洗操作(506)。在一些情况下,平衡器112可以发送网络消息至混洗器104中的每个,所述网络消息指示所指派的初始键范围或多个范围,并指示混洗操作即将开始。

平衡器112分析混洗器104的集合产生的元数据111。在一些实现中,平衡器112经由诸如SNMP的管理协议通过网络接收元数据111。平衡器112还可以从持久储存器位置110读取元数据111作为元数据111或通过混洗器104写入至持久储存器位置110。

平衡器112确定混洗器配置事件是否已经发生(510)。在一些情况下,平衡器可以将混洗器104产生的元数据111与指示负荷值的所配置的阈值比较,在所配置的阈值之上或之下时混洗器配置更新应该发生。例如,平衡器112可被配置有阈值,所述阈值说明具有处理器使用率在90%以上的混洗器应该触发混洗器配置更新

如果平衡器112确定混洗器配置更新还没有发生,过程500返回至508。如果平衡器112确定混洗器配置更新已经发生,过程500继续至512,其中平衡器112至少部分基于元数据111更改混洗器配置以产生混洗器至键范围的不同的指派。在一些实现中,平衡器112可以执行图2A、2B、3A、3B、4A和4B中被描述的键范围更改操作,或这些键范围更改操作的任意合适的组合。

在一些情况下,平衡器112至少部分基于元数据111识别与第一混洗器相关联的第一键范围,并确定第一混洗器正在经历高负荷状态。平衡器112将第一混洗器重新指派至包括第一键范围的子集的经修改的键范围。在一些情况下,平衡器112可以至少部分基于元数据统计确定第一混洗器正在经历低负荷状态,并将第一混洗器重新指派至包括第一键范围和不同于第一键范围的第二键范围的经修改的键范围。平衡器112还可以将经修改的键范围重新指派,以保持在混洗操作中所涉及的数据跨多个混洗器平均拆分。

在一些实现中,无用信息收集器116可以识别数据流的部分已经被一个或多个读取器108消耗的指示。无用信息收集器116可以接着对与数据集的部分相关联的一个或多个资源执行无用信息收集操作。

在一些情况下,无用信息收集器116可以从一个或多个读取器接收消耗元数据,该消耗元数据指示对于一个或多个读取器中的每一个,数据集的消耗进展。该消耗元数据还可以被存储在持久储存器位置110中的一个中并被无用信息收集器116读取。在一些实现中,消耗元数据可以指示数据集内或数据集的部分(例如,碎片)内的当前位置,特定读取器已经消耗到该当前位置。如果消耗元数据指示与一个或多个资源相关联的数据集的部分已经被消耗,无用信息收集器116可以对与数据集相关联的一个或多个资源执行无用信息收集操作。例如,如果消耗数据集的所有读取器已经消耗了超过数据集中的某个点,无用信息收集器116可以删除该某个点之前的与该数据集的部分相关联的资源。

图6是用于执行持久混洗操作的示例过程600的流程图。过程600可被混洗器104实现。混洗器104接收对数据流执行混洗操作的请求(602)。在一些实现中,执行混洗操作的请求可被监管器组件接收,诸如混洗控制者。

混洗器104接收数据流的至少一部分,所述数据流包括多个记录,每个记录包括键(604)。在一些实现中,混洗器104从一个或多个写入器102接收数据流的该部分。

混洗器104在持久储存器位置110中存储多个记录中的每个(606)。每个持久储存器位置110被指派至对应于被包括在多个记录中的键的键范围。在一些实现中,持久储存器位置110是分布式数据库的碎片。持久储存器位置110还可以是被存储在服务器或服务器的集合上的文件系统中的顺序文件。

混洗器104从消耗者接收对于包括键的范围的多个记录的子集的请求(610)。在一些实现中,请求可以包括指示所存储的持久混洗操作的标识符,通过所述标识符提取对应于键的范围的记录。在一些情况下,多个持久混洗操作可以同时被激活,其可以使这样的标识符成为必要。

在从消耗者接收了该请求之后,对于消耗者请求的键的范围,混洗器104从一个或多个持久储存器位置110提供多个记录的子集(612)。在一些情况下,混洗器104可以查询包括多个记录的数据库并将该记录提供至消耗者。消耗者可以是一个或多个读取器108中的一个。

在一些情况下,混洗器104接收与混洗操作相关联的数据消耗模式选择,其指示了该记录应该被提供至消耗者的方式。数据消耗模式选择可包括碎片模式(shardedmode)选择,所述碎片模式选择指示了只有在多个记录被存储在一个或多个持久储存器位置110之后,所述多个记录才应被提供至消耗者。数据消耗模式选择可包括碎片模式选择,所述碎片模式选择指示了只有在多个记录被存储在一个或多个持久储存器位置110之后,所述多个记录才应被提供至消耗者。数据消耗模式选择还可包括排序的模式选择,所述排序的模式选择指示了多个记录应该被提供至通过键聚组并排序的消耗者。在这样的情况下,混洗器104可以与排序器/合并器114交互以用这种方式提供多个记录。排序的模式选择还可以指示特定的排序器应用或提供记录的特定的排序顺序。

在一些实现中,混洗器104可以在持久储存器位置110中存储与混洗操作相关联的元数据。元数据可以包括与多个记录相关联的索引。在一些实现中,当读取数据时,混洗器104可提供读取器流位置信息,使得读取器能够追踪它们的读取进展。在读取器需要重新开始从混洗器读取的情况下,该读取器可以使用这个位置信息来告诉混洗器从哪里开始读取。这可以允许读取器避免从数据流的起始重头再来。

在一些情况下,混洗器104或无用信息收集器116可以接收删除混洗操作的请求。在接收了删除混洗操作的请求之后,混洗器104或无用信息收集器116可以从一个或多个持久储存器位置110中删除多个记录中的每个。在一些实现中,无用信息收集器116可删除已完成的混洗操作的所有资源。无用信息收集器116还可以删除与已经被消耗的数据相关联的资源,其在无限的混洗期间是重要的,因为资源将需要被释放从而使得混洗继续。

持久储存器位置110可以将特定记录附加至顺序文件的结尾以用于存储,并且可以追踪顺序文件中的一个或多个下一个读取位置,一个或多个下一个读取位置中的每个指示将交付至一个或多个读取器中的每个的下一个文件。例如,如果第一读取器已经接收了顺序文件中第四记录之前的所有记录,第一读取器的下一个读取位置将是第四记录。当第二读取器已经接收了顺序文件中第七记录之前的所有记录,第二读取器的下一个读取位置将是第七记录。在一些实现中,持久储存器位置110存储这些下一个读取位置与顺序文件。持久储存器位置110还可以在中央储存器位置中存储下一个读取位置。

图7是可被用作客户端或服务器或多个服务器以实现本文档中描述的系统和方法的计算设备700、750的框图。计算设备700意在代表多种形式的数字计算机,诸如笔记本电脑、台式机、工作站、个人数字助理、服务器、刀片服务器、大型主机以及其它适合的计算机。计算设备750意在代表多种形式的移动设备,诸如个人数字助理、移动电话、智能手机以及其它类似的计算设备。此外,计算设备700或750可包括通用串行总线(USB)闪存驱动器。USB闪存驱动器可以存储操作系统和其他应用。USB闪存驱动器可以包括输入/输出组件,诸如无线发射机或可以被插进另一计算设备的USB端口的USB连接器。这里示出的组件,它们的连接和关系以及它们的功能,只意味着示例性的且不意味着限制在本文档中被描述的和/或要求保护的发明的实现。

计算设备700包括处理器702、存储器704、储存器设备706、连接至存储器704以及高速扩展端口710的高速接口708、以及连接至低速总线714和储存器设备706的低速接口712。组件702、704、706、708、710和712中的每一个都使用多个总线被相互连接,并且可被安装在普通主板上或视情况以其他方式被安装。处理器702可以处理用于在计算设备700内执行的指令,包括存储在存储器704中或储存器设备706上的指令以在外部输入/输出设备上显示GUI的图形信息,所述输入/输出设备诸如被耦合至高速接口708的显示器716。在其他实现中,多个处理器和/或多个总线可视情况连同多个存储器和多种类型的存储器一起使用。并且多个计算设备700可被与提供必要操作的部分的每个设备相连接(例如,作为服务器群、刀片服务器的群组或多处理器系统)。

存储器704在计算设备700内存储信息。在一个实现中,存储器704是易失性存储器单元。在另一个实现中,存储器704是非易失性存储器单元。存储器704还可以是其他形式的计算机可读介质,诸如磁性的或光盘。

储存器设备706能够提供用于计算设备700的大容量储存器。在一个实现中,储存器设备706可以是或包括计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其他类似的固态存储器设备或设备的阵列,包括存储区域网络或其他配置中的设备。计算机程序产品可以被有形地体现在信息载体中。计算机程序产品还可以包括指令,所述指令当被执行时实现诸如上面描述的一个或多个方法。信息载体是计算机或机器可读介质,诸如存储器704、储存器设备706或处理器702上的存储器。

高速接口708管理用于计算设备700的带宽密集操作,而低速接口712管理较低的带宽密集操作。这样的功能分配仅仅是示例性的。在一个实现中,高速接口708被耦合至存储器704、显示器716(例如,通过图形处理器或加速器)以及高速扩展端口710,其可接受多种扩展卡(未示出)。在实现中,低速接口712被耦合至储存器设备706和低速扩展端口714。可包括多个通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口可被耦合至一个或多个输入/输出设备,诸如键盘、定点设备、扫描仪,或例如通过网络适配器耦合至诸如交换机或路由器的网络设备。

计算设备700可以多种不同的形式被实现,如图中示出的。例如,其可被实现为标准服务器720,或在这样的服务器的群组中的多次。其还可被实现为机架式服务器系统724的部分。此外,其可在诸如笔记本电脑722的个人计算机中被实现。可替代地,计算设备700的组件可以与移动设备中的其他组件(未示出)组合,诸如设备750。这样的设备中的每个可包括计算设备700、750中的一个或多个,并且整体系统可以由互相通信的多个计算设备700、750组成。

除了其他组件之外,计算设备750包括处理器752、存储器764、诸如显示器754的输入/输出设备、通信接口766和收发器768。设备750还可以被提供诸如微硬盘或其他设备的储存器设备以提供附加的储存器。组件750、752、764、754、766和768中的每个使用多个总线被相互连接,并且组件中的一些可被安装在普通主板上或视情况以其他方式被安装。

处理器752可以执行计算设备750内的指令,包括存储在存储器764中的指令。处理器可被实现为包括了单独或多个模拟或数字处理器的芯片的芯片集。此外,处理器可以使用多种体系结构中的任意被实现。例如,处理器752可以是CISC(复杂指令集计算机)处理器、RISC(精简指令集计算机)处理器或MISC(最小指令集计算机)处理器。例如,处理器可以提供对设备750的其他组件的协调,诸如对用户接口、设备750运行的应用以及设备750的无线通信的控制。

处理器752可以通过被耦合至显示器754的控制接口758和显示接口756与用户通信。例如,显示器754可以是TFT(薄膜晶体管液晶显示器)显示器或OLED(有机发光二极管)显示器或其它适合的显示技术。显示接口756可包括用于驱动显示器754以向用户呈现图形和其他信息的适合的电路。控制接口758可以从用户接收命令并转换它们用于提交至处理器752。此外,可提供与处理器752通信的外部接口762,从而实现设备750与其他设备的附近区域通信。例如,外部接口762可在一些实现中提供有线通信或在其他实现中提供无线通信,并且也可以使用多个接口。

存储器764在计算设备750内存储信息。存储器764可被实现为计算机可读介质、易失性存储器单元、或非易失性存储器单元中的一个或多个。扩展存储器774还可以被提供并通过扩展接口772被连接至设备750,该扩展接口772可包括,例如,SIMM(单列直插式内存模块)卡接口。这样的扩展存储器774可提供用于设备750的额外的储存器空间,或还可以存储用于设备750的应用或其他信息。特别地,扩展存储器774可包括实行或补充上述过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器774可被提供为设备750的安全模块,并且可利用允许对设备750的安全使用的指令被编程。此外,安全应用连同附加的信息可经由SIMM卡被提供,诸如以不可侵入的方式将识别信息安置在SIMM卡上。

例如,如下面讨论的,存储器764可以包括,闪速存储器和/或NVRAM存储器。在一个实现中,计算机程序产品可以被有形地体现在信息载体中。计算机程序产品还可以包括指令,所述指令当被执行时实现诸如上面描述的一个或多个方法。信息载体是可通过收发器768或外部接口762被接收的计算机或机器可读介质,诸如存储器764、扩展存储器774,或例如处理器752上的存储器。

设备750可以通过通信接口766无线地通信,该通信接口766可在必要处包括数字信号处理电路。通信接口766可在多种模式或协议下提供通信,诸如GSM语音呼叫、SMS、EMS或MMS消息、CDMA、TDMA、PDC、WCDMA、CDMA2000或GPRS等。例如,这样的通信可通过射频收发器768发生。此外,短程通信可发生,诸如使用蓝牙、WiFi或其他这样的收发器(未示出)。此外,GPS(全球定位系统)接收器模块770可提供附加的关于导航和定位的无线数据至设备750,该数据可视情况被在设备750上运行的应用所使用。

设备750还可以使用音频编解码器760可听地通信,该音频编解码器760可从用户接收说出的信息并将其转换成可用的数字信息。音频编解码器760可以同样地为用户生成可听见的声音,诸如通过例如在设备750的听筒中的扬声器。这样的声音可包括来自语音电话呼叫的声音,可包括录制的声音(例如,语音消息、音乐文件等等)并还可包括由在设备750上操作的应用所生成的声音。

计算设备750可以多种不同的形式被实现,如图中示出的。例如,其可被实现为移动电话780。其还可被实现为智能手机782、个人数字助理或其他类似移动设备的部分。

在多个实现中,如果先前的另一个操作(例如确定或识别)不成功(例如,如果确定没有被执行),“响应于”或“作为”该另一个操作的“结果”而被执行的操作不被执行。被“自动地”执行的操作是无需用户干预(例如,干预用户输入)即被执行的操作。以有条件的语言被描述的本文件中的特征可以描述选择性的实现。在一些示例中,从第一设备向第二设备“传送”包括第一设备将数据置于网络内用于被第二设备接收,但可以不包括第二设备接收该数据。相反地,从第一设备“接收”可以包括从网络接收数据,但可以不包括第一设备传送数据。

由计算系统进行的“确定”可以包括计算系统请求另一个设备执行确定并将结果提供至计算系统。此外,由计算系统进行的“显示”或“呈现”可包括计算系统发送用于使得另一个设备显示或呈现被引用的信息的数据。

本说明书中描述的主题和操作的实施例可以被实现在数字电子电路中,或者在计算机软件、固件或硬件中,包括本说明书中公开的结构和它们的结构的同等物,或它们中的一个或多个的组合。本说明书中描述的主题的实施例可被实现为一个或多个计算机程序,即,计算机程序指令的一个或多个模块,编码在计算机储存器介质上用于通过数据处理装置执行,或控制数据处理装置的操作。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码用于传输至合适的接收器装置的信息,用于由数据处理装置执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备,或它们中的一个或多个的组合,或被包括在上述之中。此外,当计算机存储介质不是传播信号时,计算机存储介质可以是被编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质还可以是,一个或多个独立的物理组件或介质(例如,多种CD、盘或其他存储设备),或被包括在所述一个或多个独立的物理组件或介质之中。

本说明书中描述的操作可以被实现为通过数据处理装置对存储在一个或多个计算机可读存储设备上或从其它源接收的数据执行的操作。

术语“数据处理装置”包含用于处理数据的所有类型的装置、设备以及机器,例如,包括可编程处理器、计算机、芯片上的系统,或前述的多个或其结合。装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件以外,装置还可以包括,创建用于讨论中的计算机程序的执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中一个或多个的组合的代码。装置和执行环境可实现多种不同的计算模型基础设施,诸如,web服务、分布式计算和网格计算基础设施。

计算机程序(也被成为程序、软件、软件应用程序、脚本或代码)可被用任意形式的编程语言编写,包括编译或解释性语言、声明性语言或过程语言,并且其可以任何形式被部署,包括作为独立程序或作为模块、组件、子例程、对象或适合用在计算环境中的其他单元。计算机程序可以,但不是必须,对应于文件系统中的文件。程序可以被存储在保留其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,在专用于正在讨论的程序的单个文件中,或在多个协调文件(例如,存储了一个或多个模块、子程序,或部分代码的文件)中。计算机程序可被部署以在一个计算机上或位于一个地点或分布于多个地点且通过通信网络相互连接的多个计算机上被执行。

本说明书中描述的过程和逻辑流程可通过执行一个或多个计算机程序的一个或多个可编程处理器被执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程还可以通过专用逻辑电路执行并且装置也可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

适合用于计算机程序的执行的处理器包括,例如,通用和专用微处理器,以及任意类型的数字计算机的任意一个或多个处理器。一般地,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。一般地,计算机也将包括或被操作耦接,以从用于存储数据的一个或多个大容量储存设备,例如,磁、磁光盘或光盘,来接收数据,或向其传递数据,或两者。然而,计算机不需要具有这样的设备。此外,计算机可以被嵌入进另一设备中,例如,移动手机、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动),仅举几个例子。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,通过示例的形式包括半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或可拆卸盘;磁光盘;和CD-ROM以及DVD-ROM盘。处理器和存储器可以通过专用逻辑电路被补充,或被合并在专用逻辑电路中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有以下的计算机上被实现:用于向用户显示信的显示设备,例如,CRT(阴极射线管)或LCD(液晶显示器)监测器;和键盘,以及定点设备,例如,鼠标或轨迹球,用户可以通过其向计算机提供输入。其他类型的设备还可被用于提供与用户的交互;例如,提供给用户的反馈可以是任意形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任意形式被接收,包括声学的、语音的、或触觉输入。此外,计算机可以通过发送文档至用户使用的设备并从用户使用的设备接收数据与用户交互;例如,通过响应于从用户的用户设备上的web浏览器接收的请求而将网页发送至该web浏览器。

本说明书中描述的主题的实施例可以被实现在计算系统中,所述计算系统包括后端组件,例如,作为数据服务器,或所述计算系统包括中间件组件,例如应用服务器,或所述计算系统包括前端组件,例如,具有用户可通过其与本说明书中描述的主题的实现交互的图形用户界面或web浏览器的用户计算机,或者一个或多个这样的后端、中间件或前端组件的任意组合。系统的组件可以通过任意形式或介质的数字数据通信被相互连接,例如通信网络。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网络(例如,互联网)以及对等网络(例如,专设对等网络)。

计算系统可以包括用户和服务器。用户和服务器一般远离彼此并典型地通过通信网络交互。用户和服务器的关系通过在相应的计算机上运行并相互具有用户-服务器关系的计算机程序发生。在一些实施例中,服务器将数据(例如,HTML页面)传送给用户设备(例如,为了显示数据至与用户设备交互的用户或从所述用户接收用户输入的目的)。用户设备处生成的数据(例如,用户交互的结果)可以在服务器处从用户设备被接收。

虽然本说明书包括很多特定的实现细节,这些不应该被解释为对任意发明或可以要求保护的内容的范围的限制,但可作为对特定发明的特定实施例特定的特征的描述。在单独的实施例的上下文中在本说明书中被描述的某些特征也可在单一实施例中结合的被实现。相反地,在单一实施例的上下文中描述的多种特征还可以单独或以任意合适的子组合在多个实施例中被实现。此外,虽然特征可以在上面被描述为在某些组合中作用并甚至初始地像这样要求保护,要求保护的组合的一个或多个特征在一些情况下可以从组合中被去除,并且要求保护的组合可以指向子组合或子组合的变化。

类似地,虽然操作在附图中以特定的顺序被描绘,这不应被理解为要求这样的操作以示出的特定顺序或序列顺序被执行,或者所有图示说明的操作被执行,以获得期望的结果。在某些情况下,多任务和并行处理可以是有益的。此外,以上描述的实施例中的多个系统组件的分离不应该被理解为在所有实施例中都要求这种分离,并且应理解所描述的程序组件和系统通常可以在单一软件产品中被整合在一起或封装进多个软件产品内。

因此,主题的特定实施例已经被描述。其他实施例在所附权利要求的范围内。在一些情况下,权利要求中记载的动作可以以不同顺序被执行且仍可以获得期望的结果。此外,附图中描绘的过程不是必要地要求所示的特定顺序或序列顺序,以获得期望的结果。在某些实现中,多任务和并行处理可以是有益的。

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