JP5226445B2 - データベースに対する問合せを処理する装置、処理方法、プログラムおよび記録媒体 - Google Patents

データベースに対する問合せを処理する装置、処理方法、プログラムおよび記録媒体 Download PDF

Info

Publication number
JP5226445B2
JP5226445B2 JP2008247554A JP2008247554A JP5226445B2 JP 5226445 B2 JP5226445 B2 JP 5226445B2 JP 2008247554 A JP2008247554 A JP 2008247554A JP 2008247554 A JP2008247554 A JP 2008247554A JP 5226445 B2 JP5226445 B2 JP 5226445B2
Authority
JP
Japan
Prior art keywords
conditional expression
query
update
update request
unit
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
JP2008247554A
Other languages
English (en)
Other versions
JP2010079627A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2008247554A priority Critical patent/JP5226445B2/ja
Publication of JP2010079627A publication Critical patent/JP2010079627A/ja
Application granted granted Critical
Publication of JP5226445B2 publication Critical patent/JP5226445B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベースに対する問合せを、データベースのバッチ更新を行うことなく処理し、問合せ結果を返すことができる装置、その処理方法、その方法をコンピュータに実行させるためのプログラムおよびそのプログラムが記録された記録媒体に関する。
データベースは、複数のユーザのためにデータを要求に応じて受け入れ、保管し、要求に応じて提供するための所定の構造をもつデータの集合である。データベースには、複数の関係(リレーション)を基本的なデータ型とし、格納されたデータを取得するための問合せが、等号(=)や不等号(<、>)等の関係演算子や、論理積(∧)や論理和(∨)や否定(¬)等の論理演算子を用いて行われるリレーショナル・データベースがある。
リレーショナル・データベースでは、あらゆるデータがn項の関係で表現されることから、その関係を視覚的表現としてテーブルで表現することができる。その一例を、図1(a)に示す。図1(a)では、各従業員に対し、従業員番号(EMPNO)が割り当てられ、各従業員の名前(NAME)と、所属する部門(WORKDEPT)と、性別(SEX)と、年齢(AGE)と、給与(SALARY)とが関連付けられている。また、このテーブルには、テーブル名として「EMPLOYEE」が付けられている。
このデータベースに対し、データの追加、削除、内容の変更を行うと、データベースの更新が必要となる。しかしながら、データ毎にデータベースを更新していたのでは、非効率的である。
データベースにおける更新の性能向上には、更新のバッチ処理(バッチ更新)が効果的である。ここで、バッチ更新とは、個々の更新要求を逐次データベースへ送って処理するかわりに、アプリケーション・サーバ側に存在するテーブル毎に設けられたキューに更新要求を蓄積しておき、ある程度蓄積されたところでまとめてデータベースへ送る処理(フラッシュ処理)技術である。アプリケーション・サーバは、アプリケーションを実行するネットワーク上のサーバ・コンピュータであってもよいし、アプリケーションの実行を管理補助するミドルウェアとしてコンピュータに実装されていてもよい。このように、更新要求をまとめて処理することにより、通信やI/Oにかかるコストが減り、一更新あたりの実行時間を大幅に短縮することができる。
しかしながら、このバッチ更新をシステムに適用すると、更新がデータベースに反映されるのはフラッシュ処理後となるため、アプリケーション・サーバ側に未処理の更新要求が蓄積された状態でデータベースに問合せを行うと、それらの更新が反映される前の古い結果が返されるという問題が生じる。
それを回避し、正しい結果を得るためには、データベースへ問合せを行うたびに、その問合せ前にフラッシュ処理を行い、データベースを最新状態にしてから問合せを行わなければならない。このため、従来のシステムでは、一度にフラッシュ処理する更新要求の数(バッチのサイズ)を大きく増やすことはできず、ある程度蓄積されたところでフラッシュ処理を行っていた。バッチ更新の効果は、バッチのサイズにほぼ比例することから、バッチのサイズを大きく増やすことは重要な課題となっている。
ここで、データベースに対する問合せを、データベースに依存せずに行う技術が提案されている。その1つに、マテリアライズド・ビュー(Materialized View)を用いるものがある(非特許文献1参照)。マテリアライズド・ビューは、複雑な検索処理のパフォーマンス向上のために用いられるビューで、インデックスではなく、実データを保持するビューである。ビューとは、定義したselect文の処理結果集合を実テーブルのように扱うための機能をいい、selectとは、データの取得(照会ともいう。)をするためのSQL命令である。SQLは、リレーショナル・データベースの操作を行なうための言語の一つである。
このマテリアライズド・ビューの一例を、図1(b)に示す。図1(b)に示される式1では、select文が、テーブル名「EMPLOYEE」のテーブルから、条件式「SALARY≧40000で、かつSEX=F」を満たすカラム名「EMPNO」、「NAME」のデータを取得する命令とされていることから、これらを取得した結果がマテリアライズド・ビューとして保持される。
このマテリアライズド・ビューは、実データを保持するため、データベースを管理するデータベース管理システムへの問合せが不要で、1組のデータ・セット(レコード)を一意に識別するための情報として利用される主キーやインデックスを使用した検索や抽出が可能である。
マテリアライズド・ビューを拡張したものに、セルフメンテナブル・ビュー(Self-Maintainable View)というものがある(非特許文献2参照)。データベースでの問合せの結果に対し、アプリケーション・サーバ側で更新要求を適用するには、適用する更新要求の全てについて結果が、セルフメンテナブル(自己保持可能)、すなわち付加的にデータをもつように問合せを変形する必要がある。セルフメンテナブル・ビューは、マテリアライズド・ビューを定義する問合せを、アプリケーションが要求しうるすべての更新についてセルフメンテナブルになるように変形したものである。具体的には、更新の条件には含まれるが、問合せの結果には含まれない桁や、更新が変更する桁に対する条件により対象外となった行も結果に含めるように変形するものである(非特許文献3参照)。
非特許文献3では、対照となるテーブルに対してアプリケーションが要求するSQL文が全て分かっているという前提で、問合せ結果をセルフメンテナブルにするために必要な付加情報(上記でいう桁や行)を静的に算出している。
このセルフメンテナブル・ビューの一例を、図1(c)に示す。図1(c)の式2では、カラム名「WORKDEPT」がまだ不明である部門に所属する従業員に対し、「SALARY」が変更されることが予定されていることを示している。このため、すべての女性従業員は、将来的に給与が変更される可能性がある。
そこで、図1(b)の式1で示したSELECT文を式1’のように変形し、変形したSELECT文を用いて問合せした結果をセルフメンテナブル・ビューとして保持する。
Ashish Gupta, Inderpal Singh Mumick, "Maintenance of MaterializedViews: Problems, Techniques, and Applications", IEEEData Engineering Bulletin, Vol. 18, No. 2, p. 3-18, 1995 Millist W. Vincent, Mukesh Mohania, Yahiko Kambayashi, "Aself-Maintainable View Maintenance Technique for Data Warehouses", 8thInternational Conference on Management of Data, p. 7-22, 1997 Dallan Quass, Ashish Gupta, Inderpal Singh Mumick, Jennifer Widom, "MakingViews Self-Maintainable for Data Warehousing", 4thInternational Conference on Parallel and Distributed Information Systems (PDIS'96), p. 158-169, 1996
従来のセルフメンテナブル・ビューは、実際に更新されないデータも持つことから、ビューを保持するための大量のメモリがアプリケーション・サーバ側に必要になるという問題があった。
また、問合せ結果がセルフメンテナブルになるように問合せを変形すると、その問合せ結果は、図1(c)に示すように桁、行ともに増える方向にしか変化せず、ただでさえ大きなビューをさらに拡大する結果となり、メモリを圧迫してしまうという問題があった。
そこで、データベースでの問合せの平均負荷を下げ、メモリ使用量を大幅に減少させることができ、一度にフラッシュする更新要求の数を増加させてバッチ更新の効果を向上させることができるシステムおよび方法の提供が望まれていた。
本発明は、問合せが要求された時点において、アプリケーションが要求しうるすべての更新についてではなく、アプリケーション・サーバ側に蓄積されている更新要求の全てについて結果がセルフメンテナブルになるように問合せを変形することにより、アプリケーション・サーバ側に出来るだけ多くの更新要求を蓄積することができ、また、ビューを保持する必要がなくなるため、メモリの使用量を大幅に減少させることができることを見出すことによりなされたものである。アプリケーション・サーバ側で更新要求を蓄積することができることは、一度にフラッシュする更新要求の数を増加させ、バッチ更新の効果の向上をもたらすことができる。
すなわち、上記課題は、本発明のデータベースに対する問合せを処理する装置およびその処理方法を提供することにより解決することができる。
本発明の処理装置は、データベースの更新要求を蓄積する蓄積部と、蓄積された更新要求をバッチ処理してデータベースを更新する更新部と、データベースへ問合せ、問合せ結果を出力する処理部と、問合せの受信に応答して、蓄積部から蓄積された更新要求を取得し、問合せの内容に基づき問合せ結果に影響を与える更新要求を抽出する抽出部と、更新部が蓄積部に蓄積された更新要求によりデータベースの更新を行うことなく、蓄積された更新要求を反映した問合せ結果が得られるように、抽出部により抽出された更新要求を用いて問合せの内容を変更し、内容を変更した問合せを処理部へ入力する内容変更部とを備える。
更新要求は、更新文を含み、問合せは、問合せ文を含む。抽出部は、問合せ文を取り出し、その問合せ文に影響を与える更新要求を、更新文に基づき抽出する。
更新文は、更新データと条件式とを含み、内容変更部は、当該条件式を、再帰的アルゴリズムを適用して再帰的な第2条件式へと変換する。そして、内容変更部は、第2条件式に適合するデータの集合から、後続の更新要求により更新されるデータの集合を取り除くように、当該第2条件式と後続の更新要求につき変換された第2条件式とを演算子により結合して第3条件式を生成する。具体的には、内容変更部は、当該第2条件式と後続の更新要求につき変換された第2条件式の否定とを論理積により結合して第3条件式を生成する。
内容変更部は、問合せ文に基づき、各更新要求につき生成された第3条件式を論理和で結合するか、当該第3条件式の否定を論理積で結合するかを判定し、問合せ文に含まれる条件式と抽出された更新要求すべての第3条件式または第3条件式の否定とを論理和または論理積により結合して、変形した条件式を含む問合せ文を生成する。
問合せ文に含まれる条件式は、複数の部分条件式から構成され、抽出部は、各部分条件式に影響を与える更新要求を抽出し、内容変更部は、各部分条件式につき、変形した部分条件式を生成し、変形した各部分条件式を演算子により結合して、変形した条件式を含む問合せ文を生成する。
本発明の処理装置は、問合せおよび更新要求を出力する要求出力部と、要求出力部が出力した要求が問合せか、更新要求かを判別する判別部とを備える。なお、処理部は、問合せ結果を、問合せを出力した要求出力部へ返す。
また、処理装置は、過去の問合せ結果のうち、最近の問合せに対する結果と頻繁に行われる問合せに対する結果とを保持する結果保持部をさらに備える。これにより、最近の問合せや頻繁に行われる問合せに対しては、結果保持部がその結果を保持していることから、応答時間を向上させることができる。
本発明では、同じ問合せであっても、その間に更新要求が出力されると、異なる問合せに変形される。これでは、メモリの使用効率の観点から望ましくない。これを解決するため、要求され得る更新要求のいくつかが既知である場合、内容変更部は、蓄積部に蓄積された問合せ結果に影響を与える更新要求に加えて、その既知の更新要求も用いて問合せの内容を変更する。
本発明では、上記処理装置に加え、その処理装置により実現される処理方法、その処理方法をコンピュータに実行させるためのプログラムおよびそのプログラムが記録された記録媒体を提供することが可能である。
本発明の処理装置および処理方法を提供することにより、アプリケーション・サーバ側に出来るだけ多くの更新要求を蓄積して、データベースの更新頻度を下げることができ、その結果、データベースでの問合せの平均負荷を下げることができる。また、本発明では、ビューを保持しなくてもよいため、メモリの使用量を大幅に減少させることができる。さらに、本発明では、一度にフラッシュする更新要求の数を増加することができるため、バッチ更新の効果を向上させることができる。
以下、本発明を図面に示した具体的な実施の形態に沿って説明するが、本発明は、後述する実施の形態に限定されるものではない。
図2は、アプリケーション・サーバとデータベースとから構成されるシステム構成を示した図である。図2に示すシステムは、本発明のデータベースに対する問合せを処理する装置の一実施形態であるアプリケーション・サーバ10が直接、データベース20に接続され、アプリケーション・サーバ10は、「外部」で表されるネットワークあるいはクライアント装置等と通信可能に接続されている。ここでは、アプリケーション・サーバ10が、サーバ・コンピュータとして例示されているが、アプリケーションの実行を管理補助するミドルウェアとして構成し、サーバ・コンピュータやユーザが使用するPC等に実装することもできる。
アプリケーション・サーバ10は、データベース20への問合せおよび更新要求を処理し、その処理結果を出力する。ここでは、アプリケーション・サーバ10は、外部からの要求を受け取り、アプリケーションにより問合せあるいは更新要求を生成して出力し、これらを実行する機構において、これらを実行する。更新要求の場合は、キューに入れ、ある数の更新要求が蓄積された段階で更新をバッチ処理にて実行する。問合せの場合は、問合せに含まれる問合せ文を変形し、その変形した問合せ文を用いて、蓄積されている更新要求を反映した結果を得る。
データベース20は、項目毎にデータを集めて管理し、アプリケーション・サーバ10からの問合せに応じて、データの検索、抽出、追加、削除等を可能にしている。
データベース20は、オペレーティング・システム(OS)が提供するファイル・システム上に直接構築されたものでも、データベース管理システム(DBMS)を用いて構築されたものであってもよい。データベース20としては、複数の関係(リレーション)を基本的なデータ型とし、格納されたデータを取得するための問合せが、等号(=)や不等号(<、>)等の関係演算子や、論理積(∧)や論理和(∨)や否定(¬)等の論理演算子を用いて行われるリレーショナル・データベースを用いることができる。
図3は、アプリケーション・サーバ10のハードウェア構成の一例を示した図である。ハードウェア構成は、これに限られるものではないが、メモリ11と、少なくとも1つのプロセッサ12と、メモリ制御部13と、チャネル・サブシステム14と、少なくとも1つの制御装置15と、少なくとも1つの入出力デバイス16とを備える。
メモリ11は、入出力デバイス16から入力されたデータやプログラムを格納し、プロセッサ12およびチャネル・サブシステム14からのアドレス指定に応答して、そのアドレスに格納しているデータ等をプロセッサ12およびチャネル・サブシステム14へ送る。
プロセッサ12は、装置全体を制御し、少なくとも1つのOSを実行する。OSは、装置におけるプログラムの実行や入出力処理を制御するものである。メモリ制御部13は、バスを経由してメモリ11、プロセッサ12、チャネル・サブシステム14のそれぞれに接続される。このメモリ制御部13は、プロセッサ12やチャネル・サブシステム14が出したリクエストを一時的にキューに格納し、所定のタイミングでメモリ11へ送ることができる。
チャネル・サブシステム14は、各制御装置15へ接続され、プロセッサ12の処理負荷を軽減するために、入出力デバイス16とメモリ11との間のデータ転送を制御する。これにより、プロセッサ12による演算処理と、入出力デバイス16による入出力処理とを並列に実行させることができ、処理効率を向上させることができる。
制御装置15は、入出力デバイス16のデータ転送のタイミング等を制御する。入出力デバイス16は、制御装置15、チャネル・サブシステム14、メモリ制御部13を経由し、メモリ11との間でデータ転送を行う。入出力デバイス16としては、HDD、ディスプレイ、キーボード、プリンタ、通信デバイス、他の記憶装置を挙げることができ、入出力デバイス16の1つには、データベース20が接続される。
アプリケーション・サーバ10によるデータベースへの問合せに対する処理を実現するために、プログラムが記録された記録媒体が提供され、その記録媒体が入出力デバイス16の1つに接続され、そのプログラムが、制御装置15、チャネル・サブシステム14、メモリ制御部13を経由して、メモリ11へ送られ、メモリ11に格納される。格納されたプログラムは、再度それらを経由して入出力デバイス16に接続されたHDDへインストールされ、適宜プロセッサ12により読み出され、実行される。
プログラムが格納される記録媒体としては、フレキシブル・ディスク、CD-ROM、DVD、SDカード、フラッシュメモリ等を挙げることができる。このプログラムは、上記のデータベース20への問合せおよび更新要求を処理し、その処理結果を出力する処理を実現する処理プログラムと、問合せおよび更新要求を生成して出力するアプリケーションとを含む。処理プログラムとアプリケーションは、同じHDDにインストールされ、適宜プロセッサ12が読み出し、実行することができる。
図4は、アプリケーション・サーバ10の機能毎に分けて示した機能ブロック図である。アプリケーション・サーバ10は、データベース20への問合せおよび更新要求を出力する要求出力部30と、要求出力部30から出力された要求が問合せであるか、更新要求であるかを判別する判別部31と、更新要求を受け付けた順に蓄積する蓄積部32と、所定数の更新要求が蓄積された段階で、蓄積された更新要求をバッチ処理してデータベース20を更新する更新部33と、データベース20へ問合せ、問合せ結果を出力する処理部34とを備える。処理部34は、問合せを出した要求出力部30に対し、問合せ結果を返す。
このアプリケーション・サーバ10は、さらに、問合せの受信に応答して、蓄積部32から蓄積された更新要求を取得し、問合せの内容に基づき、問合せ結果に影響を与える更新要求を抽出する抽出部35と、更新部33が蓄積部32に蓄積された更新要求によりデータベースの更新を行うことなく、蓄積された更新要求を反映した問合せ結果が得られるように、抽出部35により抽出された更新要求を用いて問合せの内容を変更し、処理部34へ入力する内容変更部36とを備える。
データベース20として用いられるリレーショナル・データベースでは、そのデータベースへの問合せ言語としてSQLが使用される。リレーショナル・データベースは、関係モデルに基づいて設計・開発されるデータベースで、データがテーブルに似た構造で管理され、複数のデータ群がリレーションと呼ばれる構造で相互に連結可能とされているものである。リレーションは、テーブルの行に相当するタプルと、テーブルの列に相当するカラムと、定義域およびキー等とによって構成される。アプリケーション・サーバ10は、このSQLを用いて、リレーションに対し、選択、結合、和、差といった演算子を用いて関係代数演算や、論理和(∨)、論理積(∧)、否定(¬)といった演算子を用いて関係論理演算を行うことにより結果を取り出すことができる。
SQLを使用する場合、問合せは、select文を用いて行われる。select文は、テーブル・データの検索や結果集合の取り出しを行うものである。このselect文は、select
C from T where W(Cはカラムの集合、TはCを含むテーブルの集合、Wは条件式)で表される。更新要求は、update文を用いて行われる。update文は、テーブルを更新するものである。このupdate文は、update
T set C=値 where Wj(Wjは条件式、iは自然数)で表される。
これらの文は、要求出力部30から出力され、判別部31により判別された後、update文であれば、蓄積部32へ順に入力され、データベース20のバッチ更新が行われるまで蓄積される。select文の場合には、抽出部35へ入力され、蓄積部32からupdate文を蓄積した履歴Hを取得する。蓄積部32に3つのupdate文が蓄積されていれば、それら3つのupdate文に関する情報を取得する。
抽出部35は、履歴Hからupdate文に含まれるWjを取り出し、内容変更部36は、このWjを用いてselect文に含まれるWを変形する。この変形は、再帰的アルゴリズムを適用して行うことができる。ここで、再帰的アルゴリズムとは、再帰的な構造をもつ、問題を解くための手順を定式化した形で表現したものをいい、再帰的とは、あるものが定義されている場合、その定義の中にさらにその定義されるべきものが簡略化されて含まれているものをいう。
1つの例として、n!=1・2・3・・・nで定義される階乗関数は、再帰的アルゴリズムを適用すると、0!=1で、かつ、n>0のとき、n!=(n−1)!・nと変形することができる。
ここでは、条件式Wと履歴Hの関数A(W,H)を再帰的アルゴリズムとして適用し、条件式Wを条件式Wsへ変形する。更新により追加されるカラムの集合、テーブルの集合をそれぞれ、Cs、Tsとすると、select文は、select
Cs from Ts where Wsへと変形される。内容変更部36は、このように変形したselect文を処理部34へ入力し、処理部34が、そのselect文を使用してデータベース20へ問合せを行い、問合せ結果を得る。
抽出部35および内容変更部36における処理を、図5および図6を参照して詳細に説明する。図5は、その処理の流れを示したフローチャート図であり、図6は、その処理の主要ステップにおける問合せ文およびそのときのデータの集合を例示した図である。
この処理は、ステップ500から開始し、ステップ510において抽出部35が、select文に含まれる条件式Wを抽出し、Wが複数の部分条件式Eiから構成される場合、各部分条件式Eiを抽出する。例えば、条件式Wが「C1=値
and C2=値」であれば、andで結合された「C1=値」、「C2=値」が部分条件式である。この場合、E1を「C1=値」、E2を「C2=値」とし、各部分条件式を抽出する。図6(a)に示す例では、select文中の条件式Wは、「x>0」の1つのみとされている。
次に、ステップ520において、抽出部35は、部分条件式Eiに影響を与えるupdate文を、履歴Hから抽出し、update文の実行順に並べたリストLを作成する。図6(a)では、履歴HからU1、U2、U3の3つのupdate文が抽出され、U1、U2、U3という実行順に並べられている。また、図6(a)では、U1、U2、U3に含まれる条件式W1、W2、W3を満たすデータの集合を、同じ記号のW1、W2、W3で表している。図6(a)を参照すると、W1を満たすデータの集合の中には、W2やW3を満たすデータの集合があり、また、それらの両方を満たすデータの集合もあることが示されている。
ステップ530で、リストLに含まれるupdate文があるか否かを判定する。これは、内容変更部36あるいは別途設けられる判定部により行うことができる。update文がない場合には、リストLは空であり、ステップ580へ進み、この部分条件式Eiの変形は行われない。その結果、この部分条件式については、処理済みとし、残りの部分条件式について同様のリストLの作成が行われる。
部分条件式Eiに影響を与えるupdate文か否かは、update文中のパラメータにより判断することができる。図6に示す例では、Eiに含まれるパラメータは、xであり、このxを含むupdate文を探すことにより判断する。U1、U2、U3はいずれも、xを含むことから、影響を与えるupdate文と判断することができる。データベース20はまだU1、U2、U3による更新が行われていないので、問合せの条件式「x>0」を、それらによる更新前には満たしていないが、これらの更新によって満たすこととなるデータの集合や、これらの更新前には満たしていたが、これらの更新によって満たさなくなるデータの集合が存在する。このことから、U1、U2、U3は、問合せの条件式「x>0」に影響を与えるupdate文である。
ステップ530でリストLにupdate文が含まれると判定された場合、ステップ540へ進み、そのリストLに含まれるj番目のupdate文をUjとし、そのUj中の条件式をWjとし、そのUjより前に蓄積されたupdate文を履歴Hjとする。リストLに含まれる最初のupdate文はU1であり、このU1より前に蓄積されたupdate文は存在しないので、この場合の履歴H1は空である。
次に、ステップ550において、リストL中の全てのUjについて、Wjに再帰的アルゴリズムA(Wj,Hj)を適用してセルフメンテナブルな条件式Wj sへ変形する。ここで、再帰的アルゴリズムを適用するのは、簡単な条件式で記述することができるからである。簡単な条件式は、プログラムを作成する際においても、簡単なプログラムで済むからである。条件式Wj sへ変形すると、図6(b)に示すようなupdate文およびデータの集合へと変えられる。条件式が変形されるのみであるため、図6(a)に示すupdate文およびデータの集合と実質的に同様のものである。
そして次に、ステップ560で、リストL中の全てのUjについて、条件式Wj sへ変形した後、そのWj sからリスト中の後続のupdate文につき変形されたWk s(k>j)を除き、その条件式をWj s’とする。後続のupdate文(Uk)とは、そのupdate文(Ui)より後に要求され、蓄積されたupdate文である。このステップ560では、図6(c)に示すように、W1 s’は、W1 s∧¬W2 s∧¬W3 s∧・・・∧¬Wn s、Wj s’は、Wj s∧¬Wj+1 s∧¬Wj+2 s∧・・・∧¬Wn s(1<j<n)、Wn s’は、Wn sと変形される。このように、後続のupdate文により更新されるデータの集合を取り除くことで、その実行の順番によらず、updateを適用することが可能となる。このときのデータの集合を表すと、図6(c)に示すような重なり合った部分がない集合となる。
ステップ570で、このようにして得られた条件式Wj s’を実行順に結合し、update文により更新される前の要素を含む条件式Ei’へ書き換える。図6(c)に示すように、Wj s’は、互いに重なり合った部分がない集合であるため、部分条件式Eiとの結合には、単純な集合和あるいは集合差を用いることができる。集合和は、論理和を用いることができ、集合差は、その要素の否定の論理積を用いることができる。これらのうちのどちらを使用して結合するかについては、update文の結果が、Eiを満たす場合はEiにWj s’を加える、すなわち論理和(∨)を用い、Eiを満たさない場合は、EiからWj s’を除く、すなわち否定の論理積(∧¬)を用いる。
図6に示す実施形態では、U1およびU3の結果は、「x>0」を満たすことから、EiにW1 s’およびW3 s’を加え、U2の結果は、「x>0」を満たさないことから、EiからW1 s’を除き、その結果、図6(d)に示すように、Ei’=
Ei∨W1 s’∧¬W2 s’∨W3 s’が得られる。次に、ステップ580で、未処理の部分条件式を含むか否かを判定し、含む場合には、ステップ510へ戻り、その部分条件式の抽出を行う。含まない場合は、全ての部分条件式を処理したため、ステップ590へ進み、この抽出部35および内容変更部36による処理を終了する。
なお、内容変更部36は、得られたEi’により、select文の条件式が記述されるwhere句を書き換え、処理部34へ入力し、処理部34が、その書き換えたselect文を用いてデータベース20へ問合せを行うことで、U1、U2、U3による更新を反映した結果を得る。
こうして得られた結果は、マテリアライズド・ビューのメンテナンス・アルゴリズムを実装している場合にはこのメンテナンス・アルゴリズムを用いて更新し、問合せを出力した要求出力部30へ返される。マテリアライズド・ビューは、データベース20上に存在する実データを保持するビューであり、このマテリアライズド・ビューの元となる表データが更新された場合に、メンテナンス・アルゴリズムを用いて、全てのデータを入れ替えたり、変更されたデータのみを入れ替えたりすることができるように構成されている。
更新された結果を、マテリアライズド・ビューを拡張したセルフメンテナブル・ビューとして図7に例示する。この図7に示す実施形態では、図7中、式3で示すように、未処理の更新要求が、1つのみで、部門「A10」に所属する従業員の給与を「50000」へ更新するものとされている。
入力されたselect文に含まれる条件式を抽出すると、「給与が40000以上」で、かつ「性別が女性」である。すなわち、2つの部分条件式から構成されている。未処理の更新要求は、上記の1つしかない。
この未処理の更新要求は、部門「A10」に所属する女性従業員の給与を「50000」へ更新するもので、この更新により、その女性従業員の中には、更新前は40000未満であったが、更新後は40000以上になった者が存在する。したがって、この更新は、select文に含まれる上記条件式に影響を与えるものである。
このため、上記のようにしてリストLを作成し、再帰的アルゴリズムを適用して第2条件式(上記でいうWi s)へ変形し、その第2条件式から後続のupdate文につき変形された第2条件式を除いて第3条件式(上記でいうWj s’)を生成し、第3条件式を、∨や∧¬等の演算子により結合し、変形したselect文を生成する。
ここでは、部門「A10」の全ての従業員が、給与40000以上の「50000」へ更新されるため、部門「A10」の全ての従業員を含むように、select文中の条件式は、(SALARY≧40000
OR WORKDEPT=A10) AND SEX=Fへと変形される。この変形されたselect文を処理部34へ入力し、処理部34が問合せを行った結果が、図7のテーブルに示されている。
ここで、データベース20を更新するフラッシュのタイミングであるが、その1つとしては、アプリケーション・サーバ10側での更新要求の適用コストの前回のフラッシュからの合計が、データベース20での更新のコストを上回った時を挙げることができる。しかしながら、スケール・アウトの効果を考慮すると厳密に求めることは難しく、前回のフラッシュからの更新要求や問合せ要求の数等から経験的に求めた値を用いることが現実的である。
マテリアライズド・ビューと同じ目的で、問合せをデータベースに依存しないで行う技術として、リザルト・キャッシュを用いる方法がある。このリザルト・キャッシュは、ビューを全て保持するのではなく、過去の問合せ結果のうち、最近の問合せに対する結果と頻繁に行われる問合せに対する結果のみを選択的に保持する。このため、リザルト・キャッシュは、メモリ使用量を増加させることなく、多くの問合せをキャッシュ上で処理することができる。最近の問合せは、最新の問合せから、新しい順に所定数の問合せや、ある時間内に行われた問合せ等とすることができる。頻繁に行われる問合せは、ある時間内に行われた問合せの数がある閾値以上である問合せとすることができる。
本発明では、図8に示すように、結果保持部37として、このリザルト・キャッシュを用いて構成することもできる。本発明は、これまでに説明してきたように、アプリケーションに対する完全な知識を仮定することを避けるために、問合せの都度、蓄積された更新要求に応じてその問合せをセルフメンテナブルにするための付加情報を求めている。すなわち、select文に付加する条件式や論理演算を求めている。
この場合、同じ問合せが、次の更新要求が蓄積される前に出力された場合には同じselect文に変形されるが、1つは更新要求前で、もう1つがその更新要求後に出力された場合は、異なるselect文に変形される。リザルト・キャッシュは、最近の問合せに対する結果や頻繁に行われる問合せに対する結果を保持することから、このような同じ問合せであるにもかかわらず、時により異なる問合せへ変形される可能性があることは、リザルト・キャッシュのメモリの使用効率の観点から望ましくない。
そこで、要求されうる更新要求が網羅的でなくてもいくつかが既知である場合には、問合せが出力された時点で、それまでに蓄積された問合せ結果に影響を与える更新要求に加え、それら既知の更新要求に対しても、問合せ結果がセルメンテナブルになるように問合せを変形するように構成する。
具体的には、内容変更部36が、蓄積部32に蓄積された問合せ結果に影響を与える更新要求に加え、要求されうる既知の更新要求も用いて問合せの内容を変更する。すなわち、蓄積部32に蓄積された問合せ結果に影響を与える更新要求に含まれる条件式に加え、これから要求されるとわかっているその問合せ結果に影響を与える更新要求に含まれる条件式を用いて問合せ文を変形する。このように構成することにより、その既知の更新要求が実際に蓄積されるまで、データベース20へは同じ問合せ文で問合せを行うこととなり、その問合せに対する結果は、頻繁に行われる問合せに対する結果として、結果保持部37に保持されるため、キャッシュ破棄を予防することができる。
また、この既知の更新要求に対しては、過去に要求された更新要求を加えることもできる。過去に要求された更新要求と同じ更新要求が出力されることもあるからである。内容変更部36は、蓄積部32に蓄積された更新要求を用いて問合せの内容を変更し、その内容を変更した問合せを処理部34に入力するとともに、既知の更新要求も用いて問合せの内容を変更し、その内容を変更した問合せを別途、処理部34に入力することも可能である。多くのアプリケーションでは、要求出力部30は、限られた更新要求を所定の周期で出力していることから、上記のように構成することで、一定時間経過後のキャッシュ破棄は起こらなくなると期待することができる。
これまで、本発明の処理装置、その処理装置により実行される処理方法を、図面を参照して詳細に説明してきたが、本発明は上記実施の形態に限定されるものではなく、他の実施形態や、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。したがって、本発明は、コンピュータ読み取り可能なプログラムとして構成し、コンピュータにそのプログラムを実行させることにより、処理装置として実現することもでき、処理方法も実現することができる。
データベースに格納されたデータのデータ構造、マテリアライズド・ビュー、セルフメンテナブル・ビューを例示した図。 本発明の処理装置の一実施形態であるアプリケーション・サーバを例示した図。 アプリケーション・サーバのハードウェア構成を例示した図。 アプリケーション・サーバの機能毎に分けて示した機能ブロック図。 抽出部および内容変更部により行われる処理の流れを示したフローチャート図。 抽出部および内容変更部による各処理ステップでの条件式およびデータの集合を示した図。 アプリケーション・サーバで処理された問合せ結果のビューを例示した図。 本発明の処理装置の別の実施形態を示した機能ブロック図。
符号の説明
10…アプリケーション・サーバ、11…メモリ、12…プロセッサ、13…メモリ制御部、14…チャネル・サブシステム、15…制御装置、16…入出力デバイス、20…データベース、30…要求出力部、31…判別部、32…蓄積部、33…更新部、34…処理部、35…抽出部、36…内容変更部、37…結果保持部

Claims (20)

  1. データベースに対する問合せを処理する装置であって、
    データベースの更新要求を蓄積する蓄積部と、
    蓄積された前記更新要求をバッチ処理して前記データベースを更新する更新部と、
    前記データベースへ問合せ、問合せ結果を出力する処理部と、
    問合せの入力に応答して、前記蓄積部から蓄積された更新要求を取得し、前記問合せの内容に基づき、問合せ結果に影響を与える前記更新要求を抽出する抽出部と、
    前記更新部が前記蓄積部に蓄積された更新要求により前記データベースの更新を行うことなく、前記蓄積された更新要求を反映した問合せ結果が得られるように、前記抽出部により抽出された前記更新要求を用いて前記問合せの内容を変更し、前記内容を変更した問合せを前記処理部へ入力する内容変更部と
    を備える、処理装置。
  2. 前記更新要求は、更新文を含み、前記問合せは、問合せ文を含み、前記抽出部は、前記問合せ文を取り出し、前記問合せ文に影響を与える更新要求を、前記更新文に基づき抽出する、請求項1に記載の処理装置。
  3. 前記更新文は、更新データと条件式とを含み、前記内容変更部は、前記条件式を、再帰的アルゴリズムを適用して第2条件式へと変換し、前記第2条件式に適合するデータの集合から、後続の更新要求により更新されるデータの集合を取り除くように、前記第2条件式と前記後続の更新要求につき変換された第2条件式とを演算子により結合して第3条件式を生成し、各更新要求につき生成された前記第3条件式を演算子により結合して、変形した条件式を含む問合せ文を生成する、請求項2に記載の処理装置。
  4. 前記内容変更部は、前記第2条件式と前記後続の更新要求につき変換された第2条件式の否定とを論理積により結合して前記第3条件式を生成する、請求項3に記載の処理装置。
  5. 前記内容変更部は、前記問合せ文に基づき、前記各更新要求につき生成された第3条件式を論理和で結合するか、前記第3条件式の否定を論理積で結合するかを判定し、前記問合せ文に含まれる条件式と抽出された前記更新要求すべての第3条件式または第3条件式の否定とを論理和または論理積により結合して、前記変形した条件式を含む問合せ文を生成する、請求項3に記載の処理装置。
  6. 前記問合せ文に含まれる条件式は、複数の部分条件式から構成され、前記抽出部は、各前記部分条件式に影響を与える更新要求を抽出し、前記内容変更部は、前記各部分条件式につき、変形した部分条件式を生成し、変形した各部分条件式を演算子により結合して、前記変形した条件式を含む問合せ文を生成する、請求項3に記載の処理装置。
  7. 前記問合せおよび前記更新要求を出力する要求出力部と、前記要求出力部が出力した要求が前記問合せか、前記更新要求かを判別する判別部とをさらに備える、請求項1に記載の処理装置。
  8. 過去の問合せ結果のうち、最近の問合せに対する結果と頻繁に行われる問合せに対する結果とを保持する結果保持部をさらに備える、請求項1に記載の処理装置。
  9. 要求され得る更新要求が既知である場合、前記内容変更部は、前記蓄積部に蓄積された問合せ結果に影響を与える更新要求に加えて既知の前記更新要求も用いて前記問合せの内容を変更する、請求項8に記載の処理装置。
  10. データベースの更新要求を蓄積する蓄積部と、蓄積された前記更新要求をバッチ処理して前記データベースを更新する更新部と、前記データベースへ問合せ、問合せ結果を出力する処理部とを備える装置により、データベースに対する問合せを処理する方法であって、
    問合せの入力に応答して、前記蓄積部から蓄積された更新要求を取得し、前記問合せの内容に基づき、問合せ結果に影響を与える前記更新要求を抽出するステップと、
    前記更新部が前記蓄積部に蓄積された更新要求により前記データベースの更新を行うことなく、前記蓄積された更新要求を反映した問合せ結果が得られるように、抽出された前記更新要求を用いて前記問合せの内容を変更し、前記内容を変更した問合せを前記処理部へ入力するステップとを含む、処理方法。
  11. 前記更新要求は、更新文を含み、前記問合せは、問合せ文を含み、前記抽出するステップでは、前記問合せ文を取り出し、前記問合せ文に影響を与える更新要求を、前記更新文に基づき抽出する、請求項10に記載の処理方法。
  12. 前記更新文は、更新データと条件式とを含み、前記入力するステップでは、前記条件式を、再帰的アルゴリズムを適用して第2条件式へと変換し、前記第2条件式に適合するデータの集合から、後続の更新要求により更新されるデータの集合を取り除くように、前記第2条件式と前記後続の更新要求につき変換された第2条件式とを演算子により結合して第3条件式を生成し、各更新要求につき生成された前記第3条件式を演算子により結合して、変形した条件式を含む問合せ文を生成する、請求項11に記載の処理方法。
  13. 前記入力するステップでは、前記第2条件式と前記後続の更新要求につき変換された第2条件式の否定とを論理積により結合して前記第3条件式を生成する、請求項12に記載の処理方法。
  14. 前記入力するステップでは、前記問合せ文に基づき、前記各更新要求につき生成された第3条件式を論理和で結合するか、前記第3条件式の否定を論理積で結合するかを判定し、前記問合せ文に含まれる条件式と抽出された前記更新要求すべての第3条件式または第3条件式の否定とを論理和または論理積により結合して、前記変形した条件式を含む問合せ文を生成する、請求項12に記載の処理方法。
  15. 前記問合せ文に含まれる条件式は、複数の部分条件式から構成され、前記抽出するステップでは、各前記部分条件式に影響を与える更新要求を抽出し、前記入力するステップでは、前記各部分条件式につき、変形した部分条件式を生成し、変形した各部分条件式を演算子により結合して、前記変形した条件式を含む問合せ文を生成する、請求項12に記載の処理方法。
  16. 前記装置が備える要求出力部により、前記問合せおよび前記更新要求を出力するステップと、前記装置が備える判別部により、前記要求出力部が出力した要求が前記問合せか、前記更新要求かを判別するステップとをさらに含む、請求項10に記載の処理方法。
  17. 要求され得る更新要求が既知である場合、前記入力するステップでは、前記蓄積部に蓄積された問合せ結果に影響を与える更新要求に加えて既知の前記更新要求も用いて前記問合せの内容を変更する、請求項10に記載の処理方法。
  18. 請求項10〜17のいずれか1項に記載の処理方法をコンピュータに実行させるためのプログラム。
  19. 請求項18に記載のプログラムが記録された記録媒体。
  20. データベースに対する問合せを処理する装置であって、
    データベースの更新要求を蓄積する蓄積部と、
    蓄積された前記更新要求をバッチ処理して前記データベースを更新する更新部と、
    前記データベースへ問合せ、問合せ結果を出力する処理部と、
    問合せの入力に応答して、前記蓄積部から蓄積された更新要求を取得し、前記問合せの内容に基づき、問合せ結果に影響を与える前記更新要求を抽出する抽出部と、
    前記更新部が前記蓄積部に蓄積された更新要求により前記データベースの更新を行うことなく、前記蓄積された更新要求を反映した問合せ結果が得られるように、前記抽出部により抽出された前記更新要求を用いて前記問合せの内容を変更し、前記内容を変更した問合せを前記処理部へ入力する内容変更部とを備え
    前記更新要求は、更新文を含み、前記問合せは、問合せ文を含み、前記抽出部は、前記問合せ文を取り出し、前記問合せ文に影響を与える更新要求を、前記更新文に基づき抽出し、
    前記更新文は、更新データと条件式とを含み、前記内容変更部は、前記条件式を、再帰的アルゴリズムを適用して第2条件式へと変換し、前記第2条件式に適合するデータの集合から、後続の更新要求により更新されるデータの集合を取り除くように、前記第2条件式と前記後続の更新要求につき変換された第2条件式とを演算子により結合して第3条件式を生成し、各更新要求につき生成された前記第3条件式を演算子により結合して、変形した条件式を含む問合せ文を生成し、
    前記内容変更部は、前記第2条件式と前記後続の更新要求につき変換された第2条件式の否定とを論理積により結合して前記第3条件式を生成し、
    前記内容変更部は、前記問合せ文に基づき、前記各更新要求につき生成された第3条件式を論理和で結合するか、前記第3条件式の否定を論理積で結合するかを判定し、前記問合せ文に含まれる条件式と抽出された前記更新要求すべての第3条件式または第3条件式の否定とを論理和または論理積により結合して、前記変形した条件式を含む問合せ文を生成し、
    前記問合せ文に含まれる条件式は、複数の部分条件式から構成され、前記抽出部は、各前記部分条件式に影響を与える更新要求を抽出し、前記内容変更部は、前記各部分条件式につき、変形した部分条件式を生成し、変形した各部分条件式を演算子により結合して、前記変形した条件式を含む問合せ文を生成し、
    前記問合せおよび前記更新要求を出力する要求出力部と、
    前記要求出力部が出力した要求が前記問合せか、前記更新要求かを判別する判別部と、
    過去の問合せ結果のうち、最近の問合せに対する結果と頻繁に行われる問合せに対する結果とを保持する結果保持部とをさらに備え、
    要求され得る更新要求が既知である場合、前記内容変更部は、前記蓄積部に蓄積された問合せ結果に影響を与える更新要求に加えて既知の前記更新要求も用いて前記問合せの内容を変更する、処理装置。







JP2008247554A 2008-09-26 2008-09-26 データベースに対する問合せを処理する装置、処理方法、プログラムおよび記録媒体 Expired - Fee Related JP5226445B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008247554A JP5226445B2 (ja) 2008-09-26 2008-09-26 データベースに対する問合せを処理する装置、処理方法、プログラムおよび記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008247554A JP5226445B2 (ja) 2008-09-26 2008-09-26 データベースに対する問合せを処理する装置、処理方法、プログラムおよび記録媒体

Publications (2)

Publication Number Publication Date
JP2010079627A JP2010079627A (ja) 2010-04-08
JP5226445B2 true JP5226445B2 (ja) 2013-07-03

Family

ID=42209990

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008247554A Expired - Fee Related JP5226445B2 (ja) 2008-09-26 2008-09-26 データベースに対する問合せを処理する装置、処理方法、プログラムおよび記録媒体

Country Status (1)

Country Link
JP (1) JP5226445B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023127146A1 (ja) * 2021-12-28 2023-07-06 楽天モバイル株式会社 情報処理システム及び情報処理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319635A (ja) * 1996-05-30 1997-12-12 Matsushita Graphic Commun Syst Inc データベース更新方法
JP2000267911A (ja) * 1999-03-15 2000-09-29 Nec Corp データベース装置及びプログラムを記録した機械読み取り可能な記録媒体
JP2008065840A (ja) * 2007-09-28 2008-03-21 Fujitsu Ltd 全文検索システム

Also Published As

Publication number Publication date
JP2010079627A (ja) 2010-04-08

Similar Documents

Publication Publication Date Title
US10831753B2 (en) Query plan generation and execution in a relational database management system with a temporal-relational database
EP3026579B1 (en) Forced ordering of a dictionary storing row identifier values
US9792318B2 (en) Supporting cursor snapshot semantics
EP3026578B1 (en) N-bit compressed versioned column data array for in-memory columnar stores
US11138227B2 (en) Consistent query execution in hybrid DBMS
US9779104B2 (en) Efficient database undo / redo logging
US10296611B2 (en) Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes
US9639542B2 (en) Dynamic mapping of extensible datasets to relational database schemas
AU2011345318B2 (en) Methods and systems for performing cross store joins in a multi-tenant store
US10733184B2 (en) Query planning and execution with source and sink operators
US9672241B2 (en) Representing an outlier value in a non-nullable column as null in metadata
CN113228000A (zh) 物化视图的增量刷新
US20120221577A1 (en) Method of and apparatus for organizing data records in a relational database
KR20170024039A (ko) 유연한 스키마를 사용한 데이터 관리
EP2562657B1 (en) Management of update transactions and crash recovery for columnar database
US10860579B2 (en) Query planning and execution with reusable memory stack
US20170255677A1 (en) Preventing staleness in query results when using asynchronously updated indexes
US9569477B1 (en) Managing scanning of databases in data storage systems
US8515927B2 (en) Determining indexes for improving database system performance
WO2010084754A1 (ja) データベースシステム、データベース管理方法、データベース構造および記憶媒体
KR101544560B1 (ko) 대용량 데이터를 처리하기 위하여 sql 파싱에 의한 2단계 쿼리 및 결과 캐싱을 이용한 온라인 분석 프로세싱 방법
JP5226445B2 (ja) データベースに対する問合せを処理する装置、処理方法、プログラムおよび記録媒体
WO2012081165A1 (ja) データベース管理装置及びデータベース管理方法
JP7274293B2 (ja) 情報処理装置、情報処理方法及びプログラム
US11989169B2 (en) Autonomous refactoring system for database

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110816

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130314

R150 Certificate of patent or registration of utility model

Ref document number: 5226445

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees