JP2006012155A - ユーザ定義型の指定されたメンバを遅延フェッチするシステムおよび方法 - Google Patents

ユーザ定義型の指定されたメンバを遅延フェッチするシステムおよび方法 Download PDF

Info

Publication number
JP2006012155A
JP2006012155A JP2005176650A JP2005176650A JP2006012155A JP 2006012155 A JP2006012155 A JP 2006012155A JP 2005176650 A JP2005176650 A JP 2005176650A JP 2005176650 A JP2005176650 A JP 2005176650A JP 2006012155 A JP2006012155 A JP 2006012155A
Authority
JP
Japan
Prior art keywords
user
context information
defined type
designated
data store
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005176650A
Other languages
English (en)
Inventor
Christian Kleinerman
クレイナーマン クリスチャン
Evgueni Zabokritski
ザボクリトスキー エブゲニ
Ganapathy S Krishnamoorthy
エス.クリシュナモーシー ガナパシー
Girikumar Nair
ネアー ギリクマー
Shrinivas Ashwin
アッシュウィン シュリニバス
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 JP2006012155A publication Critical patent/JP2006012155A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24547Optimisations to support specific applications; Extensibility of optimisers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 ユーザ定義型(UDT)の指定されたメンバを遅延フェッチするシステムおよび方法を提供すること。
【解決手段】 ユーザ定義型のいくつかのメンバを遅延可能メンバとして指定することができる。型の最初のフェッチ中、遅延可能メンバ無しで、型がデータベースから戻され、それによって貴重な処理能力を保護し、最初のフェッチの実行に必要な時間を低減することができる。要求に応じて、最初のフェッチ中に提供された他のメンバを戻すことなく、選択された遅延可能メンバを後でデータベースから再フェッチすることができる。
【選択図】 図7

Description

