CN103930875A - 用于加速业务数据处理的软件虚拟机 - Google Patents
用于加速业务数据处理的软件虚拟机 Download PDFInfo
- Publication number
- CN103930875A CN103930875A CN201280039092.3A CN201280039092A CN103930875A CN 103930875 A CN103930875 A CN 103930875A CN 201280039092 A CN201280039092 A CN 201280039092A CN 103930875 A CN103930875 A CN 103930875A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- subservice
- virtual machine
- business
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Abstract
一般来说,本发明涉及一种软件虚拟机,其提供针对多核计算平台进行优化的高性能业务数据加速。虚拟机使用试图最大化多核计算平台的效率的底层并行化引擎以提供高度可扩展的高性能(最低时延)虚拟机。在某些实施例中,虚拟机可以被看作是在操作状态下具有实时自组织且自寻求可用存储器工作界限以自动优化数据处理加速和大量数据的内容分发的最大可用吞吐量的能力的内存中虚拟机。
Description
技术领域
本发明涉及计算系统。
背景技术
全球数据量爆炸性增长,连接到网络的设备普遍存在,用户内容创建及共享入门的门坎降低,以前的许多离线功能数字化(金融、医学处方等),虚拟化和离线网络系统(云)的出现,以及其他因素导致了“大数据”时代的出现。这给系统带来了挑战,因为应用程序处理面临极端海量的吞吐量和向任意数量的目的点分发或分布处理数据的要求。这些系统额外必须是可扩展的以跟上大数据的持续增长并实现普遍大众的互联网及云应用程序的交互性。
多核处理器的使用在计算机行业急剧增加。一般来说,术语“处理器”指的是读取并执行程序指令的硬件单元。从历史观点来说,处理器最初使用单个“核”,该核指的是处理器的读取并执行一系列指令的一部分。多核处理器指的是单个硬件单元,其中两个或两个以上的独立处理“核”被集成在单个封装件上。近来,有多达128-256个处理核的计算系统已成为可能。这些多核计算平台给传统编程计算带来了挑战。
发明内容
一般来说,本发明涉及一种软件虚拟机,其提供针对多核计算平台进行优化的高性能业务数据加速。虚拟机使用试图最大化多核计算平台的效率的底层并行化引擎以提供高度可扩展的高性能(最低时延)虚拟机。
在某些实施例中,软件虚拟机的底层并行化引擎提供自组织能力以并行化并存储分别与软件虚拟机的不同执行单元相关联的数据分区的业务处理的相关数据。另外,集体处理业务及对应业务数据的任务提供自调谐能力以自主确定并在处理任务的执行单元中迁移。结果,软件虚拟机可以采用多个分布式业务委托单元并因此避免集中业务管理器以管理数据组织和业务委托以及与此集中管理相关联的固有瓶颈。
这些技术可以在满足大众web应用程序和“大数据”云的动态和交互数据加速的特定需求所需的系统中使用。具体地,实现所描述的技术的系统可以聚集业务数据以有效地管理来自多种源并由系统接收的大量数据的摄取以及分离业务数据以分发处理后的数据以选择目的地。例如,唯一数据通信特征是平台将广播选择数据交互地推送至单独设备(用户)并在均质体广播数据流中创建交互专用广播会话(信道)的能力。平台技术还可以在利用对二级存储装置的集成按需实时无限运行时扩展操作可扩展内存中数据库缓存的系统中实现消费者提供的业务以及消息传递应用程序加速。此系统可以利用平台技术来扩展超出物理内存中界限的缓存,并在需要时将物理外部存储器设备(例如,硬盘驱动器)的自动扩展和使用集成为虚拟机存储器界限的一部分。换句话说,本文描述的软件虚拟机支持从具有从大数据支持或创建值的困难的‘静态信息架构’至动态架构模型的移动。利用低时延,可扩展的处理,结合复杂性降低、成本效率增加,所描述的技术具体满足大数据处理的条件以提供并行消耗并处理来自大量数据生产者的巨大业务量的能力,以及以交互的方式将处理后的数据推送至数十亿数据消费者的能力。
在一个实例中,一种设备包括:具有多个执行核的多核硬件处理器;以及分别根据虚拟指令集操作的多个虚拟机,其中虚拟机的每一个在执行核中的不同执行核上执行。设备还包括内存中数据库,其包括存储在多个存储器分区内的数据,其中存储器分区的每一个与执行核中的不同执行核相关联。设备还包括多个任务,其在虚拟机上执行以将内存中数据库的传入业务分解为子业务,将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
在另一实例中,一种方法包括:执行分别根据虚拟指令集操作的多个虚拟机,其中虚拟机的每一个在计算设备的多核硬件处理器的多个执行核中的不同执行核上执行。方法还包括使执行核中的不同执行核与多个存储器分区相关联,其中,存储器分区的每一个存储内存中数据库数据。方法进一步包括利用虚拟机执行多个任务,其中,多个任务将内存中数据库的传入业务分解为子业务,将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
在另一实例中,一种计算机可读存储设备包括在执行时使具有多个执行核的多核硬件处理器执行根据虚拟指令集操作的多个虚拟机的指令,其中,虚拟机的每一个在计算设备的多核硬件处理器的多个执行核中的不同执行核上执行。在执行时指令使多核硬件处理器使执行核中的不同执行核与多个存储器分区相关联,其中存储器分区的每一个存储内存中数据库数据。指令在执行时进一步使多核硬件处理器利用虚拟机执行多个任务,其中,多个任务将内存中数据库的传入业务分解为子业务,将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
在附图和下面的描述中阐述本发明的一个或多个实施例的细节。通过该描述、附图和权利要求,本发明的其它特征、目的和优点将变得显而易见。
附图说明
图1是示出了使用本文描述的技术来提供高性能业务数据加速的示例性系统的框图。
图2是示出了根据本发明中描述的技术来提供高性能业务数据加速的业务数据加速器的示例性实施例的框图。
图3是示出了分解传入业务或事件以由以本发明中描述的方式在多核计算平台的独立核上单独执行的自主任务进行处理的并行化引擎的示例性事例的框图。
图4是示出了在虚拟处理器上执行以利用本发明的技术并行修改缓存数据结构的框图。
图5是进一步详细地示出了示例性虚拟机的框图。
图6是根据本文描述的技术对任务进行时分复用的系统的框图。
图7A-7B是示出了支持图1的业务数据加速器的并行化操作的示例性任务的框图。
图8是示出了根据本文描述的技术并行地并行写入多个数据对象的示例性业务数据加速器的框图。
图9是示出了包括多个集群机以根据本文描述的技术写入部分数据结构的示例性业务数据加速器190的框图。
图10示出了示例性系统,其中符合本文描述的技术的业务数据加速器的事例被用作构建块以形成分层结构以将所选数据交互地推送至大量单独客户端(用户)并在均质体广播数据流中创建交互专用广播会话(信道)。
图11示出了示例性系统,其中符合本文描述的技术的业务数据加速器的事例被用作构建块以形成分层结构以从大量单独数据源(用户)接收数据。
图12是示出了使用本文描述的技术来为提供并消耗数据的用户提供高性能业务数据加速的示例性系统的框图。
具体实施方式
图1是示出了使用本文描述的技术来提供高性能业务数据加速的示例性系统的框图。在图1的示例性系统中,一组业务数据加速器13A至13N(统称为“业务数据加速器13”)被组织以形成数据加速器的集群11。业务数据加速器操作用于从数据源12连续摄取并处理大量数据业务并将处理后的数据分发至数据消费者16。数据源12和数据消费者16可以是提供或消耗数据的任何东西,诸如系统、应用程序或数据库。
如本文所述的,业务数据加速器13的每一个均包括为虚拟机提供大规模并行多核操作环境以摄取并以业务的方式处理所摄取的数据的并行化引擎。软件虚拟机提供针对业务数据加速器13的底层多核计算平台进行优化的高性能业务数据加速。也就是说,并行化引擎提供基础平台,数据摄取和处理在其上可以以在多个集群计算设备的任意数量的执行核上高度可扩展并针对独立执行进行优化的方式并行化。从数据源12接收的传入数据业务由并行化引擎分解为可以在业务数据加速器13的底层多核计算平台的单独核上独立执行的操作。虚拟机在内存中数据库上操作,该内存中数据库以允许加速器的每一个的并行化引擎在底层多核处理环境的核上并行执行自内存中数据库插入,删除,更新并查询数据的业务操作的方式进行组织。
而且,在操作期间,在业务数据加速器13的每一个上执行的软件虚拟机的并行化引擎可以动态地自组织存储器的使用以扩展内存中数据库超过物理内存中界限。这样,业务数据加速器13的软件虚拟机在处理所摄取的业务数据时可以对物理外部存储器设备(例如,硬盘驱动器)提供自动扩展和使用。随着在多核计算环境上并行连续处理入站业务,这允许虚拟机根据需要动态针对内存中数据库利用虚拟存储。
进一步地,由业务数据加速器13执行的虚拟机包括允许业务数据加速器将所选数据交互地推送至数据消费者16的并行化通信特征。例如,数据消费者16可以是单独设备,并且业务数据加速器13的并行化通信特征可以在大众广播数据流中创建交互信道以在数据消费者16上将大量单独请求的数据推送至高容量。
这样,业务数据加速器13执行具有试图最大化多核计算平台的效率的底层并行化引擎以提供高度可扩展的高性能(最低时延)数据业务加速的虚拟机。而且,虚拟机可以被看作是在操作状态下具有自组织且实时自寻求自动优化数据处理加速和大量数据的内容分发的最大可用吞吐量的可用存储器工作界限的能力的内存中虚拟机。
本文描述的并行化虚拟机允许来自数据源12的业务数据在机上动态起作用,然后被导向数据消费者16以便进一步处理操作或以最合适的且有用的形式向用户提供。另外,业务数据加速器13的并行化虚拟机可以实时对数据流起作用,而不一定要求将数据写入磁盘并整体起作用。正因如此,并行化虚拟机可以加快向数据消费者16提供的业务数据的处理速度和相关性。
软件加速器13的并行处理虚拟机可以用于增加云环境、移动环境、社交环境和企业计算环境中的现有数据处理基础设施和应用程序以传递低延迟、高扩展性的数据加速,性能提高,操作成本降低。
图2是示出了加速器13的示例性实施例的框图。在所示的实例中,加速器13包括虚拟机20,该虚拟机20专门设计来对来自一个或多个数据源12的大量数据加速并提供可定制处理。加速器13通常在计算平台诸如高端服务器上实现,具有多核计算平台24。计算平台24可以包括任意数量的处理器以及任意数量的硬件核,例如四至数千个。
在图2的实例中,加速器13包括向虚拟处理器20,诸如存储器管理和硬件I/O提供底层操作系统内核27的某个功能的平台抽象层25。在一个实例中,虚拟处理器20可以在由操作系统内核27提供的整个进程空间内执行。操作系统内核27例如可以是可从微软公司买到的Linux、BerkeleySoftware Distribution(BSD)、另一个Unix变体内核或Windows操作系统内核。
虚拟处理器20的数据摄取引擎26操作用于“摄取”传入业务数据。数据摄取引擎26可以从数千至数百万个并行入站连接接收数据,每个使数据向内流动,而不需要被提示新信息。数据可以从几个“粗”管路摄取或可以通过数千连接从单独设备或传感器摄取。要处理的数据类型可以进行结构化处理,非结构化处理,或者这两者。例如,数据摄取引擎26可以包括一个或多个数据适配器以接收并处理格式化数据,例如XML和CSV格式化数据。
因为传入数据通过数据摄取引擎26被“摄入”系统,所以数据库加速引擎28对内存中数据库27起作用。数据库加速引擎28提供主要负责协调数据摄取引擎26、消费者应用程序28与内容分发引擎30之间的活动的高度可扩展数据处理引擎。在某些实例中,数据库加速引擎28公开标准的基于SQL的API,数据摄取引擎26、消费者应用程序28及内容分发引擎30通过该标准的基于SQL的API与内存中数据库27互动并在并行化引擎22的控制下执行,从而发生非常低的延迟处理。换句话说,数据加速引擎28可以在摄取并存储在内存中数据库27中的传入数据方面提供SQL访问机上视图。一般来说,数据库加速引擎28使用并行化引擎22来将传入业务或事件分解为随后部署到与处理所需的数据相关的最接近且最有效硬件执行核的细粒度操作区块。数据库加速引擎28使业务和事件分解、处理、并行检查并重组以得出计算结果。
内容分发引擎30可以将数据输出至一个、几个或多个目的地,即数据消费者16。也就是说,内容分发引擎30具有将处理数据从内存中数据库20作为目标数据流‘推送’(分发)至数据消费者16的能力,该数据消费者16可以是其他系统、应用程序或数据库。例如,在某些实施例中,内容分发引擎可以配置为经由单个目标流将数据分发至另一个计算系统或数据仓库。另外,内容分发引擎30可以提供交互的双向数据分发和通信引擎以交互地且双向地向大众或设备,即数据消费者16广播数据。
在某些实施例中,数据摄取引擎26和内容分发引擎30可以支持本文描述的使数据源12或数据消费者16(或这两者)能够定制发送或接收的内容的“select-cast”能力。可以表现为私人数据信道,即,每个源或消费者所独有的交互的个性化数据流的形式。每个连接可以是连续的开放式连接,使得数据消费者16不需要轮询更改的数据。数据摄取引擎26和内容分发引擎可以支持数百万的与数据源12和数据消费者16的开放式连续连接。
虚拟处理器20的并行化引擎22提供抽象的执行环境,该抽象的执行环境使用多核处理器和主板架构来形成高度集成、低延迟的可扩展并行平台以便执行数据摄取引擎26、数据库加速引擎28、虚拟存储管理器29和内容分发引擎30。也就是说,并行化引擎22提供针对多核和众核系统进行优化的执行平台以基于每核提供具有细粒度并行性的实时并行、存储器管理和任务管理能力。进一步地,并行化引擎22确保指令和数据缓存(例如,L1、L2和L3缓存)的最佳使用,同时通过将所有处理分解为可以在单独核上独立执行的任务并通过最小化并行锁紧结构的要求来实现细粒度并行性。这允许数据摄取引擎26、数据库加速引擎28、虚拟存储管理器29以及内容分发引擎30在虚拟机20内操作,在多核计算平台24上高度并行执行。这样,并行化引擎22可以被视为提供用于处理摄取数据的虚拟处理器(虚拟机20)的大规模并行多核操作系统。
软件虚拟机20的虚拟存储管理器29提供自组织并允许虚拟机扩展超过物理内存中界限,并且在需要时综合使用物理外部存储器设备(例如,硬盘驱动器)。这允许内存中数据库27假脱机输出至外部存储器,并同时进行业务以扩大其内存空间以使用持久性存储装置23。例如,如果数据在物理存储器界限内不适合并推送出数据以便存储和计算,则虚拟存储管理器29可以临时假脱机输入业务数据。而且,虚拟存储管理的所有这些服务在虚拟机20内并行化并被并行化引擎执行以便在多核计算平台24上执行。
另外,虚拟存储管理器29管理持久性存储装置23以允许从故障中恢复或允许用户关闭系统并使它不用相关联的数据丢失来支持。磁盘持久性实现保证在出现故障时不会出现业务丢失。如下文进一步详细阐述,内存中数据库27的副本可以按可配置的时间间隔写入检查点文件。进一步地,在某些情况下,业务可以记录在日志文件中并且业务提交只发生在将条目写入日志文件之后。为了从系统故障中恢复,虚拟存储管理器29的持久性子系统可以应用最近检查点文件,然后自最后检查点起应用所有日志条目以重新创建内存中数据库27。这样,持久性可以被实现为是ACID(原子性、一致性、独立性、持久性)兼容的。
图3是示出了分解传入业务或事件以由以本文中描述的方式在多核计算平台24的示例性事例的独立核上单独执行的自主任务进行处理的图2的并行化引擎22的示例性事例的框图。在该实例中,多核计算平台24包括处理核52A-52N(“核52”),所述处理核52A-52N分别包括独立执行单元以执行符合核的指令集架构的指令。核52表示任意自然数的核并且每个核都与索引相关联。例如,核52A可以与索引1相关联,核52B可以与索引2相关联,依次类推。在一个实例中,核52表示256个核(即,N=256)。核52可以分别被实现为独立集成电路(IC)或者可以组合在分别利用单个IC(即,芯片多处理器)实现的一个或多个多核处理器(或“众核”处理器)内。
组合在多核处理器中的核52子集可以共用处理器组件,同时子集的每个核至少保持独立执行单元以基本上独立于子集的其他核执行指令。例如,核52A,52B可以共用包括核的多核处理器的第3级(L3)缓存和存储器管理单元(MMU)。然而,核52A,52B在该实例中分别包括独立执行单元以及独立第1级(L1)第2级(L2)缓存。可选地,核52A,52B可以共用多核处理器的L2/L3缓存以及MMU。在某些情况下,多核计算平台24可以表示插入一个或多个底盘中的独立主板或处理刀片集群(下文称为“集群机”)。每个集群机在这些情况下都可以包括分别具有核52子集的一个或多个多核处理器。
内存中关系数据库27的数据存储在包括分区51A-51N(“分区51”)的一个或多个计算机可读存储介质中,分区51A-51N分别位于独立物理位置中并且分别与核52的各核相关联。存储内存中关系数据库的计算机可读存储介质可以表示非一致存储器访问(NUMA)架构。也就是说,对分区51的每一个来说,核52也许没有相等的存储器访问时间。在某些情况下,与各核52相关联的分区51的每一个表示内存中关系数据库27具有存储器访问时间的分区,该存储器访问时间小于或等于核的分区的任意一个的存储器访问时间。换句话说,核52可以使用为核提供最低存储器延迟以减少整个存储器延迟的各分区51。
分区51的每一个包括计算机可读存储介质,诸如包括存储器的非瞬态计算机可读介质,该存储器诸如为随机存取存储器(RAM)(包括各种形式的动态RAM(DRAM),例如DDR2SDRAM,或静态RAM(SRAM))、闪存、内容可寻址存储器(CAM)、三态CAM、或可以用于承载或存储所需指令以及内存中关系数据库27数据并且可由核52访问的其他形式的固定或可移除存储介质。
在某些情况下,分区51可以分别表示一个或多个核52之间共用的计算机可读存储介质的物理地址空间的分区(即共用存储器)。例如,核52A可以经由存储器总线(未示出)连接至一个或多个DRAM封装件、模块和/或提供由多核处理器访问的物理地址空间并存储分区51A的数据的芯片(也未示出)。尽管分区51A可以为任意分区51的核52A提供最短存储器访问时间,但是其他分区51的一个或多个对核52A来说直接可访问。在某些情况下,分区51还可以或者可选地分别表示对应核52的缓存。例如,分区51A可以包括核52A的片上缓存(例如,L1/L2/L3缓存或其组合)。
分区51存储内存中关系数据库27的分散数据库对象的非重叠分区。这些对象可以包括使用底层数据结构诸如数据对象的树(或“试验”)、平面文件、堆、散列桶、以及B+树等进行存储和管理的关系表或索引。如下面所详细描述的,并行化引擎22将各数据库对象的独立底层数据结构分配到分区51的每一个并且还将要由数据库对象的底层数据结构管理的数据分配给分区51中的不同分区,从而有效并行化分区中的数据库对象。因为核52的每一个从分区51中的不同分区读取并写入,所以分区51不受由于多个核52的并行操作导致的损坏的影响。结果,在核52上执行的任务在许多情况下可以避免锁定分区51。
并行化引擎22的客户端接口41提供客户端可以通过其向加速器13发出请求的接口。在某些方面,客户端接口41实现传输层(例如,传输控制协议(TCP)/互联网协议(IP)或用户数据报协议(UDP)/IP)套接字以从调用接口的客户端接收数据并将数据返回至这些客户端。
并行化引擎22将传入业务40分解为细粒度子业务42A-42N(“子业务42”)并将子业务分布至在核52中的与分区51中的与各子业务42的数据有关的一个分区逻辑相关联的核上运行的多个执行任务。在某些情况下,分区51中的相关分区是将要返回的数据存储在查询类型业务40中的分区。在某些情况下,分区51中的相关分区是针对数据库索引对象存储底层数据结构,该底层数据结构要存储引用数据库索引对象的插入类型业务40的数据。
并行化引擎22可以自动确定加速器13的数个核52,而不需要通过管理器进行软件配置。在确定核52的数量时,并行化引擎为核52的每一个创建分区51中的对应分区。该特征可以允许再次并行部署至任意数量的核52,而不需要重新配置底层软件。
业务40是业务单元,即,由加速器13接收并执行的自包含工作单元以改变内存中关系数据库27的状态。业务40可以是ACID兼容的以便在并行执行的业务之间提供独立性并在发生故障的情况下提供回滚。业务40可以包括例如符合说明语言语句、查询语言或查询编程语言程序、函数式编程语言程序、或指定要由加速器13执行的各工作单元的规则语言程序的请求字符串。业务40包含可以由独立执行单元执行的工作的一个或多个子单元作为原子父业务40的单独子业务42。子业务42可以包括相对于内存中关系数据库27读取、写入、操纵并删除数据;创建并管理数据库对象;创建并管理元数据;以及算术和字符串操纵操作。
编译器任务44(“编译器44”)接收业务40并使用业务语法(“语法47”)将业务分解为子业务42,该业务语法结合内存中关系数据库27的数据库模式45和步进程序库49来描述包括业务40的传入业务的特定语言。在一个实例中,语法47包括一组的一个或多个替代法则,每个替代法则具有与数据库模式45中的数据相匹配的变量,该数据库模式45描述内存中关系数据库27的组织。数据库模式45可以包括数据字典。语法47的替代法则的每一个引用语法47中的额外替代法则或步进程序库49中的步进程序的变量。编译器44解析业务40以生成标记化的请求字符串,然后编译器44鉴于数据库模式45将语法47应用到每个标记化的请求字符串以针对业务产生由步进程序库49存储的一个或多个系列的步进程序。每个系列的步进程序构成独立任务,在由执行任务连续执行时,该独立任务执行子业务42中的一个。这样,编译器44将业务40分解为子业务42以便分布至多个核52并由多个核52执行。
步进程序库49包括将可由核52执行的多组步进程序指令映射到由语法47引用的步进程序密钥的字典。每组步进程序指令可以包括核52的预编译机器可执行指令。为了执行分别由步进程序密钥识别的一系列步进程序(即,任务),执行单元将步进程序的步进程序密钥映射到步进程序库49以获得对应的映射步进程序指令,然后分步执行映射的步进程序指令。任务44,46的每一个以及子执行任务48A-48N(被示为“sub.execution”48A-48N)表示对应子业务42的各自一系列步进程序。
将业务40分解为子业务42,编译器44派生执行任务46以管理子业务的执行并返回业务40的任意所需响应。这样,编译器44生成执行计划并派生执行任务46以进行执行计划。执行任务46派生子执行任务48以执行对应子业务42。在某些情况下,业务40可以表示多个独立数据库业务。在这些情况下,编译器44可以派生独立执行任务以管理每个业务或重新使用执行任务46以管理业务。
子业务42可以分别涉及由内存中关系数据库27存储在独立分区51中的不同数据。例如,业务40可以包括具有字段值的数据库表的与多个准则相匹配的行的查询请求,例如,具有WHERE从句的SELECT SQL语句,其中数据库表具有针对字段定义的对应索引。作为另一实例,业务40可以包括为具有所定义的多个索引的数据库表添加行,例如INSERTSQL语句,或利用新字段值更新数据库表的与一个或多个准则相匹配的所有行,例如UPDATE SQL语句的请求。作为另一实例,业务40可以包括返回数据库表的行字段的所有值的和的请求。执行任务46派生子业务42的子执行任务48并基于相关数据将任务分配至不同核52。执行任务46可以向自身提供存储器指标以使子执行任务48可以返回由此产生的数据或状态信息。子执行任务48中的任意一项由此可以在子业务42的递归分解中派生额外子执行任务。
执行任务46将子业务42的数据输入至分配算法,诸如散列函数,该分配算法输出索引或识别核52中的一个的其他标识符。对于上述添加行实例的请求,执行任务46可以向分配算法输入完整的行数据或行数据子集,诸如针对数据库表定义索引的字段的行数据。分配算法例如可以是MD5、SHA-1或应用于输入数据和模量核52的数量的逐位运算,或在提供任意输入数据时在核的数量的范围内产生值的任意其他函数。对于上述查询请求和更新语句实例,执行任务46可以对查询请求的准则进行散列处理,然后计算散列输出模量核的数量。利用分配算法输出的核索引,为子业务42提供数据库对象数据,当通过执行任务46派生时,确定执行子业务的各子执行任务48的核52中的一个。在所示的实例中,具有索引1的核52A执行子业务42A,原因是与子业务42A有关的数据使分配算法输出索引1。具有索引2的核52B执行子业务42B,原因是与子业务42B有关的数据使分配算法输出索引2,依次类推。这样,分配算法使数据与不同分区51相关联且还与在根据分配算法授权子业务48时访问各分区的核52相关联。对于上述所有值实例的和,执行任务46为每个核52派生子业务42中的一个。子业务的每一个使各子执行任务48计算由分区51中的相关联分区存储的数据库表的数据的部分和。
核52的每一个对分区51中的不同分区起作用。通过将子执行任务48指示至不同核52以便执行,执行任务46使与子执行任务48的各子业务42有关的数据由不同的已知分区51存储。在所示的实例中,因为与分区51B逻辑相关联的核52B执行子执行任务48B,所以分区51B存储与子业务42B有关的数据。技术因此有效地并行化业务并将执行任务分配至为分区51提供最短存储器访问时间的核52,所述分区51存储与各执行任务有关的并行化数据。当子业务42中的对应子业务与由多个分区51存储的数据有关时,子执行任务48可以在核52中迁移。这样,任务通过存储器延迟最靠近任务所需的数据执行。
子执行任务48的每一个包括一系列步进程序。为了执行步进程序,子执行任务48可以将步进程序的步进程序密钥映射至步进程序库49中的对应步进程序指令并指示核52执行步进程序指令。子执行任务48的每一个在核52中的不同核上执行。尽管组合执行单个业务40,子执行任务48由此可以基本上并行执行。结果,并行化引擎22可以按业务处理速度实现大幅改善,扩展至任意数量的核52以及业务40中固有的并行化级别。此外,并行化引擎22在单个系统中利用然而可以经由系统的多个核52访问的整合内存中关系数据库27实现此并行化,而不是在分布式系统中实现,该分布式系统划分多个数据库服务器中的数据库并由此要求独立负载平衡服务器或控制器来平衡多个分区中的数据库数据。
子执行任务48可以将各返回值提供给经由存储器指标引用的执行任务46,该执行任务46利用子执行任务来引用。返回值可以包括请求数据、部分数据(例如,部分和)以及执行状态值(例如,成功、失败)等。执行任务46利用返回值生成业务40的响应字符串并经由客户端接口41将响应字符串输出至一个或多个请求客户端,或者执行任务46利用并行化引擎22中的另一个任务聚集用于进一步处理的返回值。
尽管针对在内存中数据库上进行的操作进行描述,但是本发明的技术适用于可以从传入业务的并行化处理中受益的其他应用程序。例如,业务40可以表示具有必须单独处理的多个字段数据的分组数据单元(PDU)。该字段数据可以由编译器44分解为数个子业务以便由各子执行任务48执行。在某些情况下,业务40可以表示符合编程语言,诸如C/C++或Java的代码片段。在这些情况下,编译器44可以执行用于编程语言的编译器以动态产生机器代码以便通过子执行任务48直接在各核52上执行以处理入站业务(例如,分组)。这样,并行化引擎22可以根据所接收的代码片段动态改变执行程序以便支持入站/出站数据(例如,PDU)的灵活并行化处理。
图4是示出了虚拟处理器20可以被视为在多核计算平台24的各核上执行的多个协作虚拟处理器84的概念图的框图。如图4的实例中所示,虚拟处理器84的每一个与使用本发明的技术并行修改缓存数据结构并执行加速器13的各个外部和内部功能并行地执行任务82。虚拟处理器84的每一个提供伪独立操作环境以通过多核计算平台24的各核调度并管理对应的一组任务82A-82N的执行。
虚拟处理器84可以提供虚拟处理器管理的统一的平台独立执行环境;任务调度;语句编译和执行;数据库业务处理;日志记录;虚拟处理器负载平衡;数据库持久性、恢复、及复制;数据摄取及输出;以及用户定义行为。虚拟处理器84可以通过提供对虚拟处理器的每一个来说统一的虚拟指令集架构(ISA)来实现执行环境。虚拟处理器84接收用于执行任务的指令并将指令转化为内核级库调用和/或符合由各核提供的原生ISA的指令。这样,虚拟处理器提供利用其执行任务82的一组完全并行化的虚拟机。
在某些实施例中,多个核52支持内核的单个事例以及提供虚拟处理器20的过程。例如,核52A,52B可以执行单个过程的线程。在这些实施例中,协作以提供虚拟处理器的核52A,52B访问由过程提供的单个物理或虚拟地址空间。此虚拟处理器还可以称为过程虚拟机。结果,在协作核上执行的任务可以通过写入共用地址空间并从该共用地址空间读出来在核中传递消息、迁移并派生其他任务。
任务82包括符合由虚拟处理器的每一个提供的统一的平台独立编程环境的一组步进程序。步进程序可以表示针对图3描述的步进程序库49的步进程序的示例性实施例。也就是说,虚拟处理器84可以将步进程序转化为由核52机器可执行的一组指令。结果,任务82的每一个可以无缝迁移至虚拟处理器84的任意一个并在其上执行,而不需要重新编译为新ISA或转化为新编程环境。
各核52的缓存92存储与各核相关联的数据并且可以表示图3的分区51的示例性实施例。缓存92的每一个包括缓存表示数据库对象,诸如针对内存中关系数据库27的表98定义的索引93的总体数据结构的数据的部分结构94A-94N(“部分结构94”)中的一个。换句话说,部分结构94的每一个缓存索引93的数据的非重叠组合。部分结构94和索引93可以包括表、树、链表及B+树等。根据本发明的技术,当数据输入由虚拟处理器84中的一个执行的分配算法时得出与包括缓存中的部分结构的核52之一相关联的索引值时,部分结构94缓存索引93的各数据。部分结构94可以包括由可以划分的任意数据库对象存储并管理的数据子集,包括表、索引、单独表行以及内部结构。另外,尽管被示为驻留在缓存92中,但是部分结构94可以分布在任意一个或多个计算机可读存储介质内。
例如,总体数据结构可以是包括数据库索引字段的分别映射至解析存储在内存中关系数据库27中的表98的行的指标的字段值的索引。在该实例中,部分结构94的每一个包括分配给核52中的包括部分结构的一个核的字段值-指标映射。结果,在虚拟处理器84上执行的任务82可以通过对字段值数据进行散列处理迅速确定数据库索引的部分结构94中的字段值-指标映射的位置。在某些情况下,核52可以在存储器空间中针对对应部分结构94保持将核52的索引值映射到存储器地址的索引93的阵列或其他相关数据结构。在应用分配算法来确定查找数据的索引值时,任务82将索引值映射至部分结构94中的一个的存储器地址并迁移至与核52中与用于执行的索引值相关联的一个核对应的虚拟处理器84。这样,核52的每一个与各部分结构94中的数据逻辑相关联,并且技术可以通过增加缓存92中的对应缓存中保留的部分结构94的可能性来改善缓存性能。在某些情况下,专用任务管理执行任务的相关数据结构。
在所示的实例中,核52经由系统总线98通信以交换数据、消息及任务。另外,核52经由存储器总线99与包括内存中关系数据库27的系统存储器99交接。虚拟处理器84与执行加速器13的各个外部和内部功能并行地单独执行任务82。任务82可以是解析系统存储器99中包括由虚拟处理器84执行的一系列步进程序的任务结构的指标。任务82因此可以通过系统存储器99地址空间中的地址来唯一识别。任务82的每一个基本上独立于任务82的每个其他任务执行。尽管任务82可以与其他任务交换数据,派生额外任务,并且可以从其他任务中派生而来,但是任务82的每一个自确定核52中要执行任务的这个核。不存在指定任务82的核位置的监察任务或过程。协作任务82的分层结构因此是自我指示的且是自组织的,从而基本上减少了致力于任务管理、一致性检查及其他管理功能的核52周期的数量。
任务82可以在虚拟处理器84中迁移并派生额外任务以在其他虚拟处理器84上执行。在所示的实例中,在虚拟处理器84A上执行的任务82A派生任务82B以通过向虚拟处理器84N发送消息83而在虚拟处理器84N上执行。消息83可以为派生任务82B指定由任务82A确定的一系列步进程序。消息83可选地可以指定解析系统存储器99中包括要作为任务82B执行的一系列步进程序的任务结构的指标。另外,任务82A随后复制自己以便通过向虚拟处理器84B发送消息85而在虚拟处理器84B上执行。消息85可以指定表示任务82A的要求执行的剩余部分的一系列步进程序,或解析系统存储器99中至少包括由虚拟处理器84B执行的剩余的一系列步进程序的任务结构的指标。
图5是额外详细地示出了根据本发明的技术执行多个并行任务的虚拟处理器84A-84N的框图。虚拟处理器84的每一个与缓存92A-92N中的一个相关联,原因是虚拟处理器在包括相关联缓存的核上执行。尽管针对虚拟处理器中的单独虚拟处理器交替描述了虚拟处理器84的组件和功能,但是虚拟处理器84的每一个包括基本上类似的组件以执行基本上类似的功能。在某些情况下,多个核可以执行提供虚拟处理器84中的一个的过程的线程。在这些情况下,该过程包括核的每一个的单独组件集。例如,单个虚拟处理器84在这些情况下可以提供运行列表104、待机列表108、交叉队列110以及心跳任务102的四个事例。在这些情况下,该过程的调度器100在单独核上执行以在过程上执行任务82。本文引用虚拟处理器因此可选地可以指的是虚拟过程以及其中提供的组件集中的一个。
虚拟处理器84A的运行列表104A存储目前排队以便由虚拟处理器执行的任务列表。在所示的实例中,运行列表104A是循环队列,该循环队列存储解析虚拟处理器84A的存储器空间中的各任务结构的存储器指标的循环队列。运行列表104A,如支持虚拟处理器84A的其他数据结构可以存储在缓存92A中和/或主存储器中。调度器100A反复调用运行列表104A中的任务。调度器100A利用取决于任务中的指令的可变时分来执行时分多路复用。调度器100A可以派生单独线程以便分别执行运行列表104A中的一个任务。可选地,调度器100A可以将单个工作线程用于运行列表104A。除了用于执行运行列表104A的线程之外,调度器100A还可以使用额外线程来执行专门任务。调度器100A调用运行列表104A的任务以对于时分执行,然后调用104A的下一个任务。因为运行列表104A是循环队列,所以调度器100A从列表头至列表尾反复执行运行列表的任务,然后在完成在列表尾执行任务的至少一部分时,再次在列表头执行任务。
任务在虚拟处理器84中迁移使得最初在虚拟处理器84中的一个上执行的任务可以稍后在另一个虚拟处理器上执行。另外,在虚拟处理器84中的一个上执行的任务可以派生新任务以便在虚拟处理器中的另一个上执行。在所示的实例中,任务112通过向消息114中的在该实例中包括存储器写入操作的交叉队列110B独自添加存储器指标而从虚拟处理器84A迁移至虚拟处理器84B。可以随时访问虚拟处理器84的运行列表104,并且除了涉及心跳任务102的操作之外,虚拟处理器84并行地独立运行并且不同步执行任务。在某些情况下,虚拟处理器84A,84B可以在单独集群机上执行。结果,虚拟处理器84A,84B中没有一个可以访问另一个的物理存储器空间。在这些情况下,消息114可以包括基于网络的消息诸如套接字写入,或十字指令杆,底板或其他切换消息等。
由于虚拟处理器20的NUMA架构,调度器100可以在虚拟处理器84中迁移任务82,而虚拟处理器84在对缓存92具有非一致存储器访问时间的核52上执行。这样,调度器100可以提供NUMA感知调度以减少存储器访问的整体延迟并由此进一步改善性能。
为了防止由于异步添加新任务而导致运行列表104损坏,虚拟处理器84包括临时存储零个或多个新任务以添加至运行列表104的各交叉队列110。在操作中,在虚拟处理器84A上执行的任务112确定其对虚拟处理器84B更有效地起作用并通过锁定交叉队列110B并将任务112的存储器指标推送至交叉队列来将自身迁移至虚拟处理器84B。为了在虚拟处理器84B上派生新任务,在虚拟处理器84A上执行的任务112可以在存储器中创建新任务数据结构,然后将新任务数据结构的存储器指标推送至交叉队列110B。调度器100B在虚拟处理器84B中运行以弹出交叉队列110B的头任务并将弹出的任务插在运行列表104B上。通过以这种方式使用交叉队列110,虚拟处理器84可以避免锁定各运行列表104以读取/写入运行列表,从而避免由于并行执行的单独虚拟处理器的并行任务执行及迁移/派生导致的碰撞。在某些情况下,为了减少与交叉队列110A碰撞的可能性,虚拟处理器84A可以包括多个交叉队列,例如系统中的每个虚拟处理器一个交叉队列。
在某些情况下,任务112可以迁移至虚拟处理器84B,原因是由任务执行的分配算法任务112要求访问与虚拟处理器84B相关联的缓存92B的部分结构94B中的对象。如上文针对图4所述,部分结构94存储内存中关系数据库27的整个数据库对象的数据子集。在某些情况下,部分结构94可以表示交替地或另外存储至主存储器的部分结构。为了避免在通过在虚拟处理器84上执行的任务进行的访问期间锁定部分结构94,访问各部分结构可以局限于在虚拟处理器84中与部分结构相关联的这个虚拟处理器上执行的任务。任务112因此必须对虚拟处理器84B起作用以访问部分结构94B。尽管在许多环境下任务避免锁定部分结构并且尽管多个不同的任务可以共用整个数据库对象,该约束仍然确保通过任务访问部分结构94是安全、可靠的。而且,在不同虚拟处理器84上执行的多个任务可以通过单独访问一起构成数据库对象的不同部分结构94来并行访问整个数据库对象。然而,当任务112无法在分配的时分完成对部分资源94中的一个的访问时,任务112可以锁定部分资源以确保部分资源数据对任务来说保持稳定且一致直至下一时分为止。可选地,任务112可以只锁定由部分结构94中的一个而不是完整结构存储的项目。这样,后续任务可以修改部分结构的任意非锁定项目。
在某些情况下,运行列表104A的任务可能需要不能立即可用的资源或者另外需要等待依赖的满意度以便继续执行。为了避免挤满执行虚拟处理器84A的相关联核,这些任务通过与相关联的唤醒时间一起将自身添加至待机列表108A而可以休眠。待机列表108A存储通过唤醒时间在排序数据结构中排序的待机任务,诸如队列、表、链表或树数据结构。待机列表108A中的每个节点由此是待机任务的任务结构的存储器指标。
虚拟处理器84A的报警任务以及硬件计时器管理待机列表108A中的待机任务。报警任务利用待机列表108A中的最早任务的唤醒时间值来编程硬件计时器。当硬件计时器激发时,报警任务触发并将待机列表108A中的最早任务添加至运行列表104A。在某些情况下,报警任务修改运行列表104A以确保调度器100A接下来调用运行列表内的任务中的最早任务。报警任务然后利用下一个最早任务的唤醒时间值根据待机列表108A对硬件计时器重新编程。硬件计时器可以利用速率超过1GHz的CPU时钟进行驱动并因此具有亚微秒周期性。结果,报警任务结合硬件计时器可以实现细粒度任务待机管理以及虚拟处理器操作行为,并因此可以通过确保任务在其相关联的唤醒时间值之后在短延迟内唤醒并执行来增强资源的使用。
虚拟处理器84按预定义速率执行各心跳任务102A-102N(“心跳任务102”)以在由心跳速率限定的每个时期同步虚拟处理器的操作位置一次。在某些情况下,预定义速率为1Hz。例如,调度器100A调用运行列表104A的任务,并且每秒执行心跳任务102A一次。为了同步虚拟处理器84的操作位置,心跳任务102可以分别访问并减小虚拟处理器的所有事例中共用的原子变量。原子变量可以利用数个虚拟处理器84(与系统中核的数量对应)初始化。心跳任务102的每一个测试零的原子变量。当原子变量非零时,心跳任务等待信号。当原子变量由于最终心跳任务在特定周期内的操作而达到零时,最终心跳任务可以发起一个或多个用户级任务或信号通知虚拟处理器84的每一个以恢复各运行列表104的执行。这样,最终心跳任务将所有任务的阶段改为最终心跳任务的心跳(即,系统范围的信号)。心跳任务102因此提供已知每个虚拟处理器84的状态的时窗。任务可以利用该时窗来执行系统范围的操作。
例如,任务可以将任务钩子(例如,存储器中的任务结构的存储器指标)设置在心跳任务102的每一个中。在周期内从最终心跳任务接收信号时,等待信号的心跳任务的每一个开始执行并执行钩状任务。钩状任务由此在由虚拟处理器84的每一个同时执行时,提供系统范围的操作。在某些情况下,周期内的最终心跳任务单独执行钩状任务。该技术可以用于扩展存储器,执行数据库检查点写入及读取操作或其他周期任务诸如数据库日志记录、记录及存档。任务可以等待并使用监控器、共用存储器或信号灯等信号通知彼此。
运行列表104内的某些任务不与缓存92(或另一存储器分区)相关并因此可以在虚拟处理器84中的任意一个上运行。这些任务可以包括任务结构中指示任务可移动的标志。在指示任务的下一步进程序是否必须在虚拟处理器84的特定虚拟处理器上执行的每个步进程序之后,任务可以自修改标志。
为了提高虚拟处理器84的利用率并减少虚拟处理器84的阻塞,任务自平衡以更加平等地分布运行列表104的每一个的数个任务,并因此分布虚拟处理器84的每一个的数个任务。在某些情况下,在执行任务的每个步进程序之后,任务确定各运行列表104的长度以及相邻运行列表104的长度。例如,在执行任务的步进程序之后,任务可以确定运行列表104B(即,由其存储的数个任务)的长度以及运行列表104A,104C的长度。如果任务确定运行列表104B的长度比运行列表104A,104C的任意一个的长度高阈值,则任务自身迁移,如果可移动,则迁移至运行列表104A,104C中较短的一个。在某些情况下,当执行再平衡时,任务负责甚至更远的邻近部分,即,不只是最近邻近部分。这样,任务以平衡的方式通过将自身朝轻载虚拟处理器84(以及对应核)迁移来自主进行自组织。任务可以通过交换消息中的长度或读取共用存储器值等来确定相邻运行列表的长度。
图6是示出了调用运行列表104A的多个任务120A-120K(“任务120”)以根据本发明中描述的技术对任务进行时分复用的调度器100A的框图。该实例中的运行列表104A被实现为且被示为循环链表。因此,任务120A是运行列表104A的头任务并接着任务120B。任务120K是运行列表104A的尾任务并接着任务120A。任务120的每一个包括用于执行的一个或多个步进程序的列表。例如,任务120A列出步进程序120A1-120A5。步进程序是一个或多个指令的自包含区块,诸如函数或函数引用,便于虚拟处理器84执行。步进程序可以调用由在系统上执行的程序限定的其他函数作为执行元素。
任务120的步进程序可以包括可变数量及类型的指令并由此具有不同执行长度。换句话说,执行任务120的步进程序的每一个所需的时间可以因步进程序不同而不同。任务120的步进程序以原子的方式执行,即从步进程序的第一指令至步进程序的最后指令执行而不中断。在完成运行列表104A中的任务120之一的步进程序之后,调度器100A调用运行列表中的任务120的下一个任务的下一步进程序。这样,调用任务120中的不同任务的调度器100A通过“步进式切片”任务来执行时分复用。也就是说,与“时间切片”任务120使得通过内核为每个任务提供较短时间周期相比,任务120的每一个继续执行直至任务完成步进程序,任务在该较短时间周期内可以执行直至被抢占。步进式切片由此确保任务120的步进程序的原子性。
任务120的每一个保持存储器指标、步进程序索引或在相关联任务中执行的下一步进程序的其他引用。当调度器100A调用任务时,任务执行下一步进程序,然后休眠以返回控制给调度器100A,该调度器100A调用运行列表104A中的下一任务。例如,任务120K执行任务120K的步进程序120C2,然后返回控制给调度器100A,该调度器100A调用任务120A。任务120A然后执行步进程序120A3。在某些情况下,单个执行线程使用上文描述的步进式切片技术来执行任务120的每一个。单个执行线程然而可以在每个步进程序之后,或在执行运行列表的尾任务120K的步进程序之后休眠,例如以便允许执行非运行列表任务的线程。
细粒度调度器100使虚拟处理器84能够执行改变复杂性和持续时间的多个业务。一般来说,业务可以表征为修改数据库(例如,SQL INSERT、DELETE及UPDATE语句)或表征为查询数据库(例如,SQL SELECT语句)。这些业务可以进一步根据其执行持续时间来表征。例如,更新单行的业务可以被视为短时间运行业务,而查询整个数据库和/或执行复杂/扩展计算的业务可以被视为长时间运行业务。作为更进一步的实例,基于SELECT FUTURE(下面进一步详细地描述的)的查询业务可以被视为永久地或“连续地”运行业务。调度器100可以允许通过虚拟处理器84来交错短时间运行业务、长时间运行业务及连续运行业务的各个组合的执行。结合扩展超过物理内存中界限并扩展至任意数量的核的能力,技术具体在从大量客户端连接接收大量业务的上下文中可以支持工作负载混合中包括改变执行持续时间的业务的丰富而复杂的查询。
图7A-7B是示出了支持图1的业务数据加速器13的并行化操作的示例性任务的框图。尽管任务被示为属于单独组,例如网络任务140,任务中的每一个基本上独立于彼此操作,如本文所述。
网络任务140支持与客户端交接且另外启用协作以实现一个或多个加速器13的多个集群机之间的通信。在该实例中,套接字是集群机之间以及业务数据加速器与一个或多个客户端之间的主要通信接口。在独立机器或集群机上执行的套接字应答任务140A的实例侦听由客户端下发至系统的套接字连接请求。在接收套接字连接请求时,套接字应答任务140A派生特定于套接字连接请求的套接字读取器任务140B和套接字写入器任务140C的新事例。新套接字读取器任务140B和套接字写入器任务140C协作以完成套接字连接握手并建立套接字连接。新套接字读取器任务140B侦听来自对应客户端的服务请求。这样,可以由多个核并行执行的单独任务实现与系统的多个并行连接点。技术因此可以使单个系统能够处理几十万并行连接。
异步完成任务140D通过启用异步套接字发送和接收操作并促进高性能客户端请求/响应输入/输出(I/O)来支持套接字读取器任务140B和套接字写入器任务140C。系统可以为每个套接字连接派生新异步完成任务140D。集群机可以使用网络任务140彼此交接。主机互连任务140F的事例在集群机的每一个上执行以便在虚拟处理器事例之间建立套接字连接。主机互连任务140F例如可以在集群的驻留在单独集群机上的所有虚拟处理器之间创建全网格的连续连接套接字。可选地,主机互连任务140F可以根据需要在这些虚拟处理器之间建立连接以便执行客户端请求并促进系统效率。为了建立新套接字连接,该实例中的主机互连任务140F为新套接字连接派生套接字连接任务140E的新事例,该套接字连接任务140E由此派生套接字写入器任务140C和套接字读取器任务140B的新事例。
语句执行任务142包括表示上文针对图3描述的任务的示例性实施例。具体地,编译器任务142A、语句执行任务142B以及子执行任务142可以分别表示编译器任务44、执行任务46以及任意子执行任务48的示例性实施例。
系统启动任务146A根据可配置参数来初始化系统并管理从持久性存储装置加载内存中关系数据库27的至少一部分。系统关闭任务146B将包括在操作系统期间配置的数据的系统数据存储到持久性存储装置以便稍后恢复。另外,系统关闭任务146B可以管理将内存中关系数据库27的至少一部分写入持久性存储装置。
周期语句任务148A可以配置为定期执行操作。例如,周期语句任务148A的事例可以配置为定期从记录表中删除经保存以促进ACID依从性的先前执行语句。该实例是通过移除多余数据来使系统成流线型的内务处理形式。用户定义任务148B可以利用用户指令进行配置以针对内存中关系数据库27执行自定义用户应用程序。这样,消费者访问可以利用系统的内部执行模式,并且本发明的技术提供一种消费者可以将自定义任务添加到其中的高度可扩展系统。本文公开的任务模型通过简单添加额外任务而使消费者和开发者能够逐步增加系统的复杂性。
并行化引擎22提供一系列内部服务。这包括会话管理、业务管理、模式控制、并行化容器、锁定、解析、错误管理及动态机器代码生成。这些可以由工具箱或其他应用程序编程接口(API)访问以修改并行化引擎22的操作。
内务处理任务144管理资源并管理系统。垃圾收集器任务144D执行垃圾收集以回收被对象占用的存储器,所述对象不再由系统中的任意过程引用。垃圾收集任务144负责最终从内存中关系数据库27的结构(例如,索引)中移除行字段数据并回收存储器。语句执行任务142B响应于传入删除语句从数据库中移除行。然而,一旦行被标记为逻辑删除,语句执行任务142B将删除行的指标插入要被垃圾收集任务144D移除/回收的行的列表。垃圾收集器任务144D将分配算法应用到引用该行的内存中关系数据库27的每个索引的每个行。垃圾收集器任务144D从它所在的每个索引中移除行,然后删除行结构,由此回收行占用的存储器。
心跳任务144B和报警任务144E可以表示图5的心跳任务102的示例性实施例。报警任务144E的事例根据针对图5描述的技术分别管理虚拟处理器的硬件计时器和待机列表。许可任务144C确保系统利用有效许可证操作。统计任务144F测量系统的性能和其他度量并经由套接字写入器任务140C的事例将统计传递给管理实体。例如,统计任务144F的实例可以通过线程时间步长执行,监控系统中任务的数量,监控客户端请求吞吐量或响应时间,并监控客户端请求到达率。监控任务144A定期检查系统中的所有其他任务的状态以上报错误/警告并促进错误纠正/处理。
磁盘任务150为内存中关系数据库27提供持久性依从性。日志写入器任务150A将执行语句的状态写入业务日志152、计算机可读存储设备。在业务出现故障或其他数据库相关出现操作故障时,日志读取器任务150C读取先前执行语句的写入状态,日志恢复任务150B如果需要可恢复状态至存储器以使内存中关系数据库27恢复已知状态。周期语句任务148A的事例可以定期确定过时的日志条目并从业务日志152中删除这些条目。
检查点相关任务至/自系统检查点154、计算机可读存储设备保存并恢复内存中关系数据库27的部分。检查点获取任务150D确定一部分存储器写入磁盘并指示检查点写入器任务150E将作为检查点的部分写入磁盘。在发生数据库相关故障时,检查点恢复任务150F确定存储器的一个或多个部分从先前写入检查点中恢复并指示检查点读取器任务150G读取检查点并将检查点数据重新插入合适的存储器位置。这使日志读取器任务150C只读取并恢复在存储检查点至系统检查点154的检查点获取任务150D之后应用的这些业务。
页面写入器任务150H和页面读取器任务150I将内存中数据分页至由数据存储器156表示的辅助存储装置,计算机可读存储设备,以扩展被内存中关系数据库27使用的存储器。页面写入器任务150H识别内存中关系数据库27内的数据库对象的陈旧项目(例如,行),并在识别陈旧项目时,将陈旧项目的数据写入数据存储器156。另外,页面写入器任务150H随后删除陈旧项目。当在系统上执行的任务要求访问写入数据存储器156的项目时,页面读取器任务150I从数据存储器读取项目并使用业务将项目的数据插入内存中关系数据库27。
记录写入器任务150J将系统操作记录至系统记录158,计算机可读存储设备。存档任务150K识别被后续检查点抛弃的日志条目和/或检查点并将数据写入由档案160表示的三级存储装置,计算机可读存储设备。
图8是示出了根据本文描述的技术并行地写入多个数据对象的示例性业务数据加速器178的框图。业务数据加速器178包括核185A-185D(“核185”)。索引186,188分别是内存中关系数据库27的表对象(未示出)的不同字段的索引。例如,表对象可以包括两个字段,EMPLOYEE_ID以及EMPLOYEE_NAME,分别通过单独索引186,188中的一个进行索引。部分索引186A-186D的每一个根据分配算法划分并存储索引186的部分数据。同样地,部分索引188A-188D的每一个根据分配算法划分并存储索引188的部分数据。
客户端180向业务数据加速器178下发引用在其上对索引186,188进行索引的两个字段的请求语句。例如,请求语句可以是INSERT、DELETE或UPDATE SQL语句以分别将行插入索引186,188基于此的表对象/删除或更新的表对象的行。作为另一实例,请求语句可以是SELECTSQL语句以获取与引用在其上对索引186,188进行索引的两个字段的准则相匹配的所有行。因此,技术可以允许并行化许多不同类型的说明语言(例如SQL)操作,从而不但可以查询,而且还可以修改内存中数据库。
语句执行任务182经由套接字连接和编译器任务(图8中都未示出)从客户端180接收形成执行计划以执行请求语句的业务181。业务181包括索引186的第一子业务以及索引188的第二子业务。语句执行任务182派生子执行任务183,184以执行业务181的第一和第二子业务。
例如,就上述INSERT SQL语句实例而言,语句执行任务182首先根据请求语句中接收的行数据创建并将新行添加至表对象。语句执行任务182然后使用索引186基于此的字段的行的字段值执行分配算法,并基于分配算法的输出将字段值分配给核185B。语句执行任务182向核185B派生子执行任务183并指示派生任务将新数据的索引行插入部分索引186B。子执行任务183将索引行添加至部分索引186B,而新行的存储器指标将语句执行任务182添加至表对象。
另外,语句执行任务182使用索引188基于此的字段的行的字段值执行分配算法,并基于分配算法的输出将字段值分配给核185D。语句执行任务182向核185D派生子执行任务184并指示派生任务将新数据的索引行插入部分索引188D。子执行任务184将索引行添加至部分索引188D,而新行的存储器指标将语句执行任务182添加至表对象。这样,子执行任务183,184可以并行执行并且将新索引行插入索引186,188可以并行发生,而不串行发生。在某些情况下,业务181可以包括分别使任务写入部分索引186的子业务。例如,业务181可以包括写入各部分索引186B,186D的子业务。然而,子执行任务183,184可以并行执行以同时修改相同数据库对象的部分索引186B,186D,即,索引186。子执行任务183,184将数据和/或状态信息返回状态执行任务182,从而经由套接字连接任务(图8中未示出)将结果189返回客户端180。
图9是示出了包括向客户端提供统一接口并根据本文描述的技术写入部分数据结构的集群机196A-196C(“集群机196”)的示例性业务数据加速器190的框图。集群机196的每一个包括核1、核2和核3。例如,集群机196A包括核196A1、196A2及196A3。集群机196A,196B执行各套接字连接任务195A,195B,利用其交接传递数据和任务信息。业务数据加速器190的机器196中的每个核包括内存中关系数据库27的数据对象194的部分数据结构。例如,核196A1包括部分结构194A1,核196B2包括部分结构194B2。
客户端191向业务数据加速器190下发与数据对象194的数据有关的请求语句。语句执行任务193经由编译器任务(未示出)从客户端191接收形成执行计划以执行请求语句的业务192。语句执行任务193使用业务192的数据执行集群分配算法,诸如集群散列函数。集群分配算法输出两个索引,机器尺寸中的第一索引,核尺寸中的第二索引。语句执行任务193通过这种方式使用集群分配算法来确定性地识别机器196的合适核以执行业务192。
在所示的实例中,集群分配算法输出机器索引2和核2以指示对核196B2起作用的任务应该执行业务192。因为语句执行任务193在与核196B2的机器196B不同的机器196A上执行,所以语句执行任务193经由各套接字连接任务195A,195B在机器196A,196B之间建立套接字连接。语句执行任务193然后使用套接字连接任务195派生子执行任务196,子执行任务196在与核196B2相关联的部分结构194B2上执行业务192。在某些情况下,子执行任务196可以经由套接字连接任务195将业务192结果返回语句执行任务193。语句执行任务193可以在机器196B上例如通过串行化并经由套接字连接任务195发送任务的步进程序来派生子执行任务196。套接字连接任务195由此在该事例中充当语句执行任务193的代理程序。
图10示出了示例性系统200,其中加速器13的事例被用作构建块以形成分层结构以将所选数据交互地推送至大量单独客户端(用户)201并在均质体广播数据流中创建交互专用广播会话(信道)。
在图10的实例中,系统200包括布置在具有核层202、扇出层204和边缘层206的三层结构中的多个业务数据加速器13。可能大约是数百万设备的数据消费者16分别利用边缘层206的业务数据加速器13建立唯一查询207。反过来,边缘层206的业务数据加速器13分别利用扇出层204的业务数据加速器13建立查询209。也就是说,边缘层206的业务数据加速器13内的数据摄取引擎26与扇出层204内的业务数据加速器13的内容分发引擎30建立连接并将聚集查询209提供至聚集业务,其中聚集查询209分别是聚集业务的实例。也就是说,边缘层206的业务数据加速器13内的每个内容分发引擎30计算表示指定从数据消费者16接收的客户端特定查询的所有数据的聚集查询209。换句话说,通过扇出层204内的每个内容分发引擎30计算的聚集查询209指定与数据消费者16指定的条件对应的多个条件集,内容分发引擎与所述数据消费者16建立连接。
在一个示例性实施例中,每个加速器13的数据库加速引擎30表示已经增强以允许数据消费者16轻易指定连续查询的基于SQL的API。例如,在一个实施例中,基于SQL的API支持任选未来令牌包括在任意下发的选择语句中以指示由选择语句定义的查询要连续应用到新的尚未接收的数据。例如,第一数据消费者16可以下发如下查询:
SELECT FUTURE stock_price,daily_volume FROM stock_tableWHERE stock_symbol=‘IBM’
并且第二数据消费者可以下发如下查询:
SELECT FUTURE stock_price,daily_high FROM stock_table WHEREstock_symbol=‘GE’
在这种情况下,这两个查询都包括使接收数据库加速引擎30指示将查询视为连续查询而不是一次查询的新关键字。在这种情况下,聚集查询可以根据客户端特定查询计算为:
SELECT FUTURE stock_price,daily_volume,daily_high FROM stock_table WHERE stock_symbol=‘GE’or stock_symbol=‘IBM’。
反过来,扇出层204的业务数据加速器13的数据摄取引擎26建立连接并将聚集查询211提供至核层202内的加速器13的内容分发引擎30。核层202表示根据一个或多个源对如上所述的业务数据的流起作用的一个或多个业务数据加速器13的集群。如果发生数据变化,则将更新数据从核层202自动推送至这些数据消费者16,更新数据针对其与客户端的查询207限定的条件相匹配。在每个层处,内容分发引擎30将数据扇出至数据摄取引擎26以便填充如本文描述的大规模并行内存中数据库直至将更新数据推送至数据消费者16为止。本文描述的并行化技术允许该过程非常快。例如,数百万数据消费者16可以使用系统200的示例性三层结构进行支持,使得可以按照大约一毫秒的数量级将核层202内的不断变化的数据推送至数据消费者16。这允许核层202内的处理数据从内存中数据库作为目标数据流‘推送’(分发)至数据消费者16。虽然针对三个层进行了描述,但是也可以使用其他层。例如,利用四个层,以节省成本且及时的方式将数据推送至数十亿的数据消费者。
图11示出了示例性系统250,其中加速器13的事例被用作构建块以形成分层结构以从大量单独数据源(用户)251接收数据。数据源12可以是终端用户计算设备(例如,移动设备)、物理传感器(例如,用于从冲击波收集数据的声传感器或用于提供穿过大市区的实时数据流量的流量控制传感器)或产生数据的任意设备。系统250提供优雅且节省成本的方式以消费并处理来自大量数据生产者的数据。
在图11的实例中,系统250包括布置在具有核层252、扇入层254和边缘层256的三层结构中的多个业务数据加速器13。可能大约是数百万设备的数据源12分别与边缘层256的业务数据加速器13建立连接并将业务数据发送至边缘层256的业务数据加速器13。反过来,边缘层256的业务数据加速器13分别与扇入层254的业务数据加速器13建立连接并将数据发送至扇入层254的业务数据加速器13。也就是说,边缘层256的业务数据加速器13内的内容分发引擎30与扇入层254内的加速器13的数据摄取引擎26建立连接并将数据提供给数据摄取引擎26。反过来,扇入层254的业务数据加速器13的内容分发引擎30建立连接并将数据提供给核层252内的业务数据加速器13的数据摄取引擎26。核层252表示对如上所述的业务数据起作用的一个或多个业务数据加速器13集群。核层252可以处理所接收的数据并使用针对图10的系统200描述的专用广播信道将所接收的数据输出至数据仓库或感兴趣的客户端。
图12是示出了使用本文描述的技术提供高性能业务数据加速的示例性系统的框图。类似引用字符用于表示图1的类似元件。在图12的示例性系统300中,如在图1的示例性系统10中一样,一组业务数据加速器13A-13N(统称为“业务数据加速器13”)经组织以形成数据加速器的集群11。业务数据加速器操作用于不断从数据源12摄取大量数据业务并对其进行处理并将处理后的数据分发至数据源16。数据源12和数据消费者16可以是提供或消费数据的任何东西,诸如系统、应用程序或数据库。
在该实例中,数据消费者16响应于通过业务数据加速器13分发的数据。对来自数据消费者16的广播数据的响应表示数据源12的数据,该数据通过业务数据加速器13摄取,处理并用于将细化的、聚集的或另外处理的数据分发至数据消费者16。尽管业务数据加速器13的操作在图1的系统10和图12的系统300中基本上类似,但是系统300涉及实时(近实时)广播数据和广播数据响应的“反馈回路”并由此示出本发明的技术,如业务数据加速器13所实现的,可以适用于加速启用用户的查询结果以及其他交互应用程序的交互分发。
本发明中描述的技术至少部分可以在硬件、软件、固件或其任意组合中实现。例如,所描述技术的各个方面可以在包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或任意其他等效集成或分立逻辑电路以及这些组件的任意组合的一个或多个处理器内实现。术语“处理器”或“处理电路”单独或结合其他逻辑电路,或任意其他等效电路通常可以指任意前述逻辑电路。包括硬件的控制单元还可以执行本发明的一项或多项技术。
此硬件、软件和固件可以在相同设备内或可以在单独设备内实现以支持本发明中描述的各种操作和功能。另外,所描述的任意单元、模块或组件可以一起或单独实现为分立但可互操作的逻辑设备。以模块或单元的形式描述不同特征的目的是突出不同功能方面且不一定暗示这些模块或单元必须通过单独硬件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能可以通过单独硬件或软件组件来进行,或集成在共用或单独硬件或软件组件内。
本发明中描述的技术还可以在包含指令的计算机可读介质,诸如非瞬态计算机可读介质或计算机可读存储介质或设备中实施或编码。例如,在执行指令时,嵌入计算机可读介质中或在计算机可读介质中编码的指令可以使可编程处理器或其他处理器执行方法。计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读存储介质。应理解的是,术语“计算机可读存储介质”指的是物理存储介质,而不是信号或载波,但术语“计算机可读介质”除了物理存储介质之外还可以包括瞬态介质诸如信号。
在一个实例中,一种设备包括:具有多个执行核的多核硬件处理器;以及分别根据虚拟指令集操作的多个虚拟机,其中虚拟机的每一个在执行核中的不同执行核上执行。设备还包括内存中数据库,其包括存储在多个存储器分区内的数据,其中存储器分区的每一个与执行核中的不同执行核相关联。设备还包括多个任务,其在虚拟机上执行以将内存中数据库的传入业务分解为子业务,将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
在另一实例中,一种方法包括:执行分别根据虚拟指令集操作的多个虚拟机,其中虚拟机的每一个在计算设备的多核硬件处理器的多个执行核中的不同执行核上执行。方法还包括使执行核中的不同执行核与多个存储器分区相关联,其中存储器分区的每一个存储内存中数据库数据。方法还包括利用虚拟机执行多个任务,其中多个任务将内存中数据库的传入业务分解为子业务,将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
在另一实例中,一种计算机可读存储设备包括在执行时使具有多个执行核的多核硬件处理器执行根据虚拟指令集操作的多个虚拟机的指令,其中虚拟机的每一个在多个执行核中的不同执行核上执行,使执行核中的不同执行核与多个存储器分区相关联,其中,存储器分区的每一个存储内存中数据库数据,并利用虚拟机执行多个任务,其中多个任务将内存中数据库的传入业务分解为子业务,将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
在另一实例中,一种设备包括具有多个执行核的多核硬件处理器。设备还包括内存中数据库以及内容分发引擎,该内存中数据库包括存储在多个存储器分区中的数据,其中存储器分区的每一个与执行核中的不同执行核相关联,该内容分发引擎配置多个私人数据信道以分别将唯一数据分发至多个数据消费者中的相应数据消费者。设备还包括部署多个任务以在核上并行执行以响应于来自内容分发引擎的查询对内存中数据库并行执行业务的并行化引擎。
在另一实例中,一种方法包括利用内容分发引擎配置多个私人数据信道以分别将唯一数据分发至多个数据消费者中的相应数据消费者。方法还包括利用在具有多个执行核的多核硬件处理器上执行的并行化引擎部署多个任务以在核上并行执行以响应于来自内容分发引擎的查询对内存中数据库并行执行业务,其中内存中数据库包括存储在多个存储器分区中的数据,其中存储器分区的每一个与执行核中的不同执行核相关联。
在另一实例中,一种计算机可读存储设备包括在执行时使具有多个执行核的多核硬件处理器进行以下操作的指令:利用内容分发引擎配置多个私人数据信道以将唯一数据分别分发至多个数据消费者中的相应数据消费者,并利用并行化引擎部署多个任务以在核上并行执行以响应于来自内容分发引擎的查询对内存中数据库并行执行业务,其中内存中数据库包括存储在多个存储器分区中的数据,其中,存储器分区的每一个与执行核中的不同执行核相关联。
在另一实例中,一种设备包括:具有多个执行核的多核硬件处理器;以及包括存储在多个存储器分区内的数据的内存中数据库,其中,存储器分区的每一个分别与执行核中的不同执行核相关联。设备还包括建立与外部设备的多个并行网络连接以接收传入业务的数据摄取引擎。设备还包括并行化引擎,其将内存中数据库的传入业务分解为子业务,将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
在另一实例中,一种方法包括:利用数据摄取引擎建立与外部设备的多个并行网络连接,以及利用数据摄取引擎通过并行网络连接接收传入业务。方法还包括利用在具有多个执行核的多核硬件处理器上执行的并行化引擎将内存中数据库的传入业务分解为子业务,其中内存中数据库包括存储在多个存储器分区中的数据,其中存储器分区的每一个与执行核中的不同执行核相关联。方法还包括利用并行化引擎将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
在另一实例中,一种计算机可读存储设备包括在执行时使具有多个执行核的多核硬件处理器利用数据摄取引擎建立与外部设备的多个并行网络连接,以及利用数据摄取引擎通过并行网络连接接收传入业务。在执行时指令还使多核硬件处理器利用并行化引擎将内存中数据库的传入业务分解为子业务,其中内存中数据库包括存储在多个存储器分区中的数据,其中存储器分区的每一个与执行核中的不同执行核相关联,利用并行化引擎将子业务部署到与存储子业务数据的各存储器分区相关联的执行核,并在部署有子业务的各执行核上并行执行传入业务的子业务。
已经对本发明的各个实施例进行了描述。这些和其他实施例在所附权利要求的范围内。
Claims (70)
1.一种设备,包括:
具有多个执行核的多核硬件处理器;
分别根据虚拟指令集进行操作的多个虚拟机,其中,所述虚拟机的每一个分别在一个不同的执行核上执行;
内存中数据库,包括存储在多个存储器分区中的数据,其中,所述存储器分区的每一个分别与执行核中的不同执行核相关联;
多个任务,在所述虚拟机上执行以将所述内存中数据库的传入业务分解为子业务,将所述子业务部署到与存储所述子业务的数据的各个存储器分区相关联的执行核,并在被部署所述子业务的各执行核上并行执行所述传入业务的所述子业务。
2.根据权利要求1所述的设备,进一步包括:
语句执行任务,在所述虚拟机之一上执行以将分配算法应用到所述子业务以识别与存储所述子业务的数据的分区相关联的各执行核,
其中,所述语句执行任务针对所述子业务中的每一个派生并部署子执行任务以在所述执行核的用于子业务的经识别的执行核上执行所述子业务,其中,相应子业务的子执行任务在虚拟机上并行执行。
3.根据权利要求2所述的设备,
其中,所述语句执行任务将所述分配算法应用到由所述传入业务引用的多个数据,
其中,所述分配算法识别用于由所述传入业务引用的所述多个数据中的每一个的不同执行核,
其中,所述子业务的每一个是由所述传入业务引用的多个数据中的相应数据的业务,并且
其中,所述语句执行任务向所识别的用于所述多个数据的每一个的执行核之一派生子执行任务以执行相应子业务。
4.根据权利要求2所述的设备,进一步包括:
描述所述内存中数据库的数据库对象的模式;
包括分别指定可由所述多个核执行的指令的一个或多个步进程序的步进程序库;以及
描述符合所述传入业务的语言的业务语法,其中,所述业务语法包括引用所述步进程序库的步进程序的一个或多个替代法则,
其中,所述语句执行任务将所述业务语法和所述模式应用到所述传入业务以生成分别包括所述步进程序库的步进程序的子业务。
5.根据权利要求1所述的设备,
其中,所述虚拟机异步执行所述多个任务,所述设备进一步包括:
心跳任务,根据定义的周期在所述虚拟机的每一个上执行,在执行所述心跳任务时使相应虚拟机等待执行任何额外任务直至所述相应虚拟机接收到信号为止。
6.根据权利要求3所述的设备,
其中,所述心跳任务包括指定钩状任务的任务钩子,
其中,所述虚拟机中的一个虚拟机执行所述钩状任务,并且
其中,所述虚拟机中的所述一个虚拟机在完成所述钩状任务之后将所述信号发送至其他虚拟机。
7.根据权利要求4所述的设备,其中,所述钩状任务包括在执行时生成并存储所述内存中数据库的检查点的检查点任务。
8.根据权利要求1所述的设备,
其中,所述虚拟机的每一个均包括用于所述相应执行核的调度器,并且
其中,所述调度器的每一个均保持存储被调度为由所述多个执行核中的相应执行核执行的任务的引用的单独运行列表数据结构。
9.根据权利要求8所述的设备,
其中,所述虚拟机中的每一个均包括存储分别通过虚拟机中的一个不同虚拟机的调度器被迁移至所述虚拟机的任务的引用的交叉队列数据结构。
10.根据权利要求9所述的设备,
其中,所述虚拟机的第一虚拟机的调度器将第一任务的引用排队到所述虚拟机中的第二虚拟机的所述交叉队列数据结构,而所述第二虚拟机同时执行在由所述第二虚拟机的所述调度器保持的所述运行列表中引用的第二任务。
11.根据权利要求1所述的设备,
其中,所述虚拟机的每一个均定义存储由待机任务的剩余待机时间排序的待机任务的引用的待机列表数据结构,
其中,所述多个执行核中的每一个均包括计时器,
其中,在所述虚拟机的每一个上执行的报警任务至少基于所述虚拟机的所述待机列表数据结构的所述待机任务的最小剩余待机时间来设置所述相应执行核的计时器的到点时间,以及
其中,所述计时器到点使得所述报警任务唤醒所述待机列表的下一待机任务。
12.根据权利要求1所述的设备,其中,所述传入业务选自由插入到所述内存中数据库中、从所述内存中数据库删除、以及更新所述内存中数据库组成的组。
13.根据权利要求1所述的设备,进一步包括:
分别包括所述多个执行核的不同非重叠子集的多个集群机。
14.根据权利要求1所述的设备,其中,所述设备包括定位在至少一个数据源与至少一个数据消费者之间的数据库加速引擎。
15.根据权利要求1所述的设备,
其中,所述传入业务包括从所述内存中数据库删除行的删除业务,所述设备进一步包括:
多个垃圾收集器任务,识别所述内存中数据库的多个数据结构中的行的引用并且并行执行以移除所述多个数据结构中的行的引用。
16.根据权利要求1所述的设备,进一步包括:
内容分发引擎,配置多个私有数据信道以分别将唯一数据分发至多个数据消费者中的相应数据消费者;以及
并行化引擎,部署所述多个任务从而响应于来自所述内容分发引擎的查询以在核上并行执行从而对所述内存中数据库并行执行业务。
17.根据权利要求16所述的设备,进一步包括:
语句执行任务,在所述虚拟机之一上执行以将分配算法应用到所述子业务从而识别与存储所述子业务的数据的所述各存储器分区相关联的各执行核,其中,所述语句执行任务针对所述子业务的每一个派生并部署子执行任务以在所述执行核的用于子业务的经识别的执行核上执行所述子业务。
18.根据权利要求16所述的设备,
其中,所述虚拟机的每一个均包括相应执行核的调度器,并且
其中,所述调度器的每一个保持存储被调度为由所述多个执行核中的所述相应执行核执行的任务的引用的单独运行列表数据结构。
19.根据权利要求16所述的设备,
其中,所述内容分发引擎提供允许数据消费者指定连续查询的应用程序编程接口(API),所述连续查询指示所述内容分发引擎连续将所述连续查询应用到由所述设备新接收的数据。
20.根据权利要求16所述的设备,
其中,所述内容分发引擎接收所述连续查询,所述连续查询指示所述内容分发引擎连续将所述连续查询应用到由所述设备新接收的数据。
21.根据权利要求20所述的设备,其中,所述连续查询指定未来令牌。
22.根据权利要求21所述的设备,
其中,所述内容分发引擎接收请求第一数据的第一业务和请求第二数据的第二业务,并且
其中,所述内容分发引擎计算请求所述第一数据和所述第二数据的聚集业务并将所述聚集业务输出至另一设备。
23.根据权利要求21所述的设备,
其中,所述内容分发引擎接收请求所述第一数据和所述第二数据的聚集业务并指示所述并行化引擎执行所述聚集业务以聚集所述第一数据和所述第二数据,并且
其中,所述内容分发引擎响应于所述聚集业务输出由所述并行化引擎聚集的所述第一数据和所述第二数据。
24.根据权利要求23所述的设备,
其中,所述多个任务将所述聚集业务分解为多个子业务,以并行执行所述子业务从而从所述内存中数据库中检索所述第一数据和所述第二数据,并将所述第一数据和所述第二数据返回到所述内容分发引擎。
25.根据权利要求1所述的设备,进一步包括:
建立与外部设备的多个并行网络连接以接收所述传入业务的数据摄取引擎;以及
执行所述多个任务的并行化引擎。
26.根据权利要求25所述的设备,进一步包括:
语句执行任务,在所述虚拟机之一上执行以将分配算法应用到所述子业务从而识别与存储所述子业务的数据的各存储器分区相关联的执行核,
其中,所述语句执行任务针对所述子业务的每一个,派生并部署所述子执行任务以在所述执行核的用于所述子业务的经识别的执行核上执行所述子业务。
27.根据权利要求26所述的设备,
其中,所述虚拟机的每一个均包括用于所述相应执行核的调度器,并且
其中,所述调度器的每一个均保持存储被调度为以由多个执行核中的相应执行核执行的任务的引用的单独运行列表数据结构。
28.根据权利要求26所述的设备,
其中,所述虚拟机的每一个均包括存储通过所述虚拟机中的不同虚拟机的调度器被迁移至所述虚拟机的任务的引用的交叉队列数据结构。
29.根据权利要求25所述的设备,
其中,所述传入业务包括第一业务和第二业务,
其中,所述并行化引擎包括并行执行的第一编译器任务和第二编译器任务以分别将所述第一业务分解为第一组子业务并将所述第二业务分解为第二组子业务,以及
其中,所述第一编译器任务和所述第二编译器任务并行执行。
30.根据权利要求29所述的设备,进一步包括:
派生用于所述第一组子业务的每一个的子执行任务的第一语句执行任务;以及
派生用于所述第二组子业务的每一个的子执行任务的第二语句执行任务,
其中,所述第一组子业务的每一个的子执行任务和所述第二组子业务的每一个的子执行任务在所述执行核中的不同执行核上并行执行。
31.根据权利要求30所述的设备,
其中,所述传入业务中的第一传入业务和所述传入业务中的第二传入业务分别包括第一数据和第二数据用于插入到所述内存中数据库,
其中,所述第一语句执行任务将分配算法应用到所述第一数据以识别所述执行核中的第一执行核从而执行所述第一组子业务中的一个,
其中,所述第二语句执行任务将分配算法应用到所述第二数据以识别所述执行核中的第二执行核从而执行所述第二组子业务中的一个,并且
其中,所述第一组子业务中的一个和所述第二组子业务中的一个分别在所述执行核中的所述第一执行核和所述执行核中的所述第二执行核上并行执行。
32.根据权利要求25所述的设备,进一步包括:
内容分发引擎,指示所述并行化引擎执行聚集业务以聚集在所述传入业务中接收的各数据,
其中,所述内容分发引擎输出由所述并行化引擎聚集的数据。
33.根据权利要求32所述的设备,其中,所述并行化引擎将所述聚集业务分解为聚集子业务,所述设备进一步包括:
所述语句执行任务在所述虚拟机中的一个上执行以将分配算法应用到所述聚集子业务从而识别与存储用于所述聚集子业务的各数据的各存储器分区相关联的执行核,
其中,所述语句执行任务针对所述聚集子业务的每一个,派生并部署子执行任务以在用于所述聚集子业务的所述执行核中所识别执行核上执行所述聚集子业务,
其中,所述聚集子业务的每一个的子执行任务并行执行以检索所述聚集子业务的各数据,并且
其中,所述语句执行任务接收并聚集所述各数据并将聚集的所述数据发送至所述内容分发引擎。
34.一种方法,包括:
执行分别根据虚拟指令集进行操作的多个虚拟机,其中,所述虚拟机中的每一个在计算设备的多核硬件处理器的多个执行核中的一个不同执行核上执行;
使所述执行核中的不同执行核与多个存储器分区的每一个相关联,其中,所述存储器分区的每一个均存储所述内存中数据库的数据;以及
利用所述虚拟机执行多个任务,其中,所述多个任务将所述内存中数据库的传入业务分解为子业务,将所述子业务部署到与存储用于所述子业务的数据的各存储器分区相关联的执行核,并在部署有所述子业务的各执行核上并行执行所述传入业务的所述子业务。
35.根据权利要求34所述的方法,进一步包括:
利用所述虚拟机中的一个上的语句执行任务,将分配算法应用到所述子业务以识别与存储所述子业务的数据的分区相关联的所述各执行核,
其中,所述语句执行任务针对所述子业务的每一个派生并部署子执行任务以在所述执行核的用于子业务的经识别的执行核上执行所述子业务,其中,相应子业务的子执行任务并行在所述虚拟机上执行。
36.根据权利要求35所述的方法,
其中,所述语句执行任务将所述分配算法应用到由所述传入业务引用的多个数据,
其中,所述分配算法针对由所述传入业务引用的所述多个数据的每一个识别所述执行核中的一个不同执行核,
其中,所述子业务的每一个均包括由所述传入业务引用的所述多个数据中的相应数据的业务,并且
其中,所述语句执行任务向用于所述多个数据的每一个的所述执行核的经识别的执行核派生子执行任务以执行相应子业务。
37.根据权利要求35所述的方法,
其中,所述语句执行任务将业务语法和模式应用到所述传入业务以生成均包括步进程序库的步进程序的子业务,
其中,所述模式描述所述内存中数据库的数据库对象,
其中,所述步进程序库包括分别指定可由所述多个核执行的指令的一个或多个步进程序,并且
其中,所述业务语法描述符合所述传入业务的语言并包括引用所述步进程序库的步进程序的一个或多个替代法则。
38.根据权利要求34所述的方法,其中,所述虚拟机异步执行所述多个任务,所述方法进一步包括:
根据定义周期在所述虚拟机的每一个上执行心跳任务以在执行所述心跳任务时使相应虚拟机等待执行任何额外任务直至所述虚拟机接收到信号为止。
39.根据权利要求38所述的方法,
其中,所述心跳任务包括指定钩状任务的任务钩子,
其中,所述虚拟机中的一个执行所述钩状任务,并且
其中在,所述虚拟机中的所述一个完成所述钩状任务之后将所述信号发送至其他虚拟机。
40.根据权利要求39所述的方法,其中,所述钩状任务包括在执行时生成并存储所述内存中数据库的检查点的检查点任务。
41.根据权利要求34所述的方法,
其中,所述虚拟机中的每一个均包括用于相应执行核的调度器,并且
其中,所述调度器的每一个均保持存储被调度为由所述多个执行核中的所述相应执行核执行的任务的引用的单独运行列表数据结构。
42.根据权利要求41所述的方法,
其中,所述虚拟机中的每一个均包括存储通过虚拟机中的一个不同虚拟机的调度器被迁移至所述虚拟机的任务的引用的交叉队列数据结构。
43.根据权利要求42所述的方法,
其中,所述虚拟机的第一虚拟机的调度器将第一任务的引用排队到所述虚拟机中的第二虚拟机的所述交叉队列数据结构,而所述第二虚拟机同时执行在由所述第二虚拟机的所述调度器保持的运行列表中引用的第二任务。
44.根据权利要求34所述的方法,
其中,所述虚拟机的每一个均定义存储由待机任务的剩余待机时间排序的待机任务的引用的待机列表数据结构,并且
其中,所述多个执行核中的每一个均包括计时器,所述方法进一步包括:
在所述虚拟机的每一个上执行报警任务以至少基于所述虚拟机的所述待机列表数据结构的待机任务的最小剩余待机时间来设置相应执行核的所述计时器的到点时间,以及
其中,所述计时器到点使得所述报警任务唤醒待机列表的下一待机任务。
45.根据权利要求34所述的方法,其中,所述传入业务包括插入到所述内存中数据库、从所述内存中数据库删除、以及更新所述内存中数据库中的一个。
46.根据权利要求34所述的方法,其中,所述计算设备的数据库加速引擎被定位在至少一个数据源与至少一个数据消费者之间。
47.根据权利要求34所述的方法,
其中,所述传入业务包括删除业务以从所述内存中数据库中删除行,所述方法进一步包括:
执行多个垃圾收集器任务以识别所述内存中数据库的多个数据结构中的行的引用以及并行移除所述多个数据结构中的行的引用。
48.根据权利要求34所述的方法,进一步包括:
利用内容分发引擎配置多个私人数据信道以分别将唯一数据分发至多个数据消费者中的相应数据消费者。
49.根据权利要求48所述的方法,进一步包括:
利用在虚拟机中的一个上执行的语句执行任务将分配算法应用到所述子业务以识别与存储所述子业务的数据的各存储器分区相关联的各执行核,其中,所述语句执行任务针对所述子业务的每一个派生并部署子执行任务以在所述子业务的执行核中所识别的一个执行核上执行所述子业务。
50.根据权利要求48所述的方法,
其中,所述虚拟机的每一个均包括相应执行核的调度器,并且
其中,所述调度器的每一个均保持存储被调度为由所述多个执行核中的相应执行核执行的任务的引用的单独运行列表数据结构。
51.根据权利要求48所述的方法,
其中,所述内容分发引擎提供允许数据消费者指定连续查询的应用程序编程接口(API),所述连续查询指示所述内容分发引擎连续将所述连续查询应用到由所述设备新接收的数据。
52.根据权利要求48所述的方法,进一步包括:
利用内容分发引擎接收连续查询,所述连续查询指示内容分发引擎连续将连续查询应用到由设备新接收的数据。
53.根据权利要求52所述的方法,其中,所述连续查询指定未来令牌。
54.根据权利要求53所述的方法,进一步包括:
利用所述内容分发引擎接收请求第一数据的第一业务和请求第二数据的第二业务;
利用所述内容分发引擎计算请求所述第一数据和所述第二数据的聚集业务;以及
将所述聚集业务输出至另一设备。
55.根据权利要求53所述的方法,
利用所述内容分发引擎接收请求第一数据和第二数据的聚集业务;
指示并行化引擎执行聚集业务以聚集所述第一数据和所述第二数据;以及
利用所述内容分发引擎响应于所述聚集业务输出由所述并行化引擎聚集的所述第一数据和所述第二数据。
56.根据权利要求55所述的方法,
其中,所述多个任务将所述聚集业务分解为多个子业务、并行执行所述子业务以从所述内存中数据库中检索所述第一数据和所述第二数据,并将所述第一数据和所述第二数据返回到所述内容分发引擎。
57.根据权利要求34所述的方法,进一步包括:
利用数据摄取引擎建立与外部设备的多个并行网络连接;
利用所述数据摄取引擎通过所述并行网络连接接收传入业务;以及
利用并行化引擎在所述多核硬件处理器上执行所述多个任务而将所述内存中数据库的所述传入业务分解为子业务。
58.根据权利要求57所述的方法,进一步包括:
利用所述虚拟机中的一个上的语句执行任务将分配算法应用到所述子业务以识别与存储所述子业务的数据的各存储器分区相关联的执行核,
其中,所述语句执行任务针对所述子业务中的每一个派生并部署子执行任务以在所述子业务的执行核中所识别的一个执行核上执行所述子业务。
59.根据权利要求58所述的方法,
其中,所述虚拟机的每一个均包括相应执行核的调度器,并且
其中,所述调度器的每一个均保持存储被调度为由多个执行核中的相应执行核执行的任务的引用的单独运行列表数据结构。
60.根据权利要求59所述的方法,
其中,所述虚拟机的每一个均包括存储通过所述虚拟机中的一个不同虚拟机的调度器被迁移至所述虚拟机的任务的引用的交叉队列数据结构。
61.根据权利要求57所述的方法,其中,所述传入业务包括第一业务和第二业务,所述方法进一步包括:
与将所述第一业务分解为第一组子业务并将所述第二业务分解为第二组子业务平行地,并行执行所述并行化引擎的第一编译器任务和第二编译器任务。
62.根据权利要求61所述的方法,进一步包括:
利用第一语句执行任务派生所述第一组子业务的每一个的子执行任务;以及
利用第二语句执行任务派生所述第二组子业务的每一个的子执行任务,
其中,所述第一组子业务的每一个的所述子执行任务和所述第二组子业务的每一个的所述子执行任务在所述执行核中的不同执行核上并行地执行。
63.根据权利要求62所述的方法,
其中,所述传入业务中的第一传入业务和所述传入业务中的第二传入业务分别包括第一数据和第二数据用于插入到所述内存中数据库,
其中,所述第一语句执行任务将分配算法应用到所述第一数据以识别所述执行核中的第一执行核以执行所述第一组子业务中的一个,
其中,所述第二语句执行任务将分配算法应用到所述第二数据以识别所述执行核中的第二执行核以执行所述第二组子业务中的一个,并且
其中,所述第一组子业务中的一个和所述第二组子业务中的一个分别在所述执行核中的所述第一执行核和所述执行核中的所述第二执行核上并行执行。
64.根据权利要求57所述的方法,进一步包括:
利用内容分发引擎指示所述并行化引擎执行聚集业务以聚集在所述传入业务中接收的各数据;
利用所述内容分发引擎输出由所述并行化引擎聚集的数据。
65.根据权利要求64所述的方法,其中,所述并行化引擎将所述聚集业务分解为聚集子业务,所述方法进一步包括:
在所述虚拟机中的一个上执行语句执行任务以将分配算法应用到所述聚集子业务以识别与存储所述聚集子业务的各数据的各存储器分区相关联的执行核,
其中,所述语句执行任务针对所述聚集子业务的每一个派生并部署子执行任务以在所述聚集子业务的执行核中所识别的一个执行核上执行所述聚集子业务,
其中,所述聚集子业务的每一个的子执行任务并行执行以检索所述聚集子业务的各数据,以及
其中,所述语句执行任务接收并聚集各数据并将所述聚集数据发送至所述内容分发引擎。
66.一种计算机可读存储设备,包括在执行时使具有多个执行核的多核硬件处理器进行以下项的指令:
执行根据虚拟指令集操作的多个虚拟机,其中,所述虚拟机的每一个在所述多个执行核中的一个不同执行核上执行;
使所述执行核中的不同执行核与多个存储器分区的每一个相关联,其中,所述存储器分区的每一个均存储用于内存中数据库的数据;以及
利用所述虚拟机执行多个任务,其中,所述多个任务将用于所述内存中数据库的传入业务分解为子业务,将所述子业务部署到与存储所述子业务的数据的各存储器分区相关联的执行核,并在部署有所述子业务的各执行核上并行执行所述传入业务的所述子业务。
67.根据权利要求66所述的计算机可读存储设备,其中,所述指令在执行时进一步使所述多核硬件处理器进行以下项:
利用内容分发引擎配置多个私人数据信道以分别将唯一数据分发至多个数据消费者中的相应数据消费者;以及
利用并行化引擎部署多个任务以在核上并行执行从而响应于来自所述内容分发引擎的查询对所述内存中数据库并行执行业务。
68.根据权利要求67所述的计算机可读存储设备,其中,所述指令在执行时进一步使所述多核硬件处理器进行以下项:
在虚拟机中的一个上执行语句执行任务以将分配算法应用到子业务以识别与存储所述子业务的数据的各存储器分区相关联的各执行核,其中,所述语句执行任务针对所述子业务的每一个派生并部署子执行任务以在所述子业务的执行核中所识别的执行核上执行所述子业务。
69.根据权利要求66所述的计算机可读存储设备,其中,所述指令在执行时进一步使所述多核硬件处理器进行以下项:
利用数据摄取引擎建立与外部设备的多个并行网络连接;
利用所述数据摄取引擎通过所述并行网络连接接收传入业务;
利用并行化引擎执行多个任务将内存中数据库的传入业务分解为子业务,其中,所述内存中数据库包括存储在多个存储器分区中的数据,其中,所述存储器分区的每一个分别与所述执行核中的不同执行核相关联;
利用所述并行化引擎将所述子业务部署到与存储所述子业务的数据的各存储器分区相关联的执行核;以及
在部署有所述子业务的各执行核上并行执行所述传入业务的所述子业务。
70.根据权利要求69所述的计算机可读存储设备,其中,所述指令在执行时进一步使所述多核硬件处理器进行以下项:
利用所述虚拟机中的一个上的语句执行任务,将分配算法应用到所述子业务以识别与存储所述子业务的数据的各存储器分区相关联的各执行核,
其中,所述语句执行任务针对所述子业务的每一个派生并部署子执行任务以在所述子业务的执行核中所识别的执行核上执行所述子业务。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161497860P | 2011-06-16 | 2011-06-16 | |
US61/497,860 | 2011-06-16 | ||
US13/524,959 | 2012-06-15 | ||
PCT/US2012/042807 WO2012174471A1 (en) | 2011-06-16 | 2012-06-15 | Software virtual machine for acceleration of transactional data processing |
US13/524,881 US9027022B2 (en) | 2011-06-16 | 2012-06-15 | Software virtual machine for acceleration of transactional data processing |
US13/524,959 US8645958B2 (en) | 2011-06-16 | 2012-06-15 | Software virtual machine for content delivery |
US13/524,881 | 2012-06-15 | ||
US13/525,036 US8381224B2 (en) | 2011-06-16 | 2012-06-15 | Software virtual machine for data ingestion |
US13/525,036 | 2012-06-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103930875A true CN103930875A (zh) | 2014-07-16 |
CN103930875B CN103930875B (zh) | 2017-05-03 |
Family
ID=47354821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280039092.3A Active CN103930875B (zh) | 2011-06-16 | 2012-06-15 | 用于加速业务数据处理的软件虚拟机 |
Country Status (6)
Country | Link |
---|---|
US (3) | US9027022B2 (zh) |
EP (1) | EP2721489B1 (zh) |
CN (1) | CN103930875B (zh) |
AU (1) | AU2012271352B2 (zh) |
ES (1) | ES2555275T3 (zh) |
WO (1) | WO2012174471A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391597A (zh) * | 2015-11-06 | 2016-03-09 | 国网浙江省电力公司电力科学研究院 | 基于多服务器仿真的雪崩测试的方法、装置及系统 |
CN105491021A (zh) * | 2015-11-24 | 2016-04-13 | 华东师范大学 | 一种Android云应用服务器及Android云应用服务器系统 |
CN106406748A (zh) * | 2015-07-30 | 2017-02-15 | 伊姆西公司 | 存储器中心数据库架构 |
CN106528188A (zh) * | 2015-09-09 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种应用加速方法及装置 |
CN107111532A (zh) * | 2014-10-20 | 2017-08-29 | 起元科技有限公司 | 计算不确定性情况下的恢复和容错 |
WO2018103565A1 (en) * | 2016-12-09 | 2018-06-14 | Zhejiang Dahua Technology Co., Ltd. | Methods and systems for data transmission |
CN109739482A (zh) * | 2018-12-28 | 2019-05-10 | 杭州东信北邮信息技术有限公司 | 一种基于动态语言的业务逻辑执行系统及方法 |
CN111736950A (zh) * | 2020-06-12 | 2020-10-02 | 广东浪潮大数据研究有限公司 | 一种虚拟机的加速器资源添加方法及相关装置 |
CN112115134A (zh) * | 2020-08-04 | 2020-12-22 | 北京金山云网络技术有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN113268269A (zh) * | 2021-06-07 | 2021-08-17 | 中科计算技术西部研究院 | 一种针对动态规划算法的加速方法、系统及装置 |
CN114124849A (zh) * | 2021-12-03 | 2022-03-01 | 北京天融信网络安全技术有限公司 | 一种基于vhost-user的服务链实现方法及装置 |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL2586137T3 (pl) | 2010-06-23 | 2017-09-29 | Telefonaktiebolaget Lm Ericsson (Publ) | Zarządzanie interferencjami sygnałów referencyjnych w sieciach heterogenicznych |
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US8862613B2 (en) * | 2010-07-30 | 2014-10-14 | Sap Ag | Extensibility of business process and application logic |
US8682925B1 (en) * | 2013-01-31 | 2014-03-25 | Splunk Inc. | Distributed high performance analytics store |
US20150019537A1 (en) | 2012-09-07 | 2015-01-15 | Splunk Inc. | Generating Reports from Unstructured Data |
US8788525B2 (en) | 2012-09-07 | 2014-07-22 | Splunk Inc. | Data model for machine data for semantic search |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9092747B2 (en) * | 2012-09-27 | 2015-07-28 | International Business Machines Corporation | Statement of work analysis and resource participation assessment |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9081597B2 (en) * | 2012-11-27 | 2015-07-14 | Red Hat Israel, Ltd. | Database change compensation after a transaction commit |
FR3001816B1 (fr) * | 2013-02-05 | 2015-03-06 | Thales Sa | Systeme de processeur multi-utilisateurs de traitement d'informations |
US9135126B2 (en) * | 2013-02-07 | 2015-09-15 | International Business Machines Corporation | Multi-core re-initialization failure control system |
US20140258212A1 (en) * | 2013-03-06 | 2014-09-11 | Sap Ag | Dynamic in-memory database search |
US20140280220A1 (en) * | 2013-03-13 | 2014-09-18 | Sas Institute Inc. | Scored storage determination |
US9626231B2 (en) | 2013-05-13 | 2017-04-18 | Sap Se | Database dispatcher |
US9116953B2 (en) | 2013-05-17 | 2015-08-25 | Sap Se | Calculation engine with dynamic partitioning of intermediate results |
US9519795B2 (en) * | 2013-05-28 | 2016-12-13 | Unisys Corporation | Interconnect partition binding API, allocation and management of application-specific partitions |
US9063710B2 (en) * | 2013-06-21 | 2015-06-23 | Sap Se | Parallel programming of in memory database utilizing extensible skeletons |
DE102013108579A1 (de) * | 2013-08-08 | 2015-02-12 | Fujitsu Technology Solutions Intellectual Property Gmbh | Hauptspeicherdatenbanksystem und Verfahren zum Ausführen von Abfragen unter Verwendung von unabhängigen Prozessräumen |
US10027605B2 (en) | 2013-08-26 | 2018-07-17 | Vmware, Inc. | Traffic and load aware dynamic queue management |
US20150121374A1 (en) * | 2013-10-30 | 2015-04-30 | Alistair Black | Application Processing Systems and Methods |
US9495204B2 (en) | 2014-01-06 | 2016-11-15 | International Business Machines Corporation | Constructing a logical tree topology in a parallel computer |
US10310903B2 (en) * | 2014-01-17 | 2019-06-04 | Red Hat, Inc. | Resilient scheduling of broker jobs for asynchronous tasks in a multi-tenant platform-as-a-service (PaaS) system |
US9665633B2 (en) | 2014-02-19 | 2017-05-30 | Snowflake Computing, Inc. | Data management systems and methods |
EP2916511B1 (en) * | 2014-03-07 | 2020-02-12 | Airbus Opérations SAS | High assurance security gateway interconnecting different domains |
US9720837B2 (en) | 2014-06-27 | 2017-08-01 | International Business Machines Corporation | Allowing non-cacheable loads within a transaction |
US10025715B2 (en) | 2014-06-27 | 2018-07-17 | International Business Machines Corporation | Conditional inclusion of data in a transactional memory read set |
US9658961B2 (en) | 2014-06-27 | 2017-05-23 | International Business Machines Corporation | Speculation control for improving transaction success rate, and instruction therefor |
US10073784B2 (en) | 2014-06-27 | 2018-09-11 | International Business Machines Corporation | Memory performance when speculation control is enabled, and instruction therefor |
US9772944B2 (en) | 2014-06-27 | 2017-09-26 | International Business Machines Corporation | Transactional execution in a multi-processor environment that monitors memory conflicts in a shared cache |
US10114752B2 (en) | 2014-06-27 | 2018-10-30 | International Business Machines Corporation | Detecting cache conflicts by utilizing logical address comparisons in a transactional memory |
US9703718B2 (en) | 2014-06-27 | 2017-07-11 | International Business Machines Corporation | Managing read tags in a transactional memory |
US9477481B2 (en) | 2014-06-27 | 2016-10-25 | International Business Machines Corporation | Accurate tracking of transactional read and write sets with speculation |
US9740614B2 (en) | 2014-06-27 | 2017-08-22 | International Business Machines Corporation | Processor directly storing address range of co-processor memory accesses in a transactional memory where co-processor supplements functions of the processor |
US10013351B2 (en) | 2014-06-27 | 2018-07-03 | International Business Machines Corporation | Transactional execution processor having a co-processor accelerator, both sharing a higher level cache |
US10331649B2 (en) * | 2014-06-29 | 2019-06-25 | Microsoft Technology Licensing, Llc | Transactional access to records on secondary storage in an in-memory database |
US9710271B2 (en) | 2014-06-30 | 2017-07-18 | International Business Machines Corporation | Collecting transactional execution characteristics during transactional execution |
US9348643B2 (en) | 2014-06-30 | 2016-05-24 | International Business Machines Corporation | Prefetching of discontiguous storage locations as part of transactional execution |
US9336047B2 (en) | 2014-06-30 | 2016-05-10 | International Business Machines Corporation | Prefetching of discontiguous storage locations in anticipation of transactional execution |
US9600286B2 (en) | 2014-06-30 | 2017-03-21 | International Business Machines Corporation | Latent modification instruction for transactional execution |
US9448939B2 (en) | 2014-06-30 | 2016-09-20 | International Business Machines Corporation | Collecting memory operand access characteristics during transactional execution |
US10108445B2 (en) | 2014-09-22 | 2018-10-23 | The Boeing Company | Parallelization in virtual machine operation |
US10701151B2 (en) * | 2014-10-27 | 2020-06-30 | Netapp, Inc. | Methods and systems for accessing virtual storage servers in a clustered environment |
US10803030B2 (en) * | 2014-11-14 | 2020-10-13 | Sap Se | Asynchronous SQL execution tool for zero downtime and migration to HANA |
CN104506447A (zh) * | 2015-01-13 | 2015-04-08 | 武汉大学 | 一种适合深度并行数据处理的无线Mesh网路由节点装置 |
US9619153B2 (en) | 2015-03-17 | 2017-04-11 | International Business Machines Corporation | Increase memory scalability using table-specific memory cleanup |
US9893947B2 (en) | 2015-06-26 | 2018-02-13 | International Business Machines Corporation | Transactional orchestration of resource management and system topology in a cloud environment |
US9880823B1 (en) | 2016-09-14 | 2018-01-30 | International Business Machines Corporation | Method for translating multi modal execution dependency graph with data interdependencies to efficient application on homogenous big data processing platform |
US10318348B2 (en) * | 2016-09-23 | 2019-06-11 | Imagination Technologies Limited | Task scheduling in a GPU |
GB2554392B (en) | 2016-09-23 | 2019-10-30 | Imagination Tech Ltd | Task scheduling in a GPU |
CN108287854B (zh) * | 2017-01-10 | 2021-06-22 | 网宿科技股份有限公司 | 一种流计算中数据持久化的方法和系统 |
US10268524B2 (en) * | 2017-01-31 | 2019-04-23 | Moj.Io Inc. | Processing telemetry data streams based on an operating state of the data source |
US11513828B1 (en) * | 2017-04-03 | 2022-11-29 | Parallels International Gmbh | System and method for rapid cloning of virtual machines under load balancing |
US10296425B2 (en) | 2017-04-20 | 2019-05-21 | Bank Of America Corporation | Optimizing data processing across server clusters and data centers using checkpoint-based data replication |
US10445295B1 (en) * | 2017-07-28 | 2019-10-15 | EMC IP Holding Company LLC | Task-based framework for synchronization of event handling between nodes in an active/active data storage system |
CN107566460B (zh) * | 2017-08-16 | 2020-06-05 | 微梦创科网络科技(中国)有限公司 | 分布式部署计划任务的方法和系统 |
US11080303B2 (en) | 2017-09-08 | 2021-08-03 | Bank Of America Corporation | System and method of multiprotocol publisher and subscriber services |
US10599453B1 (en) * | 2017-09-25 | 2020-03-24 | Amazon Technologies, Inc. | Dynamic content generation with on-demand code execution |
US10666708B1 (en) * | 2018-02-21 | 2020-05-26 | Facebook, Inc. | Systems and methods for updating web pages using static resource version pinning |
US11609934B2 (en) * | 2018-04-24 | 2023-03-21 | Sap Se | Notification framework for document store |
CN109445847B (zh) * | 2018-07-09 | 2021-09-17 | 北京东土科技股份有限公司 | 工业服务器微内核架构实现方法 |
US10872004B2 (en) * | 2018-11-15 | 2020-12-22 | Intel Corporation | Workload scheduling and coherency through data assignments |
US11308119B2 (en) * | 2018-12-03 | 2022-04-19 | International Business Machines Corporation | Replicating large statements with low latency |
CN111324427B (zh) * | 2018-12-14 | 2023-07-28 | 深圳云天励飞技术有限公司 | 一种基于dsp的任务调度方法及装置 |
US11204829B2 (en) * | 2019-03-26 | 2021-12-21 | Innogrit Technologies Co., Ltd. | Systems and methods for an ECC architecture with prioritized task queues |
US11061856B2 (en) | 2019-07-03 | 2021-07-13 | Bank Of America Corporation | Data ingestion system |
US11501295B2 (en) * | 2019-07-24 | 2022-11-15 | Advanced New Technologies Co., Ltd. | Object distribution processing |
US11176158B2 (en) | 2019-07-31 | 2021-11-16 | International Business Machines Corporation | Intelligent use of extraction techniques |
US11221973B2 (en) * | 2019-12-20 | 2022-01-11 | Micron Technology, Inc. | Parallel iterator for machine learning frameworks |
US11520796B2 (en) * | 2020-04-14 | 2022-12-06 | Google Llc | Managing real time data stream processing |
US11469956B2 (en) | 2020-07-22 | 2022-10-11 | Cisco Technology, Inc. | Server-management microservice storehouse for baseboard management controllers |
US11321250B2 (en) * | 2020-07-28 | 2022-05-03 | Dell Products L.P. | Input/output device selection system |
US11438224B1 (en) | 2022-01-14 | 2022-09-06 | Bank Of America Corporation | Systems and methods for synchronizing configurations across multiple computing clusters |
US20230350911A1 (en) * | 2022-04-28 | 2023-11-02 | Snowflake Inc. | Task configuration using a dynamic data processing statement |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222229A (en) * | 1989-03-13 | 1993-06-22 | International Business Machines | Multiprocessor system having synchronization control mechanism |
US6353845B1 (en) * | 1998-06-25 | 2002-03-05 | International Business Machines Corporation | Computer system, program product and method for tracking asynchronous I/O with timeout support |
US20050273571A1 (en) * | 2004-06-02 | 2005-12-08 | Lyon Thomas L | Distributed virtual multiprocessor |
CN101566957A (zh) * | 2008-04-25 | 2009-10-28 | 恩益禧电子股份有限公司 | 信息处理系统及任务执行控制方法 |
US20100121865A1 (en) * | 2008-11-12 | 2010-05-13 | Microsoft Corporation | Leveraging low-latency memory access |
US20110072426A1 (en) * | 2009-09-18 | 2011-03-24 | Vmware, Inc. | Speculative Notifications on Multi-core Platforms |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590319A (en) * | 1993-12-15 | 1996-12-31 | Information Builders, Inc. | Query processor for parallel processing in homogenous and heterogenous databases |
US7010784B1 (en) | 1999-09-03 | 2006-03-07 | Cadence Design Systems, Inc. | Method and system for split-compiling a hybrid language program |
US6874138B1 (en) | 2000-11-28 | 2005-03-29 | Hewlett-Packard Development Company, L.P. | Method and apparatus for resuming execution of a failed computer program |
US6931395B2 (en) | 2001-10-25 | 2005-08-16 | International Business Machines Corporation | Method and apparatus for optimizing queries in a logically partitioned computer system |
US7346903B2 (en) * | 2003-02-04 | 2008-03-18 | Sun Microsystems, Inc. | Compiling and linking modules of a cycle-based logic design |
US7254580B1 (en) * | 2003-07-31 | 2007-08-07 | Google Inc. | System and method for selectively searching partitions of a database |
US20050131893A1 (en) | 2003-12-15 | 2005-06-16 | Sap Aktiengesellschaft | Database early parallelism method and system |
US8126870B2 (en) * | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US20070124274A1 (en) | 2005-11-30 | 2007-05-31 | International Business Machines Corporation | Apparatus and method for autonomic adjustment of resources in a logical partition to improve partitioned query performance |
GB0601566D0 (en) | 2006-01-26 | 2006-03-08 | Codeplay Software Ltd | A parallelization system and compiler for use in such a system |
US8126911B2 (en) | 2006-04-27 | 2012-02-28 | Intel Corporation | System and method for content-based partitioning and mining |
US7725470B2 (en) * | 2006-08-07 | 2010-05-25 | Bea Systems, Inc. | Distributed query search using partition nodes |
US7908259B2 (en) | 2006-08-25 | 2011-03-15 | Teradata Us, Inc. | Hardware accelerated reconfigurable processor for accelerating database operations and queries |
US20080059489A1 (en) * | 2006-08-30 | 2008-03-06 | International Business Machines Corporation | Method for parallel query processing with non-dedicated, heterogeneous computers that is resilient to load bursts and node failures |
WO2008089335A2 (en) * | 2007-01-17 | 2008-07-24 | Encirq Corporation | Systems and methods for a devicesql parallel query |
JP5011006B2 (ja) * | 2007-07-03 | 2012-08-29 | 株式会社日立製作所 | リソース割当方法、リソース割当プログラム、および、リソース割当装置 |
US8108857B2 (en) | 2007-08-29 | 2012-01-31 | International Business Machines Corporation | Computer program product and method for capacity sizing virtualized environments |
JP5256685B2 (ja) | 2007-10-18 | 2013-08-07 | 日本電気株式会社 | 情報処理装置 |
US7673065B2 (en) * | 2007-10-20 | 2010-03-02 | Oracle International Corporation | Support for sharing computation between aggregations in a data stream management system |
US8176497B2 (en) * | 2008-01-16 | 2012-05-08 | Dell Products, Lp | Method to dynamically provision additional computer resources to handle peak database workloads |
US8108340B2 (en) | 2008-03-28 | 2012-01-31 | Yahoo! Inc. | Search engine configured to minimize performance degradation under high load |
US8402469B2 (en) * | 2008-04-08 | 2013-03-19 | Infosys Limited | Allocating resources for parallel execution of query plans |
US8290917B2 (en) | 2008-06-02 | 2012-10-16 | Microsoft Corporation | Reordering of data elements in a data parallel system |
JP4491026B2 (ja) | 2008-06-30 | 2010-06-30 | 株式会社東芝 | 情報処理装置、プログラム処理方法及びコンピュータプログラム |
US8683471B2 (en) | 2008-10-02 | 2014-03-25 | Mindspeed Technologies, Inc. | Highly distributed parallel processing on multi-core device |
CN101908003B (zh) | 2009-06-05 | 2014-10-22 | Sap股份公司 | 并行化查询的多核调度 |
US8949852B2 (en) | 2009-06-29 | 2015-02-03 | Oracle America, Inc. | Mechanism for increasing parallelization in computer programs with read-after-write dependencies associated with prefix operations |
US8352945B2 (en) | 2009-08-11 | 2013-01-08 | International Business Machines Corporation | System, method, and apparatus for scan-sharing for business intelligence queries in an in-memory database |
US8166022B2 (en) | 2009-08-18 | 2012-04-24 | International Business Machines Corporation | System, method, and apparatus for parallelizing query optimization |
US8838576B2 (en) | 2009-10-12 | 2014-09-16 | Yahoo! Inc. | Posting list intersection parallelism in query processing |
US9251214B2 (en) * | 2010-04-08 | 2016-02-02 | Microsoft Technology Licensing, Llc | In-memory database system |
CN102473118B (zh) * | 2010-05-24 | 2016-10-12 | 松下电器(美国)知识产权公司 | 信息处理系统 |
US20120151479A1 (en) * | 2010-12-10 | 2012-06-14 | Salesforce.Com, Inc. | Horizontal splitting of tasks within a homogenous pool of virtual machines |
US9460176B2 (en) * | 2010-12-29 | 2016-10-04 | Sap Se | In-memory database for multi-tenancy |
US11086850B2 (en) | 2011-04-13 | 2021-08-10 | International Business Machines Corporation | Persisting of a low latency in-memory database |
US9507816B2 (en) | 2011-05-24 | 2016-11-29 | Nintendo Co., Ltd. | Partitioned database model to increase the scalability of an information system |
-
2012
- 2012-06-15 US US13/524,881 patent/US9027022B2/en active Active
- 2012-06-15 US US13/525,036 patent/US8381224B2/en active Active
- 2012-06-15 CN CN201280039092.3A patent/CN103930875B/zh active Active
- 2012-06-15 AU AU2012271352A patent/AU2012271352B2/en active Active
- 2012-06-15 ES ES12732904.3T patent/ES2555275T3/es active Active
- 2012-06-15 US US13/524,959 patent/US8645958B2/en active Active
- 2012-06-15 WO PCT/US2012/042807 patent/WO2012174471A1/en active Application Filing
- 2012-06-15 EP EP12732904.3A patent/EP2721489B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222229A (en) * | 1989-03-13 | 1993-06-22 | International Business Machines | Multiprocessor system having synchronization control mechanism |
US6353845B1 (en) * | 1998-06-25 | 2002-03-05 | International Business Machines Corporation | Computer system, program product and method for tracking asynchronous I/O with timeout support |
US20050273571A1 (en) * | 2004-06-02 | 2005-12-08 | Lyon Thomas L | Distributed virtual multiprocessor |
CN101566957A (zh) * | 2008-04-25 | 2009-10-28 | 恩益禧电子股份有限公司 | 信息处理系统及任务执行控制方法 |
US20100121865A1 (en) * | 2008-11-12 | 2010-05-13 | Microsoft Corporation | Leveraging low-latency memory access |
US20110072426A1 (en) * | 2009-09-18 | 2011-03-24 | Vmware, Inc. | Speculative Notifications on Multi-core Platforms |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107111532A (zh) * | 2014-10-20 | 2017-08-29 | 起元科技有限公司 | 计算不确定性情况下的恢复和容错 |
CN106406748A (zh) * | 2015-07-30 | 2017-02-15 | 伊姆西公司 | 存储器中心数据库架构 |
CN106406748B (zh) * | 2015-07-30 | 2020-12-22 | 伊姆西公司 | 存储器中心数据库架构 |
CN106528188A (zh) * | 2015-09-09 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种应用加速方法及装置 |
CN106528188B (zh) * | 2015-09-09 | 2019-08-30 | 腾讯科技(深圳)有限公司 | 一种应用加速方法及装置 |
CN105391597A (zh) * | 2015-11-06 | 2016-03-09 | 国网浙江省电力公司电力科学研究院 | 基于多服务器仿真的雪崩测试的方法、装置及系统 |
CN105491021A (zh) * | 2015-11-24 | 2016-04-13 | 华东师范大学 | 一种Android云应用服务器及Android云应用服务器系统 |
WO2018103565A1 (en) * | 2016-12-09 | 2018-06-14 | Zhejiang Dahua Technology Co., Ltd. | Methods and systems for data transmission |
CN109739482B (zh) * | 2018-12-28 | 2022-04-15 | 杭州东信北邮信息技术有限公司 | 一种基于动态语言的业务逻辑执行系统及方法 |
CN109739482A (zh) * | 2018-12-28 | 2019-05-10 | 杭州东信北邮信息技术有限公司 | 一种基于动态语言的业务逻辑执行系统及方法 |
CN111736950A (zh) * | 2020-06-12 | 2020-10-02 | 广东浪潮大数据研究有限公司 | 一种虚拟机的加速器资源添加方法及相关装置 |
CN111736950B (zh) * | 2020-06-12 | 2024-02-23 | 广东浪潮大数据研究有限公司 | 一种虚拟机的加速器资源添加方法及相关装置 |
CN112115134A (zh) * | 2020-08-04 | 2020-12-22 | 北京金山云网络技术有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN113268269A (zh) * | 2021-06-07 | 2021-08-17 | 中科计算技术西部研究院 | 一种针对动态规划算法的加速方法、系统及装置 |
CN113268269B (zh) * | 2021-06-07 | 2022-10-14 | 中科计算技术西部研究院 | 一种针对动态规划算法的加速方法、系统及装置 |
CN114124849A (zh) * | 2021-12-03 | 2022-03-01 | 北京天融信网络安全技术有限公司 | 一种基于vhost-user的服务链实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103930875B (zh) | 2017-05-03 |
US9027022B2 (en) | 2015-05-05 |
AU2012271352B2 (en) | 2015-05-07 |
US20120324449A1 (en) | 2012-12-20 |
US8645958B2 (en) | 2014-02-04 |
AU2012271352A1 (en) | 2014-01-16 |
EP2721489B1 (en) | 2015-09-23 |
US8381224B2 (en) | 2013-02-19 |
US20120324447A1 (en) | 2012-12-20 |
WO2012174471A1 (en) | 2012-12-20 |
EP2721489A1 (en) | 2014-04-23 |
US20120324448A1 (en) | 2012-12-20 |
ES2555275T3 (es) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103930875B (zh) | 用于加速业务数据处理的软件虚拟机 | |
To et al. | A survey of state management in big data processing systems | |
Wu et al. | Energy-efficient hadoop for big data analytics and computing: A systematic review and research insights | |
US8484417B2 (en) | Location updates for a distributed data store | |
CN100594498C (zh) | 海量数据实时处理架构及用于该架构的实时随需处理平台 | |
CN100571281C (zh) | 海量数据分级存储方法 | |
US8161244B2 (en) | Multiple cache directories | |
Chen et al. | Computation and communication efficient graph processing with distributed immutable view | |
WO2019068002A1 (en) | INFRASTRUCTURE OF INDEPENDENT AUTONOMOUS DATABASE BASED CLOUD SERVICES | |
CN109923523A (zh) | 关联工作集和线程 | |
CN107329982A (zh) | 一种基于分布式列式存储的大数据并行计算方法及系统 | |
CN107766402A (zh) | 一种楼盘字典云房源大数据平台 | |
CN103279390A (zh) | 一种面向小作业优化的并行处理系统 | |
WO2013153027A1 (en) | Method and system for streaming processing in a map and reduce distributed computing platform | |
CN102137125A (zh) | 在分布式网络系统中处理跨任务数据的方法 | |
Arfat et al. | Big data for smart infrastructure design: Opportunities and challenges | |
CN115083538A (zh) | 一种药物数据的处理系统、运行方法及数据处理方法 | |
Wang et al. | Towards Hybrid Programming in Big Data | |
CN116975085A (zh) | 异步数据处理方法、系统以及电子设备 | |
Moses et al. | SURVEY OF BIG DATA PROGRAMMING FRAMEWORKS. | |
Kiefer | Allocation Strategies for Data-Oriented Architectures | |
Marcu et al. | Colocating Real-time Storage and Processing: An Analysis of Pull-based versus Push-based Streaming | |
CN114721831A (zh) | 一种用于优化CitcomS系统实时性能的方法和系统 | |
Kuganesan | Distributed resource management for yarn | |
Hayduk | Mining frequent patterns from uncertain data with MapReduce |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: American California Patentee after: Argyll data Ltd Address before: American California Patentee before: UCIRRUS |
|
CP01 | Change in the name or title of a patent holder |