JP2016509281A - アクティブデータベースクエリのメンテナンス - Google Patents

アクティブデータベースクエリのメンテナンス Download PDF

Info

Publication number
JP2016509281A
JP2016509281A JP2015549688A JP2015549688A JP2016509281A JP 2016509281 A JP2016509281 A JP 2016509281A JP 2015549688 A JP2015549688 A JP 2015549688A JP 2015549688 A JP2015549688 A JP 2015549688A JP 2016509281 A JP2016509281 A JP 2016509281A
Authority
JP
Japan
Prior art keywords
query
control information
updated
query result
database
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
JP2015549688A
Other languages
English (en)
Other versions
JP6198845B2 (ja
JP2016509281A5 (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.)
Infor US LLC
Original Assignee
Logicblox Inc
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 Logicblox Inc filed Critical Logicblox Inc
Publication of JP2016509281A publication Critical patent/JP2016509281A/ja
Publication of JP2016509281A5 publication Critical patent/JP2016509281A5/ja
Application granted granted Critical
Publication of JP6198845B2 publication Critical patent/JP6198845B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators

Landscapes

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

Abstract

一態様は、アクティブクエリのメンテナンス方法を含む。当該方法は、データベース内の少なくとも2つの関係におけるデータ項目に基づきクエリを実行し、前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程を含む。前記クエリ結果と、前記制御情報とを記録する。前記実行する工程の後に前記データ項目の内の少なくとも1つが更新されたことを示す通知を受信する。前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する。

Description

関連出願の相互参照
本出願は、2012年12月20日に出願された米国特許出願第13/722,067号に基づく利益を主張し、本明細書の一部を構成するものとしてその全文を援用する。
本発明はデータベースクエリに関し、より詳細には、アクティブデータベースクエリのメンテナンスに関する。
データベース管理システムにより、対応するクエリが情報に対してサポートされた状態で、ユーザが大量の情報を保存、更新可能となる。クエリがデータベースの最新データを反映した回答を返すことが理想だが、長期実行中のクエリまたはトランザクションでは、並行して実行中の別トランザクションにより更新されるデータを処理する必要が生じる。
そのような矛盾する更新を管理するための並行処理制御技術が現在、存在する。例えば、矛盾するトランザクションを待機状態とすることで、複数のトランザクションが矛盾するデータ項目にアクセスさせないロックベース技術が存在する。ロックベース技術では、デッドロックにより、時にトランザクションを中止する必要があるため、頻繁にアクセスされるデータ項目ではキューが長くなる可能性がある。さらに現在利用可能な制御技術として、オプティミスティック法が挙げられる。オプティミスティック法では、トランザクションの最後にのみ矛盾の確認が行われ、矛盾が発見されるとトランザクションが中止される。したがって、頻繁に矛盾が生じる場合、無駄な作業が多くなる。マルチバージョンタイムスタンプベース制御技術では、データ項目に対するアクセスタイムスタンプを追跡し、当該項目のタイムスタンプに対し矛盾するデータ項目がトランザクションで書き込まれる必要がある場合、当該トランザクションを中止する。ここでも無駄な作業が多くなり得る。
クエリ高速化のため、データベース内の導出情報を記憶して、データ検索および/または計算を効率化する技術が一般的に使用されている。このような導出情報の一例として、マテリアライズドビューが挙げられる。マテリアライズドビューでは、クエリに対する回答(例えば、サブクエリ)が明示的にデータベースに記憶される。この記憶されたサブクエリが後のクエリで利用可能な場合、マテリアライズドビューを利用しない場合と比較して、当該後のクエリに対して迅速な回答が可能となる。
実施例は、アクティブクエリをメンテナンスする方法、システム、およびコンピュータプログラムプロダクトを含む。本願の一態様は、データベース内の少なくとも2つの関係におけるデータ項目に基づきクエリを実行し、前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程を含む。他の態様においては、前記クエリ結果と、前記制御情報とを記録する工程を含む。他の態様においては、前記実行する工程の後に前記データ項目の内の少なくとも1つが更新されたことを示す通知を受信する工程を含む。さらに別の態様は、前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する工程を含む。
本発明の技術により、さらなる特徴および効果も実現される。本発明の他の実施例および態様は、本明細書に詳細に説明され、請求項に記載された発明の一部をなすと考えられる。効果や特徴と合わせて本発明をより一層理解するために、本明細書の説明および図面を参照されたい。
本発明とみなされる主題は、本明細書の末尾の請求項に具体的に挙げられ、明示的にその権利を主張されている。本発明の前述およびその他の特徴および効果は、以下に挙げる添付図面を参照して後述する詳細な説明を読めば明白である。
小売企業用データベースの一例を示す。
例示的実施例に係るアクティブデータベースクエリのメンテナンスを実行する処理を示す。
マージ結合処理を含むクエリのトレースの一例を示す。
本発明の実施例に係るアクティブデータベースクエリのメンテナンスを実行し得るシステムのブロック図を示す。
例示の実施例は、アクティブデータベーストランザクション間の矛盾を、増分メンテナンス処理により解消することに関する。データベース性能を向上するため、サブクエリ結果を、マテリアライズドビューを使用して保存する。ここで説明される実施例では、増分ビューメンテナンス処理により、データベース更新のたびにマテリアライズドビューが再計算しなおされることを防ぐ。増分ビューメンテナンス処理では、ビューの初期実体化に際して生成されるトレース情報を利用してマテリアライズドビューが最新化される。
ここで説明される実施例は、アクティブトランザクション間の矛盾を増分メンテナンス処理により解消する。トランザクション(T1)がコミットして、アクティブトランザクション(T2)に必要なデータ項目が更新されると(例えば、新しい値の書き込みやデータ項目の削除)、T2に当該変更に対するメンテナンス用のフラグが立てられる。T2の完了前に、コミット済みの、並行して実行されていたトランザクションによる、必要項目に対する全ての変化を考慮して、T2の実行が修正される。複数回メンテナンスが必要となる場合もある。T2を中断、再開するのではなく、T2の実行を増分的に修正することで、システムはT2で処理された作業の多くを保持できるのである。本実施例は感度指数と呼ばれる、T2が必要とする項目を認識し、すでに実行された部分に対し当該項目に対する変更がいかに影響するかを迅速に判断するための新規構造の作成を含む。感度指数は、別トランザクションがデータを更新している間に、マテリアライズドビューを作成することや、マテリアライズドビューの最新状態を効果的かつ増分的に保つことに使用されてもよい。
図1に、ここで説明される実施例の各種特徴を示す、顧客に商品を売る小売企業用データベースの一例を示す。図1に示すデータベースは、顧客テーブル102と、注文テーブル104と、ラインアイテムテーブル106とを有する。顧客テーブル102は、一意の識別子(C_ID)と、カテゴリ名(CATEGORY)と、顧客名(NAME)と、その他属性とを含む、顧客についての情報とを記憶する。注文テーブル104は、注文識別子(O_ID)と、顧客識別子(C_ID)と、注文日(DATE)と、その他属性とを有する、顧客による注文についての情報を記憶する。各注文は、ラインアイテムテーブル106に記録されるようなラインアイテムの数量を含んでもよい。ラインアイテムテーブル106に記録される各ラインアイテムは、対応する注文識別子(O_ID)と、商品識別子(P_ID)と、注文された商品の数量(QUANTITY)と、その他属性とを有する。データベースはさらに、図1に不図示のその他テーブル(ここでは「関係」とも称する)を有してもよい。
小売企業での女性ユーザが、異なる顧客カテゴリで商品について整理分析するものとする。彼女は各カテゴリの顧客が5つ以上購入した商品を確認したいと判断する。彼女は以下の構造化問い合わせ言語(SQL)で表現可能な商品カテゴリビュー(Pcat)を定義する。
Create View Pcat As
Select Distinct CATEGORY,P_ID
From Line_Item L,Orders O,Customer C
Where L.O_ID=O.O_ID And O.C_ID=C.C_ID And L.QUANTITY>=5
データログのようなルールベース言語では、同様のビューは以下のとおりに示されてもよい。
Pcat(CATEGORY,P_ID):−
LineItem(P_ID,O_ID,QUANTITY,...),
Orders(O_ID,C_ID,...),
Customer(C_ID,CATEGORY,...),
QUANTITY>=5
当該ユーザがクエリで共通してPcatビューを使用すると判断すると、ビュー条件を満たすレコードが明示的に保存されるビューを実体化すると判断してもよい。実体化は、長期に及ぶと可能性のあるトランザクション(T)で実行される。明示的な保存、即ちTのコミットにより、保存されたPcatビューの現在のデータベース状態に対する矛盾が生じてはならない。しかし、T開始後に更なるトランザクションがコミットされ、それによりTで読み込み済みのデータが変更され得るため、矛盾を生じないのは困難である。従来の解決法では、矛盾が生じるとTが中止されるか、T実行中に起こり得る矛盾が全て排除されるため、並行性が低下する。現在利用可能な別の技術として、ビュー内の各レコードの導出可能回数(即ち、「サポート数」)を記憶するため、ビューを拡大するものがある。これにより、システムは、いつ最新の導出されたレコードが削除されたか把握可能となる。さらなる導出が不能となった場合にのみ、レコードはマテリアライズドビューから削除される。この例では、各組(CATEGORY,P_ID)の導出総数により、ビューが拡大されるものとする。
本発明の実施例において、データベース管理システムはクエリ実行用の実行プランを選択する。上記の例では、Pcatビュー用の例示的実行プラン(ここでは「Pcatビュー用第1実行プラン」と称する)は以下のステップを含む。
1.O_ID順に、ラインアイテムテーブル106および注文テーブル104内のレコードにアクセスし、ラインアイテムテーブル106内のレコードに対しQUANTITYに関するフィルタ条件を適用。
2.結果として得られるレコードシーケンスのマージ結合を実行。
3.属性CATEGORYおよびP_IDのみ固定して、ステップ2の結果の各レコードRと、顧客テーブル102内のC_IDのレコードをマージ結合する。
4.ステップ3の結果から一意の組を認識し、その重複数と共に各組を記憶。
特定の順序で関係にアクセスするため、上述のように、データベース管理システムは保存された関係の物理的順序を利用するか、所望の順序となるよう、関係を明示的にソートしてもよい。あるいは、データベース管理システムは適切な指数構造を利用して、関係内をキー順に繰り返し(イテレート)してもよい。なお、結合に対するオペランドの1つが結合キーにより順序付けられていない場合でも、ここで説明されるデータベース管理システムの実施形態では、上述のPcatビュー用第1実行プランのステップ3のとおり、非順序入力に対し、一度に1レコードの割合でマージ結合シーケンスを利用することが可能である。
上述のPcatビュー用第1実行プランでは、2段階のマージ結合が行われる。マージ結合は、入力に対するイテレータを作成し、イテレータのキーがそれぞれ異なる場合、先頭イテレータの結合キーに基づき、末尾イテレータを進める。本動作を「Seek」と呼ぶ。例えば、末尾キーが5で、先頭キーが8の場合、シーク(8)が末尾イテレータに対し呼び出され、少なくとも8のキーと対応した結合入力関係にある第1レコードに進む。全てのイテレータでキーが全て同じ場合、同一の結合キーを持つ入力レコードの全組み合わせに対して出力レコードが作成され、当該入力の1つに対するイテレータが、ここでは「ネクスト」と呼ぶ動作により次のキーに進む。一組の入力に対するシーク、ネクスト動作のシーケンスをここで「トレース」と呼ぶ。トレースは制御情報の一例であり、したがってデータに対する所定のアルゴリズム実行シーケンスについての情報である。
シーク、ネクスト動作はあらゆる順序の入力に対し実行可能であるが、シークは順序づけられた木構造で整理された入力に対し特に有効である。キー範囲内で広い幅に対応するシークは、多くのキー値をスキップできるため、作業を省略できる。
例示的実施例において、感度範囲は、関係(またはテーブル)A、Bのマージ結合についての以下の3つの基本的ルールに基づく、マージ結合のトレースから導出される。
a)A、Bにそれぞれ対応する初期キーがKとKであり、K<Kの場合、Bは、[−∞,K]の範囲のキーの影響を受ける。K>Kの場合、Aが[−∞,K]の範囲のキーの影響を受ける。初期キーが同じである場合、任意で片方の入力を選択し(例えばAとする)、当該入力が[−∞,K]の範囲のキーの影響を受けるものとする。
b)入力(例えばAとする)がキーKに位置し、ネクスト動作がAに行われて、新たなキーK’が得られる場合、Aは[K,K’]の範囲のキーの影響を受けるとされる。KがAにおける最後のキーである場合、K’=∞となる。
c)入力(例えばAとする)がキーKに位置し、シーク(L)動作がAに行われて、新たなキーK’が得られる場合、Aは[L、K’]の範囲のキーの影響を受けるとされる。Aの全てのキーがL未満の場合、K’=∞となる。
このようにして、あらゆる規則領域が処理可能である。
上述のPcatビュー用第1実行プランのステップ3は、感度範囲の特殊な状況を示す。これは関係Aが関係Bに対してキーが関連しておらず、関係Aに単一のレコードのみ存在する場合に生じる。関係A内の単一のレコードがキーKを有するものとする。この場合に初期シークが関係Aではなく関係Bで行われ、後続のネクスト動作が関係Bではなく関係Aで行われるものとする。この場合、関係Bの感度範囲は単純に[K,K]となる。
感度範囲はその他属性と関連付けられ、感度指数となる。特に、それまでのマージ結合ステップからの全ての結合カラムが含まれる。上述のPcatビューの第1実行プランにおいて、ステップ2のマージ結合における2つの入力に対する感度指数は追加属性を含まないが、ステップ3のマージ結合に対する感度指数はレコードRからのO_IDを含む。
感度指数はマージ結合が入れ子順序を持つ場合にも定義可能である。例えば、以下のPcatビュー用の実行プランの別実施形態を考える(ここでは「Pcatビュー用第2実行プラン」と呼ぶ)。
1.(C_ID,O_ID)辞書順に注文テーブル104のレコードにアクセスし、C_IDの順に顧客テーブル102のレコードにアクセス。
2.C_IDに対する2つの入力のマージ結合を実行。その結果、各C_IDに対しO_ID値が順序づけられる。
3.結果として得られた中間結果内の各C_IDに対し、ラインアイテムテーブル106のO_ID順でのイテレートと、数量に係るフィルタ条件の適用と、属性CATEGORYおよびP_IDのみを固定としてO_IDに対する2つの入力のマージ結合と、をこの順番に実行する。
4.前ステップの結果から一意の組を認識し、その重複数と共に各組を記憶。
このPcatビュー用第2実行プランでは、各C_ID値に対し、ステップ3のマージ結合が一度実行される。したがって、ここで説明されるデータベース管理システムの実施例は、各C_ID値に対し、O_ID範囲に対する感度を認識する感度指数を(マージ結合のトレースに基づいて)メンテナンスする。
例示的実施例では、データベース管理システムは、演算時間や使用資源について各プランのコストを推定することで、様々なプラン候補の中からプランを選択する。データベース管理システムは、当該指数が有効な特定のテーブルの更新頻度や、当該指数維持に伴う時間空間オーバーヘッドに応じて、全てまたは一部の感度指数を選択し、実体化してもよい。
感度指数を利用すると、各入力関係のレコード(例えば新規レコードや削除済みレコード)のデータ項目への特定の更新が、トレースを変化し得たかを判断可能となる。トレースが変更により変化し得なかった場合、データベース管理システムは、結合結果が現存するこれら新レコードの影響を受けないと判断可能なのである。一方、いくつかのレコード更新によりトレースが変化し得た場合、感度指数はデータベース管理システムにとって非常に重要な情報源となる。このような情報により、実施例に係るデータベース管理システムは、メンテナンスが必要となり得るキー範囲をまとめた変更−オラクルを利用して増分的かつ効率的に出力結果をメンテナンスできるのである。変更−オラクルは、一実施形態では明示的に実体化される。別実施形態では変更−オラクルは実体化されず、一組の一致する感度間隔から必要に応じて、より効率的に導出される。
ここでの「変更−オラクル」という言葉は、属性値の組み合わせ空間内の領域をまとめたクエリ表現である。この属性値の組み合わせ空間内の領域は、基礎データ更新に応じてクエリの再評価が必要な領域である。
ここでの「感度間隔」や「感度範囲」という言葉は、同義であり、上述の3ルールに応じたマージ結合トレースから導出されたキー値の範囲を指す。感度範囲内の修正されたキーは、マージ結合結果を変更し得るものである。
ここでの「感度指数」はエントリの集合を示すデータ構造を指す。例えば、マージ結合の結合キーAに対する感度指数はエントリの集合を示すデータ構造を指し、各エントリはAに対する感度範囲と、マージ結合入力からのその他属性に対する0以上の値を含む。
図2により、実施例に応じてアクティブデータベースクエリのメンテナンスを実行する処理の概要を示す。図1に示すテーブルと、先述のPcatビューを使用する例を利用して、実施例の特徴を説明する。ただし実施例がこれらテーブルやビューに限定されないことが理解されよう。ブロック202において、上述のPcatクエリのようなクエリが、例えばPcatビュー用第1実行プランにより実行される。ブロック204では、Pcatビューが対応する感度指数と共に実体化される。ブロック206において、クエリで使用されるテーブル内のデータ更新の通知を受信する。例えば、C_IDが「12345」の顧客のカテゴリが「ABC」から「DEF」に変化したとする。この変更は、顧客テーブル102の行(12345、ABC、…)を削除し、新たに行(12345、DEF、…)を顧客テーブル102に挿入することで行われる。
ブロック208において、1つ以上の感度指数を確認し、当該変化のPcatビューに対する影響を判定する。ここで説明される例示的実施形態では、システムは顧客テーブル102に対する感度指数I(O_ID、[C_ID1、C_ID2])を調べる。2つの場合が考えられる。第1の場合では、指数(I)内のあらゆるエントリの範囲[C_ID1、C_ID2]内に12345が存在しないため、当該顧客は5を超えるラインアイテム数量を含む注文をしていないこととなり、更新により最終結果は影響されない。即ち、上記削除や上記挿入によってマージ結合結果が変化しない。その他入力に対する感度指数において12345がスキップされているため、感度指数も変更する必要がない。第2の場合では、Iの少なくとも1つのエントリの範囲[C_ID1、C_ID2]に12345が存在するため、顧客12345は5を超える数量の注文を過去に行っていることとなり、最終結果が変化し得る。最初の顧客12345の削除に応じて、システムは12345を含む範囲[C_ID1、C_ID2]のIにおけるO_ID値全てを認識する。実施形態において、Iにおけるあるエントリの範囲[C_id1、C_id2]に12345が存在するかの判定は、特殊なデータ構造により容易になる。例えば、B木状のセグメントツリーを実体化することで、12345を含む間隔のクエリを高速化可能である。
図2のブロック210では、ブロック210で実行された分析に基づき、再評価されるべき任意の感度範囲を反映するため、変更−オラクルを更新する。例えば、一致するO_IDに対して、組(O_ID、12345)が変更−オラクルに追加され、再評価されるべきクエリの一部を判定する。その後、(12345、DEF)を挿入している間に、アクティブデータベースクエリメンテナンス処理により、Iにおける一致するO_ID範囲の組が認識される、これも変更−オラクルに追加される。この例では、挿入、削除のC_IDが同一であり、範囲が削除の間に認識された範囲に一致する。しかし一般的に挿入、削除の組では範囲は異なり得る。
変更−オラクルが計算されると、ブロック212において、変更−オラクルはクエリ結果を増分的に修正するために用いられる。変更−オラクルは、更新結果により変化し得た結合属性組み合わせのサブセットを定義するものである。クエリ本体は当初のプランどおり再実行され得るが、変更−オラクルからの組(O_ID、C_ID)に限定される。メンテナンス処理により、今まで存在しなかった新たな中間レコードや、既に存在しない古い中間レコードが認識される。上記例では、ラインアイテムテーブル106と注文テーブル104との間の初期結合が、変更−オラクルの組(O_ID、C_ID)にのみ繰り返される。ラインアイテムテーブル106はO_IDでのみフィルタリングされ、注文テーブル104はO_IDidおよびC_IDによりフィルタリングされる。本初期結合の結果は、さらにC_IDで顧客テーブル102に結合されるが、C_IDが変更−オラクルに存在する顧客のみが対象となる。変更−オラクルに限定される結合の部分は、更新前状態および更新後状態の両方で計算される。これら2つの状態の差が、クエリ結果に適用されるべき最終的変化に対応する。
本実施形態では、顧客12345が、それぞれ数量が6以上の、それぞれ明示的に異なる商品P1、P2、P3というちょうど3つのラインアイテムを購入したものとする。変更−オラクルは、C_ID12345に関連付けられた、これら3つの多量ラインアイテムを含む注文のO_IDを認識する。カテゴリ、商品に投影される結合前値は{(ABC、P1)、(ABC、P2)、(ABC、P3)}となり、結合後値は{(DEF、P1)、(DEF、P2)、(DEF、P3)}となる。その後、アクティブデータベースクエリ処理で、3商品のカテゴリABCの導出数を低減でき、これら商品のカテゴリDEFの導出数を増加できる。0まで減少すると、行が削除され、それまで存在していなかったが導出数が増加した行に対しては導出数1が挿入される。
実施例において、テーブル記憶構造は、新たに挿入された行、削除された行が効率的に認識可能となるよう構成される。例えば、B木データ構造を使用したコピーオンライトページレベルバージョニングにより、システムは両バージョンに共通のサブツリーをスキップ可能となる。さらに、カスケーディングツリーも、直近の変更を少数のページに集約できるため有用である。
次にブロック214では、1つ以上の感度指数が更新される。ここで、ブロック212、214で実行される処理を「メンテナンス処理」と呼ぶ。メンテナンス処理の間、感度指数は増分変化に伴い更新される。上述の例では、同一のトランザクションで、キー12345を有する削除されたレコードが同じキーを有するレコードの挿入により置き換えられるため、感度指数の最終的変化は生じない。一方、新規注文の挿入や既存のラインアイテムの削除のようなその他変化により、トレースが影響され、感度指数の変更が必要となる。感度指数が更新されるため、実施例では、クエリに対する複数回のメンテナンスが可能となる。
トレースで厳格に定義された間隔からさらに追加の間隔を含んだ感度指数でもメンテナンスに有用である。追加の間隔の存在により、方法の正確さが影響されることはないが、追加の間隔によりクエリ結果メンテナンスに多少の余分な作業が必要となり得る。実施例では新たなデータに対するクエリ評価のトレースが正しく反映されるよう、感度指数がメンテナンス可能であるが、時に必須の間隔以上に多くの間隔が含まれるよう、感度指数をメンテナンスすることで効率が高まる場合がある。典型的な適応ケースでは、クエリ結果メンテナンスに余計な作業が生じたとしても、簡易に感度指数をメンテナンスする方が有効な場合もあり得る。
実施形態では、感度指数メンテナンスは以下のとおりに実施される。クエリ結果メンテナンス中に感度指数で一致する間隔が発見されると、当該間隔は削除される。メンテナンス処理中、イテレートされた実行済みシーク/ネクスト動作を反映するため、新たな感度間隔が設けられる。その結果としての感度指数は、単一クエリ評価のトレースのレコードを正確に示すとは限らず、必要以上の数の感度間隔を含んでもよいが、データ変更によりメンテナンスが必要となる全ての間隔を網羅するものとする。
図3に、実施例に関連するクエリのトレースの概要を示す。感度指数のメンテナンスを説明するため、データベース管理システムが2つのテーブルX、Yのマージ結合を実行するものとする。図3に示すよう、テーブルXがキー0、2、4、5、6を含み、テーブルYが1、2、6、7を含むものとする。図3はこの状態で得られるトレースを示す。上述の実施例により、マージ結合のトレースから感度範囲を導出すると、テーブルXの感度範囲は{[1,2],[2,4],[6,6],[6,∞]}となり、テーブルYの感度間隔は{[−∞,1],[2,2],[4,6]}となる。
次に、テーブルXおよびテーブルYが以下のとおり更新されるものとする。キー5をテーブルXから削除し、キー8をテーブルXに挿入し、キー2をテーブルYから削除し、キー3をテーブルYに挿入する。データベース管理システムは、トレースおよび感度指数を更新しながら結合結果をメンテナンスする。これら更新に対する変更−オラクルは{[2,2],[6,∞]}となり、テーブルYからのキー2の削除、テーブルYへのキー8の挿入が今までのクエリ結果に対し影響し得るという判断を反映している。実施形態では、メンテナンス中にデータベース管理システムは変更−オラクルを、シークおよびネクスト動作が実行される、結合に対する第3の入力として扱う。増分的にメンテナンスが実行されることから、キー範囲全体に対して変更−オラクルは小さくなる可能性が高く、変更−オラクルに対するシークおよびネクスト動作はいずれの入力関係に対しても好適なものである。変更−オラクルが{[2,2],[6,∞]}であることから、メンテナンス処理はキー2まで直接進む。キー2はテーブルYから削除済みであるため、既にマージ結合結果に存在しないと判断される。このメンテナンス中、データベース管理システムはテーブルYでのシーク(2)動作ではキー2ではなく、キー3に進むと判断する。その結果テーブルYに対する感度指数において、[2,2]が[2,3]に置き換えられる。
テーブルXからのキー5の削除は結果にもトレースにも影響しない。初期トレースにおいて、シーク(6)動作によりキー5がスキップされているからである。テーブルYへのキー3の挿入についても同様である。テーブルXにキー8を挿入しても結果は変化しないが、トレースは変化する。キー6後のネクスト動作がエンドマーカではなくキー8に進むようになるためである。その結果、データベース管理システムはテーブルXに対する感度指数の[6,∞]を[6,8]で置き換え、テーブルYに対する感度指数に[8,∞]を追加する。変更−オラクルで示されるよう、これら変化は範囲[6,∞]に対するメンテナンスの処理中に生じる。メンテナンスから以下の最終結果が得られる。(a)キー2が結合結果から削除される。(b)テーブルXに対する感度間隔は{[1,2],[2,4],[6,6],[6,8]}となる。(c)テーブルYに対する感度間隔は{[−∞,1],[2,3],[4,6],[8,∞]}となる。Xに対する感度指数は[3、4]ではなく、更新されたデータのトレースに含まれる[2,4]を有する。システムは、感度指数に対するメンテナンス処理を簡略化するため、より大きい間隔[2,4]を含むのである。
適応状況によっては、メンテナンスはトランザクション更新の実行のたびその直後に行われてよく、または更新が複数回実行された後にまとめて行われてもよい。
別実施形態において、感度指数は結合属性以外にさらなる属性を有する。以下の例に示すよう、感度指数内のクエリで出力される属性を含むことは有利である場合が多い。上述のPcatビューにおいて、各組(CATEGORY、P_ID)からの導出総数によりビューを拡大するのではなく、データベース管理システムが、CATEGORYおよびP_IDによりグループ化される最小C_IDによりビューを拡大する場合について考える。総数ではなく最小C_IDを記録することは、総数のメンテナンスに必要な作業を省略出来得るという点で有利である。総数は、グループに対する更新の度に変更の必要があるが、最小C_IDは、現在の最小C_IDより更新対象C_IDが大きい場合、更新の必要はないのである。
上述のPcatビュー用第1実行プランのステップ3についての感度指数を検討する。(O_ID,[C_ID1,C_ID2])のみ記録するのではなく、システムは感度指数Iに(P_ID,O_ID,[C_ID1,C_ID2])を記録するものとする。顧客テーブル102が更新されると、データベース管理システムはI内で、更新された行のC_IDを含むC_ID範囲を持つエントリを検索する。データベース管理システムがP_IDにアクセス可能となっているため、更新により影響される組(CATEGORY,P_ID)を判定でき、現行のビューから、グループに対する現状最小C_ID(Mと称する)を取得する。挿入を伴う更新が、M以上の最新C_IDを含む場合、当該更新の挿入はビューを変化させないため、無視される。挿入を伴う更新が、M未満の最新C_IDを含む場合、Mは当該C_IDに置き換えられる。削除を伴う更新が、M以下の最新C_IDを含む場合、このグループの新たな最小C_IDの認識や、グループ内にその他C−idが不在であることを認識するため、より高価なメンテナンス動作が開始される。このようにメンテナンス方式を選択することは、より高価なメンテナンス動作につながる更新の頻度が十分低い場合に有効となり得る。
図4に、アクティブデータベースクエリのメンテナンスを自動的に実行するシステムの例のブロック図を概略的に示す。システムはアクティブデータベースクエリメンテナンスアプリケーション410を有する。アクティブデータベースクエリメンテナンスアプリケーション410はホストシステム404上の1つ以上のコンピュータプログラムにより実行される。実施例では、アクティブデータベースクエリメンテナンスアプリケーション410の少なくとも一部がホストシステム404で実行されるデータベース管理システムの一部である。別実施例では、アクティブデータベースクエリメンテナンスアプリケーション410の少なくとも一部が、トランザクションおよびクエリをいずれも実行可能なシステムの構成要素となる。
図4に示すシステムは少なくとも1つのシステム402を有する。少なくとも1つの地点にいるユーザ(例えばエンドユーザやデータベース管理者)はシステム402を介してホストシステム404と通信し、データベースクエリおよび/またはトランザクションを実行するプログラムを開始する。ユーザシステム402はネットワーク406を介してホストシステム404に接続される。各ユーザシステム402は、本明細書で説明された処理を実行するコンピュータプログラムを実行する汎用コンピュータにより実現できる。ユーザシステム402はパーソナルコンピュータ(例えば、ノートパソコン、タブレットコンピュータ、携帯電話)またはホスト付き端末であってもよい。ユーザシステム402がパーソナルコンピュータである場合、本明細書で説明された処理はユーザシステム402とホストシステム404との間で分担されてもよい。ユーザシステム402はさらにゲーム筐体、ネットワーク管理装置、FPGAであってもよい。さらに、複数のユーザシステム402および/またはホストシステム404が並列動作してアクティブデータベースクエリメンテナンスを実行してもよい。
ネットワーク406は広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、グローバルネットワーク(例えばインターネット)、仮想プライベートネットワーク(VPN)、クラウドネットワーク、イントラネットなどの任意の周知ネットワークであってもよいが、これに限られない。ネットワーク406は無線ネットワークや、当該技術分野で周知の物理ネットワークにより実現されてもよい。ユーザシステム402は複数のネットワーク(例えば、セルラーネットワークとインターネット)を介してホストシステムに接続されてもよい。これにより全てのユーザシステム402が同じネットワークを介してホストシステム404に接続されることがなくなる。1つ以上のユーザシステム402と、ホストシステム404はネットワーク406に無線接続されてもよい。一実施形態では、ネットワークはインターネットであり、1つ以上のユーザシステム402はユーザインターフェースアプリケーション(例えばウェブブラウザ)を実行して、ネットワーク406を介してホストシステム404と通信してもよい。別例示的実施例では、ユーザシステム402は直接ホストシステム404に接続される(即ち、ネットワーク406を介さない)。更なる実施例では、ホストシステム404に直接記憶装置408に接続されるか記憶装置408を含む。
記憶装置408はアクティブデータベースクエリメンテナンスに係るデータを有し、電子情報を記憶する様々な装置により実現できる。実施例において、記憶装置408に記憶されるデータは、データベーステーブル、マテリアライズドビュー、感度範囲、感度指数、感度範囲、変更−オラクル、ビュー、プランを1つ以上含むが、これらに限定されない。記憶装置408はホストシステム404内のメモリで実現されてよく、あるいは独立した物理的装置により実電されてもよい。記憶装置408は、ネットワーク406を含む環境全体で統合されたデータソースとして論理的にアドレス可能であってもよい。記憶装置408に記憶される情報は、ホストシステム404および/またはユーザシステム402を介して検索、操作されてもよい。
図4に示すホストシステム404は、サーバによりアクセス可能な記憶媒体に記憶されたコンピュータプログラムに応じて動作する1つ以上のサーバにより実現されてもよい。ホストシステム404は、ネットワークサーバ(例えば、ウェブサーバ)として動作してユーザシステム402と通信してもよい。ホストシステム404は、ユーザシステム402に対する情報の送信、受信を処理し、関連したタスクを実行可能である。ホストシステム404は、ホストシステム404に対する不正アクセスを防ぎ、正当なアクセスに対し任意の限定を付与するよう、ファイヤウォールを有してもよい。例えば、管理者は、システム全体にアクセス可能で、システムを部分的に変更可能であってもよい。ファイヤウォールは当該技術で周知の従来のハードウェアおよび/またはソフトウェアにより実現されてもよい。
ホストシステム404はアプリケーションサーバとして動作してもよい。ホストシステム404はアクティブデータベースクエリメンテナンスアプリケーション410を含む1つ以上のコンピュータプログラムを実行し、本明細書で説明された実施例の態様を実現可能である。ユーザシステム402にアプリケーションを設けることで、処理がユーザシステム402およびホストシステム404で分担されてもよい。あるいは、ユーザシステム402は、本明細書で説明された処理を少なくとも部分的に実行するための独立型ソフトウェアを含んでもよい。先述のように、ネットワークサーバ機能とアプリケーションサーバ機能を異なるサーバで実現してもよい。あるいは、ネットワークサーバ、ファイヤウォール、アプリケーションサーバは、必要な機能を実現するコンピュータプログラムを実行する単一のサーバで実現されてもよい。
本明細書で説明された感度指数の実施例により様々な利点が得られる。1つの利点として、感度指数の実施例は、レコードごとにエントリが1つではなく、キーごとにエントリが1つとなるため、多数のレコードでキーが共用される場合にもコンパクトな構造が得られる。更なる利点として、通常、感度指数のサイズは、最小入力のサイズに比例することが挙げられる。さらなる利点として、入力そのものが指数構造を含むか否かに関わらず、感度指数の実施例が、複雑なサブクエリの結果を含む任意の順序の入力から構築可能であることが挙げられる。さらに、感度指数の実施例のさらなる利点として、結合が演算される際に最小限のオーバーヘッドで構築できることと、入力された関係が更新される際にも少ないオーバーヘッドでメンテナンス可能であることが挙げられる。感度指数の実施例のさらなる利点として、共通属性の多方向マージ結合に直接適用可能であり、一連の組単位結合として拡張不要であることが挙げられる。
感度指数の実施例はその他技術と連動して使用されてもよい。例えば、複雑な表現のサブクエリに対応するクエリを追加的にメンテナンスすることで、当該表現のメンテナンスに補助的に使用されてもよい。
本明細書で説明されたメンテナンス技術は以下のように様々な用途例に利用可能であり、ここに挙げる実施例に限定されるものではない。初期実体化中または初期実体化後にマテリアライズドビューを最新の状態に保つ。トランザクションが長期動作中のデータベース管理システムにおいて並列性を向上する。さらに、再帰的クエリ処理に用いて、以前のイテレーションで観察されたプレディケートに対する変更に基づき、プレディケートに新たなデータを導出する。
当業者には明らかなように、本発明の態様は、システム、方法、またはコンピュータプログラムプロダクトとして実施可能である。したがって、本発明の態様は、全体としてハードウェアの形態として、全体としてソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)の形態として、またはソフトウェアおよびハードウェアの組み合わせの形態として実施可能であり、本明細書においてこれらは全て一般的に「回路」、「モジュール」、または「システム」と呼ばれる。さらに、本発明の態様は、コンピュータ読取可能プログラムコードを組み込んだ1以上のコンピュータ読取可能媒体に搭載されたコンピュータプログラムプロダクトの形態を取ってもよい。
1以上のコンピュータ読取可能媒体を任意に組み合わせることができる。コンピュータ読取可能媒体は、コンピュータ読取可能信号媒体やコンピュータ読取可能記憶媒体であってもよい。コンピュータ読取可能記憶媒体は、例えば電子的、磁気的、光学的、電磁的、赤外線、または半導体システム、装置、またはデバイス、あるいはこれらのいかなる適切な組み合わせであってもよいが、これらに限定されない。コンピュータ読取可能記憶媒体の具体例としては、1以上のワイヤを有する電気的接続、ポータブルフロッピーディスク、ハードディスク、RAM、ROM、消去可能EPROMまたはフラッシュメモリ、光ファイバ、ポータブルCD−ROM、光学記憶装置、磁気記憶装置、あるいはこれらのいかなる適切な組み合わせであってもよいが、これらに限定されない。本明細書の文脈において、コンピュータ読取可能記憶媒体は、命令実行システム、装置、またはデバイスにより使用されるまたはこれらに連動するプログラムを含むまたは記憶する任意の有形の媒体であってもよい。
コンピュータ読取可能信号媒体は、コンピュータ読取可能プログラムコードが組み込まれた伝搬データ信号であってもよく、例えば、ベースバンドまたは搬送波の一部である。この伝搬信号は様々な形態を取ってもよく、例えば電磁的、光学的、またはこれらのいかなる適切な組み合わせであってもよいが、これらに限定されない。コンピュータ読取可能信号媒体は、コンピュータ読取可能記憶媒体ではない任意のコンピュータ読取媒体であり、命令実行システム、装置、またはデバイスにより使用されるまたはこれらに連動するプログラムをやり取りし、伝搬し、搬送することができる。
コンピュータ読取媒体に組み込まれたプログラムコードは、任意の適切な媒体を用いて送信されてよく、例えば無線、有線、光ファイバケーブル、RF等、またはこれらのいかなる適切な組み合わせであってもよいが、これらに限定されない。
本発明の態様の動作を実行するコンピュータプログラムコードは、1以上のプログラミング言語の任意の組み合わせにより記述されてもよく、例えばJava(登録商標)、Smalltalk、C++等のオブジェクト指向プログラミング言語、Cプログラミング言語等の従来の手続き型プログラミング言語が挙げられる。プログラムコードは、その全体がユーザのコンピュータ上で動作しても、部分的にユーザのコンピュータ上で動作してもよく、独立型ソフトウェアパッケージとして、部分的にユーザのコンピュータ上で動作し部分的にリモートコンピュータ上で動作し、またはその全体がリモートコンピュータまたはサーバ上で動作してもよい。後者の場合、リモートコンピュータは、ユーザのコンピュータに任意の種類のネットワークにより接続されてもよく、例えばローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)が挙げられる。あるいは、外部コンピュータに対して(例えば、インターネットサービスプロバイダによりインターネットを介して)接続が行われていてもよい。
以上、本発明の態様を、本発明の実施例に係る方法、装置(システム)、およびコンピュータプログラムプロダクトのフローチャートによる例示および/またはブロック図を参照して説明した。フローチャートによる例示および/またはブロック図の各ブロック、およびフローチャートによる例示および/またはブロック図のブロックの組み合わせは、コンピュータプログラムの命令により実行できることが理解できよう。これらのコンピュータプログラム命令は、汎用コンピュータのプロセッサ、専用コンピュータ、またはその他のプログラム可能データ処理装置に設けられてもよい。これにより、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートおよび/またはブロック図の1以上のブロックに規定された機能や動作を実行する手段を提供するようなマシンが実現される。
また、これらのコンピュータプログラム命令は、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスに特定の方法で機能するよう命令するコンピュータ読取可能媒体に保存されてもよい。これにより、コンピュータ読取可能媒体に保存された命令が、フローチャートおよび/またはブロック図の1以上のブロックに規定された機能や動作を実行する命令を含む製品が実現される。
さらに、これらのコンピュータプログラム命令は、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスに展開され、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスで実行される一連の動作ステップを実施してもよい。これにより、コンピュータまたはその他のプログラム可能装置で実行される命令が、フローチャートおよび/またはブロック図の1以上のブロックに規定された機能や動作を実行するための処理を提供するようなコンピュータ実行処理が実現される。
図示されたフローチャートおよびブロック図には、本発明の様々な実施例に係るシステム、方法、およびコンピュータプログラムプロダクトの構成、機能、実施可能な動作を示す。この意味において、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を示してもよい。なお、別の実施においては、ブロックに記載された機能は図示された順番から外れて実行されてもよい。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されてもよいし、または関連する機能によっては逆の順序で実行されてもよい。なお、ブロック図および/またはフローチャートによる例示の各ブロック、およびブロック図および/またはフローチャートによる例示のブロックの組み合わせは、特定の機能または動作を実行する専用ハードウェア系システムによって、または専用ハードウェアとコンピュータ命令との組み合わせによって実行可能である。
本明細書に記載の技術は、特定の実施例を説明する目的に限って使用され、本発明を限定する意図はない。本明細書において単数形を示す「a」、「an」、「the」は、別途明確に規定されない限り複数形をも含むことを意図している。さらに、本明細書において用語「comprises」および/または「comprising」は、記載された特徴、整数、ステップ、動作、要素、および/または構成要素が含まれ、1以上の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらの群が含まれるまたは追加されることを排除しない。
以下の請求項における全てのミーンズプラスファンクション要素およびステッププラスファンクション要素に対応する構造、素材、行為、および等価物には、具体的に請求項に記載されているその他の構成要素との組み合わせにおいて、機能を実施する構造、素材、行為が含まれると意図される。本発明の説明は、例示および説明のために提供されるものであり、開示されている形式の本発明を打ち消すまたは限定する意図はない。本発明の範囲および要旨から外れることなく、様々な変形例および変更が可能であることは、当業者であれば明らかであろう。実施例は、本発明の原理を最もよく説明するために選択され記載されたもので、意図された具体的な使用に適する様々な変形例と共に様々な実施例に対し本発明についての当業者の理解を促すためのものである。
本明細書に記載されたフロー図は、単に例示的なものであり、図およびそこに記載されたステップ(動作)には、本発明の要旨から外れることなく様々な変更が可能である。例えば、ステップは異なる順序で実行されてもよく、ステップは追加、削除、または変更されてもよい。これらの変更は全て、請求項に記載された発明の一部を構成するとみなされる。
本発明の好適な実施例が説明されてきたが、当業者であれば、現在および未来において、後続の請求項の範囲内に収まる様々な改良および増強し得る。これらの請求項は、最初に記載された本発明に対する適切な保護を維持するものとみなされるべきである。

