JP2007519078A - オブジェクトとしてカプセル化されたxmlデータをデータベースストアに格納し検索するシステムおよび方法 - Google Patents

オブジェクトとしてカプセル化されたxmlデータをデータベースストアに格納し検索するシステムおよび方法 Download PDF

Info

Publication number
JP2007519078A
JP2007519078A JP2006536589A JP2006536589A JP2007519078A JP 2007519078 A JP2007519078 A JP 2007519078A JP 2006536589 A JP2006536589 A JP 2006536589A JP 2006536589 A JP2006536589 A JP 2006536589A JP 2007519078 A JP2007519078 A JP 2007519078A
Authority
JP
Japan
Prior art keywords
xml
user
class
instance
field
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
JP2006536589A
Other languages
English (en)
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 JP2007519078A publication Critical patent/JP2007519078A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

全てデータベースストア内のユーザ定義型(UDT)の単一のインスタンス内にある構造化、半構造化、および非構造化データをモデル化するシステムおよび方法を提供する。具体的には、XMLデータモデルがUDTのフィールドに拡張される。その結果、ドキュメント順序およびドキュメント構造などXMLデータモデルのプロパティを、UDTのインスタンス内に保存することができる。さらに、オブジェクト挙動を表すコード(すなわちマネージドコードのオブジェクトを呼び出すことができるメソッド)をUDTに追加して、UDTのXMLフィールド並びに非XMLフィールドで動作させることができる。それによって、フレームワークによってビジネス論理をXMLデータに追加することができるようになる。XMLデータのコンテンツモデルを、任意選択でUDTのXMLフィールドに関連したXMLスキーマドキュメントを使用して記述することができる。

Description

