JP5139987B2 - 拡張可能メタデータ - Google Patents

拡張可能メタデータ Download PDF

Info

Publication number
JP5139987B2
JP5139987B2 JP2008535534A JP2008535534A JP5139987B2 JP 5139987 B2 JP5139987 B2 JP 5139987B2 JP 2008535534 A JP2008535534 A JP 2008535534A JP 2008535534 A JP2008535534 A JP 2008535534A JP 5139987 B2 JP5139987 B2 JP 5139987B2
Authority
JP
Japan
Prior art keywords
metadata
schema
assembly
standardized
execution environment
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.)
Expired - Fee Related
Application number
JP2008535534A
Other languages
English (en)
Other versions
JP2009512062A (ja
Inventor
ダブリュ.ブランメ クリストファー
エイチ.ホッグ ジェイムズ
エス.ミラー ジェイムズ
リージン セルゲイ
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 Corp
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 JP2009512062A publication Critical patent/JP2009512062A/ja
Application granted granted Critical
Publication of JP5139987B2 publication Critical patent/JP5139987B2/ja
Expired - Fee Related 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • 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/448Execution paradigms, e.g. implementations of programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、拡張可能なメタデータを含む、少なくとも1つのコンピュータ可読媒体、方法、システムに関する。
ランタイム実行環境(runtime execution environment)は、アプリケーションプログラミングプラットフォームおよびアプリケーション実行プラットフォームの少なくとも一方として働くことができる。アプリケーションプログラミングプラットフォームとして、ランタイム実行環境は、複数のコンピューティング言語の1つで書かれ得る目標アプリケーションをコンパイルして、例えば、中間言語(intermediate language)またはバイトコードにすることができる。
コンパイルされたコードのメタデータに関して、スキーマ標準からの逸脱を可能にする。
メタデータストリームは、マネージド実行環境(managed execution environment)においてコンパイルされたアプリケーションに対応するメタデータ用のスキーマの記述を提供するために、1つまたは複数のデータ構成(data construct)を含むことができる。
この場合、コンパイルされたコードのメタデータは、スキーマ標準からの逸脱を可能にするために、メタデータ用のスキーマについての対応する記述を有することができる。
本説明は、以下の図を参照する。
拡張可能メタデータ(extensible meta−data)および関連技術が、今から説明される。
拡張可能メタデータは、本明細書で説明されるように、マネージド実行環境またはアンマネージド実行環境(unmanaged execution environment)のどちらかにおいてコンパイルされたアプリケーションに対応するメタデータに関係することができる。より具体的には、本明細書で説明される例示的な実施によれば、アプリケーションの少なくとも部分に対応するメタデータは、実行環境内での実行に悪影響を及ぼすことなく、拡張可能にされることができる。そのようなアプリケーションは、ネットワーク環境内の1つまたは複数の装置またはノードで実施される実行プラットフォーム上での実行のために、コンパイルされることができる。
本明細書で使用される「アセンブリ(assembly)」は、配置の単位(unit of deployment)、またはより具体的には、コード用のバージョン管理可能な配置の単位のこととすることができる。
本明細書で説明される「メタデータ」は、その他のデータ、特にコンパイルされたコードについて記述するデータのこととすることができる。メタデータは、例えば、1つまたは複数のデータ要素についての詳細な量の情報またはデータについての記述的項目を提供することができる。
本明細書で説明される「スキーマ」は、データ構造、および構造内の各データ要素が含み得る内容の型を定義するデータのこととすることができる。
図1は、拡張可能メタデータに関係する例示的な技術が実施され得る、例示的なネットワーク環境100を示しているが、そのような例示的な技術は、決してネットワーク環境に限定されない。そのような技術は、本明細書で説明されるような、拡張可能メタデータ120に関連する、ツール、方法、およびシステムを含むことができるが、それらに限定されない。より具体的には、ツール、方法、およびシステムは、メタデータが拡張可能であるかどうかに関わらず、メタデータをフォーマットし、読み、または分析するために実施されることができる。
図1では、クライアント装置105、サーバ装置110、および「その他の」装置115は、ネットワーク125を介して、互いに通信可能に結合されることができ、さらに、クライアント装置105、サーバ装置110、および「その他の」装置115の少なくとも1つは、上述の技術を可能にすることができる。
クライアント装置105は、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりに関連するメタデータをフォーマットし、読み、または分析することが可能な、デスクトップパーソナルコンピュータ(PC)、ワークステーション、メインフレームコンピュータ、インターネット機器、またはセットトップボックスを含む、様々な知られたコンピューティング装置の少なくとも1つを表すことができる。クライアント装置105はさらに、モバイル(すなわちセルラ)電話、携帯情報端末(PDA)、ラップトップコンピュータなどを含む、有線および/または無線リンクによってネットワーク125に関連付けられることが可能な、任意の装置の1つを表すことができる。またさらに、クライアント装置105は、様々な数量および/または組み合わせの上述のクライアント装置を表すことができる。「その他の」装置115も、クライアント装置105の上記の例のいずれかによって実施されることができる。
サーバ装置110は、拡張可能メタデータ120の少なくとも1つの実施に従って、様々なデータおよび/または機能のいずれかをクライアント装置105または「その他の」装置115に提供することが可能な、任意の装置を表すことができる。データは、公共的に利用可能とすることができ、あるいは代替として、制限されることができ、例えば、一定のユーザのみに、または適切な加入料もしくはライセンス料が支払われた場合のみに、制限されることができる。サーバ装置110は、ネットワークサーバ、アプリケーションサーバ、ブレードサーバ、またはそれらの任意の組み合わせの少なくとも1つとすることができる。典型的には、サーバ装置110は、コンテンツソースとすることができる任意の装置を表すことができ、クライアント装置105は、ネットワーク125を介して、またはオフライン方式で、そのようなコンテンツを受け取ることができる任意の装置を表すことができる。しかし、本明細書で説明される例示的な実施によれば、クライアント装置105とサーバ装置110は、ネットワーク環境100において、互いに交替しながら送信ノードまたは受信ノードになることができる。「その他の」装置115も、サーバ装置110の上記の例のいずれかによって実施されることができる。
「その他の」装置115は、本明細書で説明される例示的な技術の1つまたは複数に従って拡張可能メタデータ120を実施することが可能な、任意のさらなる装置を表すことができる。すなわち、「その他の」装置115は、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりに関連するメタデータをフォーマットし、読み、または分析することが可能な、任意のソフトウェア使用可能コンピューティングまたは処理装置を表すことができる。したがって、「その他の」装置115は、その上で実施される、オペレーティングシステム、インタープリタ、コンバータ、コンパイラ、またはランタイム実行環境の少なくとも1つを有する、コンピューティングまたは処理装置とすることができる。これらの例は、決して限定を意図したものではなく、したがって、そのように解釈されるべきではない。
ネットワーク125は、有線および/または無線ネットワークを含み得る、様々な従来のネットワークトポロジおよびタイプのいずれかを表すことができる。ネットワーク125はさらに、公共および/または独自仕様のプロトコルを含む、様々な従来のネットワークプロトコルのいずれかを利用することができる。ネットワーク125は、例えば、インターネットのほか、802.11システムなどの(個々に「LAN」とも呼ばれる)1つまたは複数のローカルエリアネットワークの少なくとも部分、もしくはより大規模にワイドエリアネットワーク(すなわち「WAN」)、またはBluetoothなどのパーソナルエリアネットワーク(すなわちPAN)を含むことができる。
装置105、110、115の少なくとも1つにおけるコンピュータアーキテクチャは一般に、ハードウェアおよびソフトウェアに関する定義されたコンピューティングプラットフォームを有する。コンピューティング装置用のソフトウェアは、機能に基づいて、ハードウェアアブストラクションレイヤ(代替として「HAL」と呼ばれる)、オペレーティングシステム(代替として「OS」と呼ばれる)、およびアプリケーションを含み得るグループに分類されることができる。
ランタイム実行環境は、OSとアプリケーションの間に存在することができ、アプリケーションが処理装置105、110、115のいずれか1つまたは複数の上で特定のタスクを実行し得る空間として働くことができる。より具体的には、ランタイム実行環境は、そのような装置上で動作するアプリケーションにアブストラクションレイヤおよびサービスを提供することによって、またさらに、アプリケーションにメモリ管理およびメモリ構成を含む機能を提供することによって、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、およびモバイル処理/通信装置を含む、その範囲を広げつつある処理装置105、110、115上でのアプリケーション実行の信頼性を向上させることができる。
ランタイム実行環境は、アプリケーションプログラミングプラットフォームおよびアプリケーション実行プラットフォームの少なくとも一方として働くことができる。
アプリケーションプログラミングプラットフォームとして、ランタイム実行環境は、複数のコンピューティング言語の1つで書かれ得る目標アプリケーションをコンパイルして、例えば、中間言語(これ以降「IL」)またはバイトコードを生成することができる。ILは典型的には、プラットフォームとは独立であり、中央処理装置(これ以降「CPU」)は、多くのCPU機械語よりも高水準の言語であるILを実行する。
アプリケーション実行プラットフォームとして、ランタイム実行環境は、コンパイルされたILをネイティブな機械命令に解釈することができる。ランタイム実行環境は、そのような命令を実行するために、インタープリタまたはコンパイラ(例えば、「ジャストインタイム(just−in−time)」コンパイラ、もしくは「JIT」コンパイラ)のどちらかを利用することができる。いずれにしても、その後、ネイティブな機械命令が、CPUによって直接実行されることができる。ILはCPU独立であるので、そのCPUプラットフォーム上で動作するOSが適切なランタイム実行環境をホストする限り、ILは、どのCPUプラットフォーム上でも実行することができる。
拡張可能メタデータ120に関連する技術が実施され得るランタイム環境の例は、Visual Basicランタイム環境、例えばJava(登録商標)ルーチンを実行するのに使用されるJava(登録商標)仮想マシンランタイム環境、または呼び出しルーチンを実行する前に例えばMicrosoft .NET(商標)アプリケーションを機械語にコンパイルするための共通言語ランタイム(CLR:Common Language Runtime)を含む。しかし、ランタイム環境のこの列挙は、例として提供されたに過ぎない。さらに、本明細書で説明される例示的な技術は、必ずしもこれらのマネージド実行環境だけに限定されない。より具体的には、例示的な実施は、マネージド実行環境だけに限定されず、1つまたは複数の例は、テスト環境および/またはアンマネージド実行環境内でも実施されることができる。
ILにコンパイルされたアプリケーションは、「マネージドコード(managed code)」と呼ばれることがあり、したがって、ランタイム実行環境は、代替として、「マネージド実行環境」と呼ばれることがある。その実行のためにランタイム実行環境を利用しないコードは、ネイティブコードアプリケーション(native code application)と呼ばれることがあることに留意されたい。
図2は、拡張可能メタデータ120(図1を参照)に関連する技術が実施され得る、例示的なランタイム実行環境200を示している。
少なくとも1つの例示的な実施によれば、ランタイム実行環境200は、コンピューティング装置プラットフォームのためにマネージドコードの実行を容易にすることができる。マネージドコードは、アプリケーション開発技術のコアセットの部分であると考えられることができ、さらに、ランタイム実行環境200における実行のためにコンパイルされ、対応するサービスをコンピューティング装置プラットフォームに提供する、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりと見なされることができる。加えて、ランタイム実行環境200は、解釈レベルのマネージドコードを、プロセッサによってプロキシされ、その後、実行され得る命令に翻訳することができる。代替として、マネージドコードは、インタープリタもしくはコンパイラ、またはインストール時にネイティブイメージ(native image)として動作するように設計されたコンパイラの一形態によって実行されることができる。ランタイム実行環境200のためのフレームワークは、マネージドアプリケーション用のソフトウェア構築ブロックと見なされ得るクラスライブラリも提供する。
さらに、マネージドコードの少なくとも部分に対応するメタデータは、そのマネージドコードをもたらすコンパイルされたアセンブリの部分として含まれることができ、または代替として、ランタイム実行環境200においてマネージドコードとは別個に受け取られることができる。例えば、メタデータは、別個のアセンブリの部分としてコンパイルされることができ、またはメタデータは、ランタイム実行環境200においてオフライン方式で受け取られることができる。いずれにしても、メタデータは、マネージドコードの1つまたは複数の要素についての詳細な量の情報を提供するために受け取られることができる。
ランタイム実行環境200は、それ以外ではカーネルから期待され得る機能を少なくとも部分的に提供することができ、その機能は、装置105、110、115(図1を参照)の特定の1つに対するリソース制約に依存して、コンピューティング装置プラットフォームから欠けていることもあり、または欠けていないこともある。ランタイム実行環境200の少なくとも1つの例は、以下のもの、すなわち、入力/出力(これ以降「I/O」)ルーチン管理、コンパイル、メモリ管理、およびサービスルーチン管理を実施することができる。したがって、ランタイム実行環境200は、I/Oコンポーネント205と、コンパイラ210と、メモリ管理コンポーネント215と、サービスルーチンマネージャ220と、実行コンポーネント225とを含むことができる。以下でさらに詳細に説明されるこれらのコンポーネントは、例として提供されており、その例は、ランタイム実行環境200のいずれか特定の実施への限定を意図したものではなく、そのような推測が行われるべきではない。したがって、コンポーネントは、ランタイム実行環境200の例において、その様々な組み合わせおよび構成により実施されることができる。
ランタイム実行環境200のI/Oコンポーネント205は、コンピューティング装置プラットフォームに関連する物理リソース(例えば、プロセッサおよび周辺装置)ならびに論理リソース(例えば、ドライバもしくは特定の方式で区分化された物理リソース)への同期または非同期アクセスの少なくとも一方を提供することができる。より具体的には、I/Oコンポーネント205は、頑健なシステムスループットをランタイム実行環境200に提供することができ、さらにI/O要求が出されたコードのパフォーマンスを効率化することができる。
コンパイラ210は、ランタイム実行環境200における実行のために、コンパイルされたILをネイティブな機械命令に解釈することができる、ランタイム実行環境200内のモジュールのこととすることができる。さらに、拡張可能メタデータ120に関連する技術の少なくとも1つの代替実施によれば、コンパイラ210は、様々な目的のために、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりに関連するコードモジュールの挙動を動的に分析することができる。コードモジュールは、ランタイム実行環境200にロードされてもよく、またはロードされなくてもよい。コードモジュールがランタイム実行環境200にロードされる場合、コンパイラ210は、本明細書で説明されるように、メタデータを拡張可能にするコードモジュールに関連するデータエンティティを読み、解釈し、かつ/または別途分析することができる。上述の読み、解釈、および分析は、コードモジュールの実行可能部分に触れず、または影響を与えずに、実行されることができ、コンパイル時、初回実行時、またはその後の実行パスの実行可能部分の実行中における任意の時に、実行されることができる。
しかし、拡張可能メタデータ120の少なくとも1つの例示的な実施は、コンパイラ210によってコンパイルされたコードを読み、解釈し、または別途分析する必要がないこともある。代わりに、拡張可能メタデータが、中間言語コード(すなわち「IL」)に関連するものとして、読まれ、解釈され、または別途分析されることができ、中間言語コードは、ネイティブプラットフォーム実行フォーマットではなくILフォーマットでランタイム実行環境200に配布され、アセンブリ、メソッド、または型のいずれか1つにすでにコンパイルされている。そのようなIL305のソースは、非マネージド実行環境、または装置105、110、115のうちの同じまたは別個の1つの装置上のランタイム実行環境の別個の実施のどちらかに配置されることができる。ソースは、ILが対応するアプリケーション、プログラム、メソッド、関数、またはプログラム可能および実行可能コードのその他の集まりのインストール時またはインストール前に、ILを配置することができる。
メモリ管理コンポーネント215は、「ガベージコレクタ(garbage collector)」と呼ばれることがあり、ガベージコレクタは、ガベージコレクション(garbage collection)を実施する。ガベージコレクションは、マネージドコード実行環境の頑健な特徴と見なされることができ、それによって、オブジェクトは、メモリヒープ(memory heap)のスイープまたはスキャン時に、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりによってもはや使用されないと決定された場合、自動的に解放(すなわちデアロケート)される。メモリ管理コンポーネント215によって実施されるさらなる機能は、コンピューティング装置プラットフォーム上で動作するタスクの間で、有限な揮発性RAM(すなわちメモリヒープ)ストレージの1つもしくは複数の連続ブロックまたはメモリの連続ブロックの組を管理すること、コンピューティング装置プラットフォーム上で動作する少なくとも1つのアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりにメモリをアロケートすること、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりの少なくとも1つによる要求時に、メモリの少なくとも部分を解放すること、ならびにアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりのいずれかが、他のアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりのいずれかにアロケートされたメモリ空間に侵犯的にアクセスすることを防止することを含むことができる。
サービスルーチンマネージャ220は、コンピューティング装置プラットフォームに関連する物理リソースおよび論理リソースにサービス機能を提供するために、アプリケーションサポートレイヤの少なくとも部分として含まれることができる。拡張可能メタデータ120に関連する例示的な技術(例えば、ツール、方法、およびシステム)は、サービスルーチンマネージャ220によって管理されることができる。すなわち、拡張可能メタデータ120に関連する技術は、そのような技術の様々な代替実施によれば、単独または互いに組み合わされて、(上で参照されたような)コンパイラ210、サービスルーチンマネージャ220、またはランタイム実行環境200のその他のコンポーネントによって実施されることができる。例えば、サービスルーチンマネージャ220は、1つまたは複数のコードモジュールに関連するメタデータスキーマの、メタデータスキーマの知られた基準に対する、変化または逸脱の存在を少なくとも決定することができ、それによって、拡張可能メタデータが読まれ、分析され、または別途解釈されることを可能にする。サービスルーチンマネージャ220によるそのような寄与は、コンパイル時、初回実行時、またはその後の1つもしくは複数のコードモジュールの実行可能部分の実行中における任意の時に、コードモジュールの実行可能部分に触れず、または影響を与えずに、行われることができる。
実行コンポーネント225は、コンピューティング装置プラットフォームのためのマネージドコード内に含まれる1つまたは複数のコードモジュールの実行を可能にすることができる。より具体的には、拡張可能メタデータ120に関連する技術の実施に関して、実行コンポーネント225は、拡張可能メタデータ120にアクセスするための1つまたは複数のツール、システム、およびプロセスを実施して、1つまたは複数のコードモジュールのためのメタデータスキーマの変化または逸脱の存在を決定し、それによって、メタデータが読まれ、分析され、または別途解釈されることを可能にすることができる、ランタイム実行環境200内の例示的なコンポーネントとして働くことができる。
図3は、少なくとも本説明の目的で「メタ−メタ−データ(meta−meta−data)」と呼ばれるデータを利用することによる拡張可能メタデータ120(図1を参照)の例示的な実施を説明する、例示的なコードブロック300を示している。コードブロック300の説明は、図1のネットワーク環境100に関して上で説明された装置と、図2のランタイム実行環境200に関して上で説明されたコンポーネントとを参照することができる。しかし、図1および図2へのこれらの参照は、拡張可能メタデータ120のための使用可能な環境を提供することを意図したものに過ぎず、どのような限定としても解釈されるべきではない。
コードブロック300は、ランタイム実行環境200における実行のためにコンパイルされた、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりの少なくとも部分と見なされることができる。例えば、オブジェクトデータモデルにおいては、ブロック300は、オブジェクト300と呼ばれる。
ブロック305は、ランタイム実行環境200における実行のためにコンパイルされた、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりの実行可能部分と見なされることができる。例として、コードモジュール307、308、309を含むブロック305は、オブジェクト300に対応するプログラムファイルまたはメソッドのこととすることができる。もちろん、ブロック305の図説された構成は、例として提供されたに過ぎず、代替実施形態は、どのような限定も意図していない。
データ構成310は、この例によれば、コードモジュール307、308、309の少なくとも1つのデータ構造および機能構造を記述する、メタデータを含むことができる。すなわち、ランタイム実行環境200の文脈でメタデータ310が対応する1つまたは複数のコードモジュール307、308、309を実行するため、データ構成310は、関連するデータ構造の記述を求めてアクセスされることができる。代替的に型と呼ばれることもあるデータ構造は、メソッドの名前と、メソッドで使用される引数と、戻り引数とを含むことができる。これらのデータ構造(すなわち型)は、例として提供されたに過ぎず、どのような限定も意図していない。
メタデータ310のスキーマは、公開された標準の部分として知られることができ、またはスキーマは、標準化され、ランタイム実行環境200に組み込まれることができる。この実施によれば、スキーマは、構成310内のメタデータの構造を制約する1組の規則と呼ばれることができ、例えば、標準化されたテーブル数と、標準化されたテーブル当たりのカラム数と、テーブルの1つまたは複数に対する標準化されたカラムデスクリプタとを含むことができる。
データ構成315が、とりわけ、データ構成310内に含まれるメタデータが、公開された標準またはランタイム実行環境200に組み込まれた標準に従って、コンパイルされない場合を説明するために、オブジェクト300で提供されることができる。すなわち、新しい特徴を追加し、旧い特徴を削除し、または既存の特徴内のバグを修正するように進化したデータ構造(すなわち型)を読み、分析し、または別途解釈するため、データ構成315が、ランタイム実行環境200のどのコンポーネントに対する調整も必要とせずに、データ構成310内に含まれるメタデータを拡張可能にするために提供されることができる。
したがって、データ構成315は、「メタ−メタ−データ」と呼ばれることもあるデータを含むことができる。すなわち、データ構成315内に含まれるメタ−メタ−データは、データ構成310内に含まれるメタデータのスキーマのこととすることができる。さらに、データ構成315は、メタデータストリームの部分としてのコードブロック300の部分としてコンパイルされることができる。しかし、拡張可能メタデータ120の少なくとも1つの代替実施は、データ構成315を、したがって、そこに含まれるメタ−メタ−データを、何らかの代替トランスポート媒体または別個のスキーマストリームによって、オフライン方式でランタイム実行環境200に提供されるものと考えることができる。加えて、これまで説明された例によれば、データ構成310とデータ構成315は、別個のデータエンティティであるが、少なくとも1つの代替実施は、データ構成315を、データ構成310内に統合されたものと考えることができる。
例えば、データ構成315内に含まれるメタ−メタ−データは、以下のうちの1つまたは複数、すなわち、データ構成310内に含まれるメタデータのスキーマについての包括的な記述、データ構成310内に含まれるメタデータのスキーマとブロック305に対応するコードの実行のために必要とされ得る標準化スキーマモデルとの比較、またはデータ構成310内に含まれるメタデータのスキーマが、ブロック305に対応するコードの実行のために必要とされ得る標準化スキーマモデルからどのように逸脱しているかについてのその他の何らかの記述を含むことができる。データ構成310内に含まれるメタデータに関するそのような逸脱についての記述は、テーブル数、テーブル当たりのカラム数、またはそれぞれのテーブルの1つまたは複数におけるカラムサイズに関することができる。
より具体的には、データ構成310内に含まれるメタデータのスキーマに関して、データ構成315内に含まれるメタ−メタ−データは、以下のうちの1つまたは複数、すなわち、カラム単位での可変サイズカラムの少なくとも1つの再定義サイズ、新しいテーブルの少なくとも1つの定義、新しいコード化トークン型(Coded Token Type)の少なくとも1つの定義、標準化数量を超えるテーブル数、標準化数量を超えるカラム数、標準化数量を超えるトークン型数を、様々な組み合わせで含むことができる。別個のスキーマストリームの少なくとも1つの例は、ストリームヘッダ、新しいコード化トークン型デスクリプタ、標準化テーブルのテーブルデスクリプタ、新しいテーブルのテーブルデスクリプタ、標準化テーブルのカラムデスクリプタ、および新しいテーブルのカラムデスクリプタを含むことができる。
図4は、拡張可能メタデータ120(図1を参照)の例示的な実施を説明する、例示的なデータフロー400を示している。
ブロック405は、拡張可能メタデータ120に関係する1つまたは複数の技術が実施され得る、実行環境のこととすることができる。本説明はこれまで、拡張可能メタデータ120が実施され得る環境として、ランタイム実行環境に言及してきた。しかし、例示的な実施は、マネージド実行環境にのみ限定されない。代わりに、拡張可能メタデータ120の代替例は、テスト環境および/またはアンマネージド実行環境内で実施されることができる。いずれにしても、データフロー400の説明は、ネットワーク環境100に対応する装置(図1を参照)と、ランタイム実行環境200に対応するコンポーネント(図2を参照)と、コードモジュール305およびデータ構成310、315(図3を参照)とに関連する、1つまたは複数のモジュールによって実行される、様々な動作に関することができる。加えて、動作は、単独または互いに様々に組み合わされて、ハードウェア、ファームウェア、またはソフトウェアとして実施されることができる。
ブロック410は、データ構成310内に含まれるメタデータによって示されるような入力コード305のメタデータスキーマと、公開された標準またはさもなければ実行環境405によって期待される標準化スキーマとの間に、逸脱が存在するかを決定するために、データ構成315内に含まれるメタ−メタ−データを検査し、分析し、または別途読む、実行環境405のモジュールのこととすることができる。そのようなモジュールの一例は、ランタイム実行環境200のサービスルーチンマネージャ220を含むことができる。
より具体的には、実行環境405内で読まれ、または実行されるコンパイルされたコード305(すなわちIL)の場合、メタデータ用のスキーマは、予想可能であることが期待される。例えば、図2および図3の例を参照すると、ランタイム実行可能200は、データ構成310内に含まれるメタデータ用のスキーマが、64個のカラムを各々が有する42個のテーブルを含むことを予想することができる。したがって、ブロック410において、標準化されたタイプのデスクリプタ、テーブルデスクリプタ、およびカラムデスクリプタからの逸脱が、検出されることができる。
標準化メタデータスキーマモデルからの逸脱は、データ構成315内に含まれるメタ−メタ−データ(図3を参照)を読み、解釈し、または別途分析することによって、検出されることができる。したがって、メタ−メタ−データは、メタデータのスキーマについての包括的な記述を含むことができる。代替として、データ構成315内に含まれるデータは、データ構成310内に含まれるメタデータのスキーマと標準化スキーマモデルとの間の差異を列挙することができ、それによって、データ構成310内に含まれるメタデータの徹底的な再検討の必要を回避することができる。
さらに、データ構成315のメタ−メタ−データは、コード305の部分としてコンパイルされることができ、または別個のスキーマストリーム(例えば、オフライン方式もしくは何らかの代替トランスポート媒体)によって実行環境405に提供されることができる。
ブロック415は、入力コード305のメタデータを検査し、分析し、または別途読む、実行環境405内のモジュール(例えばサービスルーチンマネージャ220)のこととすることができる。すなわち、データ構成310内に含まれるメタデータがどのように標準化メタデータスキーマモデルから逸脱し得るかを通知されることによって、実行環境405内の上述のモジュールは、データ構成310内に含まれる拡張可能メタデータを読み、解釈し、または別途分析できるようにされることができる。
図1〜図4に関する上の説明によって、特定の実行環境に入力されるコードのメタデータは、拡張可能とされることができる。例えば、コンパイルされた中間言語コード(すなわちIL)に対応するメタデータスキーマは、対応するアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりに対してランタイム実行環境を再構成する必要なしに、標準化構造から逸脱することができる。しかし、本明細書で説明される例示的な実施は、図1の環境、図2および図3のコンポーネント、または図4のデータ処理フローにのみ限定されない。拡張可能メタデータ120(図1を参照)に関連する技術(例えば、ツール、方法、およびシステム)は、図2および図3を参照して説明されたコンポーネントの様々な組み合わせによって、ならびに図4を参照して説明されたブロックの様々な順序によって、実施されることができる。
さらに、上で説明された例および実施のいずれかのためのコンピュータ環境は、例えば、1つまたは複数のプロセッサまたは処理ユニットと、システムメモリと、様々なシステムコンポーネントを結合するシステムバスとを有するコンピューティング装置を含むことができる。
コンピューティング装置は、揮発性および不揮発性媒体、着脱可能および固定式媒体を含む、様々なコンピュータ可読媒体を含むことができる。システムメモリは、ランダムアクセスメモリ(RAM)などの揮発性メモリ、および/またはリードオンリメモリ(ROM)もしくはフラッシュRAMなどの不揮発性メモリの形態をとる、コンピュータ可読媒体を含むことができる。磁気カセット、またはその他の磁気記憶装置、フラッシュメモリカード、CD−ROM、デジタル多用途ディスク(DVD)、またはその他の光記憶、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)など、コンピュータによってアクセス可能なデータを保存し得るその他のタイプのコンピュータ可読媒体も、例示的なコンピューティングシステムおよび環境を実施するために利用され得ることは理解されよう。
本明細書を通して、特定の説明された特徴、構造、または特性が本発明の少なくとも1つの実施に含まれることを意味する、「一例」、「代替的な例」、「少なくとも1つの例」、「一実施」、または「例示的な一実施」に対して、言及がなされた。したがって、そのような語句の使用は、ただ1つの実施以上のものを指すことができる。さらに、説明された特徴、構造、または特性は、1つまたは複数の実施において、任意の適切なやり方で組み合わされることができる。
しかし、当業者であれば、コードモジュール初期化が、1つまたは複数の特定の細部を用いずに、またはその他の方法、リソース、要素などを用いて、実施され得ることを理解されよう。その他の例では、よく知られた構造、リソース、または動作は、もっぱら本発明の態様を曖昧にすることを避けるために、詳細には示されず、または説明されていない。
コードモジュール初期化の例示的な実施および応用が示され、説明されたが、本発明は、厳密に上で説明された通りの構成およびリソースに限定されないことを理解されたい。当業者に明らかな様々な修正、変更、および変形が、上で説明され、別途特許請求される本発明の範囲から逸脱することなく、本明細書で開示された本発明の方法およびシステムの構成、動作、および細部に施されることができる。
拡張可能メタデータに関係する例示的な技術を実施する装置とネットワークを介して通信する装置を示す図である。 拡張可能メタデータに関係する例示的な技術を実施するための実行環境の一例を示す図である。 マネージドコードに対応する拡張可能メタデータの一例を示す図である。 拡張可能メタデータの少なくとも1つの実施についての例示的なデータフローを示す図である。

