JP2006085717A - .netデータ型およびインスタンスの持続性ストレージ - Google Patents

.netデータ型およびインスタンスの持続性ストレージ Download PDF

Info

Publication number
JP2006085717A
JP2006085717A JP2005270449A JP2005270449A JP2006085717A JP 2006085717 A JP2006085717 A JP 2006085717A JP 2005270449 A JP2005270449 A JP 2005270449A JP 2005270449 A JP2005270449 A JP 2005270449A JP 2006085717 A JP2006085717 A JP 2006085717A
Authority
JP
Japan
Prior art keywords
data
creating
adornment
program product
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005270449A
Other languages
English (en)
Other versions
JP4809652B2 (ja
Inventor
Gopala Krishna K R Kakivaya
クリシュナ ケー.アール.カーキバヤ ゴーパーラ
Savithri N Dani
エヌ.ダニ サビスリ
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 JP2006085717A publication Critical patent/JP2006085717A/ja
Application granted granted Critical
Publication of JP4809652B2 publication Critical patent/JP4809652B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • 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
    • 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
    • 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/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Abstract

【課題】 基礎になるデータストアに対する基本的な依存なしでデータオブジェクトをデータベースに永続させる包括的な機構を提供すること。
【解決手段】 データベースの構造がどのように見えるべきかを知るためにプログラマの専門知識に頼るのではなく、データ型が、プログラマがデータの保存に使用されるデータベースの構造を定義することなく、プログラマによって定義され、対応するデータが何に使用されるかを提案する属性によってアドーンメントを付される。その後、データベースを動的に作成して、アドーンメントを付されされた属性によって提案される必要を満足する。具体的に言うと、複数の異なるテーブルを、データにアクセスする所期の必要に従って作成する。これを行うことによって、最適化されたデータベースを作成して、プログラマがデータベースおよび対応するデータベーススキーマに関する特定の知識を有することを必要とせずに、所望の結果をもたらすことができる。
【選択図】 図3

Description

本発明は、コンピューティングシステムの分野に関し、具体的には、データ型、特に.NETデータ型に関連するアドーンメント(adornment)に応答して、データベース構造を作成し、データベースにデータを保存する方法、システム、およびコンピュータプログラム製品に関する。
データを保存するのに使用できる多数のさまざまなシステムおよびツールがある。データの保存には、例えば、知覚に基づき必要に応じてデータを保存するためにプログラマが異なる種類のデータベース構造を選択することができるように構成されたデータベースツールの使用を含めることができる。そのようなツールの1つとして、存在するものの中でもAccess(登録商標)があり、このAccess(登録商標)は、Jet SQLデータベースに従ってデータを保存する。しかし、この例にかかわらずに、さまざまな他の種類のデータ保存ツールが、多数の異なる種類のリレーショナルデータベース用に存在することを理解されたい。
しかし、既存のデータベースツールに関する問題の1つは、プログラマが、作成している特定の実装に最適の既知の性能を提供するために、データベース、およびいかにデータベースを作成し編成するかに関する比較的洗練された知識を有することが必要であることである。例えば、プログラマは、データベース用に提供される異なる種類のテーブル、割り当てられたメモリ、および他の保存構造を識別する必要がある。
しかし、保存されたデータに対する要求が変化する限り、データ構造を作成する既存のパラダイムは、多少制限される。具体的に言うと、データを保存する既知の要求およびこの要求を最もよく満たす方法に関するプログラマの限られた知識に基づいてデータベースが作成されることにより、データベースの使用が不当に制限され、将来の異なる要求を満たすためにデータベースを簡単にカスタマイズするのが妨げられる可能性がある。
具体的に言うと、データベースは、以前に既知でなかったまたはデータベースが作成された時に確立されていたデータベースと互換ではない異なるシステムからの異なる型のデータを保存する必要がある場合がある。確立されたデータベース構造は、SQLだけではなく、異なる種類のリレーショナルデータベースを柔軟に使用する必要がある場合もある。しかし、既存の技法は、データベースを定義するモノリシックなコードを書きなおすことなく柔軟に対応することはできない。
リレーショナルデータベースにオブジェクトを保存する際に遭遇するもう1つの問題は、データオブジェクトが後にアクセスされる時に保存の性能に悪影響しない形で、オブジェクトをリレーショナルデータベースに保存する間にプログラマがクラス階層を変換することが困難であるということである。例えば、多数の異なる型のクラスが、同一の基本クラスに対応する場合に、別々のクラスの各々を単一のモノリシックデータベース構造に保存しても意味がない場合がある。同様に、別々のクラスの各々を完全に別々に異なる構造に保存しても意味がない場合がある。この例の両方が、データを引き続きの照会している間に非効率になるという問題を引き起こす可能性がある。
したがって、オンデマンドで、データストアの基礎になる構造に対し基本的に依存することなく、任意のデータ構造を保存し、それらを取り出す包括的な形が必要である。
本発明は、全般的に、基礎になるデータストアまたはそのルールまたは特徴に対する基本的に依存することなく、データオブジェクトをデータベースに永続させる包括的な機構を提供する方法、システム、およびコンピュータプログラム製品に関連する。その代わりに、本発明は、データ保存技法のパラダイムシフトを提供する。具体的に言うと、所望の結果を得るために、データベースの構造がどのように見えなければならないかを知るのにプログラマの専門知識に頼るのではなく、本発明は、データが何に使用されるかに焦点を合わせ、その後、所望の結果を提供するために最適化されたデータベースを作成する。
一実施態様によれば、プログラマがデータの保存に使用されるデータベースの構造を定義することなく、データ型が、プログラマによって定義され、対応するデータが何に使用されるかを提案する属性によってアドーンメントを付される(adorned)。その後、アドーンメントを付された属性によって提案される要求を満足するために、データベースが動的に作成される。具体的に言うと、複数の異なるテーブルが、データにアクセスする所期の必要に従って作成される。いくつかの実施態様によれば、データベース構造およびデータベーステーブルは、データ保存の複製を最小にし、データベースの性能を高めて、データにアクセスする所期の要求を満足する形で作成される。このデータベーステーブルの作成は、プログラマに透過的であり、プログラマは、異なる型のデータ構造またはデータベースに関する特殊な知識を有する必要がない。その代わりに、プログラマは、対応するデータにアクセスする既知の要求に基づくデータ型を単に識別するコードを開発することができる。
後に、データにアクセスする必要が変化した場合に、データ型を変更するか、削除し、新しいデータ型を作成することができ、これによって、データベースの基礎になる構造を、それ相応に、変更されるデータベースに対応するモノリシックなコードを必要とせずに、動的に更新できるようになる。言い換えると、本発明は、データベース構造のモジュラ作成を可能にする手段を提供する。
本発明の追加の特徴および利益は、次の説明で示され、部分的にその説明から明白になり、あるいは、本発明の実践から習得することができる。本発明の特徴および利益は、請求項で特に指摘される道具および組合せによって実現し、得ることができる。本発明の上記および他の特徴は、次の説明および請求項からより完全に明白になり、あるいは、下に記載の本発明の実践によって習得することができる。
本発明の上記および他の利益および特徴を得ることができる形を説明するために、上記
で簡単に説明した本発明のより特定の説明を、添付図面に示された特定の実施形態を参照して行う。これらの図面が、本発明の1つの通常の実施形態を示すのみであり、したがって、その範囲の限定と考えてはならないことを理解して、本発明を、添付図面の使用を介してさらに具体的に、詳細に説明する。
本発明は、データを保存する方法およびシステムと、対応するデータベース構造を作成する方法およびシステムの両方に広がっている。本発明の実施形態に、下で詳細に述べるように、さまざまなコンピュータハードウェアを含む、専用のまたは汎用のコンピュータを備えることができる。
本明細書で説明するように、本発明の実施形態には、データを保存するためにデータベース構造を作成する方法に関する特殊な知識を必要とせずに、データの所期の使用に基づく属性によってデータ型にアドーンメントが付される(adorned)方法が含まれる。次に、適当なデータベース保存テーブルに、アドーンメントが付されたデータ型によって決定される要求に従って作成される。次に、このテーブルに、適当なアプリケーションによって、対応するデータを取り込み、照会することができる。データベース構造の作成は、データベースの知識要件を除いて、データの所期の使用に基づくので、プログラマがデータベースおよびデータベース構造に関して知識が欠如しているにかかわらず、データベースの性能を最適化するように作成される。これが、データベース構造の作成に関する従来技術のシステムに対するパラダイムシフトおよび改善を表すことも理解されたい。
本発明の実施形態は、コンピュータ実行可能命令またはデータ構造を担持するか保存されたコンピュータ読取可能な媒体も含む。そのようなコンピュータ読取可能な媒体は、汎用コンピュータまたは専用のコンピュータによってアクセスできるすべての使用可能な媒体とすることができる。制限ではなく例として、そのようなコンピュータ読取可能な媒体に、RAM、ROM、EEPROM、CD−ROMまたは他の光学ディスク保存、磁気ディスク保存または他の磁気保存装置、あるいは、コンピュータ実行可能命令またはデータ構造の形で所望のプログラムコード手段を担持または保存するのに使用でき、汎用コンピュータまたは専用のコンピュータによってアクセスできるすべての他の媒体を含めることができる。情報が、ネットワークまたは別の通信接続(ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せのいずれか)を介してコンピュータに転送または供給されると、そのコンピュータは、その接続を正しくコンピュータ読取可能な媒体と見なす。したがって、そのような接続のすべてを、正しくコンピュータ読取可能な媒体と呼ぶ。上記の組み合わせも、コンピュータ読取可能な媒体の範囲に含まれなければならない。コンピュータ実行可能命令に、例えば、汎用コンピュータ、専用のコンピュータ、または専用の処理装置にある機能または機能のグループを実行させる命令およびデータが含まれる。
.NETデータ型およびインスタンス用の持続性保存
本発明の一実施形態によれば、.NETデータ型およびインスタンス用の持続性保存は、プログラミング中に定義されたデータ型に置かれるアドーンメントに応答する、データベーステーブルを含むがこれに制限されないデータベース構造の作成を可能にする対応するモジュールと共に提供される。
データ型に置かれるアドーンメントは、いかなる要求または希望に従っても変更することができる。いくつかの例により、プログラマが後に作成されるデータベース構造に関する特殊な知識を一切有しない場合であっても、アドーンメントをプログラマによって記述されたコードセグメント内のデータ型に添付する方法と、後にそれらを使用して、データベース構造の作成を制御する方法を示す。
第1の例で、タイトル、アルバムアート、アーティストのリスト、および曲のリストを含むクラス型としてアルバムを説明する。曲の各々は、タイトル、持続時間、およびアルバムを有するクラス型としても識別される。最後に、アーティストは、名前、写真、およびファンページURIを含むクラス型として識別される。
Figure 2006085717
前の例によってさらに反映されているように、クラス型に対応するデータオブジェクトの一部は、特殊な属性を用いてアドーンメントを付される。例えば[CLSIBackPointer(album)]属性は、アルバムフィールドまたはオブジェクトが、同一のアルバムに関連付けることができる多数の異なる曲へのバックポインタを含むことを示す。これを、下で図1を参照して詳細に説明する。
例示されているもう1つのアドーンメントに、artistクラスに関連する[CLSIIndex]属性が含まれ、このことにより、これを照会できなければならないことが示される。このアドーンメントの理由の1つは、データベースの性能を高めることである。具体的に言うと、データベースがある項目の照会を許容することがわかっている場合に、その項目が照会を意図されていることを示すほうが有用な場合がある。この形で、データ構造が作成されると、下で詳細に説明するように、照会されることがわかっている項目の検索を最適化する形でそのデータ構造を作成することができる。
ここで図1A〜1Dを参照すると、これらの図には、本発明の方法に従って、持続性保存モジュールに供給されるコードで定義されたデータ型およびアドーンメントに基づいて作成できるデータベーステーブルを含むデータベース構造が示されている。
図からわかるように、4つのテーブルが作成されている。第1のテーブル、Album(アルバム)テーブル100aは、上の例で識別されたアルバム型に対応し、これには、下で参照される、title(タイトル)フィールド110aおよびart(アート)フィールド120aが、record number(レコード番号)列130aおよびartist(アーティスト)列140aと共に含まれる。これらの異なるフィールドは、上で説明したコードで提供されるオブジェクトに対応する。
別々のSong(曲)テーブル100bにも、コードによって定義されているように、それぞれタイトル、演奏時間、およびアルバムの対応するフィールド(110b、120b、130b)が含まれる。durationフィールド120bに、それが属する曲に対応する演奏時間データを含めることができる。
Artist(アーティスト)テーブル100cに、上で示した例のartistクラス型の説明に対応するname(名前)フィールド110c、picture(写真)フィールド120c、およびURIフィールド130cが含まれる。pictureフィールド120cは、例えばアーティストに対応するグラフィックイメージへのポインタを含むことができ、URIフィールド130cは、ファンページなど、アーティストに対応する文書またはウェブページへのリンクを含むことができる。
最後に、collections(コレクション)テーブル100dが設けられ、これには、両方とも一意の識別子を保持する型が与えられた2つの列が含まれる。第1列110dは、コレクションの識別を表し、それを参照するインスタンス、この例ではalbumテーブル100aのアルバムのフィールドによって指示される。第2列120dは、コレクションの一部であるインスタンス、この例ではアーティストの識別を表す。したがって、単一のコレクションが、それに含まれるインスタンスの個数と同一の行数をコレクション内に有するが、そのような行のすべてが、所与のコレクションを識別する同一の一意の識別を有する。したがって、コレクションへのポインタフィールドは、コレクションインスタンスを表す行に一意の識別を置くことによって表すことができる。これは、アルバムオブジェクトによって指示される各別個のアーティストコレクションが、コレクションテーブル内で、1つまたは複数の行として表され、各行の第2列が、アーティストテーブル内の行を指示することを暗示する。例えば、現在の例では、コレクションID 1(アルバム1に関連する)が、アーティスト要素21およびアーティスト要素22にリンクされている。コレクションIDは、相互参照のためにAlbumテーブル100aでも識別されている。
artist型のnameフィールドが、上で説明したように、適当なアドーンメントを用いて一意の識別子として属性を与えられると、アーティスト名は、artistテーブルの行を指示できる、collectionsテーブル内の一意の識別を表すことができる。しかし、artist型のnameフィールドが、一意の識別子として属性を与えられない場合に、ポインタは、その代わりに、アーティスト名ではなく、対応するartistテーブルの識別子をポイントバックする。現在の例では、これが、record numberを使用して行われる。
songクラスのtitleフィールドおよびartistクラス型のnameフィールドが、[CLSIIndex]属性を用いてアドーンメントが付されているので、songクラスおよびartistクラスに対応するデータベース構造(例えば、テーブル)は、データベースが対応するデータベーステーブルに保存される行のすべてを必ずしも照会することなく、ソートでき、それぞれタイトル列および名前列について素早く照会できる形で作成されることを理解されたい。
所与のクラスに関連するデータベーステーブルは、例えば、テーブル内の各行に一意の識別子を与える隠しレコード番号130a、140b、140cを含むことができる。
項目またはオブジェクトの検索中に、データベースは、record number 130aに基づいてすべてのレコードをシーケンシャルに検索することができる。しかし、クラスフィールドが、以前に識別され、[CLSIIndex]属性などの属性によってアドーンメントが付され、それが照会されることを意図されていることが示されている場合に、songテーブルのtitle列およびartistテーブルのName列など、対応するインデックスデータ構造を、属性付きのフィールドに対応する列に対して作成することができ、その結果、これらをソート(アルファベット順または他の任意の形で)して、検索を最適化することができるようになる。したがって、照会を最適化することができ、プログラマがデータベースに関する特殊な知識を介してデータ構造を作成する必要がない。
同様に、albumクラスのsongsフィールドに関連するバックポインタアドーンメントは、そのsongコレクションがalbumインスタンスによって所有される(owned)こと、およびsong型のalbumフィールドが、所有するアルバムへのバックポインタとして機能することを示す。したがって、所与のalbumに属するsongは、指定されたアルバムを識別するalbum列を有するsongテーブルを照会することによって識別することができる。逆に、album列は、所与のsongが属するアルバムを識別するのに使用することができる。その後、識別されたアルバムを使用して、他のテーブル(例えば100c)を使用してアルバムのアーティストに対応する他の情報を識別することができる。
このように、songテーブル100bを、albumテーブル100aと独立して照会することができ、albumテーブル100a、songテーブル100bに保存された曲の各々に関する演奏時間情報を保存する必要がなくなる。これによって、albumテーブル100aを照会する時の性能を改善できることを理解されたい。同様に、songテーブル100bの照会も、それに属するアルバムに関連するアート情報およびアーティスト名情報のすべてを保存する必要がなくなるため、最適化される。これは、テーブルの相互参照により、必要な情報のすべてが簡単に提供されるからである。
さらに追加のアドーンメントを示すために、購入注文のカスタマに関するもう1つの例を示す。それでも、この例ならびに前述の例が、単なる例示であり、したがって、作成できるデータベース構造の種類または使用できるアドーンメントされる属性の種類に関して本発明を制限するものと解釈してはならないことを理解されたい。
次の例では、カスタマクラスおよび購入注文クラスが作成される。
Figure 2006085717
前述の例で、いくつかの新しいアドーンメントが提示されている。例えば、customerクラスの電話番号フィールドにアドーンメントを付して、[CLSIIdentity]属性が、電話番号がcustomer型の一意のキーを表さなければならないことを示すために提供されている。
[CLSISingleRef]属性も、customerクラスのaddressフィールドに提供されて、カスタマとカスタマの住所の間に1対1関係が存在することが意図されていることを示している。
[CLSIBackPointer(customer)]を含むもう1つの属性は、customerクラスの購入注文フィールドに対してアドーンメントが付されている。この属性は、購入注文が注文を行ったカスタマへのバックポインタとして働くことが意図されていることを示す。これは、図2で示す例に鑑みてより明瞭に理解することができる。
図2Aおよび2Bからわかるように、customerテーブル200aおよびpurchase orderテーブル200bが、それぞれ対応するフィールド(210a、220a、230a)および(220a、220b、230b)と共に作成され、これらは、上述で例示的なコードセグメントで定義されたものである。このテーブル200aおよび200bは、テーブル100a、100b、および100cのように、データベース構造がどのように作られるかに関する特殊な知識がなくても、コードセグメントで提供された定義およびアドーンメントに従って作成されたものでもある。言いかえるとこの定義およびアドーンメントは、保存されるデータが何に使用されるか、またはそれにどのようにアクセスまたは照会する必要があるかに関するヒントを提供するためにのみ必要とされる。
前述の例では、[CLSIIdentity]属性のアドーンメントは、対応するフィールドである電話番号がcustomer型の一意のキーを表さなければならないことを示すために提供されている。これは、例えば、テーブルに、行ごとに特殊なrecord number 130a(図1)を保存するという要件を最小にするのに有用である可能性がある。具体的に言うと、[CLSIIdentity]属性を用いてアドーンメントを付されるフィールドを、各対応する行の一意の識別子として使用することができる。これは、図2に示されており、図2では、電話番号220aが、purchase orderテーブル200bでカスタマを表すのに使用されている。
他の実施形態で、[CLSIIdentity]属性を用いてアドーンメントを付されるフィールドの組合せをすることもでき、このフィールドの組合せが、行の一意の識別子を表すようにすることができる。
上で識別された[CLSISingleRef]属性は、customeクラスのaddressフィールドにも設けられて、カスタマとカスタマの住所の間に1対1関係が存在することが意図されていることを示している。これに関して、カスタマのaddressフィールド230aは、カスタマに対応する実際の住所ストリングを取り込むことができ、あるいは、その代わりに、別のテーブルに保存された住所データを指示することができる。
上記で全般的に説明したバックポインタ属性[CLSIBackPointer(customer)]も、最後の例のcustomerクラス型の購入注文フィールドに対してアドーンメントを付された。したがって、図1を参照して説明したように、バックポインタは、purchase orderテーブルにリストされたカスタマがcustomerテーブル200aを参照できるようにする。したがって、単一のテーブルが、カスタマおよびカスタマの購入注文に対応するデータアイテムの各々を維持する必要はない。その代わりに、購入されるアイテムおよび対応するSKUコードの詳細な記述を、customerテーブル200aと別々に維持し、必要な時に、購入注文に対応するカスタマをルックアップすることによってアクセスすることができる。これによって、上記で説明したように、データベースの所期の要求に従ってデータベースの性能を改善できることを理解されたい。より重要なことに、プログラマは、データベーステーブルがどのように作成されるかを知ることも、理解することも必要ではなかった。その代わりに、プログラマは、単に、データの所期の使用が何であるかを知る必要があるだけである。
前述の例では、クラス型を異なる階層にどのように配置できるかも示されている。具体的に言うと、前述の例では、address基底クラスと、address基底クラスに対応するUS addressクラスが識別されている。これは、例えば、異なる階層分類に対応する関連データを保存できる別々のテーブルまたは他のデータベース構造を作成するのに有用な可能性がある。
テーブルは、現在、addressクラスについて図示されていないが、州、通りの名前、番地など、多数の異なる種類の住所に共通する包括的な住所情報を保存する異なる列を含む包括的な住所について基底クラステーブルをどのように作成できるかを推測することができる。次に、サブクラスを、すべての住所には関係しない可能性があるより具体的な住所データを含む特殊化されたテーブルまたは他の構造に保存することができる。例えば、全世界のディレクトリアプリケーションにおいて、すべての国に郵便番号が含まれるわけではない。同様に、米国の住所に、外国の住所に関連する住所コードまたは他の情報が含まれない可能性がある。そのような状況では、異なる地域住所テーブルの各々に、すべての住所オブジェクトに関連しない特殊化された情報を含めることができ、なおかつ基底クラステーブルからの包括的な住所情報への素早いアクセスが可能になる。
相互参照に関する前の例と同様に、基底クラステーブル(例えば、基底住所クラステーブル)が、サブクラステーブル(例えば、地域クラステーブル)を相互参照できることも理解されたい。この技法を使用して、クラステーブルとサブクラステーブルの間のさまざまな深さの階層レベルを作成することができる。
これから図3に示された流れ図300に注意するが、この図には、本発明を実施する1つの方法が示されている。図からわかるように、この方法には、保存されるデータを識別することが含まれる(310)。これに関して、用語データは、保存されるデータ型を指す。この識別は、データ型を識別するコードが、コンピュータ読取可能な媒体で維持される持続性保存モジュール(図示せず)に提示された時に行うことができる。
次に、データの保存にどのデータベーススキーマ(例えば、データベース構造)を使用すべきかに関する決定を行う(320)。この判定は、上で説明したように、データ型に関連するアドーンメントの識別に応答して自動的に行われる。具体的に言うと、プログラマは、作成すべきデータ構造またはデータベース保存ツールを使用してそれを選択もしくは作成する方法に関する特殊な理解を有する必要はない。従って、本発明は、コードで定義されたデータ型に関連するアドーンメントに基づくデータ構造の自動作成を可能とし、アドーンメントは、データの所期の使用またはアクセスを反映したものである。
次に、適当なデータベース構造が存在するかどうかを判定する(330)。存在しない場合には、作成する(340)。例えば、図1および2に、作成できるテーブルのある実施形態を示す。しかし、これらのテーブルが、本発明の範囲を制限するものと解釈してはならない。データベース構造の作成(340)に、図1および2に関して上記で説明し、示したように、データベーステーブルを作成することと、コード内の対応するフィールドによって識別される少なくともいくつかの列をテーブルに取り込むことを含めることができる。
データベース構造の作成(340)に、データ型に対応する複数のテーブルの作成も含めることができる。作成できるテーブルに、例えば、コードで識別された型を定義し、対応するデータベーステーブルの各々を識別する型テーブルを含むことができる。このテーブルおよび他の類似するテーブルを、下で詳細に説明する。任意の個数の基底クラステーブルおよびサブクラステーブルを、データ型を保存するために適当なデータベース構造が存在しないと判定した時に作成することもできる。
図3に示された方法に、適当なデータベース構造(例えば、テーブル)を作成した後に、保存されるデータオブジェクトを入手すること(350)が含まれる。これは、例えば、単一のインスタンス中にまたはある時間期間にわたって、任意の個数の接続したまたは別個のデータベースおよびアプリケーションから達成することができる。データオブジェクトを入手した(350)場合、そのデータオブジェクトが既に保存されているかどうかを判定する(360)。これは、例えば、特に対応するフィールドの1つが[CLSIIdentity]属性を用いてアドーンメントを付されている(その属性を有するフィールドについて同一の値を有しない限り、2つの項目が同一になることがないことを示す)時に、適当なテーブルを検査することによって達成することができる。したがって、別のエントリが、対応するアドーンメントを付されたフィールドに同一の値を有する場合に、そのエントリが既に受信されており、新しいデータが、重複または既に受信されたデータに対する更新のいずれかであると判定することができる。データオブジェクトの重複したエントリを減らすことによって、保存容量および照会処理要件を最小にすることができる。
一実施形態で、識別属性が、フィールドが主キーの一部であるかどうかを示すために、フィールドに適用される。この実施形態によれば、識別属性は、持続性クラスの階層のルートを形成するクラスの少なくとも1つのフィールドに適用され、その結果、少なくとも1つのフィールドが、上で説明したように重複した保存を防ぐのに使用できる主キーを識別するのに使用される。
図示する方法の次の要素は、まだ書き込まれていない場合にデータオブジェクトを書き込むこと(370)が含まれる。これには、データオブジェクトのすべての部分を、上で示したようにまたは他の形で1つまたは複数のデータベーステーブルに書き込むことを含めることができる。これに、そのデータオブジェクトの派生物をデータベーステーブルに書き込むことも含めることができる。これに、別の位置に保存された実際のデータを指示するポインタをデータベーステーブルに書き込むことを含めることもできる。
他の実施形態で、本発明の方法に、データベース構造に既に保存されていることがわかったデータを変更すること(380)も含めることができる。例えば、最後に保存された時以降に更新が行われている場合に、データを更新することが有用である可能性がある。更新されたデータが、古いデータと別々に独立に保存され、これによって貴重な保存スペースを使用しないようにするために、主キーを使用して、データが同一であり、変更または上書きが必要であることを判定することができる。そうしなければ、その保存により、オブジェクトが後に取り出される時に古い情報を生じる。重複保存を防ぐための一意のキーの使用は、データに関する要求に応答して同一エンティティの情報の異なるセットを作るのを防ぐのにも有益である。
前述の例は、データベーステーブルを含むデータベース構造に関して提供されたが、本発明の範囲が、データベース構造にXMLファイルまたは他の保存構造が含まれる実施形態など、他の実施形態にも及ぶことを理解されたい。
本発明の範囲は、データストアが配列またはディクショナリである実施形態にも及んでいる。例えば、2つの追加のデータ要素または配列の次元の数および次元のランクに対応する異なる列のセットを提供することによって、配列を、上述の、および本明細書で説明するコレクションに似た形で構成することができる。
要約すると、上記で説明した方法を実施するコンピュータ実行可能命令を有する1つまたは複数のコンピュータ読取可能な媒体に保存でき、これから実施できる本発明を、時々、本明細書で、.NETデータ型およびインスタンス用の持続性保存と称する。説明したように、この持続性保存は、データ構造をデータベースにシリアライズする包括的な機構を提供し、これによって、オンデマンドで任意のデータ構造を保存し、取り出す包括的な形を必要とする複数のサービスに関する解決策を提供する。
この持続性保存は、CLR(Common Language Runtime)によって提供される機能に基づくが、ストアの下にある異なるデータソースにプラグインすることが可能である。また.NETデータ型に基づいて本発明によって使用されるデータモデルを、本発明の範囲を制限するものと見なしてはならない。というのは、Java(登録商標)に基づくものなどの代替データモデルもサポートできるからである。
本発明のいくつかの興味深い変形形態および追加の詳細を、これから下の説明で提供する。
まず、持続性保存フレームワークを、次の要素からなるものとして記述することができる:データ構造をデータソースにシリアライズするかデシリアライズする基本的な機能を提供するObjectStore。ObjectStoreは、動作するコンテキストを受け入れることができる。ObjectStoreの派生形は、ObjectStoreに関連するデータソースがSQLデータベースまたはXMLファイルである特定の実装を提供する。レコードid、ストアコンテンツなどに関する特定のObjectStore実装に関連するクラスも、定義される。シリアライゼーション属性も適用される。本明細書で説明するように、少数のカスタム属性が定義され、その結果、サービス開発者が、フィールドに対する追加情報を指定できるようになる。StoreServiceは、基礎になるデータベース内のオブジェクトを永続させるためのクライアントへの単一の連絡点を提供するServiceBusサービスである。
このフレームワークは、グラフまたはコレクション内の同一のオブジェクトへの複数の参照が1回だけストアされることを保証する。複数のグラフにまたがる同一オブジェクトへの参照は、ストア内の同一レコードに解決されなければならない。これを保証するために、クラスは、その一意のidを構成するフィールドを指定する必要がある。
デシリアライゼーションが発生し、オブジェクトグラフまたはオブジェクトコレクションが、保存されたレコードから作成される時に、すべてのオブジェクトが、1回だけ作成されなければならない。しかし、オブジェクト参照は、同一コンテキストに属すると指定されない限り、複数のデシリアライゼーション呼出まで含め同一のオブジェクトに解決される必要がない。
ここで具体的にObjectStoreに注意するが、このObjectStoreは、要求の保存および取り出しを処理するコンポーネントである。これから、ObjectStoreに対応する例示的なメソッドおよびコードを示す。
コンストラクタ:ObjectStoreは、保存機構の開始点である。オプションのStoreContextパラメータは、取り出しおよび保存のステージをセットするのに使用される。コンテキストが供給されない場合、StoreContextは、デフォルト値を用いて初期化される。
Write:このメソッドは、呼出し側がオブジェクトoを保存することを可能にする。オブジェクトoは、プリミティブ型、構造体、クラス、またはコレクションとすることができる。
writeメソッドは、オブジェクトが保存された場合に一意のRecordIDを返す。そうでない場合に、このメソッドは、nullを返すか、StoreException例外を送出する。
Read:このメソッドは、RecordIDおよびオブジェクトの型を与えられてオブジェクトを作成する。オーバーロードバージョンは、指定された判断基準に基づくオブジェクトのコレクションを返す。
Delete:このメソッドは、RecordIDおよびオブジェクトの型を与えられてオブジェクトを削除する。オーバーロードバージョンは、指定された判断基準に基づいてオブジェクトを削除する。パラメータは、他のオブジェクトへの参照を再帰的に追跡しなければならないかどうかを示す。削除動作のカスケードは、外部オブジェクトの削除の結果として内部オブジェクトのrefカウントが0になる場合に発生する可能性がある。
Figure 2006085717
次に、シリアライゼーション属性および参照アクション属性を含むカスタム属性の例に注意する。この属性の一部に対応する例示的なコードを提供する。
シリアライゼーション属性
SerializableAttributeおよびNonSerializableAttributeは、ある型のインスタンスをシリアライズできるか否かを示す。ストア可能性(storeability)とシリアライズ可能性(serializability)は、関連する概念として扱われる。ストア可能性は、ファイルまたはデータストアへのシリアライズとして扱われる。
CLSIIdentityAttribute
上で述べたように、CLSIIdentityAttributeは、フィールドが主キーの一部であるかどうかを示すためにフィールドに適用されるカスタム属性である。CLSIIdentityAttributeは、持続性クラスの階層のルートを形成するクラスの少なくとも1つのフィールドに適用されなければならない。
Figure 2006085717
ReferentialActionAttribute
ReferentialActionAttributeは、参照されているオブジェクトが削除された場合に行わなければならないアクションを示すために参照フィールドに適用されるカスタム属性である。
Figure 2006085717
他の属性は、上で図1および図2ならびに対応する例に関して説明した。
次に、SqlStoreに注意するが、これは、SQLデータベースに対する保存要求および取り出し要求を処理するコンポーネントである。SqlStoreは、データベース接続を確立し、Read呼出およびWrite呼出しを、DataAdapterなどによって処理可能な形に変換する。例示的なメソッドおよびSqlStoreに対応するコードを、これから提供する。
コンストラクタ:SqlStoreは、SQL保存機構の開始点である。オプションのStoreContextパラメータは、取り出しおよび保存のステージをセットするのに使用される。コンテキストが供給されない場合に、StoreContextは、次のデフォルト値を用いて初期化される。
a) _database name:「ServiceBus」がセットされる
b) _varMaxLength:1024がセットされる
Write:このメソッドは、呼出し側がオブジェクトoを保存することを可能にする。オブジェクトoは、プリミティブ型、構造体、クラス、またはコレクションとすることができる。
writeメソッドは、オブジェクトが保存されたか既に存在する場合に一意のsqlRecordIDを返す。そうでない場合に、このメソッドは、nullを返すか、StoreException例外を送出する。
Read:このメソッドは、RecordIDを与えられてオブジェクトを作成する。
VarMaxLength:このプロパティは、varchar SQL型およびvarbinary SQL型を定義する間に使用される最大長を与える。デフォルト値は1024である。
Figure 2006085717
本発明は、多数の異なる環境で、さまざまなリレーショナルデータベースと共に実施することができるが、次の例では、SQLデータベースへのオブジェクトの保存に用いられる動作の一部を示す。具体的には、オブジェクトの保存に、SQLデータベース内のリストのアクションが含まれる。
a)テーブルの作成:必要な場合に、オブジェクト型と同等のSQLテーブルが作成される。そうでない場合に、オブジェクトが保存されるSQLテーブルが識別される。
b)オブジェクトに対応するSQLテーブルが使用可能になったならば、主キーを構成するフィールドを使用して、オブジェクトがそのテーブルに既に保存されているかどうかを調べる。行が既に存在する場合には、現在のオブジェクトを用いて更新し、そうでない場合には新しいレコードを作成する。
c)シリアライズ可能なオブジェクトインスタンスのフィールドを保存する。オブジェクトの要素および再帰的なその要素の型に基づいて、必要な場合にさらなるSQLテーブルを作成する。
作成される可能性があるさまざまなテーブルの例を、これから提示する。
ObjectTypeTable
ObjectTypeTableは、CLRクラス/構造のXmlTypeNameをデータソーステーブルの名前にマッピングするSQLテーブルである。保存処理中に作成されるすべてのSQLテーブルについて、1つのエントリがObjectTypeTableに作成される。
Figure 2006085717
ObjectBaseTypeTable
ObjectBaseTypeTableは、クラスの基底クラス関係を維持するSQLテーブルである。保存処理中に作成されるすべてのSQLテーブルについて、1つまたは複数のエントリが、ObjectBaseTypeTable内に作成される。型AがBの基底クラスである場合に、エントリに、ソースとしてAを有する行が含まれる。
このテーブルは、照会中に有用である。
Figure 2006085717
ObjectArrayTable
ObjectArrayTableは、配列を構成する要素を含むSQLテーブルである。すべての配列インスタンスの要素が、これに保存される。
Figure 2006085717
ObjectDictionaryTable
ObjectDictionaryTableは、ディクショナリを構成する要素を含むSQLテーブルである。すべてのディクショナリインスタンスの要素が、これに保存される。実際のキーおよび要素オブジェクトが、そのCLR型に対応するSQLテーブルに保存されることに留意されたい。
Figure 2006085717
次に、CLR型のマッピングに注意する。具体的に言うと、各クラス型は、別々のSQLテーブルとして保存される。クラスのインスタンスの各フィールドの値は、そのSQLテーブルの列値として保存される。
オブジェクトテーブルは、クラス型または構造体型と同等であり、その型の最初のオブジェクトに出会った時にオンザフライで作成される。使用可能な時には必ず、オブジェクトのインスタンス型が使用され、そうでない時には、オブジェクトの宣言された型が使用される。例えば、オブジェクトがnullである場合に、宣言された型が使用される。
クラスサブタイプは、派生クラスのフィールドを含むSQLテーブルに変換され、そのSQLレコードを参照する余分なSqlRecordId列が、ルートクラスインスタンス値に対応する。持続性クラスチェーンは、ObjectTypeTableに保存される。
ルートテーブルには、実際のインスタンス型を与える余分な列が含まれる。ルートオブジェクトテーブルは、refカウントの2つの列も含む。これらは、削除中に有用であり、循環グラフも処理する。一方のrefカウント(このカウントは、2つの値0または1だけを有する)は、オブジェクトがオブジェクトグラフのルートとして渡されたかどうかを記録し、もう1つのrefカウントは、このオブジェクトを参照するオブジェクトの総数を維持する。行は、両方のrefカウントが0になる場合に限って削除される。
テーブルの主キー型は、オブジェクト型のカスタム属性から判定される。主キーを指定するカスタム属性を、型の1つまたは複数のフィールドについてセットすることができる。ルート持続性クラスに、この属性を有する少なくとも1つのフィールドが含まれなければならない。SqlStoreは、自動的に生成される一意のidを含むSqlRecordId列も、テーブル定義に追加する。このidは、64ビット数であり、SQLテーブル内で一意であり、代替キーとして定義される。SqlRecordIdは、必ず、主キーが明示的に指定されている場合であっても、このオブジェクトを参照する内部オブジェクトで外部キーとして使用される。
主キーを構成するすべてのフィールドが、ルート持続性クラスのシリアライズ可能メンバでなければならない。そうでなければ、オブジェクトが既に保存されているかどうかを検査するために、主キーの参照フィールドのSqlRecordIdをまず入手しなければならない。参照フィールド自体が、その主キーに参照フィールドを含む可能性があるので、これが再帰的処理になることに留意されたい。次の段落に、この例を示す。
Figure 2006085717
ここで、オブジェクト「a」が既に永続しているかどうかを知るために、a.idに対応するSqlRecordIdのMediaIdテーブルを照会する必要がある。これを取得すると、SqlRecordId値およびlocation値によって与えられる主キーについてMediaテーブルを照会することができる。
フィールドを有しないクラスは、SqlRecordIdである単一の列を有するSQLテーブルに変換される。その例を示す。
Figure 2006085717
Figure 2006085717
ここで、bのobjIDが1であり、cのobjIDが2であると仮定する。この場合に、id 1を有する行は、BTABLEに現れ、id 2を有する行は、BTABLEおよびCTABLEに現れる。
クラス型として型を与えられたクラスメンバは、それを含むクラスについて作成されたSQLテーブルのSqlRecordId列に変換される。外部キー制約は、この列に課せられる。これは、内部クラス型のサブタイプのインスタンスが、それが含むクラスインスタンスにも存在できる場合であっても可能である。というのは、すべてのidが、ルートクラスレベルで一意だからである。参照される行のrefCount列およびrootRefCount列は、適当に維持される。
クラスメンバは、それがクラス型であり、主キーの一部でない場合にはヌル可能である。プリミティブ型および構造体であるメンバは、ヌル可能でない。SQLテーブル定義で、ヌル可能フィールドは、ヌル可能と指定される。
あるオブジェクトグラフ内のクラスインスタンスAおよびBに、お互いへの参照が含まれる時に、AおよびBは、1回だけ保存される。AおよびBに、お互いのSqlRecordIdが含まれる。例は次の通りである。
Figure 2006085717
一実施形態で、構造体型は、フィールドを有する別々のテーブルとして変換される。CLR構造体は、値型であるが、boxed構造体への複数の参照の場合を最適化するために、独立のテーブルが作成される。構造体は、継承チェーンを有しないクラスと正確に同一に扱われる。
構造インスタンスの各フィールドの値は、テーブル内の列値として保存される。構造体型を有するクラスまたは構造体メンバは、そのクラス用に作成されたSQLテーブル内のSqlRecordId列に変換される。
第2の実施形態で、構造体型として型を付けられたクラスメンバのメンバは、囲むクラスで構造体型として型を付けられたクラスメンバ名をプリフィックスとする、構造体型のメンバに対応する列名を有する囲むクラスについて作成された同一のテーブルに保存される。
第3の実施形態で、構造体型として型を付けられたクラスメンバのメンバは、囲むクラスのために作成されたテーブルにユーザ定義型(UDT)として保存される。
プリミティブ型を有するオブジェクトは、プリミティブ型テーブルとして変換される。プリミティブ型テーブルに、2つの列すなわち、SqlRecordId列とプリミティブ型の列が含まれる。一実施形態によれば、プリミティブ型のオブジェクトの選択的な取出および削除が、サポートされない。
プリミティブ型を有するクラスまたは構造体メンバは、次のようにSQLテーブル内の列として変換される。列の値は、プリミティブ型の値である。
Figure 2006085717
配列は、一意のSqlRecordIdを発行され、ObjectArrayTableに、その要素に対応する複数の行として保存される。このテーブルの各行に、配列インスタンスのSqlRecordIdおよび要素インデックスが含まれる。実際の要素は、そのインスタンス型に対応するテーブルにス保存される。配列が、クラスのメンバである場合に、配列のSqlRecordIdが、囲むクラスに保存される。
ArrayList、Queue:これらは、配列と同一の形で扱われ、ObjectArrayTableに保存される。
HashTable:これは、配列に似た形で扱われるが、ObjectDictionaryTableには保存される。このテーブルの各行に、要素インスタンスのSqlRecordIdおよび要素キーが含まれる。
オブジェクトの取り出しおよび照会
オブジェクトは、(1)そのSqlRecordIDおよび型を使用して、または(2)選択判断基準および型を使用してという2つの形で取り出すことができる。この型は、永続クラス階層内の、ルートからオブジェクトの実際の型までの任意の型とすることができる。SqlRecordIDが指定され、型がコレクションでない場合には、取り出すために次のステップを実行することができる。
a)ObjectTypeTableをルックアップし、その型のルートテーブル名を入手する。
b)オブジェクトの実際の型を入手する。
c)ObjectTypeTableからインスタンスのテーブル名を入手する。
d)SQLテーブルから行を入手する。
e)テーブル名からCLR型の完全修飾名を入手する。
f)デフォルトコンストラクタ(永続オブジェクトはデフォルトコンストラクタを有すると期待される)を使用して、入手したCLR型のオブジェクトを作成する。
g)CLR型がプリミティブ型である場合に、値を直接に割り当てる。
h)CLR型がクラスまたは構造体である場合に、オブジェクトのフィールドに、行のフィールドを割り当てる。プリミティブフィールドについて、直接に割り当て、他のフィールドについて、再帰的に、レコードidに従い、参照されたオブジェクトを取り出す。参照されたオブジェクト自体が、クラス、構造体、またはコレクションである場合があることに留意されたい。
i)オブジェクトグラフをデシリアライズする間にオブジェクトが1回だけ作成されることを覚えておくこと。
SqlRecordIDが指定され、型がコレクションである場合に、取り出すために次のステップを実施することができる。
a)コレクションidとして、指定されたidを用いて、関連するコレクションテーブルの行数を入手する。行と同数の要素をコレクション内で作成する。
b)要素ごとに、再帰的に、オブジェクト取り出しルールに従う。
照会を与えられてオブジェクトを取り出すことは、より複雑であり、次を含む可能性がある。
a)照会変換ルールに従い、照会をSQLに変換する。
b)照会を実行し、型のSQLテーブルに一致する行を入手する。
c)行ごとにオブジェクト取り出しルールに従う。
オブジェクトは、(1)そのSqlRecordIDおよび型を使用して、または(2)選択判断基準および型を使用してという2つの形で削除することができる。型は、永続クラス階層内の、ルートからオブジェクトの実際の型までの任意の型とすることができる。SqlRecordIDが指定され、型がコレクションでない場合には、削除のために次のステップを実行することができる。
a)オブジェクトテーブルからルートテーブルidを入手する。
b)ルートテーブルの行を入手する。ルートrefカウントを減分する。
c)実際のオブジェクト型を入手する。階層チェーンに従い、オブジェクトに対応する各行のフィールドをたどり、非プリミティブフィールドのレコードidを入手する。
d)非プリミティブフィールドごとに、参照されたテーブルidを入手する。参照された行の到達可能refカウントを減分する。再帰的に、内部非プリミティブフィールドをトラバースし、同一のルールを適用する。両方のrefカウントが0になる場合に、参照された行を削除する。
e)ルートrefカウントおよび到達可能refカウントの両方が0である場合に、オリジナル行を削除する。
ステップc、dは、recurseパラメータに真がセットされている場合に限って行われなければならない。SqlRecordIDが指定され、型がコレクションである場合に、削除のために次のステップを実施することができる。
a)コレクションidとして指定されたidを有する関連するコレクションテーブルの行を入手する。
b)要素ごとに、再帰的にオブジェクト削除ルールに従う。
照会を与えられてオブジェクトを削除することは、より複雑であり、次を含む可能性がある。
a)照会変換ルールに従い、照会をSQLに変換する。
b)照会を実行し、型のSQLテーブル内の一致する行を入手する。
c)行ごとにオブジェクト削除ルールに従う。
前述に基づいて、さまざまな種類の照会を、上で説明したデータベース構造およびテーブルに保存されたデータに対して実行することもできることをも諒解されたい。図1および2に関して説明した例に対して実行できる照会の非制限的な例を、これから提供する。例えば、郵便番号98074に住んでいる顧客(customer)の購入注文を取り出すために、XPATH照会は、次のようなものになる:/Customers[typeof(address) == USAddress && address.zip == 98074]/orders。同様に、少なくとも1つの購入注文が未解決である顧客(customer)の住所を取り出すために、XPATH照会は、次のようなものになる:/Customers[Count(orders) > 0]/address。同様に、少なくとも1つの曲を有する「Sting」のアルバムを取り出すために、XPATH照会は、次のようなものになる:/Albums[Exists(artists, name == ”Sting”) && count(songs) > 0]。Groovyという題名のアルバムの曲を取り出すために、XPATH照会は、次のようなものになる:/Albums[title == ”Groovy”]/songs。最後に、「Whenever」という題名の曲を含まるアルバムを取り出すために、XPATH照会は、次のようなものになる:/Songs[title == ”Whenever”]/album。
前述の実装詳細および本明細書で提供した例にかかわらず、本発明の範囲が、テーブルまたは他のデータ構造が、保存されるクラスのオブジェクトおよびフィールドとデータ型とに関連する属性および他のアドーンメントに応答して作成される、すべての方法、システム、またはコンピュータプログラム製品に広く及んでいることを理解されたい。データを保存するデータベース機構を作成するそのような方法は、データベースに関するプログラマの専門知識に依存するのではなく、データに関する所期の使用の知識だけに依存する。これは、プログラマがデータベースを構成する方法を理解することを必要とするAccess(登録商標)および他のデータベースツールなどの従来技術システムに対して改善されたことを表す。
本発明は、データベース機構をスケーラブルなものとし、さまざまな異なるデータフォーマットおよびリレーショナルデータベースシステムと相互動作可能とすることも可能にする。したがって、本発明をさまざまなコンピューティング環境で実施できることを理解されたい。本発明を実施できる適切なコンピューティング環境の一例を続けて説明する。
コンピューティング環境 上で説明した方法は、パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルなコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む、さまざまな構成を有する任意の個数のコンピューティングモジュール、システム、およびネットワークコンピューティング環境の使用を用いて実行することができる。本発明は、通信ネットワークを介してリンクされた(ハードワイヤードリンク、無線リンク、またはハードワイヤードリンクもしくは無線リンクの組合せのいずれかによって)ローカル処理装置およびリモート処理装置によってタスクが実行される分散コンピューティング環境でも実践することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートの両方のメモリ保存装置に置くことができる。
図4を参照すると、本発明を実施する例示的なシステムに、通常のコンピュータ420の形の汎用コンピューティング装置が含まれ、コンピュータ420には、処理ユニット421、システムメモリ422、およびシステムメモリ422を含むさまざまなシステムコンポーネントを処理ユニット421に結合するシステムバス423が含まれる。システムバス423は、さまざまなバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む複数の種類のバス構造のいずれかとすることができる。システムメモリに、読取専用メモリ(ROM)424およびランダムアクセスメモリ(RAM)425が含まれる。スタートアップ中などにコンピュータ420内の要素の間で情報を転送する基本ルーチンを含む基本入出力システム(BIOS)426を、ROM 424に保存することができる。
コンピュータ420は、磁気ハードディスク439から読み取り、これに書き込む磁気ハードディスクドライブ427、リムーバブル磁気ディスク429から読み取り、これに書き込む磁気ディスクドライブ428、CD−ROM、DVD−ROM、または他の光学ディスクなどのリムーバブル光学ディスク431から読み取り、これに書き込む光学ディスクドライブ430も備えることができる。磁気ハードディスクドライブ427、磁気ディスクドライブ428、および光学ディスクドライブ430は、それぞれハードディスクドライブインターフェース432、磁気ディスクドライブインターフェース433、および光学ドライブインターフェース434によってシステムバス423に接続される。ドライブおよびそれに関連するコンピュータ読取可能な媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性保存をコンピュータ420に与える。本明細書で説明する例示的な環境では、磁気ハードディスク439、リムーバブル磁気ディスク429、およびリムーバブル光学ディスク431が使用されるが、磁気カセット、フラッシュメモリカード、ディジタル多用途ディスク、ベルヌーイカートリッジ、RAM、ROM、および類似物を含む、データを保存するための他の種類のコンピュータ読取可能な媒体を使用することができる。
オペレーティングシステム435、1つまたは複数のアプリケーションプログラム436、他のプログラムモジュール437、およびプログラムデータ438を含む、1つまたは複数のプログラムモジュールを含むプログラムコード部を、ハードディスク439、磁気ディスク429、光学ディスク431、ROM 424、またはRAM 425に保存することができる。ユーザは、キーボード440、ポインティング装置442、または、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、もしくは類似物などの他の入力装置(図示せず)を介してコンピュータ420にコマンドおよび情報を入力することができる。上記および他の入力装置は、しばしば、システムバス423に結合されたシリアルポートインターフェース446を介して処理ユニット421に接続される。代替案では、入力装置を、パラレルポート、ゲームポート、またはuniversal serial bus(USB)などの他のインターフェースによって接続することができる。モニタ447または他のディスプレイ装置も、ビデオアダプタ448などのインターフェースを介してシステムバス423に接続される。モニタのほかに、パーソナルコンピュータに、通常、スピーカおよびプリンタなどの他の周辺出力装置(図示せず)が含まれる。
コンピュータ420は、リモートコンピュータ449aおよび449bなどの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。リモートコンピュータ449aおよび449bのそれぞれは、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般的なネットワークノードとすることができ、通常は、コンピュータ420に関して上で説明した要素の多くまたはすべてが含まれるが、図4には、メモリ保存装置450aおよび450bと、それに関連するアプリケーションプログラム436aおよび436bだけを示した。図4に示された論理接続に、制限ではなく例として提示された、ローカルエリアネットワーク(LAN)451および広域ネットワーク(WAN)452が含まれる。そのようなネットワーキング環境は、オフィス全体または会社全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
LANネットワーキング環境で使用される時に、コンピュータ420は、ネットワークインターフェースまたはネットワークアダプタ453を介してローカルネットワーク451に接続される。WANネットワーキング環境で使用される時に、コンピュータ420に、インターネットなどの広域ネットワーク452を介する通信を確立する、モデム454、無線リンク、または他の手段が含まれる。モデム454は、内蔵または外付けとすることができるが、シリアルポートインターフェース446を介してシステムバス423に接続される。ネットワーク化された環境では、コンピュータ420に関して示したプログラムモジュールまたはその一部を、リモートメモリ保存装置に保存することができる。図示のネットワーク接続が例示的であり、広域ネットワーク452を介する通信を確立する他の手段を使用できることを諒解されたい。
本発明は、その趣旨または本質的な特性から逸脱せずに、他の特定の形で実施することができる。説明した実施形態は、すべての点で例示的であり、制限的でないと考えられなければならない。したがって、本発明の範囲は、前述の説明ではなく請求項によって示される。請求項の意味および同等性の範囲に含まれるすべての変更が、その範囲に含まれる。
対応するデータ型にアタッチされたアドーンメントによる、1特定の実施形態で作成できる型テーブルのセットを示す図である。 対応するデータ型にアタッチされたアドーンメントによる、1特定の実施形態で作成できる型テーブルのセットを示す図である。 対応するデータ型にアタッチされたアドーンメントによる、1特定の実施形態で作成できる型テーブルのセットを示す図である。 対応するデータ型にアタッチされたアドーンメントによる、1特定の実施形態で作成できる型テーブルのセットを示す図である。 対応するデータ型にアタッチされたアドーンメントによる、1特定の実施形態で作成できるもう1セットの型テーブルを示す図である。 対応するデータ型にアタッチされたアドーンメントによる、1特定の実施形態で作成できるもう1セットの型テーブルを示す図である。 本発明の一実施形態による、データを保存する方法に対応する流れ図である。 本発明の方法を実践できる適切なコンピューティング環境の一実施形態を示す図である。
符号の説明
100a Albumテーブル
100b Songテーブル
100c Artistテーブル
100d Collectionsテーブル
200a Customerテーブル
200b Purchase Orderテーブル
421 処理ユニット
422 システムメモリ
423 システムバス
424 (ROM)
425 (RAM)
426 BIOS
432 ハードディスクドライブインターフェース
433 磁気ディスクドライブインターフェース
434 光学ドライブインターフェース
435 オペレーティングシステム
436 アプリケーションプログラム
436a アプリケーションプログラム
436b アプリケーションプログラム
437 他のプログラムモジュール
438 プログラムデータ
440 キーボード
446 シリアルポートインターフェース
447 モニタ
448 ビデオアダプタ
449a リモートコンピュータ
449b リモートコンピュータ

