JP6891533B2 - データベース装置 - Google Patents

データベース装置 Download PDF

Info

Publication number
JP6891533B2
JP6891533B2 JP2017031757A JP2017031757A JP6891533B2 JP 6891533 B2 JP6891533 B2 JP 6891533B2 JP 2017031757 A JP2017031757 A JP 2017031757A JP 2017031757 A JP2017031757 A JP 2017031757A JP 6891533 B2 JP6891533 B2 JP 6891533B2
Authority
JP
Japan
Prior art keywords
savepoint
transaction
management table
query
progress
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.)
Active
Application number
JP2017031757A
Other languages
English (en)
Other versions
JP2018136815A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2017031757A priority Critical patent/JP6891533B2/ja
Publication of JP2018136815A publication Critical patent/JP2018136815A/ja
Application granted granted Critical
Publication of JP6891533B2 publication Critical patent/JP6891533B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、クライアントから発行されたクエリを実行するデータベース装置、バッチ処理管理方法、及びプログラムに関する。
複数のクエリを含むバッチ処理の中断が発生しても、バッチ処理を効率的に再実行するデータベース装置が特許文献1に記載されている。
特許文献1に記載されたデータベース装置(以下、本発明に関連するデータベース装置と記す)では、バッチ処理の実行において各クエリが完了する毎にセーブポイントを生成する。これにより、バッチ処理が規定時間内に終わらないために一旦中断して後刻に再開する場合、バッチ処理の最初からでなく未実行のクエリの先頭から再開できるようにしている。
特開2010−9195号公報 特許第4425377号
しかしながら、リソース不足等の理由によってバッチ処理の中断はクエリの実行中にも発生する。本発明に関連するデータベース装置では、クエリの実行途中にセーブポイントを生成することは困難である。そのため、クエリの実行途中に中断が生じると、中断したクエリをその最初から実行しなければならない無駄がある。
本発明の目的は、上述した課題を解決するデータベース装置を提供することにある。
本発明の一形態に係るデータベース装置は、
クライアントから発行されたバッチ処理に係るクエリを実行するデータベース装置であって、
前記クエリの実行計画を作成し、前記実行計画の各ステップの進捗状況をトランザクション進捗管理テーブルに記録しながら前記クエリを実行するトランザクション制御部と、
前記進捗状況を含むセーブポイントのデータをセーブポイント管理テーブルに記録する自動セーブポイント生成部と、
を含む。
本発明の他の形態に係るバッチ処理管理方法は、
クライアントから発行されたバッチ処理に係るクエリを実行するデータベース装置が実行するバッチ処理管理方法であって、
前記クエリの実行計画を作成し、前記実行計画の各ステップの進捗状況をトランザクション進捗管理テーブルに記録しながら前記クエリを実行し、
前記進捗状況を含むセーブポイントのデータをセーブポイント管理テーブルに記録する。
本発明の他の形態に係るプログラムは、
クライアントから発行されたバッチ処理に係るクエリを実行するコンピュータを、
前記クエリの実行計画を作成し、前記実行計画の各ステップの進捗状況をトランザクション進捗管理テーブルに記録しながら前記クエリを実行するトランザクション制御部と、
前記進捗状況を含むセーブポイントのデータをセーブポイント管理テーブルに記録する自動セーブポイント生成部と、
して機能させる。
本発明は上述した構成を有することにより、クエリの実行途中であってもセーブポイントを生成することができる。これにより、中断したクエリの実行開始から中断までの間にセーブポイントが生成されていれば、そのクエリの実行途中から再開することができる。
本発明の第1の実施形態の構成例を示す図である。 本発明の第1の実施形態において、バッチ処理の開始後、クエリが終わった時点やクエリの実行途中でセーブポイント(静止点)を自動的に取得する様子、およびアボート後にクエリの途中からバッチ処理を再開している様子を示す図である。 本発明の第1の実施形態におけるセーブポイント管理テーブルの構成例を示す図である。 本発明の第1の実施形態におけるトランザクション進捗管理テーブルの構成例を示す図である。 本発明の第1の実施形態における値リスト変更バッファの構成例を示す図である。 本発明の第1の実施形態において、クライアントからデータベース装置にバッチトランザクションを対話的に実行した際にトランザクションが途中でアボートした例を示す図である。 本発明の第1の実施形態において、自動セーブポイントからトランザクションを再開した例を示す図である。 本発明の第1の実施形態におけるトランザクション制御部がクエリを受信したときに行う処理の一例を示すフローチャートである。 本発明の第1の実施形態において、トランザクションの開始時に作成されるトランザクション進捗管理テーブルのレコードの例を示す図である。 本発明の第1の実施形態において、クエリ実行の準備が整った時点のトランザクション進捗管理テーブルのレコードの例を示す図である。 本発明の第1の実施形態における実行計画のシリアライズ化の一例を示す図である。 本発明の第1の実施形態において、トランザクションの処理開始時のトランザクション進捗管理テーブルのレコードの例を示す図である。 本発明の第1の実施形態におけるトランザクション制御部によるトランザクションの処理例を示すフローチャートである。 本発明の第1の実施形態におけるトランザクション監視部の処理例を示すフローチャートである。 本発明の第1の実施形態におけるトランザクション制御部がコミット/ロールバックの命令を受けた時に実行する処理例を示すフローチャートである。 本発明の第1の実施形態における自動セーブポイント生成部の処理例を示すフローチャートである。 本発明の第1の実施形態におけるトランザクション進捗管理テーブルに記録される実行計画、進捗フラグ、及び処理にかかった時間の例を示す図である。 本発明の第1の実施形態におけるセーブポイントのデータの種類、特徴、及びコスト計算方法の例を示す図である。 本発明の第1の実施形態における処理再開時点のセーブポイント管理テーブルの例を示す図である。 本発明の第1の実施形態において、操作履歴の形式のセーブポイントのデータを使用して復帰する動作を説明する図である。 本発明の第1の実施形態において、直前からの差分の形式のセーブポイントのデータを使用して復帰する動作を説明する図である。 本発明の第1の実施形態において、値リスト変更バッファを使用して、値リストをセーブポイントまで復帰する動作を説明する図である。 本発明の第2の実施形態の構成図である。 FAST構造データベースの説明図である。 FAST構造データベースにおける表の各行へのアクセス方法の説明図である。 FAST構造データベースにおけるソート処理の説明図である。 本発明の第3の実施形態の構成図である。
[第1の実施形態]
次に本発明の第1の実施形態について図面を参照して詳細に説明する。
<本実施形態が解決しようとする課題>
一般的なデータベースにおいて、長時間のバッチ処理が途中でアボートしてしまうと、大幅な時間のロスとなる。そのため、バッチ処理の途中でコミットし、バックアップを取り、やり直す場合はリストアを行う、といった運用がされてきた。あるいは、各処理の合間にテーブルのスナップショットを取り、これをセーブポイントとして発行し、途中でアボートした場合にセーブポイントから再実行できるようにするという運用がされてきた。しかし、処理の都度、バックアップを取ったり、セーブポイントを頻繁に発行するといった運用は煩雑になりがちである。そのうえ、バックアップやセーブポイントを取るタイミングはクエリが終わったタイミングでしか取れず、一つのクエリが長い時間かかる状況では、その直前のクエリが完了した時点までしかたどり着けない。メモリ不足や突然の電源断など、正しい処理にも関わらずデータベース外の要因によって強制的にアボートされてしまう場合に、再度同一のクエリを実行することになり大きな時間のロスが発生してしまう。これらのことは大量データのバッチ処理にも優れたFAST(Filter Array STructure)構造を用いた列指向データベースでも同様のことが言える。
ここで、FAST構造について説明しておく。収集したデータの集計を行い、他システムと連携できるようにデータの加工を行うといったバッチ処理は昔からあるが、近年増大するデータ量を効率よく扱うために、列指向データベースを使ったバッチ処理が近年広く利用され始めている。列指向データベースの中には特許文献2などに開示されたデータベースシステムなどが提案されている。この技術では、図24に示すように、昇順かつ重複の内容にデータを格納した値リスト、値リストへの参照を意味する値番号の組を用いて、表の1つの列を表現している。このデータ構造がFAST構造と呼ばれている。表の各行へのアクセスは、図25に示すように、順序集合、値番号をたどることで行うことができる。行番号に対応する順序集合の要素が値番号の添え字であり、値番号の要素は値リストの添え字となっている。このようにFAST構造のデータベースは順序集合、値番号、値リストという3つのベクトルにデータを分解される。このようにすることで、直接文字列などのデータを扱うことなく、整数値で管理されている順序集合や値番号での操作だけで完結させることができるケースがある。また、その多くはシーケンシャルなメモリアクセスであり、キャッシュヒット率も高く良好な性能をもたらす。図26に示すソートの例のように、実際の値を格納している値リストを参照することなく処理が完結することも可能となる。
<本実施形態による解決手段>
本実施形態では、バッチ処理中に自動で不揮発なセーブポイントを生成する。これにより、手動でのバックアップやリストア、セーブポイントの発行を伴わずに簡単にバッチ処理が再開できる。また図2に示すように、バッチ処理の途中でアボートが起きてもバッチ処理を再開することが可能となる。
また本実施形態では、クエリの途中であってもセーブポイントが生成される。これにより、長いクエリがあるバッチ処理では、再開の時間が短くて済む。
また本実施形態では、クエリ中の処理時間が短い操作は復旧時にその操作を実施し、そうでないものは、データの差分を保存し、復旧時にこれを用いる。このとき、FAST構造において、順序集合と値番号はその整数配列を記録し、値リストは変化する場所と変更後のデータのリストを差分として記録する。順序集合と値番号は整数配列であり、容量が小さくなりやすく、値リストは更新前後で格納されているデータの件数が少ないことが多い。そのため、上述のようにすることにより、データの使用量を削減し、ディスク装置のI/O負荷を軽減できる。これによって高速なセーブポイントの作成とセーブポイントへの復旧を実現する。
<本実施形態の構成>
本実施形態の構成について、図1を用いて説明する。本実施形態のデータベースシステムの構成要素は、大きく分けてデータベース装置1、データベース装置1から見えるディスク装置2、およびクライアント3がある。
またデータベース装置1は、トランザクション進捗管理テーブル10、トランザクション制御部11、トランザクション復旧部12、トランザクション監視部13、自動セーブポイント生成部14、値リスト変更バッファ15、作業用メモリ16、ユーザテーブル17、データベース管理テーブル18、及び、セーブポイント管理テーブル19を含んでいる。トランザクション進捗管理テーブル10、値リスト変更バッファ15、作業用メモリ16、ユーザテーブル17、データベース管理テーブル18、及び、セーブポイント管理テーブル19は、データベース装置1を構成する主記憶部に設けられる。また、トランザクション進捗管理テーブル10、ユーザテーブル17、データベース管理テーブル18、及び、セーブポイント管理テーブル19は、主記憶部上のFAST構造型データベース管理領域に設けられている。一方、トランザクション制御部11、トランザクション復旧部12、トランザクション監視部13、及び、自動セーブポイント生成部14は、データベース装置1を構成するCPU等の演算処理部に所定のプログラムを実行させることによって実現される。
またディスク装置2は、FAST構造型データベース記憶領域21とセーブポイント記憶領域22とを含む。
クライアント3は、データベース装置1と通信することができ、これは複数あってもよい。クライアント3からデータベース装置2にバッチトランザクション開始の通知を送ると、トランザクション制御部11がこれを受け、トランザクションIDを発行し、トランザクション制御を行う。トランザクション制御の方法は多々あるが、本実施形態はそのどれを用いてもよい。また、トランザクション制御部11は、トランザクション進捗管理テーブル10にトランザクションの進捗状況を記入する。
トランザクション監視部12は、トランザクション進捗管理テーブル10を監視し、前回の実行から自動セーブポイント間隔Tより経過しているか、クエリ完了が確認されたタイミングで、自動セーブポイント生成部14にセーブポイントを生成するように命令を送る。
トランザクション復旧部13は、アボートされたトランザクションを再開する際の処理を行う部品である。トランザクション復旧部13は、トランザクション進捗管理テーブル10とセーブポイント管理テーブル19を参照して、復旧処理を実施する。
自動セーブポイント生成部14は、トランザクション進捗管理テーブル10とセーブポイント管理テーブル19を更新し、セーブポイントを作成する。
セーブポイント管理テーブル19は、セーブポイントの管理を行うテーブルで、図3に示すようなデータを格納する。このセーブポイント管理テーブル19は、トランザクションとセーブポイント、およびセーブポイント記憶領域22との関係が記録される。セーブポイント管理テーブル19のレコードは、トランザクションID、セーブポイントID、ステータス、実行計画、進捗フラグ、各処理にかかった時間、データの種類、データの保存先、コスト、といったカラムを有する。
トランザクション進捗管理テーブル10は、トランザクションの進捗情報が記録されるテーブルで、図4に示すようなデータを格納する。トランザクション進捗管理テーブル10のレコードは、トランザクションID、ステータス、前回の時刻、実行計画、進捗フラグ、各処理にかかった時間、といったカラムを有する。
値リスト変更バッファ15は、自動セーブポイントが有効な場合において、問合せの途中結果として生成されるFAST構造のテーブルの値リストが元々あるテーブルと異なる場合にその差分を記録するバッファであり、図5に示すようなヘッダとデータを格納する。
作業用メモリ16は、クライアントからの問合せ中に使われる汎用的な一時バッファであり、本実施形態では特に用途を定めない。また、ユーザテーブル17、データベース管理テーブル18は、FAST構造ではあるが、一般的なデータベースと同様の用途であり、本実施形態では特に用途を定めない。
セーブポイント記憶領域22は、セーブポイントのデータを管理するディスク装置上の記憶領域であり、FAST構造型データベース記憶領域21に格納されるデータ構造とは異なる。換言すれば、セーブポイント記憶領域22は、バッチ処理再開に必要な情報を永続的に管理するディスク上の記憶領域である。セーブポイント記憶領域22には、少なくともセーブポイント管理テーブル19のコピーが記憶される。またセーブポイント記憶領域22には、セーブポイント管理テーブル19の保存先カラムに記載された保存先のデータが記録される。セーブポイント記憶領域22は、主記憶部のセーブポイント管理テーブル19と常に同期がとれている。
FAST構造型データベース記憶領域21は、FAST構造型データベースのデータを永続的に管理するディスク上の記憶領域である。主記憶部のFAST構造型データベース管理領域上にあるコミットされたデータと常に同期がとれている。
<本実施形態の動作>
<自動セーブポイント概要>
クライアント3からデータベース装置1にバッチトランザクションを対話的に実行した場合の例を図6に示す。この図6の例は、クエリの実行途中でメモリ不足になってしまい、トランザクションが途中でアボートしたことを示している。ただし、自動セーブポイントがいくつか生成されており、図7に示すように自動セーブポイントからトランザクションを再開することが可能であることを示している。
<トランザクション処理>
バッチ処理が開始されるときの、トランザクション制御部11の動作を、図8を用いて説明する。まず、トランザクション制御部11は、トランザクションが開始されると、トランザクション進捗管理テーブル10に図9に示すようにステータスをWAITとしてレコードを追加する(ステップS1)。次にトランザクション制御部11は、クライアントからクエリが来たら、パースを行い、実行計画を生成する(ステップS2)。そして、トランザクション制御部11は、図10に示すように、先ほどトランザクション進捗管理テーブル10に追加したレコードを更新する(ステップS2)。即ち、実行計画をシリアライズしたデータ<Tree>に、実行計画の各処理に対応する進捗フラグをすべて0に、各処理にかかった時間を0に、ステータスをACCEPTEDに更新する。実行計画のシリアライズは、例えば図11に示すようにすることで実現できる。ここまででクエリ実行の準備ができたことになる。
次にトランザクション制御部11は、図12に示すように、トランザクション進捗管理テーブル10の先ほど追加したレコードの前回の時刻カラムに現在時刻を設定し、ステータスをRUNNINGとし、処理を始める(ステップS3)。このようにトランザクション進捗管理テーブル10に進捗状況を書き込むことで、他のスレッドやプロセス(たとえば、トランザクション監視部13など)からも可視になる。
次にトランザクション制御部11は、ステータスがRUNNINGとなっているテーブルに対し、通常の関係データベースのように、実行計画のツリーのリーフから順番に処理をしていく。この時の処理を図13に示す。図13に示すように、トランザクション制御部11は、実行計画の各処理が終わる度にトランザクション進捗管理テーブル10の進捗フラグを立て、更新していく(ステップS11)。次にトランザクション制御部11は、実行計画をすべて終えたタイミングで、トランザクション進捗管理テーブル10に登録したレコードのステータスをWAITとし、自動セーブポイント生成部14に生成命令を発行する(ステップS12)。そして、トランザクション制御部11は、次のクエリか、或いはコミット/ロールバックの命令がクライアントから送信されるのを待つ。
ところで、トランザクション監視部13は、トランザクション制御部11とは独立して、図14に示すようなフローチャートにしたがって定期的にトランザクション進捗管理テーブル10を監視する(ステップS21)。トランザクション監視部13は、トランザクション進捗管理テーブル10のステータスがRUNNINGであり、監視タイミングにおける時刻が前回の時刻+自動セーブポイント間隔Tよりも大きいレコードを発見すると(ステップS22でYes)、自動セーブポイント生成部14に生成命令を発行する(ステップS23)。
トランザクション制御部11がコミット/ロールバックの命令を受けるときの処理手順を図15に示す。コミットまたは明示的なロールバック命令は、このトランザクションが確定か無効であるかを決定することを意味し、中間結果が不要になる。そのため、トランザクション制御部11は、トランザクション進捗管理テーブル10から該当するレコードを削除し(ステップS31)、自動セーブポイント生成部14に自動セーブポイントの削除命令を発行して(ステップS32)、トランザクションのコミット/ロールバックを実行し、クローズする。
<自動セーブポイントの生成>
自動セーブポイント生成部14は、自動セーブポイント作成命令を受けると、図16に示すような処理にしたがって自動セーブポイントの作成を行う。まず、自動セーブポイント生成部14は、トランザクション制御部11、トランザクション監視部13の処理を一時停止する(ステップS41)。そして、自動セーブポイント生成部14は、セーブポイント管理テーブル19を用いて、対象のトランザクションIDにおけるセーブポイントのIDを0から順に採番する(ステップS42)。そして、自動セーブポイント生成部14は、この時のトランザクションのステータス、実行計画、進捗フラグ、処理時間をトランザクション進捗管理テーブル10から取得する(ステップS43)。次に自動セーブポイント生成部14は、これらの取得した情報から自動セーブポイントの保存形式を決定する(ステップS44)。即ち、自動セーブポイント生成部14は、後述するコスト算出を行い、最もコストが小さくなる保存形式を選択する。自動セーブポイント生成部14は、保存形式が決まったら、その形式でデータファイル(セーブポイントファイル)を作成する(ステップS45)。また、このときの保存先、コストを取得する(ステップS45)。ここまで済んだところで、自動セーブポイント生成部14は、図3に示すセーブポイント管理テーブル19に新たにレコードを追加する(ステップS46)。このとき追加するレコードには、上記対象のトランザクションID、採番されたセーブポイントID、トランザクション進捗管理テーブルから取得されたステータス、実行計画、進捗フラグ、各処理にかかった時間、選択されたデータの種類、作成したデータファイルの保存先、コストが記録される。その後、自動セーブポイント生成部14は、トランザクション進捗管理テーブル10の前回の時刻のカラムに現在の時刻を設定し(ステップS47)、トランザクション制御部11、トランザクション監視部13の動作を再開させる(ステップS48)。
<自動セーブポイントの削除>
自動セーブポイント生成部14は、トランザクション制御部11から上述した自動セーブポイントの削除命令を受けると、自動セーブポイントの削除命令の対象となるトランザクションIDのセーブポイントファイルをすべて削除し、セーブポイント管理テーブル19の対象のトランザクションIDのレコードを削除することで、自動セーブポイントの削除を行う。
<セーブポイントの保存形式>
本実施形態では、セーブポイントの保存形式として、図18のデータの種類の欄に記載するように、「操作履歴」、「直前からの差分」、「開始時点からの差分」の3種類を用意する。
操作履歴の保存形式は、差分データを記録せず、セーブポイント復帰時に実行計画にしたがって次に進捗フラグを付けるべき操作をし直すことを表す。
直前からの差分の保存形式は、直前に発行したセーブポイントから新たに追加・更新された、順序集合、値番号、値リストを差分として保存する方法を表す。順序集合、値番号は、その整数配列をそのまますべて書きだす。一方、値リストの差分は、図5に示すように、変更元となる値リストの情報(対象となるテーブルやカラム)を記載したヘッダと、変更方法、変更場所を記載したデータ部とから成る値リスト変更バッファの情報を保存する。これは、FAST構造の値リストは処理によって使いまわせるケースが多く、すべてを書きだすよりも変更を記録することで、作成時間の短縮と復旧時の処理速度を上げるためである。
開始時点からの差分の保存形式は、バッチトランザクションが開始した時点から新たに追加された順序集合、値番号、値リストを差分として保存する方法を表す。
<コスト算出>
セーブポイントの保存形式を選択する際に行うコスト算出について説明する。トランザクション進捗管理テーブル10には、実行計画の各処理について、処理時間が図17に示すように記録されている。自動セーブポイント生成部14は、この各処理の処理時間等を参照し、図18に示すコスト計算方法に従って各保存形式のコスト(復帰に要する時間)を計算する。
自動セーブポイント生成部14は、操作履歴の保存形式では、実行計画の各処理の処理時間に係数をかけたものをコストとして算出する。またデータの差分(直前からの差分の保存形式)の場合、自動セーブポイント生成部14は、ディスクからの読み込みや適用に掛かる推定時間をコストとして計上する。計算されたコストが最小のものを採用することで、軽量な処理の場合は操作履歴を、最終的に生成されるデータが軽量の場合は直前からの差分が、履歴が複雑な場合は開始時点からの差分が選ばれやすくなる。
<セーブポイントからの再開>
セーブポイントからの再開処理について、図19に示すセーブポイント管理テーブル19の例を用いて説明する。まず、トランザクション復旧部12は、再開時に指定するトランザクションIDと一致するレコードをセーブポイント管理テーブル19から検索する。トランザクションIDが12346のトランザクションをセーブポイントID=4から再開する図19の場合、トランザクション復旧部12は、トランザクションIDが12346のレコードすべてを選択する。次にトランザクション復旧部12は、選択したレコードのうち、再開時に指定するセーブポイントIDより小さい中で、「開始時点からの差分」を保存しているもっとも大きいセーブポイントIDのレコードを探す。図19の場合はセーブポイントIDが2のレコードがこれに該当する。そして、トランザクション復旧部12は、そのレコードから再開時に指定しているセーブポイントIDまでのレコードの情報を元に、順番に復旧の処理を実行していく。図19の場合、トランザクション復旧部12は、先ずセーブポイントID=2のセーブポイントに復旧し、次にセーブポイントID=3のセーブポイントに復旧し、最後にセーブポイントID=4のセーブポイントに復旧することになる。もし再開時に指定するセーブポイントIDより小さいセーブポイントIDが、上記選択したレコードにない場合は、トランザクション復旧部12は、セーブポイントIDが0のレコードから順番に、再開時に指定しているセーブポイントIDまで実行する。
操作履歴を使ってセーブポイントまで復旧する方法を図20に示す。トランザクション復旧部12は、実行計画の進捗状況から次に行うべき処理が分かるので、それを通常通りのトランザクション処理として行えばよい。
直前からの差分のデータを使ってセーブポイントまで復旧する方法を図21に示す。トランザクション復旧部12は、処理の対象が元々あるテーブルの場合であれば、元々のテーブルをワークメモリ内に取り込んだのち、順序集合、値番号はセーブポイントに保存されたデータに置き換える。またトランザクション復旧部12は、値リストについては、図22に示すように、保存された値リスト変更バッファを適用し、復旧を行う。このとき、値リスト変更バッファがシリアライズ化されて保存されている場合、デシリアライズ化して使用する。
開始時点からの差分のデータを使ってセーブポイントまで復旧する方法は、直前からの差分のデータを使ってセーブポイントまで復旧する方法と同じである。
<本実施形態の特徴>
以上のように本実施形態は、以下の点を特徴とする。
(1)バッチ処理中に自動的にセーブポイント(バッチ処理の復帰点)を発行できる自動セーブポイント生成部14や関連する部品を有しているFAST構造のデータベース装置1である点。
(2)自動セーブポイント生成部14は、バッチ処理中のクエリが長い場合は、クエリの途中でもセーブポイントを発行する点。
(3)セーブポイントは、不揮発性のデータ(ディスクに書き込む)のため、電源断やクエリのアボートが起きても復帰が可能な点。
(4)セーブポイントは、「操作の履歴」、「開始時点との差分」、「直前との差分」の3種類の保存形式があり、再開時の実行時間が最短となるように自動的に決定される点。
(5)セーブポイントに用いる差分として、FAST構造の構成要素である値番号、値リスト、順序集合の変化する部分を差分として記録する点。このとき、順序集合と値番号はその配列を記録し、値リストは元となるテーブルの値リストに対して、追加・削除・更新されるところだけの差分を記録する値リスト変更バッファ15を利用する点。このようにすることで、FAST構造の構成要素の性質を活かし、セーブポイントの作成時間と再開時の処理時間の短縮を図る点。
<本実施形態の効果>
本実施形態によれば、上記特徴を有することにより、バッチ処理中に予測していなかった電源断やアボートが発生しても、効率よくバッチ処理の再開が可能である。
また本実施形態によれば、データ差分をFAST構造の構成要素レベルでみた差分とすることで、テーブルデータすべての保存が入らず、セーブポイントの作成もセーブポイントへの復帰も高速に行うことができる。
例えば、売上明細情報を蓄積していたデータベースから分析用データベースに月末の夜間にデータを加工したうえで投入するようなシステムがあったとする。このシステムは稼働当初はデータ量に対して十分なサーバメモリを搭載していたが、当月はたまたま想定外に売上がよく、データ量が当初想定していた量を大きく上回り、バッチ処理が全体の80%程度終わっていたところでメモリが枯渇しアボートしてしまったとする。この場合、メモリを増強すればアボートの回避は可能だが、ここまでのバッチ処理が数時間要してしまった場合、もう一度最初から始めてしまうと翌日の業務が支障をきたす恐れがある。本発明を適用すると、自動で処理の途中にセーブポイントが発行され、そこから再開できるので、影響を最小限に食い止めることができる。
[第2の実施形態]
本発明の第2の実施形態の構成を図23に示す。本実施形態では、第1の実施形態におけるデータベース装置1と同じものを2つ用意し、一方のデータベース装置1Aを稼働系、他方のデータベース装置1Bを待機系とし、また、ディスク装置2を共有ストレージ2Aに置き換えている。
2つデータベース装置1A、1Bは、共有ストレージ2Aに接続されている。トランザクション開始前のデータは、共有ストレージ2AのFAST構造型データベース記憶領域21にあり、バッチ処理再開に必要な情報が共有ストレージ2Aのセーブポイント記憶領域22にある。ここで、稼働系のデータベース装置1Aがバッチ処理中に故障した場合、バッチ処理再開に必要な情報が全て共有ストレージ2Aにあるため、クライアント3が待機しているデータベース装置1Bにつなぎ直すことで、バッチ処理を再開することが可能である。
[第3の実施形態]
図27は、本発明の第3の実施形態に係るデータベース装置100の構成図である。図27を参照すると、データベース装置100は、クライアント101から発行されたクエリを実行する機能を有する。データベース装置100は、トランザクション制御部102と自動セーブポイント生成部103とを含む。
トランザクション制御部102は、クライアント101から発行されたバッチ処理に係るクエリの実行計画を作成し、その実行計画の各ステップ(各処理)の進捗状況をトランザクション進捗管理テーブル104に記録しながらクエリを実行する。
自動セーブポイント生成部103は、クエリの実行計画の各ステップの進捗状況を含むセーブポイントのデータをセーブポイント管理テーブル105に記録する。
このように構成されたデータベース装置100は、以下のように動作する。即ち、クライアント101からクエリが発行されると、トランザクション制御部102は、クエリの実行計画を作成し、その実行計画の各ステップの進捗状況をトランザクション進捗管理テーブル104に記録しながらクエリを実行する。また、自動セーブポイント生成部103は、例えば前回セーブポイントを生成した時刻から予め定められた時間が経過すると、クエリ実行途中であってもセーブポイントを生成する。このとき自動セーブポイント生成部103は、クエリの実行計画の各ステップの進捗状況を含むセーブポイントのデータをセーブポイント管理テーブル105に記録する。
このように本実施形態によれば、クエリの実行途中であってもセーブポイントを生成することができる。また、クエリの実行計画の各ステップの進捗状況を含むセーブポイントのデータがセーブポイント管理テーブル105に記録される。これにより、中断したクエリの実行開始から中断までの間にセーブポイントが生成されていれば、そのクエリの実行途中から再開することができる。
以上、本発明を幾つかの実施形態を挙げて説明したが、本発明は以上の実施形態にのみ限定されず、その他各種の付加変更が可能である。例えば、本発明はFAST構造のデータベースにのみ限定されず、関係データベース等の他の形式のデータベースにも適用できる。
本発明は、クライアントから発行されたクエリを実行するデータベース装置全般に利用できる。
1…データベース装置
1A…データベース装置(稼働系)
1B…データベース装置(待機系)
2…ディスク装置
2A…共有ストレージ
3…クライアント
10…トランザクション進捗管理テーブル
11…トランザクション制御部
12…トランザクション復旧部
13…トランザクション監視部
14…自動セーブポイント生成部
15…値リスト変更バッファ
16…作業用メモリ
17…ユーザテーブル
18…データベース管理テーブル
19…セーブポイント管理テーブル
21…FAST構造型データベース記憶領域
22…セーブポイント記憶領域
100…データベース装置
101…クライアント
102…トランザクション制御部
103…自動セーブポイント生成部
104…トランザクション進捗管理テーブル
105…セーブポイント管理テーブル

Claims (8)

  1. クライアントから発行されたバッチ処理に係るクエリを実行するデータベース装置であって、
    前記クエリの実行計画を作成し、前記実行計画の各ステップの進捗状況をトランザクション進捗管理テーブルに記録しながら前記クエリを実行するトランザクション制御部と、
    前記進捗状況を含むセーブポイントのデータをセーブポイント管理テーブルに記録し、前記記録では、前記セーブポイントのデータ形式として予め定められた複数種類の中から、セーブポイントへ復帰するまでに要する時間を計算して、最も短い時間で復帰できる種類を選択する自動セーブポイント生成部と、
    を含むデータベース装置。
  2. セーブポイントを前回生成してから予め定められた時間が経過すると、クエリの実行中であるか否かを問わずに、セーブポイント生成命令を前記自動セーブポイント生成部に発行するトランザクション監視部を、更に含む、
    請求項1に記載のデータベース装置。
  3. 前記種類の1つは、更新されたFAST構造の構成要素の差分をセーブポイントのデータとして保存するデータ形式である、
    請求項に記載のデータベース装置。
  4. 値リスト変更バッファを、更に有し、
    前記自動セーブポイント生成部は、セーブポイントの書き出し、読み込みに前記値リスト変更バッファを利用する、
    請求項に記載のデータベース装置。
  5. 前記セーブポイントのデータを使用して、前記バッチ処理を前記セーブポイントから再開するトランザクション復旧部を、更に含む、
    請求項1乃至の何れかに記載のデータベース装置。
  6. 前記データベース装置に接続されたディスク装置を、更に有し、
    前記ディスク装置に前記セーブポイント管理テーブルのコピーを記録する、
    請求項1乃至の何れかに記載のデータベース装置。
  7. クライアントから発行されたバッチ処理に係るクエリを実行するデータベース装置が実行するバッチ処理管理方法であって、
    前記クエリの実行計画を作成し、前記実行計画の各ステップの進捗状況をトランザクション進捗管理テーブルに記録しながら前記クエリを実行し、
    前記進捗状況を含むセーブポイントのデータをセーブポイント管理テーブルに記録し、
    前記記録では、前記セーブポイントのデータ形式として予め定められた複数種類の中から、セーブポイントへ復帰するまでに要する時間を計算して、最も短い時間で復帰できる種類を選択する、
    バッチ処理管理方法。
  8. クライアントから発行されたバッチ処理に係るクエリを実行するコンピュータを、
    前記クエリの実行計画を作成し、前記実行計画の各ステップの進捗状況をトランザクション進捗管理テーブルに記録しながら前記クエリを実行するトランザクション制御部と、
    前記進捗状況を含むセーブポイントのデータをセーブポイント管理テーブルに記録し、前記記録では、前記セーブポイントのデータ形式として予め定められた複数種類の中から、セーブポイントへ復帰するまでに要する時間を計算して、最も短い時間で復帰できる種類を選択する自動セーブポイント生成部と、
    して機能させるためのプログラム。
JP2017031757A 2017-02-23 2017-02-23 データベース装置 Active JP6891533B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017031757A JP6891533B2 (ja) 2017-02-23 2017-02-23 データベース装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017031757A JP6891533B2 (ja) 2017-02-23 2017-02-23 データベース装置

Publications (2)

Publication Number Publication Date
JP2018136815A JP2018136815A (ja) 2018-08-30
JP6891533B2 true JP6891533B2 (ja) 2021-06-18

Family

ID=63365563

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017031757A Active JP6891533B2 (ja) 2017-02-23 2017-02-23 データベース装置

Country Status (1)

Country Link
JP (1) JP6891533B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003085021A (ja) * 2001-09-07 2003-03-20 Nippon Soken Holdings:Kk リカバリ・リスタート機能を備えたバッチ処理システム、リカバリ・リスタート機能を備えたバッチ処理システム用プログラム、及びそのプログラムを記録した記録媒体
JP4859605B2 (ja) * 2006-09-20 2012-01-25 株式会社日立製作所 情報処理システム
JP6287441B2 (ja) * 2014-03-26 2018-03-07 日本電気株式会社 データベース装置

Also Published As

Publication number Publication date
JP2018136815A (ja) 2018-08-30

Similar Documents

Publication Publication Date Title
US9183236B2 (en) Low level object version tracking using non-volatile memory write generations
EP2590086B1 (en) Columnar database using virtual file data objects
US6018746A (en) System and method for managing recovery information in a transaction processing system
US9223805B2 (en) Durability implementation plan in an in-memory database system
US11132350B2 (en) Replicable differential store data structure
US8949190B2 (en) Point-in-time database recovery using log holes
JP5008991B2 (ja) データのリカバリを制御する装置及び方法
US9218377B2 (en) Failure recovery and error correction techniques for data loading in information warehouses
JP4237354B2 (ja) トランザクション処理方法及びトランザクション処理システム
US7996363B2 (en) Real-time apply mechanism in standby database environments
US20170046231A1 (en) Consistent backup of a distributed database system
EP2590087A1 (en) Database log parallelization
EP3596619A1 (en) Methods, devices and systems for maintaining consistency of metadata and data across data centers
EP2590078B1 (en) Shadow paging based log segment directory
JPH07175700A (ja) データベース管理方式
US11531594B2 (en) Data recovery method and apparatus, server, and computer-readable storage medium
JPS62206645A (ja) データ・ベース・システムの動作を回復する方法
JP2007200114A (ja) データベース回復方法及び計算機システム
JPH06332778A (ja) トランザクション管理方法
US9652492B2 (en) Out-of-order execution of strictly-ordered transactional workloads
CN110019469B (zh) 分布式数据库数据处理方法、装置、存储介质及电子装置
JP6891533B2 (ja) データベース装置
JP2008269408A (ja) データ検索システム
US20240256398A1 (en) Redo avoidance during database recovery
EP3944101B1 (en) Information processing program, information processing method, and information processing device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201210

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210510

R150 Certificate of patent or registration of utility model

Ref document number: 6891533

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150