Claims (22)

  1. コンパイルされたアセンブリをマネージド実行環境において実行するために、該マネージド実行環境によって実行される方法であって、
    各アセンブリは、前記マネージド実行環境のためにコンパイラによって生成されたバイトコードとメタデータとを含み、
    ランタイム実行環境によって受信される前記各アセンブリの前記メタデータは、前記コンパイルされたアセンブリのバイトコードにおいて参照されるデータの型を記述し、
    前記ランタイム実行環境は、該ランタイム実行環境の標準化メタデータスキーマに従って構成されたメタデータの構造を解釈するために、組み込み機能を有し、
    前記組み込み機能は、前記アセンブリが前記標準化メタデータスキーマを含んでいないとき、前記ランタイム実行環境に該アセンブリのメタデータの構造を解釈することを許可し、
    前記標準化メタデータスキーマは、前記メタデータが前記ランタイム実行環境の前記組み込み機能によって解釈されるべきであることを定義し、
    前記方法は、
    前記ランタイム実行環境において実行するためにコンパイルされた前記アセンブリの1つを受信するステップと、
    ここで、前記アセンブリの前記メタデータは、前記マネージド実行環境の前記標準化メタデータスキーマに従って構成されておらず、
    前記アセンブリの前記メタデータが、前記標準化メタデータスキーマに従って構成されていないことを決定するために、前記受信されたアセンブリを解析するステップと、
    前記アセンブリの前記メタデータが、前記標準化メタデータスキーマに従って構成されていないことの決定に応答して、メターメターデータにアクセスするステップと、
    ここで、前記メターメターデータは、前記標準化メタデータスキーマによって定義された前記構造を拡張および/又は変更するものであり、
    前記バイトコードにおいて参照される前記メタデータのデータの型に関する情報を得るために、前記メターメターデータを使用して前記アセンブリに含まれる前記メタデータの構造を解釈するステップと
    前記データタイプ情報に従って前記アセンブリを実行するステップと
    を具えたことを特徴とする方法。
  2. 前記メターメターデータは、前記標準化メタデータスキーマにおいて定義されたテーブル数に対する、テーブル数の逸脱を記述することを特徴とする請求項1記載の方法。
  3. 前記ランタイム実行環境のためにコンパイルされた前記全てのアセンブリは、テーブル内にメタデータを含み、
    前記メターメターデータは、前記標準化メタデータスキーマにおいて定義されたテーブル当たりのカラム数に対する、テーブル当たりのカラム数の逸脱を記述することを特徴とする請求項1記載の方法。
  4. 前記メターメターデータは、前記標準化メタデータスキーマにおいて定義されたカラムのサイズに対する、カラムのサイズの逸脱を記述することを特徴とする請求項1記載の方法。
  5. 前記メタデータは、中間言語にコンパイルされることを特徴とする請求項1記載の方法。
  6. 前記メターメターデータは、前記標準化メタデータスキーマを拡張するスキーマからなり、
    前記決定するステップは、前記メターメターデータを読むステップからなり、
    前記メターメターデータを使用するステップは、前記スキーマを前記標準化メタデータスキーマと比較するステップからなることを特徴とする請求項1記載の方法。
  7. 前記標準化メタデータスキーマにおいて定義されたカラムよりも多いカラムを有する前記受信したアセンブリの前記メタデータを格納するテーブルに基づき、前記受信したアセンブリの前記メタデータは、前記標準化メタデータスキーマに従って構成されていないことを特徴とする請求項1記載の方法。
  8. 前記標準化メタデータスキーマにおいて定義されていないカラムの型を有する前記受信したアセンブリの前記メタデータを格納するテーブルに基づき、前記受信したアセンブリの前記メタデータは、前記標準化メタデータスキーマに従って構成されていないことを特徴とする請求項1記載の方法。
  9. 前記標準化メタデータスキーマにおいて定義されていないカラムのサイズを有する前記受信したアセンブリの前記メタデータを格納するテーブルに基づき、前記受信したアセンブリの前記メタデータは、前記標準化メタデータスキーマに従って構成されていないことを特徴とする請求項1記載の方法。
  10. 前記標準化メタデータスキーマにおいて定義された前記メタデータよりも多いメタデータを格納するより大きなテーブル数を有する前記受信したアセンブリに基づき、前記受信したアセンブリの前記メタデータは、前記標準化メタデータスキーマに従って構成されていないことを特徴とする請求項1記載の方法。
  11. コンピュータにより、請求項1ないし10のいずれかに記載の方法を実行することが可能な命令を有するコンピュータプログラム。
  12. 請求項11記載のコンピュータプログラムを有するコンピュータ読取り可能な記録媒体。
  13. コンパイルされたアセンブリをマネージド実行環境において実行するために、該マネージド実行環境によって実行される装置であって、
    プロセッサと、
    コンピュータ実行可能命令を有するメモリと
    を具え、
    各アセンブリは、前記マネージド実行環境のためにコンパイラによって生成されたバイトコードとメタデータとを含み、
    ランタイム実行環境によって受信される前記各アセンブリの前記メタデータは、前記コンパイルされたアセンブリのバイトコードにおいて参照されるデータの型を記述し、
    前記ランタイム実行環境は、該ランタイム実行環境の標準化メタデータスキーマに従って構成されたメタデータの構造を解釈するために、組み込み機能を有し、
    前記組み込み機能は、前記アセンブリが前記標準化メタデータスキーマを含んでいないとき、前記ランタイム実行環境に該アセンブリのメタデータの構造を解釈することを許可し、
    前記標準化メタデータスキーマは、前記メタデータが前記ランタイム実行環境の前記組み込み機能によって解釈されるべきであることを定義し、
    前記プロセッサにより処理される前記コンピュータ実行可能命令は、
    前記ランタイム実行環境において実行するためにコンパイルされた前記アセンブリの1つを受信することと、
    ここで、前記アセンブリの前記メタデータは、前記マネージド実行環境の前記標準化メタデータスキーマに従って構成されておらず、
    前記アセンブリの前記メタデータが、前記標準化メタデータスキーマに従って構成されていないことを決定するために、前記受信されたアセンブリを解析することと、
    前記アセンブリの前記メタデータが、前記標準化メタデータスキーマに従って構成されていないことの決定に応答して、メターメターデータにアクセスすることと、
    ここで、前記メターメターデータは、前記標準化メタデータスキーマによって定義された前記構造を拡張および/又は変更するものであり、
    前記バイトコードにおいて参照される前記メタデータのデータの型に関する情報を得るために、前記メターメターデータを使用して前記アセンブリに含まれる前記メタデータの構造を解釈することと
    前記データタイプ情報に従って前記アセンブリを実行するステップと
    を実行することを特徴とする装置。
  14. 前記メターメターデータは、前記標準化メタデータスキーマにおいて定義されたテーブル数に対する、テーブル数の逸脱を記述することを特徴とする請求項13記載の装置。
  15. 前記ランタイム実行環境のためにコンパイルされた前記全てのアセンブリは、テーブル内にメタデータを含み、
    前記メターメターデータは、前記標準化メタデータスキーマにおいて定義されたテーブル当たりのカラム数に対する、テーブル当たりのカラム数の逸脱を記述することを特徴とする請求項13記載の装置。
  16. 前記メターメターデータは、前記標準化メタデータスキーマにおいて定義されたカラムのサイズに対する、カラムのサイズの逸脱を記述することを特徴とする請求項13記載の装置。
  17. 前記メタデータは、中間言語にコンパイルされることを特徴とする請求項13記載の装置。
  18. 前記メターメターデータは、前記標準化メタデータスキーマを拡張するスキーマからなり、
    前記決定することは、前記メターメターデータを読むことからなり、
    前記メターメターデータを使用することは、前記スキーマを前記標準化メタデータスキーマと比較することからなることを特徴とする請求項13記載の装置。
  19. 前記標準化メタデータスキーマにおいて定義されたカラムよりも多いカラムを有する前記受信したアセンブリの前記メタデータを格納するテーブルに基づき、前記受信したアセンブリの前記メタデータは、前記標準化メタデータスキーマに従って構成されていないことを特徴とする請求項13記載の装置。
  20. 前記標準化メタデータスキーマにおいて定義されていないカラムの型を有する前記受信したアセンブリの前記メタデータを格納するテーブルに基づき、前記受信したアセンブリの前記メタデータは、前記標準化メタデータスキーマに従って構成されていないことを特徴とする請求項13記載の装置。
  21. 前記標準化メタデータスキーマにおいて定義されていないカラムのサイズを有する前記受信したアセンブリの前記メタデータを格納するテーブルに基づき、前記受信したアセンブリの前記メタデータは、前記標準化メタデータスキーマに従って構成されていないことを特徴とする請求項13記載の装置。
  22. 前記標準化メタデータスキーマにおいて定義された前記メタデータよりも多いメタデータを格納するより大きなテーブル数を有する前記受信したアセンブリに基づき、前記受信したアセンブリの前記メタデータは、前記標準化メタデータスキーマに従って構成されていないことを特徴とする請求項13記載の装置。