451 ローカルエリアネットワーク
452 広域ネットワーク
453 ネットワークインターフェース
454 モデム

Claims (44)

  1. 1つまたは複数のデータ型のオブジェクトを保存する持続性データストアを作成する方法であって、
    コードのセグメント内で識別された1つまたは複数のデータ型を含むコードの前記セグメントを受信するステップと、
    前記データ型の少なくとも1つに関連する少なくとも1つのアドーンメント(adornment)を識別するステップと、
    前記少なくとも1つのアドーンメントに基づいて、前記データを保存するのに使用されるスキーマを判定するステップと、
    前記データストアが存在するかどうかを判定するステップと、
    前記データストアが存在しないと判定されると、前記データストアを作成するステップと
    を備えたことを特徴とする方法。
  2. 前記データストアは、前記1つまたは複数のデータ型の前記アドーンメントおよび定義以外の前記データストアを定義する特定の入力を受信せずに作成されることを特徴とする請求項1に記載の方法。
  3. 前記使用されるデータストアのスキーマを判定するステップは、前記データストアに保存される前記データ型およびデータの照会を最適化するスキーマを判定するステップを含むことを特徴とする請求項1に記載の方法。
  4. 前記データストアを作成するステップは、1つまたは複数のデータベーステーブルを作成するステップを含むことを特徴とする請求項1に記載の方法。
  5. 前記1つまたは複数のデータベーステーブルを作成ステップは、前記1つまたは複数のデータベーステーブルに、前記コード内の対応するフィールドによって識別される少なくともいくつかのフィールドを取り込むステップを含むことを特徴とする請求項4に記載の方法。
  6. 前記1つまたは複数のデータベーステーブルを作成するステップは、基底クラスデータベーステーブルと、前記基底クラスデータベーステーブルと相互参照される少なくとも1つのサブクラスデータベーステーブルとを作成するステップを含むことを特徴とする請求項4に記載の方法。
  7. 前記コードで識別された前記型を定義し、前記対応するデータベーステーブルの各々を識別する型テーブルを作成するステップをさらに備えたことを特徴とする請求項4に記載の方法。
  8. 前記データストアを作成するステップは、1つまたは複数のXMLファイルを作成するステップを含むことを特徴とする請求項1に記載の方法。
  9. 異なるデータベーステーブルは、前記コードで定義されたすべての型について作成されることを特徴とする請求項1に記載の方法。
  10. 前記少なくとも1つのアドーンメントは、前記少なくとも1つのデータ型のフィールドをインデクシングしなければならないことを指定する属性を含むことを特徴とする請求項1に記載の方法。
  11. 前記少なくとも1つのアドーンメントは、前記少なくとも1つのデータ型の1つまたは複数のフィールドを前記型に関する一意のキーにしなければならないことを指定する属性を含むことを特徴とする請求項1に記載の方法。
  12. 前記少なくとも1つのアドーンメントは、1対1関係を指定する属性を含むことを特徴とする請求項1に記載の方法。
  13. 前記少なくとも1つのアドーンメントは、前記少なくとも1つのデータ型のフィールドを別のデータ構造内のオブジェクトへのバックポインタにしなければならないことを指定する属性を含むことを特徴とする請求項1に記載の方法。
  14. 前記少なくとも1つのデータ型に対応する前記コード内で定義された少なくとも1つのフィールドは、アドーンメントを付されず(unadorned)、当該アドーンメントが付されないことは、1対多関係が存在しなければならないことを示すことを特徴とする請求項1に記載の方法。
  15. 前記データストアは、ディクショナリ、コレクション、および配列のうちの1つを含むことを特徴とする請求項1に記載の方法。
  16. 1つまたは複数のデータ型のオブジェクトを保存し、前記オブジェクトに対応するデータを保存する持続性データストアを作成する方法であって、
    コードのセグメントで識別された1つまたは複数のデータ型を含むコードの前記セグメントを受信するステップと、
    前記データ型の少なくとも1つに関連する少なくとも1つのアドーンメントを識別するステップと、
    前記少なくとも1つのアドーンメントに基づいて、前記データを保存するのに使用されるスキーマおよびデータ構造を判定するステップと、
    前記データ構造が存在するかどうかを判定するステップと、
    前記データ構造が存在しないと判定される時に、前記データ構造を作成するステップと、
    前記データ構造に保存されるデータを受信するステップと、
    前記データが既に保存されているかどうかを判定するステップと、
    前記データが既に保存されていないと判定されると、前記アドーンメントおよび前記コードで提供される記述に従って前記データ構造に前記データを保存するステップと
    を備えたことを特徴とする方法。
  17. 前記データ構造は、前記1つまたは複数のデータ型の前記アドーンメントおよび定義以外の前記データ構造を定義する特定の入力を受信することなしに作成されることを特徴とする請求項16に記載の方法。
  18. 前記データが既に保存されていないと判定するステップは、前記データ内の前記アドーンメントによって定義された一意の識別フィールドを検査するステップと、前記データ内の前記一意の識別フィールドが前記データ構造内に既に存在しないことを確かめるステップとを含むことを特徴とする請求項16に記載の方法。
  19. 使用されるスキーマを判定するステップは、前記データ構造に保存される前記データ型およびデータの照会を最適化するスキーマを判定するステップを含むことを特徴とする請求項16に記載の方法。
  20. 前記データ型に対応する前記データストアスキーマは、1つまたは複数のデータベーステーブルを含むことを特徴とする請求項16に記載の方法。
  21. 前記データベーステーブルへの前記データを保存するステップは、後の前記データの照会を最適化する形で、前記データの少なくとも一部を前記テーブルに取り込むステップを含むことを特徴とする請求項20に記載の方法。
  22. 前記データは既に保存されていると判定されると、前記データを変更するステップをさらに備えたことを特徴とする請求項16に記載の方法。
  23. 1つまたは複数のデータ型のオブジェクトを保存する持続性データストアを作成する方法を実施するコンピュータ実行可能命令を有する1つまたは複数のコンピュータ読取可能な媒体を含むコンピュータプログラム製品であって、前記方法は、
    コードのセグメント内で識別された1つまたは複数のデータ型を含むコードの前記セグメントを受信するステップと、
    前記データ型の少なくとも1つに関連する少なくとも1つのアドーンメントを識別するステップと、
    前記少なくとも1つのアドーンメントに基づいて、前記データを保存するのに使用されるスキーマを判定するステップと、
    前記データストアが存在するかどうかを判定するステップと、
    前記データストアが存在しないと判定されると、前記データストアを作成するステップと
    を備えたことを特徴とするコンピュータプログラム製品。
  24. 前記データストアは、前記1つまたは複数のデータ型の前記アドーンメントおよび定義以外の前記データストアを定義する特定の入力を受信せずに作成されることを特徴とする請求項23に記載のコンピュータプログラム製品。
  25. 前記使用されるデータストアを判定するステップは、前記データストアに保存される前記データ型およびデータの照会を最適化するスキーマを判定するステップを含むことを特徴とする請求項23に記載のコンピュータプログラム製品。
  26. 前記データストアを作成するステップは、1つまたは複数のデータベーステーブルを作成するステップを含むことを特徴とする請求項23に記載のコンピュータプログラム製品。
  27. 前記データベーステーブルを作成するステップは、前記テーブルに、前記コード内の対応するフィールドによって識別される少なくともいくつかのフィールドを取り込むステップを含むことを特徴とする請求項26に記載のコンピュータプログラム製品。
  28. 前記1つまたは複数のデータベーステーブルを作成するステップは、基底クラスデータベーステーブルと、前記基底クラスデータベーステーブルと相互参照される少なくとも1つのサブクラスデータベーステーブルとを作成するステップを含むことを特徴とする請求項26に記載のコンピュータプログラム製品。
  29. 前記方法は、前記コードで識別された前記型を定義し、前記対応するデータベーステーブルの各々を識別する型テーブルを作成するステップをさらに備えたことを特徴とする請求項23に記載のコンピュータプログラム製品。
  30. 異なるデータベーステーブルは、前記コードで定義されたすべての型について作成されることを特徴とする請求項23に記載のコンピュータプログラム製品。
  31. 前記少なくとも1つのアドーンメントは、前記少なくとも1つのデータ型のフィールドが索引づけられるべきことを指定する属性を含むことを特徴とする請求項23に記載のコンピュータプログラム製品。
  32. 前記少なくとも1つのアドーンメントは、前記少なくとも1つのデータ型のフィールドを前記型に関する一意のキーにしなければならないことを指定する属性を含むことを特徴とする請求項23に記載のコンピュータプログラム製品。
  33. 前記少なくとも1つのアドーンメントは、1対1関係を指定する属性を含むことを特徴とする請求項23に記載のコンピュータプログラム製品。
  34. 前記少なくとも1つのアドーンメントは、前記少なくとも1つのデータ型のフィールドを別のデータ構造内のオブジェクトへのバックポインタにしなければならないことを指定する属性を含むことを特徴とする請求項23に記載のコンピュータプログラム製品。
  35. 前記少なくとも1つのデータ型に対応する前記コード内で定義された少なくとも1つのフィールドは、アドーンメントを付されず、当該アドーンメントが付されないことは、多対1関係が存在しなければならないことを示すことを特徴とする請求項23に記載のコンピュータプログラム製品。
  36. 前記データストアを作成するステップは、1つまたは複数のXMLファイルを作成するステップを含むことを特徴とする請求項23に記載のコンピュータプログラム製品。
  37. 前記データストアは、ディクショナリ、コレクション、および配列のうちの1つを含むことを特徴とする請求項23に記載のコンピュータプログラム製品。
  38. 1つまたは複数のデータ型のオブジェクトを保存し、前記オブジェクトに対応するデータを保存する持続性データストアを作成する方法を実施するコンピュータ実行可能命令を有する1つまたは複数のコンピュータ読取可能な媒体を含むコンピュータプログラム製品であって、前記方法は、
    コードのセグメントで識別された1つまたは複数のデータ型を含むコードの前記セグメントを受信するステップと、
    前記データ型の少なくとも1つに関連する少なくとも1つのアドーンメントを識別するステップと、
    前記少なくとも1つのアドーンメントに基づいて、前記データを保存するのに使用されるスキーマおよび1つまたは複数のデータ構造を判定するステップと、
    前記1つまたは複数のデータ構造が存在するかどうかを判定するステップと、
    前記1つまたは複数のデータ構造が存在しないと判定されると、前記1つまたは複数のデータ構造を作成するステップと、
    前記1つまたは複数のデータ構造に保存されるデータを受信するステップと、
    前記データが既に保存されているかどうかを判定するステップと、
    前記データが既に保存されていないと判定されると、前記アドーンメントおよび前記コードで提供される記述に従って前記1つまたは複数のデータ構造に前記データを保存するステップと
    を備えたことを特徴とするコンピュータプログラム製品。
  39. 前記1つまたは複数のデータ構造は、前記1つまたは複数のデータ型の前記アドーンメントおよび定義以外の前記1つまたは複数のデータ構造を定義する特定の入力を受信することなしに作成されることを特徴とする請求項38に記載のコンピュータプログラム製品。
  40. 前記データが既に保存されていないと判定するステップは、前記データ内の前記アドーンメントによって定義された一意の識別フィールドを検査するステップと、前記データ内の前記一意の識別フィールドが前記1つまたは複数のデータ構造内に既に存在しないことを確かめるステップとを含むことを特徴とする請求項38に記載のコンピュータプログラム製品。
  41. 前記1つまたは複数のデータ構造が存在するかどうかを判定するステップは、保存される前記データ型およびデータの照会を最適化するデータ構造を判定するステップを含むことを特徴とする請求項38に記載のコンピュータプログラム製品。
  42. 前記データ構造は、1つまたは複数のデータベーステーブルを含むことを特徴とする請求項38に記載のコンピュータプログラム製品。
  43. 前記1つまたは複数のデータベーステーブルへ前記データを保存するステップは、後の前記データの照会を最適化する形で、前記データの少なくとも一部を前記1つまたは複数のテーブルに取り込むステップを含むことを特徴とする請求項42に記載のコンピュータプログラム製品。
  44. 前記データは既に保存されていると判定されると、前記データを変更するステップをさらに備えたことを特徴とする請求項38に記載のコンピュータプログラム製品。
