JP4604041B2 - 集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張 - Google Patents

集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張 Download PDF

Info

Publication number
JP4604041B2
JP4604041B2 JP2006536590A JP2006536590A JP4604041B2 JP 4604041 B2 JP4604041 B2 JP 4604041B2 JP 2006536590 A JP2006536590 A JP 2006536590A JP 2006536590 A JP2006536590 A JP 2006536590A JP 4604041 B2 JP4604041 B2 JP 4604041B2
Authority
JP
Japan
Prior art keywords
values
column
subset
change
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006536590A
Other languages
English (en)
Other versions
JP2007509422A (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 JP2007509422A publication Critical patent/JP2007509422A/ja
Application granted granted Critical
Publication of JP4604041B2 publication Critical patent/JP4604041B2/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/23Updating
    • G06F16/235Update request formulation
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • 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/289Object oriented 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/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • 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

Description

本出願は、2003年10月24日に出願された米国出願番号第10/693,302号に対する優先権を主張するものであり、その開示の全体を参照により本明細書に組み込む。
本発明はデータベースシステムに関し、より詳細には、(ネスト化されたテーブルや、複雑に構造化されたオブジェクトまたはXMLを保存するテーブルなどの)階層構造を有するテーブルを1つのステップにおいて任意の方法で修正するために、ネスト化されたリレーショナルSQL言語の拡張を使用し、複雑で部分的な更新を効率よく実行するための(変更記述子や、クエリ最適化技術およびクエリ実行技術の活用などの)メカニズムを提供するためのシステムおよび方法に関する。
SQL照会言語によって、ユーザは、リレーショナルデータモデルを用いて保存されたテーブル形式のデータに対してクエリ(および修正)を行うことができる。リレーショナルデータモデルは、テーブル内の各セル(1つの行の中の1つの列の部分)は単一のスカラ(またはアトミック)値であると指示する。構造化照会言語(SQL)は、リレーショナルデータベースとやり取りするために使用される米国規格協会(ANSI)の標準規格である。SQLステートメントは、リレーショナルデータベースに対してデータの更新やデータの検索などのタスクを実行するために使用される。多くのデータベースシステムがSQLを使用しているが、その多くはまた、通常はそのシステム上でのみ使用される自分自身の独自の拡張をさらに有している。しかし「Select」、「Insert」、「Update」、「Delete」、「Create」、および「Drop」などの標準的なSQLコマンドは、リレーショナルデータベースに対して実行したいと望む多くのことを達成するために使用することができ、データベース分野の技術者にはよく知られていると思われる。
リレーショナルデータモデルに対する最近の拡張によって、単一のスカラ値を1つのセルに保存するという制約が緩和され、テーブル内の各セルは値の集合そのものになることができる。この集合の内側の各要素は集合そのものを含むことができ、すなわち集合は任意のレベルの深さにネスト化することができる。複数の値を備えたこのような集合値化されたセルを有するテーブルを総称して、ネスト化されたテーブルと呼ぶことができる。この発展によって、このようなネスト化されたテーブル内の集合値を修正するにはSQL言語をどのように拡張すればよいかという問題が提示されている。例えば任意のネスティングレベルでスカラ値を同時に変更できるように集合値化されたセルを修正するための技術が求められている。
ネスト化されたテーブルの現在の実施態様および関連する標準は、ネスト化されたテーブル内の集合に対してクエリおよび更新を行うための拡張を提供する。しかし従来のネスト化されたテーブルシステムでは、ネスト化されたスカラ値は、集合値化されたセル内のスカラ値の各レベルに関して一度に1レベル更新されるため、複数の更新を行うには、複数のレベルのセルにおいて保存された値を変更する必要がある。例えば、米国特許第6564203号明細書は、ネスト化された集合の列内における1つまたは複数のネスト化された集合内に論理的に常駐するデータを更新するための技術について記載している。ネスト化された集合の1つまたは複数上で動作するデータ操作言語(DML)ステートメントが検出され、DMLステートメントによってターゲットとされるネスト化された集合内の各要素に対してトリガコードが1回実行される。トリガコードは親値への参照を含むことができるが、トリガは、データベーステーブルまたはテーブルビューの行が更新、挿入、または削除されたときに起動するように設計されている。すなわち、一度に1つの行しか更新されない。このプロセスは遅々として冗長であり、指定した任意のネスト化されたレベルで更新を行うことができない。
米国特許第6493708号明細書は、階層のレベルを識別するための様々なLEVELステートメントを含むCREATE DIMENSIONステートメントを使用して、階層的な次元、その様々なレベル、およびレベル間の関係を定義するためのメカニズムを開示している。次元テーブルは、細分度の高いレベルから細分度の低いレベルへとレベルが移行するという前提で、次元の様々なレベルにおける細分度の間の階層的な関係を埋め込む。しかし、同じデータの細分度の高い/細分度の低い表示として必ずしも相互に関連付けられていないそれぞれの行における値に関してネスト化されたテーブルを更新するための一般的なメカニズムについては教示していない。
SQL2003の標準は、アレイおよびマルチセットという2種類の集合を指定する。テーブルの列は、これら2つのタイプの一方とすることができる。アレイおよびマルチセットを実装する既存のデータベースシステムでは、標準は、集合値化された列の全体を修正するためのシンタックスおよびセマンティクスを指定し、そこではまったく新しい値が古い値に取って代わる。従来技術は、集合値化された列を増分的に修正するための方法を何ら指定していない。大きな集合のわずかな部分を修正するだけでよい場合に、大きな集合全体を新しい集合と取り替えることは非常に高くつくおそれがあるため、そうした集合に対して増分的な修正を実行できるようにする技術が求められている。本発明は、当技術分野におけるこれらのニーズに対処するものである。
本発明は、SQLのUPDATEステートメントのネスト化された拡張を使用して、ネスト化されたテーブル内の集合値化された列を更新する新たな方法を提供することによって、当技術分野における前述のニーズを満たす。提案する拡張は、テーブルのスカラ値化された列を修正するために使用される(外側のUPDATEと呼ばれる)従来のUPDATEステートメントのシンタックスおよびセマンティクスに類似した、集合値化された列を修正するためのシンタックスおよびセマンティクスを使用する。外側のレベルにおけるテーブルと同じシンタックスおよびセマンティクスの構成を使用することによって、リレーショナルテーブルに対する修正を処理する既存の実施態様は、更新を処理するためのその実施態様の技術を再利用して、集合値化された列も修正することができるため、これは望ましい。また本発明によるこうしたUPDATEの拡張によって、階層内の任意のレベルの深さに埋め込まれているネスト化された集合に対する更新を指定することができる。
新しいシンタックスは、データ自体の構造と平行する形で外側のUPDATEステートメントの内側に埋め込まれる。したがってシンタックスはユーザによるデータの概念モデルに対してより直接的にマップするため、より理解しやすい。提案しているUPDATEステートメントに対する拡張によって、同じステートメントを使用して、集合値化された列と他のスカラ値化された列の双方に対して同時に更新を行うことができ、これによって修正を効率よく処理することができる。
本発明による変更記述子を用いてUPDATEステートメントを実施するリレーショナルデータベースシステムは、データベース修正(クエリ)ステートメントを解析して、UPDATEステートメントによって指定されるようにテーブルに対する変更の論理的な記述を作成するパーサと、修正を実行する実行アルゴリズムを作成するクエリオプティマイザと、最後に実行アルゴリズムを実施するクエリ実行エンジンとを含む。実行アルゴリズムは、次のステップから構成される。すなわち(i)更新する必要のある複雑に構造化されたタイプの列(例えばネスト化されたテーブル)内の行を決定し、更新される複雑に構造化されたタイプの列内における列用の新たな値を計算するステップと、(ii)計算された新たな値を複雑に構造化されたタイプの列に適用するステップである。集合値化された列に対する修正用として、ステップ(ii)は、集合値化された列内の値に対する変更の集合と、複雑に構造化されたタイプの列の階層内で更新される値の場所とを表すデータ構造(変更記述子)を使用する。ステップ(ii)では、クエリ実行エンジンは、スカラ値化された列用の単純なスカラ更新を使用することに加えて、変更記述子を読み取り、それによって記載されている変更を集合値化された列に適用する。
UPDATEの拡張を実施するための方法は、変更記述子と呼ばれる技術を使用し、これは、スカラ値化された変更と集合値化された変更の両方をすべて、集合値化された列内で行われる変更の完全な記述を提供する単一の値に集約するデータ構造である。変更記述子は、何を変更すべきか、そしてどこを変更すべきかをクエリ実行エンジンに指示し、従来のスカラではあるが、指定された階層的なレベルでスカラを修正するのに必要な階層的な情報を有するスカラとしてパッケージされている。したがって変更記述子によって、単一の操作で様々な細分度のレベルにおける複数の更新を効率よく適用することができる。また変更記述子は、UPDATE演算内のSET節によって様々なネスティングレベルで修正された特定のスカラフィールドによって影響を受けるインデックスのみを更新することによって、またUPDATE演算によって修正された実際の要素に対応するインデックスの行のみを更新することによって、効率のよいインデックスメンテナンスアルゴリズムを実施することもできる。また変更記述子は、変更の計算をその適用自体から分離するという(ハローウィンプロテクション(Halloween Protection)として知られている)利点、すなわち更新ステートメントが自分自身に副作用を及ぼすことを防止するという利点も有する。これは、変更の計算と適用が強力に分離されていない場合に発生する可能性がある。それは、第2のフェーズによって生じる可能性のあるデータに対する中間時点での変更が目に入ることによって、第1のフェーズが不適切な影響を受ける可能性があるためである。
したがって本発明によって、(ネスト化されたテーブルや、複雑に構造化されたオブジェクトまたはXMLを保存するテーブルなどの)階層構造を有するテーブルを1つのステップにおいて任意の方法で修正するために、ネスト化されたリレーショナルSQL言語の拡張を使用することができ、複雑で部分的な更新を効率よく実行するための(変更記述子や、クエリ最適化技術およびクエリ実行技術の活用などの)メカニズムが提供される。また本発明のSQL言語の拡張は、本発明を実施するように適合されたデータベース内で複雑に構造化されたタイプのリレーショナルデータまたはXMLデータに対して管理およびクエリを行うための豊かで効率のよいサポートも可能にする。
前述の概要、ならびに後述の本発明に関する詳細な説明は、添付の図面と併せて読めば、よりよく理解することができる。本発明を説明する目的で、図面には本発明の様々な態様の典型的な実施形態が含まれている。しかし本発明は、開示されている特定の方法および手段に限定されるものではないことを当業者なら理解できるであろう。
本発明の主題は、法的要件(35U.S.C.1、以下参照)を満たすために具体的に説明されている。しかしこの説明自体は、本発明の範囲を限定することを意図するものではない。むしろ特許請求されている主題は、この特許の有効期間中に現在または将来における他の技術と共に使用できる、本明細書に記載したものと類似した異なるステップまたは要素を含む他の方法で具体化できる可能性もあることを発明者は考慮している。さらに「ステップ」という用語は、本明細書では、採用される方法の異なる側面を示すために使用される場合があるが、この用語は、各ステップの特定の順序が必要であると明示されない限り、本明細書に開示される様々なステップ間における何らかの特定の順序を意味するものと解釈すべきではない。
本発明は、MYSQLなどのネスト化されたテーブルをサポートする任意の拡張されたリレーショナルデータベースシステムにとって有用であることをデータベースおよびメモリ管理分野の技術者なら理解するであろう。したがって図1〜6を参照しながら本明細書で説明される本発明は、そうしたすべてのシステムに適用できることを理解されたい。
定義:
複雑に構造化されたタイプ:複雑に構造化されたタイプは、フィールド、プロパティ、およびメソッドのセットから構成される。各フィールドまたはプロパティは、次のうちの1つとすることができる。
− スカラタイプ
− 複雑に構造化されたタイプ自体
− 各要素が、複雑に構造化されたタイプであるマルチセット。
複雑に構造化されたタイプは、非再帰的なものに限定される。すなわち複雑に構造化されたタイプは、その同じタイプのフィールドのプロパティを含むことはできない。本明細書で定義される複雑に構造化されたタイプは、ネスト化されたテーブル、集合値化されたテーブル、および他の多次元データ構造を含む。
マルチセット:マルチセットは集合のタイプである。それは、可能性のある複製を有する命令されていないオブジェクトのセットである。マルチセットは、自分が含む要素のタイプを定義するという意味で強力にタイプ分けされている。本明細書では、タイプTの要素のマルチセットを表すためにMultiset<T>という表記を使用する。
複雑に構造化されたタイプとマルチセット値化されたタイプの両方で、任意の深さのレベルのネスティングを有することができる。
複雑に構造化されたタイプは、次のシンタックスを用いて正規に表すことができる。この例ではAddressTypeは、PhoneNosと呼ばれるフィールドを有し、これは集合値化され、Multiset<PhoneNoType>と入力される。
Figure 0004604041
ここでは、PhoneNoTypeは次のように定義される。
Figure 0004604041
次のテーブルは、上で定義したタイプを使用する。最初にAddressTypeのMultiset用にMULTISETタイプが作成される。次いでこのタイプは、Employeesテーブルの列を定義するために使用される。
Figure 0004604041
本発明の実施形態:
本発明は、複雑な構造を有するテーブル(すなわち、構造化された列とマルチセット値化された列の両方を含むテーブル)用のデータ修正機能を提供するための技術を提供する。本発明の好ましい実施形態では、これらの機能は、リレーショナルデータベース内に保存されたデータを更新するためのSQL Serverエンジンの一部である。例えば本発明は、しばしば1NF(または「フラット」な)リレーショナルモデルよりも複雑なデータモデルを有するアプリケーションと共に効率よく使用される。データのモデルとなるデータタイプは、複雑な内部構造を有するか、および/または値のマルチセットを含む。こうしたアプリケーションは通常、フラットなテーブルのセットを用いてこのデータをモデル化する。複雑に構造化されたタイプおよびマルチセットは、論理的なスキーマが元のデータモデルにより自然にマップするようなデータをモデル化する方法を提供する。本発明は、こうした複雑に構造化されたタイプの内側に埋め込まれているマルチセット内のリレーショナルデータを更新するために使用することができる。以降でより詳細に説明するように、本発明は、フラットなテーブル上の最も外側のレベルでSQLが提供する豊かさおよび表現力のレベルでマルチセットデータを修正する機能も含む。
本発明によれば、SQLステートメントは、テーブルの集合値化された列(マルチセット)に対する修正をサポートするように強化されている。本発明によるテーブルの集合値化された列に対する修正をサポートするように強化されているSQLステートメントは、UPDATEステートメントである。従来のUPDATEステートメントの一般的なフォーマットは次のようなものであり、<>によって囲まれているシンタックス要素は非終端であり、記述内において後で展開される。
Figure 0004604041
ここでは<target−table>は、修正されているテーブルであり、<scalar−column−modifcation>は、スカラ値化された列の修正を指定し、次の形式をとる。
Figure 0004604041
ここでは<target−column>は、修正されている列の名前であり、<value−expression>は、<target−column>の修正後の値となるべき新たな値を提供するスカラ値化された式である。
提案している本発明によるUPDATEステートメントの拡張は、集合値化された列を修正するために使用できるSET節内の別の種類の修正(<collection−column−modification>)を導入する。<collection−column−modification>は、次の形式の1つである。
Figure 0004604041
または
Figure 0004604041
または
Figure 0004604041
すなわち<collection−column−modification>は、外側のテーブルに対してINSERT/UPDATE/DELETEに類似したINSERT/UPDATE/DELETEシンタックスを使用する。内側のUPDATEのSET節は、外側の集合値化された列の内側にある集合値化された列に対する修正を指定することができ、したがって同一の再帰的にネスト化された統語的な手法を用いて任意のレベルのネスティングで集合値化された列を修正することができる。本質的に、集合値化された列上の修正は、外側のUPDATEステートメントのSET節内にINSERT/UPDATE/DELETEを埋め込むことによって、外側のテーブル上のUPDATEとしてモデル化される。
前述のように、スカラ値化された変更と集合値化された変更の両方の変更をすべて、複雑に構造化された列、オブジェクト値化された列、または集合値化された列において行われる変更の完全な記述を提供する単一の値に集約する本発明によるデータ構造を本明細書では「変更記述子」と呼ぶ。変更記述子は、複雑に構造化されたタイプの階層内で何を変更すべきか、そしてどこを変更すべきかをUPDATE命令に指示し、指定された階層的なレベルでUPDATE命令がスカラを更新できるように従来のスカラとしてパッケージされている。変更記述子は、UPDATE演算内のSET節によって影響を受けるスカラフィールドまたは集合値化されたフィールドによって影響を受けるインデックスのみを更新することによって、またUPDATE演算によって修正された集合の実際の要素に対応するインデックスの行のみを更新することによって、効率のよいインデックスメンテナンスアルゴリズムを実施することができる。したがって本発明は変更記述子を使用して、スカラではなく階層構造を有するテーブルの列に対して複雑で部分的な更新を実施する。
FirstName、LastNameおよびEmployeeID、Salaryというスカラ値化された列と、住所のセットを保存するAddressesという集合値化された列とを有するEmployeesテーブルに対する更新を参照しながら、変更記述子の実施態様の例を以降に示す。集合値化された列内の各住所は、Street、City、State、ZipCodeというスカラ値化された列と、PhoneNosという集合値化された列とを有する。例えば、
Figure 0004604041
従来のUPDATEステートメントのシンタックスでは、テーブルの列に新たな値を割り当てることによって、列を全体として修正することしかできない。例えばテーブル「Employees」内の従業員1234および1235が10%の昇給を受ける場合、この演算は、次のような従来のシンタックスを用いて実施することができる。
Figure 0004604041
こうしたUPDATEは、2つのフェーズを用いて処理される。第1のフェーズでは、変更される行が列挙され、修正される列用の新たな値が計算される。このプロセスでは、実行される変更を表すデータのストリームが作成され、これを本明細書ではデルタストリームと呼ぶ。第2のフェーズでは、列はこのデルタストリームごとに修正される。
一方、本発明によれば、UPDATEステートメントは、2つのフェーズを使用する同じメカニズムの変形形態を用いて、複雑に構造化され集合値化された列の一部を修正する。本発明によれば、第1のフェーズでは、デルタストリームは、集合値化された列に対するすべての変更を集約する新たなデータ構造を使用する。図1に示されているように、更新の第1のフェーズは、クエリ内の述部を満たす行を列挙し、そのそれぞれに対するSalary列の新たな値を計算することによって実施される。これによって、更新用のデルタストリームが作成される。第2のフェーズは、その前に集約された変更を実行するために、デルタストリームをテーブル自体に適用するステップを含む。
本明細書に記載されているように、変更記述子の技術は、前述のデルタストリームの概念を拡張して、複雑に構造化された列または集合値化された列に対して全体的な変更ではなく細分化された変更を実施するための方法である。ネスト化された更新の一部として集合値化された列に適用される変更のセットは、それ自体デルタストリームとみなすことができる。このデルタストリームは、テーブルに対する変更を表す最上部のデルタストリームの内側でネスト化される。集合値化された列の内側に含まれるやはり集合値化された列に対する変更は、さらにネスト化されたデルタストリームと共に表すことができる。
変更記述子は、ネスト化されたデルタストリームのコンパクトなスカラの表現である。それをスカラ値として表すことによって、最上部のテーブルのレベルのデルタストリームを作成している間に、通常のテーブルの列の他の新たな値と共にそれをシームレスに集約することができる。これによって、スカラの更新と複数のレベルでネスト化された更新とが、同じステートメント内で混在することができる。
更新の第2のフェーズの実施態様では、変更記述子が、集合値化された列の新たな値をすべて含むのではなく、適用される細分化された変更のセットのみを含むことが理解されている。この実施態様は、集合値化された列のストレージフォーマットにも留意し、変更記述子の内側に含まれる情報を物理的な演算に変換することができる。したがって変更記述子のフォーマットはかなり柔軟であり、過度に実施態様に依存することなく、集合値化された列に加えて、XML、オブジェクトタイプなど、様々な他の種類の複雑な構造と共に使用することができる。
図2〜4は、ネスト化された更新ステートメントの3つの例と、変更記述子の内容およびその適用効果の概要を示す対応する図とを示している。第1のステートメント(図2)は、10%の昇給およびワシントン州における住所用のZipCodeの更新という、2人の従業員に対するレコードの変更を同時に行う。
Figure 0004604041
第2のステートメント(図3)は類似のものだが、更新される住所の内側に含まれる電話番号のいくつかの内側にあるAreaCodeフィールドも更新する。これは、同一のステートメント内における3つのレベルの階層(Salaryがレベル1、Zipcodeがレベル2、AreaCodeがレベル3)でスカラ値を修正する機能を示している。
Figure 0004604041
第3の例(図4)では、昇給と併せて、2人の従業員のシアトルの住所が削除されている。
Figure 0004604041
変更記述子のコードの実施態様
本発明による変更記述子を実施するためのコードは、変更記述子を作成するように、そして変更記述子を使用するように動作する。変更記述子は階層内で最初から作成され、変更記述子を受け取る演算子は、詳細に前述したシンタックスに従って変更記述子を分解する。このシンタックスは、階層的なネスト化されたテーブル構造内における更新の場所を指定し、複数の値として保存されたデータの階層的なレコードを維持する。変更記述子は、場所に関する情報ならびにスカラ情報を具体化するため、1つのセル内の階層的なデータは、前述の例のようにクエリ実行アルゴリズム内の単一のステップを用いて更新することができる。
図5および6は、前述の図2〜4の例における本発明の変更記述子の実施態様を示している。図5は、従来のSQL Serverシステムにおける従来のUPDATE命令を用いたセルの通常の更新を解析するステップ、最適化するステップ、および実行するステップを示している。図6は、前述のシンタックスによる変更記述子を計算するためにクエリ実行プロセスが修正される本発明のネスト化された更新のケースを示している。図示されているように、リレーショナルデータベースシステムは、受け取ったSQLステートメントを解析して、ユーザがデータベースによって実行したいこと(例えばデータの挿入、更新、または削除)の論理的な記述を作成するSQLパーサと、当技術分野で知られている技術を用いて実行アルゴリズムを作成するクエリオプティマイザとを含む。本発明によれば、図5の従来のクエリの実行は、変更記述子内に記載されているネスト化されたテーブル内の各変更を行うために変更記述子を計算するステップをさらに含むように修正されている。さらに本発明によるクエリ実行エンジンは、変更記述子を読み取り、変更記述子によって記述されている変更をテーブルに適用するように強化されている。図6の例では、給与に加えてAddressesが更新されている。変更は集約されると、本発明のSQL Serverシステムに関連付けられているデータベース(図示せず)内のEmployeesテーブルに適用される。
本発明の変更記述子は、UPDATE演算内のSET節によって様々なネスティングレベルで修正された特定のスカラフィールドによって影響を受けるインデックスのみを更新することによって、またUPDATE演算によって修正された実際の要素に対応するインデックスの行のみを更新することによって、効率のよいインデックスメンテナンスアルゴリズムを実施できることを当業者なら図6から理解するであろう。また変更記述子は、変更の計算をその適用から分離するという(ハローウィンプロテクションとして知られている)利点、すなわち更新ステートメントが自分自身に副作用を及ぼすことを防止するという利点も有する。
これは、変更の計算と適用が2つの別々のステップに強力に分離されていない場合に発生する可能性がある。それは、第2のフェーズによって生じる可能性のあるデータに対する中間時点での変更が目に入ることによって、第1のフェーズが不適切な影響を受ける可能性があるためである。
本発明は、大きなデータタイプをデータベース管理システム内のユーザ定義型のフィールドとして保存する上で特に有利であることも当業者なら理解するであろう。本発明の広範な概念から逸脱することなく前述の実施形態に変更を実施できることを理解することができる。例えば、ここまで本発明の実施形態についてMicrosoftのSQL SERVERデータベース管理システムというコンテキストで説明したが、本発明はSQLのUPDATEステートメントの使用をサポートする任意のデータベース管理システム(例えばオブジェクト指向データベース、XMLデータベースなど)において具体化できることを理解することができる。さらに本発明の特定の態様について、SQL Serverなどのリレーショナルデータベースシステムのコンテキストにおいて具体化されるものとして説明したが、本発明のそれらの態様は、その環境における実施態様に必ずしも限定されるものではないことを理解することができる。したがって本発明は、開示された特定の実施形態に限定されるものではなく、添付の特許請求の範囲によって定義される本発明の趣旨および範囲内に収まるすべての修正を包含することを意図していることを理解することができる。
クエリ内の述部を満たす行を列挙し、各行に対するSalary列の新たな値を計算することによって実施される、Salaryスカラに関するネスト化されたテーブルの更新を示す図である。 変更記述子の内容およびその適用効果の概要を示す図を含む、本発明によるネスト化されたUPDATEステートメントの例を示す図である。 変更記述子の内容およびその適用効果の概要を示す図を含む、本発明によるネスト化されたUPDATEステートメントの例を示す図である。 変更記述子の内容およびその適用効果の概要を示す図を含む、本発明によるネスト化されたUPDATEステートメントの例を示す図である。 従来のSQL Serverシステムにおける従来のUPDATE命令を使用したテーブルの通常の更新を解析するステップ、最適化するステップ、および実行するステップを示す図である。 本発明による変更記述子を計算するためにクエリ実行プロセスが修正される本発明のネスト化された更新のケースを示す図である。

Claims (13)

  1. リレーショナルデータベースシステムにおけるネスト化されたテーブルの列内の値を更新する方法であって、
    前記ネスト化されたテーブルの列内の複数の値に対する修正を表す変更記述子を作成するステップであって、前記列内の複数の値は、前記列の少なくとも1行の中で複数のレベルを有する階層に組み込まれており、前記複数の値のサブセットは、前記階層の任意のレベルに組み込まれていること、
    前記列の前記任意のレベルにおける前記複数の値のサブセットに対する変更を集約するステップと、
    前記データベースに対するタスクを実行するためのデータ修正ステートメントに応答して前記変更記述子を計算して、前記列内の前記複数の値のサブセットを前記集約された変更によって更新するかを決定するステップと
    前記集約された変更を、前記列内の前記複数の値のサブセットに適用するステップと
    を備えたことを特徴とする方法。
  2. 前記複数の値のサブセット前記集約された変更により同時に更新するステップをさらに備え、
    前記複数の値のサブセットは、前記列の前記階層内の異なるレベルの複数のスカラ値を含むことを特徴とする請求項1に記載の方法。
  3. 前記複数の値のサブセット前記集約された変更により同時に更新するステップをさらに備え、
    前記複数の値のサブセットは、前記ネスト化されたテーブルのスカラ値と、前記リレーショナルデータベースシステムの前記列の値とを含むことを特徴とする請求項1に記載の方法。
  4. SQLのUPDATEステートメントのSET節の内側にINSERT/UPDATE/DELETEステートメントを埋め込むステップをさらに備えたことを特徴とする請求項1に記載の方法。
  5. 記列前記階層内の複数のレベルの各々に対応する最も外側のUPDATEステートメントの内側に複数のネスト化されたSET節を埋め込むステップをさらに備えたことを特徴とする請求項4に記載の方法。
  6. データベースに対するタスクを実行するためのデータベース修正ステートメントに応答して、少なくとも1つのネスト化されたテーブルの列内の値を保存および更新するためのリレーショナルデータベースシステムにおいて、
    前記データベース修正ステートメントを解析して、前記データベース修正ステートメントによって提示される列内の複数の値のサブセットに対する変更の記述を表す変更記述子を作成するパーサであって、前記列内の複数の値は、前記列の少なくとも1行の中で複数のレベルを有する階層に組み込まれており、前記複数の値のサブセットは、前記階層の任意のレベルに組み込まれている、パーサと、
    前記データベース修正ステートメントを実施するための実行アルゴリズムを作成するクエリオプティマイザと、
    前記実行アルゴリズムを用いて前記データベース修正ステートメントの前記変更記述子を計算して、前記列内の前記複数ののサブセットを更新するかを決定するクエリ実行エンジンであって、前記変更記述子、前記列内の前記階層の任意のレベルの階層における前記複数の値に対する変更を集約し、前記クエリ実行エンジンは、更新される前記列内の前記複数ののサブセットに前記変更を適用するクエリ実行エンジンと
    を備えたことを特徴とするシステム。
  7. 前記クエリ実行エンジンは、前記複数の値のサブセットを前記集約された変更により同時に更新し、前記複数の値のサブセットは、記列の前記階層内の異なるレベルで複数のスカラ値を含むことを特徴とする請求項に記載のシステム。
  8. 前記クエリ実行エンジンは、前記複数の値のサブセットを前記集約された変更により同時に更新し、前記複数の値のサブセットは、前記リレーショナルデータベースシステムの列内の値と共に前記ネスト化されたテーブル内のスカラ値を含むことを特徴とする請求項に記載のシステム。
  9. 前記パーサは、データベースUPDATEステートメントのSET節を解析することを特徴とする請求項に記載のシステム。
  10. 前記パーサは、前記列の前記階層内の各レベルに対応する最も外側のUPDATEステートメントの内側の複数のネスト化されたSET節内の前記UPDATEステートメントを解析することを特徴とする請求項に記載のシステム。
  11. リレーショナルデータベースシステムにおけるネスト化されたテーブルの列内の値を更新する方法であって、
    前記ネスト化されたテーブルの列内の複数の値に対する修正を表す変更記述子を作成するステップであって、前記列内の複数の値は、前記列の少なくとも1行の中で複数のレベルを有する階層に組み込まれており、前記複数の値のサブセットは、前記階層の任意のレベルに組み込まれており、前記変更記述子は、前記列内の任意のレベルの前記複数の値のサブセットに対する変更を集約すること、
    前記データベースに対するタスクを実行するためのデータ修正ステートメントに応答して前記変更記述子を計算して、前記列内の前記複数ののサブセットを前記集約された変更によって更新するかを決定するステップと
    前記集約された変更を、前記列内の前記複数の値のサブセットに適用するステップと
    を備えたことを特徴とする方法。
  12. 前記複数の値のサブセットを前記集約された変更により同時に更新するステップをさらに備え、
    前記複数の値のサブセットは、記列内の異なるレベルで複数のスカラ値を含むことを特徴とする請求項11に記載の方法。
  13. 前記複数の値のサブセットを前記集約された変更により同時に更新するステップをさらに備え、
    前記複数の値のサブセットは、前記リレーショナルデータベースシステムの列内の値と共に前記ネスト化されたテーブル内のスカラ値を含むことを特徴とする請求項11に記載の方法。
JP2006536590A 2003-10-24 2004-07-29 集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張 Expired - Fee Related JP4604041B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/693,302 US7433886B2 (en) 2003-10-24 2003-10-24 SQL language extensions for modifying collection-valued and scalar valued columns in a single statement
PCT/US2004/024522 WO2005045582A2 (en) 2003-10-24 2004-07-29 Modifying collection-value and scalar valued columns in a single statement

Publications (2)

Publication Number Publication Date
JP2007509422A JP2007509422A (ja) 2007-04-12
JP4604041B2 true JP4604041B2 (ja) 2010-12-22

Family

ID=34522359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006536590A Expired - Fee Related JP4604041B2 (ja) 2003-10-24 2004-07-29 集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張

Country Status (6)

Country Link
US (1) US7433886B2 (ja)
EP (1) EP1597655A4 (ja)
JP (1) JP4604041B2 (ja)
KR (1) KR101085686B1 (ja)
CN (1) CN100474286C (ja)
WO (1) WO2005045582A2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890532B2 (en) * 2004-12-15 2011-02-15 Microsoft Corporation Complex data access
US7624374B2 (en) * 2005-08-30 2009-11-24 Microsoft Corporation Readers and scanner design pattern
US20070174305A1 (en) * 2006-01-06 2007-07-26 International Business Machines Corporation Method to reduce the number of copies of values in procedural language
US8656272B2 (en) * 2006-04-28 2014-02-18 Microsoft Corporation Persisting instance-level report customizations
US20080071730A1 (en) * 2006-09-14 2008-03-20 Roland Barcia Method and Apparatus to Calculate Relational Database Derived Fields During Data Modification
US8387004B2 (en) * 2007-02-09 2013-02-26 Microsoft Corporation Compositional application programming interface and literal syntax
US8595231B2 (en) * 2007-04-26 2013-11-26 International Business Machines Corporation Ruleset generation for multiple entities with multiple data values per attribute
US7676525B2 (en) * 2007-07-02 2010-03-09 Microsoft Corporation Efficient query processing of merge statement
US7974981B2 (en) 2007-07-19 2011-07-05 Microsoft Corporation Multi-value property storage and query support
US8200668B2 (en) * 2008-06-24 2012-06-12 Microsoft Corporation Scalar representation for a logical group of columns in relational databases
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9563658B2 (en) 2012-08-20 2017-02-07 Oracle International Corporation Hardware implementation of the aggregation/group by operation: hash-table method
US9727606B2 (en) 2012-08-20 2017-08-08 Oracle International Corporation Hardware implementation of the filter/project operations
US9600522B2 (en) * 2012-08-20 2017-03-21 Oracle International Corporation Hardware implementation of the aggregation/group by operation: filter method
US9430550B2 (en) 2012-09-28 2016-08-30 Oracle International Corporation Clustering a table in a relational database management system
US8996544B2 (en) 2012-09-28 2015-03-31 Oracle International Corporation Pruning disk blocks of a clustered table in a relational database management system
US9514187B2 (en) 2012-09-28 2016-12-06 Oracle International Corporation Techniques for using zone map information for post index access pruning
US10642837B2 (en) 2013-03-15 2020-05-05 Oracle International Corporation Relocating derived cache during data rebalance to maintain application performance
CN103177123B (zh) * 2013-04-15 2016-05-11 昆明理工大学 一种提高数据库检索信息相关度的方法
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US10067954B2 (en) 2015-07-22 2018-09-04 Oracle International Corporation Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10656964B2 (en) 2017-05-16 2020-05-19 Oracle International Corporation Dynamic parallelization of a calculation process
US10719372B2 (en) 2017-05-22 2020-07-21 Oracle International Corporation Dynamic parallelization of data loading
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US11748352B2 (en) * 2021-08-26 2023-09-05 International Business Machines Corporation Dynamical database system resource balance

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412804A (en) 1992-04-30 1995-05-02 Oracle Corporation Extending the semantics of the outer join operator for un-nesting queries to a data base
US6016497A (en) * 1997-12-24 2000-01-18 Microsoft Corporation Methods and system for storing and accessing embedded information in object-relational databases
US6460043B1 (en) 1998-02-04 2002-10-01 Microsoft Corporation Method and apparatus for operating on data with a conceptual data manipulation language
US6122644A (en) * 1998-07-01 2000-09-19 Microsoft Corporation System for halloween protection in a database system
JP4346158B2 (ja) * 1999-06-28 2009-10-21 株式会社東芝 データ生成装置及びプログラムを記憶したコンピュータ読み取り可能な記憶媒体
US6484179B1 (en) 1999-10-25 2002-11-19 Oracle Corporation Storing multidimensional data in a relational database management system
US6564203B1 (en) * 2000-02-24 2003-05-13 Oracle Corporation Defining instead-of triggers over nested collection columns of views
US6493708B1 (en) 2000-03-02 2002-12-10 Oracle Corporation Techniques for handling function-defined hierarchical dimensions
WO2002059793A2 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US6892204B2 (en) * 2001-04-16 2005-05-10 Science Applications International Corporation Spatially integrated relational database model with dynamic segmentation (SIR-DBMS)

Also Published As

Publication number Publication date
EP1597655A4 (en) 2008-12-10
KR20060112191A (ko) 2006-10-31
CN100474286C (zh) 2009-04-01
US7433886B2 (en) 2008-10-07
WO2005045582A3 (en) 2005-12-29
EP1597655A2 (en) 2005-11-23
WO2005045582A2 (en) 2005-05-19
JP2007509422A (ja) 2007-04-12
US20050091256A1 (en) 2005-04-28
KR101085686B1 (ko) 2011-11-22
CN1875358A (zh) 2006-12-06

Similar Documents

Publication Publication Date Title
JP4604041B2 (ja) 集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張
US6240418B1 (en) Database apparatus
US7478087B2 (en) Translation of object queries involving inheritence
US7672960B2 (en) Performing operations on a set of objects in a database system
US7461053B2 (en) System and interface for manipulating a database
US7162469B2 (en) Querying an object for properties
US7359912B2 (en) Result set formatting and processing
US7136873B2 (en) Dynamic filtering in a database system
US7139774B2 (en) Singleton abstract model correspondence to multiple physical models
US7734657B2 (en) Containment hierarchy in a database system
CN101727320B (zh) 用于识别数据库更改对应用的影响的方法和系统
EP1387297A2 (en) Translation of object property joins to relational database joins
JP2005534121A (ja) 参照を使用してジェネリック・データ・アイテムに関連するデータ管理アーキテクチャ
US7949685B2 (en) Modeling and implementing complex data access operations based on lower level traditional operations
US7509332B1 (en) Customized indexes for user defined data types
US6507835B1 (en) Generating grouping queries using tensor representations
US20080046440A1 (en) Method And System For Enforcing User-Defined Relational Limitations In A Recursive Relational Database Table
CN113590894A (zh) 一种动态高效的遥感影像元数据入库检索方法
US6360218B1 (en) Compact record format for low-overhead databases
US7213014B2 (en) Apparatus and method for using a predefined database operation as a data source for a different database operation
US7130856B2 (en) Map and data location provider
KR101030368B1 (ko) 데이터 저장소 내의 비순서화 및 순서화 컬렉션의 구현을 위한 시스템 및 방법
US10025588B1 (en) Parsing of database queries containing clauses specifying methods of user-defined data types
KR100309670B1 (ko) 씨에이에스이모형정보스키마변환시스템
CA2262593C (en) Database apparatus

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

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

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

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

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4604041

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

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