CN101551760A - 用于并行化的数据转换过程的表示 - Google Patents
用于并行化的数据转换过程的表示 Download PDFInfo
- Publication number
- CN101551760A CN101551760A CNA2009101307548A CN200910130754A CN101551760A CN 101551760 A CN101551760 A CN 101551760A CN A2009101307548 A CNA2009101307548 A CN A2009101307548A CN 200910130754 A CN200910130754 A CN 200910130754A CN 101551760 A CN101551760 A CN 101551760A
- Authority
- CN
- China
- Prior art keywords
- conversion
- parallelization
- fragment
- follow
- last
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种用于并行化的数据转换过程的表示方法。定义一个和多个操作用于一个或多个项的库。也可以定义一个或多个项中的每一个之间的一个或多个关联。分类与用于转换图中的执行环境的一个或多个操作相关联,其中所述分类定义所述操作是否可以和其它操作并行执行或不能并行执行。基于所述分类处理所述操作。
Description
技术领域
本发明涉及信息管理。
背景技术
由于微处理器时钟速率的增长趋于缓慢,现在微处理器制造商也增加处理器内核的数量以便增加处理能力。但是,附加的内核的潜力只能被用于可并行化的商务应用,也即,可以被“划分”成可以并行执行的多个部分的商务应用。如今,应用需要以一种专门方式进行编写以便利用并行处理线程。编写并行执行的应用需要付出更多努力,并且需要专门训练。
发明内容
这里公开了用于提供编程模型和运行时架构的系统、装置和方法,所述编程模型和运行时构架以允许这些过程并行执行而不要求程序员编写专用的并行代码的形式来表达数据转换(操作)过程。在一个实施例中,定义一个或多个操作用于一个或多个项的库。分类与用于执行环境的转换图中的一个或多个操作相关联,其中所述分类定义是否可以对一个输入数据集的独立子集并行执行所述操作。基于所述分类处理所述操作。
在另一个实施例中,接收转换图,所述转换图包括一个或多个操作,其中所述操作是可并行化操作和不可并行化操作。所述图被切分成多个片段,其中每个片段由可并行化操作的线性序列组成,除了最后的操作,其不需要是可并行化的。在执行期间,这些片段被划分成许多并行的相同片段,各自处理一部分输入数据,其中在片段首部添加转换以划分输入数据,并在片段尾部合并结果。公开了其它指导系统、方法和计算机可读介质的实施方式。
附图说明
图1是信息管理系统的一个实施例的框图。
图2是一个示范性转换图。
图3显示了并行化之前和之后的转换图。
图4是处理一个转换图的示例过程的流程图。
图5是一个示例计算机系统的示意图,所述计算机系统可用于实施本文描述的系统和方法。
具体实施方式
图1是可用于实现本发明的系统100的一个实施例的框图。在一个实施例中,信息管理系统100可包括提供数据管理和持续功能性的后端信息管理层102,以及装载(host)应用的应用层104,所述应用可利用所述信息管理系统。
在一个实施例中,后端信息管理层102数据可包括存储器106。信息项105及其关联存储在存储模块106中。可以以处理图表的形式,也即转换图,经由服务器API 112从应用服务器层104发送请求到服务器API 112。并行处理引擎110可拾取这些转换图并尝试着最大化它们的并行执行。利用所述信息管理系统的功能性的应用程序116可在应用层104被部署,并且该应用程序可通过无状态服务器API访问后端服务器实例。由于该无状态API后端服务器可作为资源池,其中每个服务器实例可以处理每个应用请求。
在一个实施例中,(并行化的)转换图的实际处理在所述后端服务器实例114的执行引擎108中发生。在一个实施例中,应用服务器116包含应用逻辑并且与应用程序交互。在一个实施例中,独立的UI层可以存在。在其它实施例中,应用服务器116可以被网页服务调用来调用,应用服务器116发送查询或处理请求至后端服务器实例114,在后端服务器实例114中服务器API 112将输入信息进行解码,并构造相应的转换图,并行处理引擎110将所述图切分成多个片段,并动态地使计划用于执行的片段并行化。执行引擎108可在独立的工作线程中执行转换链;执行引擎108从所述并行化中分离(decouple)。当需要时,执行引擎108可从存储器106中抽取信息项105、关联及属性。
在一个实施例中,存储器106可存储信息项105,该信息项是属性的集合并在传统数据库中扮演数据对象的角色,以及可存储关联,其与信息项105彼此关联。在一个实施例中,属性将信息项与属性值关联。信息项105和关联的概念将在下文作更详细地解释。例如,信息项105的集合可以通过明确地列出其元素或者通过描述其从其它集合中被创建的方法来进行定义,例如,通过过滤或设置统一类型(unification)。
在一个实施例中,信息项105的属性或关联存在,其仅在特定的上下文中有效,例如,对于信息项的特定版本。在一个实施例中,上下文也可以针对信息项105集合而进行定义。
在信息项105和关联上执行的所有过程,例如选择、检索关联项,过滤以及属性处理,都可被表示成图,其中节点是处于特定状态的信息项105的集合,并且边表示转换(操作)。描述数据处理所需的操作集合通常在下面列出的商务应用中被完成。
在下文中称为“直接可并行化的转换”的某类转换可以被直接并行化,因为如果它们在一给定的输入集合的划分上被独立应用,那么它们的输出集合是分离的,并且不依赖于特定的执行顺序。
在第二类转换中,在下文中称为非直接可并行化的转换,在结果集合中一个信息项105或关联可依赖于输入集合中的多于一个的信息项105或关联。非直接可并行化的转换会难以并行化,因为将所述输入集合划分成多个分离性的子集不能确保当所述转换独立地应用到每个子集时相应的输出子集也是分离的。然而,通过应用级联策略(cascading strategy),一些非直接可并行化的转换可以被并行化,例如,可以执行计算信息项105集合中一个属性的最小值,即使所述集合被划分成多个子集(如图3所示)。
在这种级联中,转换可以首先被应用到每个子集中,然后这些子集的结果值被再次用作相同转换的输入直到只剩下一个值。所述级联实现对于不同的“可级联”转换可以是不同的,但是它总是基于首先对单独的集合然后对合并的结果递归运行所述转换的概念。
在一些实施例中,转换将信息项105的集合及其关联作为输入,并计算新的信息项105的集合及其关联作为它的输出。“改变转换”可以用在持久存储器中的所述输出集合覆盖所述输入集合,或者,为了更加准确,输出集合是所述输入集合的新版本。
过滤转换根据类型、关联或属性值减少实现给定条件的元素的子集的集合。所述过滤转换不是非直接可并行化的。
合并转换的结果是在至少一个所述输入集合中出现的所有元素的集合。合并操作可以把与上下文相关的“出现次数”属性添加到所述结果集合的所述元素中。所述合并操作是非直接可并行化的,但是可以被级联。
交叉转换的结果是包含在两个原始集中的所有信息项的集合。所述交叉转换是非直接可并行化的,因为一个元素是否是最后集合的一部分的问题只有在处理完两个集合后才能被估计。
减法转换从另一个集合中除去一个集合的内容。它是非直接可并行化的,并且不能被级联。
与信息项105关联的衍生转换通过给定的关联类型检索与原集中的信息项之一关联的特定类型的所有信息项。所述操作不是非直接可并行化的,但是如果在分离集合的子集上并行地执行,就会导致输出集合的重叠。当这些输出集合被再次合并以供在单个线程中的进一步处理时,必须消除这些重叠。
服务调用转换调用功能或服务,将给定信息项的特定属性或信息项集合映射到所述服务输入参数。它不是非直接可并行化的,但是只有当服务提供者可以执行负载平衡时并行化才是有意义的。
顺序转换通过增加与所述信息项关联的“有前驱(has predecessor)”和“有后继(has successor)”,将对应于给定属性的集合的信息项105排序。这些关联只在所述集合的上下文中有效。顺序集合具有指向序列中第一个和最后一个信息项的指针。所述顺序操作是非直接可并行化的,但是可以被级联。
聚合转换减少[合成]树至特定类型的不同的信息项105的平面列表。例如,在材料的分级清单中类型“螺栓(bolt)”的所有信息项可以被聚合。然后结果将是在装配中使用的不同螺栓大小的清单,其表示与上下文相关的属性在所述树中出现的次数或与上下文相关的属性聚合的数量(如果组成所述树的关联用相应的数量属性和/或因素来标记)。所述聚合操作是非直接可并行化的,但是可以被级联。
例如最小、最大、总和和平均值操作这样的数值聚合器评估集合所有元素的特定属性,并确定所有值的最小值/最大值/平均值或总和。这些操作是非直接可并行化的,但是可以被级联。
赋值转换增加或重写属性值或提供新的关联目标。在所述转换图中,其输出是其处理的信息项的更新的版本。如果能够确保在分支前知道将被分配的值,那么所述赋值操作就可在并行线程中执行。
迭代器描述了为了集合S中的每个信息项105转换序列需要单独被执行的事实;典型地执行计算,为信息项105分配结果。在转换图中,所述迭代器具有作为输出的代表单个集合实体的节点,所述节点在“迭代”执行期间是可用的。迭代器的第二个输出是修改后的集合S’,它在“S”的所有元素都被处理完后是可用的,并且然后它可被连接到进一步的转换图。起源于个别实体的转换链需要与转换图的其余部分保持隔离,因为转换图的节点只有在相应的迭代器线程的执行期间有效,并且不能确定转换图中的其它节点在那时已经可用。然而,转换链可以向结果集合S’增加信息项。如果在单独信息项的处理步骤中没有产生关于处理位置的消耗,尤其是如果没有使用位置变量用于计算,那么迭代器可并行化。
分组转换将信息项105的集合分成多个子集,每个子集包含具有用于特定属性值/关联的相同值的各组信息项105。分组操作器像迭代器般地工作,差别在于在迭代器工作的情况下单个信息项的角色在这里由子集充当。
公共属性转换具有作为输入的信息项集合以及作为输出的集合中的元素共有的所有属性/关联集合。所述操作是非直接可并行化的,但是可以被级联。
在一个实施例中,改变信息项105属性值/关联值的转换创建新版本的信息项105。在转换图120中,改变前和改变后的信息项105是两个不同的节点。这意味着转换可以分流信息项105的两个版本。因此即使使用较早版本的信息项105的转换可以比创建所述新版本稍晚的时间点执行,也使用初始状态,这意味着执行顺序并不重要。
在一个实施例中,信息管理系统服务器112API提供信息项105的类以及信息项105的集合。上面列举的基本转换可以作为输入参数(之一)的方法被公开,例如,对集合的转换操作作为集合类的方法被公开。对于程序员而言,他也似乎对信息项105的实际存储的实例执行顺序操作,尽管集合操作是在粗粒度的情况下。换句话说,编程模块允许程序员编写顺序程序,该程序可通过在基于关于对所应用的转换操作的特征的认知的执行环境被并行执行。
在一个实施例中,当事务(transaction)被委托或请求单个信息项105的解析(例如,在应用GUI中结果信息项的图形显示)的命令被提交,所述[查询和]转换图120被传递给执行引擎108,执行引擎执行转换图并发回相应的结果集。
在一个实施例中,当应用服务器116改变数据时,它检查被改变的实例是否满足缓存的信息项105集合的选择标准,如果满足,则为那个集合设置一个无效标记。尽管所述查询描述不需要太多的服务器空间,但是它将在可配置时间之后期满(并且因此被移除),以避免废弃版本的堆积。
在一个实施例中,当与应用服务器116相关联的客户试图写回对缓存数据的改变并且所述查询在服务器114上无效或期满时,客户将收到一个通知,表明在客户端上的缓存数据是无效的。然后客户实现取回改变后的数据(所述查询参数已被存储),并将其与缓存数据进行比较。然后向应用116通信发送服务器端改变,所述应用决定如何处理所述情形。
在一个实施例中,转换图120以在顺序执行中施加尽可能少的约束条件的方式来表示数据处理或查询。
例如,假定制造公司有一组产品,其部分由已购买的“原子材料”并部分由该原子材料制造或装配而成的部件组成。对于每个产品来说,有一个材料清单,也就是合成树,以及路径,也就是将原子材料转换成最终产品所需的制造/装配步骤的树。
图2示出了一个转换图。转换图200的可能节点为:信息项105、信息项组、关联的属性值或目标信息项以及转换,如将在下面更详细地描述的那样。
转换节点注释有与并行化相关的信息,尤其是节点是否是非直接可并行化的。在一个实施例中,转换图的技术表示被最优化以便执行,也就是,客户投入处理能力以服务器不需要进行广泛的分析或重组的方式来准备转换图。但是,所述并行化由信息管理系统后端服务器114完成。
路径中的每个步骤都有一个持续时间,且被分配给一个资源(也就是,机器或装配站),所述资源执行相应步骤,并传送指定成本/时间的属性。为了评估每个产品的当前成本,所有原子材料的花费需要被合计。除了材料花费之外,需要通过将每个步骤的持续时间与相关联资源单位时间单元的成本相乘并且将整个路径树的这些处理成本合计,来计算制造/装配花费。
客户实现创建的转换图在图2中示出。在这个例子中,转换图200从材料M 201的集合开始。首个转换是迭代器202,其为M输出的每个材料p创建单个任务线程,并且创建包含这些材料的新版本p’的输出集合M’203。
每个任务线程被划分成三个接收材料p作为输入的子图:第一个子图是两个转换“取得组件”204和“总成本”206序列,也就是,它计算材料p中包含的所有外部提供的成分总成本。第二个子图取回与材料p相关的路径r207,紧接着是转换“获取组件”208,其产生包含在路径中的所有步骤集合。该集合由第二迭代器209处理,第二迭代器209计算每个步骤st的处理成本,并将处理成本隶属为st 214相关联的属性“成本”。为了计算步骤st的成本,它的“时间”属性被读取210,并且相关获取资源211被评估,然后从获取资源211中“成本/小时”被读取212,然后将两个值相乘213。
当针对所有步骤st执行了该子图时,迭代器209结束,并且步骤215更新后的版本的结果集被当作一个用于转换的输入,该转换将所有步骤的“成本”属性进行总计216。累加后的处理成本被加到外部供应材料的成本中(转换206的输出),并且所述总数被分配给材料p218的“成本”属性。
图3示出了转换图302的片段是如何并行化的。在服务器端,已经是一个执行计划的转换图302被操作以供并行化执行。通过将图302中的先于可并行化(直接可并行化)操作310的节点集304、306和308划分成多个子集来准备并行化。然后,所有后续的可并行化操作以及结果节点在图中被复制,以使得它们可以被分配给并行线程。
当非直接可并行化转换310到达转换图312中时,并行线程的结果被分别地再次合并成信息项314的一个集合或最终信息项316。在许多情况下,这可以在本步骤中完成,或者不然的话,合并在所述非直接可并行化转换316的执行之前的一个独立步骤中执行。对于大的数据集,可以通过将合并步骤作为初始并行合并步骤的级联(或树)执行来将合并最优化。
在一个实施例中,所有转换的输入和输出都是集合。这些集合在开始时被抽象描述(也就是,它们的内容只能通过它们在转换图中的位置来定义),并且随着转换图的处理进行而得到解(也就是,被填入信息项实例)。
在一个实施例中,调度器模块保持转换图中和所分配的信息项集合中(当可用时)所有节点的清单。当图中转换的所有输入集合为可用时(也就是,已求解的),相应的转换被安排为被下一个可用线程执行。当完成所述线程时,所述调度器模块接收结果集并将其分配给图中的相应节点。
图4是用于处理转换图的示例过程400的流程图。例如,过程400可以在如图1所示的系统100的系统中实现。
阶段402接收一个转换图,所述转换图包括一个或多个数据转换,其中所述转换为直接可并行化的转换和非直接可并行化的转换。例如,服务器112可以接收转换图,所述转换图包括一个或多个数据转换,其中所述转换为直接可并行化的转换和非直接可并行化的转换。
阶段404将图中的首个转换添加到工作集。例如,并行处理引擎110可以将图中的首个转换添加到工作集中。
阶段406将工作集中的首个操作添加到片段中。例如,并行处理引擎110可以将工作集中的首个操作添加到片段中。当片段中的最后操作是直接可并行化的并且正好只有一个后继时,后续操作被添加到所述片段。片段的数目依赖于图的结构。它也受加入到所述工作集的起始点数目的影响。因此,它主要依赖于图中起始点的数目、分叉和非直接可并行化的转换。
阶段408确定所述片段中接续在最后转换的转换是否是可并行化的。例如,并行处理引擎110可以确定片段中接续最后转换的转换是否是可并行化的。
阶段410确定最后转换是否包含多于一个的后继转换。例如,并行处理引擎110可以判断最后转换是否包含多于一个的后继转换。
阶段412基于最后转换是否为直接可并行化的以及是否包含多于一个的后继转换的确定,将最后转换的后继转换添加到所述片段。例如,并行处理引擎110可以基于最后转换是否为直接可并行化的以及是否包含多于一个的后继转换的确定,将最后转换的后继转换添加到所述片段。
如果后继转换没有被添加到片段,那么阶段414就将所述后继转换添加到工作集。例如,如果后继转换没有被添加到片段,那么并行处理引擎110就可以将所述后继转换添加到工作集。
阶段416确定工作集中是否还剩有转换。例如,并行处理引擎110可以确定工作集中是否还剩有转换。阶段408-414被重复直至工作集中不再有转换。
在一个实施例中,可以通过将首个操作的输入集分割来展开单个片段。专用转换被添加到所述片段以执行所述分割。所述片段的单个备份的数目被动态确定。这发生在执行期间。
在一个实施例中,一旦所述输入集被分割,用于各个子集的片段的一个备份就被执行。最后,结果需要被重新合并,伴随三种可能的情况。
第一,片段中的最后操作是直接可并行化的。在这种情况下,通过添加“统一”操作将结果与集合合并,所述“统一”操作拾取工作线程的所有部分结果并且将它们统一在一个集合中。
第二,片段中的最后操作是非直接可并行化的,但是是可级联的。可以采用步骤的级联来同步完成合并和执行所述操作,在所述级联中通过各个步骤,输出集合数(并且因此线程数)被减少。因此,级联看起来像是侧躺(参见图3)的树。
第三,所述最后操作是非直接可并行化的,并且是不可级联的:因为“统一”转换在非直接可并行化操作之前插入,因此后者仅操作于一个统一的信息项集合上。
在一个实施例中,系统100可以改变转换图120以便发现直接可并行化的片段,并使其并行化。可以使用含有所有尚未被处理的片段的起始点的工作集。这里的工作集涉及图中的节点集。
所述处理可以是如下:从工作集中选择起始点(也就是,图节点)(且同时从所述集合移除),并且后续操作被添加到当前片段直至达到非直接可并行化的操作。然后,完成当前片段。在所述非直接可并行化操作之后的下一个节点是另一个片段的起始点,因此将其放入所述工作集中。
图5是描述了一个示例计算机系统的内部结构的框图。计算环境包括计算机中央处理单元(“CPU”)501,其中包含操作系统或应用的计算机指令被处理;显示接口502,其提供通信接口并处理用于在监视器上表现图形、图像和文本的功能;键盘接口504,其提供到键盘的通信接口;定点设备接口505,其提供到鼠标或类似定点设备的通信接口;数字输入接口506,其提供到视频和音频检测器的通信接口;硬拷贝输出设备接口508,其提供到硬拷贝输出设备的通信接口;随机存取存储器(“RAM”)510,其中由计算机CPU501处理的计算机指令和数据被存储在易失性存储器设备中;只读存储器(“ROM”)511,其中用于基本系统功能,例如基本输入和输出(“I/O”)、启动或键盘的按键接收的不变低级系统代码或数据存储在非易失性存储设备中;存储器520或其它合适的存储器类型(例如,像随机存取存储器(“RAM”)、只读存储器(“ROM”)、可编程只读存储器(“PROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、磁盘、光盘、软盘、硬盘、可移动磁带、闪存),其中包含操作系统521、应用程序522(包括网页浏览器应用程序523和其它必要的应用程序525)和数据文件526的文件被存储;计算机网络接口516,其提供通过计算机网络连接到网络的通信接口。组成设备和计算机CPU 501通过计算机总线527彼此通信。
RAM 510和计算机总线527连接,以便在软件程序执行期间提供到计算机CPU 501的快速RAM存储,所述软件程序例如是操作系统应用程序和设备驱动器。更具体来说,计算机CPU501从硬盘驱动器或其它介质载入计算机可执行过程步骤至RAM 510的域中以便执行软件程序。数据存储在RAM510中,其中在执行期间所述数据可以被计算机CPU 501访问。
再如图5所示,系统500可以存储用于操作系统521的计算机可读代码,以及应用程序522,例如文字处理、电子制表软件、显像、游戏、网页浏览、JavaScript引擎或其它应用程序。
计算机CPU 501是多种高性能计算机处理器中的一种,所述高性能计算机处理器包括INTEL或AMD处理器、POWERPC处理器、MIPS精简指令集计算机(“RISC”)处理器、SPARC处理器、ACORN RISC机器(“ARM”)结构处理器、HP ALPHASERVER处理器或主机的专有计算机处理器。在另外的装置中,计算机CPU 501超过一个处理单元,包括在高性能工作站和服务器中发现的多CPU配置,或在主机中发现的多个可扩展处理单元。
操作系统521可以是基于工作站和服务器的用于INTEL的APPLE MACOS X和POWERPC;MICROSOFT WINDOWS/WINDOWS2000/WINDOWS XP工作站;MICROSOFT WINDOWS VISTA/WINDOWSNT/WINDOWS 2000/WINDOWS XP服务器;多种UNIX风格的操作系统,包括用于IBM工作站和服务器的AIX,用于SUN工作站和服务器的SUNOS,用于INTEL基于CPU工作站和服务器的LINUX,用于HP工作站和服务器的HP UX WORKLOAD MANAGER,用于SGI工作站和服务器的IRIX,用于数字设备公司计算机的VAX/VMS,用于基于HP ALPHASERVER计算机的OPENVMS;用于移动设备或者计算机或嵌入式系统的专有操作系统的SYMBIAN OS、NEWTON、IPOD、WINDOWS MOBILE或WINDOWS CE、PALM、NOKIA OS(“NOS”)、OSE或EPOC。用于操作系统521的应用开发平台或构架可以是:无线二进制运行时环境(“BREW”);Java平台、MicroEdition(“Java ME”)或Java 2平台、Micro Edition(“J2ME”);PYTHONTM、FLASH LITE或MICROSOFT.NET Compact。
虽然图5描述了计算系统的一种可能的实现,所述计算系统执行被配置为用于实现产品认证的程序代码、程序或过程步骤,但是也可以使用其它类型的计算机。
虽然术语“用户”一贯被用来表示与这些过程交互的实体,这种概括也被用来描述在多种不同的、重叠或非重叠状态下与这些过程交互的多个相关的或不相关的、活的或自动化的实体或生物。类似地,术语“选择”通篇被用来表示人做出的手动选择、非人类做出的自动选择、或者其某个组合。
最后,需要注意的是,为了简要起见,术语“JavaScript”通篇旨在参考SUN MICROSYSTEMS JAVASCRIPT编程语言,且术语“XML”通篇旨在参考‘eXtensible Markup Language’。
已经描述了许多实施方式。然而,需要明白的是,在不背离所公开的内容的精神和范围内可以进行各种修改。因此,其它实施方式落入所附权利要求的范围内。
Claims (19)
1、一种方法,包括:
(i)接收转换图,所述转换图包括一个或多个数据转换,其中所述转换是可并行化的转换和不可并行化的转换;
(ii)将所述图中的首个转换添加到工作集;
(iii)将首个转换从工作集添加到片段;
(iv)确定所述片段中的最后转换的后续转换是否是可并行化的;
(v)确定所述最后转换是否包含多于一个的后继转换;和
(vi)基于所述最后转换是否是可并行化的以及是否包含多于一个的后继转换的确定,将所述最后转换的后继转换添加到所述片段;
(vii)如果所述后继转换没有被添加到所述片段,则将所述后继转换添加到所述工作集;
(viii)确定在所述工作集中是否还剩有转换;和
(ix)基于所述确定重复步骤(iv)-(viii)。
2、如权利要求1所述的方法,还包括:
(x)创建所述片段的一个或多个备份。
3、如权利要求1所述的方法,其中将首个转换添加到片段包括:
确定所述转换是否具有前驱;和
基于所述确定添加所述转换。
4、如权利要求1所述的方法,其中所述最后转换是不可并行化的。
5、如权利要求1所述的方法,其中除了所述最后转换之外的所有转换都是可并行化的。
6、如权利要求1所述的方法,其中所述转换不是可并行化的。
7、如权利要求1所述的方法,其中所述转换不是可并行化的。
8、如权利要求1所述的方法,其中所述转换能够包括一个操作。
9、如权利要求1所述的方法,其中所述转换能够包括合并、过滤、减法、交叉、排序、聚合、数字聚合器、赋值、分组、公共属性和服务调用中的至少一个。
10、一种系统,包括:
处理器;
耦接到所述处理器的计算机可读介质,其上存有指令,当所述处理器执行指令时使得所述处理器执行包括以下的操作:
(i)接收转换图,所述转换图包括一个或多个数据转换,其中所述转换是可并行化的转换和不可并行化的转换;
(ii)将所述图中的首个转换添加到工作集;
(iii)将首个转换从工作集添加到片段;
(iv)确定所述片段中的最后转换的后续转换是否是可并行化的;
(v)确定所述最后转换是否包含多于一个的后继转换;和
(vi)基于所述最后转换是否是可并行化的以及是否包含多于一个的后继转换的确定,将所述最后转换的后继转换添加到所述片段;
(vii)如果所述后继转换没有被添加到所述片段,则将所述后继转换添加到所述工作集;
(viii)确定在所述工作集中是否还剩有转换;和
(ix)基于所述确定重复步骤(iv)-(viii)。
11、如权利要求10所述的系统,还包含操作,包括:
(x)创建所述片段的一个或多个备份。
12、如权利要求10所述的系统,还包含操作,包括:
确定所述转换是否具有前驱;和
基于所述确定添加所述转换。
13、如权利要求10所述的系统,其中所述最后转换是不可并行化的。
14、如权利要求10所述的系统,其中除了所述最后转换之外的所有转换都是可并行化的。
15、如权利要求10所述的系统,其中所述转换是非直接可并行化的。
16、如权利要求10所述的系统,其中所述转换是非直接可并行化的。
17、如权利要求10所述的系统,其中所述转换能够包括操作。
18、如权利要求10所述的系统,其中所述转换能够包括合并、过滤、减法、交叉、排序、聚合、数字聚合器、赋值、分组、公共属性和服务调用中的至少一个。
19、一种系统,包括:
用于定义包含项和项之间的关联的转换图的装置,其中所述转换图包括包含处于特定状态的项集合的节点和表示一个操作的边;
用于将所述操作关联成可并行化的操作和不可并行化的操作的装置;和
用于基于所述项、关联和所述可并行化的操作和不可并行化的操作来处理所述转换图的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/026,943 US8060544B2 (en) | 2008-02-06 | 2008-02-06 | Representation of data transformation processes for parallelization |
US12/026,943 | 2008-02-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101551760A true CN101551760A (zh) | 2009-10-07 |
Family
ID=40528244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2009101307548A Pending CN101551760A (zh) | 2008-02-06 | 2009-02-06 | 用于并行化的数据转换过程的表示 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8060544B2 (zh) |
EP (1) | EP2088504A1 (zh) |
CN (1) | CN101551760A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114443139A (zh) * | 2022-01-27 | 2022-05-06 | 上海壁仞智能科技有限公司 | 将顺序代码转换为并行代码的方法、系统、设备和介质 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8903891B2 (en) * | 2010-06-24 | 2014-12-02 | Sap Se | User interface communication utilizing service request identification to manage service requests |
CN102882900B (zh) * | 2011-07-11 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 大规模服务器集群应用部署方法和大规模服务器集群 |
US9116953B2 (en) | 2013-05-17 | 2015-08-25 | Sap Se | Calculation engine with dynamic partitioning of intermediate results |
US10095807B2 (en) * | 2015-04-28 | 2018-10-09 | Microsoft Technology Licensing, Llc | Linked data processor for database storage |
US9733993B2 (en) | 2015-07-02 | 2017-08-15 | Microsoft Technology Licensing, Llc | Application sharing using endpoint interface entities |
US10261985B2 (en) | 2015-07-02 | 2019-04-16 | Microsoft Technology Licensing, Llc | Output rendering in dynamic redefining application |
US9860145B2 (en) | 2015-07-02 | 2018-01-02 | Microsoft Technology Licensing, Llc | Recording of inter-application data flow |
US10198252B2 (en) | 2015-07-02 | 2019-02-05 | Microsoft Technology Licensing, Llc | Transformation chain application splitting |
US9658836B2 (en) | 2015-07-02 | 2017-05-23 | Microsoft Technology Licensing, Llc | Automated generation of transformation chain compatible class |
US9712472B2 (en) | 2015-07-02 | 2017-07-18 | Microsoft Technology Licensing, Llc | Application spawning responsive to communication |
US9785484B2 (en) | 2015-07-02 | 2017-10-10 | Microsoft Technology Licensing, Llc | Distributed application interfacing across different hardware |
US9733915B2 (en) | 2015-07-02 | 2017-08-15 | Microsoft Technology Licensing, Llc | Building of compound application chain applications |
US10031724B2 (en) | 2015-07-08 | 2018-07-24 | Microsoft Technology Licensing, Llc | Application operation responsive to object spatial status |
US10198405B2 (en) | 2015-07-08 | 2019-02-05 | Microsoft Technology Licensing, Llc | Rule-based layout of changing information |
US10277582B2 (en) | 2015-08-27 | 2019-04-30 | Microsoft Technology Licensing, Llc | Application service architecture |
CN105354175B (zh) * | 2015-10-21 | 2018-03-23 | 北京锐安科技有限公司 | 一种数据转换方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823351B1 (en) * | 2000-05-15 | 2004-11-23 | Sun Microsystems, Inc. | Work-stealing queues for parallel garbage collection |
US7395529B1 (en) * | 2003-03-25 | 2008-07-01 | Electric Cloud, Inc. | Conflict detection and correction in a program build environment |
US7168064B2 (en) * | 2003-03-25 | 2007-01-23 | Electric Cloud, Inc. | System and method for supplementing program builds with file usage information |
US7509244B1 (en) * | 2004-12-22 | 2009-03-24 | The Mathworks, Inc. | Distributed model compilation |
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
WO2008095742A1 (en) * | 2007-02-09 | 2008-08-14 | International Business Machines Corporation | Migration of process instances |
US8281012B2 (en) * | 2008-01-30 | 2012-10-02 | International Business Machines Corporation | Managing parallel data processing jobs in grid environments |
-
2008
- 2008-02-06 US US12/026,943 patent/US8060544B2/en active Active
-
2009
- 2009-01-28 EP EP09001167A patent/EP2088504A1/en not_active Ceased
- 2009-02-06 CN CNA2009101307548A patent/CN101551760A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114443139A (zh) * | 2022-01-27 | 2022-05-06 | 上海壁仞智能科技有限公司 | 将顺序代码转换为并行代码的方法、系统、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
US8060544B2 (en) | 2011-11-15 |
US20090198756A1 (en) | 2009-08-06 |
EP2088504A1 (en) | 2009-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101551760A (zh) | 用于并行化的数据转换过程的表示 | |
JP7023718B2 (ja) | リアルタイムデータストリームに対して実行するためのクエリの選択 | |
US8918377B2 (en) | Multiple source data management using a conflict rule | |
CN101208695B (zh) | 基于图形计算的元数据管理 | |
US8630969B2 (en) | Systems and methods for implementing business rules designed with cloud computing | |
CN103069385A (zh) | 动态加载基于图的计算 | |
JP2008546054A (ja) | イベントストリームからのイベントパターンの認識 | |
US20200241920A1 (en) | Transformation specification format for multiple execution engines | |
CA3089911A1 (en) | Method and system for flexible pipeline generation | |
CN113298503A (zh) | 一种面向政务的工作流管理系统及其分库分表方法 | |
CN108038665B (zh) | 业务规则管理方法、装置、设备及计算机可读存储介质 | |
CN112558934A (zh) | 一种基于编排控制流程业务开通的控制子任务引擎模块 | |
CN112365157A (zh) | 智能派工方法、装置、设备及存储介质 | |
US20120124110A1 (en) | Database, management server, and management program | |
CN113656407A (zh) | 一种数据拓扑生成方法、装置、电子设备及存储介质 | |
CN103077192A (zh) | 一种数据处理方法及其系统 | |
CN113535481A (zh) | 数据的回溯方法、装置和非易失性计算机可读存储介质 | |
CN109446263A (zh) | 一种数据关系关联方法及装置 | |
CN113722141A (zh) | 数据任务的延迟原因确定方法、装置、电子设备及介质 | |
US20110029493A1 (en) | Generic Method To Build Catalogs For Change Management | |
CN107402752B (zh) | 应用的定时触发方法和装置 | |
CN112036999A (zh) | 会计科目余额信息查询方法及装置 | |
EP1933235A2 (en) | Grid modeling tool | |
CN112799797A (zh) | 一种任务管理的方法和装置 | |
EP1850227A1 (en) | Data processing system and metod for providing a status management service |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20091007 |