JP2005270449A 2004-09-17 2005-09-16 .netデータ型およびインスタンスの持続性ストレージ Expired - Fee Related JP4809652B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/944,634 2004-09-17
US10/944,634 US7493313B2 (en) 2004-09-17 2004-09-17 Durable storage of .NET data types and instances

Publications (2)

Publication Number Publication Date
JP2006085717A true JP2006085717A (ja) 2006-03-30
JP4809652B2 JP4809652B2 (ja) 2011-11-09

Family

ID=35511265

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005270449A Expired - Fee Related JP4809652B2 (ja) 2004-09-17 2005-09-16 .netデータ型およびインスタンスの持続性ストレージ

Country Status (10)

Country Link
US (1) US7493313B2 (ja)
EP (1) EP1638024A3 (ja)
JP (1) JP4809652B2 (ja)
KR (1) KR101153139B1 (ja)
CN (1) CN1749999B (ja)
AU (1) AU2005203667B2 (ja)
BR (1) BRPI0503650A (ja)
CA (1) CA2516004A1 (ja)
MX (1) MXPA05008737A (ja)
RU (1) RU2400803C2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493313B2 (en) 2004-09-17 2009-02-17 Microsoft Corporation Durable storage of .NET data types and instances
US7996443B2 (en) * 2005-02-28 2011-08-09 Microsoft Corporation Schema grammar and compilation
US8612468B2 (en) * 2005-03-02 2013-12-17 Red Hat, Inc. System and method for retrieving data from a relational database management system
US7756839B2 (en) 2005-03-31 2010-07-13 Microsoft Corporation Version tolerant serialization
US7634515B2 (en) * 2005-05-13 2009-12-15 Microsoft Corporation Data model and schema evolution
US7984107B2 (en) * 2005-09-09 2011-07-19 Microsoft Corporation Proxy assembly for simulating real assembly features on a remote device
US7627852B1 (en) * 2006-01-17 2009-12-01 Xilinx, Inc. Embedding an interpreter within an application written in a different programming language
US7873967B2 (en) * 2006-02-27 2011-01-18 Microsoft Corporation Pluggable business logic
US20080005065A1 (en) * 2006-02-27 2008-01-03 Microsoft Corporation Base business object key
US7801926B2 (en) * 2006-11-22 2010-09-21 Microsoft Corporation Programmable logic and constraints for a dynamically typed storage system
CN100456238C (zh) * 2007-03-12 2009-01-28 华为技术有限公司 实现分布式对象持久化的方法、装置及编译单元
WO2010121218A2 (en) * 2009-04-16 2010-10-21 Tibco Software Inc. Policy-based storage structure distribution
US9141621B2 (en) * 2009-04-30 2015-09-22 Hewlett-Packard Development Company, L.P. Copying a differential data store into temporary storage media in response to a request
US8516011B2 (en) * 2010-10-28 2013-08-20 Microsoft Corporation Generating data models
US8793706B2 (en) 2010-12-16 2014-07-29 Microsoft Corporation Metadata-based eventing supporting operations on data
WO2015027425A1 (zh) * 2013-08-29 2015-03-05 华为技术有限公司 存储数据的方法和装置
US9639568B2 (en) * 2014-05-01 2017-05-02 Aktiebolaget Skf Systems and methods for improved data structure storage
US9558216B2 (en) * 2014-11-21 2017-01-31 Sap Se Moving tables across nodes in an in-memory database instance
WO2016155510A1 (en) * 2015-03-28 2016-10-06 Huawei Technologies Co., Ltd. Apparatus and method for creating user defined variable size tags on records in rdbms
CN108845791B (zh) * 2018-05-31 2022-03-18 浪潮金融信息技术有限公司 应用程序代码开发处理方法及装置、可读存储介质、终端
KR102141640B1 (ko) * 2020-04-13 2020-08-05 주식회사 데이터월드 실시간 네트워크 데이터 관리 방법 및 이를 실행하는 서버

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099561A (ja) * 2000-09-21 2002-04-05 Toshiba Corp データ変換方法およびデータ変換システム並びに記憶媒体
WO2003030031A2 (en) * 2001-09-28 2003-04-10 Oracle International Corporation Mechanism for mapping xml schemas to object-relational database systems
JP2003316765A (ja) * 2002-04-23 2003-11-07 Hitachi Ltd 階層化文書マッピング装置
JP2004259209A (ja) * 2003-02-27 2004-09-16 Mitsui Sumitomo Insurance Co Ltd データベース管理システム、データベース管理装置、データベース管理方法、及びデータベース管理プログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809266A (en) * 1994-07-29 1998-09-15 Oracle Corporation Method and apparatus for generating reports using declarative tools
US5819086A (en) * 1995-06-07 1998-10-06 Wall Data Incorporated Computer system for creating semantic object models from existing relational database schemas
US7013298B1 (en) * 1996-07-30 2006-03-14 Hyperphrase Technologies, Llc Method and system for automated data storage and retrieval
US5878411A (en) * 1997-06-27 1999-03-02 International Business Machines Corporation Dependent object class and subclass mapping to relational data store
US6487558B1 (en) * 1997-06-27 2002-11-26 Sun Microsystems, Inc. Method for generating database server configuration documentation
US6243709B1 (en) * 1998-06-29 2001-06-05 Sun Microsystems, Inc. Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
US6453310B1 (en) * 1998-10-26 2002-09-17 Microsoft Corporation Installable schema for low-overhead databases
US6601233B1 (en) * 1999-07-30 2003-07-29 Accenture Llp Business components framework
US7222066B1 (en) * 1999-11-25 2007-05-22 Yeong Kuang Oon Unitary language for problem solving resources for knowledge based services
US7124144B2 (en) * 2000-03-02 2006-10-17 Actuate Corporation Method and apparatus for storing semi-structured data in a structured manner
US6834285B1 (en) * 2000-03-24 2004-12-21 Numoda Corporation Computer system for portable digital data capture and data distribution
US6701514B1 (en) * 2000-03-27 2004-03-02 Accenture Llp System, method, and article of manufacture for test maintenance in an automated scripting framework
US6542911B2 (en) 2001-03-01 2003-04-01 Sun Microsystems, Inc. Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache
US8055907B2 (en) * 2003-10-24 2011-11-08 Microsoft Corporation Programming interface for a computer platform
US20050108684A1 (en) * 2003-11-14 2005-05-19 Sohn Matthias E. Method and system for generating an application object repository from application framework metadata
US20050278709A1 (en) * 2004-06-15 2005-12-15 Manjula Sridhar Resource definition language for network management application development
US7493313B2 (en) 2004-09-17 2009-02-17 Microsoft Corporation Durable storage of .NET data types and instances

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099561A (ja) * 2000-09-21 2002-04-05 Toshiba Corp データ変換方法およびデータ変換システム並びに記憶媒体
WO2003030031A2 (en) * 2001-09-28 2003-04-10 Oracle International Corporation Mechanism for mapping xml schemas to object-relational database systems
JP2003316765A (ja) * 2002-04-23 2003-11-07 Hitachi Ltd 階層化文書マッピング装置
JP2004259209A (ja) * 2003-02-27 2004-09-16 Mitsui Sumitomo Insurance Co Ltd データベース管理システム、データベース管理装置、データベース管理方法、及びデータベース管理プログラム