本発明は、コンピュータシステムのデータストレージに関し、より詳細には、XMLデータをユーザ定義型のフィールドとしてデータベースストアに格納し検索するシステムおよび方法に関する。
本出願は、参照により開示の全体を本明細書に組み込む、2003年10月24日に出願の米国特許出願第10/693,158号明細書の優先権を主張するものである。
本特許文献の開示の一部は、著作権保護の対象となる資材を含む。著作権所有者は、本特許文献または特許の開示が特許商標庁の特許ファイルまたは記録文書に記載された場合は、その複製に異議を申し立てるものではないが、その他の点ではいかなる著作権の権利も保有するものである。以下の表示は本文書に適用されるものである。Copyright(C)2003、Microsoft Corp.
Microsoft SQL SERVERは、広範なデータ管理並びに開発ツール、強力な抽出、変換、およびローディング(ETL)ツール、ビジネスインテリジェンス並びに分析サービス、および他の能力を提供する総合データベース管理プラットフォームである。最近、SQL SERVERの2つの改良が行われた。第1に、Microsoft Windows(登録商標).NET Framework Common Language Runtime(CLR)がSQL SERVERデータベースに統合され、第2に、User Defined Type(UDT)と呼ばれる新しいオブジェクトをCLR環境でマネージドコードを伴って生成し、データベースストアに永続させることができるようになった。
CLRはMicrosoft .NET Frameworkの心臓部であり、全ての.NETコードを実行する環境を提供する。したがって、CLR内で実行されるコードは「マネージドコード」と呼ばれる。CLRは、ジャストインタイム(JIT)コンパイル、メモリの割当と管理、タイプセーフティーの実行、例外処理、スレッド管理、およびセキュリティを含むプログラムの実行に必要とされる様々な機能およびサービスを提供する。CLRは、.NETルーチンの最初の呼出しでSQL SERVERによってロードされる。
SQL SERVERの以前のバージョンでは、データベースプログラマは、サーバ側にコードを書き込む場合はTransact−SQLを使用するように制約されていた。Transact−SQLは、国際標準化機構(ISO)米国規格協会(ANSI)で定義されているように、Structured Query Languageの拡張子である。データベース開発者は、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#などの言語を使用する計算タスクにより適したコードを書き込むことができる。
SQL SERVERは、CLR統合の他に、User Defined Types(UDT)、すなわち開発者がデータベースのスカラ型システムを拡張することができるようにする新しい機構のサポートも追加する。UDTは、アプリケーションアーキテクチャの観点から2つの重要な特典を提供する。すなわち、内部状態と外部動作の間の(クライアントとサーバの両方の)強力なカプセル化を提供し、他の関連したサーバ機能との深い統合を提供する。UDTは定義された後、列定義、変数、パラメータ、関数の結果、カーソル、トリガ、およびレプリケーションに含まれる、システム型をSQL SERVERで使用することができる全てのコンテキストで使用することができる。
データベースサーバについてUDTを定義するプロセスは以下の通りに行われる。
a)UDT生成に関するルールに従うマネージドコードでクラスを生成する
b)UDTを含むAssemblyをCREATE ASSEMBLYステートメントを使用してサーバのデータベースにロードする
c)マネージドコードUDTを公開するCREATE TYPEステートメントを使用して型をデータベースに生成する。
この時点で、UDTをテーブル定義で使用することができる。
UDT定義がマネージドコードで生成された場合、型は以下の要件を満たさなければならない。
a)Serializableとしてマークされなければならない。
b)SqlUserDefinedTypeAttributeでデコレート(decorate)されなければならない。
c)型はINullableインターフェースを実装することによってNULL認識しなければならない。
d)型は引数がないパブリックコンストラクタを持たなければならない。
e)型は、以下の方法を実装することによって、ストリングにかつそれからの変換をサポートしなければならない。
1.Public String ToString()、および
2.Public Shared <type> Parse (SqlString s)である。
参照によりその全体を本明細書に組み込む、2003年10月23日に出願の同時係属中の本願と同じ譲受人に譲渡された特許文献1、名称「System And Method For Object Persistence In A Database Store」(弁理士Docket:MSFT−2852/306819.1)には、UDTの他の特徴が記載されており、UDTについてのCLRクラス定義の分野および動作は、たとえばデータベースストアでのUDTのインスタンスのレイアウト構造を記述するストレージ属性の注釈が付けられている。具体的には、UDTを定義するCLRクラスの各フィールドに、サイズ、精度、スケールなど、型のストレージファセットを制御するストレージ属性の注釈が付けられる。一実装形態では、各フィールドに名称SqlUdtField()のカスタムストレージ属性の注釈を付けることによってこれを行うことができる。この属性は、フィールドに追加のストレージディレクティブの注釈を付ける。こうしたディレクティブは、オブジェクトがディスクに直列化された場合に実行される。さらに、CLRクラスで定義された各管理された挙動(たとえば、UDTオブジェクト上に呼び出して、たとえばフィールドの値を戻すことができるメソッドなど)にその管理された挙動への等価の構造アクセスパスを示す属性の注釈が付けられる。一実装形態では、この目的で使用されるカスタム属性は、SqlUdtProperty()と命名され、データベースサーバ(たとえばSQL SERVER)は、このカスタム属性で注釈が付けられたプロパティの実装が属性の定義の一部として指定されたフィールドを代表するとみなす。それによって、サーバが、インスタンスを生成しそれに動作を呼び出さずに、プロパティへのアクセスを構造的に最適化するようにさせる。
図1は、UDTを定義するCLRクラスの例示のコードのリスティングである。図で示したように、CLRクラスは、上記のようにSqlUdtField()およびSqlUdtProperty()カスタム属性で注釈が付けられている。具体的には、SqlUdtField()カスタム属性は、行5、8、37、および49に加えられて、それぞれ例示のUDTクラス定義のフィールドに注釈を付けている。SqlUdtProperty()カスタム属性は、行11、24に加えられて、それぞれクラスの管理された挙動に注釈を付けている。
UDTを定義付けるCLRクラスは、次いでダイナミックリンクライブラリ(dll)にコンパイルされる。次いで、コンパイルされたクラスを含むAssemblyを以下のT−SQLスクリプトコマンドを使用して生成することができる。
Figure 2007519078
次いで、以下のT−SQLスクリプトコマンドを使用してサーバにUDTを生成することができる。
Figure 2007519078
UDTがサーバ上に生成された後、以下のようにUDT型としてテーブルの属性を定義するテーブル(たとえば「MyTable」)を生成することができる。
Figure 2007519078
以下のように、新しいアイテムをテーブルに加えることができる。
Figure 2007519078
次いで、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は、クエリの対象である1つまたは複数の値を返すUDTクラスの実際のメソッド(すなわち挙動)を呼び出さなければならない。上記の同時係属中の特許出願(弁理士Docket、MSFT−2852/306819.1)で記載したように、UDTのCLRクラス定義の注釈the SqlUdtField()およびSqlUdtProperty()はデータベースサーバに使用されることによって、オブジェクトハイドレーションを必要とせずに、幾つかのUDTフィールドの値への直接構造アクセスも可能になる。
eXtensible Markup Language(XML)は、データに人間が理解できるタグでマークアップするための総称構文を提供する、ドキュメントおよびデータ表現のWorld Wide Web Consortium(W3C)承認規格である。XMLは固定セットのタグを有するため、ユーザは、タグがXML規格に準拠する限り、こうしたタグを定義付けることができる。データは、テキストマークアップに囲まれたテキストのストリングとしてXMLドキュメントに格納することができる。W3Cは、XMLの抽象データモデルをXML情報セット(XML Infoset)と呼ばれる仕様でコード化した。XML Schemasを使用して、XMLフォーマットおよびコンテンツにストラクチャを与えることもできる。XML Schemaの場合、ドキュメントのXMLデータのために、図、プラン、またはフレームワークを定義付けることができる。XMLは、ドキュメントのコンテンツを簡単に記述することができる周知のフォーマットであるが、他の非XMLフォーマットデータも同じデータベースにあることが望ましいこともある。これには、固有の非互換性のために潜在的なクエリの問題が生じる。こうした非互換性の一例は、リレーショナルデータベースにXMLコンテンツが存在することである。
既存のデータベース管理システムは、XMLデータをリレーショナルデータベースストアに格納するためのサポートを提供する。たとえば、MicrosoftのSQL SERVERは、XMLデータ型の列、変数、およびパラメータにサポートを提供する。1つまたは複数のXML列を有するテーブルを生成し、XML値をXML列に格納し、XMLスキーマ名前空間を使用してXML列に型を付け、XML列に索引を付け、XML値のクエリを行うことができる。しかし、XMLデータをこうしたインスタンスのリレーショナルデータベースに格納することは以前から可能であったが、XMLデータをマネージドコードで生成されたユーザ定義型のフィールドに埋め込むことが望ましい。本発明は、この能力を提供する。
本発明は、XMLデータをユーザ定義型(UDT)のフィールドに格納するシステムおよび方法を対象とする。
UDTの1つまたは複数のフィールドは、XMLデータ型として定義することができるが、UDTは他の非XMLフィールドも有することができる。XMLデータモデルに準拠するデータは、XMLフィールドに格納することができるが、非XMLデータは非XMLフィールドに格納される。したがって、ドキュメント順序およびドキュメント構造などXMLデータモデルのプロパティは、UDTのインスタンス内に保存される。さらに、オブジェクト挙動を表すコード(すなわちマネージドコードのオブジェクトに呼び出すことができるメソッド)をUDTに追加して、UDTのXMLフィールド並びに非XMLフィールドで動作できるようにする。それによって、フレームワークによって、XMLマークアップを有する半構造化データにビジネス論理を追加することができるようになる。さらに、XMLデータのコンテンツモデルを、任意選択でUDTのXMLフィールドに関連したXMLスキーマドキュメントを使用して記述することができる。
また、本発明により、UDTにXMLフィールドを導入するため、XMLフィールドを適したCLR型として公開する共通言語ルーチン(CLR)プログラミングモデルを提供する。これは、SqlXmlと呼ばれるクラスとしてモデル化されることが好ましい。XMLデータ型フィールドについて、SqlXmlメンバは、SqLUDTField索引内の「XmlSchemaCollection」と呼ばれる新しい属性を可能にする。SqlXmlクラスは、サーバ側のXMLデータ型へのADO.NETアクセスに有用である。
本発明の他の特徴および利点は、本発明の以下の詳細な説明および添付の図面から明らかになるであろう。
以上の発明の開示並びに以下の本発明の詳細な説明は、添付の図面と併せて読めばよりよく理解される。本発明を図で示す目的で、本発明の様々な態様の例示の実装形態が図面で示されているが、本発明は開示された特定の方法および手段に限定されるものではない。
本発明の主題を、法定要件を満たすための特異性を伴って記載する。しかし、この記載自体は本発明の範囲を限定しないものとする。むしろ本発明者らは、特許請求する主題が他の方法でも実装され、他の現在または未来の技術と併せて、本文書に記載したものと同様の様々なステップまたは要素が包含されることを企図している。さらに本明細書では、用語「ステップ」は、採用される方法の様々な側面を指すために使用されているが、この用語は、個々のステップの順序がはっきりと記載されていない場合、また記載された場合を除いて、本明細書で開示した様々なステップ中、またはステップ間の特定の順序を示していると解釈されるべきではない。
上記で述べたように、本発明は、XMLデータをユーザ定義型(UDT)のフィールドに格納するシステムおよび方法を対象とする。UDTのフィールドは、XMLデータ型として定義付けることができるが、UDTは他の非XMLフィールドも有することができる。XMLデータモデルに準拠するデータは、XMLフィールドに格納することができるが、非XMLデータは非XMLフィールドに格納される。したがって、ドキュメント順序およびドキュメント構造などXMLデータモデルのプロパティは、UDTのインスタンス内に保存される。さらに、オブジェクト挙動を表すコード(すなわちマネージドコードのオブジェクトで呼び出すことができる方法)をUDTに追加して、UDTのXMLフィールド並びに非XMLフィールドで動作できるようにする。それによって、フレームワークがビジネス論理を半構造化データに追加することができるようになる。さらに、XMLデータのコンテンツモデルを、任意選択でUDTのXMLフィールドに関連するXMLスキーマドキュメントを使用して記述することができる。
また、本発明によれば、XMLフィールドをUDTに導入するため、XMLフィールドを適したCLR型として公開する共通言語ルーチン(CLR)プログラミングモデルを提供する。これは、SqlXmlと呼ばれるクラスとしてモデル化されることが好ましい。XMLデータ型フィールドについて、SqlXmlメンバは、SqlUDTField注釈内の「XmlSchemaCollection」と呼ばれる新しい属性を可能にする。SqlXmlクラスは、サーバ側のXMLデータ型へのADO.NETアクセスに有用である。
SqlXmlクラス
本発明の一態様によれば、新しいクラスはCLRクラスのフィールド内のXMLデータのストレージをサポートするように定義される。本実装形態では、このクラスはSqlXmlと呼ばれるが、理解されるように、この特定の名前は本発明にとって重要ではない。図4は、SqlXmlクラスのメンバを記述するテーブルである。
図4で示したように、SqlXmlクラスは2つのコンストラクタをサポートする。1つのコンストラクタはその入力側でXmlReaderを受け取る。XmlReaderは、XMLデータへの高速でキャッシュされていない順方向のみの読み取りアクセスを定義するMicrosoftの.NET Framework抽象クラス(またはインターフェース)である。このコンストラクタは、SqlXmlオブジェクトがストリームのXmlReader、他のSqlXmlインスタンス、またはXmlReaderが使用可能な任意のクラスからインスタンス生成される場合に有用である。XMLコンテンツがXmlReaderインターフェースを介して読み取られる場合、整形式性の検査がコンストラクタの一部として発生する。他のコンストラクタは、入力としてストリームを受け取り、整形式性の検査をコンストラクタでスキップすべきときに使用される。他のコンストラクタも可能である。
CreateReader()メソッドは、SqlXmlの(XML)コンテンツを検索するXmlReaderを返す。XmlReaderのサポートによって、XMLコンテンツに非常に柔軟な機構が提供される。たとえばXPathDocumentまたはXPathNavigatorをサーバからのXMLデータ型値にインスタンス生成することができる。
SqlXmlクラスはメモリレスであり、同時のCreateReader()呼出しが可能である。複数のCreateReader()呼出しがXmlReaderの様々なインスタンスを返す。こうした各インスタンスが、SqlXmlオブジェクトによってカプセル化されたXMLコンテンツの始めに初期化される。それによって、SqlXmlのインスタンスを、XMLリーダの新しいインスタンスを生成することができる機能およびプロシージャに渡すことができるようになる。
SqlXmlメンバMの値を更新するには、XmlWriterを使用してストリームに書き込み、ストリームにXmlReaderをインスタンス生成し、XmlReaderまたはストリームから新しいSqlXmlオブジェクトM1をインスタンス生成する。XmlWriterは、XML勧告のW3C Extensible Markup Language(XML)1.0およびNamespacesに準拠するXMLデータを含むストリームまたはファイルを生成する(書き込む)高速のキャッシュされていない順方向のみの手段を定義する.NET Framework抽象クラス(またはインターフェース)である。XmlTextWritterは、XmlWriterインターフェースを実装する.NET Frameworkクラスである。以下はXMLストリングである。
Figure 2007519078
これを以下のC#コードフラグメントによって生成することができる。
Figure 2007519078
次いで、SqlXmlオブジェクトM1がMに割り当てられる。これは、ソースオブジェクトM1の現在の状態をMに複写する。XMLコンテンツを更新するために使用することができる、XmlWriterオブジェクトを返すCreateWriter()などSqlXmlに関する他のメソッドも可能である。
CLRクラスにおけるSqlXmlの使用
また、本発明の本実装形態によれば、CLRクラスの1つまたは複数のメンバを新しいSqlXml型として定義することができる。ネイティブCLR型バッキングSqlXmlは、XmlReaderを獲得することができるストリームを提供するものである。すなわち、ストリームには直接アクセスすることができず、XmlReaderを介してのみアクセスすることができる。それは、2つのコンストラクタもサポートしており、その1つはXmlReaderを受け取り、他方はストリームを受け取る。
図5は、SqlXmlフィールドを有するCLRクラス「Employee」の例示のプログラムコードのリスティングを示す。図で示したように、Employeeクラスは、サーバ側でプリミティブSQL型をマップする幾つかの「Sqltypes」メンバを有する。ResumeメンバはSqlXml型のものである。Resumeメンバはサーバ側でXMLデータ型によって、CLR内ではストリームによってもとに返される。どちらの場合も、XMLコンテンツはXmlReaderを介してアクセス可能である。
SqlXmlフィールドを有するユーザ定義型の生成
上記の背景技術の項で記載したように、.NETプログラミング言語のマネージドクラスからSQLのユーザ定義型を生成するには、ユーザは先ずCREATE ASSEMBLYステートメントを使用して型の定義を含むアセンブリを登録する。次いで、以下のようにCREATE TYPEステートメントを使用してuser-defined typeが生成される。
Figure 2007519078
本発明によれば、SQL user-defined type udt-nameは、UDTについてCLRクラスCのSqlXmlフィールドM1、M2、...に対応する(型なし)XMLデータ型の1つまたは複数のフィールドX1、X2、...を有する。type udt-nameのクラスCへのインスタンスの直列化および非直列化は、上記に記載し図2で示したように、通常の方法で行われる。型を生成するための通常のルールは全てこのケースに当てはまる。udt-nameのXMLフィールドは大きいバイナリSQL型と呼ばれる内部表示に格納される。
user-defined typeが生成された後、XMLフィールドのない任意のuser-defined typeと同様に、それをテーブルまたはビューの列型として、かつSQL変数およびパラメータとして使用することができる。一例として、udtEmpと呼ばれる上記で定義したEmployeeクラスに基づくUDTは以下のように生成される。
Figure 2007519078
udtEmp UDTは、fNameおよびIName用の型nvarchar(4000)のフィールドを有し、Ageフィールドへの浮動などを行う。クラスEmployeeのSqlXmlメンバのResumeは、udtEmpの型なし(すなわちどのXMLスキーマ結合もない)XMLデータ型フィールドResumeにマップされる。
正数列のID、およびudtEmp列のEmployeeを有するemployee table tabEmployeeは、以下のように生成することができる。
Figure 2007519078
テーブル生成により、user-defined type udtEmpをバインドするスキーマがセットアップされる。2つの列に値を与えることによってテーブルtabEmployeeに行を挿入することができる。EmpColのResumeフィールドに挿入されたXML値は、挿入時に整形式性について検査される。
インスタンスレベルで、SqlXml member Employee.ResumeがフィールドEmpCol.Resumeに格納された状態で、EmployeeオブジェクトがudtEmpのインスタンスに直列化される。逆に、EmpCol.Resumeフィールドの値をEmployee.Resumeメンバにロードして、EmpColのインスタンスがEmployeeオブジェクトに非直列化される。
さらなる例で、以下のT-SQLステートメントが実行されると仮定する。
Figure 2007519078
意味論的には、(型udtEmpの)列EmpColの各値がCLRの型Employeeのオブジェクトに非直列化される。具体的には、XMLデータ型フィールドEmpCol.ResumeがSqlXml member Employee.Resumeにロードされ、それがXMLデータ型としてT-SQL層に返される。一つの最適化は、EmpCol.Resumeの値を直接抽出し、Employee.Resumeメンバの値を抽出するための非直列化を回避することである。
図6は、.NETプログラミング言語でEmployeeクラスの新しいインスタンスを生成し、それを取り込む方法を示す例示のプログラムコードのリスティングを示す。この例では、新しいEmployeeオブジェクトが生成される。その非XMLフィールドは、通常の方法で値が割り当てられる。XMLフィールドResumeでは、XmlTextReaderリーダがストリング値に生成される(「XML content here」)。次いで、新しいSqlXmlオブジェクトがリーダにインスタンス生成されResumeフィールドに割り当てられる。上記に記載したように、XmlTextReaderは、XmlReaderインターフェースを実装する.NET Frameworkクラスである。
XMLコンテンツは、XmlReaderを使用してResumeフィールドの内部ストレージに複写される。リーダを介した検索によってXMLコンテンツの整形式性検査が発生する。XmlReaderを獲得することができる任意のオブジェクトで十分間に合う。したがって、ファイルから読み取り、または他のSqlXmlインスタンスからXmlReaderを獲得することができる。
図7は、XMLコンテンツを解析するためにEmployeeクラスのインスタンスからXmlReaderを獲得する方法を示す例示のプログラムコードのリスティングを示す図である。このリスティングでは、Emp.Resume.CreateReader()は、XMLコンテンツを検索することができる(非検証)XmlReaderを返す。オブジェクトリーダ1およびリーダ2は、XMLコンテンツの始めに初期化される。リーダ1および2は、SqlXmlがメモリレスであるため、互いに独立している。
図8は、.NETプログラミング言語でEmployeeクラスのインスタンスを更新する方法を示す例示のプログラムコードのリスティングを示す。EmployeeオブジェクトEmpの非XMLフィールドは、通常の方法で更新される。新しいXMLコンテンツ(「new XML content here」)がストリームに書き込まれ、XmlReaderリーダがストリームに作成され、新しいSqlXmlオブジェクトがリーダに作成される。作成されたSqlXmlオブジェクトは、対応するフィールドEmp.Resumeに割り当てられる。それによって、XMLコンテンツをEmp.Resumeに複写させる。これは「ブラインド」書き込みの一例である。インクリメンタル更新では、アプリケーションは、Emp.ResumeからXMLリーダを獲得し、それから読み取り、更新されたコンテンツをXMLライタに書き込むことができる。更新コンテンツは、Emp.Resumeの現在のコンテンツおよびその修正(たとえば新しい電話番号の追加)に基づく。
型付きXML
本発明のさらなる態様によれば、UDTのXMLフィールドをサーバ側のXMLスキーマコレクションに制限することができる。XMLスキーマコレクションは、リレーショナルデータベースの同じ列に格納すべき様々なXML Schemaに関連するデータインスタンスを可能にするSQL SERVERの新しい概念である。本発明によれば、XMLスキーマコレクションの概念は、上記のように、SqlXmlを定義したUDTのフィールド(すなわちXMLデータを含むように定義されたフィールド)に拡張される。
XMLスキーマコレクションに関して、さらに背景技術によれば、XMLがテキストドキュメント用のメタマークアップ言語であることが背景技術の項から思い出される。データは、テキストのストリングとしてXMLドキュメントに含まれ、データはデータを記述するテキストマークアップで囲まれる。データおよびマークアップの特定のユニットは要素と呼ばれる。XML仕様によって、このマークアップが従うべき正しい構文が定義される。すなわち、要素がタグによって区切られる方法、タグの外見、要素に容認可能な名前、属性が配置される場所などである。
XMLは、XMLを定義することができる要素では柔軟であるが、他の多くの側面では厳密なものである。要素はXMLタグの配置、タグが出現する場所、正当な要素名、属性を要素に付ける方法などを規制する文法をXMLドキュメントに提供する。この文法は、全てのXMLドキュメントを読んで理解することができるXMLパーサーの開発を可能にするのに十分特有のものである。この文法にかなうドキュメントは、整形式性があると言われる。
相互運用性を向上させるには、個人または組織が一定のタグだけを使用することに同意してもよい。こうしたタグセットは、XMLアプリケーションと呼ばれる。XMLアプリケーションは、MICROSOFT WORDまたはMICROSOFT EXCELなどのソフトウェアアプリケーションではない。ベクトルグラフィックス、財務データ、料理法、または出版業など特定の目的のためにXMLの機能性の向上をもたらすのはタグセットである。
XMLスキーマは、XMLアプリケーションの1つの型であり、すなわち特定のXML語彙に準拠するドキュメントの許可されたコンテンツを記述することができるものである。たとえば、本の出版社を考えてみる。出版社は、XMLアプリケーションをそのビジネスに使用して、XMLアプリケーションが(本、販売、顧客などの)データを他の出版社、著者、および顧客に提供する場合に、彼らが業界で標準のXMLアプリケーションによってもたらされる機能性の向上から利益を得るようにすることができる。さらに、出版社は、本についてXMLスキーマを採用して、出版社のコンピュータ(および自分の仲間のコンピュータ)が本に関する情報にアクセスするたびに同じ情報にアクセスするようにすることができる。情報は、情報が全ての本について一様であるようにXMLスキーマによって構成され制約される。
背景技術でさらに述べたように、現在では、SQL SERVERなどリレーショナルデータベースは、XMLデータを任意の他のデータと同様にリレーショナルテーブルに格納する能力を提供する。たとえば、1つまたは複数のXML列を有するテーブルを生成し、XML値をこれらの列に格納し、XML列に索引を付け、これらの列のXML値をクエリすることができる。さらに、XMLスキーマを使用してXML列を「型付き」にし、その列のXMLデータ値をスキーマに準拠させることができる。所与のXMLスキーマに準拠するXMLデータ値がリレーショナルデータベースで見つけられた場合、データはスキーマの輪郭(contour)に従ってアクセスされ、その結果、データを有効に解釈することができる。
しかし、1つだけではなく幾つかのスキーマに準拠するXMLデータ値をリレーショナルデータベースの同じ列に格納しようとすると問題が起きる。1つの値が、本の題名、本の著者、出版社、著作権年などを特定する本に関するXMLデータかもしれない。別の値は、DVDの題名、俳優および女優、監督、ジャンル、ランキング、公開された年などを特定するDVDに関するXMLデータかもしれない。本とDVDの両方を、全メディア、すなわち本とDVDに関する決定の実行に関連するデータ処理効率のために、同時に一定の列に格納することが望ましいと仮定すると、列のXMLデータに関するルールを理解して従うにはどのスキーマを使用すべきであるかという疑問が生じる。以前は、1つのスキーマに準拠するデータだけを単一の列に格納することができた。列を識別するために使用されるスキーマは、列のトップで識別され、識別されたスキーマに準拠しないデータインスタンスはどれもエラーを発生させたであろう。
XMLスキーマコレクションの新しい概念では、複数の異なるスキーマに関連するXMLデータをXMLスキーマコレクションオブジェクトを介してリレーショナルデータベースの同じ列に格納することができるようにすることによってこの問題が解決される。XMLスキーマコレクションは、XMLスキーマ名前空間用コンテナとして働く第1クラスSQL SERVERオブジェクトである。ユーザは、XMLスキーマコレクションを使用してXML列、パラメータ、オブジェクト変数に制約を与えることができる。それによって、ユーザはXMLスキーマ名前空間のいずれかに準拠するXMLデータのインスタンスに制約を与えるXMLスキーマコレクションに格納することができるようになる。
したがって、XMLスキーマコレクションオブジェクトは、XMLスキーマ名前空間用コンテナである第1クラスSQLオブジェクトである。非限定的な一実装形態では、それは3つの部分の名前によって識別される。XMLスキーマコレクションに対するSQL識別子の範囲は、リレーショナルスキーマであり、その中で識別子が生成される。各XMLスキーマコレクションは、複数のXMLスキーマ名前空間ユニバーサルリソース識別子(URI)を含むことができる。XMLスキーマ名前空間はXMLスキーマコレクションオブジェクト内で一意のものであり、ユーザはXMLスキーマコレクションを使用してXML列に制約を与えることができる。それによって、ユーザは、ドキュメントをXMLスキーマコレクションに属するが潜在的に関連しないXMLスキーマに対してドキュメントに制約を与えることができる。
上記で述べたように、本発明の一態様によれば、XMLスキーマの概念は、UDTのフィールドまで広げられる。すなわち、UDTのXMLフィールドをサーバ側のXMLスキーマコレクションにバインドすることができる。UDTのXMLフィールドをサーバ側のXMLスキーマコレクションにバインドすることは、XMLフィールドの各インスタンスがスキーマコレクションのXMLスキーマの1つによって有効であることを指す。さらに、ストレージはXMLスキーマに基づいて最適化されるが、XMLデータ型メソッドを使用するクエリは型推論のためのXMLスキーマを使用して最適化される。
以下は.NET言語の型付XMLをサポートする要件である。第1に、クラスメンバを型付けるXMLスキーマを実行時ではなくクラス定義時に指定することができる。すなわち、定義は宣言されなければならない。第2に、XMLリーダに関連するXMLスキーマセットはダイナミックセットでなければならない。すなわち、セット内のスキーマを修正する(たとえば、Windows(登録商標)シェルのカスタムプロパティの生成に対応する新しい要素を追加する)ことができる。スキーマからの要素の削除を許可しなければならない。また、新しいXMLスキーマをスキーマセットに追加する(たとえばPowerPointなど新しくインストールしたアプリケーションがそれ自体のスキーマをスキーマセットに追加する)こともできる。さらに、スキーマをスキーマセットから除去する(たとえばPowerPointをアンインストールし、そのスキーマをXMLスキーマコレクションからドロップさせる)ことができる。スキーマを新しいバージョンと交換することもできる。
UDTのXMLフィールドをサーバ側のXMLスキーマコレクションにバインドするサポートを行うため、本発明の本実装形態では、「XmlSchemaCollection」と呼ばれ、その値がストリングである新しい属性を、背景技術の項で論じたSqlUDTField注釈を使用してSqlXmlメンバを指定することができる。この属性の値は、UDTの対応するXMLフィールドに型を付けるサーバ側のXMLスキーマコレクションの名前を示す。これは、(複数パート名とは対照的に)1パート名であり、それによってクラス定義を任意のデータベースおよび任意のリレーショナルスキーマと共に使用する柔軟性が与えられる。ネイティブCLRコンテキストでは、SqlXmlメンバに関するSqlUDT注釈は無視される。あるいは、データベース、リレーショナルスキーマ、およびXMLスキーマコレクション名を指定する3パート名でもよい。
本実装形態では、「XmlSchemaCollection」はSqlXmlメンバに許可された唯一の属性であり、他の属性が指定された場合、その属性が許可されない通常のエラーになる。他の属性をこのドキュメントで許可することができる。「XmlSchemaCollection」属性を指定するSqlXmlメンバMの構文は以下の通りである。
Figure 2007519078
「XmlSchemaCollection」属性は、SqlXmlメンバMと任意のXMLスキーマのバインディングを生じない。アプリケーションがMから検証XmlReaderを獲得することを望む場合、アプリケーションはXMLスキーマを検証XmlReaderと関連付ける責任を有する。すなわち、SqlXmlクラスは、「XmlSchemaCollection」属性が存在しても、検証XmlReaderではなくMに関する非検証XmlReaderを引き続き提供する。あるいは、属性によってXMLスキーマのバインディングを発生させ、検証リーダを返すことができる。
「XmlSchemaCollection」属性の値として指定された名前XML-Schema-Collection-Nameを有するXMLスキーマコレクションはサーバのメタデータに存在しなければならない。具体的には、UDTudt-nameが生成されたのと同じリレーショナルスキーマに存在しなければならない。スキーマバインディングは、udt-nameから「XML-Schema-Collection-Name」に確立される。XML-Schema-Collection-Nameが存在しない場合、CREATE TYPEステートメントはuser-defined type udt-nameを生成することができない。
本実装形態では、「"XmlSchemaCollection」属性について同じ値を有する2つのSqlXmlメンバがサーバ側でXMLスキーマコレクションを共用する。それによって、アプリケーションがストレージを最適化することができる。この設計はより一般的であり、XMLスキーマコレクションを複数のアセンブリの複数のクラスの複数のメンバで共用することができるようになる。
CLRクラスのインスタンスは、「XmlSchemaCollection」属性仕様を有するSqlXmlメンバを含む全てのクラスメンバについて通常の方法で直列化される。こうしたSqlXmlメンバはUDTインスタンスの型付XMLフィールドに格納される。すなわち、XMLスキーマコレクションに対する検証が挿入およびデータ修正中に発生する。
UDT直列化では、各SqlXmlメンバのXMLコンテンツだけが直列化され、XmlSchemaSetのXMLスキーマは直列化されない。XMLスキーマは、サーバ側で個別にXMLスキーマコレクションに追加され、またはそれから除去されなければならない。
非直列化中に、UDTのフィールドがCLRクラスの対応するメンバにロードされる。型付XMLフィールドについて、インスタンスデータがSqlXmlオブジェクトとして公開される。関連するXMLスキーマコレクションは使用されない。ユーザは、以下で論じるように、XMLスキーマコレクションをクライアント側のXmlSchemaSetにロードすることができる。
図9は、「XmlSchemaCollection」属性の使用を示すプログラムコードのリスティングの一例である。図9の定義では、user-defined type udtTypedEmpでXMLフィールド「Resume」に型を付けることが望まれていると仮定する。Sq1UDTFie1d注釈は、UDTのTypedEmployee.TypedResumeに対応するXMLフィールドに型を付けるサーバ側のXMLスキーマコレクション名「myEmployeeSchema」を指定する。
以下の操作順序は、型付XMLフィールドを有するUDTを生成するために使用される。
Figure 2007519078
XML schema collection myEmployeeSchemaは、user-defined type udtTypedEmployeeが生成された場合に、さもなければuser-defined typeが生成できなかった場合に、サーバ側に存在しなければならない。
XMLスキーマ検証
本実装形態では、XML Schema Document(XSD)検証は、XMLコンテンツが検証XmlReaderを介して検索された場合、またはXMLコンテンツが検証XmlWriterを使用して書き込まれた場合に、クライアント側で行われる。本実装形態では、サーバ側では、XSD検証はUDTインスタンスが列に挿入され、または更新された場合に行われる。したがって、この実装形態では、新しいSqlXmlオブジェクトが非検証XmlReaderを介して作成され、指定された「XmlSchemaCollection」属性を有するSqlXmlメンバに割り当てられた場合に、XSD検証が発生しない。
さらなる例では、開発者または他のユーザがクライアント側の検証を行わずにTypedEmployeeクラスの新しいインスタンスを生成することを望むことができる。この場合、プログラムコードは、SqlUdt注釈のないSqlXmlメンバのものと正確に同じものである(図6を参照)。しかし、クライアント側でXMLコンテンツの検証が望まれる場合、図10の例示のプログラムコードのリスティングで示された方法で行うことができる。この場合は、XmlSchemaSet mySchemaSetが生成されて取り込まれ、ストリームを介して検証をするXmlWriter valWtrを生成するために使用される点で、クライアント側の検証を行わない場合とは異なる。valWtrを介して書き込まれたXMLコンテンツはmySchemaSetに従って検証される。ストリームから獲得された非検証XmlReaderリーダを使用して、newEmp.TypedResumeに割り当てるためのSqlXmlの新しいインスタンスが作成される。理解されるように、コードを書き込む他の方法もある。たとえば、検証リーダを検証ライタの代りにクライアント側の検証に使用することができる。
本実装形態では、XML Schema検証の他の態様により、クラス定義から「XmlSchemaCollection」属性で指定されたXMLスキーマコレクション名を獲得することができる。図11の例示のプログラムコードのリスティングは、これを行う方法を示す。図で示したように、「XmlSchemaCollection」属性以外にXML固有のものが存在しない。
図11で示したように、XMLスキーマコレクション名がクラス定義から知られた後、XMLスキーマコレクションをサーバから検索してXmlSchemaSetオブジェクトに取り込むことができる。このオブジェクトを検証XmlReaderまたはXmlWriterの生成に使用される。図12の例示のプログラムコードのリスティングは、この機構を示す。
XMLスキーマコレクションをサーバから検索するには、データベース接続が必要とされる。処理中プロバイダには、SqlContextオブジェクトから獲得される。処理中でないプロバイダには、アプリケーションが(データが検索されるものとは異なってもよい)接続を提供する。SQLステートメントは、パラメータとして指定されたXMLスキーマ名を使用してカタログビューで実行される。組み込み関数XML SCHEMA COLLECTION()を使用してXMLデータ型列のスキーマドキュメントを検索し、それがSqlXmlクラスに非直列化される。各スキーマドキュメントがSqlXmlオブジェクトから獲得されたXmlReaderを介してXmlSchemaSetオブジェクトに追加される。
SqlXml member TypedEmployee.TypedResumeから非検証リーダを獲得するため、プログラムコードは、SqlUdt注釈がないSqlXmlメンバに関するものと同じである(図7を参照)。図13は、検証XmlReaderを獲得する方法を示す例示のプログラムコードのリスティングである。この例では、検証XmlReader valRdrが、SqlXml member TypedEmployee.TypedResumeから獲得された非検証リーダnonValRdrを介して生成される。valRdrから何かが読み取られる前に、XmlSchemaSet object mySchemaSetが追加される。検証型はXSDに指定される。検証されたコンテンツを次に検証リーダを介して読み取ることができる。
既存のXML値を更新する場合、本実装形態では、SqlUdt注釈なしのSqlXmlメンバについてのものと同じコードを使用してクライアント側の検証なしでSqlXmlメンバを更新することができる(図8を参照)。図14の例示のプログラムコードのリスティングは、クライアント側の検証で更新を行う方法を示す。XMLスキーマコレクションは、サーバからXmlSchemaSet object mySchemaSet内に検索される。これを使用して、ストリーム上に検証XmlWriter valWtrが生成される。XMLコンテンツがvalWtrに書き込まれ、非検証XmlReaderがストリームから獲得され、TypedEmp.TypedResumeにリーダから作成された新しいSqlXmlオブジェクトが割り当てられる。
UDTのXMLフィールドの操作
また本発明によれば、UDTのXMLフィールドにクエリし更新することが可能である。たとえば、以下のように、employee table tabEmployee(上記の例を参照)のXMLフィールドResumeにクエリすることができる。
Figure 2007519078
式EmpCoLResumeは、UDTのXMLデータ型フィールドを導き、XMLデータ型の「クエリ」および「値」の関数を使用してXMLインスタンスにドリルダウンすることができる。非XMLフィールドは、通常の方法でアクセスされる。このクエリは、user-defined type udtEmpの関数AnnualSalary()の呼出しも示す。
更新の一例として、ファーストネームが「John」である従業員のジップコードを98052に変更すると仮定する。この更新は、以下のステートメントを使用して行うことができる。
Figure 2007519078
以上で示したように、本発明は、全てユーザ定義型(UDT)の単一のインスタンス内の構造化、半構造化、および非構造化データをモデル化するフレームワークおよび方法論を提供する。具体的には、本発明は、XMLデータモデルをUDTのフィールドに拡張する。したがって、ドキュメント順序およびドキュメント構造などXMLデータモデルのプロパティを、UDTのインスタンス内に保存することができる。さらに上記に記載したように、XMLデータのコンテンツモデルを、任意選択でUDTのXMLフィールドに関連するXMLスキーマドキュメントを使用して記述することができる。
さらに、UDTがマネージドコードのクラスによって定義されているため、オブジェクト挙動を表すコード(すなわちマネージドコードのオブジェクトを呼び出すことができるメソッド)をUDTに追加して、UDTのXMLフィールド並びに非XMLフィールドで動作できるようにする。それによって、フレームワークがビジネス論理をXMLデータに追加することができるようになる。図15は、挙動をUDTを定義するCLRクラスに追加して、型SqlXmlを定義するフィールドで挙動を実装することができる方法を示す例示のコードのリスティングである。この例では、特定のeXstensible Stylesheet Language(XSL)ファイルに従ってResume(XML)データを変換する挙動が追加される。図で示したように、挙動は、クラスEmployeeに追加されたメソッドTransformXml()によって実装される。変換された値は、XMLデータ型SqlXmlとして返される。図の下部でSQLステートメントによって示されているように、このメソッドをEmployeeクラスから生成されたUDTのインスタンスに呼び出すことができる。したがって、この例で示されているように、XMLデータを含むUDTのフィールドで挙動を実装することができる。実装することができる挙動は実質的に無限であり、ビジネス論理をXMLデータに追加するための強力なツールが提供される。
上記から明らかなように、本発明の様々なシステム、方法、および態様の全てまたは一部を、ハードウェア、ソフトウェア、またはその組合せで実装することができる。ソフトウェアで実装される場合、本発明の方法および装置、または本発明の幾つかの態様またはその一部をプログラムコード(すなわち命令)の形態で実装することができる。このプログラムコードは、フロッピー(登録商標)ディスケット、CD−ROM、CD−RW、DVD−ROM、DVD−RAM、磁気テープ、フラッシュメモリ、ハードディスクドライブ、または任意の他の機械可読ストレージメディアを非限定的に含む、磁気、電気、または光ストレージメディアなど、コンピュータ可読メディアに格納することができる。プログラムコードがロードされ、コンピュータまたはサーバなどの機械によって実行された場合、機械は本発明を実装するための装置になる。プログラムコードを実装するコンピュータは、通常、プロセッサ、(揮発性および不揮発性メモリおよび/またはストレージ要素を含む)プロセッサによって読み取り可能なストレージメディア、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを備える。プログラムコードは、高レベル手続きまたはオブジェクト指向プログラミング言語で実装することができる。あるいは、プログラムコードはアセンブリまたは機械言語で実装することもできる。いずれの場合も、言語はコンパイルまたは翻訳された言語でもよい。
本発明は、ローカルエリアネットワーク、広域ネットワーク、インターネットまたはイントラネットを含むネットワーク上で、電気配線またはケーブル、光ファイバを介するなど、ある伝送メディアを介して、または他の形態の伝送によって伝送されるプログラムコードの形態でも実装することができ、プログラムコードが、コンピュータなど機械によってロードされ実行される場合、その機械は、本発明を実装するための装置になる。
汎用プロセッサで実装される場合、プログラムコードをプロセッサと組み合わせて、特定の論理回路に類似して動作する独自の装置を提供することができる。
さらに、本発明は、コンピュータネットワークの一部として、または分散コンピューティング環境で使用することができる、任意のコンピュータ、または他のクライアントもしくはサーバデバイスと共に実装することができる。この点で、本発明は、任意の数のメモリまたは記憶装置、および任意の数のアプリケーション並びに任意の数の記憶装置またはボリュームにわたって生じ、本発明による、データベースストアに永続するオブジェクトのためのプロセスと併せて使用することができるプロセスを有する任意のコンピュータシステムまたは環境に適している。本発明は、リモートまたはローカルストレージを有する、ネットワーク環境または分散コンピューティング環境に配置されたサーバコンピュータおよびクライアントコンピュータを有する環境に適用することができる。本発明は、プログラミング言語機能、リモートまたはローカルサービスと併せて、情報を生成し、送受信するための翻訳および実行能力を有する独立型コンピューティングデバイスに適用することもできる。
分散コンピューティングは、コンピューティングデバイスおよびシステム間の交換によって、コンピュータリソースおよびサービスの共用を容易にするものである。こうしたリソースおよびサービスには、情報の交換、キャッシュストレージ、およびファイル用ディスクストレージが含まれるが、それだけに限定されない。分散コンピューティングは、ネットワークの接続性をうまく利用して、クライアントがその集合的パワーを活用して企業全体に利益をもたらすことができるようにする。この点で、様々なデバイスが、本発明のオブジェクト永続メソッドと共に行われる処理に関係するアプリケーション、オブジェクト、またはリソースを有することができる。
図16は、例示のネットワークまたは分散コンピューティング環境の概略図を提供する。この分散コンピューティング環境には、コンピューティングオブジェクト10a、10bなど、およびコンピューティングオブジェクトまたはデバイス110a、110b、110cなどが含まれる。こうしたオブジェクトは、プログラム、メソッド、データストア、プログラマブルな論理などを含むことができる。オブジェクトは、PDA、テレビジョン、MP3プレーヤ、パーソナルコンピュータなど同じまたは異なるデバイスの一部を含むことができる。各オブジェクトは、通信ネットワーク14によって他のオブジェクトと通信することができる。このネットワーク自体は、図16のシステムにサービスを提供する他のコンピューティングオブジェクトまたはコンピューティングデバイスを含むことができ、それ自体が複数の相互接続ネットワークを表すことができる。本発明の一態様によれば、各オブジェクト10a、10bなど、または110a、110b、110cなどは、API、または他のオブジェクト、ソフトウェア、ファームウェア、および/またはハードウェアを活用して、本発明のオブジェクト永続メソッドの実装に使用されるプロセスの使用を要求することができるアプリケーションを含むことができる。
理解されるように、110cなどオブジェクトは、他のコンピューティングデバイス10a、10bなど、または110a、110bなどでホストされてもよい。したがって、図で示した物理環境では、接続されたデバイスがコンピュータとして示されているが、こうした図は単に例示であり、代替としてPDA、テレビジョン、MP3プレーヤなど様々なディジタルデバイス、インターフェース、COMオブジェクトなどソフトウェアオブジェクトを備えた物理環境の図を示しまたは説明することもできる。
分散コンピューティング環境をサポートする多様なシステム、コンポーネント、およびネットワーク構成がある。たとえば、コンピューティングシステムを共に配線式または無線システムによって、ローカルネットワークまたは広域分散ネットワークによって接続することができる。現在、ネットワークの多くがインターネットに結合されており、インターネットは広範に分散されたコンピューティングのインフラストラクチャを提供し、多様なネットワークを取り囲んでいる。任意のインフラストラクチャを本発明に関連付けられた例示の通信に使用することができる。
通常インターネットは、コンピュータネットワーキングの技術分野で周知の、一式のプロトコルTCP/IPを使用するネットワークおよびゲートウェイのコレクションを指す。TCP/IPは、「Transmission Control Protocol/Internet Protocol」の頭字語である。インターネットは、ユーザが1つまたは複数のネットワークを介して対話し情報を共用することができるようにするネットワーキングプロトコルを実装するコンピュータによって相互接続された地理的に分散されたリモートコンピュータネットワークのシステムとして説明することができる。こうした広範囲に及ぶ情報を共有するため、インターネットなどリモートネットワークは、全般的に開放型システムに発展しており、そのため、開発者は、本質的に制限されずに専用のオペレーションまたはサービスを行うためのソフトウェアアプリケーションを設計することができる。
したがって、ネットワークインフラストラクチャによって、クライアント/サーバ、ピアツーピア、またはハイブリッドアーキテクチャなどネットワークトポロジのホストが可能になる。「クライアント」は、そのクラスまたはグループが関係しない他のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。したがって、計算ではクライアントはプロセスである。すなわち概して他のプログラムによって提供されるサービスを要求する命令またはタスクのセットである。クライアントプロセスは、他のプログラムまたはサービス自体に関する作業の詳細を「知る」必要なく、要求したサービスを使用する。クライアント/サーバアーキテクチャ、具体的にはネットワークシステムでは、クライアントは通常他のコンピュータ、たとえばサーバによって提供される共用ネットワークリソースにアクセスするコンピュータである。図16の例では、コンピュータ110a、110b、などが、クライアントであり、コンピュータ10a、10bなどがサーバであると考えることができるが、環境によってどのコンピュータがクライアント、サーバ、またはその両方であると考えてもよい。任意のこうしたコンピューティングデバイスが、本発明のオブジェクト永続技法に関係する方法でデータを処理することができる。
サーバは通常、インターネットなど、リモートまたはローカルネットワークを介してアクセス可能なリモートコンピュータシステムである。クライアントプロセスは、第1のコンピュータシステムでアクティブになり、サーバプロセスは第2のコンピュータシステムでアクティブになることができ、互いに通信メディアを介して通信し、それによって分散された機能を提供し、複数のクライアントがサーバの情報収集能力を利用することができるようになされている。本発明の永続機構に従って使用される任意のソフトウェアオブジェクトを複数のコンピューティングデバイスに分散することができる。
1つまたは複数のクライアントおよび1つまたは複数のサーバは、プロトコル層で提供される機能を使用して互いに通信することができる。たとえば、HyperText Transfer Protocol(HTTP)はWorld Wide Web(WWW)、または「the Web」と共に使用される一般のプロトコルである。通常、Internet Protocol(IP)アドレスなどコンピュータネットワークアドレス、またはUniversal Resource Locator(URL)など他のリファレンスを使用して、サーバまたはクライアントコンピュータを互いに識別することができる。ネットワークアドレスはURLアドレスと呼ぶこともできる。任意の使用可能な通信メディアを介して通信を提供することができる。
したがって、図16は本発明を使用することができる、サーバがネットワーク/バスを介してクライアントコンピュータと通信している、例示のネットワーク化または分散環境を示す。本発明によれば、ネットワーク/バス14は、ポータブルコンピュータ、ハンドヘルドコンピュータ、シンクライアント、ネットワーク化アプリケーション、またはVCR、TV、オーブン、ライト、ヒータなど他のデバイスなどの幾つかのクライアントまたはリモートコンピューティングデバイス110a、110b、110c、110d、110eなどを備えた、LAN、WAN、イントラネット、インターネット、または任意の他のネットワークメディアでもよい。したがって本発明を、永続オブジェクトを維持することが望ましいものに関連して任意のコンピューティングデバイスに適用することができることが企図されている。
たとえば、通信ネットワーク/バス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、およびファイルまたはデータストリームを格納してファイルまたはデータストリームの一部をダウンロードし、伝送し、または移送することができる様々なタイプのストレージ要素またはオブジェクトへの接続またはアクセスを備えることができる。どのコンピュータ1Oa、10b、110a、110bなどもデータベース、メモリ、または本発明により処理されたデータを格納する他のストレージ要素20の保守および更新に対応することができる。したがって、本発明は、コンピュータネットワーク/バス14にアクセスし対話することができるクライアントコンピュータ110a、110bなど、およびクライアントコンピュータ110a、110bなどと対話することができるサーバコンピュータ10a、10bなど、および他の同様のデバイス、並びにデータベース20を有するコンピュータネットワーク環境で利用することができる。
図17および以下の論述は、本発明を実施することができる適切なコンピューティングデバイスの簡単な全般的説明を提供するものである。たとえば、図16で示した任意のクライアントおよびサーバコンピュータまたはデバイスはこの形態をとることができる。しかし理解されるように、ハンドヘルド、ポータブル、および他の全種類の、すなわちコンピューティング環境のどこでもデータを生成、処理、受信かつ/または送信することができるコンピューティングデバイスおよびコンピューティングオブジェクトは、本発明と共に使用されることが企図されている。汎用コンピュータを以下に記載するが、これは単なる一例であり、本発明は、ネットワーク/バス相互運用性および対話を有するシンクライアントで実装することもできる。したがって、本発明は、たとえばクライアントデバイスが、電気器具に配置されたオブジェクトなど、ネットワーク/バスに対する単にインターフェースとして働くネットワーク環境に、非常に小さい、または最小のクライアントリソースが関与するネットワーク化されホストされたサービスの環境で実装することができる。本質的に、データを格納し、そこからデータを検索し、または他のコンピュータに伝送することができる場所が、本発明のオブジェクト永続メソッドの操作に望ましい、または好ましい環境である。
必ずしも必要ではないが、本発明は、デバイスまたはオブジェクトのサービスの開発者が使用するための、かつ/または本発明と共に動作するアプリケーションまたはサーバソフトウェアに含まれた、オペレーティングシステムを介して実装することもできる。ソフトウェアは、クライアントワークステーション、サーバ、または他のデバイスなど、1つまたは複数のコンピュータによって実行されるプログラムモジュールなど、コンピュータで実行可能な命令の汎用コンテキストで記述することができる。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データストラクチャなどが含まれる。通常、プログラムモジュールの機能を様々な実装形態で望まれるように組合せ、または分散することができる。さらに、本発明は、他のコンピュータシステム構成およびプロトコルで実装することができる。本発明と共に使用するのに適した他の周知のコンピューティングシステム、環境、および/または構成には、パーソナルコンピュータ(PC)、現金自動預け払い機、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルな消費者電子装置、ネットワークPC、電気器具、ライト、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどが含まれるが、それだけに限定されない。
図17は、本発明を実装することができる、適切なコンピューティングシステム環境100の一例を示す。上記で明確に記載したが、コンピューティングシステム環境100は適したコンピューティング環境の単なる一例であり、本発明の使用または機能性の範囲のいかなる限定も示唆するものではない。コンピューティング環境100は、例示の操作環境100で示したコンポーネントの任意のものまたはその組合せに関するいかなる依存性または要件も有していないと考えられるべきである。
図17を参照すると、本発明を実施するための例示のシステムには、コンピュータ110の形態の汎用コンピューティングデバイスが含まれる。
コンピュータ110のコンポーネントには、処理装置120、システムメモリ130、およびシステムメモリを含む様々なシステムコンポーネントを処理装置120に結合するシステムバス121が含まれるが、それだけに限定されない。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および任意の多様なバスアーキテクチャを使用するローカルバスを含む、任意の幾つかのタイプのバス構造でもよい。一例であって限定するものではないが、こうしたアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、および(Mezzanineバスとしても知られている)Peripheral Component Interconnect(PCI)バスが含まれる。
コンピュータ110は、通常、多様なコンピュータ可読メディアを含む。コンピュータ可読メディアは、コンピュータ110でアクセスすることができ、揮発性と不揮発性メディア、リムーバブルとノンリムーバブルメディアの両方を含む任意の使用可能なメディアでもよい。一例であって限定するものではないが、コンピュータ可読メディアは、コンピュータストレージメディアおよび通信メディアを含むことができる。コンピュータストレージメディアには、任意の方法または技法で実装されてコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための揮発性と不揮発性、リムーバブルとノンリムーバブルメディアの両方が含まれる。コンピュータストレージメディアには、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技法、CD−ROM、ディジタルビデオディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは所望の情報を記憶するのに使用することができ、コンピュータ110によってアクセス可能な任意の他のメディアが含まれるが、それだけに限定されない。通信メディアは通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の輸送機構などの変調データ信号の他のデータを実装し、任意の情報転送メディアを含む。用語「変調データ信号」は、1つまたは複数の特性のセットを有する信号、または情報を信号に復号化するように変更された信号を指す。一例であって限定するものではないが、通信メディアには、配線式ネットワークまたは直接配線接続など配線式メディア、および音響、RF、赤外線、および他の無線メディアなど無線メディアが含まれる。上記の任意の組合せもコンピュータ可読メディアの範囲に含まれる。
システムメモリ130は、読み取り専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132など揮発性および/または不揮発性メモリの形態のコンピュータストレージメディアを含む。始動中などにコンピュータ110内の要素の間で情報を転送する助けをする基本ルーチンを含む基本入出力システム133(BIOS)は、通常、ROM131に格納される。RAM132は、通常、処理装置120によって即座にアクセス可能、かつ/または現在作動中のデータおよび/またはプログラムモジュールを含む。
一例であって限定するものではないが、図17は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110は、他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータストレージメディアを含むこともできる。図8は、単に一例として、ノンリムーバブルな不揮発性磁気メディアから読み取りそれに書き込むためのハードディスクドライブ141、リムーバブルな不揮発性磁気ディスク152から読み取りそれに書き込むための磁気ディスクドライブ151、およびCD ROM、DVD−RWまたは他の光メディアなどリムーバブルな不揮発性光ディスク156から読み取りそれに書き込むための光ディスクドライブ155を示す。例示の動作環境で使用することができる他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータストレージメディアには、限定的ではないが、磁気テープカセット、フラッシュメモリカード、ディジタルビデオディスク、ディジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれる。ハードディスクドライブ141は通常、インターフェース140などノンリムーバブルメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は通常、インターフェース150などリムーバブルメモリインターフェースを介してシステムバス121に接続される。
上記で論じ図17で示した、ドライブ、およびその関連するコンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ110用の他のデータの記憶域を提供する。図17では、たとえば、ハードディスクドライブ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、同位デバイスまたは他の共通ネットワークノードでもよく、図17ではメモリストレージデバイス181だけが示されているが、通常はコンピュータ110について上記に記載した要素の多くまたは全てを含む。図17で示した論理接続には、ローカルエリアネットワーク(LAN)171、および広域ネットワーク(WAN)173が含まれるが、他のネットワーク/バスを含むこともできる。こうしたネットワーク環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
LANネットワーク環境で使用される場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用される場合、コンピュータ110は通常、モデム172または他の手段を備えて、インターネットなどWAN173を介して通信を確立する。モデム172は、内蔵型または外部のものでもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続される。ネットワーク化環境では、パーソナルコンピュータ110について示したプログラムモジュールまたはその一部をリモートメモリストレージデバイスに格納することができる。一例であって限定するものではないが、図17は、メモリデバイス181に常駐するものとしてリモートアプリケーションプログラム185を示している。理解されるように、図で示したネットワーク接続は例示のものであり、コンピュータ間の通信リンクを確立する他の手段を使用することもできる。
上記で示したように、本発明は、XMLデータをユーザ定義型のインスタンスのフィールドとしてデータベースストア内に格納し検索するシステムおよび方法を対象とする。理解されるように、本発明の広範な概念から逸脱することなく、上記に記載した実装形態に変更を加えることができる。たとえば、本発明の一実装形態をMicrosoftのSQL SERVERデータベース管理システムで実装されるものとして上記に記載したが、理解されるように、本発明は、ユーザ定義型の生成をサポートする任意のデータベース管理システムで実装することができる。したがって理解されるように、本発明は、開示した特定の実装形態に限定されるものではなく、頭記の特許請求の範囲で記載されたように、全ての修正を本発明の精神および範囲内に包含するものとする。
ユーザ定義型のためのマネージドコードクラス定義を示す例示のコードセグメントを示す図である。 マネージドコードでインスタンス生成されたユーザ定義型のインスタンスの直列化および非直列化を示すブロック図である。 ユーザ定義型のオブジェクトが永続するデータベーステーブルを示す図である。 本発明の一実装形態による、SqlXmlクラスのメンバを示す表である。 本発明の一実装形態による、SqlXmlフィールドを有するCLRクラス「Employee」の例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、.NETプログラミング言語でEmployeeクラスの新しいインスタンスを生成し、それを取り込む方法を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、XMLコンテンツを解析するためにEmployeeクラスのインスタンスからXmlReaderを獲得する方法を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、.NETプログラミング言語でEmployeeクラスのインスタンスを更新する方法を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、「XmlSchemaCollection」属性の使用を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、クライアント側でXMLコンテンツの検証を行う方法を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、クラス定義から「XmlSchemaCollection」属性で指定されたXMLスキーマコレクション名を獲得する方法を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、XMLスキーマコレクション名が知られた後に、XMLスキーマコレクションをサーバから検索する方法を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、XmlReaderの検証を行う方法を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、クライアント側の検証の更新を行う方法を示す例示のプログラムコードのリスティングを示す図である。 本発明の一実装形態による、UDTを定義するCLRクラスに挙動を追加してUDTのXMLデータフィールド上の挙動を実装することができる方法を示す例示のコードのリスティングを示す図である。 本発明を実装することができる様々なコンピューティングデバイスを有する例示のネットワーク環境を示すブロック図である。 本発明を実装することができる例示のコンピューティングデバイスを示すブロック図である。