本発明はデータの取り出しおよび操作の分野に関し、より詳細には、ユーザ定義型の取り出しおよび操作に関する。
Microsoft SQL SERVER(商標)は、広範な管理および開発のツール、強力な抽出、変換、およびロード(ETL)ツール、ビジネスインテリジェンスおよび分析サービス、および他の機能を提供する総合的なデータベース管理プラットフォームである。最近、SQL SERVER(商標)の2つの改良が実施された。第1に、Microsoft Windows(登録商標).NET Framework共通言語ランタイム(CLR)をSQL SERVER(商標)データベースに統合し、第2に、ユーザ定義型(UDT)と呼ばれる新しいオブジェクトを、CLR環境においてマネージドコードで作成し、データベースストアに保持することができる。
CLRは、Microsoft.NET Frameworkの中核であり、すべての.NETコードの実行環境を提供する。したがって、CLR内で稼働するコードは「マネージドコード」と呼ばれる。CLRは、ジャストインタイム(JIT)コンパイル、メモリの割り振りおよび管理、型の安全性の実施、例外処理、スレッド管理およびセキュリティを含めて、プログラムの実行に必要な様々な機能およびサービスを提供する。CLRは、現在、.NETルーチンの最初の呼び出し後にSQL SERVER(商標)によってロードされる。
以前のバージョンのSQL SERVER(商標)では、データベースプログラマは、サーバ側にコードを書き込むときはTransact−SQLの使用に限定されていた。Transact−SQLは、国際標準化機構(ISO)および米国規格協会(ANSI)によって定義されるように、ユーザ定義クエリ言語の拡張である。データベース開発者は、Transact−SQLを使用して、データベースおよびテーブルを作成し、変更し、削除することができるとともに、データをデータベースに挿入し、データベースに格納されているデータを取り出し、変更し、削除することができる。Transact−SQLは、具体的には、直接構造データアクセスおよび操作用に設計されている。Transact−SQLは、データアクセスおよび管理では優れているが、Visual Basic.NETおよびC#のように本格的なプログラミング言語ではない。例えば、Transact−SQLは、アレイ、集合、ループごとのビットシフト、またはクラスをサポートしていない。
CLRがSQL SERVER(商標)データベースに統合されると、データベース開発者は、Transact−SQLだけでは達成できなかった、または達成が難しかったタスクを実行することができる。Visual Basic.NETおよびC#は、アレイ、ユーザ定義の例外処理、および集合の全面的なサポートを提供する現代的なプログラミング言語である。開発者は、CLRの統合を利用して、Visual Basic.NETおよびC#などの言語を使用することによって、より複雑なロジックを有し、計算タスクにより適しているコードを書き込むことができる。
CLRの統合に加えて、SQL SERVER(商標)は、開発者がデータベースのスカラ型システムを拡張することができる新しい機構であるユーザ定義型(UDT)のサポートも追加する。UDTは、アプリケーションアーキテクチャの観点から2つの重要な利益を提供する。つまりUDTは、(クライアントおよびサーバにおいて)内部状態と外部の振る舞いとの間の強力なカプセル化を提供し、他の関連のサーバ機能との深い統合を提供する。UDTは、いったん定義されると、列定義、変数、パラメータ、関数結果、カーソル、トリガ、および複製を含めて、システム型をSQL SERVER(商標)で使用することができるすべての状況で使用することができる。
データベースサーバ上でUDTを定義するプロセスは、次のように達成される。
a)UDT作成の規則に従うクラスをマネージドコードで作成する
b)CREATE ASSEMBLYステートメントを使用してUDTを含むアセンブリをサーバ上のデータベースにロードする
c)マネージドコードUDTを公開するCREATE TYPEステートメントを使用してデータベース内に型を作成する
この時点で、UDTをテ―ブル定義で使用することができる。
UDT定義をマネージドコードで作成するとき、型は次の要件を満たしていなければならない。
a)直列化可能としてマーク付けされていなければならない
b)SqlUserDefinedTypeAttributeを付す必要がある
c)型はINullableインタフェースを実装することによってNULLアウェア(NULL aware)である必要がある
d)型は引数を取らないパブリックコンストラクタ(public constructor)を有している必要がある
e)型は、以下のメソッドを実装することによって文字列への、また文字列からの変換をサポートしている必要がある
1.Public String ToString()
2.Public Shared <type> Parse (SqlStrings)
参照によりその全体が本明細書に組み込まれている「System And Method For Object Persistence In A Database Store」という名称の同時係属の同一出願人による米国特許出願第10/692,225号(米国特許出願公開第20050091228号明細書)(特許文献1参照)では、UDTの別の特徴について説明しており、UDTのCLRクラス定義のフィールドおよび振る舞いは、データベースストア内のUDTのインスタンスのレイアウト構造を記述するストレージ属性で注釈が付けられる。具体的には、UDTを定義するCLRクラスの各フィールドは、サイズ、精度、スケールなど、型のストレージファセット(storage facet)を制御するストレージ属性で注釈が付けられる。一実施形態では、これは、SqlUdtField()と呼ばれるカスタムストレージ属性で各フィールドに注釈を付けることによって達成される。この属性は、追加のストレージ指示(storage directive)でフィールドに注釈を付ける。これらの指示は、オブジェクトがディスクに直列化されたときに実施される。さらに、CLRクラスで定義された管理されたすべての振る舞い(例えばフィールドの値を戻すためにUDTオブジェクト上で呼び出すことができるメソッド)は、その管理された振る舞いの同等の構造上のアクセスパスを示す属性で注釈が付けられる。一実施形態では、このために使用されるカスタム属性はSqlUdtProperty()と呼ばれ、データベースサーバ(例えばSQL SERVER(商標))は、このカスタム属性で注釈が付けられたプロパティの実装が属性定義の一部として指定されたフィールドに委譲されると仮定する。これによってサーバは、インスタンスを作成して、それに対する振る舞いを呼び出すことなく、構造上プロパティへのアクセスを最適化することができる。
図1は、UDTを定義するCLRクラスのコードリスト例を示している。示すように、CLRクラスは、上述したSqlUdtField()およびSqlUdtProperty()のカスタム属性で注釈が付けられている。具体的には、SqlUdtField()カスタム属性は、UDTクラス定義例のそれぞれのフィールドに注釈を付けるために5行、8行、37行、および49行に追加されている。SqlUdtProperty()カスタム属性は、クラスの管理されたそれぞれの振る舞いに注釈を付けるために11行および24行に追加されている。
UDTを定義するCLRクラスは、次いでダイナミックリンクライブラリ(dll)にコンパイルされる。次いでコンパイルされたクラスを含むアセンブリは、次のT−SQLスクリプトコマンドを使用して作成することができる。
Figure 2006012155
以下のT−SQLスクリプトコマンドは、次いでサーバ上でUDTを作成するために使用することができる。
Figure 2006012155
UDTがサーバ上で作成されると、次のように、UDT型としてテーブルの属性を定義するテーブル(例えば「MyTable」)を作成することができる。
Figure 2006012155
次のように新しい項目をテーブルに追加することができる。
Figure 2006012155
次いでUDT式を、例えば次のようにクエリに使用することができる。
SELECT Item.ID, Item.Name FROM MyTable
CLRのSQL SERVER(商標)への統合、およびマネージドコードによりクラス定義からUDTを定義する能力によって、アプリケーションは、マネージドコードクラスによって定義された型のオブジェクトをインスタンス化し、こうしたオブジェクトをUDTとしてリレーショナルデータベースストアに保持することができる。さらに、UDTを定義するクラスは、その型のオブジェクトに特定の振る舞いを実装するメソッドを含むこともできる。したがってアプリケーションは、UDTとして定義された型のオブジェクトをインスタンス化し、それらに対する管理された振る舞いを呼び出すことができる。
UDTとして定義されたクラスのオブジェクトがCLRでインスタンス化されたとき、オブジェクトは、クラスの変数の値が物理的ストレージ(ハードディスクなど)に転送されるオブジェクト直列化のプロセスを介してデータベースストアで保持することができる。図2は、ディスク上のその保持されたフォームへのメモリ内オブジェクトの直列化を示している。オブジェクトは、図3に示したフォーマットの従来のリレーショナルデータベーステーブル内のデータベースストアで保持することができる。図に示すように、テーブルは、指定されたUDTの列を含む。指定されたUDTの保持されたオブジェクトの直列化された値は、UDT列のセルを占める。
再度図2を参照すると、アプリケーションがデータベースストアに保持されているUDTオブジェクトの管理された振る舞い(例えば、UDTオブジェクトのフィールドの値を戻す振る舞いなど)を参照する述語または式を含むクエリを生成すると、保持されたオブジェクトを直列化復元する(時として「ハイドレーションを行う(hydrating)」とも呼ばれる)必要があり、CLRは、その格納された値を受信するために、全オブジェクトにメモリを割り振る必要がある。次いでCLRは、クエリのサブジェクトである値を戻すUDTクラスの実際のメソッド(すなわち振る舞い)を呼び出す必要がある。上記の同時係属の特許出願公開第10/692,225号明細書に記載したように、UDTのCLRクラス定義でのSqlUdtField()およびSqlUdtProperty()の注釈をデータベースサーバが使用して、オブジェクトのハイドレーションの必要無しにいくつかのUDTフィールドの値への直接構造アクセスを可能にすることもできる。
CLRの統合、およびSQL SERVER(商標)でのUDTの提供を利用する新しい技術は、2003年8月21日に出願した「Storage Platform For Organizing, Searching, And Sharing Data」という名称の同時係属の同一出願人による米国特許出願第10/646,646号(米国特許出願公開第20050050054号明細書)(特許文献2参照)に記載されているストレージプラットフォームである。図4は、この同時係属の出願に記載したストレージプラットフォーム300のアーキテクチャを示すブロック図である。ストレージプラットフォームは、時として「WinFS」と呼ばれることがある。図4に示すように、ストレージプラットフォーム300は、データベースエンジン314に実装されたデータストア302を含む。一実施形態では、データベースエンジンは、Microsoft SQL SERVER(商標)リレーショナルデータベースエンジンなど、リレーショナルデータベースエンジンを含む。
データストア302は、以下により完全に説明するように、Itemのフォームのデータ内の構成、検索、共有、同期、およびセキュリティ、および項目間の関係をサポートするデータモデル304を実装する。以下でより完全に説明するように、Itemの特定の型は、例えばスキーマ340などのスキーマで記述されており、ストレージプラットフォーム300は、こうしたスキーマを配置し、拡張するツール346を提供する。
データストア302内に実装されている変更追跡機構306は、データストアへの変更を追跡する機能を提供する。また、データストア302は、セキュリティ機能308および上位変換/下位変換機能(promotion/demotion capability)310も提供する。データストア302は、他のストレージプラットフォームの構成要素、およびストレージプラットフォームを使用するアプリケーションプログラム(例えばアプリケーションプログラム350a、350b、および350c)にデータストア302の機能を公開する1組のアプリケーションプログラミングインタフェース312も提供する。
ストレージプラットフォームは、アプリケーションプログラム350a、350b、および350cなどのアプリケーションプログラムがストレージプラットフォームの機能にアクセスし、データベースに格納されているデータにアクセスできるようにするアプリケーションプログラミングインタフェース(API)322をさらに含む。ストレージプラットフォームAPI322は、OLE DB API324およびMicrosoft WINDOWS(登録商標)Win32 API 326など他のAPIとの併用でアプリケーションプログラムによって使用することができる。
ストレージプラットフォーム300は、ユーザまたはシステム間でのデータの共有を容易にする同期サービス330を含めて、アプリケーションプログラムに様々なサービス328を提供することもできる。例えば、同期サービス330は、データストア302と同じフォーマットを有する他のデータストア340との相互運用性を可能にするとともに、他のフォーマットを有するデータストア342へのアクセスを可能にすることができる。また、ストレージプラットフォーム300は、WINDOWS(登録商標)NTFS(New Technology File System)ファイルシステム318など、既存のファイルシステムとのデータストア302の相互運用性を可能にするファイルシステム機能も提供する。
少なくとも一部の実施形態では、ストレージプラットフォーム300は、データの実行を可能にし、他のシステムとの対話を可能にする追加の機能をアプリケーションプログラムに提供することもできる。これらの機能を、Info Agentサービス334および通知サービス332など、追加のサービス328の形式、および他のユーティリティ336の形式で組み込むことができる。
少なくとも一部の実施形態では、ストレージプラットフォームは、コンピュータシステムのハードウェア/ソフトウェアインタフェースシステムに組み込まれ、またはその切り離すことのできない部分を形成する。例えば、それだけには限定されないが、本発明のストレージプラットフォームは、オペレーティングシステム、仮想マシンマネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的等価物、Java(登録商標)仮想マシン(JVM)またはその機能的等価物に組み込む、またはその切り離すことのできない部分を形成し得る。
その共通のストレージ基盤および組織的に配列されたデータを介して、ストレージプラットフォームは、消費者、知識労働者、および企業にとってより効率的なアプリケーション開発を可能にする。そのデータモデルに固有の機能を利用可能にするだけではなく、既存のファイルシステムおよびデータアクセスメソッドを含み、拡張する豊富な拡張可能なプログラミングサーフェスを提供する。
以下の説明、および図の様々なものにおいて、本発明のストレージプラットフォーム300を「WinFS」と呼ぶ場合がある。しかし、ストレージプラットフォームを指すこの名前の使用は、単に説明を簡潔にするためのものにすぎず、決して限定を意図するものではない。
WinFSプラットフォームのデータモデルは、Item、Itemの拡張、およびRelationshipに関してデータストレージの単位を定義する。「Item」は、記憶情報の基本単位である。データモデルは、ItemおよびItemの拡張を宣言し、Item間の関係を確立する機構を提供する。Itemは、コピー、削除、移動、開くなどの操作を使用して格納し、取り出すことができる単位である。Itemは、(あらゆる種類の)Contact、People、Service、Location、Documentなど、現実の世界の容易に理解可能なデータの単位を表すためのものである。Itemの拡張は、既存のItemの定義を拡張する方法であり、RelationshipはItem間の定義されたリンクである。
WinFSでは、情報を格納するために異なるItem型が定義される。例えば、Contact、People、Location、DocumentなどのItem型が定義される。各Item型は、所与のItemのプロパティおよび特徴を定義するスキーマによって記述される。例えば、「Location」Itemは、EAddress、MetropolitanRegion、Neighborhood、およびPostalAddressなどのプロパティを有するものとして定義することができる。所与のItem型のスキームが定義されると、配置ツールを使用してそのスキーマがそのItem型の対応するCLRクラス定義に変換され、次いでWinFS Item型のインスタンスをデータベースストアに維持するために、(上述したように)データベースストアでCLRクラス定義からUDTが作成される。WinFS API322を使用すると、アプリケーション(例えばアプリケーション350a、350b、350cなど)は、ストレージプラットフォームのデータストアに情報を格納し、そこから情報を取り出すために、データストアによってサポートされているItem型のインスタンスを作成することができる。データストアに格納されているItem型の各インスタンスは、それに関連付けられている一意の識別子(例えばItem_ID)を有し、一実施形態では、各項目識別子は、グローバルに一意の識別子、すなわち「guid」である。したがってWinFSプラットフォームは、CLRの統合およびデータベースストアのUDT機能を利用して、情報のItemを格納するプラットフォームを提供する。
SQL SERVER(商標)でのUDTの任意のインスタンスと同様に、WinFS Itemのインスタンスは、最終的に図3に示したやり方でデータベースストアのテーブルに格納される。次いでアプリケーションは、検索基準を満たすItemをデータストアで検索し、そこから取り出すためのクエリをWinFSプラットフォームに発信する。図5は、「Person」と呼ばれるItem型のインスタンスを取り出すためのクエリがデータストアに対してどのように実行されるかを示している。ステップ(1)で、アプリケーションは、WinFS API322の「FindAll」メソッドを使用して、この場合は型の「Birthday」フィールド内の値が特定の日にち(例えば1999年12月31日)より大きいPerson型のすべてのインスタンスという特定の検索基準を満たすすべてのItemのクエリをインスタンス化する。ステップ(2)で、WinFS API322は、「FindAll」操作をSQLクエリに変換し、それを基礎となるデータベースエンジン、例えばSQL SERVER(商標)に発信する。ステップ(3)で、データベースエンジンは、Person UDTの対応するインスタンスに対するクエリを実行し、Person UDTの一致するインスタンスごとに格納された値を戻す。この例では、ステップ(4)で、ADO.Netは、データベースストアから戻されたビットをCLRオブジェクトに変え(すなわち上述したオブジェクトのハイドレーションのプロセス)、それらをWinFS API322に戻す。ADO.Netは、SQL SERVER(商標)など、データソースへのCLRを介したマネージドコードアクセスを提供するMicrosoft.NET Frameworkの構成要素である。次いでWinFS APIは、Person UDTオブジェクトをラップし、それらをPerson型のItemとしてアプリケーションに戻す。
UDTの各インスタンスは、例えばデジタルイメージ、ビデオ、音声など、大きいオブジェクトを表すいくつかのメンバを含み得る。こうした大きいオブジェクトは、通常、例えばBLOB、CLOB、およびNCLOBなどのデータ型インスタンスに格納され、より具体的には、varbinary(max)、varchar(max)、nvarchar(max)に格納される。データベースからの多数のメンバの取り出しは、かなりの時間および多大な処理能力(bandwidth)を必要とする。さらに、UDT取り出し使用のシナリオの大部分は、多数の埋め込みメンバへのアクセスを必要としない。
米国特許出願公開第20050091228号明細書 米国特許出願公開第20050050054号明細書
したがってこの分野では、UDTの指定されたメンバを遅延フェッチするシステムおよび方法が必要である。こうしたシステムおよび方法は、指定されたメンバ無しで、UDTを最初にフェッチすることができ、指定されたメンバを後で要求に応じて再フェッチできることが望ましい。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、ユーザ定義型の取り出しおよび操作を効率的に行うことができる、ユーザ定義型の指定されたメンバを遅延フェッチするシステムおよび方法を提供することにある。
本発明は、上述の要求および他の要求を満たす。
本発明は、ユーザ定義型(UDT)の指定されたメンバを遅延フェッチするシステムおよび方法を対象とする。指定されたメンバは、例えばデジタルイメージ、ビデオ、音声などの大きいオブジェクトとすることができる。本発明によれば、データベースサーバからUDTを最初にフェッチすると、指定されたメンバが取り除かれたUDTの直列化バージョンが戻され、それによって貴重な処理能力が保護され、最初のフェッチの実行に必要な時間が低減する。要求に応じて、後で指定されたメンバをデータベースサーバから再フェッチし、最初のフェッチ中に提供された他のUDTメンバ無しで戻すことができる。
本発明の一態様によれば、最初のフェッチは、基礎となるデータベース内のUDTへのパスを特定するUDTコンテナ参照(UDT container reference)を生成することによって実行することができる。UDTの直列化表現をデータベースから取り出し、指定されたメンバを直列化表現から取り除くことができる。次いでコンテナ参照が直列化表現の前に付けられ、直列化表現をクライアントアプリケーションに戻すことができる。
本発明の別の態様によれば、クライアントアプリケーションは、直列化表現を受信し、直列化復元することができる。直列化復元プロセスの一部として、指定されたメンバごとに、データベース内の指定されたメンバの位置に対応するコンテキスト情報を含む型インスタンスを構成することができる。コンテキスト情報は、UDT全体へのコンテナ参照、および対応する指定されたメンバへの個々のメンバパスを含み得る。次いで指定された各メンバは、そのコンテキスト情報をデータベースサーバに提供することによって後で再フェッチすることができる。
本発明の別の態様によれば、再フェッチ中、指定されたメンバを最初のフェッチ時の状態で戻すことができる。この特徴を可能にするために、最初のフェッチ時にUDTのバージョンを識別する更新シーケンスマーカ(update sequence marker)(USM)を直列化表現とともにクライアントアプリケーションに戻すこともできる。再フェッチ中、USMをコンテキスト情報とともにデータベースサーバに戻すことができる。USMを使用して、最初のフェッチ時に指定されたメンバの前のバージョンを識別し、取り出すことができる。
本発明の別の態様によれば、最初のフェッチ後、UDT全体または個々の指定されたメンバをデータベースサーバに戻すことができる。UDT全体が戻されると、指定されたメンバの代わりに、コンテキスト情報がデータベースサーバに提供される。データベースサーバに戻されると、コンテキスト情報を使用して、指定されたメンバを識別し、置き換える。個々の指定されたメンバのみが戻される場合、コンテキスト情報は、指定されたメンバが個々のものであることを示すメタデータ注釈とともに戻される。
本発明の追加の特徴および利点は、添付の図面を参照して進める実施形態の例の以下の詳細な説明から明らかになる。
実施形態の例は、添付の図面を参照して以下の詳細な説明を読めばよりよく理解される。
本発明によれば、ユーザ定義型の取り出しおよび操作を効率的に行うことができる。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
法定要件を満たすために、本発明の主題を詳しく説明する。しかし説明自体は、この特許の範囲を限定するためのものではない。むしろ発明者は、他の現在の技術または将来の技術とともに、本書に記載したものに似た異なる動作または要素を含むように、主張した主題を他の方法でも具体化できることを企図している。
上述したように、本発明は、ユーザ定義型(UDT)の指定されたメンバを遅延フェッチするシステムおよび方法を対象とする。一般に、本発明は、UDTの特定のメンバ、特に大きいオブジェクトを表すメンバを表示可能なメンバとして指定することができる。UDTの最初のフェッチ中、遅延可能メンバ無しで、UDTがデータベースから戻され、それによって貴重な処理能力を保護し、フェッチの実行に必要な時間を低減することができる。要求に応じて、最初のフェッチ中に提供された他のメンバを戻すことなく、選択された遅延可能メンバを後で再フェッチすることができる。遅延取り出しのプロセスは、遅延具体化プロセス(lazy materialization process)と呼ぶ場合もあるが、後述するシステムおよび方法の参照に使用する特定の用語は、本発明の範囲を限定するためのものではないことを理解されたい。
図6に、本発明によるUDTの指定されたメンバを遅延フェッチするシステム例を示している。一般に、データベースサーバ600は、データテーブル612内などにリレーショナル形式でデータを格納する基礎となるデータストア610を含む。テーブル612は、UDTのインスタンスをそれぞれ含むいくつかの行を含むUDT列614を含む。各UDTインスタンスは、必ずしも必要ではないが、いくつかの大きいオブジェクト618a〜cを含む。テーブル612は、グローバルに一意の識別子(GUID)など一意の識別子に従ってUDTインスタンスを構成する主キー列616も含む。テーブル612は他のUDT列および他のリレーショナル列(図示せず)も含み得ることを理解されたい。クライアント650は、ユーザがクエリを生成し、それをデータベースサーバ600に発信することができるようにし、こうしたクエリは、データストア610から特定のUDTインスタンスをフェッチすることを要求することができる。
データベースサーバ600は、CLRクラス定義に従ってUDTインスタンスを定義できるようにする共通言語ランタイム(CLR)を含むこともできる。UDTのクラス定義例を以下に示す。
Figure 2006012155
上述したように、本発明の一態様によれば、UDTの特定のメンバを遅延可能メンバとして指定することができる。UDTのフェッチを要求するクエリが後でデータベースサーバ600に発信される場合、要求に応じて、遅延可能メンバをクエリの実行の一部としてUDTから取り除くことができる。次いで遅延可能メンバを、要求に応じて後で再フェッチすることができる。したがってCLR定義620によって認識されたカスタム属性を使用して遅延可能メンバに注釈を付けることによってそれらを指定することができる。例えば、遅延可能メンバに、「IsDelayable」属性を使用して注釈を付けることができる。注釈を付けた遅延可能メンバ例を含むUDTを以下に示す。
Figure 2006012155
UDTが定義され、遅延可能メンバに注釈が付けられると、クエリはデータストア610に登録される。データストア610は、UDTの属性を読み取り、注釈に基づいてUDTの遅延可能メンバを識別する。データストア610でのUDTの登録後、後述するように、注釈が付けられた遅延可能メンバの遅延フェッチでUDTを取り出すことができる。
図7に、本発明によるUDTの指定されたメンバを遅延フェッチする方法例のフローチャートを示している。動作710で、UDTのフェッチを要求する最初のフェッチクエリがデータベースサーバ600に発信される。上述したように、処理能力を保護し、フェッチ装置の実行に必要な時間を低減するなどの利点を提供するために、本発明によるフェッチクエリは、UDTの指定された遅延可能メンバの遅延フェッチを要求することができる。フェッチクエリは、デフォルトでは、遅延可能メンバのフェッチを遅らせないことが好ましい。むしろ、好ましくはフェッチクエリは、遅延フェッチを呼び出す固有の要求を含んでいなければならない。したがって、遅延フェッチを可能にするために、遅延フェッチ節をサポートするようにSELECTステートメントの投影リスト(projection list)を拡張することができる。こうした遅延フェッチ節は、例えばWITH [REFERENCE] LOCATOR節とすることができる。WITH [REFERENCE] LOCATOR節を含む投影リスト例は、次のように示される。
Figure 2006012155
上述した構文の強化によって、任意のUDTインスタンスの遅延フェッチが可能になる。こうしたUDTインスタンスは、例えば最上位UDT、他の何らかのUDT内に埋め込まれたUDT値メンバ(UDT−valued member)、その部分型または上位型の一方にキャストされたUDT、または最初の3タイプのいずれかの組み合わせとすることができる。
遅延フェッチを要求するフェッチクエリ例を以下に示す。
Figure 2006012155
遅延フェッチを実装できる2つのやり方がある。参照セマンティクスおよび値セマンティクスである。参照セマンティクスの手法では、再フェッチ操作は、再フェッチ操作自体の時点で遅延メンバを取り出す。したがって、最初のフェッチ後に遅延メンバに加えられた任意の変更は、再フェッチとともに伝えられ、取り出される。値セマンティクスの手法では、再フェッチ操作は、最初のフェッチが実行された時点で遅延メンバを取り出す。したがって、値セマンティクスは、遅延メンバと非遅延メンバと間の読み取り一貫性を提供する。参照セマンティクスおよび値セマンティクスの実装については、以下の説明を通して述べる。
動作712で、データベースサーバ600でフェッチクエリが実行される。図8に、本発明によるフェッチクエリを実行する方法例を示している。図8に示す動作810〜820は、動作712内のサブ動作である。動作810で、データベースサーバ600は、要求されたUDTが一意に識別可能であることを確認する。確認は、要求されたUDTがそこへのアクセスパスを生成することができるテーブルまたはビューに格納されていることを立証することを伴う。こうしたアクセスパスによって、まったく同じ要求された論理UDTを後で再フェッチすることができる。確認は、そのアクセスパス内のすべてのテーブルが、例えばキー列616など、主キーまたは一意のインデックスを含むことを確認することを含み得る。UDTが一意に識別可能ではない場合、エラーメッセージが戻される場合がある。
動作812で、データベースサーバ600は、UDTコンテナ参照を生成する。UDTコンテナ参照は、上述したUDTアクセスパスを含み、最終的にUDTパスのデータベース、スキーマ、テーブル/ビュー、キー列、およびキー列値のすべての論理名をエンコードする。コンテナ参照内のすべての情報は、クライアント650によってアクセスできるオブジェクトに関して「論理的」である。したがって、コンテナ参照が存在している限り、クライアント650にとってコンテナ参照のセマンティクスは、クライアント650によって要求され得る動作および操作に関して理解可能である。コンテナ参照は、データベースサーバ600の実装の詳細の対象にはならない。コンテナ参照をエンコードするために、追加の文法をデータベースサーバ600に追加することができる。
動作814で、データベースサーバ600は、UDTコンテナ参照が不適切な、または許可されていない情報公開でセキュリティを脅かすことがないようにする。動作814は任意選択である。セキュリティは、例えば、クエリを発信するユーザがアクセスパスのキー列部分に含まれているすべての列および値にアクセスできることを確認することによって達成することができる。あるいは、セキュリティは、値を暗号化し、それらを暗号化された形式で戻すことによって達成することができる。
動作816で、UDTインスタンスの直列化表現がデータストア610から取り出される。動作818で、UDTの遅延可能メンバは、取り出されたUDTから取り除かれる。具体的には、各UDTインスタンスがクライアント650に戻されるとき、戻される特定の型のメタデータはロードされ、遅延可能メンバは列挙され、直列化表現から論理的に取り除かれる。動作820で、取り出されたUDTの前には、UDTコンテナ参照が付けられる。したがって、インスタンスは、UDTコンテナ参照、およびIsDelayable = trueとマーク付けされたメンバを省いたUDTの直列化形式とともにクライアント650に戻される。
値セマンティクスの場合、データベースサーバ600は、フェッチクエリ実行の一部としていくつかの追加動作を実行する。具体的には、データベースサーバ600は、フェッチクエリを含むステートメントが確実にユーザトランザクションの文脈で実行されるようにする。さらにサーバ600は、UDTインスタンスの一部として更新シーケンスマーカ(USM)を生成し、戻す。これは、再フェッチ操作での読み取り一貫性の提供に使用されるバージョン管理タイムスタンプ(versioning timestamp)である。
図7に戻って、動作714で、遅延メンバが取り除かれ、コンテナ参照が前に付けられたUDTがクライアント650に戻される。動作716で、戻されたUDTが直列化復元される。直列化復元プロセスの一部として、クライアント650にある管理されたデシリアライザは、省かれた遅延UDTメンバを識別し、こうした遅延メンバごとに、例えばSqlBytesやSqlCharsなど、対応するCLR型を構築する。遅延メンバごとに構築されたCLR型は、UDT全体の前に付けられたUDTコンテナ参照、および個々の遅延メンバの個々のメンバパスを含む。したがって、メンバごとのCLR型インスタンスは、データベースサーバ600内の個々のメンバへのパスを提供するクッキーである。クッキーは、データベースサーバ600上の遅延メンバの個々のインスタンスを明白に識別し、しかしクライアント650を参照しない一連のバイトである。クライアント650のプログラムは、一般にクッキーに変更を加えず、データベースサーバ600への再フェッチ要求にその元の形式のクッキーを使用する。
よりよい性能および拡張性を達成するために、クライアント650で、個々のメンバパスを含む各遅延メンバの全コンテキストの設定が行われる。クライアントデシリアライザは、インスタンスが遅延メンバを含んでいるかどうかに関係なく、戻されたすべてのUDTインスタンスについて、完全な型のトラバーサルを行う。したがって、データベースサーバ600での全コンテキストの設定とは対照的に、クライアント650での全コンテキストの設定では、戻されたUDTの追加のトラバーサルを必要としない。さらに、クライアント650の全コンテキストの設定は、データベースサーバ600から追加の作業をオフロードし、その結果拡張性の利益が得られる。
本発明によるCLR型は、クッキー状態による裏付けをサポートするように強化することができる。さらに、型は、完全には具体化されないときに対応するインスタンスを使用する試行がなされる場合、例外を戻すように強化することができる。
重要なことに、CLR型は、データベースサーバ600から対応するインスタンスの全表現を自動的に再フェッチする「Fill」メソッドを提供するように強化することもできる。Fillメソッドは、データベースサーバ600への接続を引数とみなす。Fillメソッドを使用する代わりに、サーバ接続への参照を、直列化復元中にクライアント650に暗黙的に格納することができる。
動作718で、クライアント650は、選択された遅延メンバを再フェッチする要求を発信する。再フェッチ操作によって、最初のフェッチ中に戻された非遅延メンバを取り出すことなく、選択された遅延メンバを取り出すことができる。再フェッチ操作は、ユーザによって実行されるタスクの量および複雑さを最低限に抑えるように実装される。再フェッチは、対応するCLR型インスタンスに対してFillメソッドを介して実行される。これらのメソッドは、クッキーを取得し、対応する単体の遅延メンバを戻す新しく追加されたリモートプロシージャ呼び出し(RPC)エントリポイントを呼び出す。
具体的には、ユーザは、特定のメンバを再フェッチするために、対応するインスタンスのFillメソッドを呼び出し、データベースサーバ600への接続を指定するだけでよい。値セマンティクスの場合、最初のフェッチのUSMも提供される。Fillメソッドを呼び出すと、格納されているプロシージャが、UDTコンテナ参照、対応する個々のメンバパス、および該当する場合はUSMを受信するデータベースサーバ600上で実行される。
動作720で、再フェッチ操作がデータベースサーバ600で実行される。再フェッチを実行するために、データベースサーバエントリポイントは、遅延フェッチ文法(delayed fetching grammar)を使用してUDTコンテナ参照を構文解析し、UDT全体を取り出すために実行することができるクエリツリーを構築する。UDT全体が取得されると、個々のメンバパス情報を使用して、戻す必要がある選択された個々のメンバまでトラバースする。この操作は、インスタンスの部分型と上位型との間のキャストを含み得る。値セマンティクスの場合、提供されたUSMを使用して、最初のフェッチ時から要求されたメンバの前のバージョンが識別され、取り出される。
動作722で、要求されたメンバは、発見後、クライアント650に戻される。動作724で、戻されたメンバをクライアント650が受信する。CLR型インスタンスは、メンバ表現を読み取り、メンバ表現を裏付け表現(backing representation)に設定し、インスタンスの内部状態を「filled」に設定する。
したがって、図7および図8を参照して上述したように、本発明は、UDTの指定されたメンバの遅延取り出しを可能にする。データベースサーバ600からUDTメンバをフェッチする方法を提供することに加えて、本発明は、遅延メンバを含む「インバウンド」UDTをサーバ600に発信するために使用することもできる。本発明のこの特徴は、クライアント650がUDTのメンバに変更を加え、UDTまたは変更された個々のメンバをデータベースサーバ600に戻してデータストア610に格納するときに特に有利である。このシナリオでは、クライアント650は、UDTの遅延可能メンバを最初に取り出す必要なく、UDTまたは変更された個々のメンバをデータベースサーバ650に発信することができる。クライアント650は、CLR型の一杯ではないメンバまたは一杯ではないインスタンスを含むUDTインスタンス全体を入力パラメータとしてデータベースサーバ600に戻すことができる。
一杯ではないメンバを含むUDT全体を戻す場合、クライアント650上の管理されたシリアライザは、一杯ではない各メンバ値の代わりに、UDT参照615および対応する個々のメンバパスを含む全クッキーを送信する。入力時に、データベースサーバ600は、埋め込み遅延メンバがあるかどうかについてUDTをチェックし、見つかったすべての遅延メンバを拡張し、置き換える。一杯ではないメンバの拡張は、正しいセマンティクスを保証するために、入力境界で実行される。メンバは、他のインスタンスから、または同じインスタンスの他のバージョンから割り当てることができる。
CLR型のスタンドアロンインスタンスの場合、クライアントドライバは、クッキー表現をインスタンスの識別を示すメタデータ注釈とともに送信する。メタデータ注釈は、クッキーと、シーケンスが一致する実際のバイナリ/文字値との間を区別できるようにする。
上記からわかるように、本発明の様々なシステム、方法、および態様のすべてまたは一部分は、ハードウェア、ソフトウェア、またはその両方の組み合わせに組み込むことができる。ソフトウェアに組み込まれる場合、本発明の方法および装置、またはその一部の態様または一部分は、プログラムコード(すなわち命令)の形で組み込むことができる。このプログラムコードは、それだけには限定されないが、フロッピー(登録商標)ディスク、CD−ROM、CD−RW、DVD―ROM、DVD−RAM、磁気テープ、フラッシュメモリ、ハードディスクドライブ、または他の任意のマシン可読記憶媒体を含む磁気、電気、または光記憶媒体などのコンピュータ可読媒体に格納することができ、プログラムコードがコンピュータやサーバなどのマシンにロードされ、マシンによって実行されると、マシンは本発明を実施する装置になる。プログラムコードをそこで実行するコンピュータは、一般にプロセッサ、プロセッサによって読み取り可能な記憶媒体(揮発性および不揮発性メモリおよび/または記憶要素を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。プログラムコードは、高レベル手続き型またはオブジェクト指向型のプログラミング言語で実施することができる。あるいは、プログラムコードは、アセンブリ言語またはマシン言語で実施することができる。どんな場合でも、言語はコンパイル型またはインタプリタ型言語とすることができる。
本発明は、例えば電気配線やケーブル布線を介する、光ファイバによる、ローカルエリアネットワーク、広域ネットワーク、インターネットまたはイントラネットを含むネットワークを介する、あるいは他の任意の形の送信を介するなど、何らかの送信媒体を介して送信されるプログラムコードの形で組み込むこともでき、プログラムコードがコンピュータなどのマシンによって受信され、ロードされ、実行されると、こうしたマシンは、本発明を実施する装置になる。
汎用プロセッサ上で実施されるとき、プログラムコードは、プロセッサと組み合わせて、特定の論理回路と同じように動作する一意の装置を提供することができる。
さらに本発明は、コンピュータネットワークの一部として配置する、または分散コンピューティング環境に配置することができる任意のコンピュータまたは他のクライアントまたはサーバ装置との関連で実施することができる。この点で、本発明は、任意の数のメモリまたはストレージユニットを有する任意のコンピュータシステムまたは環境、および本発明によるデータベースストア内にオブジェクトを保持するプロセスとの関連で使用することができる、任意の数のストレージユニットまたはボリュームにわたって行われる任意の数のアプリケーションおよびプロセスに関係がある。本発明は、リモートまたはローカルのストレージを有する、ネットワーク環境または分散コンピューティング環境に配置されているサーバコンピュータおよびクライアントコンピュータを含む環境に適用することができる。本発明は、リモートまたはローカルのサービスとの関連で情報を生成し、受信し、送信するためのプログラミング言語機能、解釈機能および実行機能を有するスタンドアロンコンピューティング装置に適用することもできる。
分散コンピューティングは、コンピューティング装置とシステムとの間の交換によりコンピュータリソースおよびサービスの共有を容易にする。これらのリソースおよびサービスは、それだけには限定されないが、情報交換、キャッシュストレージ、およびファイル用のディスクストレージを含む。分散コンピューティングはネットワーク接続を利用し、それによってクライアントは、集合的な力を利用して企業全体の利益になるようにすることができる。この点で、様々な装置は、本発明のオブジェクト維持方法との関連で実行される処理に関与し得るアプリケーション、オブジェクト、またはリソースを有する。
図9は、ネットワーク式または分散式のコンピューティング環境例の略図を示している。分散コンピューティング環境は、コンピューティングオブジェクト10a、10bなど、およびコンピューティングオブジェクトまたは装置110a、110b、110cなどを含む。これらのオブジェクトは、プログラム、メソッド、データストア、プログラム可能ロジックなどを含み得る。オブジェクトは、PDA(Personal Digital Assistant)、TV(television)、MP3(MPEG-1 Audio Layer 3)プレイヤ、パーソナルコンピュータなど、同じまたは異なる装置の一部分を含み得る。各オブジェクトは、通信ネットワーク14を介して別のオブジェクトと通信することができる。このネットワーク自体は、サービスを図9のシステムに提供する他のコンピューティングオブジェクトおよびコンピューティング装置を含み、複数の相互接続されたネットワークを表し得る。本発明の一態様によれば、各オブジェクト10a、10bなど、または110a、110b、110cなどは、本発明のオブジェクト維持方法の実施に使用するプロセスの使用を要求するために、APIまたは他のオブジェクト、ソフトウェア、ファームウェアおよび/またはハードウェアを使用するアプリケーションを含み得る。
110cなどのオブジェクトが別のコンピューティング装置10a、10bなど、または110a、110bなどでホストされ得ることも理解できよう。したがって、示した物理的な環境では、接続された装置をコンピュータとして示しているが、こうした図は単に例にすぎず、代わりにPDA、TV、MP3プレイヤなどの様々なデジタル装置、インタフェース、COM(Component Object Model)オブジェクトなどのソフトウェアオブジェクトを含む物理的な環境を示し、または記載することができる。
分散コンピューティング環境をサポートする様々なシステム、構成要素、ネットワーク構成がある。例えば、複数のコンピューティングシステムは、有線または無線のシステム、ローカルネットワーク、または広範に分散されたネットワークによってともに接続することができる。現在、ネットワークの多くは、広範にわたって分散されたコンピューティングのためのインフラストラクチャを提供し、異なる多くのネットワークを含むインターネットに結合されている。任意のインフラストラクチャを、本発明に付随するようになされた通信例に使用することができる。
インターネットとは、通常、コンピュータネットワーキングの分野でよく知られているプロトコルのTCP/IPスイーツを使用するネットワークおよびゲートウェイの集まりを指す。TCP/IPは、「Transmission Control Protocol/Internet Protocol」の頭字語である。インターネットは、ユーザがネットワークを介して対話し、情報を共有することができるようにするネットワーキングプロトコルを実行するコンピュータによって相互接続された地理的に分散されたリモートコンピュータネットワークのシステムとして説明することができる。こうした広範囲にわたる情報の共有のため、インターネットなどのリモートネットワークは、これまでのところ、一般にオープンシステムに発展している。その開発者は、本質的に制限無しに、特別な操作またはサービスを実行するソフトウェアアプリケーションを設計することができる。
したがって、ネットワークインフラストラクチャによって、クライアント/サーバ、ピアツーピア、またはハイブリッドアーキテクチャ(hybrid architecture)など、多数のネットワーク技術が可能となる。「クライアント」とは、関係のない別のクラスまたはグループのサービスを使用するあるクラスまたはグループのメンバである。したがって、コンピュータ処理では、クライアントとはプロセス、すなわち大ざっぱに言えば、別のプログラムによって提供されるサービスを要求する1組の命令またはタスクである。クライアントプロセスは、他のプログラムまたはサービス自体についての任意の作業の詳細を「認識している」必要無く、要求されたサービスを使用する。クライアント/サーバアーキテクチャ、特にネットワーク式システムでは、通常クライアントは、サーバなど、別のコンピュータによって提供される共有のネットワークリソースにアクセスするコンピュータである。図9の例では、コンピュータ110a、110bなどをクライアントと考えることができ、コンピュータ10a、10bなどをサーバと考えることができるが、状況に応じて、任意のコンピュータをクライアント、サーバ、またはその両方とみなすことができる。こうした任意のコンピューティング装置は、本発明のオブジェクト維持技術を含むやり方でデータを処理している可能性がある。
サーバは一般に、インターネットなど、リモートネットワークまたはローカルネットワークを介してアクセス可能なリモートコンピュータシステムである。クライアントプロセスは、第1のコンピュータシステムでアクティブであり、サーバプロセスは、第2のコンピュータシステムでアクティブであり、互いに通信媒体を介して通信し、したがって分散機能を提供し、複数のクライアントがサーバの情報収集機能を利用することができる。本発明の保持機構に従って使用される任意のソフトウェアオブジェクトを、複数のコンピューティング装置にわたって分散することができる。
クライアントおよびサーバは、プロトコルレイヤによって提供される機能を使用して互いに通信することができる。例えば、ハイパーテキスト転送プロトコル(HTTP)は、WWWまたは「Web」とともに使用される共通のプロトコルである。一般に、インターネットプロトコル(IP)アドレスなどのコンピュータネットワークアドレス、またはユニバーサルリソースロケータ(URL)などの他の参照を使用してサーバコンピュータまたはクライアントコンピュータを互いに識別することができる。ネットワークアドレスは、URLアドレスと呼ぶことができる。通信は、使用可能な任意の通信媒体を介して提供することができる。
したがって図9は、本発明を使用することができるネットワーク式または分散式の環境例を示しており、サーバは、ネットワーク/バスを介してクライアントコンピュータと通信する。ネットワーク/バス14は、本発明に従って、ポータブルコンピュータ、ハンドヘルドコンピュータ、シンクライアント、ネットワーク装置などいくつかのクライアントまたはリモートコンピューティング装置110a、110b、110c、110d、110eなど、またはVCR、TV、オーブン、電灯、ヒーターなどの他の装置を含む、LAN(local area network)、WAN(wide area network)、イントラネット、インターネット、または他の何らかのネットワーク媒体とすることがでる。したがって、保持されたオブジェクトを維持することが望ましい任意のコンピューティング装置に本発明を適用することができることが企図されている。
通信ネットワーク/バス14がインターネットであるネットワーク環境では、例えばサーバ10a、10bなどは、クライアント110a、110b、110c、110d、110eなどがHTTPなどの既知のいくつかのプロトコルのうちの任意のものを介して通信するサーバとすることができる。サーバ10a、10bなどは、クライアント110a、110b、110c、110d、110eなどとして働く場合もあり、これは分散コンピューティング環境の特徴である。
通信は、適切な場合は有線または無線とすることができる。クライアント装置110a、110b、110c、110d、110eなどは、通信ネットワーク/バス14を介して通信することもでき、独立した通信が関連付けられていてもよい。例えば、TVまたはVCRの場合、その制御へのネットワーク式態様があってもよい。各クライアントコンピュータ110a、110b、110c、110d、110eなど、およびサーバコンピュータ10a、10bなどは、様々なアプリケーションプログラムモジュールまたはオブジェクト135、および様々なタイプの記憶要素またはオブジェクトへの接続またはアクセスを備えることができ、それを介してファイルまたはデータストリームが格納され、ファイルまたはデータストリームの部分をそこにダウンロードし、送信し、マイグレーションすることができる。任意のコンピュータ10a、10b、110a、110bなどは、本発明によって処理されるデータを格納するデータベース、メモリ、または他の記憶要素20のメンテナンスおよび更新を行う役割を果たし得る。したがって、本発明は、コンピュータネットワーク/バス14にアクセスし、それと対話することができるクライアントコンピュータ110a、110bなど、クライアントコンピュータ110a、110bなどおよび他の同様の装置と対話することができるサーバコンピュータ10a、10bなど、およびデータベース20を有するコンピュータネットワーク環境で使用することができる。
図10および以下の説明は、本発明を実施できる適したコンピューティング装置の簡単な概説を提供するためのものである。例えば、図9に示した任意のクライアントおよびサーバのコンピュータまたは装置は、この形を取り得る。しかし、ハンドヘルド、ポータブル、および他のコンピューティング装置およびあらゆる種類のコンピューティングオブジェクトは、本発明とともに使用することが企図されており、すなわち、コンピューティング環境において、そのどこからでもデータを生成し、処理し、受信し、かつ/または送信することができる。以下では汎用コンピュータについて説明するが、これは一例にすぎず、本発明は、ネットワーク/バスの相互運用性および対話を有するシンクライアントにより実施することができる。したがって、本発明は、例えば機器に配置されているオブジェクトなど、クライアント装置が単にネットワーク/バスへのインタフェースとして働くネットワーク式環境など、非常に小さいまたは最小のクライアントリソースが関与するネットワーク式ホストサービスの環境で実施することができる。本質的に、データを格納することができる、またはデータを取り出したり、他のコンピュータに送信したりすることができるところであれば、本発明のオブジェクト維持方法の操作に望ましい、または適した環境である。
必須ではないが、本発明は、装置またはオブジェクトのサービスの開発者が使用できるように、オペレーティングシステムを介して実施することができ、かつ/または本発明に従って動作するアプリケーションまたはサーバソフトウェア内に含めることができる。ソフトウェアは、クライアントワークステーション、サーバ、または他の装置など、1つまたは複数のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な状況で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。一般に、プログラムモジュールの機能を、様々な実施形態で必要に応じて結合し、または分散することができる。さらに、本発明は、他のコンピュータシステム構成およびプロトコルで実施することができる。本発明との使用に適したよく知られている他のコンピューティングシステム、環境、および/または構成には、それだけには限定されないが、パーソナルコンピュータ(PC)、現金自動預け払い機、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能家庭用電化製品、ネットワークPC、機器、電灯、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどがある。
したがって図10は、本発明を実施できる適したコンピューティングシステム環境例100の例を示しているが、上記で明らかになったように、コンピューティングシステム環境100は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する任意の制限を示唆するものではない。また、コンピューティング環境100を、動作環境100の例に示した構成要素のいずれか1つ、またはその組み合わせに関連する依存性または必要条件を有しているものと解釈すべきではない。
図10を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の構成要素は、それだけには限定されないが、プロセッサ120、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素をプロセッサ120に結合するシステムバス121を含み得る。システムバス121は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Extended Industry Standard Architecture)バス、VESA(Video Electronics Standards Association)ローカルバス、およびPCI(Peripheral Component Interconnect)バス(メザニンバスとしても知られている)などがある。
コンピュータ110は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を格納するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよびノンリムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、RAM(random access memory)、ROM(read only memory)、EEPROM(Electronically Erasable and Programmable Read Only Memory)、フラッシュメモリまたは他のメモリ技術、CD(compact disc)−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ110からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号に情報を符号化するように1つまたは複数のその特性が設定または変更された信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、RF(radio frequency)、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組み合わせでもコンピュータ可読媒体の範囲内に含まれるものとする。
システムメモリ130は、読み取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。BIOS(Basic Input/Output System)133は、例えば起動中など、コンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含み、一般にROM131に格納されている。RAM132は一般に、プロセッサ120から直接アクセス可能な、かつ/またはプロセッサ120が現在処理しているデータおよび/またはプログラムモジュールを含む。図10は、それだけには限定されないが一例として、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示している。
コンピュータ110は、他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図8は、ノンリムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ141、リムーバブル不揮発性磁気ディスク152から読み取り、あるいはそこに書き込む磁気ディスクドライブ151、およびCD−RW、DVD−RW、または他の光媒体など、リムーバブル不揮発性光ディスク156から読み取り、あるいはそこに書き込む光ディスクドライブ155を示している。動作環境の例で使用できる他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROMなどがある。ハードディスクドライブ141は一般に、インタフェース140などのノンリムーバブルメモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は一般に、インタフェース150などのリムーバブルメモリインタフェースによってシステムバス121に接続される。
上述し、図10に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ110の他のデータの記憶を提供する。図10では例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するものとして示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであっても、異なっていてもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード162、およびマウス、トラックボール、またはタッチパッドなどのポインティングデバイス161などの入力装置を介してコマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバス121に結合されているユーザ入力インタフェース160を介してプロセッサ120に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインタフェースおよびバス構造で接続してもよい。グラフィックインタフェース182は、システムバス121に接続してもよい。1つまたは複数のグラフィック処理ユニット(GPU)184がグラフィックインタフェース182と通信し得る。モニタ191または他のタイプの表示装置もまた、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続され、ビデオインタフェース190はビデオメモリ186と通信することができる。モニタ191に加えて、コンピュータは、出力周辺インタフェース195を介して接続できるスピーカ197、プリンタ196などの他の周辺出力装置を含むこともできる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境または分散環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ110に関連して上述した多くまたはすべての要素を含むが、図10にはメモリ記憶装置181のみを示している。図10に示した論理接続は、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173を含むが、他のネットワーク/バスを含んでいてもよい。こうしたネットワーキング環境は、家、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
LANネットワーキング環境で使用する場合、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は一般に、モデム172、またはインターネットなどWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵のものでも外付けのものでもよく、ユーザ入力インタフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク式環境では、コンピュータ110に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図10は、それだけには限定されないが一例として、リモートアプリケーションプログラム185をメモリ装置181上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
上記で示したように、本発明は、UDTの指定されたメンバの遅延フェッチを対象にしている。本発明は、デジタル写真、ビデオなど、大きいオブジェクトのフェッチを遅らせる場合に特に有利である。その広範な発明の概念から逸脱することなく、上記の実施形態に変更を加えることができることを理解されたい。例えば、本発明の実施形態をMicrosoftのSQL SERVER(商標)データベース管理システムで実装するものとして上述してきたが、本発明は、ユーザ定義型の作成をサポートする任意のデータベース管理システムに組み込むことができることを理解されたい。さらに、本発明のいくつかの概念を、上述したWinFSストレージプラットフォームの状況で具体化されるものとして説明してきたが、本発明のこうした態様は決してその環境における実装に限定されるものではないことを理解されたい。むしろ、本発明の方法およびシステムは、ユーザ定義型のメンバの格納および取り出しが望ましい任意のシステムに組み込むことができる。したがって、本発明は、開示した特定の実施形態に限定されないが、添付の特許請求の範囲によって定義される本発明の意図および範囲内のすべての変更をカバーするものとすることを理解されたい。
ユーザ定義型のマネージドコードクラス定義を示すコードセグメント例を示す図である。 マネージドコードでインスタンス化された型のインスタンスの直列化および直列化復元を示すブロック図である。 ユーザ定義型のオブジェクトが保持されるデータベーステーブルを示す図である。 本発明の特徴を利用することができるストレージプラットフォーム例を示すブロック図である。 図4に示したストレージプラットフォームの文脈でユーザ定義型の保持されたオブジェクトに対してクエリを実行するプロセスを示す図である。 本発明によるユーザ定義型のメンバを遅延フェッチするシステム例を示すブロック図である。 本発明によるユーザ定義型のメンバを遅延フェッチする方法例を示すフローチャートである。 本発明によるユーザ定義型の最初のフェッチを実行する方法例を示すフローチャートである。 本発明を実施できる様々なコンピューティング装置を有するネットワーク環境例を表すブロック図である。 本発明を実施できるコンピューティング装置例を表すブロック図である。
符号の説明
600 データベースサーバ
610 データストア
620 CLR定義
650 クライアント