JP2008535534A 2005-10-13 2006-09-12 拡張可能メタデータ Expired - Fee Related JP5139987B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/249,784 US7743363B2 (en) 2005-10-13 2005-10-13 Extensible meta-data
US11/249,784 2005-10-13
PCT/US2006/035388 WO2007046976A1 (en) 2005-10-13 2006-09-12 Extensible meta-data

Publications (2)

Publication Number Publication Date
JP2009512062A JP2009512062A (ja) 2009-03-19
JP5139987B2 true JP5139987B2 (ja) 2013-02-06

Family

ID=37949325

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008535534A Expired - Fee Related JP5139987B2 (ja) 2005-10-13 2006-09-12 拡張可能メタデータ

Country Status (11)

Country Link
US (1) US7743363B2 (ja)
EP (1) EP1934814A4 (ja)
JP (1) JP5139987B2 (ja)
KR (1) KR20080047444A (ja)
CN (1) CN101288070B (ja)
AU (1) AU2006302929A1 (ja)
BR (1) BRPI0617192A2 (ja)
NO (1) NO20081269L (ja)
RU (1) RU2008114301A (ja)
TW (1) TW200731094A (ja)
WO (1) WO2007046976A1 (ja)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7219330B2 (en) * 2003-06-26 2007-05-15 Microsoft Corporation Extensible metadata
US8281299B2 (en) * 2006-11-10 2012-10-02 Purdue Research Foundation Map-closure: a general purpose mechanism for nonstandard interpretation
US8327350B2 (en) * 2007-01-02 2012-12-04 International Business Machines Corporation Virtual resource templates
US8108855B2 (en) * 2007-01-02 2012-01-31 International Business Machines Corporation Method and apparatus for deploying a set of virtual software resource templates to a set of nodes
US8370802B2 (en) 2007-09-18 2013-02-05 International Business Machines Corporation Specifying an order for changing an operational state of software application components
US8484615B2 (en) * 2007-12-20 2013-07-09 Ncr Corporation Software framework to build an executable scheme in a GUI environment
US8250524B2 (en) * 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US8621137B2 (en) 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US8356056B2 (en) * 2008-08-26 2013-01-15 Sap Ag Functional extensions for business objects
US8108434B2 (en) * 2008-08-26 2012-01-31 Sap Ag Dynamic node extensions and extension fields for business objects
US8108433B2 (en) * 2008-08-26 2012-01-31 Sap Ag Dynamic extension fields for business objects
US20100161648A1 (en) * 2008-12-19 2010-06-24 Peter Eberlein Flexible multi-tenant support of metadata extension
US20100162147A1 (en) * 2008-12-19 2010-06-24 Ritter Gerd M Ui-driven binding of extension fields to business objects
US8819075B2 (en) 2010-07-26 2014-08-26 Sap Ag Facilitation of extension field usage based on reference field usage
US9063958B2 (en) 2010-07-29 2015-06-23 Sap Se Advance enhancement of secondary persistency for extension field search
US8886646B2 (en) 2010-12-30 2014-11-11 Sap Se Field extensibility for analytical reports
US8978007B2 (en) 2011-06-30 2015-03-10 Microsoft Technology Licensing, Llc Static metadata in dynamic programs
US8849996B2 (en) * 2011-09-12 2014-09-30 Microsoft Corporation Efficiently providing multiple metadata representations of the same type
US8782060B2 (en) * 2012-04-13 2014-07-15 Theplatform For Media, Inc. Multiple phase content ingest
US9047196B2 (en) 2012-06-19 2015-06-02 Concurix Corporation Usage aware NUMA process scheduling
US8700838B2 (en) 2012-06-19 2014-04-15 Concurix Corporation Allocating heaps in NUMA systems
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US8966462B2 (en) 2012-08-10 2015-02-24 Concurix Corporation Memory management parameters derived from system modeling
US9043788B2 (en) 2012-08-10 2015-05-26 Concurix Corporation Experiment manager for manycore systems
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US8656135B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed prior to execution
US8656134B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed on executing code
US8607018B2 (en) 2012-11-08 2013-12-10 Concurix Corporation Memory usage configuration based on observations
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US20180095788A1 (en) * 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
US20240126816A1 (en) * 2022-10-18 2024-04-18 Oracle International Corporation Self-discovery and construction of type-sensitive columnar formats on type-agnostic storage servers to accelerate offloaded queries

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2204962T3 (es) * 1994-09-01 2004-05-01 Computer Associates Think, Inc. Metodos y sistemas x.500.
US6003039A (en) * 1997-06-27 1999-12-14 Platinum Technology, Inc. Data repository with user accessible and modifiable reuse criteria
US5893086A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
US5974424A (en) * 1997-07-11 1999-10-26 International Business Machines Corporation Parallel file system and method with a metadata node
US6199198B1 (en) * 1997-12-10 2001-03-06 International Business Machines Corp. Computer system, method, and article of manufacture for visualizing differences between design artifacts and object-oriented code
US6549922B1 (en) * 1999-10-01 2003-04-15 Alok Srivastava System for collecting, transforming and managing media metadata
US7114147B2 (en) * 2000-03-09 2006-09-26 Electronic Data Systems Corporation Method and system for reporting XML data based on precomputed context and a document object model
KR100844816B1 (ko) * 2000-03-13 2008-07-09 소니 가부시끼 가이샤 간결한 트랜스코딩 힌트 메타데이터를 생성하는 방법 및장치
US20020099726A1 (en) * 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US6901446B2 (en) * 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
US6976076B2 (en) * 2001-06-29 2005-12-13 International Business Machines Corporation Architecture for the graphical management and analysis of authentication tokens
US6983448B2 (en) * 2001-07-12 2006-01-03 International Business Machines Corporation Open framework for the definition of metadata
US7451157B2 (en) * 2001-10-16 2008-11-11 Microsoft Corporation Scoped metadata in a markup language
US20030093551A1 (en) * 2001-10-17 2003-05-15 Graham Taylor Adaptive software interface
US20040201600A1 (en) * 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
JP3826043B2 (ja) * 2002-01-31 2006-09-27 キヤノン株式会社 情報処理装置及び方法
US7174533B2 (en) * 2002-03-14 2007-02-06 Sun Microsystems, Inc. Method, system, and program for translating a class schema in a source language to a target language
US7131110B2 (en) * 2002-03-21 2006-10-31 Sun Microsystems, Inc. Method and apparatus for generating a code bridge
EP2202978A1 (en) * 2002-04-12 2010-06-30 Mitsubishi Denki Kabushiki Kaisha Hint information describing method for manipulating metadata
US7275063B2 (en) * 2002-07-16 2007-09-25 Horn Bruce L Computer system for automatic organization, indexing and viewing of information from multiple sources
US20040117397A1 (en) * 2002-12-16 2004-06-17 Rappold Robert J Extensible database system and method
JP2004228780A (ja) * 2003-01-21 2004-08-12 Canon Inc 情報処理装置
US20040158820A1 (en) * 2003-02-11 2004-08-12 Moore John Wesley System for generating an application framework and components
JP2004260279A (ja) * 2003-02-24 2004-09-16 Nippon Telegr & Teleph Corp <Ntt> ピアグループの構成方法、属性情報更新方法、分断検出方法およびピアならびに該方法を実行するためのプログラム
US7080089B2 (en) * 2003-03-12 2006-07-18 Microsoft Corporation Customization of process logic in a software system
US7346627B2 (en) * 2003-06-25 2008-03-18 Oracle International Corporation Approaches for migrating portal objects from a source installation to a target installation
US7219330B2 (en) * 2003-06-26 2007-05-15 Microsoft Corporation Extensible metadata
DE10335989B4 (de) * 2003-08-01 2019-07-11 Kw-Software Gmbh Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung
US7739223B2 (en) * 2003-08-29 2010-06-15 Microsoft Corporation Mapping architecture for arbitrary data models
US20060179116A1 (en) * 2003-10-10 2006-08-10 Speeter Thomas H Configuration management system and method of discovering configuration data
US20050108684A1 (en) * 2003-11-14 2005-05-19 Sohn Matthias E. Method and system for generating an application object repository from application framework metadata
US7574692B2 (en) * 2004-11-19 2009-08-11 Adrian Herscu Method for building component-software for execution in a standards-compliant programming environment