Claims (17)

  1. ユーザ定義型のインスタンスであるオブジェクトがデータベースストアに永続することができるシステムで、前記ユーザ定義型の定義がマネージドコードのクラスとして提供され、1つまたは複数のフィールドおよび挙動を有し、各フィールドがそれぞれデータ型を有する方法であって、
    ユーザ定義型のフィールドに関するXMLデータ型を表すマネージドコードでクラスを定義すること、
    前記XMLデータ型を表すマネージドコードのインスタンスとしてユーザ定義型のマネージドコードクラス定義内でフィールドを定義すること、および
    前記データベースストア内に前記ユーザ定義型のインスタンスを永続させ、前記永続するインスタンスのフィールドがXMLデータを含むことができることを含むことを特徴とする方法。
  2. 前記XMLデータ型を表す前記マネージドコードクラスは、少なくとも1つのコンストラクタ、および前記ユーザ定義型の前記永続インスタンスの前記フィールドの前記XMLデータを検索することができるオブジェクトを返す少なくとも1つの方法を含むことを特徴とする請求項1に記載の方法。
  3. 前記XMLデータ型を表す前記マネージドコードクラスのインスタンスとして定義された前記ユーザ定義型の前記フレームで挙動を実装する方法を前記ユーザ定義型の前記マネージドコードクラス定義に追加することをさらに含むことを特徴とする請求項1に記載の方法。
  4. XMLデータを含む前記ユーザ定義型のインスタンスの前記フィールドと前記フィールドの前記XMLデータのためのコンテンツモデルを定義するXML Schemaを関連付けるステップをさらに含むことを特徴とする請求項1に記載の方法。
  5. 前記関連付けるステップは、前記ユーザ定義型の前記マネージドコードクラス定義に前記データベースストアをホストするサーバの前記XML Schemaを定義する属性の注釈を付けることを含むことを特徴とする請求項4に記載の方法。
  6. 前記データベースストア内に永続する前記ユーザ定義型のインスタンスをクエリするステップ、および前記データベースストア内に永続する前記ユーザ定義型のインスタンスを修正するステップの少なくとも1つをさらに含むことを特徴とする請求項1に記載の方法。
  7. マネージドコードの実行を提供するランタイムであって、
    XMLデータ型を表すマネージドコードのクラス、および
    データベースストア内にその型のオブジェクトを記憶するためのユーザ定義型を定義するマネージドコードのクラスであって、前記ユーザ定義型についてのクラス定義は1つまたは複数のフィールドを有し、各フィールドはそれぞれデータ型を有し、前記フィールドの少なくとも1つは前記XMLデータ型を表す前記マネージドコードクラスのインスタンスとして定義されるクラスを含むランタイムと、
    前記ユーザ定義型のインスタンスを格納するデータベースストアとを含み、永続インスタンスのフィールドはXMLデータを含むことができることを特徴とするシステム。
  8. 前記XMLデータ型を表す前記マネージドコードクラスは、少なくとも1つのコンストラクタ、および前記ユーザ定義型の前記永続インスタンスの前記フィールドの前記XMLデータを検索することができるオブジェクトを返す少なくとも1つの方法を含むことを特徴とする請求項7に記載のシステム。
  9. 前記ユーザ定義型を定義する前記マネージドクラスコードは、XMLデータを含む前記ユーザ定義型の前記インスタンスの前記フィールドで挙動を実装する方法をさらに含むことを特徴とする請求項7に記載のシステム。
  10. 前記ユーザ定義型を定義する前記マネージドコードクラスは、XMLデータを含む前記ユーザ定義型のインスタンスの前記フィールドと前記フィールドの前記XMLデータのためのコンテンツモデルを定義するXML Schemaの間の関連付けをさらに含むことを特徴とする請求項7に記載のシステム。
  11. 前記関連付けは、前記ユーザ定義型を定義する前記マネージドコードクラス内の前記フィールドに与えられた属性を含み、前記属性は前記データベースストアをホストするサーバ側の前記XML Schemaを識別することを特徴とする請求項10に記載のシステム。
  12. ユーザ定義型のインスタンスであるオブジェクトがデータベースストアに永続することができるシステムで使用するためのコンピュータ可読メディアに格納されたプログラムコードを有するコンピュータ可読メディアであって、前記プログラムコードは、
    ユーザ定義型のフィールドに関するXMLデータ型を表すマネージドコードの第1のクラスと、
    1つまたは複数のフィールドおよび挙動を含み、各フィールドはそれぞれデータ型を有し、前記第2のクラス内のフィールドの少なくとも1つは前記第1のクラスのインスタンスとして定義されている、ユーザ定義型を定義するマネージドコードの第2のクラスとを含み、
    前記プログラムコードはコンピュータで実行された場合に、前記コンピュータが前記ユーザ定義型のインスタンスを前記データベースストア内で永続させることができるようにし、前記永続インスタンスの前記少なくとも1つのフィールドはXMLデータを含むことを特徴とするコンピュータ可読メディア。
  13. 前記第1のクラスは、少なくとも1つのコンストラクタ、および前記ユーザ定義型の前記永続インスタンスの前記フィールドの前記XMLデータを検索することができるオブジェクトを返す少なくとも1つの方法を含むことを特徴とする請求項1に記載のコンピュータ可読メディア。
  14. 前記第2のクラスは、前記第1のクラスのインスタンスとして定義された前記ユーザ定義型の前記少なくとも1つのフィールドで挙動を実装する方法をさらに含むことを特徴とする請求項12に記載のコンピュータ可読メディア。
  15. XMLデータを含む前記ユーザ定義型のインスタンスの前記少なくとも1つのフィールドは、前記フィールドの前記XMLデータのためのコンテンツモデルを定義するXML Schemaに関連付けられることを特徴とする請求項12に記載のコンピュータ可読メディア。
  16. 前記少なくとも1つのフィールドは、前記データベースストアをホストするサーバ側の前記XML Schemaを定義する属性の前記第2のクラスの前記少なくとも1つのフィールドの前記定義に注釈を付けることによって前記XML Schemaに関連付けられることを特徴とする請求項15に記載のコンピュータ可読メディア。
  17. 前記プログラムコードは、
    前記コンピュータが、データベースストア内に永続する前記ユーザ定義型のインスタンスをクエリし、前記データベースストア内に永続する前記ユーザ定義型のインスタンスを修正することができるようにすることを含むことを特徴とする請求項12に記載のコンピュータ可読メディア。