Claims (33)

  1. ユーザ定義型の指定されたメンバを遅延フェッチする方法であって、
    データストア内の前記ユーザ定義型へのパスを識別する前記ユーザ定義型へのコンテナ参照を生成するステップと、
    前記データストアから前記ユーザ定義型の直列化表現を取り出すステップと、
    前記直列化表現から前記指定されたメンバを取り除くステップと、
    前記直列化表現に前記コンテナ参照を添付するステップと
    を備えることを特徴とする方法。
  2. 前記指定されたメンバに注釈を付ける対応するクラス定義に従って前記データストア内に前記ユーザ定義型を登録するステップをさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記指定されたメンバの遅延フェッチによる前記ユーザ定義型の最初のフェッチを要求するクエリを受信するステップをさらに備えることを特徴とする請求項1に記載の方法。
  4. 前記直列化表現および前記添付されたコンテナ参照をクライアントアプリケーションに戻すステップをさらに備えることを特徴とする請求項1に記載の方法。
  5. 前記コンテナ参照を生成する前に前記ユーザ定義型が一意に識別可能であることを確認するステップをさらに備えることを特徴とする請求項1に記載の方法。
  6. 前記コンテナ参照を前記直列化表現に添付する前に前記コンテナ参照のセキュリティを確実にするステップをさらに備えることを特徴とする請求項1に記載の方法。
  7. 現在の更新シーケンスマーカを前記直列化表現に添付するステップをさらに備えることを特徴とする請求項1に記載の方法。
  8. 前記指定されたメンバを再フェッチする要求を受信するステップであって、前記要求は、前記コンテナ参照、および前記指定されたメンバへの個々のメンバパスを含むコンテキスト情報を含むステップと、
    前記コンテキスト情報に基づいて前記指定されたメンバを前記データストアから取り出すステップと、
    前記指定されたメンバを戻すステップと
    をさらに備えることを特徴とする請求項1に記載の方法。
  9. 前記ユーザ定義型の前記最初のフェッチに対応する更新シーケンスマーカをさらに含む、前記指定されたメンバを再フェッチする前記要求を受信するステップを備えることを特徴とする請求項8に記載の方法。
  10. 前記データストアから前記指定されたメンバの前のバージョンを取り出すステップであって、前記前のバージョンは前記更新シーケンスマーカによって識別されるステップを備えることを特徴とする請求項9に記載の方法。
  11. 前記指定されたメンバが前記コンテナ参照、および前記指定されたメンバへの個々のメンバパスを含むコンテキスト情報に置き換えられた前記ユーザ定義型の再直列化表現を受信するステップと、
    前記コンテキスト情報を前記指定されたメンバに置き換えるステップであって、前記指定されたメンバは前記コンテキスト情報に基づいて識別されるステップと、
    前記再直列化表現を前記データストアに格納するステップと
    をさらに備えることを特徴とする請求項1に記載の方法。
  12. 前記コンテナ参照、および前記指定されたメンバへの個々のメンバパスを含むコンテキスト情報を受信し、前記コンテキスト情報を前記データストア内の前記指定されたメンバの位置へのパスとして識別するメタデータ注釈を受信するステップと、
    前記コンテキスト情報を前記指定されたメンバに置き換えるステップであって、前記指定されたメンバは前記コンテキスト情報に基づいて識別されるステップと、
    前記指定されたメンバを前記データストアに格納するステップと
    をさらに備えることを特徴とする請求項1に記載の方法。
  13. 請求項1に記載の各ステップを実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ読み取り可能な記録媒体。
  14. ユーザ定義型の指定されたメンバを遅延フェッチする方法であって、それによって前記遅延フェッチは、前記指定されたメンバを伴わない前記ユーザ定義型の直列化表現を戻す最初のフェッチ後に要求され、前記直列化表現は前記ユーザ定義型への添付されたコンテナ参照を有し、前記コンテナ参照はデータストア内の前記ユーザ定義型へのパスを識別し、前記方法は、
    前記指定されたメンバに対応する型インスタンスを構築することによって前記直列化表現を直列化復元するステップであって、前記型インスタンスは、前記コンテナ参照、および前記ユーザ定義型内の前記指定されたメンバへの個々のメンバパスを含むコンテキスト情報を含むステップと、
    前記指定されたメンバの再フェッチ要求をデータベースサーバに発信するステップであって、前記再フェッチ要求は前記コンテキスト情報を含むステップと
    を備えることを特徴とする方法。
  15. 前記最初のフェッチクエリを前記データストアに発信するステップであって、前記クエリは前記指定されたメンバの遅延フェッチを要求するステップをさらに備えることを特徴とする請求項14に記載の方法。
  16. 前記ユーザ定義型の前記直列化表現を、前記最初のフェッチに対応する添付された更新シーケンスマーカとともに受信するステップをさらに備えることを特徴とする請求項14に記載の方法。
  17. 前記更新シーケンスマーカをさらに含む前記再フェッチ要求を前記データベースサーバに発信するステップを備えることを特徴とする請求項16に記載の方法。
  18. 前記再フェッチ要求に応答して前記指定されたメンバを受信するステップをさらに備えることを特徴とする請求項14に記載の方法。
  19. 前記最初のフェッチに対応する更新シーケンスマーカによって識別される前記指定されたメンバの前のバージョンを受信するステップを備えることを特徴とする請求項18に記載の方法。
  20. 前記ユーザ定義型の表現を再直列化し、それによって前記指定されたメンバは前記コンテキスト情報に置き換えられるステップと、
    前記データストアに格納するために前記再直列化表現を前記データベースサーバに発信するステップと
    をさらに備えることを特徴とする請求項14に記載の方法。
  21. 前記コンテキスト情報、および前記コンテキスト情報を前記データストア内の前記指定されたメンバの位置へのパスとして識別するメタデータ注釈を前記データベースサーバに発信するステップをさらに備えることを特徴とする請求項14に記載の方法。
  22. 請求項1に記載の各ステップを実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ読み取り可能な記録媒体。
  23. ユーザ定義型の指定されたメンバを遅延フェッチするシステムであって、
    データベースサーバ、データストア、およびクライアントアプリケーションを備え、
    前記クライアントアプリケーションは前記ユーザ定義型の最初のフェッチを要求するクエリを発信し、前記クエリは前記指定されたメンバの遅延フェッチを要求し、
    前記データベースサーバは、前記指定されたメンバが取り除かれた、前記ユーザ定義型の直列化表現を含む最初のフェッチ結果を戻し、前記最初のフェッチ結果は前記データストア内の前記ユーザ定義型へのパスを識別する添付されたコンテナ参照をさらに含む
    ことを特徴とするシステム。
  24. 前記ユーザ定義型は、前記指定されたメンバが遅延可能メンバとして注釈が付けられる対応するクラス定義に従って定義されることを特徴とする請求項23に記載のシステム。
  25. 前記最初のフェッチ結果は、前記最初のフェッチに対応する添付された更新シーケンスマーカをさらに含むことを特徴とする請求項23に記載のシステム。
  26. 前記クライアントアプリケーションは再フェッチ要求を前記データベースサーバに発信し、前記再フェッチ要求は、前記コンテナ参照、および前記指定されたメンバへの個々のメンバパスを含むコンテキスト情報を含むことを特徴とする請求項23に記載のシステム。
  27. 前記データベースサーバは前記コンテキスト情報に基づいて前記データストアから前記指定されたメンバを取り出し、前記指定されたメンバを前記クライアントアプリケーションに戻すことを特徴とする請求項26に記載のシステム。
  28. 前記再フェッチ結果は、前記最初のフェッチに対応する更新シーケンスマーカをさらに含むことを特徴とする請求項26に記載のシステム。
  29. 前記クライアントアプリケーションに戻された前記指定されたメンバは前記更新シーケンスマーカに基づいて識別された前記指定されたメンバの前のバージョンを含むことを特徴とする請求項28に記載のシステム。
  30. 前記クライアントアプリケーションは前記ユーザ定義型の再直列化表現を前記データベースサーバに発信し、前記再直列化表現は、前記コンテナ参照、および前記指定されたメンバへの個々のメンバパスを含むコンテキスト情報に置き換えられた前記指定されたメンバを含むことを特徴とする請求項23に記載のシステム。
  31. 前記データベースサーバは前記コンテキスト情報を前記指定されたメンバに置き換え、前記指定されたメンバは前記コンテキスト情報に基づいて識別されることを特徴とする請求項30に記載のシステム。
  32. 前記再直列化表現は前記データストアに格納されることを特徴とする請求項31に記載のシステム。
  33. 前記クライアントアプリケーションは、前記コンテナ参照、および前記指定されたメンバへの個々のメンバパスを含むコンテキスト情報を前記データベースサーバに発信し、メタデータ注釈は前記コンテキスト情報を前記データストア内の前記指定されたメンバの位置へのパスとして識別することを特徴とする請求項23に記載のシステム。
