JP2007522559A - データベースシステムにおけるラージオブジェクトインフラストラクチャのためのシステムおよび方法 - Google Patents

データベースシステムにおけるラージオブジェクトインフラストラクチャのためのシステムおよび方法 Download PDF

Info

Publication number
JP2007522559A
JP2007522559A JP2006552093A JP2006552093A JP2007522559A JP 2007522559 A JP2007522559 A JP 2007522559A JP 2006552093 A JP2006552093 A JP 2006552093A JP 2006552093 A JP2006552093 A JP 2006552093A JP 2007522559 A JP2007522559 A JP 2007522559A
Authority
JP
Japan
Prior art keywords
processing structure
data object
type
max
large data
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
JP2006552093A
Other languages
English (en)
Other versions
JP5174352B2 (ja
Inventor
アシュウィン シュリニバス
エー.ブレイクリー ジョセ
カーリン ピーター
ジュン ファン
カルハン アジェイ
クレイナーマン クリスチャン
ステファニ ステファノ
スルナ アレクサンドラス
ホンガン チャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007522559A publication Critical patent/JP2007522559A/ja
Application granted granted Critical
Publication of JP5174352B2 publication Critical patent/JP5174352B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24562Pointer or reference processing operations
    • 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
    • Y10S707/99936Pattern matching access
    • 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

Landscapes

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

Abstract

ラージオブジェクトを取り扱いやすくする。大きな値の内部表現であるBlobハンドル(大規模なデータへの不変のステートレス参照、BH)を利用する。BHの構造は、対応する大きなデータブロックへのアクセスを提供するためのILockBytesインターフェースを返すのに十分な情報を含み、また、BHは、それ自体の存続時間記述に関する情報も返す。

Description

本発明は、一般に、データベースシステムの分野に関し、より詳細には、大規模なユーザ定義型、ならびにXMLなど他の新しいデータ型をサポートするために、ラージオブジェクトデータ型(text、ntext、およびimage)の再実装に使用され得るラージオブジェクトインフラストラクチャを提供するシステムおよび方法に関する。
MicrosoftのSQL Server(SQLサーバ登録商標)の以前にリリースされたバージョンを含む、データベース格納プラットフォームでは、小さな値のオブジェクトは、関与するオーバーヘッドをあまり気にせずにコピーされる。というのは、そのようなオーバーヘッドコストが比較的わずかだからである。しかしながら、大きな値のオブジェクトでは、そのオーバーヘッドコストははるかに大きく、全体の性能にマイナスの影響を及ぼし得る。
これまでは、小規模なデータオブジェクトに最適なvarchar型、nvarchar型、およびvarbinary型には大きすぎる値での、これらのデータ型のサイズ限界を克服するために、大規模オブジェクトは、ラージオブジェクト(LOB)データ型、すなわち、text型、ntext型およびimage型を用いて格納されている。
しかしながら、ラージオブジェクトを用いたプログラミングモデルで許容されているものには多くの制限があり、そのインフラストラクチャは、誤りを犯しやすいラージオブジェクトの実装をもたらした。例えば、大部分のストリング関数および演算子は、LOBには許容されず、特に、挿入および削除に関するテキストポインタ関数に伴う不備もある。(テキストポインタは、SQL Serverの初期リリースで行ロケータとして使用される物理参照である)。さらに、一度にLOBの1つまたは複数の行を変更する効率的な手段がなく、いかなる種類のLOB変数のサポートも、LOBのためのコピー関数もない。上記その他の制限の結果として、LOBは、他のデータ型とはかなり異なり、したがって、より使いにくいものになっている。
求められているのは、ユーザ/プログラマが、より小さな値が処理されるのと同様に大きな値(データブロック)を処理することができ、それによって、小さな値と大きな値の処理でのユーザに知覚される差異を除去して、単一の包括的プログラミングモデルを提供するラージオブジェクトインフラストラクチャである。
本発明の様々な実施形態は、textデータ型、ntextデータ型、およびimageデータ型の、新規のvarchar(MAX)、nvarchar(MAX)、varbinary(MAX)、およびXMLデータ型としての再実装に使用されると共に、大規模なユーザ定義型(UDT)をサポートすることもでき、さらに、その他の新規のデータ型およびプログラミングモデル構造のサポートも可能にするインフラストラクチャを提供するシステムおよび方法を対象とする。また、本発明のいくつかの実施形態は、ユーザ/プログラマが、より小さな値が処理されるのと同様に大きな値(データオブジェクト)を処理することができ、それによって、小さな値と大きな値の間の差異を除去して、単一の包括的プログラミングモデルを提供するデータ処理インフラストラクチャを提供することも対象とする。
これら様々な実施形態は、大きな値の内部表現であるBlobハンドル(BH)を利用する。BHは、大規模なデータへの不変のステートレス参照である。BHの構造は、対応する大きなデータブロックへのアクセスを提供するためのILockBytesインターフェースを返すのに十分な情報を含み、また、BHは、それ自体の存続時間記述に関する情報も返すことができる。これらの概念および要素について、以下でより詳細に説明する。
前述の要約、ならびに以下の好ましい実施形態の詳細な説明は、添付の図面と併せて読めばよりよく理解される。本発明を説明するために、図面には、本発明の例示的構成が示されている。しかしながら、本発明は、開示の特定の方法および手段に限定されるものではない。
本発明の内容を、法定要件を満たすために具体性をもたせて説明する。しかしながら、説明自体は、本特許の範囲を限定するためのものではない。そうではなく、発明者は、特許請求される内容が、現在または将来の技術と併せて、異なるステップまたは本明細書で説明するステップと類似のステップの組み合わせを含む、他のやり方でも実施され得ることを企図している。さらに、本明細書では、用いられる方法の異なる諸要素を意味するのに「ステップ」という用語が使用され得るが、この用語は、個々のステップの順序が明示的に記述されない限り、本明細書で開示する様々なステップの間のどんな特定の順序を示唆するものとも解釈すべきではない。
コンピュータ環境
本発明の多数の実施形態は、コンピュータ上で実行され得る。図1および以下の説明は、本発明が実施され得る適当なコンピューティング環境の簡単な一般的説明を提供するためのものである。必要ではないが、本発明を、クライアントワークステーションやサーバなどのコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的状況で説明する。一般に、プログラムモジュールには、個々のタスクを実行し、または個々の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などのプログラムモジュールが含まれる。さらに、本発明が、ハンドヘルド機器、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成を用いても実施され得ることを、当分野の技術者は理解するであろう。本発明は、タスクが、通信ネットワークを介してリンクされたリモート処理装置によって実行される、分散コンピューティング環境でも実施され得る。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモート両方の記憶装置に位置し得る。
図1に示すように、例示的汎用コンピューティングシステムは、処理装置21、システムメモリ22、およびシステムメモリを含む様々なシステムコンポーネントを処理装置21に結合するシステムバス23を含む、従来型のパーソナルコンピュータ20などを含む。システムバス23は、様々なバスアーキテクチャのいずれかを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかの種類のバス構造のいずれかとすることができる。システムメモリは、読取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。基本入出力システム26(BIOS)は、始動時などに、パーソナルコンピュータ20内の諸要素間での情報転送を支援する基本ルーチンを含み、ROM24に格納される。パーソナルコンピュータ20は、さらに、ハードディスク(図示せず)との間で読取りおよび書込みを行うハードディスクドライブ27、取り外し可能磁気ディスク29との間で読取りおよび書込みを行う磁気ディスクドライブ28、CD−ROMなどの光媒体といった取り外し可能光ディスク31との間で読取りおよび書込みを行う光ディスクドライブ30を含み得る。ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれ、ハードディスクドライブインターフェース32、磁気ディスクドライブインターフェース33、および光ドライブインターフェース34によってシステムバス23に接続される。これらのドライブおよびそれに関連するコンピュータ可読媒体は、パーソナルコンピュータ20に、コンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータの不揮発性記憶を提供する。本明細書で説明する例示的環境では、ハードディスク、取り外し可能磁気ディスク29および取り外し可能光ディスク31を用いるが、この例示的動作環境では、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)といった、コンピュータによりアクセス可能なデータを格納し得る他の種類のコンピュータ可読媒体も使用され得ることが、当分野の技術者には理解されるはずである。
ハードディスク、磁気ディスク29、光ディスク31、ROM24またはRAM25上には、オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、その他のプログラムモジュール37およびプログラムデータ38を含むいくつかのプログラムモジュールが格納され得る。ユーザは、キーボード40やポインティングデバイス42などの入力装置を介してパーソナルコンピュータ20にコマンドおよび情報を入力することができる。他の入力装置(図示せず)には、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、しばしば、システムバスに結合されたシリアルポートインターフェース46を介して処理装置21に接続されるが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス(USB)といった他のインターフェースによっても接続され得る。モニタ47または他の種類の表示装置も、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続され得る。モニタ47以外に、パーソナルコンピュータは、通常、スピーカやプリンタなど、他の周辺出力装置(図示せず)も含む。図1の例示的システムは、ホストアダプタ55、小型コンピュータシステムインターフェイス(SCSI)バス56、およびSCSIバス56に接続された外部記憶装置62も含む。
パーソナルコンピュータ20は、リモートコンピュータ49など、1つまたは複数のリモートコンピュータへの論理接続を使用してネットワークで接続された環境で動作し得る。リモートコンピュータ49は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスなど一般のネットワークノードとすることができ、図1には記憶装置50だけしか示していないが、通常は、パーソナルコンピュータ20に関連して前述した諸要素の多くまたはすべてを含む。図1に示す論理接続は、ローカルエリアネットワーク(LAN)51および広域ネットワーク(WAN)52を含む。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットでよく見られる。
LANネットワーク環境で使用される場合、パーソナルコンピュータ20はネットワークインターフェースまたはアダプタ53を介してLAN51に接続される。WANネットワーク環境で使用される場合、パーソナルコンピュータ20は、通常、モデム54、またはインターネットなどの広域ネットワーク52を介して通信を確立する他の手段を含む。モデム54は、内蔵でも外付けでもよく、シリアルポートインターフェース46を介してシステムバス23に接続される。ネットワーク化環境では、パーソナルコンピュータ20に関連して示すプログラムモジュール、またはその一部は、リモート記憶装置にも格納され得る。図示のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段も使用され得ることが理解されるであろう。さらに、本発明の多数の実施形態は、特に、コンピュータ化されたシステムに適すると想定されるが、本明細書中のどんな記述も、本発明をそのような実施形態に限定することを意図するものではない。
ネットワーク環境
図2に、本発明が用いられ得る例示的ネットワーク環境を示す。当然ながら、実際のネットワークおよびデータベース環境は、様々な構成として配置され得る。しかしながら、図示の例示的環境は、本発明が動作する環境の種類を理解するための枠組みを提供するものである。
ネットワークは、クライアントコンピュータ20a、サーバコンピュータ20b、データソースコンピュータ20c、およびデータベース70、72a、72bを含み得る。クライアントコンピュータ20aおよびデータソースコンピュータ20cは、イントラネットなどの通信ネットワーク80を介してサーバコンピュータ20bと電子通信を行う。クライアントコンピュータ20aおよびデータソースコンピュータ20cは、通信インターフェース82によって通信ネットワークに接続される。通信インターフェース82は、イーサネット(登録商標)接続、モデム接続など公知の通信インターフェースのいずれか1つとすることができる。
サーバコンピュータ20bは、以下でより詳細に説明する、データベースサーバシステムソフトウェアによってデータベース70の管理を実現する。したがって、サーバ20bは、様々なデータソースからのデータの貯蔵庫として働き、そのデータを様々なデータ消費者に提供する。
図2の例では、データソースは、データソースコンピュータ20cによって提供される。データソースコンピュータ20cは、LAN、WAN、イントラネット、インターネットなどとすることのできる通信ネットワーク80を介して、サーバコンピュータ20bにデータを伝える。データソースコンピュータ20cは、リレーショナルデータベースサーバ、エクセルスプレッドシート、ファイルなどとすることのできるデータベース72a、72bに、ローカルでデータを格納する。例えば、データベース72aには、表150、152、154に格納されたデータが示されている。データソース20cによって提供されるデータは、結合され、サーバ20bによって維持されるデータウェアハウスなどの大規模データベースに格納される。
サーバコンピュータ20bによって格納されたデータを使おうとするクライアントコンピュータ20aは、通信ネットワーク80を介してデータベース70にアクセスすることができる。クライアントコンピュータ20aは、データベース70に格納されたデータ上でのSQL問い合わせ(更新、挿入、削除など)によってデータを要求する。
BLOBハンドル
本発明の様々な実施形態は、BLOBハンドル(BH)を対象とする。BH(およびそのインターフェース、IBlobHandle)は、ラージオブジェクト(LOB)(以後「データブロック」という)への不変のステートレス参照の内部表現である。BHを使用すれば、(バイナリラージオブジェクトである、BLOBを含む)システム中のLOBのすべてのインスタンスが単一の表現に統合され得る。本質的には、BHは、データブロックを位置指定する参照であり、その場合BHはそのデータブロックを完全に記述する。BH自体は、(a)BHデータの先頭を指し示すポインタおよび(b)そのBHのバイト長を用いて記述され得る。
例えばC++では、BHは、通常のC++オブジェクトのように、バッファの先頭を指し示すポインタを使用してメソッド呼び出しをサポートする。BHの構造は、対応するデータブロックへのアクセスを提供するためのILockBytesインターフェースを返すのに十分な情報を含み、いくつかのBHは、関連する記憶を破棄する「削除」メソッドをサポートし得る。BHは、それら自体の存続時間記述に関する情報を返すこともできる。さらに、小さな値では、BHは、それ自体の内にその値を含むことができ、そのため、ILockBytesインターフェースの検索および別のデータブロックから読み取るための仮想メソッド呼び出しをバイパスすることができる。
図3Aは、本発明の様々な実施形態におけるBHの一般的なコンポーネントを示すブロック図である。BH300は、(a)メモリまたはディスク記憶(「記憶」)310のどこかに格納された対応するデータブロック312の開始位置を指し示すポインタ304でのオフセット、および(b)記憶310中のデータブロック312のサイズに対応する長さ306を備える。BHは、さらに、単一ビットの存続時間記述(図示せず)も備える。
図3Bは、図3Aと同じであるが、前記BH300のオフセット302が、外部で参照されるLOBを指し示すのではなく、前記BH310内に完全に含まれるより小さな値320を指し示す(304)BHを示すブロック図である。
BHインフラストラクチャ
BHインフラストラクチャでは、大きな値のパラメータは、(データブロックのコピーではなく)BHのコピーを使用して、要求に応じてコピーを入力パラメータとして提供することによって処理される。このコピーされたBHは、BHインフラストラクチャによって提供されるBH別名割り当て機構を使用することにより、ポインタ参照として渡される。しかしながら、そのBHの1つのコピーのためにデータブロックへの変更が必要とされる場合、その大きな値はコピーされ、書き込み側BHはこの新しいコピーだけを指し示す。ゆえに、このコピーの機能は、必然的に、出力パラメータで一般に行われるはずである。
図4Aは、データブロック412を指し示す(404)元のBH402、およびデータブロック412の仮想コピー412’を表すが、実際には、同じデータブロック412を指し示す(404’)第2のBH402’の作成を示すブロック図である。しかしながら、図4Bに示すように、第2のBH402’によって表される「コピー」中のデータ(または、反対に、BH402によって表されるデータ)が書込み操作によって変更される場合、データブロック412は、実際に新しいデータブロック412”にコピーされ、第2のBH402’は、この第2のデータブロック412”を指し示す(404)ことになる。
しかしながら、様々な実施形態では、BHインフラストラクチャは、そのデータブロック全部をコピーする必要の一部を除外するために、データブロックへの「部分更新」、すなわち、全データ値の完全コピーを招くことなく大きな値の一部だけを変更する能力もサポートすることができる。動作に際して、部分更新は、(a)データブロックの「チャンク」(前記データブロックの下位区分であるチャンク)に対応する置換値、(b)データブロック中のチャンクの先頭での「オフセット」、および(c)置換されるチャンクのバイト長(置換値のバイト長にも対応する)を確認する。論理的には、この手法は、単に、(対象となるチャンクの境界を本質的に定義する)データブロックのオフセット位置におけるバイト長バイト数を、同一のバイト長を有する前述の置換値で置き換えるだけである。代替の実施形態では、置換値は、置換されるチャンクと同じバイト長である必要はなく、当分野の技術者に知られ、理解されている様々な方法(ポインタベースの方法など)を用いて、より小さな、またはより大きな値がチャンクに入れられ得る。さらに、それらの技法のいずれも、前述の、図4Aおよび図4Bに示す仮想コピー概念と共に使用され得る。
内部では、部分更新は、(他の部分更新または通常更新と一緒にすることのできる)列更新の特殊な形として表され、可能な場合、その変更は、ディスク記憶にプッシュされて、必要とされるBツリーの特定の部分だけを変更する。しかしながら、場合によっては、システムが、効率性または堅固性のために部分更新を完全コピーとして実施しようとすることもあり、更新が部分的に実行されず、完全置換が実行されることもある。システムは、例えば、パーティションキーやクラスタリングキーへの更新など、データ列の異なる物理的場所への移動を必要とする更新が存在する場合には、部分更新を完全コピーとして実施する(すなわち、古い値を新しい値で置換する)。この理由は、列の異なる場所への移動が完全コピーを必要とし、その操作を1段階で完了する方がより効率的だからである。また、前述の場合、システムは、部分更新を含むステートメントを実行不能な更新として拒絶せず、完全コピーを実施しようとすることにも留意すべきである。
部分更新インフラストラクチャは、「ハロウィーン保護」も考慮に入れる(すなわち、UPDATEで引数として使用される値自体も更新される場合)。
この部分更新インフラストラクチャは、以前のテキストポインタベースの技術に優る大きな前進を表すものである。部分更新が問い合わせプロセッサ(QP)にとって既知の操作であると仮定すると、それだけに限らないが、索引および索引付きビュー保守、パーティション、レプリケーション、制約条件検証を含む、テキストポインタ実装では制限されていたいくつかの機能が使用可能になる。
本発明のいくつかの実施形態でのBHインフラストラクチャの一部として、その基礎となる格納インフラストラクチャは、列行内限界の概念も持つことになる。この限界は、そこで、所与の値が、主ページ中に保持されるのではなく、行外にプッシュされるよう選択されるサイズ境界を決定する。行内限界が小さいほど、列がより早く行外にプッシュされ、より大きい限界は逆の影響を有する。当分野の技術者には知られ、理解されているように、これは、限界が小さければ、1ページ当たりにより多数の行を入れることが可能になり、さらには行密度が増大し、走査性能が向上するが、大きな値の列はその走査の一部とはならないというトレードオフを反映するものである。これに関して、BHインフラストラクチャは、型ごとの内部で構成可能な行内限界を可能にする。ゆえに、MAX V型は、特定の行内限界に基づいて所与の挙動を公開することができ、他方UDT型またはXML型は、異なる限界を選択し、そのサイズおよび構造により適した異なる密度および走査性能特性を達成することができる。
BHメソッドおよびAPI
本発明の様々な実施形態では、BHは、後段でより詳細に説明する以下のメソッドの1つまたは複数をサポートすることができる。
Figure 2007522559
BH構造の典型的な実装は、いくつかのインスタンスで付加される任意選択のデータと共にIBlobHandleインターフェースから継承される。BHは自己完結型であり、それ自体への組み込みポインタを持たないため、それが存在するメモリに関する仮定は必要とされない。したがって、BHをコピーするには、単なるシャローコピーだけしか必要とされない。これは、システムが、通常の列が扱われるのと同様にBHを扱うことを可能にする。
BHは、対応するデータブロックを位置指定するのに使用され得るが、そのデータブロックのLOBを操作するためのインターフェースは提供しない。その代わり、いくつかの実施形態では、PilbGetILockBytesメソッドを用いて、データ操作のためにILockBytesSSが検索される。サポートされる正確なILockBytesSSメソッドのセットは、BH実装で異なるが、通常は、次の2つのカテゴリに分類される。すなわち(i)ユーザ表からのデータを表し、(部分更新での場合を除いて)通常は読取り専用であるBHなど、読取り操作だけをサポートする読取り専用LOB、および(ii)一時LOB値を格納するのに使用される一時BHなど、データブロックの読取りとその更新の両方をサポートする読取り/書込みLOBである。
いくつかの実施形態では、そのBHに関連付けられたLOB値を削除するためにBHでの削除メソッドが呼び出され得る。しかしながら、いくつかのBHだけ(一時BHなど)はこの操作をサポートするが、他のBH(ユーザ表からのBHなど)はサポートしない。いずれにしても、削除操作は失敗しないはずであり、それは、処理クリーンアップが、自動デストラクタが失敗しないことを保証するのに役立つ。
いくつかの実施形態でのBHは、ILockBytesSSの代替として、LOBデータブロックを指し示すポインタおよびその長さを返すのに使用され得るFGetPointerメソッドもサポートし、それによって小さな読取り専用データにアクセスするより高速な手段を提供する。しかしながら、データブロックが小さな読取り専用データから構成されない場合、このメソッドは、代わりにPilbGetILockBytesメソッドを使用してデータにアクセスすべきことを示すFALSEを返すことができる。
様々な実施形態で、Deleteを除くBH APIメソッドは、例外をスローすることができる。
BH特性
いくつかの実施形態では、pbhpGetメソッドは、BH特性のカプセル化であるCBlobHandlePropertiesを返す。通常、多くのBHは、共通の特性を共用し、ポインタ(CBlobHandleProperties*)による特性の比較を使用して、BHの「フレーバ」(例えばBHがユーザ表中のデータを指し示すか、それとも「カスタム」データブロックを指し示すかなど、BHフレーバについては後段でより詳細に論じる)が区別される。
いくつかの実施形態では、BH参照が有効である時間の長さに「存続時間」特性を利用する。例えば、BHは、ある種のイベントの後では、既存のLOB値と関連付けられなくなることがある。いくつかの実施形態では、この特性には、単に、2つの値のうちの1つ、すなわち「問い合わせ存続時間」または「行存続時間」(あるいは他の2値等価の指定)が割り当てられ得る。「行存続時間」は、問い合わせ実行(QE)反復子が現在の行を処理している間だけ関連するLOB値にアクセスすることができ、反復子が次の行に進むと、そのBHはそのLOB値に関連付けられなくなる(ゆえに、そのBHによるそれ以上のアクセスは禁止される)ことを示す。他方、「問い合わせ存続時間」は、その問い合わせの終わりまで(あるいは、他の問い合わせ以外の場合には、「BHファクトリ」がパージまたはシャットダウンされるまで、BHファクトリについては本明細書の他の箇所でより詳細に論じる)LOB値が有効であることを示すはずである。
BHフレーバ
本発明のいくつかの実施形態は、BHの1つまたは複数の「フレーバ」を備え、前記フレーバは、以下のBH実装バリエーションを備える。
ユーザ表中のデータブロックを指し示す(通常は「問い合わせ存続時間」を持つはずの)「表」BH。
一時利用のためにBHファクトリ(本明細書の別の箇所で論じる)を用いて作成される「一時」BH。
十分に小さなデータブロックでの、そのデータブロック全体をそのBH本体内に含む「インライン化」BH。このフレーバでは、ILockBytesSSインターフェースもそのBH本体内にあり、そのため、PilbGetILockBytesメソッドが非常に高速で、効率的になる。
別のBHへのメソッド呼び出しを宛先変更する「別名」BH、TEMPBLOBΗANDLE_SIZE(事前定義されたサイズ限界)より大きいBHをTEMPBLOBΗANDLE_SIZE以下のBHに変換する(以下でより詳細に説明する)など、特定の操作に特に有用である。
既存のILockBytesSSオブジェクトへのアクセスを宛先変更する「ラッパ」BH。これは、既存のILockBytesオブジェクトを別のソースから(例えばOLEDBから)BHに「キャスト」するのに使用される場合、特に有用である。
指定されたファイルグループに属し、後でユーザ表にリンクされ得る「オーファン」BH。動作に際して、大きな値がシステムに流される場合、その大きな値をオーファンBHに直接コピーすることができ、データが完全に流された後、そのBHは、それ以上のコピーを必要とせずに、そこに挿入される(「利用される」)表の一部とされる。ゆえに、この種のBHは、コピー回数を最小にすると共に、BULK INSERTステートメントなどの高性能バルク操作の性能を向上させるのに使用される。
BH最大サイズ
いくつかの実施形態では、BHを含むために最大バッファサイズに関する仮定が必要とされる。これらの実施形態では、QEは、通常、問い合わせオプティマイザ(QO)によって導出される最大サイズを使用するはずであるが、最大BHサイズそのものも、例えばconst BLOBHANDLE_SIZE=8000などの定数として定義され得る。しかしながら、「一時」BHは、プロセッサアーキテクチャに基づく限界を持つことがあり、例えば32ビットアーキテクチャでは、const TEMPBLOBΗANDLE_SIZE=0×40などと定義される。この手法の背後にある主な考え方は、大部分のコンポーネントは、参照によって(それ自体のバッファを割り振らずに)BHにアクセスし、または一時BHを使用してデータブロックの大きな値をスプールするはずであるというものである。したがって、BHが持続されることになる場合には、小さなバッファ(すなわち、サイズがTEMPBLOBΗANDLE_SIZEの)を割り振ることが望ましいと考えられる。他方、QEは、通常、はるかに大規模なBHを使用する。しかしながら、ここで重要な考慮事項は、ほとんどどんなコンポーネントもTEMPBLOBHANDLE_SIZEサイズのBHを処理することができるが、BHがこの値より大きく、問い合わせ実行の外部のコンポーネントから見える場合、それは、それに関連付けられたポインタによってのみアクセスされなければならないということである。例えば、QEが言語処理実行コンポーネント(LPE)に大規模なBHを公開する場合、このLPEは、通常、その大規模BHをそれ自体のバッファにコピーすることができず、ゆえに、QEバッファを指し示すポインタを使用しなければならない。
BHファクトリ
BHファクトリ(BHF)は新しいBHを作成するオブジェクトである。一般に、すべてのBFファクトリによってサポートされる共通インターフェースはないことがあるが、一時データブロックを用いて1つまたは多数のコンポーネントによる処理での大規模データを格納するための「一時BHファクトリ」(TBHF)によってサポートされる共通インターフェースはある。後者の場合、連続処理のために1つのコンポーネントから別のコンポーネントにIBlobHandleFactoryポインタが渡され、TBHFは、より小さい値(8K未満など)を表すデータブロックの処理を(前述のように)より効率よくする最適化を備える。また、(以下でより詳細に説明する)複数のスレッドからの並列アクセスをサポートする特殊なBHFもある。
以下のメソッドは、TBHFを用いてBHを作成する。
Figure 2007522559
いくつかの実施形態では、このメソッドは、「空の」LOB値に関連付けられた新しいBHを作成する。その場合、ILockBytesSSを用いてこのBHにデータを書き込むことができ、このBHを閉じ、解放する他のメソッド(ILockBytesSS::CloseおよびILockBytesSS::Release)も使用され得る。
一般に、BHFは複数のスレッドにサービスすることができるが、そのBHFを作成する特定のスレッドは、その個々のBHFを所有し、その時刻に達した場合にそのBHFをクリーンアップすることのできる唯一のスレッドである。BHFは、グループとして作成されるメンバBHに所与のグループ識別番号をタグ付けすることによって、BHをグループとして作成することもできる。これは、そのBHFが、単一の操作で、所与のグループに関連付けられたすべてのBHを解放するサービスを提供することを可能にする。
そのBHFに応じて、BHによって作成されるBHは、ディスクによって補助されることも、メモリによって補助されることもある。最初は(好ましくは)、BHFは、それに関連付けられた特定のディスク記憶を持たないが、一般に、記憶は、最初の使用時に要求に応じて、または明示的な要求によって作成される。これに関して、本発明の様々な実施形態は、それだけに限らないが、以下を含む1つまたは複数の種類のBHFを利用する。
高速BHF:これらのBHFは、永続的ディスク記憶ではなくメモリバッキングを使用して小さい値をサポートするインメモリのみのBHを作成する。一般に、BHインフラストラクチャは、可能な場合には高速BHFを使おうとするが、必要に応じて、より低速なディスク補助記憶に後退するはずである。
ディスク補助BHF:これらのBHFは、ディスク記憶によって補助されるBHを作成し、値を(ディスクスペースが許容する)随意の大きさに保つことができるBHを作成する。
MAX指定子およびMAX V型
BHを使用して、本発明の様々な実施形態は、varchar、nvarchar、varbinaryデータ型(以後まとめて「V型」という)でのMAX指定子の使用も対象とする。例えば、表列およびTSQL変数は、定義/宣言時にvarchar(MAX)、nvarchar(MAX)、またはvarbinary(MAX)(以後まとめて「MAX V型」という)を指定することができる。動作に際して、MAX V型列および変数は、「MAX」キーワードをその型のサイズの指定子として使用し、そのような値は、システムによりサポート可能なサイズ(例えば、varchar(ΜAΧ)!=varchar(<有効な数>))に基づいて定義されるはずであるが、宣言時にvarcharまたはvarbinaryの最大サイズを指定するのに使用され得る最大リテラルは引き続き8000であり、nvarcharでは4000である。(通常、varcharまたはvarbinary列は8000の最大サイズを持つが、MAXキーワードは、BHインフラストラクチャを用いて、その最大サイズがシステムによりサポート可能な最高と同等である列を適させる。)
その場合、様々な代替実施形態において、以下の操作および機能の1つまたは複数がMAX V型のためにサポートされるはずである。比較;TSQL変数;連結;いくつかのストリング関数;DISTINCT、ORDER BY、GROUP BY、集約、結合、副照会などを含む全SELECTステートメントサポート;CHECK制約、RULEおよびDEFAULT(その場合、8Kより大きいデフォルトは、今日、LOBと共に発生する際に非表示で打ち切られなくなった);索引付きビュー定義の一部であること;AFTERトリガ時の挿入/削除された表での可視性;および、特に、FFOカーソル、FETCH...INTO...@variable、SET ANSI_PADDING、SET CONCAT_NULL_YIELDS_NULL、全文検索、および(sp_addtypeを置換する)CREATE TYPEで許容されるデータ型変換。しかしながら、現実の実質的なサイズの違いのために、本発明のいくつかの実施形態では、それだけに限らないが、sql_variantが依然としてMAX V型を含み得ないこと、MAX V型列が(それらを索引サブキーとして使用することは許されるが)索引中でキー列として指定され得ないこと、MAX V型列がパーティションキー列として使用され得ないことを含め、MAX V型とV型の間の微妙な違いが存在し続けるはずである。ただし、列の接頭部を索引または索引付きビューのキーとして指定することは許される。これにより、システムに、MAX V型列が関与する特定の種類の述部を修飾する行を迅速に検索するためにその索引を自動的に考慮させることができる。例えば、[Varchar(MAX)column]=Valueという形の述部は、システムによって自動的にPrefix([Varchar(MAX)column])=Prefix(Value)AND[Varchar(MAX)column]=Valueに分割され得る。その列の接頭部上の示唆される述部は、その索引の利用を可能にする。
後方互換性を保証するために、MAX V型をサポートしないクライアントにダウンレベルでデータを送る場合には、varchar(MAΧ)データ型、nvarchar(MAX)データ型、varbinary(MAX)データ型は、それぞれ、LOB型のtext型、ntext型、image型として送られるはずである。それとは逆に、LOB型のtextデータ、ntextデータ、imageデータの形でクライアントからアップレベルで受け取るデータの移行サポートは、それぞれ、varchar(MAΧ)データ型、nvarchar(MAX)データ型、varbinary(MAX)データ型に変換されるはずである。
結論
本明細書で説明した様々なシステム、方法および技法は、ハードウェアまたはソフトウェア、あるいは、適切な場合には、両者の組み合わせを用いて実施され得る。ゆえに、本発明の方法および装置、あるいはその特定の態様または部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、または他の任意の機械可読記憶媒体などの有形の媒体として実施されたプログラムコード(すなわち命令)の形をとることができ、そのプログラムコードが、コンピュータなどのマシンによってロードされ、実行されると、そのマシンは、本発明を実施する装置になる。プログラム可能コンピュータ上でのプログラムコード実行の場合、そのコンピュータは、一般に、プロセッサ、(揮発性および不揮発性のメモリおよび/または記憶素子を含む)プロセッサにより読取り可能な記憶媒体、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。コンピュータシステムとやりとりするために、1つまたは複数のプログラムが、好ましくは、高水準手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実施される。しかしながら、プログラムは、必要に応じて、アセンブリ言語または機械語でも実施され得る。いずれの場合も、言語は、コンパイル済み言語または解釈済み言語とし、ハードウェア実装形態と組み合わせることができる。
本発明の方法および装置は、電気的配線またはケーブル、光ファイバ、あるいは他の任意の形の伝送によるものなど、何らかの伝送媒体を介して伝送されるプログラムコードの形としても実施することができ、プログラムコードが、EPROM、ゲートアレイ、プログラマブル論理回路(PLD)、クライアントコンピュータ、ビデオレコーダなどといったマシンによって受け取られ、ロードされ、実行されると、そのマシンは、本発明を実施する装置になる。汎用プロセッサ上で実施されると、プログラムコードは、プロセッサと組み合わさって、本発明の索引付け機能を実行するように動作する独自の装置を提供する。
以上、本発明を、様々な図の好ましい実施形態との関連で説明したが、他の類似の実施形態を使用することもでき、本発明から逸脱することなく、本発明の同じ機能を実行するために、説明した実施形態に変更および追加を行うこともできることを理解すべきである。例えば、本発明の例示的実施形態は、パーソナルコンピュータの機能をエミュレートするデジタル装置の状況で説明されるが、本発明は、本出願で説明するようなデジタル装置だけに限定されるものではなく、有線であれ無線であれ、ゲームコンソール、ハンドヘルドコンピュータ、携帯用コンピュータなど、いくつもの既存の、または新規のコンピューティングデバイスまたは環境に適用可能であり、通信ネットワークを介して接続され、ネットワークを介して対話するいくつものそのようなコンピューティングデバイスに適用され得ることを、当分野の技術者は理解するであろう。さらに、特に、無線ネットワークで接続された機器の数が増大し続けているために、本明細書では、ハンドヘルド機器用オペレーティングシステムおよび他のアプリケーション固有のハードウェア/ソフトウェアインターフェースシステムを含む、様々なコンピュータプラットフォームが企図されていることを強調すべきである。したがって、本発明は、どんな単一の実施形態にも限定すべきではなく、添付の特許請求の範囲による広さと範囲で解釈すべきである。
最後に、本明細書で説明した開示の実施形態は、他のプロセッサアーキテクチャ、コンピュータベースシステム、あるいはシステム仮想化での使用のために適合させることができ、そのような実施形態が、本明細書で行われる開示によって明確に予期されており、ゆえに、本発明は、本明細書で説明した特定の実施形態に限定すべきではなく、最も広範に解釈すべきものである。
本発明の諸態様が組み込まれ得るコンピュータシステムを表すブロック図である。 本発明の諸態様が組み込まれ得るネットワークを表す概略図である。 本発明の様々な実施形態におけるBLOBハンドル(BH)の一般的なコンポーネントを示すブロック図である。 本発明の様々な実施形態による、値がそのBH内に完全に含まれるBHを示すブロック図である。 読取り型操作での、両方が同じデータブロックを指し示す、元のBHと仮想コピーを表す第2のBHとを示すブロック図である。 どちらかのBHによって書込み操作が呼び出され、第2のBHがそのデータブロックの新しく作成されたコピーを指示させられる、図4AのBHを示すブロック図である。

