JP2009266147A - データベースと仮想テーブルの整合性を維持する方法および装置。 - Google Patents

データベースと仮想テーブルの整合性を維持する方法および装置。 Download PDF

Info

Publication number
JP2009266147A
JP2009266147A JP2008118099A JP2008118099A JP2009266147A JP 2009266147 A JP2009266147 A JP 2009266147A JP 2008118099 A JP2008118099 A JP 2008118099A JP 2008118099 A JP2008118099 A JP 2008118099A JP 2009266147 A JP2009266147 A JP 2009266147A
Authority
JP
Japan
Prior art keywords
instance
update
pool
determining whether
discard candidate
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
JP2008118099A
Other languages
English (en)
Other versions
JP5235483B2 (ja
Inventor
Yosuke Ozawa
陽介 小澤
Mitsuo Koyanagi
光生 小柳
Mari Fukuda
麻里 福田
Hiroyasu Osaki
博靖 大崎
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 JP2008118099A priority Critical patent/JP5235483B2/ja
Priority to US12/432,032 priority patent/US20090276473A1/en
Publication of JP2009266147A publication Critical patent/JP2009266147A/ja
Application granted granted Critical
Publication of JP5235483B2 publication Critical patent/JP5235483B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2393Updating materialised views

Abstract

【課題】データベースの仮想テーブルを有するビューを管理する方法を提供する。
【課題手段】該方法は、インスタンスを追加するための空き容量がないと判断した場合、LRUアルゴリズムにより破棄候補リスト・テーブルから、破棄候補インスタンスを選択するステップと、前記破棄候補インスタンスについて、更新待ちフラグが立っているか判断するステップと、前記更新待ちフラグが立っていると判断した場合、前記破棄候補リスト・テーブルから、前記破棄候補インスタンスを削除するステップと、前記更新待ちフラグが立っていないと判断した場合、前記インスタンス・プールから前記破棄候補インスタンスを削除して、前記インスタンス・プールに前記インスタンスを追加するステップと、前記記憶領域が十分あると判断した場合、前記追加要求のインスタンスを、前記インスタンス・プールに追加するステップとを含む。
【選択図】図5

Description

本発明は、データベースへの検索問い合わせ文の結果によって内容が定義される仮想テーブルのビューと、データベースの整合性の維持に関する。
データベースへの問い合わせ処理を効率良く行うための技術として、仮想テーブルのビュー(例えば、マテリアライズドビュー)を使用する方法がある。ビューは、データベースへの検索問い合わせ文の結果によって内容が定義される仮想テーブルであり、このテーブルを予め生成しておくことにより、アプリケーション・サーバからの同種の問い合わせ文に対して、直接データベースにアクセスして検索処理を行うことを回避できる。
一方、データベースへの更新処理を効率良く行うための方法として、バッチ更新がある。これは、アプリケーション・サーバなどからの複数のデータ更新操作文を蓄えておき、一定間隔、あるいは一定データサイズごとに1つにまとめてデータベースに送信し、処理させる方法である。一般に、データを送信、あるいはディスクに書き込む際には、一定のデータサイズや処理インターバルを守ることによって処理効率が最適化される。したがって、バッチ更新によって一定のデータサイズや処理インターバルが守られると、アプリケーション・サーバとデータベースとの間の通信が最適化され、システムのパフォーマンスが大きく向上する。
しかしながら、アプリケーション・サーバからデータベースに対して、最新のデータセットを対象とした検索問い合わせ要求がある場合には、その検索要求に正確に応答するために、データベースに対する更新要求数や処理インターバルが十分な量に達していない場合であっても、その時点でバッチ更新を実行(強制フラッシュ)しなければならず、バッチ更新の性能が十分に引き出せない場合がある。
この問題を解決するための一つの方法として、ビューをアプリケーション・サーバ上に保持し、更新要求ごとにビューのメンテナンスを行うことで、ビューを最新に保ち、検索問い合わせ要求をデータベースに送らずに処理が遂行できるようにすることが考えられる。しかし、この方法ではバッチ更新されるレコードに関連するすべての検索結果がアプリケーション・サーバ上に存在しなければならず、したがって、そのデータ量が記憶容量よりも大きい場合にはこの方法を用いることができなかった。
特許文献1では、データ更新要求があった場合、サーバキャッシュを検索し、データバースト・サーバキャッシュをその都度更新しているので、データベースに対する更新処理要求が頻繁に発生してしまう。
ハードウェアで実現される中央処理装置(CPU)のキャッシュ機構は、メモリアクセスに対するキャッシュであり、ビューと類似するアドレス解決のためのディレクトリはあるものの、複雑な検索結果をキャッシュすることはなく、まして、二重に処理を行うメンテナンスのような機構を持つことはない。さらに、ライトバック機構を備える場合でも、キャッシュ上の最終結果だけを書き込むため、インスタンス・プールとは別に、更新処理命令を生成するために、これまでの更新をバッチログとして保持する必要もない。従って、CPUの構成から、これらのアプリケーション・サーバ特有の問題の解を得ることはできない。
特開2004−280494号公報
データベースの仮想テーブルを有するビューを管理する方法および装置を提供する。
上記課題を解決するため、本発明においては、データベースの仮想テーブルを有するビューを管理する装置で実行される方法を提案する。該方法は、前記ビューのインスタンス・プールにレコード・データのインスタンスを追加する要求を受信するステップと、前記インスタンス・プールの記憶領域に、前記インスタンスを追加するための空き容量があるか判断するステップと、前記空き容量があるか判断するステップで、前記インスタンスを追加するための空き容量がないと判断した場合、LRU(Least Recently Used)アルゴリズムにより破棄候補リスト・テーブルから、破棄候補インスタンスを選択するステップと、前記破棄候補インスタンスについて、破棄候補リスト・テーブルに、更新待ちフラグが立っているか判断するステップと、前記更新待ちフラグが立っているか判断するステップで、前記更新待ちフラグが立っていると判断した場合、前記破棄候補リスト・テーブルから、前記破棄候補インスタンスを削除するステップと、前記更新待ちフラグが立っているか判断するステップで、前記更新待ちフラグが立っていないと判断した場合、前記インスタンス・プールから前記破棄候補インスタンスを削除して、前記インスタンス・プールに前記インスタンスを追加するステップと、前記空き容量があるか判断するステップで、前記記憶領域が十分あると判断した場合、前記追加要求のインスタンスを、前記インスタンス・プールに追加するステップとを含む。
本発明の方法により、検索結果のデータ量に対してメモリが十分でない場合でも、最新のデータセットや最も最近アクセスされたデータセットを優先してビューに保持することで、最新のデータセットを対象とした検索問い合わせ要求がきても、データベースに対してバッチ更新をその時点で行うことなく、検索問い合わせに応答することを可能にする。
以上、本発明の概要を、方法として説明したが、本発明は、装置、プログラム、またはプログラム製品として把握することもできる。プログラム製品は、例えば、前述のプログラムを格納した記憶媒体を含め、あるいはプログラムを伝送する媒体を含めることができる。
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた、発明となり得ることに留意すべきである。
図1は、本発明の、アプリケーション・サーバの検索問合せに対する検索結果によって内容が定義されるビューの仮想テーブルを有するシステム100の高水準の概要図である。ビューの仮想テーブルのレコード・データは、データベースのデータを基に作成される。DBサーバ121、122はデータベースを有する。ここでは、DBサーバは複数存在するが、1台のみでも良い。DBサーバは、ネットワーク101を介して、アプリケーション・サーバ110と接続する。通常、アプリケーション・サーバ110がビュー・プールおよびインスタンス・プールを含む仮想テーブルを有するキャッシュを持つ形態が、最も処理効率が高くなるが、他のサーバがこのキャッシュを有する形態であっても良い。
アプリケーション・サーバ110は、データベース(DBサーバ)に対し検索要求を出す。実際には、まず、検索キーで、対応する検索結果が無いかビュー・プールからインスタンスIDを検索し、対応するインスタンスIDがあれば、インスタンス・プールから対応するインスタンスIDのレコード・データを応答として返し、対応するインスタンスIDが無ければ、DBサーバを直接検索することになる。DBサーバの検索結果は、ビュー・プールおよびインスタンス・プールに蓄積される。また、アプリケーション・サーバ110から更新処理があった場合、ビュー・プールおよびインスタンス・プールを更新し、データベース(DBサーバ)への書き込み命令をバッチ処理として蓄積し、所定のルールに従ってデータベースにバッチ処理を実行する。
図2は、本発明の構成および処理を、高水準で概念的に示したものである。アプリケーション・プログラム201、ビュー・プール211、インスタンス・プール221およびバッチ処理機構231は、アプリケーション・サーバにあるほうが好ましいが、他のサーバに分散していても良い。また、データベース250はDBサーバであるが、このデータベースも、同一のサーバ上にあっても良いし、分散されたサーバ環境に配置しても良い。ここでは、アプリケーション・サーバ上に検索結果を保持し、検索キーおよびインスタンスIDを有するビュー・プール211と、検索結果によって参照されるレコードの実態を保持するインスタンス・プール221を有する。
アプリケーション・プログラム201は、更新要求および検索要求をデータベース250に送るが、実際には、ビュー・プール211およびインスタンス・プール221に送ることになる。ビュー・プール211は、検索キーを含むインデックス215を持つビュー213を含む。インデックス215はインスタンスIDも含む。インスタンス・プール更新部217は、必要に応じてインスタンス・プール221にインスタンスを追加削除する。インスタンス・プール221は、インスタンス223とロック・マネージャ225を有する。インスタンス223は、データベースのレコードの一部であるデータの他に、ロック状態フラグおよび更新待ちフラグを有しても良い。バッチ処理機構231は、更新要求をバッチログ233として保持し、所定のルールに従いデータベース250にバッチ更新処理を行なう。
図3は、ビュー・プールとインスタンス・プールの検索時の処理フローを例示したものである。ステップ301でアプリケーション・プログラムから検索要求が発せられ、フローがスタートする。ステップ303で、検索問い合わせ要求に対応する検索結果がビュー・プールの中に含まれているか確認する。ステップ305で、ビューに検索結果の実体を指すIDのリストが存在するか判断する。ステップ305で、検索キーに対応するIDが存在しないと判断した場合(No)、ステップ331に進み、nullを返す。一方、ステップ305で、検索キーに対応するIDが存在すると判断した場合(Yes)、ステップ307に進む。ステップ307で、ビュー・プールから対応する検索結果のIDリストを取得する。次に、各IDについて、ステップ309から319を繰り返す。
ステップ311で、該当するキーがインスタンス・プールにあるか判断する。ステップ313で、該当するIDをキーにインスタンス・プール中のインスタンス・テーブルからインスタンスを取得する。ステップ315で、アプリケーション・プログラムに返送するための検索結果リストに、取得したインスタンスのIDを追加する。一方、ステップ311で該当するキーのインスタンスがインスタンス・プールにないと判断した場合、IDをキーにデータベースからインスタンスを取得する。その後、ステップ315に進み、検索結果リストに、取得したインスタンスのIDを追加する。ステップ319で、各IDについて、インスタンスの取得が終了していない場合は、ステップ309に進む。各IDについて、インスタンスの取得が終了している場合は、ステップ321に進む。ステップ321で、インスタンスが入った結果リストをアプリケーション・サーバに返す。ステップ341でこのフローの処理を終了する。
図4は、検索問合せの際の動作を概念的に示した図である。アプリケーション・プログラムから、検索問合せ文403がアプリケーション・サーバ405に発せられる。ここで、問い合わせ文の条件部分(検索キー)は、WHERE句の(s1、2)となる。このキー(s1、2)でビュー・プール407内の各ビュー409に含まれるキー411を検索する。ここで、キー(s1、2)に対応する検索結果であるインスタンスID413は、(100、107、211)となる。このIDで、まず、インスタンス・プール421内のインスタンス423を検索する。該当するインスタンスが、インスタンス・プールに存在すれば、インスタンスのレコード・データの実体を取得し、検索結果としてアプリケーション・プログラムに返す。該当するインスタンスが、インスタンス・プール421に無い場合は、直接データベース431のインスタンスを検索し、データの実体を取得し、検索結果としてアプリケーション・プログラムに返す。
図5は、ビュー・プールとインスタンス・プールの、インスタンス追加の処理フローを例示したものである。ステップ501で処理を開始する。ステップ501では、インスタンスの追加要求を受取った場合がトリガーになる。例えば、インスタンス・プールに存在しないインスタンスをデータベースから検索してきた場合などが、このトリガーにあたる。ステップ503で、インスタンスを追加するのに使用可能な領域があるか調べる。ステップ505で、インスタンスを追加するための記憶領域が十分か判断する。ステップ505で記憶領域が十分であると判断した場合(Yes)、ステップ521に進む。ステップ521で、インスタンスを作成し、インスタンス・プールに追加する。そして、ステップ531でこの処理フローを終了する。なお、他のインスタンス追加要求が残っていれば、ステップ501から処理を繰り返す。一方、ステップ505で記憶領域が十分ではないと判断した場合(No)、ステップ507に進み、LRU(Least Recently Used)アルゴリズムにより、インスタンスの破棄候補リストから、破棄の対象となるインスタンスを選択する。これは、最も使われていないインスタンスを破棄するためである。
ステップ509で、破棄候補のインスタンスがロックされているか判断する。ステップ509で破棄候補のインスタンスがロックされていると判断した場合(Yes)、ステップ513で破棄候補リストから、破棄候補のインスタンスを削除し、ステップ507に戻る。インスタンスがロックされているということは、そのインスタンスが他からアクセスがあるということを意味する。一方、ステップ509で破棄候補のインスタンスがロックされていないと判断した場合(No)、ステップ511に進む。
ステップ511で、破棄候補のインスタンスの更新待ちフラグが立っているか判断する。ステップ511で、更新待ちフラグが立っていると判断した場合、ステップ541に進み、バッチ処理機構の更新要求数(バッチログ)が所定の数を超えているか判断する。ステップ541で、所定の数を超えていると判断した場合(Yes)、ステップ543に進み、キー毎にバッチログを集めて整理し最新(最終)のデータ値をバッチ更新文にセットする(詳細は後述する)。ステップ545で、バッチ処理機構は、バッチ更新文で実際にデータベースを更新する。ステップ513に進み、破棄候補リストから当該インスタンスを削除する。ステップ541で、所定の数を超えていないと判断した場合(No)、ステップ513に進み、破棄候補リストから当該インスタンスを削除する。なお、ステップ541からステップ545は、更新待ちフラグが立っているインスタンスが多くある場合もあるので、バッチ処理によりデータベースに更新内容を反映するために実行されるが、ここで、必ずしもこれらのステップを実行する必要は無い。また、ステップ513で、破棄候補リストから当該インスタンスを削除するのは、更新待ちフラグが立っているインスタンスはデータベースに更新内容が反映されていないので、インスタンス・プールの内容が最新となり、従って、インスタンス・プールからの削除を防ぐ必要があるからである。
ステップ511で、更新待ちフラグが立っていないと判断した場合、ステップ515に進み、破棄候補のインスタンスをインスタンス・プールから削除する。再び、インスタンスを追加するために、ステップ505に戻り、記憶領域が十分であると判断した場合(Yes)、ステップ521、インスタンスを作成し、インスタンス・プールに追加する。一方、ステップ505で記憶領域が十分ではないと判断した場合(No)、ステップ507からステップ515までの処理を繰り返すことになる。なお、図5のフローは、アプリケーション・サーバからの検索文および更新文で、該当するインスタンスがインスタンス・プールに無い場合に実行される。
図6は、ビュー・プールの更新要求の処理を概念的に示した図である。アプリケーション・プログラムから、更新文603がアプリケーション・サーバ605に発せられる。ここで、キーは、更新文の条件部分、すなわち、WHERE句の(s1、2)となる。このキー(s1、2)でビュー・プール607内の各ビュー609に含まれるキー611を検索する。ここで、キー(s1、2)に対応する結果ID613は、(100、107、211)となる。このIDをキーに、インスタンス・プール621内のインスタンスを検索し、またデータベース631内のインスタンスを検索してValue=3に更新する。なお、インスタンス・プールのインスタンスを更新する際は、競合を防ぐため、インスタンスに対してロックを取得する。ロックの取得にはロック・マネージャのキュー(図示せず)に入ることになる。
更新後のデータをインスタンス・プール623のインスタンスに書き込む。この更新要求をバッチ処理機構625に渡し、更新要求はバッチ更新テーブル(バッチログ)627に追加される。インスタンスの更新待ちフラグを立てられる。トランザクションが終了したら、ロックは解除される。そして、このバッチ更新要求は任意のタイミング(例えば定期的に、または更新要求が一定量溜まった後)で、データベース631に反映される。
図7は、インスタンスの更新をデータベースに反映させるためのバッチ更新方法を例示的に説明したものである。例として、データベースのテーブルT1(701)に対しての更新処理を示す。インスタンスに対する蓄積された更新文の例として703を示す。705はバッチログである。バッチログは、レコード(key)毎に整理され、最終(最新)の値がセットされ、データベースを実際に更新するためのバッチ更新文(707)が作成される。たとえば、key=Aでは、value=5に更新された後、さらにvalue=10に更新されている。この場合、予めパターンごとに用意されている707のバッチ更新文では、(key、value)=(10、A)で値をセットし、データベースを更新する。
図8は、本システムの機能構成図を、整理して例示的に示したものである。本システムは、アプリケーション・プログラム801、ビュー・プール803、ビュー805、インスタンス・プール807、ロック・マネージャ809、インスタンス811、インスタンス・プール更新部815、バッチ処理機構821、バッチログ821、データベース825を含む。インスタンス・プール更新部815は、図5のフローを中心的に実行するものである。その他については、既に説明したので、詳細な説明は省略する。これらの構成ブロックは、各機能を融合、またはより細分化することで、これらの機能ブロック以外でも表現できることは当業者には自明である。
図9は、破棄候補リストのテーブル900を例示的に示したものである。901は破棄候補のインスタンスIDを示す。902は、インスタンスへの最終アクセス時刻を示す。LRUアルゴリズムでは、この時刻の一番小さい値を持つインスタンスIDから順番に選択することになる。903は更新待ちフラグである。このフラグが1の場合、データベースにインスタンスの更新内容が反映されていないことを意味する。破棄候補リスト・テーブル900の各カラムは、1つのテーブルに含まれるように表現しているが、実際には一つのテーブルにある必要はない。たとえば、更新待ちフラグはインスタンス・プールのインスタンスが持つようにしても良い。
以上の説明により、本発明の実施の形態によるシステムを実現するのに好適な情報処理装置は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、または、これらの組み合わせによって実現されることが容易に理解されるであろう。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
本発明の実施の形態において使用される情報処理装置の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得ることは勿論である。それらの変更は、当然に本発明の思想に包含される概念である。
本発明の実施形態によるシステムは、マイクロソフト・コーポレーションが提供するWindows(登録商標)オペレーティング・システム、アップル・コンピュータ・インコーポレイテッド提供するMacOS(R)、X Window Systemを備えるUNIX(登録商標)系システム(例えば、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するAIX(R)など)のような、GUI(グラフィカル・ユーザー・インターフェース)マルチウインドウ環境をサポートするオペレーティング・システムを採用することができる。
以上から、本発明の実施の形態において使用されるシステムは、特定のオペレーティング・システム環境に限定されるものではないことを理解することができる。
また、本発明は、ハードウェア、ソフトウェア、またはハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実行において、所定のプログラムを有するデータ処理システムにおける実行が典型的な例として挙げられる。かかる場合、該所定プログラムが該データ処理システムにロードされ実行されることにより、該プログラムは、データ処理システムを制御し、本発明にかかる処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、または1.他の言語・コード・表記への変換、2.他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。
もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記憶した媒体もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、MO、CD−ROM、DVD、ハードディスク装置、ROM、MRAM、RAM等の任意のコンピュータ読み取り可能な記憶媒体に格納することができる。かかるプログラムは、記憶媒体への格納のために、通信回線で接続する他のデータ処理システムからダウンロードしたり、他の記憶媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記憶媒体に格納することもできる。また、様々な形態で、本発明を実施するプログラム製品を提供することも勿論可能であることにも留意されたい。
以上、本発明の実施形態によれば、検索結果のデータ量に対してメモリが十分でない場合でも、最新のデータセットや最も直近にアクセスされたデータセットを優先してビューに保持することで、最新のデータセットを対象とした検索問い合わせ要求がきても、データベースに対してバッチ更新をその時点で行うことなく、検索問い合わせに応答できることが理解される。
上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれることに留意されたい。
本発明の、アプリケーション・サーバの検索問合せに対する検索結果によって内容が定義されるビューの仮想テーブルを有するシステム100の高水準の概要図である。 本発明の構成および処理を、高水準で概念的に示したものである。 ビュー・プールとインスタンス・プールの検索時の処理フローを例示したものである。 検索問合せの際の動作を概念的に示した図である。 ビュー・プールとインスタンス・プールの、インスタンス追加の処理フローを例示したものである。 ビュー・プールの更新要求の処理を概念的に示した図である。 インスタンスの更新をデータベースに反映させるためのバッチ更新方法を例示的に説明したものである。 本システムの機能構成図を、整理して例示的に示したものである。 破棄候補リストのテーブル900を例示的に示したものである。

Claims (13)

  1. データベースの仮想テーブルを有するビューを管理する装置で実行される方法であって、
    前記ビューのインスタンス・プールにレコード・データのインスタンスを追加する要求を受信するステップと、
    前記インスタンス・プールの記憶領域に、前記インスタンスを追加するための空き容量があるか判断するステップと、
    前記空き容量があるか判断するステップで、前記インスタンスを追加するための空き容量がないと判断した場合、LRU(Least Recently Used)アルゴリズムにより破棄候補リスト・テーブルから、破棄候補インスタンスを選択するステップと、
    前記破棄候補インスタンスについて、更新待ちフラグが立っているか判断するステップと、
    前記更新待ちフラグが立っているか判断するステップで、前記更新待ちフラグが立っていると判断した場合、前記破棄候補リスト・テーブルから、前記破棄候補インスタンスを削除するステップと、
    前記更新待ちフラグが立っているか判断するステップで、前記更新待ちフラグが立っていないと判断した場合、前記インスタンス・プールから前記破棄候補インスタンスを削除して、前記インスタンス・プールに前記インスタンスを追加するステップと、
    前記空き容量があるか判断するステップで、前記記憶領域が十分あると判断した場合、前記追加要求されたインスタンスを、前記インスタンス・プールに追加するステップと
    を含む方法。
  2. 前記方法はさらに、
    前記破棄候補インスタンスが、ロックされているか判断するステップと、
    前記ロックされているか判断するステップで、前記破棄候補インスタンスがロックされていると判断した場合、前記破棄候補リストから、前記破棄候補インスタンスを削除するステップと
    を含む請求項1に記載の方法。
  3. 前記方法はさらに、
    前記更新待ちフラグが立っているか判断するステップで、前記破棄候補インスタンスに更新待ちフラグが立っていると判断した場合、データベースに更新を反映するバッチ処理の更新要求数が所定の数を越えているか判断するステップと
    前記所定の数を越えているか判断するステップで、所定の数を超えていると判断した場合、
    バッチの更新要求を整理してバッチ更新文にセットするステップと、
    バッチ更新文でデータベースを更新するステップと
    を含む請求項1に記載の方法。
  4. 前記インスタンス・プールのインスタンスは、更新待ちフラグとロック状態フラグを持つことを特徴とする請求項1に記載の方法。
  5. 前記インスタンスの検索時に、インスタンス・プールに前記インスタンスが存在しない場合に、実行される方法である請求項1に記載の方法。
  6. 前記方法はさらに、
    前記ビューの検索キーを含むビュー・プールから前記インスタンスのIDを取得するステップと
    前記IDに対応する前記インスタンスのレコードを、前記インスタンス・プールから検索するステップを含む請求項1に記載の方法。
  7. 請求項1乃至6のいずれか1項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
  8. データベースにおいて、仮想テーブルを有するビューを管理するシステムであって、
    検索キーを含むビュー・プールと、
    データベースの少なくとも一部のレコード・データのインスタンスを含むインスタンス・プールと、
    前記インスタンス・プールに保持するレコードの更新を前記データベースに反映するためのバッチ処理部と、
    インスタンス・プールを更新する更新部と
    を有するシステムであって、
    前記更新部は、
    前記ビューのインスタンス・プールにレコード・データのインスタンスを追加する要求を受信する手段と、
    前記インスタンス・プールの記憶領域に、前記インスタンスを追加するための空き容量があるか判断する手段と、 前記空き容量があるか判断する手段で、前記インスタンスを追加するための空き容量がないと判断した場合、LRU(Least Recently Used)アルゴリズムにより破棄候補リスト・テーブルから、破棄候補インスタンスを選択する手段と、
    前記破棄候補インスタンスについて、更新待ちフラグが立っているか判断する手段と、
    前記更新待ちフラグが立っているか判断する手段で、前記更新待ちフラグが立っていると判断した場合、前記破棄候補リスト・テーブルから、前記破棄候補インスタンスを削除する手段と、
    前記更新待ちフラグが立っているか判断する手段で、前記更新待ちフラグが立っていないと判断した場合、前記インスタンス・プールから前記破棄候補インスタンスを削除して、前記インスタンス・プールに前記インスタンスを追加する手段と、
    前記空き容量があるか判断する手段で、前記記憶領域が十分あると判断した場合、前記追加要求されたインスタンスを、前記インスタンス・プールに追加する手段と
    を含む更新部と
    を含むシステム。
  9. 前記更新部はさらに、
    前記破棄候補インスタンスが、ロックされているか判断する手段と、
    前記ロックされているか判断する手段で、前記破棄候補インスタンスがロックされていると判断した場合、前記破棄候補リストから、前記破棄候補インスタンスを削除する手段と
    を含む請求項8に記載のシステム。
  10. 前記更新部はさらに、
    前記更新待ちフラグが立っているか判断する手段で、前記破棄候補インスタンスに更新待ちフラグが立っていると判断した場合、データベースに更新を反映するバッチ処理の更新要求数が所定の数を越えているか判断する手段と、
    前記所定の数を越えているか判断する手段で、所定の数を超えていると判断した場合、前記バッチ処理部が
    バッチの更新要求を整理してバッチ更新文にセットし、
    バッチ更新文でデータベースを更新する
    請求項8に記載のシステム。
  11. 前記インスタンス・プールのインスタンスは、更新待ちフラグとロック状態フラグを持つことを特徴とする請求項8に記載の方法。
  12. 前記インスタンスの検索時に、インスタンス・プールに前記インスタンスが存在しない場合に、前記更新部が実行される請求項8に記載のシステム。
  13. 前記システムはさらに、
    前記ビュー・プールから前記インスタンスのIDを取得する手段と
    前記IDに対応する前記インスタンスのレコードを、前記インスタンス・プールから検索する手段とを含む請求項8に記載のシステム。
JP2008118099A 2008-04-30 2008-04-30 データベースと仮想テーブルの整合性を維持する方法および装置。 Active JP5235483B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008118099A JP5235483B2 (ja) 2008-04-30 2008-04-30 データベースと仮想テーブルの整合性を維持する方法および装置。
US12/432,032 US20090276473A1 (en) 2008-04-30 2009-04-29 Method and apparatus for maintaining consistency between database and virtual table

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008118099A JP5235483B2 (ja) 2008-04-30 2008-04-30 データベースと仮想テーブルの整合性を維持する方法および装置。

Publications (2)

Publication Number Publication Date
JP2009266147A true JP2009266147A (ja) 2009-11-12
JP5235483B2 JP5235483B2 (ja) 2013-07-10

Family

ID=41257828

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008118099A Active JP5235483B2 (ja) 2008-04-30 2008-04-30 データベースと仮想テーブルの整合性を維持する方法および装置。

Country Status (2)

Country Link
US (1) US20090276473A1 (ja)
JP (1) JP5235483B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013141308A1 (ja) * 2012-03-22 2013-09-26 日本電気株式会社 分散ストレージシステム、ストレージ制御方法およびプログラム
RU2620471C2 (ru) * 2012-03-23 2017-05-25 ФОРД ГЛОУБАЛ ТЕКНОЛОДЖИЗ, ЭлЭлСи Способ для форсированного двигателя, способ для двигателя и система для двигателя
KR20190013907A (ko) 2016-06-09 2019-02-11 가부시키가이샤 사이게임스 정보 처리 시스템 및 방법, 및 프로그램

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016155511A1 (en) * 2015-03-28 2016-10-06 Huawei Technologies Co., Ltd. A system and method to optimize queries on a view
US10585874B2 (en) 2016-04-25 2020-03-10 International Business Machines Corporation Locking concurrent commands in a database management system
US11188501B1 (en) * 2017-08-15 2021-11-30 Amazon Technologies, Inc. Transactional and batch-updated data store search
CN113626472B (zh) * 2021-08-10 2023-09-05 北京京东振世信息技术有限公司 一种处理订单数据的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005190221A (ja) * 2003-12-25 2005-07-14 Sap Ag キャッシュ制御装置およびその方法ならびにコンピュータプログラム
JP2005533324A (ja) * 2002-07-17 2005-11-04 オラクル・インターナショナル・コーポレイション モバイルアプリケーション用データをキャッシュするためのシステムおよび方法
JP2006511876A (ja) * 2002-12-23 2006-04-06 インターナショナル・ビジネス・マシーンズ・コーポレーション トランスペアレントなネットワークのエッジ・データ・キャッシュ
JP2006338341A (ja) * 2005-06-02 2006-12-14 Hitachi Ltd ストレージシステム及び構成変更方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026406A (en) * 1997-06-04 2000-02-15 Oracle Corporation Batch processing of updates to indexes
FR2780589B1 (fr) * 1998-06-30 2000-12-01 Bull Sa Agent de communication entre un administrateur de systeme informatique et un systeme de ressources distribuees et outils de creation d'un tel agent
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US20020112125A1 (en) * 2000-12-18 2002-08-15 Copeland George P. Command caching to improve network server performance
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US6615318B2 (en) * 2002-01-22 2003-09-02 International Business Machines Corporation Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries
US7756910B2 (en) * 2004-05-21 2010-07-13 Bea Systems, Inc. Systems and methods for cache and pool initialization on demand
US7360042B2 (en) * 2004-12-20 2008-04-15 Microsoft Corporation Determining when to evict unused items from storage
US7519776B2 (en) * 2005-07-26 2009-04-14 Invensys Systems, Inc. Method and system for time-weighted cache management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005533324A (ja) * 2002-07-17 2005-11-04 オラクル・インターナショナル・コーポレイション モバイルアプリケーション用データをキャッシュするためのシステムおよび方法
JP2006511876A (ja) * 2002-12-23 2006-04-06 インターナショナル・ビジネス・マシーンズ・コーポレーション トランスペアレントなネットワークのエッジ・データ・キャッシュ
JP2005190221A (ja) * 2003-12-25 2005-07-14 Sap Ag キャッシュ制御装置およびその方法ならびにコンピュータプログラム
JP2006338341A (ja) * 2005-06-02 2006-12-14 Hitachi Ltd ストレージシステム及び構成変更方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013141308A1 (ja) * 2012-03-22 2013-09-26 日本電気株式会社 分散ストレージシステム、ストレージ制御方法およびプログラム
JPWO2013141308A1 (ja) * 2012-03-22 2015-08-03 日本電気株式会社 分散ストレージシステム、ストレージ制御方法およびプログラム
RU2620471C2 (ru) * 2012-03-23 2017-05-25 ФОРД ГЛОУБАЛ ТЕКНОЛОДЖИЗ, ЭлЭлСи Способ для форсированного двигателя, способ для двигателя и система для двигателя
KR20190013907A (ko) 2016-06-09 2019-02-11 가부시키가이샤 사이게임스 정보 처리 시스템 및 방법, 및 프로그램
US10990591B2 (en) 2016-06-09 2021-04-27 Cygames, Inc. Sub-query processing system, method, and program

Also Published As

Publication number Publication date
JP5235483B2 (ja) 2013-07-10
US20090276473A1 (en) 2009-11-05

Similar Documents

Publication Publication Date Title
JP4116413B2 (ja) プリフェッチアプライアンスサーバ
JP5235483B2 (ja) データベースと仮想テーブルの整合性を維持する方法および装置。
US11080260B2 (en) Concurrent reads and inserts into a data structure without latching or waiting by readers
US7765189B2 (en) Data migration apparatus, method, and program for data stored in a distributed manner
JP4522170B2 (ja) リレーショナルデータベースのインデックス追加プログラム,インデックス追加装置及びインデックス追加方法
US20080065644A1 (en) System and Methods For Optimizing Data Transfer Among Various Resources In A Distributed Environment
JP2003150419A (ja) データベース管理システムの実行情報を取得する手段を有する記憶装置
US20120005158A1 (en) Reducing Contention of Transaction Logging in a Database Management System
KR20150013191A (ko) 클라우드-기반 파일 시스템 내에서의 파일 핸들링
EP2541423B1 (en) Replacement policy for resource container
JP2005018787A (ja) キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し
CN106294814B (zh) 基于内存数据库的HBase二级索引构建与查询的装置及方法
CN101046821A (zh) 通用数据库操纵器
CN102867070A (zh) 更新key-value分布式存储系统缓存的方法
JP2007018399A (ja) 条件別スナップショット取得方法及びシステム
US20070100826A1 (en) Method for improving the performance of database loggers using agent coordination
WO2023093245A1 (zh) 基于分布式文件系统的元数据查询方法、设备和存储介质
US20050125458A1 (en) Chronological data record access
US11714794B2 (en) Method and apparatus for reading data maintained in a tree data structure
JP5721056B2 (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
JP2008262561A (ja) 履歴上のファイル名およびロケーションをインデックス付きにすることによりファイル・サーチおよびファイル操作を支援するためのシステムおよび方法
US20220342888A1 (en) Object tagging
US10642745B2 (en) Key invalidation in cache systems
WO2016032574A1 (en) Serialized child associations in parent record
WO2017156855A1 (en) Database systems with re-ordered replicas and methods of accessing and backing up databases

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120904

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130326

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160405

Year of fee payment: 3