JP2007317100A - データベースの更新方法及び情報処理装置 - Google Patents

データベースの更新方法及び情報処理装置 Download PDF

Info

Publication number
JP2007317100A
JP2007317100A JP2006148400A JP2006148400A JP2007317100A JP 2007317100 A JP2007317100 A JP 2007317100A JP 2006148400 A JP2006148400 A JP 2006148400A JP 2006148400 A JP2006148400 A JP 2006148400A JP 2007317100 A JP2007317100 A JP 2007317100A
Authority
JP
Japan
Prior art keywords
transaction
record
interrupt
database
plan
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.)
Pending
Application number
JP2006148400A
Other languages
English (en)
Inventor
Takashi Kirihara
孝 桐原
Koji Kimura
耕治 木村
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 JP2006148400A priority Critical patent/JP2007317100A/ja
Publication of JP2007317100A publication Critical patent/JP2007317100A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】割り込みによりトランザクションを中止する場合にロールバックすることなくレコードの完全性を保つことができるようにする。
【解決手段】ロールバック機能を有するデータベースに対する複数のレコードの更新処理を含むトランザクションの実行中に、ユーザインタフェースに対する操作に起因して発生するハードウェア割り込みや、ユーザの設定に基づくタイマ割り込み、外部装置からのトランザクションを中止させる指示に応じて発生するソフトウェア割り込みなどの割り込みを受け付けた場合には、ロールバックせずに、更新中のレコードについての更新処理を完了した後、後続するレコードについての更新処理の実行を中止する。
【選択図】図3

Description

本発明は、データベースの更新方法及び情報処理装置に関する。
データベース管理システムでは、トランザクションの実行を途中で中止する場合、そのトランザクションはロールバックされる。ロールバックとは、トランザクション中に行われたデータベースに対する更新処理(挿入、更新、削除等)をすべて取り消し、データベースをトランザクション開始時点の状態に戻すことである。トランザクションをロールバックすることにより、レコード間の整合性が保たれる。
トランザクションの実行中に割り込みが発生すると、実行中の処理は強制終了されることになるが、このような場合にもレコード間の整合性を保つ仕組みが提案されている。例えば、特許文献1に記載のシステムでは、プロセスが強制終了されたかどうかを判断し、データベースの修復を行うことで、データベースにおけるレコード間の整合性を保つようにしている。
一方、トランザクションのロールバックには時間がかかるので、この時間を短縮する技術も提案されている。例えば、特許文献2に記載のシステムでは、トランザクション中にチェックポイントを設定し、トランザクションの実行を途中で中止する場合には、直前に設定されたチェックポイント以降の更新処理を取り消し、データベースを直前にチェックポイントを設定した時点の状態に戻すことで、トランザクションをロールバックする範囲を局所化し、ロールバックにかかる時間を短縮している。
特開2000−76111号公報 特開平9−91183号公報
ところで、ネットワーク環境の高速化やデータベースシステムの適用範囲拡大に伴い、レコードをダウンロードして利用する形態のシステムが増加している。このようなシステムにおいて、通信状況によっては、ダウンロードが途中で中断してしまうこともある。ダウンロードが中断されると、タイムアウトによる割り込みが発生し、トランザクションはロールバックされる。
しかし、ダウンロードするレコードの内容によっては、必ずしも全てのレコードをダウンロードしなくても利用できるものもある。例えば、渋滞情報である。渋滞情報はエリア内すべての情報がダウンロードできない場合でも、まったく表示しないよりは、一部でも受け取った情報を表示した方がユーザの使い勝手は良い。他の例としては、音楽データである。音楽データは全てをダウンロードできない場合でも、ダウンロードできた部分については再生することが望ましい。このように、途中までダウンロードしたレコードを利用しながら、その間に残りのレコードをダウンロードする仕組みにすると、ユーザにとって便利であり、望ましいシステムとなる。
ところが、ダウンロードが途中で中断されたことによりタイムアウト等による割り込みが発生し、レコードの更新処理が途中で中断された場合に、トランザクションのロールバックを行わないと、更新処理中であったレコードの完全性を保つことはできない。
本発明は、このような背景を鑑みてなされたものであり、割り込みによりトランザクションを中止する場合にロールバックすることなくレコードの完全性を保つことのできるデータベースの更新方法及び情報処理装置を提供することを目的とする。
上記課題を解決するための本発明の主たる発明は、ロールバック機能を有するデータベースの更新方法であって、前記データベースに対する複数のレコードの更新処理を含むトランザクションの実行中に前記トランザクションを中止させる割り込みを受け付けた場合、更新中の前記レコードについての前記更新処理を完了した後、後続する前記レコードについての前記更新処理の実行を中止することとする。
本発明によれば、割り込みによりトランザクションを中止する場合にロールバックすることなくレコードの完全性を保つことができる。
==システム構成==
図1は、本実施形態に係る情報処理システムの全体構成を示す図である。同図に示すように、本実施形態の情報処理システムは、ユーザ端末10及びデータベースサーバ20を含んで構成されている。ユーザ端末10とデータベースサーバ20とは、通信ネットワーク11を介して通信可能に接続されている。通信ネットワーク11は、例えば、イーサネット(登録商標)や公衆電話回線により構築されるインターネットやLAN(Local Area Network)である。
データベースサーバ20は、データベース管理システム(DBMS;Database Management System)の機能を有するコンピュータである。データベースサーバ20は、ユーザ端末10(外部装置)から受信するデータベースへの問い合わせコマンド(クエリ)に応じて、データベースに登録されているレコードに対する操作処理を行う。クエリは、例えば、SQL(Structured Query Language)により記述される。レコードに対する操作処理には、レコードの検索処理と更新処理とが含まれる。レコードの検索処理は、選択(SELECT)コマンドに応じて行われる。レコードの更新処理には、レコードの挿入処理、更新処理、及び削除処理が含まれ、それぞれ挿入(INSERT)コマンド、更新(UPDATE)コマンド、及び削除(DELETE)コマンドに応じて行われる。
データベースサーバ20にはディスク装置30が接続されている。ディスク装置30は、例えば、ハードディスクドライブやフラッシュディスクなどの、データを記憶する記憶装置である。ディスク装置30とデータベースサーバ20とは、例えば、SCSIやSAN(Storage Area Network)、LANなどの通信路により接続される。なお、データベースサーバ20がディスク装置30を内蔵する構成としてもよい。
==ハードウェア==
図2は、データベースサーバ20のハードウェア構成を示す図である。同図に示すように、データベースサーバ20は、CPU201、メモリ202、通信インタフェース203、ディスクインタフェース204を備えている。CPU201はデータベースサーバ20全体の動作を司り、メモリ202に記憶されているプログラム21を実行することにより、データベース管理システムとしての機能を実現する。通信インタフェース203は、通信ネットワーク11に接続するためのインタフェースである。通信インタフェース203は、例えば、イーサネット(登録商標)に接続するためのアダプタや、公衆電話回線に接続するためのモデムなどである。ディスクインタフェース204は、ディスク装置30に接続するためのインタフェースである。ディスクインタフェース204は、例えば、SCSI接続のためのアダプタや、SANに接続するためのHBA(Host Bus Adaptor)、TCP/IPによりディスク装置30に接続するためのイーサネット(登録商標)アダプタなどである。
==ソフトウェア==
図3は、データベースサーバ20の機能ブロック図である。同図に示すように、データベースサーバ20は、クエリ受信部211、クエリ解析部212、割り込み検知部213、プラン実行部214、データ入出力部215、応答送信部216、プラン情報記憶部41、トランザクション情報記憶部42を備えている。また、図3に示すように、ディスク装置30には、データベースのテーブルが格納されるテーブル領域31と、テーブルに設定されるインデックスが格納されるインデックス領域32とが設定されている。
テーブル領域31及びインデックス領域32の構成例を図4に示す。テーブル領域31には、テーブル310単位でレコードが格納される。テーブル310に登録される各レコードには、データ長欄311、ステータス欄312、トランザクションID欄313、及びデータ欄314が含まれる。
データ欄314には、カラムから構成されるデータ(以下、レコードデータという。)が格納される。図4の例では、一例として、「date」「price」「remarks」のカラムを含むレコードデータがテーブル310に格納されている。レコードデータのデータ長がデータ長欄311に設定される。
ステータス欄312には、レコードの状態を示す情報(以下、レコードステータスという。)が設定される。本実施形態では、レコードステータスには、レコードの読み出しが可能な「完了」、レコードが削除されたことを示す「削除」、未確定のトランザクション中に挿入又は更新されたレコードを示す「更新処理中」、及び未確定のトランザクション中に削除されたレコードを示す「削除処理中」の3種類があるものとする。
トランザクションID欄313には、レコードステータスが「更新処理中」又は「削除処理中」である場合に、レコードの挿入、更新、又は削除を行ったトランザクションを示す識別情報(以下、トランザクションIDという。)が設定される。
インデックス領域32には、テーブル310の1つ以上のカラムについて設定されるインデックス320が格納される。インデックス320の構成としては、一般的なデータベース管理システムに用いられるものを採用することができる。
クエリ受信部211は、ユーザ端末10から送信されるクエリを受信する。本実施形態では、クエリに応じたデータベースの操作処理は非同期に行われるものとする。クエリ受信部211は、データベースの操作処理中に、トランザクションをキャンセル(中止)するように指示するコマンド(以下、キャンセル要求という。)をユーザ端末10から受信することもある。クエリ受信部211は、キャンセル要求を受信した場合、後述の割り込み検知部213にその旨を通知する。本実施形態では、クエリ受信部211は、シグナル(割り込み)を発生させることにより、キャンセル要求を受信した旨の通知を行う。
クエリ解析部212は、ユーザ端末10から受信したクエリを解析し、データベースサーバ20が行うべき操作処理を示す情報(以下、プラン情報という。)を作成し、作成したプラン情報をプラン情報記憶部41に登録する。すなわち、クエリ解析部212は、一般的なデータベース管理システムでいう、構文解析処理(パーサ)、問い合わせの解析処理(アナライザ)、最適化処理(オプティマイザ)の機能を提供することになる。
図5にプラン情報記憶部41に登録されるプラン情報の構成例を示す。同図に示すように、プラン情報には、トランザクションID欄411、プランID欄412、プランタイプ欄413、プランデータ欄414、及びサブプラン欄415が含まれている。
トランザクションID欄411には、トランザクションのトランザクションIDが設定される。プランID欄412には、プラン情報の識別情報(以下、プランIDという。)が設定される。
プランタイプ欄413には、プラン情報が示す処理の種類を示す情報(以下、プランタイプという。)が設定される。本実施形態では、プランタイプは、「挿入」「更新」「削除」「選択」「コミット」「ロールバック」の6種類のいずれかであるものとする。上記の6種類のプランタイプはそれぞれ、クエリに含まれるレコードの挿入コマンド(INSERT)、更新コマンド(UPDATE)、削除コマンド(DELETE)、及び選択コマンド(SELECT)、並びにトランザクションのコミット(COMMIT)及びロールバック(ROLLBACK)に対応する。なお、ロールバックはアボート(ABORT)とも呼ばれる。
プランデータ欄414には、レコードの操作処理に必要なデータ(以下、プランデータという。)が設定される。図5のプランIDが「1」のプラン情報の例では、カラム「price」及びカラム「remarks」に、「5」及び「発売日未定」を設定したレコードを、テーブル「T1」に登録するためのプランデータの一例が示されている。
サブプラン欄415には、プラン情報による処理に伴って行われる他の処理を示す情報(以下、サブプラン情報という。)が設定される。サブプラン情報は、例えば、レコードの更新時に、更新対象となるレコードを選択する処理を示す情報である。図5のプランIDが「2」であるプラン情報の例では、「date」カラムの値が「2006年5月1日」よりも大きいレコードを更新対象のレコードとして選択するために必要なデータが格納されている。サブプラン欄415に設定されるサブプラン情報は、トランザクションIDを除いてプラン情報と同様の構成である。すなわち、図5に示すように、サブプラン情報には、サブプランID欄4151、プランタイプ欄4152、プランデータ欄4153、及びサブプラン欄4154が含まれている。サブプランID欄4151には、サブプランの識別情報が設定され、サブプラン情報のサブプラン欄4154には、サブプラン情報による処理に伴って行われる他の処理を示すサブプラン情報が設定される。すなわち、プラン情報記憶部41には、ネストしたプラン情報が登録可能となっている。
トランザクション情報記憶部42は、トランザクションに関する情報(以下、トランザクション情報という。)を記憶する。図6にトランザクション情報記憶部42に記憶されるトランザクション情報の構成例を示す。同図に示すように、トランザクション情報は、トランザクションID欄421、キャンセル種別欄422、及び継続フラグ欄423が含まれている。
トランザクションID欄421には、トランザクションIDが設定される。トランザクションIDは、クエリ解析部212により割り当てられる。クエリ解析部212は、トランザクションの開始を指示するコマンド(BEGINコマンド)がクエリに含まれていた場合や、明示的にトランザクションが開始されていない間に各種のコマンドを含むクエリを受信した場合に、トランザクションIDを生成するものとする。
キャンセル種別欄422には、トランザクションを中止するかどうかを示す値(以下、キャンセル種別という。)が設定される。本実施形態では、キャンセル種別欄422には、「0」〜「5」が設定される。キャンセル種別が「0」の場合、トランザクションが正常に実行されていることを示す。キャンセル種別が「1」である場合、ハードウェア割り込みが発生したことを示す。キャンセル種別が「2」である場合は、タイマ割り込みが発生したことを示す。キャンセル種別が「3」である場合には、ユーザからキャンセル要求を受け付けたことを示す。また、キャンセル種別が「4」であれば、ユーザからコミットコマンドを受け付けたことを示し、キャンセル種別が「5」であればユーザからロールバックコマンドを受け付けたことを示す。キャンセル種別欄422に「0」以外のキャンセル種別が設定されている場合、トランザクションに係る処理は中止される。
継続フラグ欄423には、トランザクションを継続するかどうかを示すフラグ値(以下、継続フラグという。)が設定される。後述するように、キャンセル種別欄422に「0」以外のキャンセル種別が設定されていても、継続フラグ欄423に「1」が設定されている場合には、トランザクションは継続される。
割り込み検知部213は、データベースサーバ20において発生する割り込みを検知する。割り込みには、ハードウェア割り込みとソフトウェア割り込みとがある。ハードウェア割り込みは、例えば、データベースサーバ20の利用者がボタンやキーボードなどのユーザインタフェースを操作したことに起因して発生する。ソフトウェア割り込みには、上述したようにユーザ端末10からキャンセル要求を受信した場合に発生するシグナルや、ユーザの設定によるタイマ割り込みがある。ソフトウェア割り込みは、例えば、データベースサーバ20で動作するオペレーティングシステムにより発生する。なお、ハードウェア割り込みやソフトウェア割り込みは、上記のもの以外にも存在するが、本実施形態では、簡単のため、割り込み検知部213が検知する割り込みは、ハードウェア割り込みと、ユーザの設定によるタイマ割り込み、及びキャンセル要求の受信に起因するシグナルのいずれかであるものとする。
割り込み検知部213は、割り込みを検知すると、トランザクション情報のキャンセル種別欄422の設定を行う。図7に、割り込み検知部213による処理の流れを示す。割り込み検知部213は、トランザクション情報記憶部42に記憶されている各トランザクション情報について、ハードウェア割り込みを検知した場合(S501:YES)には、キャンセル種別欄422に「1」を設定し(S502)、タイマ割り込みを検知した場合(S503:YES)には、キャンセル種別欄422に「2」を設定し(S504)、クエリ受信部211からのシグナルを検知した場合(S505:YES)には、キャンセル種別欄422に「3」を設定する(S506)。なお、キャンセル種別の「4」又は「5」については、後述のプラン実行部214によりキャンセル種別欄422に設定される。
プラン実行部214は、プラン情報記憶部41に記憶されているプラン情報に応じてレコードの操作処理を行い、データ入出力部215は、プラン実行部214からの指示に応じて、ディスク装置30に対するデータの入出力を行い、応答送信部216は、プラン実行部214が実行した操作処理の結果をユーザ端末10に送信する。
==処理==
以下、本実施形態のデータベースサーバ20による処理について説明する。図8に、データベースサーバ20が行うデータベースの操作処理の流れを示す。
プラン実行部214は、プラン情報記憶部41から同一のトランザクションID(以下、処理トランザクションIDという。)が設定されているプラン情報を読み出す(S601)。プラン実行部214は、読み出したプラン情報及びそれらのサブプラン情報について実行順序を決定し、プラン情報及びサブプラン情報(以下、サブプラン情報もプラン情報という。)を、決定した実行順序に並べたリストを作成する(S602)。プラン実行部214は、作成したリストに含まれる各プラン情報について、以下の処理を行う。
プラン実行部214は、プラン情報のプランタイプ欄413(又はサブプラン情報のプランタイプ欄4152)に設定されているプランタイプをタイプとして(S603)、タイプが「挿入」であれば(S604:挿入)後述の挿入処理を行い(S605)、タイプが「更新」であれば(S604:更新)、後述の更新処理を行い(S606)、タイプが「削除」であれば(S604:削除)、後述の削除処理を行う(S607)。また、タイプが「選択」である場合には(S604:選択)、一般的なデータベースの検索処理により、テーブル310からのレコードの検索を行う(S608)。
タイプが「挿入」「更新」「削除」又は「選択」である場合(S604:挿入、更新、削除、選択)、プラン実行部214は、処理トランザクションIDに対応するトランザクション情報のキャンセル種別欄422に設定されているキャンセル種別が「0」以外であるかどうかを判断する(S609)。キャンセル種別が「0」以外であれば(S609:YES)、応答送信部216は、トランザクションをコミットするか、ロールバックするか、又は継続するかを問い合わせるメッセージ(以下、確認要求という。)をユーザ端末10に送信し、確認要求に対する応答をユーザ端末10から受信する(S610)。確認要求に対するユーザ端末10からの応答が、トランザクションを継続する旨を示すものであった場合(S611:YES)には、プラン実行部214は、次のプラン情報について(S603)からの処理を続ける。
確認要求に対するユーザ端末10からの応答がトランザクションのコミット又はロールバックを示す場合(S611:NO)、プラン実行部214は、タイプにコミット又はロールバックを設定して(S612)、(S613)に進む。
タイプが「コミット」又は「ロールバック」である場合(S604:コミット/ロールバック)、プラン実行部214は、処理トランザクションIDに対応するトランザクション情報のキャンセル種別欄422に、タイプが「コミット」の場合には「4」を、タイプが「ロールバック」の場合には「5」を設定し(S613)、トランザクションIDが処理トランザクションIDと一致するプラン情報をプラン情報記憶部41から削除する(S614)。
以上の処理により、トランザクションに係る一連の操作処理が行われる。
次に、プラン実行部214は、トランザクションの終了処理を行う(S615)。プラン実行部214は、例えば、処理トランザクションIDがトランザクションID欄313に設定されているレコードを検索し、検索したレコード(以下、トランザクションレコードという。)のそれぞれについて、キャンセル種別が「4」の場合(トランザクションがコミットされた場合)、トランザクションレコードのステータス欄312が「更新処理中」であれば「完了」に変更し、「削除処理中」であれば「削除」に変更する。また、キャンセル種別が「5」の場合(トランザクションがロールバックされた場合)、プラン実行部214は、トランザクションレコードのステータス欄312が「更新処理中」であれば「削除」に変更し、「削除処理中」であれば「完了」に変更する。このようにして、プラン実行部214はトランザクションの終了処理を行う。なお、プラン実行部214が行うトランザクションの終了処理には、一般的なデータベース管理システムにおけるトランザクションの終了処理を採用することができる。
==挿入処理==
図9は、挿入処理の流れを示す図である。プラン実行部214は、プラン情報に含まれるプランデータから、レコードの挿入先となるテーブル(以下、処理テーブルという。)を特定する(S621)。プラン実行部214は、処理トランザクションIDに対応するトランザクション情報の継続フラグ欄423に「1」を設定し(S622)、プランデータに基づいてレコードデータを作成する(S623)。プラン実行部214は、作成したレコードデータのデータ長をデータ長欄311に設定し、ステータス欄312に「更新処理中」を設定し、トランザクションID欄313に処理トランザクションIDを設定し、データ欄314にレコードデータを設定したレコードを作成する(S624)。プラン実行部214は、データ入出力部215がディスク装置30にデータを書き込む単位となるデータ長(以下、バッファサイズという。)毎に、作成したレコードを分割して書き込みデータを作成する(S625)。データ入出力部215は、プラン実行部214が作成した書き込みデータのそれぞれをディスク装置30へ書き込む(S626)。
図10に、データ入出力部215によるディスク装置30へのデータの書き込み処理の流れを示す。データ入出力部215は、処理トランザクションIDに対応するトランザクション情報のキャンセル種別欄422に設定されているキャンセル種別を参照し(S701)、キャンセル種別が「0」でない場合(S701:YES)、トランザクション情報の継続フラグ欄423に設定されている継続フラグを参照する(S702)。キャンセル種別が「0」であるか(S701:NO)、継続フラグが「1」であれば(S702:YES)、データ入出力部215は、ディスク装置30のテーブル領域31に書き込みデータを書き込む(S703)。上記のようにしてレコードがディスク装置30に書き込まれる。
次に、プラン実行部214は、処理テーブルにインデックス320が設定されているかどうかを判断し(S627)、インデックス320が設定されていれば(S627:YES)、データ入出力部215は、処理テーブルに設定されているインデックス320からインデックス値を読み出す(S628)。プラン実行部214は、データ入出力部215が読み出したインデックス値と、更新したレコードとに応じて、新たなインデックス値を算出し(S629)、データ入出力部215は、プラン実行部214が算出したインデックス値をインデックス320へ書き込む(S630)。なお、インデックス値をインデックス320に書き込む処理についても、上述した図10に示す書き込み処理と同様の処理が行われる。
プラン実行部214は、処理トランザクションIDに対応するトランザクション情報の継続フラグ欄423に「0」を設定する(S631)。
以上の処理によりレコードの挿入処理が行われる。
==更新処理==
図11は更新処理の流れを示す図である。プラン実行部214は、上述した図9の挿入処理と同様に、処理テーブルを特定した後(S641)、プランデータに基づいて更新の対象となるレコード(以下、更新レコードという。)を特定する(S642)。更新レコードの特定は、例えば、処理テーブルにインデックスが設定されている場合には、更新コマンドに含まれる条件句に設定されている条件に見合うレコードをインデックスから特定することにより行うことができる。プラン実行部214は、特定した更新レコードのそれぞれについて以下の処理を行う。
プラン実行部214は、処理トランザクションIDに対応するトランザクション情報の継続フラグ欄423に「1」を設定する(S643)。データ入出力部215は、更新データのデータ欄314に設定されているレコードデータを読み出し(S644)、ディスク装置30に格納されている更新レコードについて、ステータス欄312に「削除処理中」を書き込み(S644)、トランザクションID欄313に処理トランザクションIDを書き込む(S645)。
プラン実行部214は、プランデータに基づいてレコードデータを更新し(S646)、上述の図9の(S624)〜(S626)と同様に、更新したレコードデータのデータ長、「更新処理中」、処理トランザクションID、及びレコードデータを設定したレコードを作成し(S647)、作成したレコードをバッファサイズ毎の書き込みデータにする(S648)。データ入出力部215は、書き込みデータのそれぞれをディスク装置30に書き込む(S649)。
また、上述の図9の(S627)〜(S631)と同様に、処理テーブルにインデックスが設定されている場合(S650:YES)、データ入出力部215はインデックス320からインデックス値を読み出し(S651)、プラン実行部214は、インデックス値とレコードデータとに基づいてインデックス値を算出し(S652)、プラン実行部214は、算出したインデックス値を、データ入出力部215がインデックス320に書き込む(S653)。
プラン実行部214は、処理トランザクションIDに対応するトランザクション情報の継続フラグ欄423に「0」を設定し(S654)、処理トランザクションIDに対応するトランザクション情報のキャンセル種別欄422に「0」のキャンセル種別が設定されている場合(S655:YES)には、次の更新レコードについて(S643)からの処理を行い、キャンセル種別が「0」以外である場合(S655:NO)には、処理を終了する。
==削除処理==
図12はレコードの削除処理の流れを示す図である。
プラン実行部214は、上述した図9の挿入処理と同様に、処理テーブルを特定し(S661)、プランデータに基づいて削除するレコード(以下、削除レコードという。)を特定する(S662)。プラン実行部214は、特定した削除レコードのそれぞれについて以下の処理を行う。
プラン実行部214は、処理トランザクションIDに対応するトランザクション情報の継続フラグ欄423に「1」を設定し(S663)、データ入出力部215は、削除レコードのステータス欄312に「削除処理中」を書き込み(S664)、トランザクションID欄313に処理トランザクションIDを書き込む(S665)。
上述の図11の(S650)〜(S655)と同様に、処理テーブルにインデックスが設定されている場合(S666:YES)、データ入出力部215は、インデックス320からインデックス値を読み出し(S667)、プラン実行部214は、インデックス値とレコードデータとに基づいてインデックス値を算出し(S668)、データ入出力部215は、プラン実行部214が算出したインデックス値をインデックス320に書き込む(S669)。プラン実行部214は、処理トランザクションIDに対応するトランザクション情報の継続フラグ欄423に「0」を設定し(S670)、キャンセル種別が「0」以外であれば(S671:NO)、処理を終了する。
以上説明したように、本実施形態のデータベースサーバ20では、割り込みに応じて、更新中のレコードがあればそのレコードに係る更新処理を完了し、そのレコードの更新までの操作処理を確定した後、トランザクションを中止する。
一般的なデータベース管理システムでは、レコードの書き込み処理中に割り込みを検知した場合、書き込み処理は途中で中断されることになるので、書き込んだレコードの完全性を保つことができない。したがって、一般的なデータベース管理システムでは、テーブルをトランザクションの開始前の状態まで戻すロールバックが行われている。
しかしながら、本実施形態のデータベースサーバ20では、レコードの書き込み中に割り込みを受けても、書き込み中のレコードを完全にディスク装置30に書き込んだ後に、後続の処理を中断している。したがって、本実施形態のデータベースサーバ20は、割り込みが発生した時点で書き込み中であったレコードの完全性を保ちながら、ロールバックすることなく、トランザクションを中断することができる。
また、本実施形態のデータベースサーバ20は、トランザクションを中断しても、従来技術のようにデータベースを修復することなく、レコードの完全性を保つことができる。したがって、データベースの修復にかかる時間を削減することができる。
また、本実施形態のデータベースサーバ20は、割り込みを受けた時点で更新中のレコードの更新処理を終了した後、更新中であったレコード及びそれまでに更新されたレコードを確定した上で、トランザクションを中止することができる。したがって、データベースには、割り込みの発生時点までに更新されたレコードは有効に格納されることになる。すなわち、本実施形態のデータベースサーバ20は、レコードの完全性を失うことなく、割り込みが発生した時点までに更新されたレコードを確定した上で、トランザクションを中止することができる。これにより、ユーザは割り込みが発生する時点以前に更新されたレコードを、割り込みの発生後も利用することができる。したがって、例えば、渋滞データや音楽データなどをダウンロードしてデータベースに登録する場合において、データをダウンロード中にタイムアウト等による割り込みが発生した場合でも、その時点までにダウンロードしたデータは有効に登録され、ユーザはそれらのデータを継続して利用することができる。例えば、ダウンロードした一部の地域についての渋滞情報を表示したり、ダウンロードした時点までの音楽データを再生したりすることができる。すなわち、システム全体としての処理の中断を防ぐことができる。また、タイムアウト等の割り込み発生時点以降のレコードを再度更新する場合にも、割り込み時点以降のレコードについてのみ更新処理を行えばよいので、トランザクションのキャンセルによる手戻りを低減し、トランザクションのやり直しに係る時間や処理負荷を減らすことができる。
また、テーブル310にインデックス320が設定されている場合には、インデックス320の更新後に処理が中断されるので、テーブル310に登録されているレコードとインデックス320との整合性を保つことができる。したがって、テーブル310におけるレコードの特定処理にインデックス320を利用し続けることができる。よって、トランザクションを途中でキャンセルしても、テーブル310に対する検索速度の低下を防ぐことができる。
なお、本実施形態では、レコードの削除時において、レコードはテーブル領域31から削除されずにレコードステータスが変更され、レコードの更新時においては、既存のレコードを更新せずに削除して新しいレコードを挿入する、いわゆる追記型の管理がなされるものとしたが、もちろん、レコードをテーブル領域31から削除したり、既存のレコードを更新したりするような管理をするようにしてもよい。
また、本実施形態では、ユーザ端末10からクエリを受け付けてデータベースのレコードの操作処理を行う形態を想定したが、これに限らず、データベースサーバ20を直接ユーザが操作する形態としてもよい。例えば、データベースサーバ20の機能をユーザが操作する携帯端末に搭載し、携帯端末が外部のサーバから渋滞データや音楽データをダウンロードして携帯端末内のデータベースに登録するような場合に適用することができる。
また、プラン実行部214とデータ入出力部215とは、異なるプロセスとして並列的に処理を行うようにしてもよい。この場合、プラン実行部214は、テーブル領域31やインデックス領域32の位置情報を決定し、書き込みデータとともに書き込み要求としてデータ入出力部215に送信するようにする。また、トランザクション情報記憶部42は、プラン実行部214及びデータ入出力部215のそれぞれから参照可能な共有メモリに実現するようにする。
また、本実施形態では、割り込みの種別として、ユーザインタフェースの操作に起因して発生するハードウェア割り込みと、ユーザの設定によるタイマ割り込み、及びユーザ端末10からのキャンセル要求に応じて発生するシグナルの3種類としたが、これに限らず、その他にも任意の割り込みに対応することができる。
また、本実施形態では、簡単のため、上記3種類の割り込み以外の割り込みが発生した場合(図7のS505:NO)には、キャンセル種別を設定せず、トランザクションが継続するものとしたが、例えば、他の割り込みが発生した場合には、トランザクションをロールバックするようにしてもよい。これにより、タイマやキャンセル要求等のユーザからの指示に応じた割り込みの場合には、それまでのレコードを確定しつつ、その他エラー等に起因する割り込みの場合には、トランザクションをロールバックして、データベースのレコードを保護することができる。
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
本実施形態に係る情報処理システムの全体構成を示す図である。 データベースサーバ20のハードウェア構成を示す図である。 データベースサーバ20の機能ブロック図である。 テーブル領域31及びインデックス領域32の構成例を示す図である。 プラン情報記憶部41に登録されるプラン情報の構成例を示す図である。 トランザクション情報記憶部42に記憶されるトランザクション情報の構成例を示す図である。 割り込み検知部213による処理の流れを示す図である。 プラン情報に応じてデータベースサーバ20が行う操作処理の流れを示す図である。 レコードの挿入処理の流れを示す図である。 データ入出力部215によるデータの書き込み処理の流れを示す。 レコードの更新処理の流れを図11に示す図である。 レコードの削除処理の流れを示す図である。
符号の説明
10 ユーザ端末 11 通信ネットワーク
20 データベースサーバ 21 プログラム
201 CPU 202 メモリ
203 通信インタフェース 204 ディスクインタフェース
211 クエリ受信部 212 クエリ解析部
213 割り込み検知部 214 プラン実行部
215 データ入出力部 216 応答送信部
30 ディスク装置 31 テーブル領域
310 テーブル 311 データ長欄
312 ステータス欄 313 トランザクションID欄
314 データ欄
32 インデックス領域 320 インデックス
41 プラン情報記憶部 411 トランザクションID欄
412 プランID欄 413 プランタイプ欄
414 プランデータ欄 415 サブプラン欄
4151 サブプランID欄 4152 プランタイプ欄
4153 プランデータ欄 4154 サブプラン欄
42 トランザクション情報記憶部 421 トランザクションID欄
422 キャンセル種別欄 423 継続フラグ欄

Claims (6)

  1. データベースの更新方法であって、
    情報処理装置が、複数のレコードの更新処理を含むトランザクションの実行中に前記トランザクションを中止させる割り込みを受け付けた場合、更新中の前記レコードについての前記更新処理を完了した後、後続する前記レコードについての前記更新処理の実行を中止すること、
    を特徴とするデータベースの更新方法。
  2. 請求項1に記載のデータベースの更新方法であって、
    前記情報処理装置は、
    前記トランザクションを中止させる割り込みとは異なる割り込みを受け付けた場合には、前記トランザクションをロールバックし、
    前記トランザクションを中止させる割り込みを受け付けた場合には、前記トランザクションをロールバックしないこと、
    を特徴とするデータベースの更新方法。
  3. 請求項1に記載のデータベースの更新方法であって、
    前記割り込みは、
    ユーザインタフェースに対する操作に起因して発生するハードウェア割り込み、
    ユーザの設定に基づくタイマ割り込み、
    外部装置からの前記トランザクションを中止させる指示に応じて発生するソフトウェア割り込み、
    の少なくとも何れかであること、
    を特徴とするデータベースの更新方法。
  4. 請求項1に記載のデータベースの更新方法であって、
    前記情報処理装置は、前記レコードが格納されるテーブルにインデックスが設定されている場合、更新中の前記レコードについての前記更新処理を完了し、更新した前記レコードに応じて前記インデックスを更新した後、後続する前記レコードについての前記更新処理の実行を中止すること、
    を特徴とするデータベースの更新方法。
  5. 請求項1に記載のデータベースの更新方法であって、
    前記情報処理装置は、
    前記割り込みを受け付けた場合、前記トランザクションをロールバックするか、コミットするか、又は継続するかを問い合わせるメッセージを出力し、
    前記メッセージに対する回答の入力を受け付け、
    受け付けた前記回答が前記トランザクションをコミットする旨を示す場合、実行中の前記更新処理を完了した後、後続する前記更新処理の実行を中止し、
    受け付けた前記回答が前記トランザクションをロールバックする旨を示す場合、前記トランザクションをロールバックし、
    受け付けた前記回答が前記トランザクションを継続する旨を示す場合、実行中の前記更新処理を完了するとともに、後続する前記更新処理を実行すること、
    を特徴とするデータベースの更新方法。
  6. ロールバック機能を有するデータベースと、
    前記データベースに対する複数のレコードの更新処理を含むトランザクションを実行するトランザクション実行部と、
    前記トランザクションの実行中に前記トランザクションを中止させる割り込みを受け付ける割り込み検知部と、を備え、
    前記トランザクション実行部は、前記割り込みを受け付けた場合、ロールバックせずに、実行中の前記更新処理を完了した後、後続する前記更新処理の実行を中止すること、
    を特徴とする情報処理装置。

JP2006148400A 2006-05-29 2006-05-29 データベースの更新方法及び情報処理装置 Pending JP2007317100A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006148400A JP2007317100A (ja) 2006-05-29 2006-05-29 データベースの更新方法及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006148400A JP2007317100A (ja) 2006-05-29 2006-05-29 データベースの更新方法及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2007317100A true JP2007317100A (ja) 2007-12-06

Family

ID=38850880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006148400A Pending JP2007317100A (ja) 2006-05-29 2006-05-29 データベースの更新方法及び情報処理装置

Country Status (1)

Country Link
JP (1) JP2007317100A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152788A (ja) * 2008-12-26 2010-07-08 Kenwood Corp 車載器
JP5504452B1 (ja) * 2013-09-04 2014-05-28 株式会社Groony 営業情報同期システム
WO2019026442A1 (ja) * 2017-08-02 2019-02-07 フェリカネットワークス株式会社 情報処理装置、および情報処理方法
CN115497221A (zh) * 2021-06-18 2022-12-20 富士电机株式会社 通信终端单元以及自动售货机系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152788A (ja) * 2008-12-26 2010-07-08 Kenwood Corp 車載器
JP5504452B1 (ja) * 2013-09-04 2014-05-28 株式会社Groony 営業情報同期システム
WO2019026442A1 (ja) * 2017-08-02 2019-02-07 フェリカネットワークス株式会社 情報処理装置、および情報処理方法
CN110945482A (zh) * 2017-08-02 2020-03-31 飞力凯网路股份有限公司 信息处理装置和信息处理方法
CN115497221A (zh) * 2021-06-18 2022-12-20 富士电机株式会社 通信终端单元以及自动售货机系统

Similar Documents

Publication Publication Date Title
JP4839091B2 (ja) データベース回復方法及び計算機システム
JP4398463B2 (ja) インクリメンタル仮想コピーのための方法、システム、及びプログラム
TW589528B (en) Posted write-through cache for flash memory
US7680852B2 (en) Search processing method and search system
US20040049636A1 (en) Technique for data transfer
JP2000347917A (ja) データ二重化制御方法および二重化した記憶サブシステム
JPH07105064A (ja) ファイル名検出方式
JP2007226347A (ja) 計算機システム、計算機システムの管理装置、及びデータのリカバリー管理方法
JPH0113571B2 (ja)
JP2005128861A (ja) リモートサイト及び/又はローカルサイトのストレージシステム及びリモートサイトストレージシステムのファイル参照方法
JP2006527874A (ja) 1つのターゲット・ボリュームと1つのソース・ボリュームとの間の関連性を管理するための方法、システム、及びプログラム
JP2007317100A (ja) データベースの更新方法及び情報処理装置
US20100077169A1 (en) Logical data set migration
JP5235483B2 (ja) データベースと仮想テーブルの整合性を維持する方法および装置。
US7836215B2 (en) Method for providing high performance storage devices
JP2003162438A (ja) データベース管理システム
US20180018124A1 (en) Data arrangement apparatus and data arrangement method
US11561957B2 (en) In-place garbage collection for state machine replication
JP4352224B2 (ja) 二重化系におけるデータ救済方法およびシステム
JP2013161398A (ja) データベースシステム、データベース管理方法、およびデータベース管理プログラム
JP2010009195A (ja) バッチ処理方法、バッチ処理プログラム、リクエスト実行装置、および、データベースシステム
JP2009069965A (ja) ストレージ装置、データ回復方法及び計算機システム
JP4305328B2 (ja) コンピュータシステム及びそれを用いた系切り替え制御方法
KR960014825B1 (ko) 정보처리시스템
US9304699B1 (en) Managing token states across multiple storage processors of a data storage array