JP2006536589A 2003-10-24 2004-07-29 オブジェクトとしてカプセル化されたxmlデータをデータベースストアに格納し検索するシステムおよび方法 Pending JP2007519078A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/693,158 US20050091231A1 (en) 2003-10-24 2003-10-24 System and method for storing and retrieving XML data encapsulated as an object in a database store
PCT/US2004/024506 WO2005046103A2 (en) 2003-10-24 2004-07-29 System and method for storing and retrieving xml data encapsulated as an object in a database store

Publications (1)

Publication Number Publication Date
JP2007519078A true JP2007519078A (ja) 2007-07-12

Family

ID=34522315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006536589A Pending JP2007519078A (ja) 2003-10-24 2004-07-29 オブジェクトとしてカプセル化されたxmlデータをデータベースストアに格納し検索するシステムおよび方法

Country Status (6)

Country Link
US (1) US20050091231A1 (ja)
EP (1) EP1627508A4 (ja)
JP (1) JP2007519078A (ja)
KR (1) KR101086567B1 (ja)
CN (1) CN101410830A (ja)
WO (1) WO2005046103A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9851958B2 (en) 2013-12-26 2017-12-26 International Business Machines Corporation Method, apparatus, and computer program for specializing serializer

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366978B1 (en) 2003-02-13 2008-04-29 Microsoft Corporation Method and system for creating a grid-like coordinate system for addressing data contained in an irregular computer-generated table
US20040205216A1 (en) * 2003-03-19 2004-10-14 Ballinger Keith W. Efficient message packaging for transport
US7882146B2 (en) * 2003-12-01 2011-02-01 Microsoft Corporation XML schema collection objects and corresponding systems and methods
US7426690B1 (en) * 2003-12-09 2008-09-16 Microsoft Corporation Extensible markup language markup cloning on table rows and cells in a software application document
US20050154978A1 (en) * 2004-01-09 2005-07-14 International Business Machines Corporation Programmatic creation and access of XML documents
US20060015471A1 (en) * 2004-07-01 2006-01-19 Gmorpher Incorporated System, Method, and Computer Program Product of Building A Native XML Object Database
US20060059169A1 (en) * 2004-08-13 2006-03-16 Sergey Armishev Method and system for extensible automated data testing using scriptlets
US7490088B2 (en) * 2004-09-01 2009-02-10 International Business Machines Corporation Apparatus, system, and method for preserving connection/position data integrity during file server serialization reinitialization
US7711721B2 (en) * 2004-09-01 2010-05-04 International Business Machines Corporation Apparatus, system, and method for suspending a request during file server serialization reinitialization
US7627578B2 (en) * 2004-09-01 2009-12-01 International Business Machines Corporation Apparatus, system, and method for file system serialization reinitialization
GB2419436A (en) * 2004-10-25 2006-04-26 Digitalml Ltd Extensible object-modelling mechanism
US8296354B2 (en) * 2004-12-03 2012-10-23 Microsoft Corporation Flexibly transferring typed application data
US8424020B2 (en) * 2006-01-31 2013-04-16 Microsoft Corporation Annotating portions of a message with state properties
US20070244865A1 (en) * 2006-04-17 2007-10-18 International Business Machines Corporation Method and system for data retrieval using a product information search engine
US8615730B2 (en) * 2006-07-14 2013-12-24 Microsoft Corporation Modeled types-attributes, aliases and context-awareness
US20080098037A1 (en) * 2006-07-17 2008-04-24 Tim Neil Markup language based database upgrades
DE602006003650D1 (de) * 2006-07-17 2008-12-24 Nextair Corp Auszeichnungssprache-basierte Datenbank-Aktualisierung
US8255790B2 (en) * 2006-09-08 2012-08-28 Microsoft Corporation XML based form modification with import/export capability
US7620526B2 (en) * 2006-10-25 2009-11-17 Zeugma Systems Inc. Technique for accessing a database of serializable objects using field values corresponding to fields of an object marked with the same index value
US7761485B2 (en) * 2006-10-25 2010-07-20 Zeugma Systems Inc. Distributed database
US8819079B2 (en) 2007-02-02 2014-08-26 Rogers Family Trust System and method for defining application definition functionality for general purpose web presences
WO2009022337A2 (en) * 2007-08-13 2009-02-19 Kcs - Knowledge Control Systems Ltd. Introducing a form instance into an information container
US8589788B2 (en) * 2007-12-19 2013-11-19 International Business Machines Corporation Methods, systems, and computer program products for automatic parsing of markup language documents
US8352509B2 (en) * 2007-12-19 2013-01-08 International Business Machines Corporation Methods, systems, and computer program products for accessing a multi-format data object
US8126841B2 (en) * 2008-02-20 2012-02-28 International Business Machines Corporation Storage and retrieval of variable data
US20100321715A1 (en) * 2009-06-22 2010-12-23 Williams David A Methods and structure for preserving node order when storing xml data in a key-value data structure
US20110022978A1 (en) * 2009-07-23 2011-01-27 Rockwell Automation Technologies, Inc. Intelligent device framework
US8429118B2 (en) 2009-10-23 2013-04-23 Microsoft Corporation Embedding and retrieving data in an application file format
US9137206B2 (en) * 2009-11-20 2015-09-15 International Business Machines Corporation Service registry for saving and restoring a faceted selection
JP5483561B2 (ja) * 2010-02-25 2014-05-07 楽天株式会社 ストレージ装置、サーバ装置、ストレージシステム、データベース装置、データの提供方法、及び、プログラム
CN101976582A (zh) * 2010-10-15 2011-02-16 北京航天测控技术开发公司 存储器建模方法及装置
US9396284B2 (en) * 2011-05-18 2016-07-19 Oracle International Corporation Method and system for implementing efficient updatable relational views over XML data
CN102779186B (zh) * 2012-06-29 2014-12-24 浙江大学 一种非结构化数据管理的全过程建模方法
US9053028B2 (en) * 2013-01-04 2015-06-09 Microsoft Technology Licensing Llc Type casting in a managed code system
CN103279529A (zh) * 2013-05-30 2013-09-04 北京邮电大学 非结构化数据检索方法及系统
US9576039B2 (en) * 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
US20180145867A1 (en) * 2015-05-19 2018-05-24 Suzhou Teknect Engineering Co., Ltd Apparatus control method, device and system
CN108292350B (zh) * 2015-10-23 2022-02-11 甲骨文国际公司 支持联合搜索的对受保护字段的自动操作检测
CN105488117A (zh) * 2015-11-23 2016-04-13 浪潮集团有限公司 一种自定义对象的处理方法及装置
US10248709B2 (en) * 2015-12-15 2019-04-02 Microsoft Technology Licensing, Llc Promoted properties in relational structured data
US11226985B2 (en) 2015-12-15 2022-01-18 Microsoft Technology Licensing, Llc Replication of structured data records among partitioned data storage spaces
US10140100B2 (en) * 2016-03-04 2018-11-27 Google Llc Device common model interface
CN105897706B (zh) * 2016-04-01 2019-01-18 厦门卫星定位应用股份有限公司 一种交通数据的通用解析处理方法
US10824681B2 (en) * 2016-11-21 2020-11-03 Sap Se Enterprise resource textual analysis
US11138220B2 (en) 2016-11-27 2021-10-05 Amazon Technologies, Inc. Generating data transformation workflows
CN107577817A (zh) * 2017-09-30 2018-01-12 北京酷我科技有限公司 一种实体数据库的读写方法
US11086841B1 (en) * 2020-01-31 2021-08-10 Snowflake Inc. Streams on shared database objects
CN111797279B (zh) * 2020-07-17 2024-01-19 西安数据如金信息科技有限公司 一种存储数据的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366934B1 (en) * 1998-10-08 2002-04-02 International Business Machines Corporation Method and apparatus for querying structured documents using a database extender
US20020123993A1 (en) * 1999-12-02 2002-09-05 Chau Hoang K. XML document processing

Family Cites Families (30)

* 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
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
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
AU7687498A (en) * 1997-05-14 1998-12-08 Portal Information Network Method and apparatus for object oriented storage and retrieval of data from a relational database to implement real time billing system
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
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
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
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
EP1337937B1 (en) * 2000-09-07 2013-04-17 Oracle International Corporation Method and apparatus for xml data storage, query rewrites, visualization, mapping and references
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
AU2002334721B2 (en) * 2001-09-28 2008-10-23 Oracle International Corporation An index structure to access hierarchical data in a relational database system
US7092933B1 (en) * 2002-12-17 2006-08-15 Ncr Corporation Supporting user-defined datatypes
US7103611B2 (en) * 2003-05-01 2006-09-05 Oracle International Corporation Techniques for retaining hierarchical information in mapping between XML documents and relational data
US6941316B2 (en) * 2003-10-23 2005-09-06 Microsoft Corporation System and method for object persistence in a database store

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366934B1 (en) * 1998-10-08 2002-04-02 International Business Machines Corporation Method and apparatus for querying structured documents using a database extender
US20020123993A1 (en) * 1999-12-02 2002-09-05 Chau Hoang K. XML document processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9851958B2 (en) 2013-12-26 2017-12-26 International Business Machines Corporation Method, apparatus, and computer program for specializing serializer

Also Published As

Publication number Publication date
EP1627508A2 (en) 2006-02-22
CN101410830A (zh) 2009-04-15
US20050091231A1 (en) 2005-04-28
WO2005046103A2 (en) 2005-05-19
EP1627508A4 (en) 2010-02-03
WO2005046103A3 (en) 2009-04-02
KR20060112187A (ko) 2006-10-31
KR101086567B1 (ko) 2011-11-23

Similar Documents

Publication Publication Date Title
KR101086567B1 (ko) 데이터베이스 저장소 내의 한 객체로서 캡슐화된 xml데이터를 저장 및 검색하기 위한 시스템 및 방법
US7496599B2 (en) System and method for viewing relational data using a hierarchical schema
US9239821B2 (en) Translation file
US7356546B2 (en) System and method for object persistence in a database store
US7418456B2 (en) Method for defining a metadata schema to facilitate passing data between an extensible markup language document and a hierarchical database
US6836778B2 (en) Techniques for changing XML content in a relational database
US7308460B2 (en) System and method for providing user defined types in a database system
US7210097B1 (en) Method for loading large XML documents on demand
US7240101B2 (en) Method and apparatus for efficiently reflecting complex systems of objects in XML documents
Esposito Applied XML programming for Microsoft. NET
Pal et al. XML support in Microsoft SQL Server 2005
Rose et al. Virtual XML: A toolbox and use cases for the XML world view
Nelli Pandas: reading and writing data
Joshi Beginning XML with C# 7: XML Processing and Data Access for C# Developers
Rizzo et al. SQL Server and XML
Rusu et al. The Role Of Xml In The Modeling Process Of A Virtual Business
Developers et al. Beginning XML with C# 7
Meyer Efficient Processing of Very Large XML Documents in Small Space
WO2007025201A2 (en) Implementation of personalizable information

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101022

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110318