CN102902529A - 变换的上下文知晓数据源管理 - Google Patents

变换的上下文知晓数据源管理 Download PDF

Info

Publication number
CN102902529A
CN102902529A CN2012103277500A CN201210327750A CN102902529A CN 102902529 A CN102902529 A CN 102902529A CN 2012103277500 A CN2012103277500 A CN 2012103277500A CN 201210327750 A CN201210327750 A CN 201210327750A CN 102902529 A CN102902529 A CN 102902529A
Authority
CN
China
Prior art keywords
source
data source
data
code
mapping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012103277500A
Other languages
English (en)
Other versions
CN102902529B (zh
Inventor
A·A-C·察奥
曹阳
张蒲生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102902529A publication Critical patent/CN102902529A/zh
Application granted granted Critical
Publication of CN102902529B publication Critical patent/CN102902529B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Abstract

本发明涉及变换的上下文知晓数据源管理。通过对多个数据源使用相同的源代码来辅助本地、群集和云执行之间的移植。源代码中所叙述的数据源标识符映射到不同执行目标处的数据源。使用分解API而不改变开发者的源代码,产生适合于连续目标的可执行代码。可编辑的数据源映射是按项目的,维护在文件或项目特性中,以及放置在具有可执行代码的可分发的软件包中。减少了开发者在他们的源代码中确定执行目标以及在源代码中显式地处理不同的执行位置的负担。源代码可不需要绝对路径数据源标识符或用于检测执行位置的代码。源到源转换注入创建文件夹、文件或云容器的调用。数据源分解可基于以数据源标识符为根的相对路径。

Description

变换的上下文知晓数据源管理
技术领域
本发明涉及数据源管理,尤其涉及将单个源代码与用于不同执行上下文的多个数据源相协调的工具和技术。
背景技术
适合于在单个机器上运行的计算机程序有时可由开发者修改来改为在多个机器上运行,以便利用额外的处理能力和/或额外的存储器。例如,开发者可能想要采用原始被编写成在单个台式计算机上执行的程序,并使其改为在诸如计算群集或计算云之类的一组计算机上运行。更为一般地,开发者可能想要应用特定的处理逻辑来处理不同的数据源,并且不希望明示地将每个数据源指定为该逻辑的参数。
计算群集是通过快速局域网或其他相对快的通信机制链接在一起的一组计算机。在从群集外查看时,群集内的计算机彼此协作就像单个功能强的计算机一样。
计算云是可配置的计算资源(如服务器、存储、应用和软件服务)的共享的联网池。随着用户的计算需求的增长或收缩,云的资源可快速地对用户可用以及可被容易地释放。应用可由云服务器提供给浏览器,使得不需要应用的本地安装的客户机副本。
群集和云的各种定义已被使用。出于当前讨论的目的,群集包括少于一千个处理核和/或驻留在单个建筑物内。相反,计算云包括一千或更多个核,和/或驻留在两个或更多个建筑物内。
发明内容
将程序从本地执行上下文移植到群集或云执行可涉及乏味的且易于出错的源代码改变,且更为具体地,可涉及修改程序中所使用的对数据源的引用的改变。对于开发者来说,针对极其不同的大小的数据集来运行程序是非常有挑战的。本文描述的某些实施例以给予对各种各样的数据集的访问的方式来增加程序的可移植性,如用多个可供选择的计算数据源自动管理单个源代码算法的方式。
例如,在某些情形中,存在数据源映射,其中某一数据源标识符被映射到相应执行目标处的相当不同大小的多个数据源,如本地机器处的数百G字节对群集处的数T字节以及云中的数十或数百T字节。一实施例接收将数据源标识符叙述为数据源的源代码。在标识第一执行目标之后,该实施例从该源代码自动产生被适合于第一执行目标的第一可执行代码。也就是说,当在第一执行目标中执行时,该可执行代码将用第一执行目标的映射的数据源作为数据源标识符所标识的数据源来操作。在标识具有与第一执行目标不同的数据源的第二执行目标之后,该实施例自动地——从同一源代码——产生被适合于该第二执行目标的第二可执行代码。也就是说,当在第二执行目标中执行时,第二可执行代码将用第二执行目标的映射的数据源作为被标识的数据源,而不是使用第一执行目标的数据源来操作。如所述,这种移植是在不要求开发者编辑源代码的情况下来实现的。
在某些实施例中,数据源映射被维护在文本配置文件中,而在某些实施例中,它是从非文本项目特性、项目头部或另一项目特定结构中读取的。在某些实施例中,数据源映射被放置在可分发的软件包中,从而便于可移植性,而不管包中的可执行代码当前支持哪些执行位置。
一实施例可减少或消除开发者在源代码中确定执行目标以及在源代码中显式地处理不同的执行位置的负担。在某些实施例中,例如,源代码不需要绝对路径数据源标识符。一实施例可提供灵活性,以帮助开发者用一个机器本地的较小数据子集来快速地完成源代码迭代,然后针对云或群集上的更大数据来测试所选的程序迭代。
某些实施例利用自动源到源转换机制来移植代码。移植数据源可不仅仅包含物理存储位置标识符串的替代。例如,在某些实施例中,从造成第一可执行代码的相同源代码生成第二可执行代码涉及源到源转换,该源到源转换注入不存在于开发者的源版本中的调用,如文件夹创建调用、云容器创建调用、或文件创建调用。其他映射可涉及数据库连接以及不仅仅是基于文件的存储,例如映射不同的数据库服务器,如本地、企业、云服务器、或开发服务器和生产服务器。诸如文件系统(如
Figure BDA00002105561500031
NTFSTM系统)和云存储(如
Figure BDA00002105561500032
AzureTM存储或其他云存储)之类的存储系统可具有不同的存储结构,且某些实施例提供了那些存储结构之间的映射(微软公司的标记)。
从开发者的观点,某些实施例获得数据源映射,其中某一数据源标识符被映射到各相应执行目标处的多个数据源。然后,该实施例从数据源映射和源代码自动生成数据源分解,而不要求开发者对源代码的任何改变。不同数据源分解对应于不同的执行目标,如对应于使用通用资源标识符的某一云数据源,或某一群集数据源。执行目标可由开发者指定,或可按默认指定。在某些实施例中,数据源分解可基于以数据源标识符为根的相对路径。某些实施例将接受来自开发者的对数据源映射的修改。
从架构的观点,某些实施例包括逻辑处理器和与逻辑处理器可操作地通信的存储器。数据源映射驻留在存储器中,并具有被映射到各相应的不同执行目标处的多个不同数据源的某一数据源标识符。数据源映射驻留或维持在例如文本配置文件、非文本项目特性、项目特定的结构、和/或用户特定的结构中。源代码也驻留在存储器中,且在源代码内数据源标识符被叙述为数据源。驻留在存储器中的可执行代码产生器具有指令,在执行时在不同时间从相同源代码自动产生多个不同的可执行代码,每个可执行代码引用这些数据源中的不同一个。
在某些实施例中,源代码不需要用于检测执行位置的代码。在某些实施例中,源代码不需要绝对路径数据源标识符。某些实施例包括可执行代码产生器产生的可执行代码,该可执行代码包含源代码中不存在的注入的代码,例如文件夹创建调用、云容器创建调用、和/或文件创建调用。
在某些实施例中,可执行代码产生器包括分解API。分解API包括指令,在由处理器执行时会将相对路径和执行目标分解成包含物理路径的数据源分解。在某些实施例中,可执行代码产生器包括源到源转换器。不同的实施例可采取一个或多个总体方法。在一个方法中,在本地机器上,源代码被转换成用于指定的执行目标的中间代码(IC)或可执行代码(EC)。然后,IC或EC被部署并运行在该可执行目标上。在第二方法中,源代码首先被部署到一执行目标上。为该执行目标设计的产生器当场转换该代码。在第三方法中,源代码被转换就好像数据相对于该代码是本地的。然后,当代码被部署到其中数据处于远程位置的一环境中时,预任务将首先下载该数据,使得代码可访问本地数据。
所给出的示例只是说明性的。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。相反地,提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明由权利要求书限定,在本发明内容与权利要求书有冲突的情况下,应该以权利要求书为准。
附图说明
将参考附图给出更具体的描述。这些附图只示出了选定的方面,且因此不完全确定覆盖或范围。
图1是示出计算机系统并且还示出配置的存储介质实施例的框图,该计算机系统具有至少一个处理器、至少一个存储器、源代码以及一般将存在于多个网络节点上的操作环境中的其他项目;
图2是示出一示例架构中的变换的上下文知晓数据源管理;以及
图3是示出一些过程的步骤和配置的存储介质实施例的流程图。
具体实施方式
概览
随着某些领域面对数据激增,利用对大型和各种各样的数据集进行更迅速且强大的处理,如在群集或云中的分布式处理,变得有益处。传统的桌面和其他单节点计算机具有相对有限的处理能力和容量来处理大量数据,因此更多的开发者和工程师希望使用来自不同源的更大的数据集来在群集或云上运行他们的桌面应用。例如,开发者可能想要使用小的数据子集在本地桌面上开发算法,然后相对于包含具有与该子集相同格式的完整数据集合的群集或云在程序中运行该算法。
一个导致的挑战是如何在不同的执行环境之间转换。工程师可能希望对每个不同的执行环境使用不同的数据源,这可能意味着在每个部署和执行之前改变众多的数据引用。如果所需数据被存储在用于不同执行环境的不同物理存储中,则工程师也可能被迫改变源代码,因为不同数据提供者常常使用不同的访问方法。但是,版本增生以及频繁的改变使得代码维护困难,对群集或云采用产生了障碍。
幸运的是,本文描述的某些实施例提供了用于将单个源代码与用于不同执行上下文的多个数据源相协调的工具和技术。在某些实施例中,上下文知晓数据源/数据提供者提取机制允许用户能够避免嵌入对诸如本地文件系统、文件共享、云存储、FTP地址、特定数据库、特定数据流等等之类的物理数据源的明确引用。取决于执行位置(如本地、群集、云),项目可自动地将虚拟引用重定向到某一数据源。类似地,用户可虚拟化数据提供者供数据访问。项目然后可根据所需数据存储来自动地改编可执行代码。
某些实施例提供了对物理数据源和它们的层次结构的虚拟化。某些实施例提供了对不同数据访问方法的虚拟化。某些实施例对每个执行位置在虚拟引用和物理数据源之间映射。某些实施例根据执行位置自动地重定向数据引用以及更新数据访问方法。
在某些情形中,开发者所面对的主要挑战是如何相对于远远超出单个机器的存储能力的大量数据集来运行在单个机器上开发的程序。这里描述的某些实施例帮助开发者用不同大小的数据集使用计算机程序来探索算法,例如首先相对于单个机器上的小的子集来运行程序,然后以无缝的方式用相同的开发源代码移动到完整数据集。结果,更短的和更干净的代码是可能的,因为开发者可避免编写用于检测执行位置的代码,并可使用相对路径来访问数据。源代码维护可以更容易,因为即使多个执行位置被使用,开发者也只跟踪源代码的一个副本。在某些实施例中,在数据源映射中,在单个位置中标识/更新物理源。可通过避免在每次切换执行位置时改变数据源来在执行位置之间进行更平滑的转换。
此处描述的某些实施例可以在较宽泛的上下文中查看。例如,诸如源代码、可执行代码、执行目标、数据源以及映射等概念可以与一具体实施例相关。然而,并不能从宽泛上下文的可用性中得出此处对抽象概念寻求专有权;它们并不是专有的。相反,本发明集中于提供适当具体的实施例。涉及源代码、可执行代码、执行目标、数据源和/或映射的其他介质、系统和方法在本范围之外。因此,在对本发明的正确理解下,也避免了模糊性和附带的证据问题。
现在将参考诸如附图中所示出的那些示例性实施例,并使用特定语言来对其进行描述。但是,相关技术领域的且拥有本公开内容的技术人员将想到的对此处所示出的特征的更改和进一步的修改以及对本文所示的原理的其他应用,都应该被视为在权利要求的范围内。
在本公开中阐明了各术语的含义,因此应该在仔细关注这些阐明的情况下阅读权利要求书。给出了具体示例,但是相关领域的技术人员将理解其他示例也可落在所使用的术语的含义范围内以及落在一个或多个权利要求的范围内。术语在这里不一定具有与它们在一般用途中、在特定行业的用途中、或在特定词典或词典集中所拥有的相同含义。附图标记可以与各种措词一起使用,以帮助示出术语的广度。从给定文本片段中省略附图标记不一定意味着没有通过文本讨论附图的内容。发明人声明并行使他们对他们自己的词典的权利。这里可在具体实施方式中和/或在申请文件的别处显式地或隐式地定义术语。
如此处所使用的,“计算机系统”可包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、蜂窝或移动电话、至少具有处理器和存储器的其他移动设备、和/或提供至少部分地由指令来控制的一个或多个处理器的其他设备。指令可以采用存储器中的固件或其他软件和/或专用电路的形式。具体而言,虽然可发生许多实施例在工作站或膝上型计算机上运行,但是其他实施例也可以在其他计算设备上运行,并且任何一个或多个这样的设备都可以是给定实施例的一部分。
“多线程化”计算机系统是支持多个执行线程的计算机系统。术语“线程”应被理解为包括能够或经历调度(以及可能同步)的任何代码,并且也可以另一名称来为人所知,如“任务”、“进程”或“协同例程”等。线程可以并行地、按顺序、或以并行执行(例如,多处理)和顺序执行(例如,时间分片)的组合来运行。在各种配置中都已设计了多线程化环境。执行线程可以并行地运行,或者线程可以被组织为并行执行,但是实际上轮流按顺序执行。例如,多线程化可以通过在多处理环境中在不同核上运行不同线程、通过对单个处理器核上的不同线程进行时间分片、或者通过时间分片和多处理器线程化的某种组合来实现。线程上下文切换可以例如由内核的线程调度器、由用户空间信号、或由用户空间和内核操作的组合来发起。线程可以轮流对共享数据进行操作,或者例如每一线程都可以对其自己的数据进行操作。
“逻辑处理器”或“处理器”是单个独立硬件线程处理单元,如同时多线程实现中的核。作为另一示例,每核运行两个线程的超线程四核芯片具有8个逻辑处理器。处理器可以是通用的,或者它们可被定制用于特定用途,例如图形处理、信号处理、浮点算术处理、加密、I/O处理等等。
“多处理器”计算机系统是具有多个逻辑处理器的计算机系统。多处理器环境存在于各种配置中。在一给定配置中,所有处理器可在功能上相同,而在另一配置中,由于具有不同的硬件能力、不同的软件分配或两者,某些处理器可与其他处理器不同。取决于配置,处理器可在单个总线上紧密地彼此耦合,或它们可松散地耦合。在某些配置中,处理器共享一中央存储器,在某些配置中,它们各自具有自己的本地存储器,在某些配置中,存在共享和本地存储器两者。
“内核”包括操作系统、系统管理程序、虚拟机、BIOS代码、以及类似的硬件接口软件。
“可执行代码”指的是采用除了编程语言的形式的处理器指令、数据(包括常量、变量、以及数据结构)、或指令和数据两者。
“源代码”指的是具有任选地伴随的声明和/或数据的语句,它们是以计算机编程语言编写的并被设计成被用于自动地产生可执行代码。
“程序”在本文中被广泛地使用以包括应用、内核、驱动程序、中断处理程序、库、以及程序员(也被成为开发者)编写的其他代码。
“自动地”指的是使用自动化(例如,由用于这里所讨论的特定操作的软件配置的通用计算硬件),与没有自动化相对。特别地,“自动地”执行的步骤不是由手在纸上或在人的头脑中执行的,它们是用机器执行的。然而,“自动地”不必意味着“立即地”。
贯穿本文,对任选复数“(诸)”的使用意味着一个或多个所指示的特征存在。例如,“(诸)数据源”意味着“一个或多个数据源”,或等价地“至少一个数据源”。
贯穿本文,除非另外明确表明,否则对过程中的某一步骤的任何引用都假定该步骤可直接由所关注的一方执行和/或由该方通过介入机制和/或介入实体而间接地执行,且仍然在该步骤的范围内。也就是说,除非直接执行是被明确表明的要求,否则并不要求由关注方对步骤的直接执行。例如,涉及某一关注方的关于目的或其他主体的诸如接受、包含、检测、执行、生成、具有、标识、包括、注入、映射、获得、操作、执行、放置、产生、读取、接收、驻留、分解、替换、变换、或转换(或接受、接受了、包含、包含了、检测、检测了等)之类的动作的步骤可涉及:诸如由某一其他方执行的转发、复制、上传、下载、编码、解码、压缩、解压、加密、解密、认证、调用等中间动作,但仍然被理解为是由该关注方直接执行的。
在参考数据或指令时,要理解这些项目配置了计算机可读存储器,从而将其变换为特定物品,而非简单地存在于纸张上、人的头脑中、或作为例如线路上的瞬时信号。除非另外明确表明,否则计算机可读存储器或介质被认为是非瞬态的。
操作环境
参考图1,用于一个实施例的操作环境100可包括计算机系统102。计算机系统102可以是多处理器计算机系统,或者也可以不是。操作环境可包括给定计算机系统中的一个或多个机器,它们可以是群集的、客户机-服务器联网的、和/或对等联网的。个体机器是一计算机系统,且一组协同操作的机器也是计算机系统。给定计算机系统102可以例如用应用被配置用于最终用户、用于管理员、作为服务器、作为分布式处理节点、和/或以其他方式配置。
人类用户104可以通过使用显示器、键盘、及其他外围设备106与计算机系统102进行交互。系统管理员、开发人员、工程技术人员、以及最终用户各自都是特定类型的用户104。代表一个或多个人操作的自动化代理也可以是用户104。在某些实施例中,存储设备和/或联网设备可以被认为是外围设备。图1中未示出的其他计算机系统可以与计算机系统102进行交互,或者例如通过网络接口设备使用到网络108的一个或多个连接与另一系统实施例进行交互。
计算机系统102包括至少一个逻辑处理器110。计算机系统102与其他合适的系统一样,还包括一个或多个计算机可读非瞬态存储介质112。介质112可以是不同的物理类型。介质112可以是易失性存储器、非易失性存储器、被安装就位的介质、可移动介质、磁介质、光学介质、和/或其他类型的非瞬态介质(而不是诸如只传播信号的线路之类的瞬态介质)。具体而言,诸如CD、DVD、记忆棒、或其他可移动非易失性存储器介质之类的配置的介质114在被插入或以其他方式安装时可以在功能上变为计算机系统的一部分,从而使其内容可被访问以供处理器110使用。可移动的配置的介质114是计算机可读存储介质112的示例。计算机可读存储介质112的某些其他示例包括内置RAM、ROM、硬盘、以及其他不能被用户104轻松地移走的存储设备。
介质114用可由处理器110执行的指令116来配置;“可执行”在此以宽泛的意义被使用以包括机器代码、可解释代码、以及在例如虚拟机上运行的代码。介质114还被配置有数据118,该数据通过指令116的执行被创建、修改、引用和/或以别的方式使用。指令116和数据118配置它们所驻留的介质114;当该存储器是给定计算机系统的功能部分时,指令116和数据118还配置该计算机系统。在某些实施例中,数据118的一部分代表了诸如产品特征、清单、物理测量值、设定、图像、读数、目标、卷等等之类的现实世界的项。也可以如本文中所讨论的,例如,通过注入、转换、分解、绑定、部署、执行、修改、显示、创建、加载和/或其他操作,来变换这样的数据。
包含源代码122和可执行代码124的代码库120;诸如编译器128、调试器130、以及配置文件132之类的开发工具126;其他软件、本地数据源134(概括地在136处指定的数据源)以及图中所示和/或本文中所讨论的其他项目可部分地或全部地驻留在一个或多个介质112内,从而配置那些介质。
除了处理器110和存储器112之外,操作环境还包括其他硬件,如显示器138、总线、电源和加速度计,等等。
设备102可通过网络108与一个或多个计算群集140和/或一个或多个计算云142通信,每个可具有它们自己相应的数据源144、146以及它们自己的处理器、存储器和软件。在一些环境中,群集和云上的数据源用于比本地数据集大得多的数据集。实际上,群集或云数据集的存储要求可能远远超出本地数据源的数据存储量的容量。
给定操作环境100可包括向开发者提供一组协调的软件开发工具以用于软件开发项目150的集成开发环境(IDE)148或其他软件。具体而言,对于一些实施例,合适的操作环境中的一些包括或帮助创建被配置成支持程序开发的
Figure BDA00002105561500101
Visual
Figure BDA00002105561500102
开发环境(微软公司的标记)。一些合适的操作环境包括
Figure BDA00002105561500103
环境(Oracle America公司的标记),并且一些操作环境包括利用诸如C++或C#(“C-Sharp”)等语言的环境,但本文的教导适用于各种各样的编程语言、编程模型、以及程序,以及适用于软件开发领域本身之外的使用群集计算、云计算、或两者的努力。
在图1中以轮廓形式示出了一个或多个项目来强调它们不一定是所示操作环境的一部分,但是可以与此处讨论的操作环境中的项目互操作。未采用轮廓形式的项在任何附图或任何实施例中也不一定是必需的。
系统
图2示出了适合与一些实施例一起使用的架构。如下文进一步描述的,数据源映射202将源代码122中使用的数据源标识符204映射到诸如本地数据源134、群集数据源144和/或云数据源146之类的相应的数据源136。可执行代码产生器206使用源代码122和数据源映射202以相对于特定数据源和对它们的访问产生被适合于某一执行目标(如本地、群集或云)的可执行代码124。不同的数据执行目标可包含不同的数据集大小,如不同量的相同格式化的数据。例如,数据集的大小可取决于数据集中的数据所代表的时间周期,如本地盘上相当于一个月的数据可占据数百G字节,而云/群集存储上的相当于数年的数据可占据一百T字节的存储。作为另一示例,被映射到某一数据源标识符的一个数据源可包含少于十G字节的数据,而映射到同一数据源标识符的另一数据源包含至少一百G字节的数据。诸如一百G字节或T字节等其他阈值(仅列举两个)也可被使用。无论如何,在这些情形中,一实施例可帮助使开发者容易地相对于多个数据集,如相对较小的一个和相对较大的一个,来测试相同的开发源代码。
除了实现编译和链接的熟悉的指令之外,可执行代码产生器包含用于促进被改编的可执行代码的产生的指令210。例如,在某些实施例中,产生器206包括将数据源标识符204分解成物理位置(分解214)的API 212。在某些实施例中,产生器206包括源到源转换器216,源到源转换器将调用、声明和/或其他代码注入到开发者的源代码122中以获得中间源,中间源随后被编译成适合于执行目标的可执行代码124。
尽管本地、群集和云目标208在本文中被用作示例,但是开发者104可提供不同执行目标208的指定218(例如通过名称、地址、或其他细节)。例如,在某些实施例中可指定多个群集140,而在某些实施例中可不指定云142。
在某些实施例中,用于一个或多个数据源标识符204的数据源映射202被存储在项目特定的结构中,如项目特性220(有时也称为属性)中。
在某些实施例中,用于一个或多个数据源标识符204的数据源映射202被存储在具有可执行代码124的软件包222中,要么以特性220的形式要么以另一形式,例如配置文件132。
参考图1至3,某些实施例提供了具有逻辑处理器110和存储器介质112的计算机系统102,该逻辑处理器和存储器介质由电路、固件和/或软件配置,以通过本文描述的将单个源代码与多个执行目标数据源相协调来变换开发环境,且更具体的是变换源代码。
例如,某些实施例包括逻辑处理器110、操作上与逻辑处理器通信的存储器112、以及配置存储器112的项目。驻留在存储器112中(从而配置存储器)的数据源映射202具有被映射到相应不同执行目标208处的多个不同数据源136的至少一个数据源标识符204。在某些实施例中,数据源映射在存储器112中驻留在例如文本配置文件、非文本项目特性220、另一项目特定的结构、和/或用户特定的结构中。驻留在存储器112中的源代码122(也称为开发者源代码,因为它由开发者104提供)将数据源标识符204叙述为数据源136。
驻留在存储器112中的可执行代码产生器206具有指令210、116,在执行时在不同时间从相同的开发者源代码122自动地产生多个不同的可执行代码124。这些可执行代码124中的每一个引用数据源中的不同一个,即使这些可执行代码中的每一个是从与其他可执行代码相同的源自动生成的。
从而,开发者避免了在开发者的源代码122内管理不同执行目标的细节的负担。例如,开发者的源代码122可不需要用于检测执行位置的代码,并因此可不需要绝对路径346数据源标识符。为特定目标208来改编可执行代码所需的代码可由产生器206注入,例如用于创建用于后续编译的中间源344和/或作为对从开发者的源122产生的可执行代码的补丁。就注入而言,某些实施例使用包含开发者源代码中不存在的调用318的中间源代码344,如文件夹创建调用、云容器创建调用、文件创建调用。
在某些实施例中,可执行代码产生器206包括分解API 212。分解API 212包括指令210,在由处理器执行时会将相对路径334和执行目标208分解成包含物理路径346的数据源分解214。在某些实施例中,可执行代码产生器206包括创建中间源代码344的源到源转换器216。
在某些实施例中,诸如人类用户I/O设备之类的外围设备106(屏幕、键盘、鼠标、图形输入板、话筒、扬声器、运动传感器等等)将可操作地与一个或多个处理器110和存储器进行通信。然而,一实施例也可以深嵌入在系统中,以便没有人类用户104直接与该实施例进行交互。软件进程可以是用户104。
在某些实施例中,该系统包括通过网络连接的多个计算机。网络接口设备可以使用例如诸如分组交换网络接口卡、无线收发机或电话网络接口之类的组件提供对网络108的接入,并将存在于计算机系统中。然而,一实施例也可以通过直接存储器访问、可移动非易失性介质、或其他信息存储-检索和/或传输方法进行通信,或者,计算机系统中的一实施例可以在不与其他计算机系统进行通信的情况下操作。
过程
图3以流程图300示出了某些过程实施例。附图中所示的过程可以在某些实施例中自动地执行,例如,通过IDE 148内的可执行代码产生器206、在脚本控制下、或需要极少或不需要同时地用户输入。除非另外指明,否则过程也可以部分自动地且部分手动地执行。在一给定实施例中,可以重复过程的零个或更多个所示出的步骤,有可能利用不同的参数或数据来操作。一实施例中的步骤也可以按照与图3中展示的自顶向下次序不同的次序来执行。步骤可以串行地、以部分重叠的方式、或完全并行地执行。遍历流程图300以指出在过程中执行的步骤的次序可以在过程的一次执行与该过程的另一次执行之间不同。流程图遍历次序也可以在一个过程实施例与另一过程实施例之间不同。各步骤还可以被省略、组合、重命名、重组、或以其他方式偏离所示出的流程,只要所执行的过程是可操作的,并符合至少一个权利要求。
此处提供了帮助示出该技术的各方面的示例,但是在本文内给出的示例并未描述所有可能的实施例。实施例不仅限于此处所提供的具体实现、排列、显示、特征、方法或情形。给定实施例可包括例如附加的或不同的特征、机制、和/或数据结构,并可以以别的方式偏离此处所提供的示例。
在映射获得步骤302期间,一实施例获得数据源映射202。步骤302可通过例如从文件或从特性集读取映射202,和/或通过其他机制来完成。
在源代码接收步骤304期间,一实施例例如通过IDE 148编辑器、通过从例如文件读取代码和/或通过其他机制来接收开发者源代码122。
在目标标识步骤306期间,一实施例标识至少一个执行目标208(也称为“执行位置”或“执行上下文”)。步骤306可例如通过使用内建默认值和/或通过接受326来自用户104的指定218来完成。
在可执行代码产生步骤308期间,一实施例从开发者源代码122、数据映射202以及目标208指定218自动地产生可执行代码124。与这里描述的数据源标识符204、分解332、分解API 212、源到源转换216、中间源代码344、和/或其他机制协同地可使用常用的编译、链接和其他可执行代码生成机制,以支持管理不同目标处的多个数据源,同时允许开发者使用单个源代码122。
在配置文件读取步骤310期间,该步骤可以是映射获得步骤302的一部分,一实施例使用文件系统、联网和/或其他机制从配置文件132读取数据源映射。更为一般地,在步骤310期间,一实施例从诸如配置文件、项目特性220、或用户特定的设定或环境结构等之类的结构312读取数据源映射202。
在转换执行步骤314期间,一实施例通过注入声明、调用318、和/或使代码适合于某一执行位置的其他代码来自动地执行源到源转换,以从开发者提供的源代码122创建中间源代码344。与适合于如这里所描述地执行的常用语义分析一起,可使用常用的句法机制。
在代码注入步骤316期间,该步骤可作为转换执行步骤314的一部分而发生,一实施例自动地将调用318和/或其他源代码注入到开发者源代码122以形成包含数据源的目标特定的细节和它们的访问机制的中间源代码344。合适的代码变换在本文中被讨论,且提供了示例。在某些实施例中,用户不会有中间源代码344的细节或甚至是存在的负担。
在映射放置步骤320期间,一实施例将数据源映射202放置(如写入、关联、添加)在可分发的软件包222中。映射202可使用适合于放置数据源映射202的常见写入机制来被放置320在例如特性220中、头部中、或配置或环境变量文件中。
在分解生成步骤322期间,该步骤可以是产生步骤308的一部分,一实施例从数据源映射202和开发者源代码122自动地生成数据源分解322。在映射202的数据源标识符204和源代码122中的相对路径334一起使用时,步骤322可包括分解步骤332。
在修改接受步骤324期间,一实施例通过(例如)编辑器或IDE从用户104接受对先前获得302的数据源映射的修改。例如,数据源标识符204可被添加、移除或重命名;目标208可被添加或移除;数据源物理位置可被改变。在修改被接受之前,步骤324可包括存在性检查(如物理位置或目标是否存在)、句法检查(如数据源标识符中缺少URI或绝对路径)、和/或其他有效性测试。
在目标指定接受步骤326期间,一实施例通过(例如)编辑器或IDE从用户104接受对目标208中的至少一个改变的指定,如目标的添加或先前指定的目标的去除。
在映射步骤328期间,一实施例(或操纵一实施例的各方面的用户)例如通过创建或修改数据源映射202将标识符204映射到执行目标数据源136。
在描述步骤330期间,一实施例(或操纵一实施例的各方面的用户)在开发者源代码122中叙述(例如读或写)数据源标识符204。数据源标识符204是(a)标识数据源136且(b)不特定于某一具体目标的数据源的标识符。实际上,数据源标识符204在执行期间不可被原样使用-它必须被映射328。试图使用未经映射的数据源标识符204会导致编译时和/或运行时差错,因为数据源标识符本身中缺少诸如数据源的物理位置之类的细节。
在相对路径分解步骤332期间,该步骤可以是分解生成步骤322的一部分,包括相对路径334的数据源标识符被分解成数据源分解214。
在源修改避免步骤336期间,该步骤可被视作可执行代码产生步骤308的一部分、源代码接收步骤304的一部分、和/或包括从单个接收304到的源代码122产生308用于多个目标的代码的过程的一部分,用户(以及一实施例)避免修改源代码122的用户副本。因此,用户没有提供或理解目标特定的数据源实现细节的负担。
在绝对路径避免步骤338期间,该步骤可被视作可执行代码产生步骤308的一部分、源代码接收步骤304的一部分、和/或包括从单个接收304到的源代码122产生308用于多个目标的代码的过程的一部分,用户(以及一实施例)避免在源代码122中使用绝对路径346来访问数据源136。因此,用户没有提供或理解目标特定的数据源实现细节的负担。
在位置检测代码避免步骤340期间,该步骤可被视作可执行代码产生步骤308的一部分、源代码接收步骤304的一部分、和/或包括从单个接收304到的源代码122产生308用于多个目标的代码的过程的一部分,用户(以及一实施例)避免使用试图检测目标位置或在目标208之间进行区分以便访问所希望的数据源136的源代码122。因此,用户没有提供或理解目标特定的数据源实现细节的负担。
在存储器配置步骤342期间,通过数据源映射202、分解API 214、可执行代码产生器206的其他数据源变换指令,和/或以其他方式连同使用单个源代码和虚拟化在不同的执行位置的数据源的映射,来配置存储器介质112。
下面将参考各实施例比较详细地讨论前面的步骤和它们的相互关系。
某些实施例提供用于协作地管理源代码和多个可供选择的计算数据源的过程。该过程包括获得302数据源映射202,在数据源映射中某一数据源标识符204被映射到各相应执行目标208处的多个数据源136。该过程接收304将数据源标识符叙述330为数据源的开发者源代码,标识306第一执行目标,以及从开发者源代码自动地产生308第一可执行代码。第一可执行代码被适合于第一目标,在第一执行目标中执行时,第一代码124将用第一执行目标的映射的数据源作为由数据源标识符204标识的数据源来操作,即使该源136没有被明确地表示在源代码122中。在标识306具有与第一执行目标不同的数据源的第二执行目标之后,过程自动地——从同一源代码122——产生308被适合于该第二目标的第二可执行代码。也就是说,在第二执行目标中执行时,第二代码124将用第二执行目标的映射的数据源作为被标识的数据源,而不是使用第一执行目标的数据源来操作。
许多变型被考虑。某些实施例包括通过读取文本配置文件或通过读取非文本项目特性来获得302数据源映射。在某些实施例中,接收步骤接收304不需要(即避免338)绝对路径数据源标识符的开发者源代码122。在某些实施例中,执行目标标识步骤标识306以下至少两个:本地执行目标、群集执行目标、云执行目标。在某些实施例中,从相同开发者源代码自动产生308第二可执行代码包括执行314注入316以下调用318中的至少一个的源到源转换:文件夹创建调用、云容器创建调用、文件创建调用。某些实施例包括将数据源映射202放置320在可分发的软件包222中。
从开发者体验的观点,某些实施例包括获得302其中某一数据源标识符被映射到各相应执行目标处的多个数据源的数据源映射,以及从数据源映射202和源代码222为相应的不同执行目标自动地生成322至少两个不同的数据源分解214,而不要求(即避免336)开发者对源代码122的任何改变。
再次,设想了变型。在某些实施例中,获得302包括从项目特定的结构读取310数据源映射。在某些实施例中,生成步骤生成322包含通用资源标识符(URI)的至少一个数据源分解214。在某些实施例中,生成步骤基于以数据源标识符为根的相对路径334生成322、332至少一个数据源分解。在某些实施例中,生成步骤332包含不仅仅是物理存储位置标识符串的替代;如调用318可被注入316。
在某些实施例中,该过程还包括接受324来自开发者104的对数据源映射的修改。某些实施例包括接受326来自开发者的对执行目标的指定,在该情况中,至少一个执行目标可包括多个计算设备,如群集或云作为目标。
INPUT TEMP示例
作为非限制性示例,给出下文以进一步说明可能的实施例。
假设一实施例获得302数据源映射202,在数据源映射中数据源标识符204被映射328到各相应执行位置(各目标208)处的多个数据源136。例如,在下面的映射202中,INPUT和TEMP是数据源标识符,d:/MyData/Input/、\\fileshare\TeamFolder\MyInput\等是数据源,Local(本地)、Cluster(群集)和Cloud(云)是执行位置:
Figure BDA00002105561500171
与USPTO的实践相一致,请注意上面的地址以及本专利文档中的所有其他文字上的URL、URI、目录路径、明显的超链接、以及其他数据源地址旨在仅仅作为示例。它们不旨在要被遵循以到达某一其他文档,且它们不旨在要通过引用而将任何信息结合在本文档中。
在该示例中,该实施例接收304将数据源标识符叙述为数据源的源代码,例如
继续该示例,该实施例还标识306第一执行位置,如本地(Local)。该实施例从源代码自动产生308第一可执行代码,第一可执行代码在第一执行位置中执行时将用第一执行位置的映射的数据源作为数据源来操作,例如好像实际接收的该源代码已经是下面的等效源代码:
Figure BDA00002105561500173
该实施例标识306第二执行位置,例如群集(Cluster),并从相同的源代码自动产生308第二可执行代码,第二可执行代码在第二执行位置中执行时将用第二执行位置的映射的数据源作为数据源来操作,例如就好像接收的源代码已经是下列等效的源代码:
Figure BDA00002105561500181
在考虑该示例时,可能错误地假设本地等效源代码和群集等效源代码之间的仅有的差异是第一行中作为“new folder()”的参数传递的串值。也就是说,乍看起来可能看到通过设置TEMP_DATA_SOURCE=“d:/MyData/Input/”或设置TEMP_DATA_SOURCE=“\\fileshare\TeamFolder\MyInput\”,例如通过使用命令行参数,全局串变量TEMP_DATA_SOURCE可能已被用于获得相同的结果。然而,进一步细看揭示出仅仅设置串不会产生代码来创建new folder()。此外,串变量不足够强大以提供用于群集执行的等效源的功能,因为它不仅仅涉及不同的串,还涉及创建和访问团容器(blobcontainter)而不是文件夹。
实现上述的一种方式是将开发者的源S-original(S-原始)(源代码122)变换成依赖执行位置的源S-dependent(S-依赖)(中间源代码344),然后编译经变换的源S-dependent。在某些情况中,预处理器可被用作源到源转换器216的一部分。
配置的介质
一些实施例包括配置的计算机可读存储介质112。介质112可包括盘(磁盘、光盘,或其他)、RAM、EEPROM或其他ROM、和/或其他可配置存储器,特别包括非瞬态计算机可读介质(而不是有线和其他传播信号介质)。被配置的存储介质可以特别地是诸如CD、DVD或闪存之类的可移动存储介质114。可以是可移动的或不可移动的且可以是易失性的或非易失性的通用存储器可被配置到使用诸如数据源映射202、可执行代码产生器206和分解API 212等项的实施例中来形成配置的介质,这些项采用从可移动介质114和/或诸如网络连接等另一源读取的数据118和指令116的形式。配置的介质112能够使计算机系统执行用于通过在此公开的数据源管理来变换数据的过程步骤。如此,图1到3帮助示出了配置的存储介质实施例和过程实施例,以及系统和过程实施例。具体而言,图3中所示出的,或此处以其他方式教导的进程步骤中的任一个可以被用来帮助配置存储介质以形成已配置的介质实施例。
其他示例
下面提供了额外的细节和设计考虑。如同此处的其他示例,在给定实施例中,所描述的特征可以单独地使用和/或组合地使用,或根本不使用。
那些本领域的技术人员将理解,实现细节可以涉及诸如特定API和特定示例程序之类的特定代码,且因此不必出现在每个实施例中。本领域的技术人员还将理解,在讨论细节时所使用的程序标识符和某些其他术语是实现专用的,且如此不必涉及每个实施例。尽管如此,虽然它们不一定需要出现在这里,但是提供了这些细节,因为它们通过提供上下文可以帮助一些读者,和/或可以示出此处所讨论的技术的许多可能的实现中的一些。
某些实施例提供一种抽象机制,也称为虚拟化。虚拟化可包括包含数据映射202的项目设定或用户设定。在某些方法中,设定文件是对每个项目150自动创建的;现有的用户设定可被导入到文件。设定文件可包含任意数量的引用项以及若干执行位置。对于每个引用项,设定文件映射202具有表示该数据引用的名称(如标识符204)以及每个执行位置的物理数据源(如绝对路径346)。
映射的数据源136可源自不同的数据提供者,如在上述的INPUT TEMP示例中一样。当编码时,用户通过引用名称,例如“INPUT”或“TEMP”来读取/写入数据。如果数据源136具有分层结构,则用户可使用诸如“INPUT/OrderData”之类的相对路径334来引用数据。如果用户需要对来自源的所有数据重复操作,用户可视情况通过写入诸如“foreach(file f in TEMP)do_things(f)”(对于TEMP中的每个文件f,执行do_things(f))或“foreach(filefin INPUT/OrderData)do_things(f)”(对于INPUT/OrderData中的每个文件f,执行do_things(f))之类的代码122来迭代通过数据源136。
当构建项目150时,用户选择各执行目标之一。构建系统然后根据设定文件映射202,利用不同数据提供者之间的适当的映射,将源代码中的名称转换(映射、分解)成对应的物理源。
例如,假设下面的源代码122:
Figure BDA00002105561500191
从该同一源代码122,产生器206可基于哪个目标208被指定来产生可执行代码124。于是,对于本地目标,可执行代码将对应于该中间源344:
Figure BDA00002105561500201
对于群集目标:
Figure BDA00002105561500202
对于云(Cloud)目标:
Figure BDA00002105561500203
下面的讨论源自项目数据库(PDL)文档。项目数据库(Project Data Library)是微软公司设计的软件组件和服务的集合。PDL软件和/或文档的各方面与在此描述的各实施方式的各方面相一致或以其它方式示出这些方面。然而,将理解,PDL文档和/或实现选择不一定限制这些实施方式的范围,并且可能PDL和/或其文档可以很好地包含处于一些实施方式之外的特征。此外,尽管微软AzureTM云技术在示例中被使用,但是这些教示和实施例不必限于该特定云技术(微软公司的标记)。将理解,以下讨论部分地作为对不一定是本领域普通技术人员的读者的帮助来提供的,且因此可包含和/或省略其在下文中的叙述不是支持本发明严格所需的细节。
项目数据库(PDL)特征针对提供跨客户机、云存储、以及远程计算节点的无缝数据访问,无需源代码改变用于远程执行。它包括本地文件存储、分级存储(staging storage)以及计算节点上的文件存储之间的数据引用的按项目的抽象(虚拟化)。本地盒上的PDL可被称为本地PDL,而远程计算节点上的PDL可被称为远程PDL。
Figure BDA00002105561500211
7操作系统软件提供了包含存储用户内容的特定文件夹的库(Library),如“音乐库”和“文档库”(微软公司的标记)。在该情况中,库抽象表示若干文件夹的逻辑分组(一个文件夹是默认写入位置)。相反,PDL可支持跨多个存储和执行环境的映射,如本地文件系统、云存储和远程计算节点的文件系统。
PDL可将本地PDL中的每个文件夹与AzureTM块(blob)存储(微软公司的标记)处的分级存储中的一个容器相映射。例如,本地PDL可被映射到项目空间下的物理文件夹,并包含从完整数据集下载的一个文件;云PDL可被映射到用户的AzureTM存储下的容器;远程PDL可被映射到模型部署目录(“模型”这里称为计算机程序)下的物理文件夹。客户机、云和群集之间的PDL转变从用户的视图去除了云存储的物理性质,用户可集中于数据和建模。因此,可执行代码中的数据引用可使用相对路径,而不硬编码任何绝对路径,这在源代码从本地移植到远程执行环境中时支持模型代码运行,而不需要源代码改变。
在某些方法中,数据引用映射支持AzureTM块的共享访问签名(SAS)URI作为分级存储地址。某些方法在PDL内使用二级深度的目录结构,因此使用AzureTM存储端的容器和块,本地PDL和AzureTM存储之间的映射是直接的。例如,本地PDL下的文件夹名称将对应于容器名称,而该文件夹下的文件名称将对应于块。某些方法关注于文件夹级数据引用映射,即将本地文件夹与AzureTM块存储处的用于项目数据库的容器下的全部内容相映射,而不在本地文件夹和容器内的部分内容之间映射。因此,一个容器下的文件全部被被括在映射中。在某些方法中,项目数据库关注于按项目的实现,而不是机器范围的数据库(data library)。某些版本的AzureTM块存储仅支持两级深度的目录(容器/块),但可通过用‘/’命名块来模拟分层结构(如块名称是“folder/subfolder/name”)来工作。如果源代码引用“INPUT/folder/subfolder/blob”,则产生器将在映射到“INPUT”的容器中映射块“folder/subfolder/name”。
某些方法假设用户104知晓重命名、移动以及删除与PDL相关联的物理文件夹的影响。PDL外的改变将不会自动地与PDL同步。那些映射将被删除并再次被创建。
这里的设计也可适用于三种数据引用目标208之外,以适合于更多的存储目标(如两个HPC群集)和多个分级存储(如两个AzureTM存储账户)。
在某些方法中,远程计算节点的全路径将依赖于经程序运行时将被检索的部署目录,映射202仅跟踪部署目录下的相对路径。
在某些方法中,映射202表中的每行表示数据引用映射。PDL包括数据引用映射的联合,并提供API来提供跨不同环境的数据引用转换。映射名称将是PDL下的数据文件夹的显示名称,它将默认是文件夹名称。
在云存储中,某些方法仅跟踪容器的完整URI;存储账户名称和密钥将不被存储在PDL中。存储账户名称和密钥将被存储在客户机侧的用户设定中。当在数据引用映射中SAS策略与AzureTM块容器相关联时,容器名称之外的特定SAS策略将也被包括在映射信息中。
在某些方法中,包括在PDL中的所有的数据引用映射信息持久保存在项目级,因此当在远程HPC群集上运行时,它可被包括到包222中。PDL信息可被持久保存为像XML的配置文件132,如包含所有数据引用映射的DataLib.pdl,或可被持久保存为多个配置文件,其中一个文件用于一个数据引用映射,或可被持久保存为项目内的项目特性220。当数据引用映射被注册到项目系统或项目150的其他持久存储中时,它可由构建代码在程序封包阶段中访问。因此,云分级存储上的相应数据引用信息和远程计算节点数据下载可被包括在包中。
在某些方法中,PDL提供了数据引用分解以在给定PDL下的相对路径时提供物理路径。当本地返回数据引用分解时,PDL知道映射中的根目录的完整路径。因此,可返回完整路径的串接的串。
然而,PDL不知道远程根目录,只知道模型(程序)部署目录下的文件夹名称。程序部署目录仅在程序运行时被知晓,发出的代码在编译时不知道它。各种方法可被使用来在程序运行时在远程计算节点上分解完整路径,因为在远程节点上没有编译。例如,可对每个映射的本地目标的目录创建文件,如用于batsmapping.config的“C:\BATS”,该文件将位于运行的load_csv的根目录中。当数据被加载以用于映射时,该文件被创建在远程节点上。另选地,可对每个映射对本地目标的本地根目录注册环境变量。
某些方法使用下列API来跨不同环境分解数据引用。
Figure BDA00002105561500231
某些方法使用用于数据引用映射的下列类设计,这表示跨本地PDL、分级存储和远程PDL的映射。注意,ExecutionTarget(执行目标)和VirtualPath(虚拟路径)类将在数据访问API和PDL库之间共享。
Figure BDA00002105561500232
Figure BDA00002105561500241
在继续该代码之前插一句,注意,执行目标(ExecutionTarget)和虚拟路径(VirtualPath)类将在数据访问API和PDL库之间共享。
代码继续:
Figure BDA00002105561500251
通过某些方法,每个存储目标将表示执行环境、分级数据目标、或结果持久存储上的存储引用。存储目标的基础类如下,具有如本地文件系统目标、AzureTM块分级存储、远程目标、结果的持久存储之类的每个特定目标。
Figure BDA00002105561500262
Figure BDA00002105561500271
某些方法还使用虚拟路径类,它表示PDL下的本地文件夹(相对路径):
在某些方法中,下述是用于PDL的类设计,它维护了跨3C(即跨客户机、群集和云)的所有数据引用映射。
Figure BDA00002105561500273
Figure BDA00002105561500281
在继续该代码之前插一句,注意,在该代码清单和本文中的某些其他代码清单中,诸如下列的标签被移除以精简清单空间:
///</summary>
///<param name=“mapping”></param>
空白也被移除,以精简清单空间。代码继续:
Figure BDA00002105561500291
Figure BDA00002105561500301
若干方法可被用于在客户机侧持久保存PDL信息(如映射202)。可使用XML类配置文件来将PDL信息包括在项目中并将配置文件添加到项目中。另选地,可修改项目管理系统以将PDL信息添加为项目特性220,项目特性可通过右击项目文件并选择特性来输入和编辑。另一选项是充分利用客户机基础结构的IpropertyCollection(I特性收集)接口。
在某些方法中,数据引用映射202被保存为XML文件,如像DataLib.pdl文件。某些方法假设用户可在该文件中创建和编辑映射,以及可使用IDE 148将该文件添加到项目中。可使用DataContractSerializer(数据合同串行化器)来生成PDL XML,且对应的元素名称将被作为属性添加在C#类定义中。
Figure BDA00002105561500311
关于本地运行,假设用户编写了叙述标识符204的源代码,如load_csv(dataref(“BATS\a.csv”))。在某些方法中,数据引用(dataref)寻找项目数据库中本地的数据引用映射信息,转换该路径,然后调用load_csv(“c:\data\BatsData\a.csv”)。例如,dataref(“BATS\a.csv”)可被转换成如下访问PDL映射信息的函数。用于该映射的本地根目录将在被发出用于本地运行的函数中内联。
Figure BDA00002105561500312
Figure BDA00002105561500321
当为云封包时,某些方法将pdl文件打包到包222中。当使用AzureTM存储作为分级存储为远程计算节点执行封包时,可创建具有SAS URI的另一pdl文件用于数据安全性。SAS生成将被在例如MSBuild内触发,并对于用户是透明的。为了创建该文件,用SAS生成的路径来替代云目标的路径;用计算节点上数据的预期位置替代本地目标的路径。如果知道程序将在哪里被解包,数据将在同一文件夹下被加载;否则,可创建文件夹。可创建新的DataLib.pdl文件,它将被包括在包中:
Figure BDA00002105561500322
Figure BDA00002105561500331
该DataLib.pdl与程序(也称为模型)一起被置于包中。在程序运行时进行解包期间,找到DataLib_cloud.pdl。从该名称,知道要从云将数据拉到本地。因此,转到每个SAS生成的路径,将数据拉到相应的本地路径。在数据引用映射中,知道文件夹名称,但不是完整名称。数据加载(是PDL之外的组件)将检索根部署目录,并例如使用可扩展性框架来对数据目的地生成完整路径。
关于远程运行,假设用户编写与上述相同的代码load_csv(dataref(“BATS\a.csv”))。数据引用(dataref)寻找DataLib_cloud.pdl中本地的映射信息,并转换该路径,然后调用load_csv(“c:\deploymentroot\\TradingStrategy\BATS\a.csv”)。dataref的可执行函数将读取先前的数据加载阶段中生成的batsmapping.config,以分解用于BATS映射的根目录,dataref将返回根目录和从自变量传递来的虚拟路径的串接。因此,a.csv的本地路径可基于远程计算节点上的本地文件引用而被分解。
关于线程安全性,在某些方法中,每个项目将具有分开的PDL以及PDL上的下列操作:将数据引用映射添加(Add)到存储器中(in-memory)PDL中,将存储器中PDL实例保存(Save)到文件中,从文件将PDL加载(Load)到存储器中PDL实例,分解(Resolve)物理路径,获得(Get)数据引用映射。每项目有一个存储器中PDL数据结构,它包含多个数据引用映射,且还存在一持久保存的XML文件,它可被加载到PDL存储器中结构中。在某些方法中,PDL将在数据库资源管理器(DLE)中被调用供用户将映射添加到存储器中(in-memory)的一个(仅在客户机上),在MSBuild中被调用以从存储器中PDL获得映射(仅客户机),以及被调用用于数据加载以加载PDL/添加映射/保存PDL(仅远程)。DLE和MSBuild将不同时修改PDL,因此对于存储器中PDL或PDL文件来说没有争用。
某些方法提供下面的功能约束。对于数据库的创建、保存和加载:数据库的映射和设定要通过公共接口被正确创建、保存和加载;要支持从构造函数创建新的数据库;要支持将数据库保存到文件;要支持从持久存储加载数据库;以及要检测和避免保存到无效或不存在的路径或从无效或不存在的路径加载。
对于添加新的条目到PDL中:用户可成功地将新的唯一条目注册到PDL中,为以下提供支持:将新的唯一映射条目添加(Adding)到PDL中,将重复的映射条目添加到PDL中,添加具有相同AzureTM存储路径但不同本地路径的条目,以及尝试(Attempting to)添加具有相同本地路径但不同AzureTM存储的新条目。
对于改变(Changing)现有PDL,用户将能够加载现有PDL,进行某些改变并再次保存,如添加新的条目、编辑现有条目、删除现有条目。
对于数据文件夹、存储和块的命名,将理解不同目标可具有不同的命名约定和限制。数据库可检查文件引用以确保它们有效。在某些方法中,如用户场景所要求的或对差错相应地采取行动那样,库可返回正确的映射、分解的资源地址或差错(如果不在数据库内)。同样,对资源的搜索和分解可被假设为是可重复的且确定性的,例如具有用于分解本地文件、映射到AzureTM存储资源URI、分解远程目标、以及分解2级目录内的资源等功能。
结论
虽然具体实施例在此处被明确示出并描述为进程、已配置的介质、或系统,但是可以理解,对一种类型的实施例的讨论也一般性地延伸到其他实施例类型。例如,结合图3对过程的描述也帮助描述已配置的介质,并帮助描述类似于结合其他附图所讨论的那些的系统和产品的操作。对一个实施例的限制也不一定适用于另一个实施例。具体而言,进程不一定仅限于在讨论诸如已配置的存储器之类的系统或产品时呈现的数据结构和方案。
不是图中所示出的每一项都需要存在于每个实施例中。相反,实施例可以包含图中未显式地示出的项。虽然一些可能性在此处通过具体示例在文本和附图中示出,但是各实施例可以偏离这些示例。例如,一示例的具体特征可以被省略、重命名、以不同的方式分组、重复、不同地以硬件和/或软件实例化,或是在两个或更多示例中出现的特征的混合。在某些实施例中,在一个位置处示出的功能也可以在不同的位置处提供。
通过附图标记参考了附图。在附图或文本中与给定附图标记相关联的措词中的任何显而易见的不一致性应该被理解为仅仅时拓宽该标记所引用的内容的范围。
如此处所使用的,诸如“一”和“该”等术语包括了所指示的项目或步骤中的一个或多个。具体而言,在权利要求书中,对一个项的引用一般表示至少一个这样的项存在,并且对一个步骤的引用表示执行该步骤的至少一个实例。
标题是仅出于方便起见的;关于给定话题的信息可在其标题指示该话题的节之外找到。
所提交的所有权利要求和摘要是说明书的一部分。
尽管在附图中示出并在上文中描述了示例性实施例,但本领域普通技术人员将明白,可作出多种修改而不脱离权利要求书中阐明的原理和概念,且这些修改不需要涵盖整个抽象概念。尽管用结构特征和/或过程动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于权利要求书上面所描述的具体特征或动作。不一定在给定定义或示例中标识的每一个手段或方面都在每个实施例中存在或使用。相反,所描述的具体特征和动作是作为供当实现权利要求书时考虑的示例来公开的。
无法包围整个抽象概念但落入权利要求的等效技术方案的意义和范围内的所有改变都在法律所准许的最大程度内被包含在其范围内。

Claims (10)

1.一种用于协作地管理源代码和多个可供选择的计算数据源的方法,所述方法包括以下步骤:
获得数据源映射,在所述数据源映射中特定数据源标识符被映射到各相应执行目标处的多个数据源;
接收将所述数据源标识符叙述为数据源的开发者源代码;
标识第一执行目标;
从所述开发者源代码自动产生第一可执行代码,所述第一可执行代码在所述第一执行目标中执行时将以所述第一执行目标的映射的数据源作为所述数据源标识符所标识的数据源来操作;
标识具有与所述第一执行目标不同的数据源的第二执行目标;以及
从相同的源代码自动产生第二可执行代码,所述第二可执行代码在所述第二执行目标中执行时将以所述第二执行目标的映射的数据源而不是以所述第一执行目标的数据源作为所标识的数据源来操作。
2.如权利要求1所述的方法,其特征在于,执行目标标识步骤标识以下中的至少两个:本地执行目标、群集执行目标、云执行目标。
3.如权利要求1所述的方法,其特征在于,从相同的开发者源代码自动产生第二可执行代码的步骤包括执行源到源转换,所述源到源转换注入以下中的至少一个:文件夹创建调用、云容器创建调用、文件创建调用。
4.一种用数据和指令配置的计算机可读非瞬态存储介质,所述指令在被至少一个处理器执行时使所述处理器执行供开发者使用的方法,所述方法包括以下步骤:
获得数据源映射,在所述数据源映射中特定数据源标识符被映射到各相应执行目标处的多个数据源;以及
从所述数据源映射以及源代码自动生成至少两个不同数据源分解用于相应的不同执行目标,而不要求由所述开发者对所述源代码做出任何改变。
5.如权利要求4所述的配置的介质,其特征在于,所述生成步骤生成以下中的至少一个:包含统一资源标识符的数据源分解、基于以所述数据源标识符为根的相对路径的数据源分解。
6.如权利要求4所述的配置的介质,其特征在于,所述生成步骤不仅仅包含物理存储位置标识符串的替代。
7.如权利要求4所述的配置的介质,其特征在于,所述方法还包括从所述开发者接受对执行目标的指定,所述执行目标中的至少一个包括多个计算设备,用于该执行目标的映射的数据源包含至少一T字节的数据。
8.一种计算机系统,包括:
逻辑处理器;
与所述逻辑处理器操作上通信的存储器;
驻留在所述存储器中并具有特定数据源标识符的数据源映射,所述数据源标识符被映射到相应的不同执行目标处的多个不同数据源;
驻留在所述存储器中的开发者源代码,所述开发者源代码具有在所述开发者源代码内被叙述为数据源的数据源标识符;以及
驻留在所述存储器中且具有指令的可执行代码产生器,所述指令在执行时在不同时间从相同的开发者源代码自动产生多个不同的可执行代码,每个可执行代码引用所述数据源中的不同一个。
9.如权利要求8所述的系统,其特征在于,所述开发者源代码不需要用于检测执行位置的代码,且所述开发者源代码也不需要绝对路径数据源标识符。
10.如权利要求8所述的系统,其特征在于,所述数据源映射驻留在以下中的至少一个中:文本配置文件、非文本项目特性、项目特定的结构、用户特定的结构。
CN201210327750.0A 2011-09-07 2012-09-06 用于管理数据源的方法和系统 Active CN102902529B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/226,679 US8863082B2 (en) 2011-09-07 2011-09-07 Transformational context-aware data source management
US13/226,679 2011-09-07

Publications (2)

Publication Number Publication Date
CN102902529A true CN102902529A (zh) 2013-01-30
CN102902529B CN102902529B (zh) 2017-04-12

Family

ID=47574776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210327750.0A Active CN102902529B (zh) 2011-09-07 2012-09-06 用于管理数据源的方法和系统

Country Status (6)

Country Link
US (1) US8863082B2 (zh)
EP (1) EP2754032B1 (zh)
JP (2) JP2014529832A (zh)
KR (1) KR101944570B1 (zh)
CN (1) CN102902529B (zh)
WO (1) WO2013036460A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017129016A1 (zh) * 2016-01-28 2017-08-03 阿里巴巴集团控股有限公司 一种资源访问方法、装置及系统
CN107025108A (zh) * 2015-11-09 2017-08-08 达索系统美国公司 从源代码管理(scm)系统将分级数据导出到产品生命周期管理(plm)系统
CN107025104A (zh) * 2016-02-02 2017-08-08 龙芯中科技术有限公司 内核开发管理系统和方法
CN108027773A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 存储器访问指令顺序编码的生成和使用
CN112867989A (zh) * 2018-09-04 2021-05-28 阿韦瓦软件有限责任公司 基于流的组成以及监视服务器系统和方法
CN115292160A (zh) * 2014-11-05 2022-11-04 起元技术有限责任公司 应用程序测试
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9451393B1 (en) * 2012-07-23 2016-09-20 Amazon Technologies, Inc. Automated multi-party cloud connectivity provisioning
US9361068B2 (en) 2014-05-21 2016-06-07 International Business Machines Corporation System and method for using development objectives to guide implementation of source code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
CN105701118B (zh) * 2014-11-28 2019-05-28 国际商业机器公司 用于归一化文件的非数值特征的方法和装置
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
EP3436927B1 (en) * 2016-03-30 2023-12-13 Amazon Technologies Inc. Processing pre-existing data sets at an on-demand code execution environment
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US9971594B2 (en) * 2016-08-16 2018-05-15 Sonatype, Inc. Method and system for authoritative name analysis of true origin of a file
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US20200019882A1 (en) * 2016-12-15 2020-01-16 Schlumberger Technology Corporation Systems and Methods for Generating, Deploying, Discovering, and Managing Machine Learning Model Packages
KR20180072436A (ko) * 2016-12-21 2018-06-29 엘에스산전 주식회사 프로그램 제공 장치
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
KR102202121B1 (ko) * 2019-03-06 2021-01-13 주식회사 커먼컴퓨터 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
CN111479265B (zh) * 2020-03-09 2021-06-18 珠海格力电器股份有限公司 信息传播方法、装置、计算机设备和存储介质
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US10997243B1 (en) * 2020-06-30 2021-05-04 Snowflake Inc. Supporting unstructured, semi-structured, and structured files
US11423081B1 (en) * 2020-06-30 2022-08-23 Snowflake Inc. Accessing files in a database stage using a user defined function
US11361026B2 (en) 2020-06-30 2022-06-14 Snowflake Inc. Accessing files in a database stage using a user defined function
CN111984944B (zh) * 2020-08-28 2024-04-19 重庆小雨点小额贷款有限公司 一种源代码处理方法、相关装置及存储介质
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11645243B2 (en) 2021-06-07 2023-05-09 Snowflake Inc. Accessing files in a database stage using a user defined function
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN113688285B (zh) * 2021-08-23 2024-05-03 同济大学 一种用于工业互联网标识的信息模型的建模方法及装置
CN114840598B (zh) * 2022-07-04 2022-10-04 好享家舒适智能家居股份有限公司 一种创建运行时数据源并自动切换的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039727A1 (en) * 2001-01-17 2004-02-26 International Business Machines Corporation Mapping data from multiple data sources into a single software component
US20050138609A1 (en) * 2003-12-18 2005-06-23 Kevin Mitchell Method of translating computer program code, communications system and network management entity therefor
CN1862492A (zh) * 2005-05-12 2006-11-15 施乐公司 可执行代码拷贝的唯一标识的创建方法及其管理
CN101968793A (zh) * 2010-08-25 2011-02-09 大唐软件技术股份有限公司 一种基于异构数据源数据核对的方法和系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2718427B2 (ja) * 1988-12-20 1998-02-25 富士通株式会社 大規模知識ベースにおけるデータアクセス方式
CA2025160A1 (en) 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
JPH1031603A (ja) * 1996-07-17 1998-02-03 Nec Corp 情報処理システム、クライアント/サーバシステム、およびデータベースアクセス方法
US5920721A (en) 1997-06-11 1999-07-06 Digital Equipment Corporation Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments
JPH1165832A (ja) * 1997-08-21 1999-03-09 Sony Corp ソースコード変換方法及び記録媒体
JP3067707B2 (ja) * 1997-08-28 2000-07-24 三菱電機株式会社 クライアント/サーバ・プログラム生成方法
JP3292160B2 (ja) * 1998-12-18 2002-06-17 日本電気株式会社 Cobol言語のソースプログラムのコンバージョン方法及び装置並びに記録媒体
US7009980B1 (en) 2000-03-13 2006-03-07 Lucent Technologies Inc. Apparatus and method for automatic port identity discovery in hierarchical heterogenous systems
JP2001306326A (ja) * 2000-04-24 2001-11-02 Sony Corp データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体
JP2002318692A (ja) * 2001-04-19 2002-10-31 Sony Corp インストール支援システム、インストール支援装置、インストール支援方法、インストールを支援するためのプログラムおよびそのプログラムを記録した記録媒体
US6941547B2 (en) * 2001-06-25 2005-09-06 International Business Machines Corporation Apparatus and method for porting applications to different platforms
US6986135B2 (en) * 2001-09-06 2006-01-10 Cognos Incorporated Deployment manager for organizing and deploying an application in a distributed computing environment
EP1676217B1 (en) 2003-09-15 2011-07-06 Ab Initio Technology LLC Data profiling
US7590972B2 (en) 2004-10-28 2009-09-15 Cogency Software, Inc. Role-oriented development environment
JP2008538016A (ja) * 2004-11-12 2008-10-02 メイク センス インコーポレイテッド 概念または項目を用いて知識相関を構成することによる知識発見技術
JP2007004503A (ja) * 2005-06-24 2007-01-11 Mitsubishi Electric Corp プログラム変換方式およびプログラム変換方法およびコード変換プログラム
JP2007133820A (ja) * 2005-11-14 2007-05-31 Nec Corp プログラム開発支援装置およびプログラム開発支援方法
US8789016B2 (en) * 2005-12-29 2014-07-22 Panasonic Corporation Systems and methods for providing user configurable software libraries
US7543282B2 (en) 2006-03-24 2009-06-02 Sun Microsystems, Inc. Method and apparatus for selectively executing different executable code versions which are optimized in different ways
US7814498B2 (en) * 2006-05-01 2010-10-12 Microsoft Corporation Loading application resources
US9158538B2 (en) * 2007-05-21 2015-10-13 International Business Machines Corporation User-extensible rule-based source code modification
US8429645B2 (en) * 2007-08-14 2013-04-23 International Business Machines Corporation Method for optimizing migration of software applications to address needs

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039727A1 (en) * 2001-01-17 2004-02-26 International Business Machines Corporation Mapping data from multiple data sources into a single software component
US20050138609A1 (en) * 2003-12-18 2005-06-23 Kevin Mitchell Method of translating computer program code, communications system and network management entity therefor
CN1862492A (zh) * 2005-05-12 2006-11-15 施乐公司 可执行代码拷贝的唯一标识的创建方法及其管理
CN101968793A (zh) * 2010-08-25 2011-02-09 大唐软件技术股份有限公司 一种基于异构数据源数据核对的方法和系统

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292160A (zh) * 2014-11-05 2022-11-04 起元技术有限责任公司 应用程序测试
CN108027773A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 存储器访问指令顺序编码的生成和使用
CN108027773B (zh) * 2015-09-19 2022-09-20 微软技术许可有限责任公司 存储器访问指令顺序编码的生成和使用
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
CN107025108A (zh) * 2015-11-09 2017-08-08 达索系统美国公司 从源代码管理(scm)系统将分级数据导出到产品生命周期管理(plm)系统
CN107025108B (zh) * 2015-11-09 2021-06-15 达索系统美国公司 从源代码管理(scm)系统将分级数据导出到产品生命周期管理(plm)系统
WO2017129016A1 (zh) * 2016-01-28 2017-08-03 阿里巴巴集团控股有限公司 一种资源访问方法、装置及系统
CN107015996A (zh) * 2016-01-28 2017-08-04 阿里巴巴集团控股有限公司 一种资源访问方法、装置及系统
CN107025104A (zh) * 2016-02-02 2017-08-08 龙芯中科技术有限公司 内核开发管理系统和方法
CN112867989A (zh) * 2018-09-04 2021-05-28 阿韦瓦软件有限责任公司 基于流的组成以及监视服务器系统和方法

Also Published As

Publication number Publication date
JP2014529832A (ja) 2014-11-13
EP2754032A2 (en) 2014-07-16
US8863082B2 (en) 2014-10-14
JP2017215999A (ja) 2017-12-07
EP2754032A4 (en) 2015-06-24
WO2013036460A2 (en) 2013-03-14
EP2754032B1 (en) 2021-04-07
KR20140060299A (ko) 2014-05-19
CN102902529B (zh) 2017-04-12
US20130061208A1 (en) 2013-03-07
KR101944570B1 (ko) 2019-01-31
JP6457594B2 (ja) 2019-01-23
WO2013036460A3 (en) 2013-05-10

Similar Documents

Publication Publication Date Title
CN102902529A (zh) 变换的上下文知晓数据源管理
Estublier et al. Impact of software engineering research on the practice of software configuration management
CN102402451B (zh) 用户定义类型的编译时边界检查
CN102696026A (zh) 带有增量改变的高效不可变句法表示
Burgueño et al. On the concurrent execution of model transformations with linda
Gruber et al. LLAMA: The low‐level abstraction for memory access
Karim et al. Scala and Spark for Big Data Analytics: Explore the concepts of functional programming, data streaming, and machine learning
Sriplakich et al. Collaborative software engineering on large-scale models: requirements and experience in modelbus
Garcia-Dominguez et al. Integration of a graph-based model indexer in commercial modelling tools
Lopes Torchy: A tracing jit compiler for pytorch
Burgueño et al. LinTraP: Primitive Operators for the Execution of Model Transformations with LinTra.
Mattis et al. Ambiguous, informal, and unsound: metaprogramming for naturalness
US20120330878A1 (en) Conventions for inferring data models
Zhao et al. A framework for synchronization between feature configurations and use cases based on bidirectional programming
Bazerman The Semantics of Package Management via Event Structures
Endel et al. R & GIS: Geospatial Plotting
Barghi Gremlin++ & Bitgraph: Implementing the Gremlin Traversal Language and a GPU-Accelerated Graph Computing Framework in C++
Garcia et al. Multiversion Hindsight Logging for Continuous Training
Duldulao et al. Spring Boot and Angular: Hands-on full stack web development with Java, Spring, and Angular
Liu et al. Applying FAIR4RS principles to develop an integrated modeling environment for the magnetic confinement fusion
Peres Entity Framework Core Cookbook
Hamann et al. Towards supporting multiple execution environments for uml/ocl models at runtime
Basciani et al. TyphonML: Tool support for hybrid polystores
Matzinger Hands-On Data Structures and Algorithms with Rust: Learn programming techniques to build effective, maintainable, and readable code in Rust 2018
Gabrijelčič Hands-On Design Patterns with Delphi: Build applications using idiomatic, extensible, and concurrent design patterns in Delphi

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1179370

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150727

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1179370

Country of ref document: HK