JP2005176650A 2004-06-29 2005-06-16 ユーザ定義型の指定されたメンバを遅延フェッチするシステムおよび方法 Pending JP2006012155A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/879,326 US7548901B2 (en) 2004-06-29 2004-06-29 System and method for delayed fetching of designated members of a user defined type

Publications (1)

Publication Number Publication Date
JP2006012155A true JP2006012155A (ja) 2006-01-12

Family

ID=35427671

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005176650A Pending JP2006012155A (ja) 2004-06-29 2005-06-16 ユーザ定義型の指定されたメンバを遅延フェッチするシステムおよび方法

Country Status (5)

Country Link
US (1) US7548901B2 (ja)
EP (1) EP1622046A3 (ja)
JP (1) JP2006012155A (ja)
KR (1) KR20060048418A (ja)
CN (1) CN100501731C (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743333B2 (en) * 2004-08-12 2010-06-22 Oracle International Corporation Suspending a result set and continuing from a suspended result set for scrollable cursors
US7613710B2 (en) * 2004-08-12 2009-11-03 Oracle International Corporation Suspending a result set and continuing from a suspended result set
US7587400B2 (en) * 2004-08-12 2009-09-08 Oracle International Corporation Suspending a result set and continuing from a suspended result set for transparent session migration
US7536380B2 (en) * 2005-03-24 2009-05-19 International Business Machines Corporation Dynamic look ahead predicate generation
US7571153B2 (en) * 2005-03-28 2009-08-04 Microsoft Corporation Systems and methods for performing streaming checks on data format for UDTs
US8122346B2 (en) * 2005-08-05 2012-02-21 Sap Ag Methods and systems for merging software-level objects with document-level objects in a document publishing environment
US7996855B2 (en) * 2006-09-15 2011-08-09 Oracle International Corporation Personal messaging application programming interface for integrating an application with groupware systems
US8463852B2 (en) * 2006-10-06 2013-06-11 Oracle International Corporation Groupware portlets for integrating a portal with groupware systems
US7801886B1 (en) * 2006-10-10 2010-09-21 Intuit Inc. Method and apparatus for performing database operations involving custom fields
US8086817B2 (en) * 2006-12-21 2011-12-27 International Business Machines Corporation Method and system for efficient retrieval of data of large or unknown length by a native application program
US7779037B2 (en) * 2007-03-27 2010-08-17 International Business Machines Corporation Sharing a single instance of a user defined type
US8407728B2 (en) * 2008-06-02 2013-03-26 Microsoft Corporation Data flow network
US9565116B2 (en) 2013-08-29 2017-02-07 Globalfoundries Inc. Executing variable-priority jobs using multiple statistical thresholds in cellular networks
US9613110B2 (en) * 2014-12-12 2017-04-04 Sap Se Fast serialization for data transfer
US10803042B2 (en) * 2017-10-06 2020-10-13 Chicago Mercantile Exchange Inc. Database indexing in performance measurement systems
CN112631252B (zh) * 2020-12-18 2022-07-12 广东嘉腾机器人自动化有限公司 一种产线设备中控系统的更新方法、外接更新模块和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08255101A (ja) * 1995-02-10 1996-10-01 Internatl Business Mach Corp <Ibm> 大型データ・オブジェクトに関する選択された割当てオペレーションを変換するためのシステム及び方法
JPH10240589A (ja) * 1997-02-21 1998-09-11 Hitachi Ltd 実データ遅延取出しを行うデータベース処理方法
JP2000163307A (ja) * 1998-11-25 2000-06-16 Hitachi Ltd データベース処理方法及びその実施装置並びにその処理プログラムを記録した媒体

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1337132C (en) 1988-07-15 1995-09-26 Robert Filepp Reception system for an interactive computer network and method of operation
US7072849B1 (en) * 1988-07-15 2006-07-04 International Business Machines Corporation Method for presenting advertising in an interactive service
US5900870A (en) 1989-06-30 1999-05-04 Massachusetts Institute Of Technology Object-oriented computer user interface
US5297279A (en) * 1990-05-30 1994-03-22 Texas Instruments Incorporated System and method for database management supporting object-oriented programming
US6708196B1 (en) 1994-04-15 2004-03-16 Microsoft Corporation Method and system for caching presentation data
US6078925A (en) 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US5864862A (en) 1996-09-30 1999-01-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for creating reusable components in an object-oriented programming environment
US6785690B1 (en) 1996-03-18 2004-08-31 Hewlett-Packard Development Company, L.P. Method and system for storage, retrieval, and query of objects in a schemeless database
US5907846A (en) * 1996-06-07 1999-05-25 Electronic Data Systems Corporation Method and system for accessing relational databases using objects
JP3747525B2 (ja) 1996-08-28 2006-02-22 株式会社日立製作所 並列データベースシステム検索方法
US6112024A (en) 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US6070174A (en) 1997-09-30 2000-05-30 Infraworks Corporation Method and apparatus for real-time secure file deletion
US6108004A (en) 1997-10-21 2000-08-22 International Business Machines Corporation GUI guide for data mining
US6263342B1 (en) 1998-04-01 2001-07-17 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated datastore object
US6223344B1 (en) 1998-06-11 2001-04-24 Internationl Business Machines Corporation Apparatus and method for versioning persistent objects
US6571337B1 (en) * 1998-06-24 2003-05-27 International Business Machines Corporation Delayed secure data retrieval
US6519597B1 (en) 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
US6338056B1 (en) 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
US6304909B1 (en) * 1998-12-18 2001-10-16 International Business Machines Corporation Client-controlled link processing in computer network
US6505211B1 (en) 1999-01-26 2003-01-07 International Business Machines Corporation Method for providing for persistence of java classes where the persistence semantics may be orthogonal to the class definition
US6199195B1 (en) 1999-07-08 2001-03-06 Science Application International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US6370541B1 (en) 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US6466933B1 (en) * 1999-09-21 2002-10-15 International Business Machines Corporation Delayed delivery of query results or other data from a federated server to a federated client until such information is needed
US6564215B1 (en) * 1999-12-16 2003-05-13 International Business Machines Corporation Update support in database content management
US6556983B1 (en) 2000-01-12 2003-04-29 Microsoft Corporation Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space
US6831667B1 (en) 2000-09-14 2004-12-14 International Business Machines Corporation Method and an apparatus for displaying sections of web pages in multiple modes
US6671687B1 (en) 2000-09-29 2003-12-30 Ncr Corporation Method and apparatus for protecting data retrieved from a database
US6999956B2 (en) 2000-11-16 2006-02-14 Ward Mullins Dynamic object-driven database manipulation and mapping system
US6877111B2 (en) 2001-03-26 2005-04-05 Sun Microsystems, Inc. Method and apparatus for managing replicated and migration capable session state for a Java platform
US6697818B2 (en) 2001-06-14 2004-02-24 International Business Machines Corporation Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database
US6772178B2 (en) 2001-07-27 2004-08-03 Sun Microsystems, Inc. Method and apparatus for managing remote data replication in a distributed computer system
US7000238B2 (en) * 2001-10-10 2006-02-14 Borland Software Corporation Development system providing extensible remoting architecture
US20040036912A1 (en) * 2002-08-20 2004-02-26 Shih-Ping Liou Method and system for accessing documents in environments with limited connection speed, storage, and screen space

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08255101A (ja) * 1995-02-10 1996-10-01 Internatl Business Mach Corp <Ibm> 大型データ・オブジェクトに関する選択された割当てオペレーションを変換するためのシステム及び方法
JPH10240589A (ja) * 1997-02-21 1998-09-11 Hitachi Ltd 実データ遅延取出しを行うデータベース処理方法
JP2000163307A (ja) * 1998-11-25 2000-06-16 Hitachi Ltd データベース処理方法及びその実施装置並びにその処理プログラムを記録した媒体

Also Published As

Publication number Publication date
KR20060048418A (ko) 2006-05-18
EP1622046A3 (en) 2006-11-22
US7548901B2 (en) 2009-06-16
CN1716249A (zh) 2006-01-04
EP1622046A2 (en) 2006-02-01
CN100501731C (zh) 2009-06-17
US20050289160A1 (en) 2005-12-29

Similar Documents

Publication Publication Date Title
JP5043175B2 (ja) 型が定義されているデータベースストアの外側でのユーザ定義型フィールドの格納および取得のためのシステムと方法
US7308460B2 (en) System and method for providing user defined types in a database system
US7769747B2 (en) Method and apparatus for generating a service data object based service pattern for an enterprise Java beans model
US7325007B2 (en) System and method for supporting non-native data types in a database API
US7502807B2 (en) Defining and extracting a flat list of search properties from a rich structured type
JP4738908B2 (ja) ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法
JP4604042B2 (ja) データベースストアにおけるオブジェクト維持のためのシステムおよび方法
US20090055430A1 (en) Method and system for model-based replication of data
JP2006012155A (ja) ユーザ定義型の指定されたメンバを遅延フェッチするシステムおよび方法
WO2024113740A1 (zh) 数据查询方法、系统、设备及计算机可读存储介质
US7136872B2 (en) Method, system, and article of manufacture for transferring structured data between different data stores
CN116894070B (zh) 促进灵活数据访问的数据制品实例
US7590654B2 (en) Type definition language for defining content-index from a rich structured WinFS data type
US20060242167A1 (en) Object based test library for WinFS data model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110422

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111209