Also Published As

Publication number Publication date
JP4809652B2 (ja) 2011-11-09
MXPA05008737A (es) 2006-04-24
KR101153139B1 (ko) 2012-06-04
BRPI0503650A (pt) 2006-05-02
RU2005129003A (ru) 2007-04-10
KR20060050965A (ko) 2006-05-19
CN1749999A (zh) 2006-03-22
US20060064425A1 (en) 2006-03-23
CA2516004A1 (en) 2006-03-17
RU2400803C2 (ru) 2010-09-27
AU2005203667B2 (en) 2010-07-29
EP1638024A3 (en) 2006-08-30
CN1749999B (zh) 2010-12-08
AU2005203667A1 (en) 2006-04-06
EP1638024A2 (en) 2006-03-22
US7493313B2 (en) 2009-02-17

Similar Documents

Publication Publication Date Title
JP4809652B2 (ja) .netデータ型およびインスタンスの持続性ストレージ
KR101022929B1 (ko) 데이터에 대한 함수 적용의 결과에 대한 구조화된 인덱스
US8356029B2 (en) Method and system for reconstruction of object model data in a relational database
US7599948B2 (en) Object relational mapping layer
US7707168B2 (en) Method and system for data retrieval from heterogeneous data sources
US6356913B1 (en) Generic (database-independent) and dynamically-modifiable schema
JP4552242B2 (ja) 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法
US5829006A (en) System and method for efficient relational query generation and tuple-to-object translation in an object-relational gateway supporting class inheritance
US7409387B2 (en) Materialized query table matching with query expansion
US8010887B2 (en) Implementing versioning support for data using a two-table approach that maximizes database efficiency
US20040015516A1 (en) Object graph faulting and trimming in an object-relational database system
US20070027849A1 (en) Integrating query-related operators in a programming language
US7539672B2 (en) Apparatus, system, and method for direct retrieval of hierarchical data from SAP using dynamic queries
EP1068577A1 (en) Object model mapping and runtime engine for employing relational database with object oriented software
JPH08235195A (ja) ディジタル・データ送信を記憶し検索する方法
JP2007509431A (ja) タイプ・パス索引付け
US7509332B1 (en) Customized indexes for user defined data types
US8639717B2 (en) Providing access to data with user defined table functions
US20040078355A1 (en) Information management system
US7761461B2 (en) Method and system for relationship building from XML
US6487549B1 (en) Generating union queries using tensor representations
US6845376B1 (en) Method for accessing hierarchical data via JDBC
JP2001067369A (ja) 情報検索システム、情報検索方法および情報検索用プログラムを記録した記録媒体
Kakivaya et al. Durable storage of .NET data types and instances
EP1128281A2 (en) System and method for accessing non-relational data by relational access methods

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110706

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110816

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110819

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

Free format text: PAYMENT UNTIL: 20140826

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees