JP2010009195A - バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステム - Google Patents

バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステム Download PDF

Info

Publication number
JP2010009195A
JP2010009195A JP2008165840A JP2008165840A JP2010009195A JP 2010009195 A JP2010009195 A JP 2010009195A JP 2008165840 A JP2008165840 A JP 2008165840A JP 2008165840 A JP2008165840 A JP 2008165840A JP 2010009195 A JP2010009195 A JP 2010009195A
Authority
JP
Japan
Prior art keywords
request
execution
data
batch
batch processing
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.)
Withdrawn
Application number
JP2008165840A
Other languages
English (en)
Inventor
Kazuhiro Osaki
和宏 大崎
Takeo Maruyama
剛男 丸山
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008165840A priority Critical patent/JP2010009195A/ja
Publication of JP2010009195A publication Critical patent/JP2010009195A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】データベース管理システムにおいて、バッチ処理の中断が発生しても、バッチ処理を効率的に実行する。
【解決手段】DBサーバ3のSQL制御部34は、バッチ処理が中断前の状態と判定されるときには、実行要求されたリクエスト内容を実行し、その実行に伴うデータアクセスをディスク装置8に対して行い、そのデータアクセスの読み込み結果であるデータ内容を返却データとして格納し、その返却データを返却し、バッチ処理が中断後の復帰状態と判定されるときには、実行要求されたリクエストの実行を省略するとともに、履歴管理データにおいて実行要求されたリクエスト内容に対応する返却データを実行要求元であるAPサーバに返却する。
【選択図】図3

Description