Claims (30)

  1. コンピュータシステムにおいて大規模データオブジェクトを処理する方法であって、前記大規模データオブジェクトがそれを用いて処理され得ないはずの小規模データオブジェクトに利用可能な関数、操作などを介して前記コンピュータシステムによって処理され得る、前記大規模データオブジェクトを表す処理構造を作成することを備えることを特徴とする方法。
  2. 第1の大規模データオブジェクトを指し示す第1の処理構造は、前記同じ第1の大規模データオブジェクトを指し示す第2の処理構造の作成によって仮想的にコピーされ、ただし、前記第1の処理構造および前記第2の処理構造が前記第1の大規模データオブジェクトに変更を書き込まないことを条件とすることを特徴とする請求項1に記載の方法。
  3. 前記第1の処理構造が前記第1の大規模データオブジェクトに変更を書き込まなければならない場合、前記第1の処理構造が前記第1の大規模データオブジェクトに前記変更を書き込むのに先立って、前記第1の大規模データオブジェクトは第2の大規模データオブジェクトにコピーされ、前記第2の処理構造は前記第2の大規模データオブジェクトを指示させられることを特徴とする請求項2に記載の方法。
  4. 前記第2の処理構造が前記第1の大規模データオブジェクトに変更を書き込まなければならない場合、前記第1の大規模データオブジェクトは第2の大規模データオブジェクトにコピーされ、前記第2の処理構造は前記第2の大規模データオブジェクトを指示させられ、次いで、前記第2の処理構造は前記第2の大規模データオブジェクトに前記変更を書き込むことを特徴とする請求項2に記載の方法。
  5. textデータ型、ntextデータ型、およびimageデータ型(またはそれらの同等物)を備える型のグループの中からの1つの型を持つデータオブジェクトは、対応する処理構造を有する大規模データオブジェクトに変換されることを特徴とする請求項1に記載の方法。
  6. text型、ntext型、またはimageデータ型(または同等のデータ型)のデータオブジェクトは、それぞれ、varchar(MAX)型、nvarchar(MAX)型、またはvarbinary(MAX)型(あるいは同等のデータ型)に変換され、varchar(MAX)型、nvarchar(MAX)型、およびvarbinary(MAX)型は処理構造を備え、前記MAXは所定の最大サイズ値に対応することを特徴とする請求項5に記載の方法。
  7. 前記処理構造は小さな値のデータオブジェクトに対応し、前記小さな値のデータオブジェクトは前記処理構造内に完全に格納されることを特徴とする請求項1に記載の方法。
  8. 前記処理構造での削除操作をさらに備え、前記処理構造が第1の型のものである場合、前記処理構造と対応する大規模データオブジェクトは両方とも削除され、前記処理構造が第2の型ものである場合、前記処理構造だけが削除され、前記対応する大規模データオブジェクトは削除されないことを特徴とする請求項1に記載の方法。
  9. 前記処理構造は存続時間を持ち、前記処理構造は、前記存続時間に対応する値を持つフィールドを備えることを特徴とする請求項1に記載の方法。
  10. 前記処理構造は、処理構造の必要に応答して処理構造ファクトリによって作成されることを特徴とする請求項1に記載の方法。
  11. コンピュータシステムにおいて大規模データオブジェクトを処理するシステムであって、前記大規模データオブジェクトがそれを用いて処理され得ないはずの小規模データオブジェクトに利用可能な関数、操作などを介して前記コンピュータシステムによって処理され得る、前記大規模データオブジェクトを表す処理構造を作成するサブシステムを備えることを特徴とするシステム。
  12. 第1の大規模データオブジェクトを指し示す第1の処理構造は、前記同じ第1の大規模データオブジェクトを指し示す第2の処理構造の作成によって仮想的にコピーされ、ただし、前記第1の処理構造および前記第2の処理構造が前記第1の大規模データオブジェクトに変更を書き込まないことを条件とすることを特徴とする請求項11に記載のシステム。
  13. 前記第1の処理構造が前記第1の大規模データオブジェクトに変更を書き込まなければならない場合、前記第1の処理構造が前記第1の大規模データオブジェクトに前記変更を書き込むのに先立って、前記第1の大規模データオブジェクトは第2の大規模データオブジェクトにコピーされ、前記第2の処理構造は前記第2の大規模データオブジェクトを指示させられることを特徴とする請求項12に記載のシステム。
  14. 前記第2の処理構造が前記第1の大規模データオブジェクトに変更を書き込まなければならない場合、前記第1の大規模データオブジェクトは第2の大規模データオブジェクトにコピーされ、前記第2の処理構造は前記第2の大規模データオブジェクトを指示させられ、次いで、前記第2の処理構造は前記第2の大規模データオブジェクトに前記変更を書き込むことを特徴とする請求項12に記載のシステム。
  15. textデータ型、ntextデータ型、およびimageデータ型(またはそれらの同等物)を備える型のグループの中からの1つの型を持つデータオブジェクトは、対応する処理構造を有する大規模データオブジェクトに変換されることを特徴とする請求項11に記載のシステム。
  16. text型、ntext型、またはimageデータ型(または同等のデータ型)のデータオブジェクトは、それぞれ、varchar(MAX)型、nvarchar(MAX)型、またはvarbinary(MAX)型(あるいは同等のデータ型)に変換され、varchar(MAX)型、nvarchar(MAX)型、およびvarbinary(MAX)型は処理構造を備え、前記MAXは所定の最大サイズ値に対応することを特徴とする請求項15に記載のシステム。
  17. 前記処理構造は小さな値のデータオブジェクトに対応し、前記小さな値のデータオブジェクトは前記処理構造内に完全に格納されることを特徴とする請求項11に記載のシステム。
  18. 前記処理構造での削除操作をさらに備え、前記処理構造が第1の型のものである場合、前記処理構造と対応する大規模データオブジェクトは両方とも削除され、前記処理構造が第2の型ものである場合、前記処理構造だけが削除され、前記対応する大規模データオブジェクトは削除されないことを特徴とする請求項11に記載のシステム。
  19. 前記処理構造は存続時間を持ち、前記処理構造は、前記存続時間に対応する値を持つフィールドを備えることを特徴とする請求項11に記載のシステム。
  20. 前記処理構造は、処理構造の必要に応答して処理構造ファクトリによって作成されることを特徴とする請求項11に記載のシステム。
  21. コンピュータシステムにおいて大規模データオブジェクトを処理するコンピュータ可読命令を備えるコンピュータ可読媒体であって、前記コンピュータ可読命令は、前記大規模データオブジェクトを表す処理構造を作成する命令、および前記大規模データオブジェクトがそれを用いて処理され得ないはずの小規模データオブジェクトに利用可能な関数、操作およびそのような他の操作を用いて前記処理構造を処理する命令を備えることを特徴とするコンピュータ可読媒体。
  22. 第1の大規模データオブジェクトを指し示す第1の処理構造を、前記同じ第1の大規模データオブジェクトを指し示す第2の処理構造の作成によって仮想的にコピーするための命令であって、前記第1の処理構造および前記第2の処理構造が前記第1の大規模データオブジェクトに変更を書き込まないことを条件とする命令をさらに備えることを特徴とする請求項1に記載のコンピュータ可読命令。
  23. 前記第1の処理構造が前記第1の大規模データオブジェクトに変更を書き込まなければならない場合、前記第1の処理構造が前記第1の大規模データオブジェクトに前記変更を書き込むのに先立って、前記第1の大規模データオブジェクトを第2の大規模データオブジェクトにコピーし、前記第2の処理構造に前記第2の大規模データオブジェクトを指示させるための命令をさらに備えることを特徴とする請求項2に記載のコンピュータ可読命令。
  24. 前記第2の処理構造が前記第1の大規模データオブジェクトに変更を書き込まなければならない場合、前記第1の大規模データオブジェクトを第2の大規模データオブジェクトにコピーし、前記第2の処理構造に前記第2の大規模データオブジェクトを指示させ、次いで、前記第2の処理構造が前記第2の大規模データオブジェクトに前記変更を書き込むための命令をさらに備えることを特徴とする請求項2に記載のコンピュータ可読命令。
  25. textデータ型、ntextデータ型、およびimageデータ型(またはそれらの同等物)を備える型のグループの中からの1つの型を持つデータオブジェクトを、対応する処理構造を有する大規模データオブジェクトに変換するための命令をさらに備えることを特徴とする請求項1に記載のコンピュータ可読命令。
  26. text型、ntext型、またはimageデータ型(または同等のデータ型)のデータオブジェクトを、それぞれ、varchar(MAX)型、nvarchar(MAX)型、またはvarbinary(MAX)型(あるいは同等のデータ型)に変換するために命令であって、前記varchar(MAX)型、nvarchar(MAX)型、およびvarbinary(MAX)型は処理構造を備え、MAX値は所定の最大サイズ値に対応する命令をさらに備えることを特徴とする請求項5に記載のコンピュータ可読命令。
  27. 前記処理構造が小さな値のデータオブジェクトに対応する場合、前記小さな値のデータオブジェクトを前記処理構造内に完全に格納するために命令をさらに備えることを特徴とする請求項1に記載のコンピュータ可読命令。
  28. 前記処理構造での削除操作の命令をさらに備え、前記削除操作は、前記処理構造が第1の型のものである場合、前記処理構造と対応する大規模データオブジェクトを両方とも削除するための命令を備え、前記処理構造が第2の型ものである場合、前記処理構造だけを削除し、前記対応する大規模データオブジェクトは削除しないための命令をさらに備えることを特徴とする請求項1に記載のコンピュータ可読命令。
  29. 前記処理構造が存続時間を持ち、前記処理構造が、前記存続時間に対応する値を持つフィールドを備えるための命令をさらに備えることを特徴とする請求項1に記載のコンピュータ可読命令。
  30. 前記処理構造を、処理構造の必要に応答して処理構造ファクトリによって作成するための命令をさらに備えることを特徴とする請求項1に記載のコンピュータ可読命令。
JP2006552093A 2004-02-10 2004-07-29 データベースシステムにおけるラージオブジェクトインフラストラクチャのためのシステムおよび方法 Expired - Lifetime JP5174352B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/776,664 US7437346B2 (en) 2004-02-10 2004-02-10 Systems and methods for a large object infrastructure in a database system
US10/776,664 2004-02-10
PCT/US2004/024461 WO2005083594A1 (en) 2004-02-10 2004-07-29 Systems and methods for a large object infrastructure in a database system

Publications (2)

Publication Number Publication Date
JP2007522559A true JP2007522559A (ja) 2007-08-09
JP5174352B2 JP5174352B2 (ja) 2013-04-03

Family

ID=34860856

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006552093A Expired - Lifetime JP5174352B2 (ja) 2004-02-10 2004-07-29 データベースシステムにおけるラージオブジェクトインフラストラクチャのためのシステムおよび方法

Country Status (6)

Country Link
US (1) US7437346B2 (ja)
EP (1) EP1616278A4 (ja)
JP (1) JP5174352B2 (ja)
KR (1) KR20060114285A (ja)
CN (1) CN100445991C (ja)
WO (1) WO2005083594A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013097566A (ja) * 2011-10-31 2013-05-20 Fujitsu Ltd 同期方法、同期プログラム及び情報処理装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257592B2 (en) * 2003-06-26 2007-08-14 International Business Machines Corporation Replicating the blob data from the source field to the target field based on the source coded character set identifier and the target coded character set identifier, wherein the replicating further comprises converting the blob data from the source coded character set identifier to the target coded character set identifier
US20080114780A1 (en) * 2006-11-10 2008-05-15 Kwai Hing Man Efficient database data type for large objects
US8086817B2 (en) * 2006-12-21 2011-12-27 International Business Machines Corporation Method and system for efficient retrieval of data of large or unknown length by a native application program
US7676525B2 (en) * 2007-07-02 2010-03-09 Microsoft Corporation Efficient query processing of merge statement
US8775479B2 (en) * 2007-07-30 2014-07-08 Oracle International Corporation Method and system for state maintenance of a large object
US8676788B2 (en) 2012-03-13 2014-03-18 International Business Machines Corporation Structured large object (LOB) data
CN103034738A (zh) * 2012-12-29 2013-04-10 天津南大通用数据技术有限公司 用于管理异构非结构化数据的关系型数据库及其创建和查询非结构化数据描述信息的方法
WO2016053295A1 (en) * 2014-09-30 2016-04-07 Hewlett Packard Enterprise Development Lp An overlay stream of objects
KR101751970B1 (ko) 2016-06-20 2017-07-03 주식회사 티맥스데이터 쿼리를 실행하기 위한 방법, 장치 및 컴퓨터 판독가능 매체
KR101747265B1 (ko) 2016-06-20 2017-06-15 주식회사 티맥스데이터 쿼리를 실행하기 위한 방법, 장치 및 컴퓨터 판독가능 매체
US11308054B2 (en) 2020-01-14 2022-04-19 Alibaba Group Holding Limited Efficient large column values storage in columnar databases
CN113076326B (zh) * 2021-03-25 2024-05-31 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质
US12001406B2 (en) * 2022-07-29 2024-06-04 Oracle International Corporation Method and system to implement directory reads for a database file system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628226A (ja) * 1992-07-09 1994-02-04 Hitachi Ltd データ処理方法および装置
JPH07271667A (ja) * 1994-03-30 1995-10-20 Nec Corp 情報管理方式
JPH0991230A (ja) * 1995-09-26 1997-04-04 Matsushita Electric Ind Co Ltd データ転送システム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5900870A (en) 1989-06-30 1999-05-04 Massachusetts Institute Of Technology Object-oriented computer user interface
US6078925A (en) * 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US6112024A (en) 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US6108004A (en) 1997-10-21 2000-08-22 International Business Machines Corporation GUI guide for data mining
US5999943A (en) * 1997-10-31 1999-12-07 Oracle Corporation Lob locators
US6263342B1 (en) 1998-04-01 2001-07-17 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated datastore object
US6519597B1 (en) 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
US6301579B1 (en) * 1998-10-20 2001-10-09 Silicon Graphics, Inc. Method, system, and computer program product for visualizing a data structure
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
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
US6735598B1 (en) * 1999-10-29 2004-05-11 Oracle International Corporation Method and apparatus for integrating data from external sources into a database system
US6615219B1 (en) * 1999-12-29 2003-09-02 Unisys Corporation Database management system and method for databases having large objects
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
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
JP3821034B2 (ja) * 2002-03-22 2006-09-13 ブラザー工業株式会社 ネットワーク管理システム,管理対象装置,管理装置,プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628226A (ja) * 1992-07-09 1994-02-04 Hitachi Ltd データ処理方法および装置
JPH07271667A (ja) * 1994-03-30 1995-10-20 Nec Corp 情報管理方式
JPH0991230A (ja) * 1995-09-26 1997-04-04 Matsushita Electric Ind Co Ltd データ転送システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CSNG200000119003, 岡部 寿男, "ベクトル計算機における拡張記憶の拡張主記憶としての仮想化", 情報処理学会論文誌 第35巻 第12号, 19941215, p.2558−2568, JP, 社団法人情報処理学会 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013097566A (ja) * 2011-10-31 2013-05-20 Fujitsu Ltd 同期方法、同期プログラム及び情報処理装置