Claims (21)

  1. データベース内の少なくとも2つの関係におけるデータ項目に基づきクエリを実行し、 前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程と、
    前記クエリ結果と、前記制御情報とを記録する工程と、
    前記実行する工程の後に前記データ項目の内の少なくとも1つが更新されたことを示す通知を受信する工程と、
    前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する工程と、
    を有するアクティブクエリのメンテナンス方法。
  2. 前記制御情報を、前記修正する工程に基づき更新する工程と、
    前記修正されたクエリ結果と、前記更新された制御情報とを記録する工程と、
    をさらに有する請求項1に記載の方法。
  3. 前記修正されたクエリ結果と、前記更新された制御情報の記録後に前記データ項目の内少なくとも1つが更新されたことを示す第2の通知を受信する工程と、
    前記第2の通知内のデータ項目を反映するよう、前記更新された制御情報に応じて前記修正されたクエリ結果を修正する工程と、
    をさらに有する請求項2に記載の方法。
  4. 前記実行する工程は、マージ結合動作を実行することを含み、
    前記制御情報は、マージ結合トレース情報に基づき生成される、
    請求項1に記載の方法。
  5. 前記制御情報は、選択されたデータ項目の更新が前記クエリ結果に及ぼし得る影響を示す感度指数を含む請求項1に記載の方法。
  6. 前記選択されたデータ項目は、前記データベースにおける別データ項目にアクセスするために使用されるキーである請求項5に記載の方法。
  7. 前記クエリに対応付けられた前記制御情報は、前記実行する工程の最中に収集されたトレース情報に基づいている請求項1に記載の方法。
  8. 前記記録する工程は、前記クエリ結果のビューを実体化することを含む請求項1に記載の方法。
  9. 前記クエリは、トランザクションがコミットする時間における前記データベースの状態に矛盾しないことが求められる前記トランザクションを構成する複数のクエリの1つである、請求項1に記載の方法。
  10. 前記トランザクションは別トランザクションと並行して実行され、
    前記実行する工程後に更新された前記データ項目の内少なくとも1つは、前記別のトランザクションが前記データベースにコミットすることに応じて前記別のトランザクションにより更新された、請求項9に記載の方法。
  11. コンピュータ読取可能コンピュータ命令を有するメモリと、
    前記コンピュータ読取可能命令を実行するプロセッサと、
    を有するアクティブクエリのメンテナンスシステムであって、前記プロセッサは、
    データベース内の少なくとも2つの関係におけるデータ項目に基づきクエリを実行し、 前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程と、
    前記クエリ結果と、前記制御情報とを記録する工程と、
    前記実行する工程の後に前記データ項目の内の少なくとも1つが更新されたことを示す通知を受信する工程と、
    前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する工程と、
    を有する方法を実行するアクティブクエリのメンテナンスシステム。
  12. 前記方法は、
    前記制御情報を、前記修正する工程に基づき更新する工程と、
    前記修正されたクエリ結果と、前記更新された制御情報とを記録する工程と、
    をさらに有する請求項11に記載のシステム。
  13. 前記方法は、
    前記修正されたクエリ結果と、前記更新された制御情報の記録後に前記データ項目の内少なくとも1つが更新されたことを示す第2の通知を受信する工程と、
    前記第2の通知内のデータ項目を反映するよう、前記更新された制御情報に応じて前記修正されたクエリ結果を修正する工程と、
    をさらに有する請求項12に記載のシステム。
  14. 前記実行する工程は、マージ結合動作を実行することを含み、
    前記制御情報は、マージ結合トレース情報に基づき生成される、
    請求項12に記載のシステム。
  15. 前記制御情報は、選択されたデータ項目の更新が前記クエリ結果に及ぼし得る影響を示す感度指数を含む請求項11に記載のシステム。
  16. 前記選択されたデータ項目は、前記データベースにおける別データ項目にアクセスするために使用されるキーである請求項15に記載のシステム。
  17. 前記クエリに対応付けられた前記制御情報は、前記実行する工程の最中に収集されたトレース情報に基づいている請求項11に記載のシステム。
  18. 前記記録する工程は、前記クエリ結果のビューを実体化することを含む請求項11に記載のシステム。
  19. 前記クエリは、トランザクションがコミットする時間における前記データベースの状態に矛盾しないことが求められる前記トランザクションを構成する複数のクエリの1つである、請求項11に記載のシステム。
  20. 前記トランザクションは別トランザクションと並行して実行され、
    前記実行する工程後に更新された前記データ項目の内少なくとも1つは、前記別のトランザクションが前記データベースにコミットすることに応じて前記別のトランザクションにより更新された、請求項19に記載のシステム。
  21. アクティブクエリをメンテナンスするコンピュータプログラムプロダクトであって、前記コンピュータプログラムプロダクトは、コンピュータ読取可能プログラムコードが組み込まれたコンピュータ読取可能記憶媒体を有し、コンピュータプロセッサによって実行されると、前記コンピュータプロセッサに方法を実行させ、前記方法は、
    データベース内の少なくとも2つの関係におけるデータ項目に基づきクエリを実行し、 前記クエリに対応付けられたクエリ結果と制御情報とを出力する工程と、
    前記クエリ結果と、前記制御情報とを記録する工程と、
    前記実行する工程の後に前記データ項目の内の少なくとも1つが更新されたことを示す通知を受信する工程と、
    前記実行する工程の後に更新された前記データ項目を反映するよう、前記制御情報に応じて前記クエリ結果を修正する工程と、
    を有するコンピュータプログラムプロダクト。