本発明は、バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステムに関する。
データベース管理システムにおいて、SQL(Structured Query Language)などで記述されるリクエストにより発生するディスクアクセスを削減する技術として、データベース管理システムの更新ログを出力しない処理方法がある。
バッチ処理に対して更新ログを出力しないことで、ディスクアクセスを削減し、バッチ処理時間を短縮することができる。なお、バッチ処理とは、データベース上のデータに対して実施するリクエスト(検索、更新など)を、複数回まとめて一度に行うように指定する処理を指す。
バッチ処理は、データベースのオンライン業務が停止する夜間に実行されるため、翌朝のオンライン業務が開始するまでの規定の時間内に確実に終了することが求められる。バッチ処理が規定の時間内に終わらない場合には、バッチ処理を一旦中断し、翌晩などに再度オンライン業務を停止し、バッチ処理を最初から復帰実行する。
特許文献1では、中断したバッチ処理の自動復帰実行を行う旨が開示されている。
特開平03−225434号公報
前記特許文献1の技術では、データベース管理システムの更新ログを出力しないため、バッチ処理を中断した場合、その復帰に時間がかかってしまう。この技術では、事前に取得しておいたバックアップを用いてデータベース管理システムをバッチ処理実行前の復帰状態に戻した後、バッチ処理を最初から復帰実行する。つまり、最初のほうに実行されるバッチ処理は、中断前と中断後とで重複して実行されるため、非効率である。
そこで、本発明は、前記した問題を解決し、データベース管理システムにおいて、バッチ処理の中断が発生しても、バッチ処理を効率的に実行することを、主な目的とする。
前記課題を解決するため、本発明は、バッチ処理を実行するバッチ実行装置と、バッチ処理から呼び出されるリクエストを実行するリクエスト実行装置と、リクエストの実行に伴うデータアクセスの対象となるデータを格納するディスク装置と、を用いるデータベースシステムにより実施されるバッチ処理方法であって、
前記バッチ実行装置のバッチ処理部が、
バッチ処理の実行を要求されると、そのバッチ処理を実行し、そのバッチ処理から指定されるリクエストの実行結果が必要になると、実行中のバッチ処理とそのリクエスト内容とを指定して前記リクエスト実行装置にリクエストの実行を要求し、
前記リクエスト実行装置のリクエスト制御部が、
リクエストの実行が要求されると、前記バッチ実行装置からの中断要求の通知の有無により、そのリクエストに対応するバッチ処理が中断前の状態か、中断後の復帰状態かを判定し、
バッチ処理が前記中断前の状態と判定されるときには、実行要求されたリクエスト内容を実行し、その実行に伴うデータアクセスを前記ディスク装置に対して行い、
そのデータアクセスがデータの読み込み処理であるときには、読み込み結果のデータ内容を返却データとして、前記実行要求されたリクエスト内容に対応づけて記憶手段内に履歴管理データとして格納し、その返却データを実行要求元である前記バッチ実行装置に返却し、
そのデータアクセスがデータの書き込み処理であるときには、前記実行要求されたリクエスト内容を前記記憶手段内に前記履歴管理データとして格納し、
バッチ処理が前記中断後の復帰状態と判定されるときには、前記実行要求されたリクエスト内容が前記記憶手段内の前記履歴管理データに存在するか否かを検索し、
前記履歴管理データの検索処理で前記実行要求されたリクエスト内容を発見できたときには、実行要求されたリクエストの実行を省略するとともに、前記履歴管理データにおいて前記実行要求されたリクエスト内容に対応する前記返却データを実行要求元である前記バッチ実行装置に返却し、
前記履歴管理データの検索処理で前記実行要求されたリクエスト内容を発見できなかったときには、前記実行要求されたリクエスト内容を実行し、その実行に伴うデータアクセスを前記ディスク装置に対して行うことを特徴とする。
その他の手段は、後記する。
本発明によれば、データベース管理システムにおいて、バッチ処理の中断が発生しても、バッチ処理を効率的に実行することが可能となった。
まず、本実施形態の概要について、説明する。
図1は、バッチ処理の実行の中断への対処法を示す説明図である。バッチ処理プログラムは、4つのリクエスト(ID=R1〜R4)を順に実行する旨が記載されている。
まず、図1(a)は、中断がない場合を示す。1日目だけで、4つのリクエストが全て実行されるので、一番効率がよい。
次に、図1(b)は、中断があり、最初からやり直す比較例を示す。1日目では、2つめのリクエストの処理を終えた時点で、中断が発生してしまう。そして、2日目では、最初のリクエスト(ID=R1)からやり直すことにより、4つのリクエストが全て実行される。この図1(b)の方式では、1日目に実行した2つのリクエストは、2日目にも重複して実行してしまうため、効率が悪い。
一方、図1(c)は、中断があり、途中から復帰する本実施形態を示す。1日目では、図1(b)と同様に、2つめのリクエストの処理を終えた時点で、中断が発生してしまう。しかし、2日目では、既に終えた2つのリクエスト(ID=R1,R2)は、その実行結果を読み取ることで、リクエストの実行をスキップする。そして、まだ実行していない2つのリクエスト(ID=R3,R4)を実行することにより、バッチ処理プログラムの処理を完了する。
このように、途中から復帰する図1(c)の方式は、最初からやり直す図1(b)の方式に比べ、同じリクエストを2回重複して実行することがないため、高速で処理できるなど、処理効率が高い方式である。
なお、「通常実行」とは、リクエストを実行するとともに、その実行結果を記憶手段に格納する処理を指す。
また、「簡易実行」とは、「通常実行」により格納された実行結果を記憶手段から読み取ってリクエストの要求元へと返却することで、リクエストの実行を代替する(スキップする)処理を指す。
復帰状態「復帰無」とは、「簡易実行」を伴わず、「通常実行」から開始する状態を指す。
復帰状態「復帰有」とは、「簡易実行」を行ってから、「通常実行」を行う状態を指す。
図2(a)は、データベースシステムを示す構成図である。データベースシステムは、APクライアント1と、APサーバ2(バッチ実行装置)と、DBサーバ3(リクエスト実行装置)とが、ネットワーク9で接続されて構成される。DBサーバ3には、ディスク装置8が接続されている。なお、DBは、データベース(DataBase)の略であり、APは、アプリケーション(Application)の略である。
APクライアント1は、バッチ処理プログラムの実行を、APサーバ2に依頼する装置である。バッチ処理プログラム内には、リクエストの処理を必要とするバッチ処理も含まれている。
APサーバ2は、APクライアント1からの依頼を受け、バッチ処理プログラムを解釈および実行する装置である。バッチ処理プログラムからリクエストの処理が必要な場合、そのリクエストの処理をDBサーバ3に要求する。よって、APサーバ2は、DBサーバ3にとっては、DBクライアントに該当する。
DBサーバ3は、APサーバ2からのリクエストの処理要求を受け、リクエストを解釈および実行する装置である。リクエストの実行によりデータベースのデータへのディスクアクセスが必要になるときには、ディスク装置8に対して、そのディスクアクセスを実行する。
このように、APクライアント1からは、APサーバ2とは直接やりとりをするフロントエンドであるが、DBサーバ3は直接は見えないバックエンドである。
図2(b)は、APサーバ2の構成図である。
APサーバ2は、CPU21と、主記憶部22と、を備えるコンピュータである。
主記憶部22は、バッチ処理部23と、データベースアクセス部24と、を有する。
バッチ処理部23は、データベースアクセス部24に対してリクエストを問い合わせる。
データベースアクセス部24は、バッチ処理部23から受けたリクエストについて、ネットワーク9を経由してDBサーバ3に問い合わせる。
図3は、DBサーバ3およびディスク装置8を示す構成図である。
ディスク装置8には、データベース記憶領域81が格納される。データベース記憶領域81には、データベースが扱う論理構造データの一例としての表データ82が格納される。なお、本実施形態において、表データ82という論理構造データはあくまで一例であり、ツリー構造などの他の論理構造データを用いてもよい。
DBサーバ3は、CPU31と、主記憶部32と、を備えるコンピュータである。主記憶部32は、データベース管理部33と、バッチ処理管理テーブル42bと、SQL履歴管理テーブル43bと、返却データ記憶領域44bと、を有する。以下、主記憶部32が格納する各データの詳細について、図4を参照して説明する。
さらに、DBサーバ3のデータベース管理部33は、前記した各データを処理するために、SQL制御部34(リクエスト制御部)と表データ管理部41aとバッチ処理管理部42aとSQL履歴管理部43aと返却データ管理部44aを備える。これらの各処理部の詳細については、後で説明する。
図4は、DBサーバ3内の各データ構造を示す構成図である。
バッチ処理管理テーブル42bは、バッチ処理プログラムを一意に特定する「バッチID」と、バッチ処理プログラムの名称である「バッチ名」と、次にバッチ処理プログラムを実行するときの「復帰状態」と、を対応づけて格納する。
「復帰状態」が「復帰無」の場合は、図1(c)の1日目のように、前回のバッチ処理プログラムの実行履歴がないため、次は簡易実行を行わずに、通常実行を行う。
「復帰状態」が「復帰有」の場合は、図1(c)の2日目のように、前回のバッチ処理プログラムの実行履歴があるため、次は簡易実行を行ってから、通常実行を行う。
SQL履歴管理テーブル43bは、「バッチID」と、「リクエストID」と、「リクエスト内容」と、「リクエストの返却データへのポインタ」と、を対応づけて格納する。
「バッチID」は、バッチ処理プログラムを一意に特定するIDであり、バッチ処理管理テーブル42bの「バッチID」と対応する。
「リクエストID」は、バッチ処理プログラムから指定されるリクエストを特定するIDである。
「リクエスト内容」は、「リクエストID」で特定されるリクエストの内容を示す。なお、図4ではSQLの文法に従って表記されるリクエストを格納しているが、他の記述言語の文法や、バッチ処理プログラムから指定されるSQLの文法を構文解析した中間言語の文法に従って、リクエストを格納してもよい。中間言語の文法を用いることにより、実質的に同じ処理内容が、複数の記述言語で表記されているときに、同じリクエスト内容として統一的に管理することができ、そのリクエスト内容の実行履歴を効率的に利用することができる。
「リクエストの返却データへのポインタ」は、「リクエスト内容」の実行結果を示すデータの返却データ記憶領域44b内の格納先を指し示すポインタである。「Select」などの読み込みリクエストのときには、リクエストに応じて読み込んだ内容のデータが、指し示される。「Update,Insert」などの書き込みリクエストのときには、読み込んだ内容のデータがないため、リクエストは実行されるものの、実行結果を示すポインタは省略される。
返却データ記憶領域44bは、SQL履歴管理テーブル43bの「リクエストの返却データへのポインタ」の参照先となるデータを格納する。この格納するデータは、中断前の通常実行において書き込まれ、中断後の簡易実行において読み込まれる。そのため、中断時に電源がオフになることが一般的であるため、返却データ記憶領域44bを構成する記憶手段は、不揮発性のメモリやハードディスクとして構成されることが、望ましい。
図3に戻って、DBサーバ3のデータベース管理部33は、SQL制御部34(リクエスト制御部)と表データ管理部41aとバッチ処理管理部42aとSQL履歴管理部43aと返却データ管理部44aを備える。
SQL制御部34は、バッチ処理部23から送られたリクエストを構文解析し、リクエストを実行する。そのため、SQL制御部34は、他の各処理部(バッチ処理管理部42a、SQL履歴管理部43a、返却データ管理部44a)を制御する。
そして、SQL制御部34は、リクエストの構文解析の結果から「リクエスト内容」を生成し、リクエストの実行結果から「リクエストの返却データ」およびそのポインタを生成し、それぞれSQL履歴管理テーブル43bおよび返却データ記憶領域44bに格納する。
さらに、SQL制御部34は、「リクエストの返却データ」を、リクエストの要求元であるバッチ処理部23へと返却する。
表データ管理部41aは、表データ82に対するアクセス(読み込み、および、書き込み)を実行する。
バッチ処理管理部42aは、バッチ処理管理テーブル42bに対するアクセス(読み込み、および、書き込み)を実行する。
SQL履歴管理部43aは、SQL履歴管理テーブル43bに対するアクセス(読み込み、および、書き込み)を実行する。SQL履歴管理テーブル43bには、バッチ処理部23から要求されたリクエストに関するデータが記憶される。
返却データ管理部44aは、返却データ記憶領域44bに対するアクセス(読み込み、および、書き込み)を実行する。返却データ記憶領域44bには、リクエストの実行結果を示す返却データが記憶される。
図5は、「復帰状態」が「復帰無」の場合における、バッチ処理プログラムの実行処理を示すフローチャートである。本フローチャートの処理は、図1(c)の1日目のように、前回のバッチ処理プログラムの実行履歴がないため、簡易実行を行わずに、通常実行を行う。
S11において、APクライアント1は、実行するバッチ処理プログラムのバッチ名と、バッチ処理の復帰状態「復帰無」と、を指定するバッチ処理の実行要求を、APサーバ2のバッチ処理部23に送信する。
S12において、バッチ処理部23は、バッチ処理の実行要求を受け、データベースアクセス部24を用いて、DBサーバ3のデータベース管理部33に接続する。なお、接続要求には、バッチ処理の実行要求で指定されているバッチ名と、復帰状態「復帰無」とを含む。
S13において、バッチ処理管理部42aは、接続要求の復帰状態が「復帰無」のときには、バッチ処理管理テーブル42bに新規のレコードを1つ追加する。そして、追加するレコードの「バッチ名」には、接続要求で指定されたバッチ名を代入する。追加するレコードの「バッチID」には、登録済みの最大のバッチIDに1を加えたものを代入する。追加するレコードの「復帰状態」には、接続要求で指定された復帰状態「復帰無」を代入する。
S14において、バッチ処理部23は、S12の接続要求に対する処理が完了すると、バッチ処理プログラムを実行し、バッチ処理中にリクエストの実行を要するときには、SQL制御部34に対して、リクエストの実行を要求する。
S15において、SQL制御部34は、要求を受け付けたリクエストを通常実行する(詳細は図7)。
S16において、APクライアント1は、以前S11で実行要求した「バッチ名」を指定して、バッチ処理の中断要求を送信する。
S17において、バッチ処理部23は、バッチ処理の中断要求を受け、SQL制御部34に対して、そのバッチ処理内のリクエストの中断を要求する。
S18において、SQL制御部34は、リクエストの中断要求に従い、リクエストの実行を中断する。具体的には、バッチ処理管理部42aに対して、バッチ処理管理テーブル42bの内容の書き換えを指示する。バッチ処理管理部42aは、中断要求の「バッチ名」に対応するレコードをバッチ処理管理テーブル42bから検索し、検索されたレコードの「復帰状態」を「復帰有」に変更する。
図6は、「復帰状態」が「復帰有」の場合における、バッチ処理プログラムの実行処理を示すフローチャートである。本フローチャートの処理は、図1(c)の2日目のように、前回のバッチ処理プログラムの実行履歴があるため、簡易実行を行ってから、通常実行を行う。
S21において、APクライアント1は、中断したバッチ処理の「バッチ名」と、復帰状態「復帰有」とを指定して、バッチ処理の再開要求を、APサーバ2のバッチ処理部23に送信する。
S22において、バッチ処理部23は、APクライアント1から、中断したバッチ処理の再開要求を受け、データベースアクセス部24を用いて、DBサーバ3のデータベース管理部33に接続する。なお、接続要求には、バッチ処理の再開要求で指定されているバッチ名と、復帰状態「復帰有」とを含む。
S23において、バッチ処理管理部42aは、接続要求の復帰状態が「復帰有」のときには、バッチ処理管理部42aを用いて、バッチ処理管理テーブル42bから既存のレコードを1つ検索する。このときの検索キーは、接続要求で指定されたバッチ名である。そして、検索されたレコードに対して、その「復帰状態」を「復帰有」に書き換える。
S24において、バッチ処理部23は、S23の接続要求に対する処理が完了すると、バッチ処理プログラムを実行し、バッチ処理中にリクエストの実行を要するときには、SQL制御部34に対して、リクエストの実行を要求する。
S25において、SQL制御部34は、要求を受け付けたリクエストを簡易実行する(詳細は図8)。
S26において、SQL制御部34は、S25の簡易実行の続きとして、通常実行する(詳細は図7)。なお、簡易実行(S25)と、通常実行(S26)とは、APクライアント1に確認せずに、連続して実行してもよいし、APクライアント1からの通常実行の指示を待ってから、通常実行(S26)を実行してもよい。
図7は、S15およびS26からそれぞれ呼び出される、通常実行における詳細処理を示すフローチャートである。
S101において、SQL制御部34は、バッチ処理部23から受け付けたリクエストのSQL記述を構文解析し、「リクエスト内容」を取得する。
S102において、バッチ処理管理部42aは、バッチ処理管理テーブル42bからリクエストの「バッチ名」を検索キーとしてレコードを検索し、検索されたレコードの「バッチID」を取得する。そして、バッチ処理管理部42aは、S101で取得した「リクエスト内容」、および、S102で取得した「バッチID」を、SQL履歴管理部43aに通知する。
S103において、SQL履歴管理部43aは、SQL履歴管理テーブル43bのレコードを新しく1つ生成し、生成したレコードの「リクエスト内容」および「バッチID」に対して、S102で通知された「リクエスト内容」および「バッチID」を登録する。
S104において、SQL制御部34は、S103の登録完了の通知を受け、バッチ処理部23から受け付けたリクエストを実行する。
S105において、表データ管理部41aは、リクエストの実行に伴うSQL制御部34からの指示によるディスクアクセスを、表データ82に対して実行する。
S106において、返却データ管理部44aは、表データ管理部41aからディスクアクセスの結果の通知を受け、その内容を返却データ記憶領域44bに書き込むとともに、SQL履歴管理部43aを介して、書き込んだデータへのポインタをSQL履歴管理テーブル43bの「リクエストの返却データへのポインタ」に登録する。なお、ポインタを登録するSQL履歴管理テーブル43bのレコードは、S103で新しく生成されたレコードである。
S107において、返却データ管理部44aは、リクエストの実行結果である書き込んだディスクアクセスのデータを、SQL制御部34を介してバッチ処理部23に返却する。
図8は、S25から呼び出される、簡易実行における詳細処理を示すフローチャートである。
S201において、SQL制御部34は、バッチ処理部23から受け付けたリクエストのSQL記述を構文解析し、「リクエスト内容」を取得する。
S202において、バッチ処理管理部42aは、受け付けたリクエストの「バッチ名」を検索キーとして、バッチ処理管理テーブル42bから該当するレコードを検索し、発見したレコードの「バッチID」を取得する。そして、S201で取得した「リクエスト内容」、および、S202で取得した「バッチID」を、SQL履歴管理部43aに通知する。
S203において、SQL履歴管理部43aは、通知された「バッチID」を検索キーとして、SQL履歴管理テーブル43bから該当するレコードを検索し、該当する1つ以上のレコードを取得する。
S204において、SQL履歴管理部43aは、S201で構文解析した「リクエスト内容」と一致する「リクエスト内容」をもつレコードを、S203で取得した1つ以上のレコードから特定する。
S205において、SQL履歴管理部43aは、S204で「リクエスト内容」が一致するレコードが存在するか否かを判定する。S205を満たすときにはS206へ、S205を満たさないときにはS210へ、それぞれ移行する。
S206において、SQL履歴管理部43aは、S204で特定したレコードの「リクエストの返却データへのポインタ」が存在するか否かを判定する。S206を満たすときにはS207へ、S206を満たさないときにはS208へ、それぞれ移行する。
S207において、返却データ管理部44aは、S206のポインタで示される返却データ記憶領域44b内の返却データを、主記憶部32内の結果返却領域にコピーする。
S208において、返却データ管理部44aは、主記憶部32内の結果返却領域のデータをクリア(返却データが無い状態に)する。
S209において、SQL制御部34は、リクエストを実行する代わりに、結果返却領域の情報をバッチ処理部23に返却する。そして、処理を終了する。
S210において、バッチ処理管理部42aは、バッチ処理管理テーブル42bの取得した「バッチID」に該当するレコードの「復帰状態」を「復帰無」に変更する。
S211において、SQL制御部34は、S104〜S107で説明したように、通常実行としてリクエストを実行し、実行結果をバッチ処理部23に返却する。そして、処理を終了する。
以上説明した本実施形態は、以下に示すとおりの変形実施が可能である。
例えば、APクライアント1がAPサーバ2に送信する各要求(S11,S16,S21など)について、その要求メッセージの内容をユーザに指定させるために、様々な入力方法を用いてもよい。例えば、GUI(Graphical User Interface)を用いて指定してもよいし、定義ファイルや環境変数などを用いて指定してもよい。
また、APクライアント1は、簡易実行が可能なリクエスト(実行履歴が存在するリクエスト)のうち、簡易実行を行わないリクエスト(つまり、通常実行を再度行うリクエスト)を明示的に指定してもよい。
例えば、APクライアント1は、バッチ処理を中断したにもかかわらず、バッチ処理の再開要求を行う代わりに、復帰状態「復帰無」とするバッチ処理の実行要求を行うことで、バッチ処理の中断前に実行した全部のリクエストを、再度通常実行する。
また、APクライアント1は、復帰状態「復帰有」とするバッチ処理の再開要求を行い、その再開要求の中で、通常実行を再度行うリクエストをリクエストIDなどにより明示的に指定することにより、DBサーバ3は、その指定されたリクエストを、実行履歴があるにもかかわらず、再度通常実行する。
さらに、キャッシュデータを活用して、データベースシステムの性能を向上してもよい。
図9は、図1とは別の変形実施のデータベースシステムを示す構成図である。図1では、DBサーバ3のデータベース管理部33にとって処理対象である表データ82は、DBサーバ3とは別装置であるディスク装置8内に格納することとした。図9では、表データ82をディスク装置8内に格納し、さらに、DBサーバ3内にもキャッシュデータとして表データ41bに格納する。
表データ41bと表データ82とは、トランザクションの終了時ごとに、データの同期処理(同一化処理)が実施される。そして、データベース管理部33(表データ管理部41a)は、同じ装置内に存在する表データ41bに対してデータアクセスを行うことにより、通信遅延時間を小さくすることができる。
よって、表データ82のデータ内容は、トランザクションの実行中には、トランザクション内のリクエストによる書き込み指示により、表データ41bよりも新しいデータ内容となる。一方、表データ41bのデータ内容は、現在実行中のトランザクションからみて、直前のトランザクションの終了時に同期化されたままの古いデータ内容となる。
つまり、表データ41bと表データ82とは、実行中のトランザクションにおけるデータアクセスにより、データ内容が一時的に不一致となる場合も起こりうる。そこで、データ内容が不一致であるときに中断が発生しても、両データの内容が不整合にならないように、以下に示す対策を行う。
対策を行うため、図9のデータベースシステムは、図1のデータベースシステムと比較すると、表データ41bに加え、更新ログ管理部45aと、更新ログ記憶領域45bとが、追加されている。
更新ログ管理部45aは、バッチ処理を中断する前に、更新ログ記憶領域45bに対して、表データ41bの更新内容を更新ログとして記録し続ける。
更新ログ管理部45aは、バッチ処理を中断した際に、表データ41bと表データ82との差分データとなる更新ログを、更新ログ記憶領域45bから取得する。この更新ログは、具体的には、バッチ処理を中断する直前のトランザクションの終了点から中断時点までの更新ログである。
更新ログ管理部45aは、取得した更新ログを、表データ41bにロールバック(書き戻し)することにより、表データ41bと表データ82とデータ内容を互いに整合させる。
一方、更新ログ管理部45aは、バッチ処理が中断するまでは、更新ログ記憶領域45bの更新ログを取得する必要はない。これにより、更新ログ記憶領域45bへのデータアクセスを必要時だけに絞り込み、性能劣化を抑制する。
以上説明した本実施形態によれば、バッチ処理の復帰実行において、実行済みのリクエスト処理(SQL処理)にかかる時間を削減できる。特に基幹データベースの情報を抽出し、情報データベースにデータマート(data mart)を作成するようなバッチ処理では、データベース管理システムにおいて負荷の高いリクエストを実行し、リクエストの処理時間が長くなる。そのため、実行済みのSQL処理をスキップする効果が高い。
本発明の一実施形態に関するバッチ処理の実行の中断への対処法を示す説明図である。 本発明の一実施形態に関するデータベースシステムを示す構成図である。 本発明の一実施形態に関するDBサーバ3およびディスク装置8を示す構成図である。 本発明の一実施形態に関するDBサーバ3内の各データ構造を示す構成図である。 本発明の一実施形態に関する「復帰状態」が「復帰無」の場合における、バッチ処理プログラムの実行処理を示すフローチャートである。 本発明の一実施形態に関する「復帰状態」が「復帰有」の場合における、バッチ処理プログラムの実行処理を示すフローチャートである。 本発明の一実施形態に関する通常実行における詳細処理を示すフローチャートである。 本発明の一実施形態に関する簡易実行における詳細処理を示すフローチャートである。 本発明の一実施形態に関する別の変形実施のデータベースシステムを示す構成図である。
符号の説明
1 APクライアント
2 APサーバ
3 DBサーバ
8 ディスク装置
9 ネットワーク
21 CPU
22 主記憶部
23 バッチ処理部
24 データベースアクセス部
31 CPU
32 主記憶部
33 データベース管理部
34 SQL制御部
41a 表データ管理部
41b 表データ
42a バッチ処理管理部
42b バッチ処理管理テーブル
43a SQL履歴管理部
43b SQL履歴管理テーブル
44a 返却データ管理部
44b 返却データ記憶領域
45a 更新ログ管理部
45b 更新ログ記憶領域
81 データベース記憶領域
82 表データ