Also Published As

Publication number Publication date
RU2008114301A (ru) 2009-10-20
TW200731094A (en) 2007-08-16
JP2009512062A (ja) 2009-03-19
EP1934814A4 (en) 2009-06-17
US20070088716A1 (en) 2007-04-19
CN101288070A (zh) 2008-10-15
WO2007046976A1 (en) 2007-04-26
EP1934814A1 (en) 2008-06-25
KR20080047444A (ko) 2008-05-28
US7743363B2 (en) 2010-06-22
BRPI0617192A2 (pt) 2011-07-19
CN101288070B (zh) 2010-09-29
NO20081269L (no) 2008-04-16
AU2006302929A1 (en) 2007-04-26

Similar Documents

Publication Publication Date Title
JP5139987B2 (ja) 拡張可能メタデータ
US7730464B2 (en) Code compilation management service
US7441094B2 (en) Memory management configuration
JP5147728B2 (ja) 質的に注釈を付けられた注釈付きコード
US7788658B2 (en) Computer code partitioning for enhanced performance
US20100205604A1 (en) Systems and methods for efficiently running multiple instances of multiple applications
US8615743B2 (en) Adaptive compiled code
US8701095B2 (en) Add/remove memory pressure per object
US8713524B2 (en) Memory management configuration
US10733095B2 (en) Performing garbage collection on an object array using array chunk references
EP1902379B1 (en) Node-to-node communication pipelines
US10296363B2 (en) Tuning a virtual machine startup parameter
US20200356384A1 (en) Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
KR20170115185A (ko) 소프트웨어 빌드 모듈을 포함하는 임베디드 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120501

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: 20121102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121116

R150 Certificate of patent or registration of utility model

Ref document number: 5139987

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151122

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

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

LAPS Cancellation because of no payment of annual fees