JP2015549688A 2012-12-20 2013-12-19 アクティブデータベースクエリのメンテナンス Active JP6198845B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/722,067 US9424304B2 (en) 2012-12-20 2012-12-20 Maintenance of active database queries
US13/722,067 2012-12-20
PCT/US2013/076483 WO2014100383A1 (en) 2012-12-20 2013-12-19 Maintenance of active database queries

Publications (3)

Publication Number Publication Date
JP2016509281A true JP2016509281A (ja) 2016-03-24
JP2016509281A5 JP2016509281A5 (ja) 2017-02-02
JP6198845B2 JP6198845B2 (ja) 2017-09-20

Family

ID=50975892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015549688A Active JP6198845B2 (ja) 2012-12-20 2013-12-19 アクティブデータベースクエリのメンテナンス

Country Status (8)

Country Link
US (2) US9424304B2 (ja)
EP (1) EP2936351B1 (ja)
JP (1) JP6198845B2 (ja)
KR (1) KR20150098660A (ja)
CN (1) CN104854587B (ja)
CA (1) CA2895231C (ja)
IL (1) IL239173B (ja)
WO (1) WO2014100383A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019105934A (ja) * 2017-12-11 2019-06-27 Kddi株式会社 問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016183565A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC Remote data object publishing/subscribing system having a multicast key-value protocol
CN106021326A (zh) * 2016-05-03 2016-10-12 无锡雅座在线科技发展有限公司 基于流计算的事件处理方法和装置
US10866943B1 (en) 2017-08-24 2020-12-15 Deephaven Data Labs Llc Keyed row selection
US11151111B2 (en) * 2017-11-30 2021-10-19 Futurewei Technologies, Inc. Redistributing table data in a database cluster
US20190294713A1 (en) * 2018-03-22 2019-09-26 Accenture Global Solutions Limited Database impact analysis
US10789242B2 (en) * 2018-04-25 2020-09-29 Microsoft Technology Licensing, Llc Managing materialized views in eventually consistent distributed data stores
GB2587155B (en) 2018-04-30 2022-05-04 Kimberly Clark Co Air dryer utilizing low temperature, high velocity air
US11126622B1 (en) * 2021-03-02 2021-09-21 Chaossearch, Inc. Methods and apparatus for efficiently scaling result caching
US11494379B2 (en) * 2021-03-18 2022-11-08 Snowflake Inc. Pre-filter deduplication for multidimensional two-sided interval joins

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325525A (en) * 1991-04-04 1994-06-28 Hewlett-Packard Company Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time
US5276872A (en) 1991-06-25 1994-01-04 Digital Equipment Corporation Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions
US5280612A (en) 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
JP3441807B2 (ja) 1994-09-19 2003-09-02 株式会社日立製作所 B木インデクスの管理方法およびシステム
US6889358B1 (en) 1998-01-08 2005-05-03 Lucent Technologies Inc. Concurrency control in materialized views of a database
US6272502B1 (en) * 1998-05-11 2001-08-07 Lucent Technologies Inc. Refreshing materialized views of a database to maintain consistency with underlying data
US6205451B1 (en) * 1998-05-22 2001-03-20 Oracle Corporation Method and apparatus for incremental refresh of summary tables in a database system
US6134543A (en) 1998-07-02 2000-10-17 Oracle Corporation Incremental maintenance of materialized views containing one-to-one lossless joins
US6353835B1 (en) 1998-08-03 2002-03-05 Lucent Technologies Inc. Technique for effectively maintaining materialized views in a data warehouse
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US6360219B1 (en) 1998-12-16 2002-03-19 Gemstone Systems, Inc. Object queues with concurrent updating
US6353828B1 (en) * 1999-05-14 2002-03-05 Oracle Corp. Concurrency control for transactions that update base tables of a materialized view using different types of locks
US6484159B1 (en) 1999-05-20 2002-11-19 At&T Corp. Method and system for incremental database maintenance
US6983291B1 (en) 1999-05-21 2006-01-03 International Business Machines Corporation Incremental maintenance of aggregated and join summary tables
US6763352B2 (en) * 1999-05-21 2004-07-13 International Business Machines Corporation Incremental maintenance of summary tables with complex grouping expressions
US6484172B1 (en) 1999-12-24 2002-11-19 Electronics And Telecommunications Research Institute Concurrency control method for high-dimensional index structure using latch and lock
US6356890B1 (en) * 2000-04-20 2002-03-12 Microsoft Corporation Merging materialized view pairs for database workload materialized view selection
US6356891B1 (en) 2000-04-20 2002-03-12 Microsoft Corporation Identifying indexes on materialized views for database workload
US6366903B1 (en) 2000-04-20 2002-04-02 Microsoft Corporation Index and materialized view selection for a given workload
US6510422B1 (en) * 2000-09-27 2003-01-21 Microsoft Corporation Cost based materialized view selection for query optimization
US6868414B2 (en) 2001-01-03 2005-03-15 International Business Machines Corporation Technique for serializing data structure updates and retrievals without requiring searchers to use locks
US7293028B2 (en) 2001-06-08 2007-11-06 Sap Ag Cache-conscious concurrency control scheme for database systems
CA2365692A1 (en) 2001-06-21 2002-12-21 International Business Machines Corporation Method for recommending indexes and materialized views for a database workload
EP1417595A1 (en) 2001-06-28 2004-05-12 MySQL AB A method for concurrency control for a secundary index
US6708179B1 (en) 2001-09-28 2004-03-16 Oracle International Corporation Incremental refresh of materialized views for many-to-many relationships
US20030101183A1 (en) 2001-11-26 2003-05-29 Navin Kabra Information retrieval index allowing updating while in use
US6882993B1 (en) * 2002-01-28 2005-04-19 Oracle International Corporation Incremental refresh of materialized views with joins and aggregates after arbitrary DML operations to multiple tables
US7426559B2 (en) * 2002-05-09 2008-09-16 International Business Machines Corporation Method for sequential coordination of external database application events with asynchronous internal database events
US7089253B2 (en) 2002-09-13 2006-08-08 Netezza Corporation Computer method and system for concurrency control using dynamic serialization ordering
CA2414983A1 (en) 2002-12-23 2004-06-23 Ibm Canada Limited-Ibm Canada Limitee Independent deferred incremental refresh of materialized views
EP1597666A4 (en) 2003-02-10 2009-09-09 Netezza Corp MATERIALIZED VIEW SYSTEM AND ASSOCIATED METHOD
US7523462B1 (en) 2003-05-27 2009-04-21 International Business Machines Corporation Method for providing a real time view of heterogeneous enterprise data
US20050091180A1 (en) * 2003-10-22 2005-04-28 Nitzan Peleg Method and apparatus for refreshing materialized views
US8359325B1 (en) * 2004-02-25 2013-01-22 Teradata Us, Inc. Determining materialized view coverage for join transactions
US7739262B2 (en) * 2004-03-19 2010-06-15 Microsoft Corporation Enforcing currency and consistency constraints in database query processing
US7890497B2 (en) * 2004-04-14 2011-02-15 Oracle International Corporation Using estimated cost to schedule an order for refreshing a set of materialized views (MVS)
US7769770B2 (en) 2004-07-14 2010-08-03 Microsoft Corporation Secondary index and indexed view maintenance for updates to complex types
US7720845B2 (en) * 2004-08-13 2010-05-18 Yahoo! Inc. Systems and methods for updating query results based on query deltas
US7490084B2 (en) 2004-09-24 2009-02-10 Oracle Corporation Deferred incorporation of updates for spatial indexes
US7930297B2 (en) 2004-12-03 2011-04-19 Oracle International Corporation Materialized view maintenance and change tracking
US7792839B2 (en) 2005-01-13 2010-09-07 International Business Machines Corporation Incremental indexing of a database table in a database
US8126870B2 (en) * 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US7895186B2 (en) * 2005-03-31 2011-02-22 Oracle International Corp. Method and mechanism of materialized view mix incremental refresh
US7677441B2 (en) 2005-04-01 2010-03-16 Microsoft Corporation Relaxed currency constraints
US20060294156A1 (en) 2005-06-24 2006-12-28 Nec Laboratories, Inc Incremental maintenance of path-expression views
US8468152B2 (en) * 2005-08-04 2013-06-18 International Business Machines Corporation Autonomic refresh of a materialized query table in a computer database
US7680767B2 (en) * 2006-03-23 2010-03-16 Microsoft Corporation Mapping architecture with incremental view maintenance
US7647298B2 (en) * 2006-03-23 2010-01-12 Microsoft Corporation Generation of query and update views for object relational mapping
US7577658B2 (en) 2006-10-06 2009-08-18 Microsoft Corporation Hierarchical locking in B-tree indexes
US8260761B2 (en) * 2006-10-20 2012-09-04 Ianywhere Solutions, Inc. Detecting performance degrading design and algorithm issues in database applications
US7805420B2 (en) 2006-11-20 2010-09-28 Microsoft Corporation Versioning and concurrency control for multiple client access of data
US7797356B2 (en) * 2007-02-02 2010-09-14 Microsoft Corporation Dynamically detecting exceptions based on data changes
US9483525B2 (en) 2007-04-30 2016-11-01 Microsoft Technology Licensing, Llc Reducing update conflicts when maintaining views
US7853604B2 (en) 2007-07-12 2010-12-14 Oracle International Corporation Inline view query rewrite using a materialized view
US20090083238A1 (en) * 2007-09-21 2009-03-26 Microsoft Corporation Stop-and-restart style execution for long running decision support queries
US20090210429A1 (en) 2008-02-19 2009-08-20 Yahoo! Inc. System and method for asynchronous update of indexes in a distributed database
US20090213269A1 (en) 2008-02-21 2009-08-27 David Dozoretz Content Slider
US8065269B2 (en) 2008-12-19 2011-11-22 Ianywhere Solutions, Inc. Immediate maintenance of materialized views
US9177023B2 (en) * 2009-02-02 2015-11-03 Hewlett-Packard Development Company, L.P. Evaluation of database query plan robustness landmarks using operator maps or query maps
US20110137875A1 (en) * 2009-12-09 2011-06-09 Oracle International Corporation Incremental materialized view refresh with enhanced dml compression
US8306959B2 (en) 2010-08-06 2012-11-06 Ianywhere Solutions, Inc. Incremental maintenance of immediate materialized views with outerjoins
US8775426B2 (en) 2010-09-14 2014-07-08 Microsoft Corporation Interface to navigate and search a concept hierarchy
US20130166523A1 (en) * 2011-12-21 2013-06-27 Sybase, Inc. Parallel Execution In A Transaction Using Independent Queries

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
的野 晃整: "範囲マージ結合:読み飛し可能なB+木間結合アルゴリズム", 第2回データ工学と情報マネジメントに関するフォーラム−DEIM 2010−論文集, JPN6017010783, 25 May 2010 (2010-05-25), JP, pages 1 - 8, ISSN: 0003604832 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019105934A (ja) * 2017-12-11 2019-06-27 Kddi株式会社 問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム

Also Published As

Publication number Publication date
EP2936351B1 (en) 2019-05-15
CN104854587B (zh) 2018-11-02
US20140181081A1 (en) 2014-06-26
EP2936351A4 (en) 2016-08-17
IL239173B (en) 2018-02-28
JP6198845B2 (ja) 2017-09-20
CN104854587A (zh) 2015-08-19
US10430409B2 (en) 2019-10-01
US9424304B2 (en) 2016-08-23
EP2936351A1 (en) 2015-10-28
CA2895231A1 (en) 2014-06-26
IL239173A0 (en) 2015-07-30
KR20150098660A (ko) 2015-08-28
CA2895231C (en) 2021-01-26
WO2014100383A1 (en) 2014-06-26
US20160259823A1 (en) 2016-09-08

Similar Documents

Publication Publication Date Title
JP6198845B2 (ja) アクティブデータベースクエリのメンテナンス
CA2887670C (en) Profiling data with location information
US8666969B2 (en) Query rewrite for pre-joined tables
EP2746970B1 (en) Timeline index for managing temporal data
US20110137890A1 (en) Join Order for a Database Query
US9892117B2 (en) Optimizing relational database queries with multi-table predicate expressions
US20120072412A1 (en) Evaluating execution plan changes after a wakeup threshold time
US8090700B2 (en) Method for updating databases
US9569485B2 (en) Optimizing database query
US11803545B1 (en) Runtime statistics feedback for query plan cost estimation
US11269954B2 (en) Data searching method of database, apparatus and computer program for the same
WO2023086322A1 (en) Late materialization of queried data in database cache
CN116894022B (zh) 利用结构化审计日志来提高数据库审计的准确性和效率
KR20060067812A (ko) 복합 데이터 액세스
US9177008B1 (en) Positioned updates in a distributed shared-nothing data store
KR20150099456A (ko) 계층적으로 참조된 데이터 내의 컴포넌트를 필터링하는 방법 및 시스템
EP4697194A1 (en) Query advisor engine
Hamdoon et al. Pragmatic approach to query optimization
HK40044690A (en) Profiling data with location information
Antognini Execution Plans

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161213

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20161213

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170629

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170822

R150 Certificate of patent or registration of utility model

Ref document number: 6198845

Country of ref document: JP

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

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