Also Published As

Publication number Publication date
CN1723462A (zh) 2006-01-18
EP1616278A1 (en) 2006-01-18
CN100445991C (zh) 2008-12-24
EP1616278A4 (en) 2009-06-10
US20050187893A1 (en) 2005-08-25
WO2005083594A1 (en) 2005-09-09
JP5174352B2 (ja) 2013-04-03
KR20060114285A (ko) 2006-11-06
US7437346B2 (en) 2008-10-14

Similar Documents

Publication Publication Date Title
US7761411B2 (en) Delta operations on a large object in a database
US6606618B2 (en) Method for optimizing the performance of a database
US7152224B1 (en) Versioned project associations
US7512639B2 (en) Management of time-variant data schemas in data warehouses
JP5174352B2 (ja) データベースシステムにおけるラージオブジェクトインフラストラクチャのためのシステムおよび方法
US11341317B2 (en) Supporting piecewise update of JSON document efficiently
US6714935B1 (en) Management of non-persistent data in a persistent database
US7801882B2 (en) Optimized constraint and index maintenance for non updating updates
US20090177622A1 (en) Method and system for speeding up rebuild of user-defined indexes during partition maintenance operations in the database systems
US20050182785A1 (en) Smart database
JP2022500723A (ja) データベースにおいてレコードを一括削除するためのシステムおよび方法
CN109902101B (zh) 基于SparkSQL的透明分区方法及装置
US20020147736A1 (en) System and method for reorganizing stored data
US7925665B2 (en) Using query persistence for efficient subquery evaluation in federated databases
US6360218B1 (en) Compact record format for low-overhead databases
US6535895B2 (en) Technique to avoid processing well clustered LOB's during reorganization of a LOB table space
Schönig Mastering PostgreSQL 12: Advanced techniques to build and administer scalable and reliable PostgreSQL database applications
US6925630B1 (en) Method for generating code for processing a database
US8041680B2 (en) Backing up a database
Schonig Mastering PostgreSQL 9.6
US20240370422A1 (en) Subrange truncation of records
JPH0816369A (ja) クラスタリング方法及びシステム
JPH09305449A (ja) データベース管理システム
Miszczyk et al. DB2 UDB for AS/400 Object Relational Support
Parsian Working with the PreparedStatement

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100816

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110208

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110209

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110303

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121228

R150 Certificate of patent or registration of utility model

Ref document number: 5174352

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term