Claims (7)

  1. バッチ処理を実行するバッチ実行装置と、バッチ処理から呼び出されるリクエストを実行するリクエスト実行装置と、リクエストの実行に伴うデータアクセスの対象となるデータを格納するディスク装置と、を用いるデータベースシステムにより実施されるバッチ処理方法であって、
    前記バッチ実行装置のバッチ処理部は、
    バッチ処理の実行を要求されると、そのバッチ処理を実行し、そのバッチ処理から指定されるリクエストの実行結果が必要になると、実行中のバッチ処理とそのリクエスト内容とを指定して前記リクエスト実行装置にリクエストの実行を要求し、
    前記リクエスト実行装置のリクエスト制御部は、
    リクエストの実行が要求されると、前記バッチ実行装置からの中断要求の通知の有無により、そのリクエストに対応するバッチ処理が中断前の状態か、中断後の復帰状態かを判定し、
    バッチ処理が前記中断前の状態と判定されるときには、実行要求されたリクエスト内容を実行し、その実行に伴うデータアクセスを前記ディスク装置に対して行い、
    そのデータアクセスがデータの読み込み処理であるときには、読み込み結果のデータ内容を返却データとして、前記実行要求されたリクエスト内容に対応づけて記憶手段内に履歴管理データとして格納し、その返却データを実行要求元である前記バッチ実行装置に返却し、
    そのデータアクセスがデータの書き込み処理であるときには、前記実行要求されたリクエスト内容を前記記憶手段内に前記履歴管理データとして格納し、
    バッチ処理が前記中断後の復帰状態と判定されるときには、前記実行要求されたリクエスト内容が前記記憶手段内の前記履歴管理データに存在するか否かを検索し、
    前記履歴管理データの検索処理で前記実行要求されたリクエスト内容を発見できたときには、実行要求されたリクエストの実行を省略するとともに、前記履歴管理データにおいて前記実行要求されたリクエスト内容に対応する前記返却データを実行要求元である前記バッチ実行装置に返却し、
    前記履歴管理データの検索処理で前記実行要求されたリクエスト内容を発見できなかったときには、前記実行要求されたリクエスト内容を実行し、その実行に伴うデータアクセスを前記ディスク装置に対して行うことを特徴とする
    バッチ処理方法。
  2. 前記リクエスト実行装置は、さらに、
    前記ディスク装置が格納するデータアクセスの対象となるデータを、前記リクエスト実行装置内の前記記憶手段にもキャッシュデータとして格納するとともに、データベースへのトランザクションの終了時に、前記ディスク装置のデータと、前記リクエスト実行装置のキャッシュデータとを同期処理し、
    前記リクエスト実行装置のキャッシュデータの更新ログを前記記憶手段に記憶し続け、
    バッチ処理の中断要求を受信すると、バッチ処理を中断する直前のトランザクションの終了点から中断時点までの更新ログを前記記憶手段から読み取り、前記リクエスト実行装置のキャッシュデータにロールバックすることで、前記ディスク装置のデータと、前記リクエスト実行装置のキャッシュデータとを整合化することを特徴とする
    請求項1に記載のバッチ処理方法。
  3. 前記リクエスト実行装置の前記返却データを格納する前記記憶手段は、不揮発性の記憶媒体として構成されることを特徴とする
    請求項1または請求項2に記載のバッチ処理方法。
  4. 前記リクエスト実行装置の前記リクエスト制御部は、さらに、実行要求されたバッチ処理が前記中断後の復帰状態と判定され、かつ、そのバッチ処理の実行要求において、前記履歴管理データを利用しないリクエストが指定されているときには、その指定されているリクエストが前記履歴管理データに存在するか否かにかかわらず、前記実行要求されたリクエスト内容を実行し、その実行に伴うデータアクセスを前記ディスク装置に対して行うことを特徴とする
    請求項1ないし請求項3のいずれか1項に記載のバッチ処理方法。
  5. 請求項1ないし請求項4のいずれか1項に記載のバッチ処理方法を、前記データベースシステムの各コンピュータに実行させるための、バッチ制御プログラム。
  6. バッチ処理を実行するバッチ実行装置と、バッチ処理から呼び出されるリクエストを実行するリクエスト実行装置と、リクエストの実行に伴うデータアクセスの対象となるデータを格納するディスク装置と、を用いるデータベースシステムにおけるリクエスト実行装置であって、
    前記リクエスト実行装置のリクエスト制御部は、
    前記バッチ実行装置からリクエストの実行が要求されると、前記バッチ実行装置からの中断要求の通知の有無により、そのリクエストに対応するバッチ処理が中断前の状態か、中断後の復帰状態かを判定し、
    バッチ処理が前記中断前の状態と判定されるときには、実行要求されたリクエスト内容を実行し、その実行に伴うデータアクセスを前記ディスク装置に対して行い、
    そのデータアクセスがデータの読み込み処理であるときには、読み込み結果のデータ内容を返却データとして、前記実行要求されたリクエスト内容に対応づけて記憶手段内に履歴管理データとして格納し、その返却データを実行要求元である前記バッチ実行装置に返却し、
    そのデータアクセスがデータの書き込み処理であるときには、前記実行要求されたリクエスト内容を前記記憶手段内に前記履歴管理データとして格納し、
    バッチ処理が前記中断後の復帰状態と判定されるときには、前記実行要求されたリクエスト内容が前記記憶手段内の前記履歴管理データに存在するか否かを検索し、
    前記履歴管理データの検索処理で前記実行要求されたリクエスト内容を発見できたときには、実行要求されたリクエストの実行を省略するとともに、前記履歴管理データにおいて前記実行要求されたリクエスト内容に対応する前記返却データを実行要求元である前記バッチ実行装置に返却し、
    前記履歴管理データの検索処理で前記実行要求されたリクエスト内容を発見できなかったときには、前記実行要求されたリクエスト内容を実行し、その実行に伴うデータアクセスを前記ディスク装置に対して行うことを特徴とする
    リクエスト実行装置。
  7. 請求項6に記載のリクエスト実行装置と、前記バッチ実行装置と、前記ディスク装置と、を有することを特徴とするデータベースシステム。
JP2008165840A 2008-06-25 2008-06-25 バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステム Withdrawn JP2010009195A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008165840A JP2010009195A (ja) 2008-06-25 2008-06-25 バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008165840A JP2010009195A (ja) 2008-06-25 2008-06-25 バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステム

Publications (1)

Publication Number Publication Date
JP2010009195A true JP2010009195A (ja) 2010-01-14

Family

ID=41589641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008165840A Withdrawn JP2010009195A (ja) 2008-06-25 2008-06-25 バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステム

Country Status (1)

Country Link
JP (1) JP2010009195A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012164239A (ja) * 2011-02-09 2012-08-30 Mitsubishi Electric Corp 検索処理装置
CN109683863A (zh) * 2018-12-13 2019-04-26 国云科技股份有限公司 一种批量处理时防止拼写sql语句过长的方法
KR20220092343A (ko) * 2020-12-24 2022-07-01 쿠팡 주식회사 분산 메시징 시스템을 이용한 데이터 처리 시스템 및 그 정보 처리 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012164239A (ja) * 2011-02-09 2012-08-30 Mitsubishi Electric Corp 検索処理装置
CN109683863A (zh) * 2018-12-13 2019-04-26 国云科技股份有限公司 一种批量处理时防止拼写sql语句过长的方法
KR20220092343A (ko) * 2020-12-24 2022-07-01 쿠팡 주식회사 분산 메시징 시스템을 이용한 데이터 처리 시스템 및 그 정보 처리 방법
JP2022101525A (ja) * 2020-12-24 2022-07-06 クーパン コーポレイション 分散メッセージングシステムを利用したデータ処理システムおよびその情報処理方法
JP7305253B2 (ja) 2020-12-24 2023-07-10 クーパン コーポレイション 分散メッセージングシステムを利用したデータ処理システムおよびその情報処理方法

Similar Documents

Publication Publication Date Title
JP4237354B2 (ja) トランザクション処理方法及びトランザクション処理システム
JP4839091B2 (ja) データベース回復方法及び計算機システム
US20150213100A1 (en) Data synchronization method and system
CN109542682B (zh) 一种数据备份方法、装置、设备和存储介质
JP4916892B2 (ja) トランザクション処理のためのログ情報管理システムおよび方法
US10007548B2 (en) Transaction system
JP2010134522A (ja) データベース管理方法、データベース管理プログラム、および、データベース管理装置
JP2007272648A (ja) データベースシステム運用方法,データベースシステム,データベース装置及びバックアッププログラム
JP2010009195A (ja) バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステム
JP2008033527A (ja) ストレージ装置、ディスク装置及びデータ復元方法
KR20140047448A (ko) 트랜잭션 재시작 가능한 클라이언트 장치와 데이터베이스 서버 및 방법
JP4998010B2 (ja) データベースシステム管理、データベースシステム、プログラム及び処理装置
US8775371B2 (en) Synchronizing an auxiliary data system with a primary data system
JP4352224B2 (ja) 二重化系におけるデータ救済方法およびシステム
JP6292796B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2012185686A (ja) ファイルシステム
JP5222171B2 (ja) データベース管理方法およびデータベース管理システム
JP2017068342A (ja) 制御プログラム、制御方法、及び、情報処理装置
JP5035237B2 (ja) サーバ管理プログラム、サーバ管理装置およびサーバ管理方法
JP2008310517A (ja) データ同一化方法、データ同一化プログラム、および、現用系装置
JP2006259806A (ja) プーリング方法、システム及びプログラム
JP2005063139A (ja) コンピュータシステムおよびプログラム
JP2000163294A (ja) データベース管理方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体
JP2003345747A (ja) 処理実行管理方法、処理実行管理装置、プログラム、及びプログラムを記録した記録媒体
JP2004318763A (ja) ジョブネットワーク管理システムおよびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100217

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20110704