JP2017215999A - 変換コンテンツ・アウェア・データー・ソース管理 - Google Patents

変換コンテンツ・アウェア・データー・ソース管理 Download PDF

Info

Publication number
JP2017215999A
JP2017215999A JP2017150802A JP2017150802A JP2017215999A JP 2017215999 A JP2017215999 A JP 2017215999A JP 2017150802 A JP2017150802 A JP 2017150802A JP 2017150802 A JP2017150802 A JP 2017150802A JP 2017215999 A JP2017215999 A JP 2017215999A
Authority
JP
Japan
Prior art keywords
data
source
code
data source
execution target
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
JP2017150802A
Other languages
English (en)
Other versions
JP6457594B2 (ja
Inventor
ツァオ,アンソン・アン−チュン
An-Chun Tsao Anson
カオ,ヤン
Yang Cao
ジャーン,プゥシェン
Pusheng Zhang
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 Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of JP2017215999A publication Critical patent/JP2017215999A/ja
Application granted granted Critical
Publication of JP6457594B2 publication Critical patent/JP6457594B2/ja
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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】複数のデーター・ソースに対して同じソース・コードを使用することによって、ローカル、クラスター、およびクラウド実行間の移植を補助する。
【解決手段】ソース・コード122において言明されるデーター・ソース識別子が、異なる実行ターゲットにおいてデーター・ソース144、146にマッピングする。解決APIを使用して、開発者のソース・コードを変更することなく、連続ターゲット専用に作られた実行可能コードが生成される。編集可能なデーター・ソース・マッピングは、プロジェクト毎であり、ファイルまたはプロジェクト・プロパティに維持され、実行可能コードと共に分散可能ソフトウェア・パッケージに置かれる。ソース−ソース間変換は、フォルダー、ファイル、またはクラウド・コンテナを作るコールを注入する。データー・ソース解決は、データー・ソース識別子を根源とする相対パスに基づくことができる。
【選択図】図1

Description

[0001] 1つの装置(machine)において実行するように個別製作された(tailor)コンピ
ューター・プログラムは、追加の処理パワーおよび/または追加のメモリーを利用するために、代わりに複数の装置において実行するように、開発者によって変更できる場合がある。例えば、開発者が、本来1つのデスクトップ・コンピューターにおいて実行するように書かれたプログラムを取り上げ、計算クラスター、または計算クラウドというような1群のコンピューターにおいて代わりに実行させることを望む場合がある。更に一般的には、開発者が、特定の処理ロジックを適用して異なるデーター・ソースを処理することを望むが、各データー・ソースをそのロジックのパラメーターとして明示的に指定したくない場合もある。
[0002] 計算クラスターとは、高速ローカル・エリア・ネットワークまたは他の比較的高速な通信メカニズムを介して互いにリンクされた1群のコンピューターである。クラスター内のコンピューターは、このクラスターを外部から見たときに1つの強力なコンピューターとして挙動するように、互いに調整し合う。
[0003] 計算クラウドとは、構成設定変更可能な計算リソース(例えば、サーバー、ストレージ、アプリケーション、およびソフトウェア・サービス)をネットワーク化した共有プール(pool)である。クラウドのリソースは、ユーザーによる計算要求が増大または減少するにしたがって、素早くユーザーに利用可能にすることができ、そして容易に開放することができる。アプリケーションは、クラウド・サーバーによってブラウザに提供することができるので、アプリケーションのクライアント・コピーをローカルにインストールする必要はない。
[0004] クラスターおよびクラウドについては種々の定義が使用されている。この説明に限って言えば、クラスターは、1000個未満の処理コアを含み、および/または1つの建造物内に存在する。対照的に、計算クラウドは、1000個以上のコアを含み、および/または2つ以上の建造物内に存在する。
[0005] プログラムをローカル実行コンテキストからクラスターまたはクラウド実行に移植する場合、煩わしくエラーが生じやすいコード変更を必要とする可能性があり、更に具体的には、そのプログラムにおいて使用されるデーター・ソースに対する参照を修正する(modify)変更(change)を必要とすることもある。非常に異なるサイズのデーター集合
を対象にするプログラムを実行させることは、開発者にとって非常に意欲をかき立てることであり得る。本明細書において説明する実施形態は、1つのソース・コード・アルゴリズムを複数の代替計算データー・ソースによって自動的に管理する方法というような、広範囲のデーター集合にアクセスを与えるために、プログラム移植性を高める方法を提供する。
[0006] 例えば、データー・ソース・マッピングが存在するシナリオの中には、特定のデーター・ソース識別子が、それぞれの実行ターゲットにおいて実質的に異なるサイズの複数のデーター・ソースにマッピングされる。例えば、ローカル装置における数百ギガバイトに対してクラスターにおける数テラバイト、およびクラウドにおける数十または数百テラバイトにマッピングされることもある。一実施形態では、データー・ソース識別子を
データー・ソースとして言明する(recite)ソース・コードを受ける。第1実行ターゲットを特定した後、この実施形態は、ソース・コードから、第1実行ターゲット専用に作られる第1実行可能コードを自動的に生成する。即ち、第1実行ターゲットにおいて実行するとき、実行可能ファイル(executable)は、第1実行ターゲットのマッピングされたデーター・ソースを、データー・ソース識別子によって特定されるデーター・ソースとして動作する。第1実行ターゲットとは異なるデーター・ソースを有する第2実行ターゲットを特定した後、本実施形態は、自動的に、同じソース・コードから、第2実行ターゲット専用に作られた第2実行可能コードを生成する。即ち、第2実行ターゲットにおいて実行するとき、第2実行可能ファイルは、第1実行ターゲットのデーター・ソースを使用する代わりに、第2実行ターゲットのマッピングされたデーター・ソースを、特定されたデーター・ソースとして動作する。先に注記したように、この移植(port)は、開発者がソース・コードを編集する必要なく、行われる。
[0007] 実施形態の中には、データー・ソース・マッピングがテキスト構成ファイルにおいて維持される場合があり、そして実施形態の中には、非テキスト・プロジェクト・プロパティ、プロジェクト・ヘッダー、または他のプロジェクト特定構造から読み取られる場合がある。実施形態の中には、データー・ソース・マッピングが、分散可能なソフトウェア・パッケージの中に入れられることによって、どの実行位置(1つまたは複数)が現在パッケージにおける実行可能コードによってサポートされているかには関係なく、移植性が促進される。
[0008] 一実施形態では、ソース・コードにおいて実行ターゲットを決定し、ソース・コードにおいて明示的に異なる実行位置を扱う開発者の負担を低減または解消することができる。実施形態の中には、例えば、ソース・コードは絶対パス・データー・ソース識別子がない(free)場合もある。一実施形態では、開発者がソース・コード反復によって1つの装置におけるローカルな小さいデーターの部分集合と素早く作業し、次いで選択されたプログラム反復をクラウドまたはクラスターにおけるもっと大きなデーターに対して検査するのを補助する機敏さを提供することができる。
[0009] 実施形態の中には、コードを移植するために自動的なソース−ソース間変換メカニズム(source-to-source translation mechanism)を利用するものもある。データー・ソースの移植は、物理的記憶位置識別子ストリングの単なる交換を超えることを含む(encompass)こともある。例えば、実施形態の中には、第1実行可能ファイルが得られた(lead
to)同じソース・コードからの第2実行可能コードの自動生成が、フォルダー作成コール、クラウド・コンテナ作成コール、またはファイル作成コールというような、ソースの開発者のバージョンにはなかったコールを注入するソース−ソース間変換を必要とするものもある。他のマッピングは、データーベース接続および単なるファイル・ベースのストレージには留まらないものを必要とすることもあり、例えば、ローカル、企業、クラウド・サーバー、または開発サーバーおよび製作サーバーというような、異なるデーター・ベース・サーバーをマッピングすることもある。ファイル・システム(例えば、Windows(登
録商標)NTFS(商標)システム)およびクラウド・ストレージ(例えば、Windows(登録
商標)Azure(商標)ストレージまたは他のクラウド・ストレージ)が、異なる記憶構造
を有するのでもよく、実施形態の中には、これらの構造間でのマッピングに備えるものもある(Microsoft Corporationの商号(mark))。
[0010] 開発者の観点から、実施形態は、特定のデーター・ソース識別子がそれぞれの実行ターゲットにおける複数のデーター・ソースにマッピングされるデーター・ソース・マッピングを得る。次いで、この実施形態は、開発者がソース・コードに対して全く変更する必要なく、データー・ソース・マッピングおよびソース・コードからデーター・ソース解決(resolution)を自動的に生成する。異なるデーター・ソース解決は、異なる実行タ
ーゲットに対応し、例えば、ユニバーサル・リソース識別子を使用する特定のクラウド・データー・ソースまたは特定のクラスター・データー・ソースに対応する。実行ターゲットは、開発者によって指定されてもよく、またはデフォルトとして指定されてもよい。実施形態の中には、データー・ソース解決が、データー・ソース識別子を根源とする相対的パスに基づくことができるものもある。実施形態の中には、開発者からのデーター・ソース・マッピングの変更を受け入れるものもある。
[0011] アーキテクチャー的観点からは、実施形態は、論理プロセッサーと、この論理プロセッサーと動作可能に通信するメモリーとを含む。データー・ソース・マッピングはメモリー内に存在し、特定のデーター・ソース識別子を有する。この識別子は、それぞれの異なる実行ターゲットにおける複数の異なるデーター・ソースにマッピングされる。データー・ソース・マッピングは、例えば、テキスト構成ファイル、非テキスト・プロジェクト・プロパティ、プロジェクト特定構造、および/またはユーザー特定構造内に存在まてゃあ存続することができる。また、ソース・コードはメモリーにも存在し、データー・ソース識別子は、ソース・コード内部のデーター・ソースとして言明される。メモリー内に存在する実行可能コード・プロデューサーは、命令を有し、これらの命令が実行されると、同じソース・コードから異なる時点において複数の異なる実行可能コードを自動的に生成し、各実行可能コードがデーター・ソースの内異なる1つに対する参照を行う。
[0012] 実施形態の中には、ソース・コードには実行位置を検出するためのコードがない場合もある。実施形態の中には、ソース・コードには絶対パス・データー・ソース識別子がない場合もある。実施形態の中には、実行可能コード・プロデューサーによって生成される実行可能コードを含むものもあり、この実行可能コードが、ソース・コード内にはない注入コード、例えば、フォルダー作成コール、クラウド・コンテナ作成コール、および/またはファイル作成コールを含む(contain)。
[0013] 実施形態の中には、実行可能コード・プロデューサーが解決APIを含むものもある。解決APIは、プロセッサーが実行すると、相対的パス(relative path)および
実行ターゲットを解決し、物理的パスを含むデーター・ソース解決を得る。実施形態の中には、実行可能コード・プロデューサーがソース−ソース間トランスレーターを含む場合もある。異なる実施形態が1つ以上の全体的手法を採用するのでもよい。1つの手法では、ローカル装置において、ソース・コードが、指定された実行ターゲットに対する中間コード(IC)または実行可能コード(EC)に変換される。次いで、このICまたはECが展開され、実行ターゲットにおいて実行される。第2の手法では、ソース・コードが最初に実行ターゲットに変換する。この実行ターゲット用に設計されたプロデューサーが、該当するコードを変換する。第3の手法では、データーがコードに対してローカルであるかのように、ソース・コードが変換される。次いで、データーがリモート位置にある環境にこのコードが展開されると、プレタスク(pre-task)がデーターを最初にダウンロードするので、コードがローカル・データーにアクセスすることができる。
[0014] 以上に挙げた例は単なる例示に過ぎない。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。むしろ、この摘要は、詳細な説明において以下で更に説明する概念の一部を、簡略化した形態で、紹介するために設けられる。本発明は、特許請求の範囲によって定められ、この適用が特許請求の範囲と矛盾する場合には、特許請求の範囲が優先する。
[0015] 添付図面を参照して、更に特定的な説明を行う。これらの図面は、単に選択した形態を例示するに過ぎず、したがって適用範囲(coverage)または範囲を完全に決定する
のではない。
図1は、複数のネットワーク・ノードにおいて一般に存在する動作環境における、少なくとも1つのプロセッサー、少なくとも1つのメモリー、ソース・コード、および他の品目を有するコンピューター・システムを示し、更に構成された記憶媒体実施形態も示すブロック図である。 図2は、アーキテクチャー例における変換コンテキスト・アウェア・データー・ソース管理を示すブロック図である。 図3は、プロセスおよび構成された記憶媒体実施形態のステップを示すフロー・チャートである。
全体像
[0019] データーの急増に直面している分野では、クラスターまたはクラウドにおける分散処理のように、大きく様々なデーター集合の一層高速で強力な処理を利用することが効果的になる。従前からのデスクトップおよび他の単一ノード・コンピューターは、大量のデーターを扱うには、処理パワーおよび容量が比較的限られているので、異なるソースからもっと大きなデーター集合を使用してクラスターまたはクラウドにおいて彼らのデスクトップ・アプリケーションを実行させることを望む開発者や技術者が増えつつある。例えば、開発者が小さいデーターの部分集合を使用してローカル・デスクトップにおいてアルゴリズムを開発し、次いで、この部分集合と同じフォーマットでデーター集合全体を収容するクラスターまたはクラウド用のプログラムにおいてそのアルゴリズムを実行することを望む場合がある。
[0020] その結果生ずる課題の1つは、異なる実行環境間でどのように移行するかということである。技術者は、異なる実行環境毎に異なるデーター・ソースを使用することを望む場合もある。これは、各展開および実行の前に、複数のデーター参照を変更することを意味するはずである。所望のデーターが異なる実行環境毎に異なる物理的ストレージに格納されている場合、技術者がソース・コードを変更することを要求されることもある。何故なら、異なるデーター・プロバイダーは異なるアクセス方法を使用することが頻繁にあるからである。しかし、バージョンの激増(proliferation)および頻繁な変更が、コー
ドの保守を難しくし、クラスターまたはクラウド採用(adoption)に対する障壁となる。
[0021] 幸い、本明細書において記載する実施形態は、1つのソース・コードを、異なる実行コンテキストに対する複数のデーター・ソースと調和する(coordinate)ツールおよび技法を提供する。実施形態では、コンテキスト・アウェア・データー・ソース/データー・プロバイダー抽象化メカニズムが、ローカル・ファイル・システム、ファイル・シェア、クラウド・ストレージ、FTPアドレス、特定のデーターベース、特定のデーター・ストリーム等のような、物理的データー・ソースに対する明示参照(express reference)
を埋め込むことをユーザーが回避することを可能にする。プロジェクトが、実行位置(例えば、ローカル、クラスター、クラウド)に依存して、仮想参照を特定のデーター・ソースに自動的にリディレクトすることができる。同様に、ユーザーがデーター・アクセスのためにデーター・プロバイダーを仮想化することができる。次いで、プロジェクトは、所望のデーター・ストレージに依存して、実行可能コードを自動的に個別作成することができる。
[0022] 実施形態は、物理的データー・ソースおよびその下位層構造の仮想化を提供する。実施形態は、異なるデーター・アクセス方法の仮想化を提供する。実施形態は、実行位置毎に仮想参照と物理的データー・ソースとの間でマッピングする。実施形態は、実行位置に依存して、自動的にデーター参照をリディレクトし、データー・アクセス方法を更新する。
[0023] 状況によっては、1つの装置において開発されたプログラムを、この1つの装置の記憶容量を遙かに超える大規模なデーター集合に対してどのように実行するかということが、開発者が直面する主要な課題となる。本明細書において説明する実施形態は、開発者が異なるサイズに作られたデーター集合と共にコンピューター・プログラムを使用してアルゴリズムを調査するのに役立ち、例えば、最初に1つの装置において小さな部分集合に対してプログラムを実行し、次いで、同じ開発ソース・コードを使用し、シームレスなやり方でデーター集合全体に移る。その結果、コードを短縮し明瞭にすることができる。何故なら、開発者は実行位置を検出するためにコードを書くことを回避することができ、データーにアクセスするために相対パス(relative path)を使用することができるから
である。ソース・コードの保守が一層容易になることができる。これは、複数の実行位置が使用されても、ソース・コードの1つのコピーのみが開発者によって追跡されるからである。実施形態の中には、データー・ソース・マッピングにおいて、物理ソースが1つの場所で特定/更新される場合がある。実行位置を切り替える毎のデーター・ソース変更を回避することによって、実行位置間における移行を一層円滑に行うことができる。
[0024] 本明細書において記載する実施形態には、もっと広いコンテキストにおいて見ることができるものもある。例えば、ソース・コード、実行可能コード、実行ターゲット、データー・ソース、およびマッピングというような概念は、特定の実施形態に関連があることもある。しかし、それでは、発明の独占権が、本明細書では抽象的な考えに求められる広い文脈の利用から得られない。発明の独占権は、抽象的な考えではない。むしろ、本開示は、しかるべく具体的な実施形態を提供することに重点を置いている。他の媒体、システム、ならびにソース・コード、実行可能コード、実行ターゲット、データー・ソース、および/またはマッピングを伴うメソッドは、本発明の範囲外である。したがって、曖昧さおよび付随する証明問題も、本開示の適切な理解の下では回避される。
[0025] これより図面に例示するような実施形態例に言及するが、本明細書では特定の用語を同じ説明に使用する。しかし、本明細書で例示する機能の改変および他の変更、ならびに本明細書で例示する原理の更なる応用は、 関連技術(1つまたは複数)において
本開示を入手する当業者には想起されようが、 これらも特許請求の範囲の範囲に該当す
ると見なされてしかるべきである。
[0026] 用語の意味が本開示で明確化されるので、これらの明確化に十分注意しながら特許請求の範囲を読解してしかるべきである。特定の例が与えられるが、他の例が、使用される用語の意味に該当することもあり、1つ以上の請求項の範囲に該当することもあることは、関連技術(1つまたは複数複数)の当業者には理解されよう。本明細書では、用語は、一般的な用法、特定の産業の用法、あるいは特定の辞書または1組の辞書における場合と必ずしも同じ意味であるとは限らない。用語の意味の幅を示すのに役立つように、種々の表現法によって参照番号を使用することもある。参照番号が所与の文章から省略されていても、図面の内容がその文章で説明されていないことを必ずしも意味するのではない。本発明者は、自身で辞書編集する自分の権利を主張して行使する。用語は、本明細書の詳細な説明および/または出願書類(application file)のいずれかの場所で明示的または暗示的に定められるであろう。
[0027] 本明細書で使用する場合、「コンピューター・システム」は、例えば、1つ以上のサーバー、マザーボード、処理ノード、パーソナル・コンピューター(携帯用またはそれ以外)、パーソナル・ディジタル・アシスタント、セル・フォンまたは移動体電話機、および/または少なくとも部分的に命令によって制御される1つ以上のプロセッサーを設ける他のデバイス(1つまたは複数)を含んでよい。命令は、ファームウェアの形態、あるいはメモリーおよび/または特殊回路内の他のソフトウェアの形態であってよい。具
体的には、多くの実施形態がワークステーションまたはラップトップ・コンピューターにおいて実行することが想起されるかもしれないが、他の実施形態が他の計算デバイスにおいて実行してもよく、そのような任意のデバイスの1つ以上が、所与の実施形態の一部であってもよい。
[0028] 「マルチスレッド」コンピューター・システムは、複数の実行スレッドをサポートするコンピューター・システムである。「スレッド」という用語は、スケジューリングすることができるまたはスケジューリング(そして恐らくは同期)に従う任意のコードを含むことは理解されてしかるべきであり、例えば、「タスク」、「処理」、または「コルーチン」(coroutine)というような他の名称でも分かるであろう。スレッドは、並列に
、逐次的に、または並列実行(例えば、多重処理)と逐次実行(例えば、時間スライス)とを組み合わせて実行することができる。マルチスレッド環境は、種々の構成で設計されてきた。実行スレッドは、並列に実行してよく、または実行スレッドは、並列実行に合わせて編成されてもよいが、実際には順番に逐次実行する。マルチスレッディングは、例えば、多重処理環境において異なるスレッドを異なるコア上で実行することによって、異なるスレッドを単一のプロセッサー・コア上で時間スライスすることによって、または時間スライスとマルチプロセッサー・スレッディングとをいくつか組み合わせることによって実現することができる。スレッド・コンテキストの切り替えは、例えば、カーネルのスレッド・スケジューラーによって、ユーザー空間信号によって、またはユーザー空間の動作とカーネルの動作との組み合わせによって開始することができる。スレッドは、例えば、順番に共有データーを処理することができ、または各スレッドが、例えば、それ自体のデーターを処理することもできる。
[0029] 「論理プロセッサー」または「プロセッサー」は、同時マルチスレッディング実現例におけるコアのような、1つの独立したハードウェア・スレッド処理ユニットである。他の例として、1コア当たり2スレッドを実行するハイパースレッド・クアド・コア・チップは、8つの論理プロセッサーを有する。プロセッサーは、汎用であってよいし、またはグラフィック処理、信号処理、浮動小数点算術演算、暗号化、I/O処理等の、特定の使用に対して個別に作ることもできる。
[0030] 「マルチプロセッサー」コンピューター・システムは、複数の論理プロセッサーを有するコンピューター・システムである。マルチプロセッサー環境は、種々の構成で見られる。所与の構成では、すべてのプロセッサーが機能的に同等であることもあれば、別の構成では、一部プロセッサーが異なるハードウェア能力、異なるソフトウェア割り当て、またはその両方を有することによって他のプロセッサーとは異なることもある。構成に依存して、プロセッサー同士が1つのバスにおいて互いに密結合されてもよいし、またはこれらが疎結合されてもよい。構成によっては、プロセッサーが中央メモリーを共有することもあり、ある構成では、プロセッサーがそれぞれ自身のローカル・メモリーを有することもあり、更にある構成では、共有メモリーおよびローカル・メモリーの両方が存在することもある。
[0031] 「カーネル」は、オペレーティング・システム、ハイパーバイザー、仮想装置(virtual machine)、BIOSコード、および同様のハードウェア・インタフェース・ソ
フトウェアを含む。
[0032] 「実行可能コード」は、プログラミング言語以外の形態とした、プロセッサー命令、データー(定数、編集、およびデーター構造を含む)、または命令およびデーターの双方を意味する。
[0033] 「ソース・コード」は、任意に宣言および/またはデーターを伴う、ステート
メントを意味し、コンピューター・プログラミング言語で書かれ、自動的に実行可能コードを生成するために使用されるように設計される。
[0034] 「プログラム」は、本明細書では広義に使用され、アプリケーション、カーネル、ドライバー、割り込みハンドラー、ライブラリー、およびプログラマ(開発者とも呼ぶ)によって書き込まれる他のコードを含む。
[0035] 「自動的に」は、自動化していないものとは対照的に、自動化(例えば、本明細書で説明する特定の動作のために、ソフトウェアによって構成される汎用計算ハードウェア)の使用を意味する。具体的には、「自動的に」実行されるステップは、手で紙の上に実行されるのでも、人の考えの中で実行されるのではなく、これらのステップは装置によって実行される。しかしながら、「自動的に」は、必ずしも「直ちに」を意味する訳ではない。
[0036] 本文書全体を通じて、任意の複数形の使用(「(s)」、「(es)」、(ies)」)は、示された特徴のうちの1つ以上が存在することを意味する。例えば、「データー・ソース(1つまたは複数)」は、「1つ以上のデーター・ソース」または等価に「少なくとも1つのデーター・ソース」を意味する。
[0037] 本文書全体を通じて、明示的に別段述べた場合を除き、プロセスにおけるステップに言及するときはいつでも、そのステップが、当事者によって直接実行される、および/または仲介メカニズムおよび/または仲介エンティティを介して当事者によって間接的に実行されるのでもよく、それでもなおそのステップの範囲に該当することを想定する。即ち、当事者がステップを直接実行することは、直接の実行が明示的に述べられた要件でない限り、要求されない。例えば、受け入れる、収容する、検出する、実行する、生成する、有する、特定する、含む、注入する、マッピングする、得る、動作する、実行する、置く、生成する、読む、受ける、存在する、解決する、交換する、変換する(transform)、または変換する(translate)(または、受け入れる、受け入れられる、収容する、収容される、検出する、検出される等)というような、宛先あるいは他の対象(subject)に関する当事者による行為を伴うステップは、転送する、コピーする、アップロードする、ダウンロードする、エンコードする、デコードする、圧縮する、解凍する、暗号化する、解読する、認証する、呼び出す等というような、他のある者による仲介行為を伴うのであってもよく、それでも当事者によって直接実行されると解釈することができる。
[0038] データーまたは命令に言及するときはいつも、それらの品目は、コンピューター読み取り可能メモリーを構成し、それよって、例えば、単に紙上に存在するもの、誰かの考えによるもの、またはワイヤにおける一時的な信号とは対照的に、そのメモリーを特定の品目(article)に変換することが理解されよう。コンピューター読み取り可能メモリ
ーまたは媒体は、特に別段述べられていなければ、非一時的であると想定される。
動作環境
[0039] 図1を参照すると、実施形態の動作環境100は、コンピューター・システム102を含む。コンピューター・システム102は、マルチプロセッサー・コンピューター・システムであってもよく、またはそうでなくてもよい。動作環境は、所与のコンピューター・システム内に1つ以上の装置を含むことができ、そのコンピューター・システムは、クラスター、クライアント−サーバー・ネットワーク、および/またはピア・ツー・ピア・ネットワークであってもよい。個々の装置がコンピューター・システムであり、協働する装置の一群もコンピューター・システムである。所与のコンピューター・システム102は、エンド・ユーザーのために、例えば、アプリケーションを使用して構成することができ、アドミニストレータのために、サーバーとして、分散型処理ノードとして、および/または他の方法で構成することもできる。
[0040] 人間ユーザー104は、ディスプレイ、キーボード、および他の周辺機器106を使用することによってコンピューター・システム102と対話処理することができる。システム・アドミニストレーター、開発者、技術者、およびエンド・ユーザーは、各々が特定のタイプのユーザー104である。ひとり以上の人間の代わりに動作する自動化エージェントもユーザー104であってよい。実施形態の中には、記憶デバイスおよび/またはネットワーク・デバイスを周辺機器と見なしてもよい場合がある。図1に示していない他のコンピューター・システムが、コンピューター・システム102と対話処理することもでき、または、例えば、ネットワーク・インターフェース機器を介して、ネットワーク108に対する1つ以上の接続を使用して、別のシステム実施形態と対話処理することもできる。
[0041] コンピューター・システム102は、少なくとも1つの論理プロセッサー110を含む。コンピューター・システム102は、他の適したシステムのように、1つ以上のコンピューター読み取り可能な非一時的記憶媒体112も含む。媒体112は、異なる物理的タイプであってよい。媒体112は、揮発性メモリー、不揮発性メモリー、位置が固定されている媒体、リムーバブル媒体、磁気媒体、光媒体、および/または他のタイプの非一時的媒体(単に信号を伝搬するワイヤのような一時的媒体とは対照的である)であるとよい。具体的に、CD、DVD、メモリー・スティック等の構成媒体(configured medium)114、または他のリムーバブル不揮発性メモリー媒体は、挿入あるいはインス
トールされた時にコンピューター・システムの機能的部分になり、その内容がプロセッサー110によって使用されるようにアクセス可能にすることができる。リムーバブル構成媒体114は、コンピューター読み取り可能記憶媒体112の一例である。コンピューター読み取り可能記憶媒体112のその他の例には、内蔵RAM、ROM、ハード・ディスク、およびユーザー104によって容易に取り外すことができない他の記憶デバイスを含む。
[0042] 媒体114には、プロセッサー110によって実行可能である命令116が構成される。「実行可能ファイル」は、本明細書では、例えば、マシン・コード、解釈可能コード、および仮想マシンで実行するコードを含む広い意味で使用される。また、媒体114には、データー118も構成され、そのデーターは、命令116の実行によって作成され、変更され、参照され、および/あるいはそれ以外で使用される。命令116およびデーター118は、それらが存在する媒体114を構成する。そのメモリーが所与のコンピューター・システムの機能部分である場合、命令116およびデーター118は、そのコンピューター・システムも構成する。実施形態の中には、データー118の一部が、製品特性、在庫、物理的測定値、設定値、画像、読み取り値、ターゲット、ボリューム等の、現実世界の項目を表す場合がある。また、このようなデーターは、本明細書で説明するように、例えば、注入、変換、解決、結合、展開、実行、変更、表示、作成、装填(loading)、および/または他の動作によっても変換される(transform)。
[0043] ソース・コード122および実行可能コード124を含むコード・ベース120、コンパイラー128、デバッガー130、および構成ファイル132というような開発ツール、他のソフトウェア、ローカル・データー・ソース134(データー・ソースは全体的に136で示す)、ならびに図に示すおよび/または本文において説明する他の項目は、部分的にまたは全体的に1つ以上の媒体112内に存在することができ、それによってこれらの媒体を構成する。
[0044] プロセッサー(1つまたは複数)およびメモリー112に加えて、動作環境は、例えば、ディスプレイ138、バス、電源、およびアクセレレーターというような他のハードウェアも含むことができる。
[0045] デバイス102は、ネットワーク108を介して、1つ以上の計算クラスター140、および/または1つ以上の計算クラウド142と通信することができる。クラスター140および/または計算クラウド142は、各々、これら自体のそれぞれのデーター・ソース144、146、ならびにそれら自体のプロセッサー(1つまたは複数)、メモリー、およびソフトウェアを有することができる。環境の中には、クラスターおよびクラウドにおけるデーター・ソースが、ローカル・データー集合よりも遙かに大きなデーター集合のためのものである場合もある。実際、クラスターまたはクラウド・データーベースに対する格納要件は、ローカル・データー・ソースのデーター記憶ボリュームの容量を遙かに超える可能性がある。
[0046] 所与の動作環境100は、ソフトウェア開発プロジェクト150のために1組の調整されたソフトウェア開発ツールを開発者に提供する、統合開発環境(IDE)148または他のソフトウェアを含むことができる。具体的には、一部の実施形態に適した動作環境の一部は、プログラム開発をサポートするように構成された Microsoft(登録商標)VisualStudio(登録商標)開発環境(Microsoft Corporation(マイクロソフト社)の
標識(mark))を含むまたはその作成に役立つ。適した動作環境には、Java(登録商標)環境(Oracle America, Inc.(オラクル・アメリカ社)の標識)を含むものがあり、更に適した動作環境には、C++またはC#(「Cシャープ」)等の、言語を利用する環境を含むものもある。しかし、本明細書における教示は、多種多様のプログラミング言語、プログラミングモデル、およびプログラムに適用可能であり、更にクラスター計算、クラウド計算、または双方を使用するソフトウェア開発自体の分野以外の試み(endeavor)にも適用可能である。
[0047] 1つ以上の品目は、これらが図示される動作環境の必ず必要な部分ではないことを強調するために、図1では概略形態で示されているが、本明細書によって説明する動作環境における品目と相互動作することができる。とは言え、いずれの図またはいずれの実施形態においても、概略形態にされていない品目が必ず必要とされるという訳ではない。
[0048] 図2のシステムは、実施形態とともに使用するのに適したアーキテクチャーを示す。データー・ソース・マッピング202は、ソース・コード122において使用されるデーター・ソース識別子204を、ローカル・データー・ソース134、クラスター・データー・ソース144、および/またはクラウド・データー・ソース146というような、それぞれのデーター・ソース136にマッピングする。これについては、以下で更に説明する。実行可能コード・プロデューサー206は、ソース・コード122およびデーター・ソース・マッピング202を使用して実行可能コード124を生成する。実行可能コード124は、特定のデーター・ソースおよびこれらへのアクセスに関して、特定の実行ターゲット208(例えば、ローカル、クラスター、またはクラウド)に対して専用に作られる。異なるデーター実行ターゲットは、同一にフォーマットされたデーターの異なる量というような、異なるデーター集合サイズを含む場合もある。例えば、データー集合のサイズは、そのデーター集合内のデーターが表す時間期間に依存する場合もある。例えば、ローカル・ディスクにおける1ヶ月分のデーターは、数百ギガバイトを占めるかもしれず、一方クラウド/クラスター・ストレージにおける数年分のデーターは、100テラバイトのストレージを占めるかもしれない。他の例として、データー・ソース識別子にマッピングされたデーター・ソースの1つが、10ギガバイト未満のデーターを含む可能性があり、一方同じデーター・ソース識別子にマッピングされたデーター・ソースの内他のものは、少なくとも100ギガバイトのデーターを含む。2つを挙げるに留めるが、100ギガバイト、またはテラバイトというような他の閾値を使用することもできる。このような状況では、一実施形態は、一方が比較的小さく他方が比較的大きいというような、複
数のデーター集合に対して同一の開発ソース・コードを開発者が検査し易くすることができる。
[0049] 実行可能コード・プロデューサーは、コンパイル(compilation)およびリンキ
ング(linking)を行うために、よく使われる命令に加えて、専用に作られる実行可能ファ
イルの生成を促進する命令210を含む。例えば、実施形態の中には、プロデューサー206が、データー・ソース識別子204を解決して物理位置(解決214)を得るAPI212を含む場合がある。実施形態の中には、プロデューサー206がソース−ソース間トランスレーター216を含む場合がある。ソース−ソース間トランスレーター216は、コール、宣言、および/または他のコードを開発者のソース・コード122に注入して、中間ソースを得て、次いでこの中間コードをコンパイルして、実行ターゲット専用に作られる実行可能コード124にする。
[0050] 本明細書ではローカル、クラスター、およびクラウド・ターゲット208が例として使用されるが、開発者104は異なる実行ターゲット208の仕様218(例えば、名称、アドレス、または他の詳細による)を提供するのでもよい。例えば、実施形態の中には、複数のクラスター140を指定できる場合があり、更に実施形態の中にはクラウド142を指定できない場合がある。
[0051] 実施形態の中には、1つ以上のデーター・ソース識別子204に対するデーター・ソース・マッピング202が、プロジェクト・プロパティ220(これも属性と呼ぶことがある)にというように、プロジェクト特定構造に格納される場合がある。
[0052] 実施形態の中には、1つ以上のデーター・ソース識別子204に対するデーター・ソース・マッピング202が、実行可能コード124と共にソフトウェア・パッケージ222に、プロパティ220の形態で、または構成ファイル132のような、他の形態で格納される場合がある。
[0053] 図1から図3を参照すると、実施形態は論理プロセッサー110およびメモリー媒体112を有するコンピューター・システム102を提供する。これらは、回路、ファームウェア、および/またはソフトウェアによって構成され、開発環境を変換する(transform)。更に具体的には、本明細書において説明するように、1つのソース・コードを
複数の実行ターゲット・データー・ソースと調整することによって、ソース・コードを変換する。
[0054] 例えば、実施形態は、論理プロセッサー110、この論理プロセッサーと動作可能に通信するメモリー112、およびメモリー112を構成する品目を含む。メモリー112に存在する(したがって、メモリー112を構成する)データー・ソース・マッピング202は、それぞれの異なる実行ターゲット208において複数の異なるデーター・ソース136にマッピングされる少なくとも1つのデーター・ソース識別子204を有する。実施形態の中には、データー・ソース・マッピングが、メモリー112内において、例えば、テキスト構成ファイル、非テキスト・プロジェクト・プロパティ220、他のプロジェクト特定構造、および/またはユーザー特定構造内に存在する場合がある。メモリー112内に存在するソース・コード112(開発者104によって提供されるので、開発者ソース・コードとも呼ぶ)が、データー・ソース識別子204をデーター・ソース136として言明する。
[0055] メモリー112内に存在する実行可能コード・プロデューサー206は、命令210、116を有する。命令210、116は、実行すると、同じ開発者ソース・コード122から、異なる時点において複数の異なる実行可能コード124を自動的に生成す
る。これらの実行可能コードの各々は他の実行可能コードと同じソースから自動的に生成されたのであっても、これらの実行可能コード124の各々は、データー・ソースの内異なる1つに対して参照を行う。
[0056] このように、開発者は、開発者のソース・コード122内における異なる実行ターゲットの詳細を管理する負担を回避する。例えば、開発者のソース・コード122は、実行位置を検出するコードをなくすることができ、更に絶対パス346のデーター・ソース識別子をなくすることができる。特定のターゲット208に対して実行可能ファイルを専用に作るために必要とされるコードは、例えば、後続のコンパイルのために中間ソース344を作るため、および/または開発者のソース122から生成された実行可能コードに対するパッチとして、プロデューサー206によって注入することができる。注入に関して、実施形態の中には、フォルダー作成コール、クラウド・コンテナ作成コール、ファイル作成コールというような、開発者ソース・コードには存在しないコール318を含む中間ソース・コード344を使用する場合がある。
[0057] 実施形態の中には、実行可能コード・プロデューサー206が、解決API212を含む場合がある。解決API2121は、命令210を含む。命令210は、プロセッサーによって実行すると、相対パス334および実行ターゲット208を解決して、物理パス346を含むデーター・ソース解決214を得る。実施形態の中には、実行可能コード・プロデューサー206が、中間ソース・コード344を作るソース−ソース間トランスレーター216を含む場合がある。
[0058] 実施形態の中には、人間ユーザーI/Oデバイス(画面、キーボード、マウス、タブレット、マイクロフォン、スピーカー、動きセンサ等)というような周辺機器106が、1つ以上のプロセッサー110およびメモリーと動作可能に通信できる状態で存在する場合がある。しかしながら、人間のユーザー104が直接実施形態と対話処理しないように、実施形態がシステムの奥深くに埋め込まれてもよい。ソフトウェア・プロセスがユーザー104であってもよい。
[0059] 実施形態の中には、本システムが、ネットワークによって接続された複数のコンピューターを含む場合がある。ネットワーキング・インターフェース機器は、例えば、パケット交換ネットワーク・インターフェース・カード、ワイヤレス・トランシーバー、または電話ネットワーク・インターフェースというような、コンポーネントを使用して、ネットワーク108へのアクセスを与えることができる。これらのコンポーネントは、コンピューター・システム内に存在する。しかしながら、実施形態が、直接メモリー・アクセス、リムーバブル不揮発性媒体、あるいは他の情報格納−引き出しおよび/または送信手法によって通信するのであってもよく、あるいはコンピューター・システムにおける一実施形態が、他のコンピューター・システムと通信せずに動作するのでもよい。
プロセス
[0060] 図3は、フローチャート300において、あるプロセス実施形態を示す。図に示すプロセスは、実施形態によっては、例えば、IDE148内部にある実行可能コード・プロデューサー206によって、スクリプトの制御の下で、あるいは同時ユーザー入力を殆どまたは全く必要とせずに、自動的に実行することができる。また、特に別段指示がなければ、プロセスは、部分的に自動的にそして部分的に手動で実行されてもよい。所与の実施形態では、図示されるプロセスのステップの内0個以上を繰り返し、恐らくは異なるパラメーターまたはデーターに対して動作することができる。また、一実施形態におけるステップは、図3に並べられた上下の順序とは異なる順序で実行してもよい。ステップは、直列に、並列に重複するように、または完全に並列に実行されてもよい。プロセスの間に実行されるステップを示すためにフローチャート300を辿る順序は、プロセスの実行毎に変化してもよい。また、フローチャートを辿る順序は、プロセスの実施形態毎に変
化してもよい。また、実行されるプロセスが動作可能であり、少なくとも1つの請求項に沿うのであれば、図示するフローからステップを省略する、組み合わせる、名称変更する、分類し直す、またはそれ以外で逸れることもできる。
[0061] ここで、本技術の態様を例示するのに役立てるために例を示すが、本文書内において示される例は、全ての可能な実施形態を説明する訳ではない。実施形態は、本明細書において示される具体的な実現例、構成、表示、特徴、手法、またはシナリオには限定されない。所与の実施形態が、例えば、追加のまたは異なる特徴、メカニズム、および/またはデーター構造を含んでもよく、それ以外で本明細書において示す例から逸れてもよい。
[0062] マッピングを得るステップ302の間、実施形態はデーター・ソース・マッピング202を得る。ステップ302は、ファイルまたはプロパティ集合からマッピング202を読み取ることによって、および/または、例えば、他のメカニズムによって行うこともできる。
[0063] ソース・コードを受けるステップ304の間、実施形態は、ファイルからコードを読み取ることによって、および/または、例えば、他のメカニズムによって、例えばIDE148エディターを介して開発者ソース・コード122を受ける。
[0064] ターゲット特定ステップ306の間、実施形態は少なくとも1つの実行ターゲット208(「実行位置」または「実行コンテキスト」とも呼ぶ)を特定する。ステップ306は、例えば、組み込まれたデフォルトを使用することによって、および/またはユーザー104から仕様218を受け入れる(326)ことによって行うことができる。
[0065] 実行可能コード生成ステップ308の間、実施形態は、開発者ソース・コード122、データー・マッピング(1つまたは複数)202、およびターゲット208仕様(1つまたは複数)218から、実行可能コード124を自動的に生成する。よく知られているコンパイル、リンキング、および他の実行可能コード生成メカニズムを、データー・ソース識別子204、解決332、解決API212、ソース−ソース間変換216、中間ソース・コード344、および/または開発者に1つのソース・コード122を使用することを許しつつ異なるターゲットにおいて複数のデーター・ソースを管理することをサポートするために本明細書において説明する他のメカニズムと連携して使用することができる。
[0066] 構成ファイル読み取りステップ310は、マッピングを得るステップ302の一部であってもよく、このステップ310の間、実施形態はデーター・ソース・マッピングを構成ファイル132から、ファイル・システム、ネットワーキング、および/または他のメカニズムを使用して読み取る。更に一般的には、ステップ310の間、実施形態は、例えば、構成ファイル、プロジェクト・プロパティ220、あるいはユーザー特定設定値または環境構造というような構造312から、データー・ソース・マッピング202を読み取る。
[0067] 変換実行ステップ314の間、実施形態は、ソース−ソース間変換を自動的に実行し、宣言、コール318、および/または特定の実行位置に対してコードを専用に作る他のコードを注入することによって、開発者によって提供されたソース・コード122から中間ソース・コード344を作る。よく知られているシンタックス・メカニズムを、本明細書において説明するように実行するように構成されたよく知られているセマンティック分析と共に使用することができる。
[0068] コード注入ステップ216は、変換実行ステップ314の一部として行われてもよく、このステップ216の間、実施形態は自動的にコール318および/または他のソース・コードを開発者ソース・コード122に注入して、中間ソース・コード344を形成する。中間ソース・コード344は、データー・ソースのターゲット特定の詳細、およびそれらのアクセス・メカニズムを含む。適したコード変換について本明細書において説明し、例を示す。実施形態では、中間ソース・コード344が存在しても、ユーザーには中間ソース・コード344の詳細で煩わすことはない。
[0069] マッピング配置ステップ320の間、実施形態は、データー・ソース・マッピング202を分散可能なソフトウェア・パッケージ222に置く(例えば、書く、関連付ける、追加する)。マッピング202は、例えば、プロパティ220、ヘッダー、あるいは構成または環境変数ファイルにデーター・ソース・マッピング202を置くように構成された、よく知られている書き込みメカニズムを使用して、置く(320)ことができる。
[0070] 解決生成ステップ322は、生成ステップ308の一部であってもよく、この解決生成ステップ322の間、実施形態は、データー・ソース解決322をデーター・ソース・マッピング202および開発者ソース・コード122から自動的に生成する。ステップ332は、マッピング202のデーター・ソース識別子204がソース・コード122において相対パス334と共に使用されるときには、解決ステップ332を含むこともできる。
[0071] 変更受け入れステップ324の間、実施形態はユーザー104からエディターまたはIDE(例えば)を介して、以前に得られた(302)データー・ソース・マッピングの変更を受け入れる。例えば、データー・ソース識別子204を追加、除去、または名称変更することができる。ターゲット208を追加または除去することができる。データー・ソース物理位置を変更することができる。ステップ324は、存在チェック(例えば、物理位置またはターゲットが存在するか否か)、シンタックス・チェック(例えば、データー・ソース識別子におけるURIまたは絶対パスの不在)、および/または変更が受け入れられる前における他の有効性検査を含むことができる。
[0072] ターゲット仕様受け入れステップ326の間、実施形態は、ユーザー104からエディターまたはIDE(例えば)を介して、ターゲット(1つまたは複数)208における少なくとも1つの変更の仕様、例えば、ターゲットの追加、または以前に指定したターゲットの除去を受け入れる。
[0073] マッピング・ステップ328の間、実施形態(または実施形態のユーザー操作の形態)は、例えば、データー・ソース・マッピング202を作るまたは変更することによって、識別子204を実行ターゲット・データー・ソース(1つまたは複数)136にマッピングする。
[0074] 言明するステップ330の間、実施形態(または実施形態のユーザー操作の形態)は、開発者ソース・コード122において、データー・ソース識別子204を言明する(例えば、読み取るまたは書き込む)。データー・ソース識別子204は、(a)データー・ソース136を識別し、(b)個々の(particular)ターゲットのデーター・ソースに特定ではない識別子である。実際、データー・ソース識別子204は、実行中にそのまま使用することができず、マッピングされなければならない(328)。マッピングされていないデーター・ソース識別子204を使用しようとすると、データー・ソースの物理位置のような詳細がデーター・ソース識別子自体から失われるので、コンパイル時および/または実行時にエラーが発生する。
[0075] 解決生成ステップ322の一部であってもよい相対パス解決ステップ332の間、相対パス334を含むデーター・ソース識別子が解決されて、データー・ソース解決214が得られる。
[0076] ソース変更回避ステップ336は、実行可能コード生成ステップ308の一部として見なすことができ、ソース・コードを受けるステップ304の一部として見なすことができ、および/または1つの受け取った(304)ソース・コード122から複数のターゲットに対するコードを生成するステップ(308)を含むプロセスの一部として見なすこともできる。このソース変更回避ステップ336の間、ユーザー(および実施形態)は、ソース・コード122のユーザーのコピーを変更することを回避する。つまり、ユーザーは、ターゲット特定のデーター・ソース実装(implementation)の詳細を提供するまたは理解する負担を回避する。
[0077] 絶対パス回避ステップ338は、実行可能コード生成ステップ308の一部として見なすことができ、ソース・コードを受けるステップ304の一部として見なすことができ、および/または1つの受け取った(304)ソース・コード122から複数のターゲットに対するコードを生成するステップ(308)を含むプロセスの一部として見なすこともできる。この絶対パス回避ステップ338の間、ユーザー(および実施形態)は、データー・ソース136にアクセスするために、ソース・コード122における絶対パスを使用することを回避する。つまり、つまり、ユーザーは、ターゲット特定のデーター・ソース実装(implementation)の詳細を提供するまたは理解する負担を回避する。
[0078] 位置検出コード回避ステップ340は、実行可能コード生成ステップ308の一部として見なすことができ、ソース・コード受信ステップ304の一部として見なすことができ、および/または1つの受け取った(304)ソース・コード122から複数のターゲットに対するコードを生成するステップ(308)を含むプロセスの一部として見なくこともできる。この位置検出コード回避ステップ340の間、ユーザー(および実施形態)は、所望のデーター・ソース136にアクセスするためにターゲット位置を検出しようとするまたはターゲット208間で区別しようとするソース・コード122を使用することを回避する。つまり、ユーザーは、 ターゲット特定のデーター・ソース実装の詳
細を提供するまたは理解する負担を回避する。
[0079] メモリー構成ステップ342の間、データー・ソース・マッピング202、解決API24、実行可能コード・プロデューサー206のデーター・ソース変換命令によって、および/またはそれ以外では、本明細書において説明するように、異なる実行位置においてデーター・ソースを仮想化するために1つのソース・コードおよびマッピングを使用することに関連して、 メモリー媒体112が構成される。
[0080] 以上のステップおよびそれらの相互関係について、種々の実施形態と関連付けて以下に更に詳細に説明する。
[0081] 実施形態は、ソース・コードおよび複数の代替計算データー・ソースを連携して管理するプロセスを提供する。このプロセスは、データー・ソース・マッピング202を得るステップ(202)を含み、このデーター・ソース・マッピング202では、特定のデーター・ソース識別子204が、それぞれの実行ターゲット208において複数のデーター・ソース136にマッピングされる。このプロセスは、開発者ソース・コードを受ける(304)。この開発者ソース・コードは、データー・ソース識別子をデーター・ソースとして明言し(330)、第1実行ターゲットを特定し(306)、開発者ソース・コードから第1実行可能コード124を自動的に生成する(308)。第1実行可能コードは、第1ターゲット専用に作られ、第1実行ターゲットにおいて実行すると、第1コー
ド124が、第1実行ターゲットのマッピングされたデーター・ソースを、このソース136がソース・コード122において明示的に述べられていなくても、データー・ソース識別子204によって特定されたデーター・ソースとして動作する。第1実行ターゲットとは異なるデーター・ソースを有する第2実行ターゲットを特定した(306)後、本プロセスは、同じソース・コード122から、第2ターゲット専用に作られる第2実行可能コードを自動的に生成する(308)。即ち、第2実行ターゲットにおいて実行すると、第2コード124は、第2実行ターゲットのマッピングされたデーター・ソースを、第1実行ターゲットのデーター・ソースの代わりに、特定されたデーター・ソースとして、動作する。
[0082] 多くの変形が考えられる。実施形態の中には、テキスト構成ファイルを読み取ることによって、または非テキスト・プロジェクト・プロパティを読み取ることによって、データー・ソース・マッピングを得るステップ(302)を含むものもある。実施形態の中には、受けるステップが、絶対パス・データー・ソース識別子がない(即ち、回避する(338))開発者ソース・コード122を受ける(304)場合もある。実施形態の中には、実行可能ターゲット特定ステップが、以下の内少なくとも2つを特定する(306)場合もある。ローカル実行ターゲット、クラスター実行ターゲット、クラウド実行ターゲット。実施形態の中には、同じ開発者ソース・コードから第2実行可能コードを自動的に生成するステップ(308)が、以下のコール318の内少なくとも1つを注入する(316)ソース−ソース間変換を実行する(314)場合もある。フォルダー作成コール、クラウド・コンテナ作成コール、ファイル作成コール。実施形態の中には、分散可能なソフトウェア・パッケージ222にデーター・ソース・マッピング202を配するステップ(320)を含むものもある。
[0083] 開発者体験の観点から、実施形態の中には、特定のデーター・ソース識別子がそれぞれの実行ターゲットにおいて複数のデーター・ソースにマッピングされるデーター・ソース・マッピングを得るステップ(302)と、データー・ソース・マッピング202およびソース・コード122から、開発者によるソース・コード122へのいかなる変更も必要とせずに(即ち、回避して336)、それぞれの異なる実行ターゲットに対して少なくとも2つの異なるデーター・ソース解決214を自動的に生成するステップ(322)を含むものもある。
[0084] この場合も、変形が考えられる。実施形態の中には、得るステップ302が、データー・ソース・マッピングをプロジェクト特定構造から読み取るステップ310を含むものもある。実施形態の中には、生成するステップが、ユニバーサル・リソース識別子(URI)を含む少なくとも1つのデーター・ソース解決214を生成する(322)場合もある。実施形態の中には、生成するステップが、データー・ソース識別子を根源とする相対パス334に基づいて、少なくとも1つのデーター・ソース解決を生成する(322,332)場合もある。実施形態の中には、生成するステップ322が、物理記憶位置識別子ストリングの単なる置き換えを超えることを含む(encompass)場合もある。例えば
、コール318を注入する(316)のでもよい。
[0085] 実施形態の中には、本プロセスが更にデーター・ソース・マッピングの変更を開発者104から受け入れるステップ324を含むものもある。実施形態の中には、実行ターゲットの仕様を開発者から受け入れるステップ326を含むものもある。この場合、実行ターゲットの内少なくとも1つが、複数の計算デバイス、例えば、クラスターまたはクラウドをターゲットとして含むことができる。
INPUT TEMPの例
[0086] 非限定的な一例として、可能な実施形態を更に例示するために、以下のことを提示する。
[0087] 実施形態が、データー・ソース識別子204がそれぞれの実行位置(ターゲット208)において複数のデーター・ソース136にマッピングされる(328)データー・ソース・マッピング202を得る(302)と仮定する。例えば、以下のマッピング203では、INPUTおよびTEMPがデーター・ソース識別子であり、d:/MyData/Input/, \\fileshare\TeamFolder\MyInput\等がデーター・ソースであり、ローカル、クラスター、およびクラウドが実行位置である。
Figure 2017215999
[0088] USPTOの慣例にしたがって、以上のアドレス、ならびに他の全ての文字の(literal)URL、URI、ディレクトリー・パス、見かけ上のハイパーリンク、および
本特許文書における他のデーター・ソース・アドレスは、単なる例に過ぎないことを意図していることに注意すること。これらは、何らかの他の文書に達するという結果になることを意味するのではなく、これらは引用したことにより任意の情報が本文書にも含まれることを意味するのでもない。
[0089] この例では、本実施形態は、データー・ソース識別子をデーター・ソースとして言明するソース・コードを受ける(304)。例えば、
Figure 2017215999
[0090] この例を続けると、本実施形態は第1実行位置、例えば、ローカルも特定する(306)。本実施形態は、ソース・コードから第1実行可能コードを自動的に生成する(308)。この第1実行可能コードは、第1実行位置において実行すると、例えば、実際に受け取られたソース・コードがあたかも代わりに以下の等価のソース・コードであったかのように、第1実行位置のマッピングされたソース・データーをデーター・ソースとして動作する。
Figure 2017215999
[0091] 本実施形態は、第2実行位置、例えば、クラスターを特定し(306)、同じソース・コードから第2実行可能コードを自動的に生成する(308)。第2実行可能コードは、第2実行位置において実行すると、例えば、受け取られたソース・コードがあたかも代わりに以下の等価なソース・コードであったかのように、第2実行位置のマッピングされたデーター・ソースをデーター・ソースとして動作する。
Figure 2017215999
[0092] この例について検討するとき、ローカルの等価なソース・コードとクラスターの等価なソース・コードとの間にある唯一の相違が、第1ラインにおいて「new folder()」のパラメーターとして渡されるストリング値であると間違って捕らえることもあり得る。即ち、一見すると、TEMP_DATA_SOURCE="d:/MyData/Input/"と設定することによって、
またはTEMP_DATA_SOURCE="\\fileshare\TeamFolder\MyInput\"と設定することによって、例えば、コマンド・ライン・パラメーターを使用することによって、グローバル・ストリング変数TEMP_DATA_SOURCEが同じ結果を得るために使用することができたように思われるかもしれない。しかしながら、更に吟味すると、単にストリングを設定するだけでは、new folder()を作るコードは生成されないことが明らかになる。加えて、ストリング変数は、クラスター実行に対して等価なソースの機能を与える程強力ではない。何故なら、これは異なるストリングを伴うだけでなく、フォルダーの代わりにブロブコンテナ(blobcontainer)を作りアクセスすることも伴うからである。
[0093] 以上のことを実現する1つの方法は、開発者のソースS−オリジナル(ソース・コード122)を実行−位置−依存ソースS−従属(中間ソース・コード344)に変換し、次いでこの変換したソースS−従属をコンパイルすることである。場合によっては、ブリプロセッサーをソース−ソース間トランスレーター216の一部として使用することができる。
構成媒体
[0094] 実施形態の中には、構成された(configured)コンピューター可読記憶媒体112を含むものがある。媒体112は、ディスク(磁気ディスク、光ディスク、またはその他)、RAM、EEPROMまたは他のROM、および/または、特に非一時的なコンピューター可読媒体(ワイヤまたは他の伝搬信号媒体とは対照的である)を含む、他の構成可能メモリーを含んでもよい。構成される記憶媒体は、特に、CD、DVD、またはフラッシュ・メモリー等の、リムーバブル記憶媒体114であってもよい。汎用メモリーは、リムーバブルでも非リムーバブルでもよく、更に揮発性でも不揮発性でもよく、データー
・ソース・マッピング202、実行可能コード・プロデューサー206、および解決API212というような品目を使用して、データー118および命令116の形式で実施形態に構成することができる。データー118および命令116は、構成媒体を形成するために、リムーバブル媒体114および/またはネットワーク接続のような他のソースから読み取られる。構成媒体112は、本明細書において開示したようにデーター・ソース管理によってデーターを変換するプロセス・ステップを、コンピューター・システムに実行させることができる。このため、図1から図3は、構成記憶媒体の実施形態および処理の実施形態、ならびにシステムおよび処理の実施形態を例示するのに役立つ。具体的には、図3に例示した処理ステップ、または本明細書において教示した処理ステップのいずれも、構成媒体の実施形態を形成する記憶媒体を構成するのに役立つように使用することができる。
付加的な例
[0095] 付加的な詳細および設計の考察を以下に示す。本明細書の他の例と同様に、説明する機能は、所与の実施形態において、個々におよび/または組み合わせて使用されてもよいし、または全く使用されなくてもよい。
[0096] 実現例の詳細は、特定のAPIおよび特定のサンプル・プログラム等の、特定のコードに関連する場合もあり、したがって、あらゆる実施形態で出てくる必要がないことは、当業者には理解されよう。また、詳細を論じるときに使用されるプログラム識別子および他の用語は、実現例に特定であり、したがって、あらゆる実施形態に関連する必要がないことも、当業者には理解されよう。これらの詳細は、必ずしもここで提示される必要がある訳ではないが、そのような詳細は、コンテキストを規定することによって読者に役立つことができるので、および/または本明細書において説明する技術の多くの可能な実現例の内少数を例示することができるので、提示されるのである。
[0097] 実施形態の中には、抽象化メカニズムを提供するものもある。 この抽象化メ
カニズムは、仮想化としても知られる。仮想化は、データー・マッピング202を含む、プロジェクト設定またはユーザー設定を含むこともできる。手法によっては、設定ファイルがプロジェクト150毎に自動的に作られ、既存のユーザー設定をそのファイルにインポートすることができる。設定ファイルは、任意の数の参照項目および様々な実行位置を含むことができる。参照項目毎に、設定ファイル・マッピング202は、このデーター参照を表すために名称(例えば、識別子204)と、実行位置毎に物理データー・ソース(例えば、絶対パス346)を有する。
[0098] マッピングされたデーター・ソース136は、以上のINPUT TEMPの例におけると同様に、異なるデーター・プロバイダーから来ることもできる。符合化するとき、ユーザーは、名称、例えば、「INPUT」または「TEMP」を参照することによって、データーを
読み取る/書き込む。データー・ソース136が階層を有する場合、ユーザーは、「INPUT/OrderData」のような相対パス334を使用してデーターを参照することができる。ユ
ーザーがソースからの全てのデーターに対して動作を繰り返す必要がある場合、ユーザーは、場合に応じて、 "foreach (file f in TEMP) do_things(f);"または "foreach (file
f in INPUT/OrderData) do_things(f);"というようなコード122を書き込むことによ
って、データー・ソース136全体を繰り返すことができる。
[0099] プロジェクト150を構築するとき、ユーザーは、実行ターゲットから1つを選択する。次いで、構築システムは、設定ファイル・マッピング202にしたがって、異なるデーター・プロバイダー間におけるしかるべきマッピングによって、ソース・コードにおける名称を、対応する物理ソースに変換(マッピング、解決)する。
[00100] 例えば、以下のソース・コード122を仮定する。
Figure 2017215999
[00101] この同じソース122から、プロデューサー206は、指定されたターゲッ
ト208に基づいて、実行可能コード124を生成することもできる。つまり、ローカル・ターゲットに対して、この実行可能ファイルはこの中間ソース344に対応することができる。
Figure 2017215999
[00102] クラスター・ターゲットに対して、
Figure 2017215999
[00103] クラウド・ターゲットに対して、
Figure 2017215999
[00104] 以下の説明は、プロジェクト・データー・ライブラリー(PDL)文書に由
来する。プロジェクト・データー・ライブラリーとは、Microsoft Corporation(マイク
ロソフト社)によって設計されたソフトウェア・コンポーネントおよびサービスの集合体である。PDLソフトウェアおよび/または文書化の形態は、本明細書において記載する実施形態と一貫性があり、言い換えると、実施形態を例示する。しかしながら、PDL文書化および/または実現例の選択肢は、必ずしもこのような実施形態の範囲を制約することはないことは言うまでもなく、同様に、PDLおよび/またはその文書化は、このような実施形態の範囲外になる特徴も当然含むことも言うまでもない。加えて、Microsoft(
登録商標)のAzure(商標)クラウド技術が例において使用されるが、教示および実施形
態はこの特定のクラウド技術(Microsoft Corporationの標識(mark))には必ずしも限定
されない。また、以下の説明は、部分的に、必ずしも当業者とは限らない読者に対して補助として提供されるのであり、したがって以下で言明することが、本開示をサポートするために厳格には必要とされない詳細を含むことおよび/または省略するもあることも言うまでもない。
[00105] プロジェクト・データー・ライブラリー(PDL)の機構は、クライアント
、クラウド・ストレージ、およびリモート計算ノードに跨がって、リモート実行に対するソース・コード変更を行うことなく、シームレスなデーター・アクセスを提供することを目的とする。これは、計算ノードにおけるローカル・ファイル・ストレージ、ステージング・ストレージ(staging storage)、およびファイル・ストレージ間における、データー
参照のプロジェクト毎の抽象化(仮想化)を含む。ローカル・ボックスにおけるPDLはローカルPDLと呼ぶことができ、リモート計算ノードにおけるPDLはリモートPDLと呼ぶことができる。
[00106] Microsoft(登録商標)のWindows(登録商標)7オペレーティング・システ
ム・ソフトウェアは、ユーザー・コンテンツを格納するために特定のフォルダーを含むライブラリー、例えば、「音楽ライブラリー」および「文書ライブラリー」(Microsoft Corporationの標識)を提供する。この場合、ライブラリー抽象化は、様々なフォルダーの
論理集合体を表す(1つはデフォルトの書き込み位置である)。対照的に、PDLは、ローカル・ファイル・システム、クラウド・ストレージ、およびリモート計算ノードのファイル・システムというような、複数のストレージおよび実行環境に跨がるマッピングをサポートすることができる。
[00107] PDLは、ローカルPDLにおける各ファイルを、Azure(商標)ブロブ・ストレージ(Microsoft Corporationの標識)における1つのコンテナにマッピングするこ
とができる。例えば、ローカルPDLを、プロジェクト空間下における物理フォルダーにマッピングすることができ、データー集合全体からダウンロードされた1つのファイルを含む。クラウドPDLを、ユーザーのAzure(商標)ストレージ下のコンテナにマッピン
グすることができ、リモートPDLをモデル展開ディレクトリー(「モデル」は、ここでは、コンピューター・プログラムを指す)下の物理フォルダーにマッピングすることができる。クライアント、クラウド、およびクラスターに跨がるPDL移行(transition)は、クラウド・ストレージの物理的性質(physical nature)をユーザーのビュー(view)から取
り除き、ユーザーはデーターおよびモデリングに集中することができる。したがって、実行可能コードにおけるデーター参照は、絶対パスを全くハードコーディングすることなく、相対パスを使用することができる。これは、ローカル実行環境からリモート実行環境に移植されるときに、ソース・コード変更を行わずに、モデル・コードを実行することをサポートする。
[00108] 手法の中には、データー参照マッピングがAzure(商標)ブロブの共有アクセスシグネチャー(SAS)URIをステージング・ストレージ・アドレスとしてサポートするものがある。手法の中には、ローカルPDLとAzure(商標)ストレージとの間にお
けるマッピングが、Azure(商標)ストレージ・エンドにおけるコンテナおよびブロブを
使用して単純になるように、PDL内部において二レベル深度ディレクトリー構造を使用するものがある。例えば、ローカルPDL下のフォルダー名は、コンテナ名に対応し、フォルダー下のファイル名はブロブに対応する。手法の中には、フォルダー・レベルのデーター参照マッピングに注意を向け、即ち、ローカル・フォルダーを、プロジェクト・データー・ライブラリーに対するAzure(商標)ブロブ・ストレージにおけるコンテナ下の全
コンテンツにマッピングし、ローカル・フォルダーとコンテナ内部の部分的コンテンツとの間ではマッピングを行わないものがある。したがって、1つのコンテナ下にあるファイルは全てマッピングに含まれる。手法の中には、プロジェクト・データー・ライブラリーが、装置規模のデーター・ライブラリーの代わりに、プロジェクト毎の実装(implementation)に注意を向けるものがある。Azure(商標)ブロブ・ストレージのバージョンの中に
は、二レベル深度のディレクトリー(コンテナ/ブロブ)しかサポートしないものがあるが、階層構造を模擬するためにブロブに「/」を使って名称を付けることによって、それ
を回避することができる(例えば、ブロブ名は、"folder/subfolder/name")。ソース・
コードが"INPUT/folder/subfolder/blob"を参照する場合、プロデューサーは、"INPUT"にマッピングされたコンテナにおいて、ブロブ"folder/subfolder/name"をマッピングする
[00109] 手法の中には、ユーザー104が、PDLに関連する物理フォルダーを名称
変更する、動かす、および削除することの影響が分かっていると仮定するものがある。PDL外部の変更は、自動的にPDLと同期されない。これらのマッピングは、削除され再度作られる。
[00110] 本明細書における設計は、もっと多くのストレージ・ターゲット(例えば、
2つのHPCクラスター)および複数のステージング・ストレージ(例えば、2つのAzure(商標)ストレージ・アカウント)に適合するために、3つを超えるデーター参照ター
ゲット208にも適用可能にすることができる。
[00111] 手法の中には、リモート計算ノードに対するパス全体が、展開ディレクトリ
ー(deployment directory)に依存するものがある。これは、プログラム・ランタイムを介して引き出され、マッピング202は、この展開ディレクトリー下における相対パスしか追跡しない。
[00112] 手法の中には、マッピング202表における各行がデーター参照マッピング
を表すものがある。PDLは、参照マッピングの連合体(union)を含み、異なる環境に跨
がるデーター参照変換に備えるために、APIを設ける。マッピング名は、PDL下のデーター・フォルダーの表示名であり、デフォルトのフォルダー名である。
[00113] クラウド・ストレージでは、手法の中にはコンテナのURI全体だけを追跡
するものがあり、ストレージ・アカウント名およびキーはPDLに格納されない。ストレージ・アカウント名およびキーは、クライアント側のユーザー設定に格納される。SASポリシーがデーター参照マッピングにおけるAzure(商標)ブロブ・コンテナと関連付け
られるとき、コンテナ名を超える特定のSASポリシーもマッピング情報に含まれる。
[00114] 手法の中には、PDLに含まれる全てのデーター参照マッピング情報がプロ
ジェクト・レベルで存続されるので、リモートHPCクラスターにおいて実行されたときに、パッケージ222に含めることができる場合がある。PDL情報は、コンフィギュ・ファイル(config file)132、例えば、全てのデーター参照マッピングを含むDataLib.pdlのようなXMLとして、またはデーター参照マッピング毎に1つずつのファイルがある複数のコンフィギュ・ファイルとして、またはプロジェクト内部のプロジェクト・プロパ
ティ220として存続することができる。データー参照マッピングがプロジェクト・システムまたはプロジェクト150の他の永続的ストレージに登録されるとき、プログラム・パッケージング・フェーズの間ビルド・コード(build code)によってアクセス可能でなければならない。したがって、クラウド・ステージング・ストレージおよびリモート計算ノード・データー・ダウンロードについての対応するデーター参照情報を、このパッケージに含めることができる。
[00115] 手法の中には、PDLがPDL下の相対パスを想定して、物理パスを設ける
ために、データー参照解決を提供するものがある。データー参照解決をローカルに戻すと、PDLはマッピングにおけるルート・ディレクトリーのパス全体を把握する。したがって、パス全体に対する連結ストリング(concatenated string)を戻すことができる。
[00116] しかしながら、PDLはリモート・ルート・ディレクトリーが分からず、モ
デル(プログラム)展開ディレクトリー下のフォルダー名しか分からない。プログラム展開ディレクトリーは、プログラム・ランタイムでないと分からず、放出されるコードはコンパイル時にはそれが分からない。リモート・ノードではコンパイル(compilation)がな
いので、プログラム・ランタイムにリモート計算ノードにおいてパス全体を解決するために、種々の手法を使用することができる。例えば、マッピングのローカル・ターゲットのディレクトリー毎にファイルを、例えば、batsmapping. configに対して "C:\BATS"を作
ることができ、このファイルは、実行load_csvのルート・ディレクトリー内にある。このファイルは、データーがマッピングのためにロードされるときに、リモート・ノードにおいて作られる。あるいは、マッピング毎にローカル・ターゲットに対するローカル・ルート・ディレクトリーに環境変数を登録することもできる。
[00117] 手法の中には、異なる環境に跨がってデーター参照を解決するために以下の
APIを使用するものがある。
Figure 2017215999
[00118] 手法の中には、データー参照マッピングに以下のクラス設計を使用するもの
がある。これは、ローカルPDL、ステージング・ストレージ、およびリモートPDLに跨がるマッピングを表す。尚、ExecutionTargetおよびVirtualPathクラスは、データー・アクセスAPIとPDLライブラリーとの間で共有されることを注記しておく。
Figure 2017215999
Figure 2017215999
[00119] コードを続ける前の余談として、ExecutionTargetおよびVirtualPathクラス
は、データー・アクセスAPIとPDLライブラリーとの間で共有されることを注記しておく。
[00120] コードは以下のように続く。
Figure 2017215999
Figure 2017215999
[00121] 何らかの手法によって、各ストレージ・ターゲットは、実行環境におけるス
トレージ参照、ステージング・データー・ターゲット、または結果永続ストレージ(result persistent storage)を表す。ストレージ・ターゲットに対するベース・クラスは、次
の通りであり、ローカル・ファイル・システム・ターゲット、Azure(商標)ブロブ・ス
テージング・ストレージ、リモート・ターゲット、結果の永続ストレージというような、それぞれの特定のターゲットがある。
Figure 2017215999
[00122] 手法の中には、PDL下でローカル・フォルダー(相対パス)を表すVirtualPathクラスも使用するものがある。
Figure 2017215999
[00123] 手法の中には、以下がPDLに対するクラス設計であるものがあり、これは
3C(即ち、クライアント、クラスター、およびクラウドを跨がる)を跨いで全てのデーター参照マッピングを維持する。
Figure 2017215999
[00124] コードを続ける前に、余談として、本明細書におけるこのコード・リストお
よび他のいくつかのコード・リストでは、リスト空間を凝縮するために、以下のようなタグが取り除かれていることを注記しておく。
Figure 2017215999
[00125] また、リスト空間を凝縮するために、ホワイト・スペースも取り除かれてい
る。コードは以下のように続く。
Figure 2017215999
Figure 2017215999
[00126] PDL情報(例えば、マッピング202)をクライアント側で存続させるた
めには、様々な手法を使用することができる。PDL情報を含ませ、コンフィギュ・ファイルをプロジェクト内に追加するために、XMLのようなコンフィギュ・ファイルを使用することができる。あるいは、PDL情報をプロジェクト・プロパティ220として追加するために、プロジェクト管理システムを変更することができる。プロジェクト・プロパティ220は、プロジェクト・ファイルを右クリックし、プロパティを選択することによって、入力および編集することができる。他の選択肢には、クライアントのインフラストラクチャのIPropertyCollectionインターフェースを利用することが挙げられる。
[00127] 手法の中には、データー参照マッピング202が、XMLファイルとして、
例えば、DataLib.pdlファイルのようにセーブされるものがある。手法の中には、ユーザ
ーがマッピングをこのファイルにおいて作って編集すること、およびIDE148を使用
してこのファイルをプロジェクトに追加できることを仮定するものがある。PDL XMLは、DataContractSerializerを使用して生成することができ、対応するエレメント名が、C#クラス定義において属性として追加される。
Figure 2017215999
[00128] ローカルに実行することに関して、ユーザーがload_csv(dataref("BATS\a.csv"))というような、識別子204を言明するソース・コードを書くことを仮定する。手法
の中には、datarefがプロジェクト・データー・ライブラリーにおいてローカルのデータ
ー参照マッピング情報を探し、パスを変換し、次いでload_csv("c:\data\BatsData\a.csv")をコールするものがある。例えば、dataref("BATS\a.csv")を、以下のようにPDLマ
ッピング情報にアクセスする関数に変換することができる。このマッピングに対するローカル・ルート・ディレクトリーは、ローカル実行のために放出された関数においてインラインになる。
Figure 2017215999
[00129] クラウドのためにパッケージングするとき、手法の中にはpdlファイルをパッケージ222にパックするものがある。Azure(商標)ストレージをステージング・スト
レージとして使用するリモート計算ノード実行のためにパッケージングするとき、データー・セキュリティのためにSAS URLを含む他のpdlファイルを作ることもできる。
SAS生成は、例えば、MSBuild内部でトリガーされ、ユーザーには透過的である。この
ファイルを作るために、クラウド・ターゲットのパスをSASが生成したものと置き換え、
ローカル・ターゲットのパスを、計算ノードにおいて予期されるデーターの位置と置き換える。どこでプログラムが抜き出される(unpackage)か分かっている場合、同じフォルダ
ーの下でデーターはロードされ、分かっていない場合、フォルダーを作ることができる。新たなDataLib.pdlファイルを作ることができ、これがパッケージに含まれる。
Figure 2017215999
[0130] このDataLib.pdlは、プログラム(別名ではモデル)と共にパッケージに入れ
られる。プログラム・ランタイムにおける抜き出しの間、DataLib_cloud.pdlを発見する
。名称から、1つはクラウドからローカルにデーターを引き出すためのものであることがわかる。したがって、生成された各SASパスに行き、データーを対応するローカル・パス
に引き出す。データー参照マッピングでは、フォルダー名は分かるが、名称全体は分からない。データー・ローディング(PDL外部のコンポーネント)がルート展開ディレクトリーを引き出し、例えば、エクステンシビリティ・フレームワーク(extensibility framework)を使用して、データー宛先に対する経路全体を生成する。
[00131] リモートに実行することに関して、ユーザーが以上と同じコードload_csv(dataref("BATS\a.csv"))を書くと仮定する。datarefが、DataLib_cloud.pdlにおけるローカルに対するマッピング情報を探し、パスを変換し、次いでload_csv("c:\deploymentroot\\TradingStrategy\BATS\a.csv")をコールする。datarefの実行可能関数は、以前のデーター・ローディング・フェーズにおいて生成されたbitmapping.configを読み取って、BA
TSマッピングに対するルート・ディレクトリーを解決し、datarefは、ルート・ディレ
クトリーの連結、および引数から渡される仮想パスを戻す。したがって、a.csvに対する
ローカル・パスは、リモート計算ノードにおけるローカル・ファイル参照に基づいて解決することができる。
[00132] スレッドの安全性に関して、手法の中には、各プロジェクトが別個のPDL
を有し、PDLの上に次の動作を有するものがある。データー参照マッピングをメモリー内PDLに追加する、メモリー内PDLインスタンスをファイルにセーブする、PDLをファイルからメモリー内PDLインスタンスにロードする、物理パスを解決する、データー参照マッピングを入手する。プロジェクト毎に1つのメモリー内PDLデーター構造があり、複数のデーター参照マッピングを含む。また、永続XMLファイルもあり、PDLメモリー内構造にロードすることができる。手法の中には、ユーザーがマッピングをメモリー内のもの(クライアントにおいてのみ)に追加するために、データー・ライブラリー・エクスプローラー(DLE)においてPDLをコールするもの、メモリー内PDLからマッピングを得るためにMSBuildにおいてコールするもの、およびPDLをロードし/マ
ッピングを追加し/PDLをセーブする(リモートのみ)データー・ローディングのためにPDLをコールするものがある。DLEおよびMSBuildは同時にPDLを変更しないの
で、メモリー内PDLまたはPDLファイルに対する競合はない。
[00133] 手法の中には、次の機能制約を規定するものがある。データー・ライブラリ
ーの作成、セーブ、およびロードに関して、データー・ライブラリーに対するマッピングおよび設定は、公開インターフェースを介して正しく作られ、セーブされ、ロードされなければならない。コンストラクター(constructor)から新たなデーター・ライブラリーを
作成することをサポートしなければならない。データー・ライブラリーをファイルにセーブすることをサポートしなければならない。永続ストレージからデーター・ライブラリーをロードすることをサポートしなければならない。有効でないまたは存在しないパスへのセーブまたはこのパスからのロードを検出し回避しなければならない。
[00134] 新たなエントリーをPDLに追加することに関して、ユーザーは新たな一意
のエントリーをPDLに首尾良く登録することができ、新たな一意のマッピング・エントリーをPDLに追加すること、複製マッピング・エントリーをPDLに追加すること、同じAzure(商標)ストレージ・パスであるが異なるローカル・パスでエントリーを追加す
ること、および同じローカル・パスであるが異なるAzure(商標)ストレージで新たなエ
ントリーを追加しようとすることに対して、サポートを設けることができる。
[00135] 既存のPDLを変更することに関して、ユーザーは既存のPDLをロードし
、何らかの変更を行い、それを再度セーブする、例えば、何らかの新たなエントリーを追加し、既存のエントリーを編集し、既存のエントリーを削除することができる。
[00136] データー・フォルダー、ストレージ、およびブロブの命名に関して、異なる
ターゲットが異なる命名規則および制約を有する場合があることは言うまでもない。データー・ライブラリーは、ファイル参照をチェックして、これらが有効であることを確認することができる。手法の中には、ユーザーのシナリオによって求められたときに、またはエラーに対してしかるべく対処するために、ライブラリーが正しいマッピング、解決されたリソース・アドレス、またはエラー(データー・ライブラリー内にない場合)を戻すことができる。また、リソースの検索および解決は、例えば、ローカル・ファイルを解決し、Azure(商標)ストレージ・リソースURIにマッピングし、リモート・ターゲットを
解決し、例えば、二レベル・ディレクトリー内でリソースを解決する機能によって、反復可能であり明白である(definitive)と想定することができる。
結論
[00137] 本明細書では、 特定の実施形態を、処理として、構成媒体として、またはシステムとして明確に例示し説明したが、ある種類の実施形態の説明は、一般に他の種類の
実施形態にまで及ぶことが認められよう。例えば、図3と関連したプロセスの説明は、構成媒体を説明するのにも役立ち、そして他の図面と関連して説明したようなシステムおよび製品の動作を説明するのにも役立つ。それは、一実施形態の限定が、必ずしも別の実施形態にも読み込まれるということではない。特に、プロセスは、システムまたは構成メモリー等の製品を説明する間に提示されたデーター構造および構成に必ずしも限定される訳ではない。
[00138] 図面に示したすべての項目が、あらゆる実施形態にも存在するという訳では
ない。逆に、実施形態が、図面に明確に示されていない品目(1つまたは複数)を含んでもよい。本明細書では具体的な例によって本文および図面において可能性が示されるが、実施形態はこれらの例から逸脱してもよい。例えば、一例の具体的な機構は、省略され、名称変更され、異なるグループに纏められ、繰り返され、ハードウェアおよび/またはソフトウェアに異なってインスタンス化され、あるいは例のうちの2つ以上に現れる機構の混合であってもよい。実施形態の中には、1つの位置で示された機能が、異なる位置に設けられてもよい。
[00139] 図面に対する参照は、全体的に参照番号によって行われた。所与の参照番号
と関連する言い回しにおいて、図面において、または文章において、明白な矛盾がある場合、そのいずれも、その番号によって参照されるものの範囲を単に広げたものとして理解してしかるべきである。
[00140] 本明細書において使用する場合、「1つの」(a)または「その」(the)という
ような用語は、示された項目またはステップのうちの1つ以上を含むものとする。特に、特許請求の範囲において、ある項目に言及する場合、少なくとも1つのそのような項目が存在することを意味し、そしてステップに言及する場合、そのステップのうちの少なくとも1つのインスタンスが実行されることを意味する。
[00141] 見出しは、単に便宜上のものに過ぎない。所与の論説(topic)についての情報が、見出しがその論説を示す節の外側で発見されることもある。
[00142] 提出される特許請求の範囲および要約書は全て、本明細書の一部である。
[00143] 以上、実施形態例を図示し説明したが、本発明の原理および特許請求の範囲
に記載した概念から逸脱せずに、複数の変更を行うことができること、そしてそのような変更は、抽象的概念全体を包含する必要がないことは、当業者には明白であろう。構造的特徴および/または手順的動作に特定の用語で主題について説明したが、添付した特許請求の範囲において定められる主題は、以上で説明した特定の特徴や動作に必ずしも限定される訳ではないことは言うまでもない。所与の定義または例で特定されたあらゆる手段または形態が、あらゆる実施形態において存在するまたは利用されることが必要な訳ではない。むしろ、説明した特定の特徴または動作は、特許請求の範囲を実現するときに考慮する例として開示されたまでである。
[00144] 抽象的な考え全体を包み込むには達しないが特許請求の範囲の均等の意味お
よび範囲に入る変更は全て、法によって許容される限りにおいて、その範囲内に含まれるものとする。

Claims (10)

  1. ソース・コードと複数の代替計算データー・ソースとを連携して管理するプロセスであって、
    特定のデーター・ソース識別子がそれぞれの実行ターゲットにおいて複数のデーター・ソースにマッピングされるデーター・ソース・マッピングを得るステップと、
    前記データー・ソース識別子をデーター・ソースとして言明する開発者ソース・コードを受けるステップと、
    第1実行ターゲットを特定するステップと、
    前記開発者ソース・コードから第1実行可能コードを自動的に生成するステップであって、前記第1実行可能コードが、前記第1実行ターゲットにおいて実行すると、前記第1実行可能ターゲットのマッピングされたデーター・ソースを、前記データー・ソース識別子によって特定される前記データー・ソースとして動作する、ステップと、
    前記第1実行ターゲットとは異なるデーター・ソースを有する第2実行ターゲットを特定するステップと、
    前記同じソース・コードから第2実行可能コードを自動的に生成するステップであって、前記第2実行可能コードが、前記第2実行ターゲットにおいて実行すると、前記第2実行ターゲットのマッピングされたデーター・ソースを前記第1実行ターゲットのデーター・ソースの代わりに、特定されたデーター・ソースとして動作する、ステップと、
    を含む、プロセス。
  2. 請求項1記載のプロセスにおいて、前記実行ターゲットを特定するステップが、ローカル実行ターゲット、クラスター実行ターゲット、クラウド実行ターゲットの内少なくとも2つを特定する、プロセス。
  3. 請求項1記載のプロセスにおいて、前記同じ開発者ソース・コードから第2実行可能コードを自動的に生成するステップが、フォルダー作成コール、クラウド・コンテナ作成コール、ファイル作成コールの内少なくとも1つを注入するソース−ソース間変換を実行するステップを含む、プロセス。
  4. データーおよび命令が構成される(configure)コンピューター読み取り可能非一時的記
    憶媒体であって、前記命令が少なくとも1つのプロセッサーによって実行されると、前記プロセッサー(1つまたは複数)に、開発者によって使用するためのプロセスを実行させ、前記プロセスが、
    特定のデーター・ソース識別子がそれぞれの実行ターゲットにおいて複数のデーター・ソースにマッピングされるデーター・ソース・マッピングを得るステップと、
    前記データー・ソース・マッピングおよびソース・コードから、それぞれの異なる実行ターゲットに対して、少なくとも2つの異なるデーター・ソース解決を、前記開発者によるソース・コードに対する変更を必要とせずに、自動的に生成するステップと、
    を含む、コンピューター読み取り可能非一時的記憶媒体。
  5. 請求項4記載の構成媒体であって、前記生成するステップが、ユニバーサル・リソース識別子を含むデーター・ソース解決と、前記データー・ソース識別子を根源とする相対パスに基づくデーター・ソース解決の内少なくとも1つを生成する、構成媒体。
  6. 請求項4記載の構成媒体において、前記生成するステップが、物理記憶位置識別ストリングの単なる置き換えを超えるものを含む、構成媒体。
  7. 請求項4記載の構成媒体において、前記プロセスが、更に、前記開発者から前記実行ターゲットの仕様を受け入れるステップを含み、前記実行ターゲットの内少なくとも1つが
    、複数の計算デバイスを含み、前記実行ターゲットに対してマッピングされるデーター・ソースが、少なくとも1テラバイトのデーターを含む、構成媒体。
  8. コンピューター・システムであって、
    論理プロセッサーと、
    前記論理プロセッサーと動作可能に通信するメモリーと、
    前記メモリー内に存在し、それぞれの異なる実行ターゲットにおいて複数の異なるデーター・ソースにマッピングされる特定のデーター・ソース識別子を有するデーター・ソース・マッピングと、
    前記メモリー内に存在し、前記開発者ソース・コード内におけるデーター・ソースとして明言される前記データー・ソース識別子を有する開発者ソース・コードと、
    前記メモリー内に存在し、命令を有する実行可能コード・プロデューサーであって、実行すると、異なる時点において同じ開発者ソース・コードから、複数の異なる実行可能コードを生成し、各実行可能コードが前記データー・ソースの内異なる1つに対する参照を行う、実行可能コード・プロデューサーと、
    を含む、コンピューター・システム。
  9. 請求項8記載のシステムにおいて、前記開発者ソース・コードには、実行位置を検出するコードがなく、前記開発者ソース・コードも絶対パス・データー・ソース識別子がない、システム。
  10. 請求項8記載のシステムにおいて、前記データー・ソース・マッピングが、テキスト構成ファイル、非テキスト・プロジェクト・プロパティ、プロジェクト特定構造、ユーザー特定構造の内少なくとも1つに存在する、システム。
JP2017150802A 2011-09-07 2017-08-03 変換コンテンツ・アウェア・データー・ソース管理 Active JP6457594B2 (ja)

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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014529787A Division JP2014529832A (ja) 2011-09-07 2012-09-04 変換コンテンツ・アウェア・データー・ソース管理

Publications (2)

Publication Number Publication Date
JP2017215999A true JP2017215999A (ja) 2017-12-07
JP6457594B2 JP6457594B2 (ja) 2019-01-23

Family

ID=47574776

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014529787A Withdrawn JP2014529832A (ja) 2011-09-07 2012-09-04 変換コンテンツ・アウェア・データー・ソース管理
JP2017150802A Active JP6457594B2 (ja) 2011-09-07 2017-08-03 変換コンテンツ・アウェア・データー・ソース管理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014529787A Withdrawn JP2014529832A (ja) 2011-09-07 2012-09-04 変換コンテンツ・アウェア・データー・ソース管理

Country Status (6)

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

Families Citing this family (98)

* 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
US9880818B2 (en) * 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
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
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
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
US10621524B2 (en) * 2015-11-09 2020-04-14 Dassault Systemes Americas Corp. Exporting hierarchical data from a source code management (SCM) system to a product lifecycle management (PLM) system
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
CN107015996A (zh) * 2016-01-28 2017-08-04 阿里巴巴集团控股有限公司 一种资源访问方法、装置及系统
CN107025104A (zh) * 2016-02-02 2017-08-08 龙芯中科技术有限公司 内核开发管理系统和方法
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
EP3847547A4 (en) * 2018-09-04 2022-10-12 AVEVA Software, LLC FLOW-BASED COMPOSITION, AND MONITORING SERVER SYSTEM AND METHOD
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 (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02165239A (ja) * 1988-12-20 1990-06-26 Fujitsu Ltd 大規模知識ベースにおけるデータアクセス方式
JPH1031603A (ja) * 1996-07-17 1998-02-03 Nec Corp 情報処理システム、クライアント/サーバシステム、およびデータベースアクセス方法
JPH1165832A (ja) * 1997-08-21 1999-03-09 Sony Corp ソースコード変換方法及び記録媒体
JPH1173306A (ja) * 1997-08-28 1999-03-16 Mitsubishi Electric Corp クライアント/サーバ・プログラム生成装置及びクライアント/サーバ・プログラム生成方法
JP2000181697A (ja) * 1998-12-18 2000-06-30 Nec Corp メインフレームcobol資産のオープン系システムへのコンバージョン方法及び装置並びに記録媒体
JP2001306326A (ja) * 2000-04-24 2001-11-02 Sony Corp データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体
JP2002318692A (ja) * 2001-04-19 2002-10-31 Sony Corp インストール支援システム、インストール支援装置、インストール支援方法、インストールを支援するためのプログラムおよびそのプログラムを記録した記録媒体
US20030009747A1 (en) * 2001-06-25 2003-01-09 International Business Machines Corporation Apparatus and method for porting applications to different platforms
JP2007133820A (ja) * 2005-11-14 2007-05-31 Nec Corp プログラム開発支援装置およびプログラム開発支援方法
US20070256048A1 (en) * 2006-05-01 2007-11-01 Microsoft Corporation Loading application resources
JP2008538016A (ja) * 2004-11-12 2008-10-02 メイク センス インコーポレイテッド 概念または項目を用いて知識相関を構成することによる知識発見技術
US20080295069A1 (en) * 2007-05-21 2008-11-27 International Business Machines Corporation User-extensible rule-based source code modification
US20090049438A1 (en) * 2007-08-14 2009-02-19 International Business Machines Corporation Method for Optimizing Migration of Software Applications to Address Needs

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2025160A1 (en) 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
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
US7009980B1 (en) 2000-03-13 2006-03-07 Lucent Technologies Inc. Apparatus and method for automatic port identity discovery in hierarchical heterogenous systems
US6901409B2 (en) * 2001-01-17 2005-05-31 International Business Machines Corporation Mapping data from multiple data sources into a single software component
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
GB0329246D0 (en) * 2003-12-18 2004-01-21 Agilent Technologies Inc Method of translating computer program code, communications system and network management entity therefor
US7590972B2 (en) 2004-10-28 2009-09-15 Cogency Software, Inc. Role-oriented development environment
US20060259903A1 (en) 2005-05-12 2006-11-16 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
JP2007004503A (ja) * 2005-06-24 2007-01-11 Mitsubishi Electric 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
CN101968793B (zh) * 2010-08-25 2012-09-05 大唐软件技术股份有限公司 一种基于异构数据源数据核对的方法和系统

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02165239A (ja) * 1988-12-20 1990-06-26 Fujitsu Ltd 大規模知識ベースにおけるデータアクセス方式
JPH1031603A (ja) * 1996-07-17 1998-02-03 Nec Corp 情報処理システム、クライアント/サーバシステム、およびデータベースアクセス方法
JPH1165832A (ja) * 1997-08-21 1999-03-09 Sony Corp ソースコード変換方法及び記録媒体
JPH1173306A (ja) * 1997-08-28 1999-03-16 Mitsubishi Electric Corp クライアント/サーバ・プログラム生成装置及びクライアント/サーバ・プログラム生成方法
JP2000181697A (ja) * 1998-12-18 2000-06-30 Nec Corp メインフレームcobol資産のオープン系システムへのコンバージョン方法及び装置並びに記録媒体
JP2001306326A (ja) * 2000-04-24 2001-11-02 Sony Corp データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体
JP2002318692A (ja) * 2001-04-19 2002-10-31 Sony Corp インストール支援システム、インストール支援装置、インストール支援方法、インストールを支援するためのプログラムおよびそのプログラムを記録した記録媒体
US20030009747A1 (en) * 2001-06-25 2003-01-09 International Business Machines Corporation Apparatus and method for porting applications to different platforms
JP2008538016A (ja) * 2004-11-12 2008-10-02 メイク センス インコーポレイテッド 概念または項目を用いて知識相関を構成することによる知識発見技術
JP2007133820A (ja) * 2005-11-14 2007-05-31 Nec Corp プログラム開発支援装置およびプログラム開発支援方法
US20070256048A1 (en) * 2006-05-01 2007-11-01 Microsoft Corporation Loading application resources
US20080295069A1 (en) * 2007-05-21 2008-11-27 International Business Machines Corporation User-extensible rule-based source code modification
US20090049438A1 (en) * 2007-08-14 2009-02-19 International Business Machines Corporation Method for Optimizing Migration of Software Applications to Address Needs

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
酒井達明: "特集2 これでわかった!クラウド楽々活用術:Part3 .NETから移行は簡単!Windows Azur", 日経ソフトウエア, vol. 第12巻,第9号(通巻142号), JPN6016032113, 24 August 2009 (2009-08-24), JP, pages p.81−83 *
鈴木洋一、谷村吉隆、柴田直樹, 徹底解説 WINDOWS HPC SERVER 2008 −クラスタ構築と実践テクニック−, vol. 初版, JPN6016032112, 9 November 2009 (2009-11-09), JP, pages p.89−90 *

Also Published As

Publication number Publication date
JP2014529832A (ja) 2014-11-13
CN102902529A (zh) 2013-01-30
EP2754032A2 (en) 2014-07-16
US8863082B2 (en) 2014-10-14
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
JP6457594B2 (ja) 変換コンテンツ・アウェア・データー・ソース管理
EP3350696B1 (en) Overriding a migrated method of an updated type
US9116707B2 (en) Dependency resolution in polyphasic modules
KR20160002888A (ko) 애플리케이션 내의 대역외 프레임워크 라이브러리
US10303449B2 (en) Compiling non-native constants
US10789047B2 (en) Returning a runtime type loaded from an archive in a module system
US10417024B2 (en) Generating verification metadata and verifying a runtime type based on verification metadata
WO2018187798A1 (en) Flow-based scoping
KR20220113372A (ko) 통합된 참조물 및 2차 객체 표시
US11048489B2 (en) Metadata application constraints within a module system based on modular encapsulation
US10387142B2 (en) Using annotation processors defined by modules with annotation processors defined by non-module code
US10802855B2 (en) Producing an internal representation of a type based on the type's source representation
US10346225B2 (en) Synthesized modules for module renaming
EP3164800B1 (en) Bridging a module system and a non-module system
Villela et al. About Static. NET Assembly

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180711

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181112

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181220

R150 Certificate of patent or registration of utility model

Ref document number: 6457594

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250