JP5464003B2 - データベース管理装置およびデータベース管理プログラム - Google Patents

データベース管理装置およびデータベース管理プログラム Download PDF

Info

Publication number
JP5464003B2
JP5464003B2 JP2010073197A JP2010073197A JP5464003B2 JP 5464003 B2 JP5464003 B2 JP 5464003B2 JP 2010073197 A JP2010073197 A JP 2010073197A JP 2010073197 A JP2010073197 A JP 2010073197A JP 5464003 B2 JP5464003 B2 JP 5464003B2
Authority
JP
Japan
Prior art keywords
record
extraction
update
area
extraction range
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
JP2010073197A
Other languages
English (en)
Other versions
JP2011204161A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010073197A priority Critical patent/JP5464003B2/ja
Priority to US13/036,136 priority patent/US8315987B2/en
Publication of JP2011204161A publication Critical patent/JP2011204161A/ja
Application granted granted Critical
Publication of JP5464003B2 publication Critical patent/JP5464003B2/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/2358Change logging, detection, and notification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、データベース管理装置に関する。
データベースマネージメントシステムにおいて、データの更新途中のある時点でのスナップショットを取得することが要求される。スナップショットは、例えば、データ保全(バックアップ)、あるいは任意時点でのデータ内容参照のために使われる。スナップショット取得に用いられる技術としては、例えば、ログまたは写像を用いて読取一貫性を保つ技術、およびミラーリング等が挙げられる。
ログを用いる技術では、データベースに対する操作をログデータ(またはジャーナルデータ)として記録しておき、ログデータの時点まで遡ってスナップショットを取得することができる(ログUNDO方式)。
写像を用いた技術では、例えば、データベースのテーブルデータが追記型構造となっており、挿入(INSERT)の場合も更新(UPDATE)の場合も新しいレコードが追加される。これにより、同じデータベースへのアクセス処理を含む複数のトランザクションは、データベースの現在のレコードだけでなく、現在から遡ったある時点のレコードを参照することができる(MVCC方式)。
また、ミラーリングでは、主となる(マスタ)データベースと全く同じ内容の(レプリカ・複製)データベースが作成される。このように、データベース二重化しておき、ある時点で一方を切り離して、切り離したデータベースを参照することで、その時点のスナップショットを取得することができる。
"第13章 Oracleアーキテクチャ(捕捉)"、[online]、[平成21年5月22日検索]、<http://www.shoeisha.com/mag/windev/pdf/870603/windev0603_144_SQLServer.pdf>
上記ログUNDO方式では、ログデータのためのメモリ領域が必要である。また、ユーザは、トランザクション量を考慮したログデータ領域のサイズのチューニングをする必要がある。上記MVCC方式では、例え参照処理やスナップショット取得処理が行われなくても、データベースに更新が発生する度にデータ領域を消費してしまう。その結果、データ領域が圧迫される。また、定期的に不要なデータ領域を回収する必要があり、回収にCPUおよびI/O資源が使われる。上記の二重化データベースの切り離しによるスナップショットの取得では、ボリュームディスクの調達、設定および管理が必要となる。このように、上記従来の方式はいずれも、スナップショットの取得を要件とした場合には、複雑な処理が必要となり、コンピュータ資源の調達、利用およびユーザの運用管理に無駄が多い方式となっている。
ゆえに、本発明は、データベースのスナップショット取得において、利用するコンピュータ資源又はユーザの運用管理を低減することを目的とする。
本願開示のスナップショット装置は、指定した時点における記録媒体上のデータベースのレコードを抽出して他の領域へ保存することを要求するスナップショット要求を受けて、抽出するデータの前記記録媒体における抽出範囲を示す情報をメモリに記録する設定部と、前記抽出範囲におけるレコードを順次抽出して前記他の領域へ記録する抽出部と、前記抽出範囲において前記抽出部によるレコード抽出が完了した抽出済み領域と、前記抽出範囲においてレコード抽出をまだしていない未抽出領域とを示す情報を前記メモリに随時記録する監視部と、前記指定された時点より後に開始された後続トランザクションによる前記抽出範囲内のレコードの更新指示を、前記抽出部の抽出処理中に受けた場合に、前記メモリを参照して、前記更新指示の更新対象レコードが前記抽出済み領域にあるか、前記未抽出領域にあるか判断し、前記更新対象レコードが前記抽出済み領域にある場合は、当該抽出済み領域の更新対象レコードを更新し、前記更新対象レコードが未抽出領域にある場合は、当該未抽出領域の更新対象レコードの写像を前記抽出範囲外に記録し、当該写像を更新する後続更新部と、前記抽出部による前記抽出範囲内の前記更新対象レコードの抽出が終了した後に、前記抽出範囲外に記録され更新された前記写像と同様に、前記抽出範囲内の前記更新対象レコードを更新する引き戻し部とを備える。
本願明細書の開示によれば、データベースのスナップショット取得において、利用するコンピュータ資源又はユーザの運用管理を低減することができる。
第1の実施形態にかかるデータベースサーバの構成例を示す図である。 データベースのレコードの管理方法の例を説明するための図である。 レコード間のリンク管理方法とリンク情報の例を説明するための図である。 データベース管理装置がスナップショット要求を受けたときの動作例を示すフローチャートである。 データベース管理装置が更新指示を受けた場合の動作例を示すフローチャートである。 引き戻し処理の具体例を説明するための図である。 引き戻し処理の具体例を説明するための図である。 第2の実施形態にかかるデータベースサーバの構成例を示す図である。 抽出リトライの動作例を説明するための図である。 先行トランザクションキャンセルの動作例を説明するための図である。 更新指示を受けた更新部8aの動作例を示すフローチャートである。 データベース管理装置3がスナップショットを取得する際の動作例を示すフローチャートである。 仮レコードマークが設定されたレコードのリンク先が、抽出範囲である場合と抽出範囲外である場合の例を示す図である 引き戻し処理の一例を示すフローチャートである。 第1および第2の実施形態におけるデータベースサーバのハードウエア構成の一例を示す図である。
(第1の実施形態)
[システム構成例]
図1は、第1の実施形態にかかるデータベースサーバの構成例を示す図である。図1に示す例では、データベースサーバ1は、スナップショット取得部2、データベース管理装置3、更新アプリケーション部11およびデータベースのデータが記録される記録媒体10を含む。データベース管理装置3は、スナップショット取得部2から、スナップショット要求を受けて、記録媒体10のデータベースから指定された時点における指定された範囲のデータをスナップショットとして抽出し他の領域へ保存する。また、アプリケーション部11は、データベースへアクセスする処理を含むトランザクションを実行する。アプリケーション部11は、トランザクションにおけるデータベースへのアクセス処理の際、データベース管理装置3に対して、データベースへの操作指示を送信する。データベース管理装置3は、アプリケーション部11からの操作指示に基づいて記録媒体10のデータベースへアクセスする。データベース管理装置3は、例えば、データベース管理システム(DBMS)の少なくとも一部の機能を実現する装置として、データベースサーバ1に組み込まれてもよい。
データベース管理装置3は、設定部4、抽出部5、監視部6、メモリ7a、バッファ7b、更新部8を備える。設定部4は、指定された時点における記録媒体10上のデータベースのレコードを抽出して他の領域へ保存することを要求するスナップショット要求を受けて、抽出するレコードの記録媒体10における抽出範囲を示す情報をメモリ7aに記録する。抽出部5は、この抽出範囲におけるレコードを順次抽出して前記他の領域(図示せず)へ記録する。
監視部6は、抽出部5の抽出処理を監視し、前記抽出範囲においてレコード抽出が完了した抽出済み領域と、前記抽出範囲においてレコード抽出をまだしていない未抽出領域とを示す情報をメモリ7aに随時記録する。
更新部8は、アプリケーション部11から、データベースへのレコードの更新指示を受付ける。なお、ここで更新指示は、更新(UPDATE)命令の他、挿入(INSERT)命令および削除(DELETE)命令を含むものとする。更新部8は、指定された時点より後に開始された他の後続トランザクションによる前記抽出範囲内のレコードの更新指示を、前記抽出処理中に受けた場合に、メモリ7を参照して、前記更新指示の更新対象レコードが抽出済み領域にあるか、未抽出領域にあるか判断する。更新部8は、前記更新対象レコードが抽出済み領域にある場合は、当該抽出済み領域の更新対象レコードを更新し、前記更新対象レコードが未抽出領域にある場合は、当該未抽出領域の更新対象レコードの写像を前記抽出範囲外に記録して、この写像を更新する。引き戻し部9は、抽出部5の抽出処理による前記抽出範囲のレコードの抽出が完了した後に、前記抽出範囲外に記録され更新された前記写像と同様に、前記抽出範囲内の前記更新対象レコードを更新する。
このように、図1に示す構成によれば、データベース管理装置3は、スナップショット取得指示を受けると、データの抽出範囲、抽出済み領域、未抽出領域をメモリに記録する。これにより、後続トランザクションによる抽出範囲のレコードへの更新指示を受けた場合、更新対象データが抽出済み領域にあるか未抽出領域にあるかを判定でき、判定の結果に基づいて更新操作を制御することができる。図1に示す例では、更新部8は、後続トランザクションによる更新が抽出済み領域のレコードに対する更新であれば(例えば、APL1の場合)、そのまま抽出範囲内のレコードを更新する。後続トランザクションによる更新が未抽出領域のレコードに対する更新であれば(例えば、APL3の場合)、更新部8は、更新部更新対象レコードの写像を抽出範囲外に作成して、この写像に対して更新をし、スナップショットの抽出完了後に、引き戻し部9が、更新した写像を更新対象レコードへ引き戻すことができる。その結果、簡単な処理で、スナップショット取得におけるデータ一貫性を確保することができる。すなわち、データベースのスナップショット取得において、利用するコンピュータ資源およびユーザの運用管理を低減することができる。
例えば、データベースへの操作履歴を示すログを記録する処理や、データベースが更新される度に写像を記録する処理等が不要になる。図1に示す構成では、スナップショット取得における未抽出領域のレコードを後続トランザクションが更新をする場合に写像を作成するので、適切なタイミングで効率よく、複数のレコード(写像)を管理することになる。その結果、ディスク容量やメモリ領域の圧迫を回避することができる。
[スナップショットの説明]
本実施形態におけるスナップショット取得は、指定されたある時点における記録媒体(例えば、ディスクまたはメモリ等)に記録されたデータを抽出して他の記録領域へ保存する処理である。スナップショット取得は、例えば、データベース管理システムにおいて、データのバックアップや、任意の時点でのデータ参照(例えば、バッチ等)のために実行される。
スナップショットの取得において、抽出するデータの範囲(抽出範囲)は、目的に応じて適宜設定されることが好ましく、特に限定されない。例えば、抽出範囲は、DBMSにおいて関連するテーブル群(一例として、DSI(Data Structure Instance))であってもよいし、テーブル単体でもよい。また、スナップショットの対象となるデータベースは、記録媒体に体系的に記録されたデータ(情報)の集合であって、その形式は、特に限定されない。本実施形態では、一例として、表形式のデータを管理するRDB(Relational Database)について説明する。
本実施形態では、データベースのスナップショット取得中に、別のトランザクション(アプリケーション)によりデータベースへの更新処理が指示される場合のデータ一貫性の確保を実現している。なお、トランザクションによるデータベースへの更新処理の実施中に、別のアプリケーションによりスナップショットの要求がされる場合のデータ一貫性の確保を実現する仕組みは、後述の第2の実施形態である。トランザクション(アプリケーション)の例として、データベース資源のバックアップを、ジョブのスケジュール管理により特定時間に実施するアプリケーションが挙げられる。
[レコードの管理方法の例]
ここで、本実施形態におけるレコードの管理方法を説明する。なお、下記のデータ管理方法は一例であり、データ管理方法は、これに限られない。図2Aは、データベースのレコードの管理方法の例を説明するための図である。図2A上段に示す例では、データベースのデータは、各レコード単位で管理されている。記録媒体における領域は、ページごとに区切られている。レコードは、データベースにおいて取り扱う情報の単位であり、可変長であっても固定長であってもよい。例えば、論理的なテーブル(表)における一つの行(論理行)に相当するデータを1つのレコードとすることができる。ページは、記録媒体における領域を区切るブロック(I/Oブロック)であり、本実施形態では、一例として、記録媒体における領域をページ単位で管理している。レコードを挿入、更新または削除するタイミングでは、レコードイメージに対して排他を獲得することによって途中状態のイメージを保護することができる。すなわち、同一レコードに対する他者の同時参照ができないように排他制御することができる。
図2Aに示す例では、効率的なデータ検索できるようにINDEXから実レコードへポイントされている。すなわち、実レコードのアドレスを指すポインタがINDEXに記録されている。また、図2Aの下段に示すように、可変長のレコードを更新することによって長さが大きくなり、ページに入りきらない場合は、新たなページにレコードを格納することができる。この場合、更新前のレコードはステッピングストーン(図中SSと表記)とし、更新後のレコードへポイントする。これにより、INDEXにあるレコードへのポインタを書き換えることなく更新後のレコードを検索できる。
図2Bは、レコード間のリンク管理方法とリンク情報の例を説明するための図である。図2Bに示す例では、レコードは、リンク情報とレコード内実データを含む。リンク情報は、リンク先のレコードが配置されるページ番号、リンク先のレコードのページ内レコード位置情報、および仮レコードマークを含む。本実施形態において、仮レコードマークは、スナップショット取得における抽出処理においてのみ参照可能なマーク種別とする。すなわち、通常アクセス(スナップショット取得以外のアクセス)ではこの仮マークは参照できない(レコードの存在が無視される)。仮レコードマークを用いた処理例は後述する。
[動作例]
図3は、スナップショット要求を受けたときのデータベース管理装置3の動作例を示すフローチャートである。図4は、アプリケーション部11から更新指示を受けた場合のデータベース管理装置3の動作例を示すフローチャートである。
図3に示す例では、データベース管理装置3がスナップショット取得部2から、スナップショット要求を受けると(Op1)、設定部4は、メモリ7aに、スナップショット情報を設定する(Op2)。スナップショット情報には、例えば、いつの時点のスナップショットを取得するかを示す情報と、取得するデータの範囲、すなわち抽出範囲を示す情報が含まれる。図1に示すメモリ7aの「開始ページ1」「終了ページ4」は、抽出範囲を示す情報の一例であり、ページ1からページ4までが抽出範囲であることを示している。なお、本実施形態において、抽出範囲は、スナップショットが要求された時点でスナップショットの対象となるデータが格納されているページの範囲である。
抽出部5は、抽出範囲におけるレコードを順次抽出して前記他の領域へ記録する(Op3)。一例として、抽出部5は、抽出範囲の開始ページ1から、1ページごとに読み込みバッファ7bに読み込み、ページに含まれる各レコードのイメージを抽出し、他の領域へ記録することができる。1ページ分のレコードイメージの抽出が終わると、そのページの写像が抽出範囲外に存在するか否かを判断する(Op4)。写像が存在する場合(Op4で真)、引き戻し部9は、前記抽出範囲外の写像を、抽出範囲内に引き戻す(Op5)。すなわち、前記抽出範囲外の更新された写像と同様に、抽出範囲内の更新対象レコードを更新する。
なお、リトライの可能性がある場合にOp5の引き戻し処理を実行しないように動作することもできる。リトライは、スナップショット抽出処理より先に開始された先行トランザクションにおいて、スナップショット抽出済みのデータが更新された場合に、抽出処理をその更新されたデータまで遡ってやり直す処理である。リトライの可能性の有無は、例えば、リトライ動作が有効であるか否か、および、先行トランザクションの有無によって判断することができる。
例えば、図1に示す例では、ページ3のrecordC、recordDは、抽出範囲外のページ6の写像(recordC´、recordD´)にリンクされている。そのため、引き戻し部9は、抽出部5がページ3の抽出を完了した後に、ページ3のrecordC、recordDを、recordC´、recordD´に更新する。
1ページ分の処理(Op3〜Op5)が終わると、監視部6は、抽出範囲においてレコード抽出が完了した抽出済み領域と、レコード抽出をまだしていない未抽出領域とを示す情報をメモリ7aに記録する(Op6)。例えば、メモリ7aの「抽出完了ページ2」は、抽出済み領域と、未抽出領域を示す情報の一例であり、ページ1、2が抽出済み、ページ3、4が未抽出(ページ3は抽出中)であることを示している。例えば、ページ3についてOp3〜Op5の処理が終わると、監視部6は、メモリ7a中の「抽出完了ページ2」を「抽出完了ページ3」に更新する。
抽出範囲について(Op7で真となるまで)、上記のOp3〜Op6の処理が繰り返される。抽出範囲のページ全てが抽出完了すると、データベース管理装置3は、メモリ7aのスナップショット情報を削除し(Op8)、抽出したページのレコードを、スナップショットとして出力する(Op9)。なお、リトライの可能性がある場は、Op8およびOp9の処理を省略するよう動作してもよい。これにより、リトライの可能性がある間(例えば、リトライ処理有効かつ先行トランザクション実行中の間)は、Op8およびOp9の処理を保留することができる。
なお、図3に示した処理は一例であり、データベース管理装置3の動作は、これに限られない。例えば、引き戻し処理(Op5)は、抽出範囲すべてのデータ抽出が完了してから実行されてもよい。
次に、図4に示す例では、データベース管理装置3がアプリケーション部11から、データベースの更新指示を受ける(Op11)。ここでは、一例として、更新部8は、スナップショット取得を指定された時点より後に開始された他の後続トランザクションによる抽出範囲内のレコードの更新指示を受けた場合について説明する。更新部8は、メモリ7aのスナップショット情報を参照して(Op12)、更新指示の更新対象レコードが抽出済み領域にあるか、未抽出領域にあるか判断する(Op13)。更新部8は、更新対象レコードが抽出済み領域にある場合は(Op13で真)、当該抽出済み領域の更新対象レコードを更新する。更新対象レコードが未抽出領域にある場合は(Op13で偽)、当該未抽出領域の更新対象レコードの写像を抽出範囲外に記録し、当該写像を更新する。
例えば、図1に示す例では、ページ1、2が抽出済みなので、更新対象レコードがページ1の場合(APL1の場合)、更新部8は、そのまま、ページ1のレコードを更新する。更新対象レコードがページ4、すなわち未抽出ページの場合(APL3の場合)、更新部8は、抽出範囲外のページ7にページ4のレコードGの写像を記録し、写像をレコードG´に更新する。例えば、更新部8は、抽出範囲外のページに対して、更新対象のレコード(以降、元レコードと称する)を複写し、この複写されたレコード(以降、先レコードと称する)に対するリンク情報を元レコードへ設定することができる。さらに、元レコードのイメージには、抽出処理中のみ有効とする仮レコードマークを設定する。これにより、抽出部5が元レコードを抽出した後、元レコードのイメージは、引き戻し部9により先レコードのイメージへへ引き戻される。
図1において、抽出完了ページ(ページ1、2)は、既に抽出処理が完了しているため、この抽出完了ページに対する後続トランザクションによるレコード更新は、データベースのスナップショット内容に対してトランザクション整合になんら影響を与えない。そのため、更新部8は、抽出完了ページのレコードを更新することができる。
一方、抽出ページ(図1の例では、ページ3)は、抽出処理がレコードの抽出を実施中のページである。また、未抽出ページ(ページ4)は、まだ抽出処理がされていないページである。これらのページに対して更新することは、スナップショット取得における抽出処理のトランザクション整合に影響を与える。そのため、更新部8は、範囲外写像を記録してこちらを更新する。
図1において、ページ7は、引き戻し中写像ページであり、このページは、抽出範囲内でかつ未抽出のページが更新部8により一度更新されたレコードを記録するページである。抽出範囲内かつ未抽出のページ(元ページ4)の抽出処理が完了した後、当該引き戻し中写像ページ(先ページ7)からを元ページ4に引き戻している。このように、抽出完了後に、元ページへ先ページの更新内容を反映させることで、データ一貫性を確保することができる。
[引き戻し処理の具体例]
図5A、図5Bは、引き戻し処理(Op5)の具体例を説明するための図である。図5Aは、先ページから元ページへレコードを複写可能な場合の引き戻し処理を表す図であり、図5Bは、先ページから元ページへレコードを複写不可能な場合の引き戻し処理を表す図である。
上記のとおり、引き戻し処理は、例えば、抽出部5により元ページ(例えば、図1のページ2)の抽出処理が完了したことを契機として実行することができる。当該引き戻し処理は抽出部5と引き戻し部9によって、データベース管理装置3(DBMS内)のトランザクションとして実行することができる。
また、当該引き戻し処理と更なる更新処理との排他によるレスポンス悪化を発生させないために、引き戻し処理をレコード単位の排他で実行することが好ましい。あるいは、引き戻し処理をレコード単位の排他で実行し、かつ、適切な間隔(例:nレコード毎)にトランザクションを分断して実行することも好ましい。
以下に、図5Aおよび図5Bを参照しながら、引き戻し部9による引き戻し処理の具体例を説明する。
1)処理が完了したページ(元ページ:図5A,5Bにおけるページ2)に対して、更新対象となったレコード(recordB)を特定する。例えば、仮レコードマークが有効となっているレコードを更新対象となったレコードと特定することができる。
2)特定したレコードのリンク情報より、新規に切り出されたページ(以降、先ページ)を特定(図5A、5Bに示す例では、ページ6を特定)。
3)先ページから、対象レコードイメージを元ページに複写を試みる。
3−A)複写可能な場合には、元ページに先ページのレコードのレコードイメージを複写する(図5Aの場合)。具体的には、先ページのレコードイメージを削除し、先ページの領域を再利用可能とするとともに、元ページ上の仮レコードマークを有効から無効に更新する。これにより、抽出処理以外でも元ページのレコードが認識されるようになる。また、元ページのリンク情報は削除される。
3−B)複写不可能(例えば、先ページ上のレコードイメージが長くなっている場合等)には、複写しない(図5Bの場合)。この場合、元ページのレコードイメージを削除して、元ページの領域を空けるとともに、インデックスが設定されている場合には、インデックスポインタを更新する。これにより、元ページおよび先ページ上のレコードが全て削除された場合には、当該ページを新規ページとしてページごと再利用することが可能となる。
引き戻し部9は、上記の1)〜3)の処理を、元ページのレコード全てに対して実施する。本実施形態では、更新部8による更新処理(例えば、UPDATE命令)により、新規に抽出範囲外に切り出された先ページ上のレコードが存在する状況が発生しうる。すなわち、この先ページと元ページにおいてレコードイメージを二重に管理している状態が起こりうる。このように、レコードイメージを二重に管理すると、データベースとして管理するディスク容量を圧迫する。そのため、これらを単一のレコードイメージに戻すことで、ディスク容量を有効に利用することができる。すなわち、抽出範囲内の更新対象レコードを写像と同様に更新した後、この抽出範囲外の写像が記録されていた領域を解放することが、リソースの効率利用の観点から好ましい。
(第2の実施形態)
図6は、第2に実施形態にかかるデータベースサーバの構成例を示す図である。図6において、図1と同じ箇所には、同じ番号を付している。本実施形態にかかるデータベース管理装置3aは、スナップショット取得中に、後続のトランザクションによりデータベースへの更新処理が実行される場合のみならず、先行のトランザクションによる更新処理中に、スナップショット取得処理が開始される場合についても、データ一貫性の確保をするための仕組みを備えている。そのため、図6に示すデータベース管理装置3aにおいて、更新部8aは、先行更新部81、先行挿入部82、後続更新部83、後続挿入部84を含んでいる。
本実施形態において、先行トランザクションは、スナップショットを取得する時点より前に実行されるべきトランザクションである。取得されるスナップショット(抽出されるレコード)は、先行トランザクションによる更新内容を反映したものであるべきである。一方、後続トランザクションは、スナップショットを取得する時点より後に実行されるべきトランザクションであり、取得されるスナップショットは、後続トランザクションによる更新前の状態のデータであるべきである。なお、先行トランザクションは、仕掛り中トランザクション、または仕掛りトランザクションと呼ばれることもある。また、後続トランザクションは、新規トランザクションと称してもよい。
例えば、スナップショット取得処理の状態を示す情報および実行中のトランザクションの状態を示す情報をメモリ7aに記録しておくことにより、あるスナップショット取得処理に対して、別のトランザクションが先行か後続かを判断することができる。この判断の具体例については後述する。
[先行トランザクションによる更新処理例]
先行更新部81は、先行トランザクションによる抽出範囲内のレコードの更新指示を、スナップショット取得処理中(例えば、抽出部5による抽出処理中)に受けた場合、メモリ7aを参照して、更新指示の更新対象レコードが抽出済み領域にあるか、未抽出領域にあるか判断する。
先行トランザクションの更新対象レコードが未抽出領域のレコードである場合、先行更新部81は、この未抽出領域の当該更新対象レコードを更新する。未抽出領域のレコードであれば、先行更新部81が更新しても、スナップショット取得処理におけるデータ一貫性は保たれる。
先行トランザクションの更新対象レコードが抽出済み領域にある場合は、先行更新部81は、例えば、下記(1)または(2)いずれかの処理を実行することができる。
(1)抽出リトライ
更新対象レコードが抽出済み領域にある場合は、先行更新部81は、当該更新対象レコードを更新してさらに前記更新されたレコードを含む領域を示す情報をリトライ領域情報としてメモリ7aに記録することができる。これにより、抽出部5に対して、抽出済みのレコードに対して更新したことを通知することができる。先行更新部81によってリトライ領域情報がメモリ7aに記録された場合、抽出部5は、リトライ領域情報の示す領域から再度レコードを抽出して前記他の領域へ記録する。これにより、スナップショット取得処理におけるデータ一貫性を確保する。
図7は、抽出リトライの動作例を説明するための図である。図7に示す例では、ページ1、2が抽出部5による抽出済みページであり、ページ3、4が未抽出ページである。先行更新部81が、ページ2に対して、先行トランザクションのUPDATEまたはDELETEを実行する場合、メモリ7aのスナップショット情報に「リトライページ番号2」を記録する。抽出部5は、ページ2のレコードを抽出した後、スナップショット情報に「リトライページ番号2」が記録されたことを検知すると、再度、ページ2のレコードを抽出する。これにより、例えば、抽出結果に矛盾が発生しないポイント(ここでは、ページ2)から再度抽出処理を開始することができる。
なお、図7に示す例では、先行挿入部82は、先行トランザクションのINSERTを実行する場合、予約域であるページ5にレコードを挿入する。予約域の情報は、スナップショット情報に、例えば、「予約開始ページ番号5」として記録されている。このように、先行トランザクションで、INSERT処理が発生しても、スナップ取得処理における抽出処理は継続することができる。
上記の抽出リトライ処理は、例えば、更新処理業を優先する場合、トランザクションがINSERT処理中心である場合、スナップショット取得に時間を要してもよい場合等に、特に有効となる。
(2)先行トランザクションキャンセル
先行更新部81は、先行トランザクションの更新対象レコードが抽出済み領域にある場合は、当該先行トランザクションの更新処理をキャンセルすることもできる。例えば、抽出済ページ上のレコードに対するUPDATEまたはDELETE処理が要求された場合、先行更新部81は、デットロック発生として自処理をキャンセルすることができる。
図8は、先行トランザクションキャンセルの動作例を説明するための図である。図8に示す例では、ページ1、2が抽出部5による抽出済みページであり、ページ3、4が未抽出ページである。先行更新部81が、ページ2に対して、先行トランザクションのUPDATEまたはDELETEを実行する場合は、トランザクションがデッドロックキャンセルされる。なお、図8に示す例でも、先行挿入部82は、先行トランザクションのINSERTを実行する場合、予約域であるページ5にレコードを挿入する。すなわち、INSERT処理の場合にはトランザクションを継続することができる。
上記先行トランザクションキャンセルは、例えば、スナップ取得処理を優先させる場合、INSERT処理中心のトランザクションの場合、および仕掛の先行中トランザクションをキャンセルさせても良い場合等に、特に有効となる。
(3)抽出処理待ち合わせ
抽出部5は、スナップショット取得時点において、すでに、先行トランザクションによる前記抽出範囲内へのレコードの更新処理が行われている場合は、前記先行トランザクション終了を待って抽出処理を実行することができる。すなわち、抽出処理は、スナップショットの抽出範囲に対する先行トランザクションの終了を待ち合わせることができる。この待ち合わせ中、後続トランザクションザクションにおける抽出範囲のレコードへのUPDATEおよびDELETEは抽出処理を待って実行することが好ましい。なお、後述するように、後続トランザクションのINSERT処理は、抽出範囲外へのレコード挿入処理であれば、抽出処理を待つ必要はない。
このように、先行トランザクションを待って抽出処理を開始することで、先行トランザクション完了後の状態のスナップショットを確実に得ることができる。すなわち、先行トランザクションとの整合がとれたイメージを取得することができる。この先行トランザクションを待って抽出処理を実行する方法は、例えば、確実なスナップショット取得処理を優先させる場合や、INSERT処理中心の業務において有効である。
(4)先行トランザクションによる挿入処理
先行挿入部82は、先行トランザクションによるレコードの挿入(新規追加)指示を受けた場合に、当該挿入指示にかかる挿入レコードを抽出範囲の中の予約領域に記録することができる。このように、挿入操作によるデータを格納するための領域を管理することで、挿入操作に関しては、スナップショット取得処理への緩衝をなくすことができる。先行トランザクションの挿入処理は、スナップショット取得処理におけるデータ一貫性に影響を与えることなく実行される。その結果、データ一貫性確保のための処理、コンピュータ資源、ユーザの作業量をさらに軽減することができる。
なお、この先行トランザクションの予約域への挿入処理は、上記(1)〜(3)いずれの場合でも同様に実行可能である。
(5)先行トランザクションレコード更新に対する抽出処理の待ち合わせ
更新対象レコードが未抽出領域のレコードである場合、先行更新部81は、抽出部5による当該更新対象レコードの抽出を禁止した上で、抽出範囲の更新対象レコードを更新することができる。例えば、抽出部5が抽出範囲のレコードを参照する場合、そのレコードに対する先行トランザクションによる更新処理が実行されている可能性がある。この場合、抽出部5は、先行トランザクションによる前記レコードの更新処理が完了するまで待つことが好ましい。
これにより、抽出部5は、先行トランザクションによる更新完了後のレコードのイメージをスナップショットとして抽出することができる。その結果、データ一貫性を確保することがさらに容易となる。また、先行トランザクションを先行させることができ、更新処理の性能を確保できる。さらに、ロールバック用のログ量を抑えることができる。例えば、上記の先行トランザクションの更新処理と抽出処理と緩衝させることなく実施でき、ログを破棄することが可能となる。
上記の抽出処理の待ち合わせは、次のような場合に有効である。例えば、図6に示すAPL2のように、抽出部5がページ2のレコードを参照する場合、そのページ2のレコードに対する先行トランザクションによる更新が行なわれている可能性がある。この場合に、抽出部5のページ3のレコード抽出を禁止した上で、先行トランザクションの更新処理を実行することが好ましい。また、スナップショットの指示時点より前に発生していた先行トランザクションを、スナップショット処理が待ち合わせないパタン(例えば、上記(1)抽出リトライ、(2)先行トランザクションの場合)において、この(5)の処理は特に有効である。例えば、図7に示すように、抽出部5がページ1および2まで抽出処理を終了した時点で、先行トランザクションによりページ3が更新排他されていると、抽出部5は、ページ3に対する参照を待ち合わせる。
[後続トランザクションによる更新処理例]
後続トランザクションによる更新処理は、上記第1の実施形態と同様に実行することができる。以下、後続トランザクションによる更新処理の詳細な例を説明する。
後続トランザクションにおいて、抽出済みの領域のレコードを更新(ここでは、一例としてUPDATEまたはDELETE操作)する場合、後続更新部83は、第1の実施形態における更新部8と同様に、そのレコードを更新または削除する。この場合抽出部5の抽出処理との間に緩衝はない。後続更新部83は、更新操作の結果、レコード長が伸長し、同一ページ内に格納できない場合には、抽出範囲外のページ(例えば、図6におけるページ6)に更新結果を格納することができる。
後続トランザクションにおいて、未抽出の領域のレコードを更新(ここでは、一例として、UPDATEまたはDELETE操作)する場合も、後続更新部83は、第1の実施形態と同様に、抽出範囲外のページに対して、更新対象のレコード(以降、元レコード)を複写する。この時、複写されたレコード(以降、先レコード)に対するリンク情報が元レコードへ設定される。さらに、元レコードのイメージには、抽出処理中のみ有効とする仮レコードマークが設定される。例えば、更新種別がUPDATEの場合、後続更新部83は、先レコードのレコードイメージに対して更新を行う。例えば、図6に示す例において、後続更新部83が、未抽出のページ4のrecordGに対して更新する場合、recordGの写像をページ7へ複写し、ページ4のrecordGのリンク情報が、ページ7の写像recordGを指すようにポインタを設定する。後続更新部83は、ページ4のrecordGの仮レコードマークを有効に更新し、ページ7のrecordGをrecordG´に更新する。
更新種別がDELETEの場合、後続更新部83は、先レコードを削除する。インデックスか設定されている場合は、後続更新部83は、インデックス情報を無効化する。
後続トランザクションにより、レコードの挿入指示を受けた場合に、後続挿入部84は、抽出範囲の外へ当該挿入指示にかかるレコードを記録することが好ましい。例えば、更新種別が挿入指示(INSERT命令)の場合、後続挿入部84は、抽出範囲の外へレコードをINSERTする。
このように挿入操作により挿入されるデータを格納するための領域を特別に管理することで、挿入操作に関しては、スナップショット取得処理への緩衝をなくすことができる。ここでは、抽出範囲の外へ後続トランザクションのレコードを挿入するので、スナップショット取得時の抽出処理と、後続トランザクションによる挿入処理との間に緩衝をなくすることができる。なお、後続トランザクションにおける挿入操作のデータを格納するための抽出範囲外の領域を示す情報は、予め、スナップショット情報等に記録しておくことが好ましい。
[動作例]
以下、本実施形態におけるデータベース管理装置3aの詳細な動作例を説明する。
〔設定処理例〕
設定部4は、スナップショット取得部2から受けたスナップショット要求に基づいて、例えば、下記表1に示すスナップショット情報をメモリ7aに記録する。
Figure 0005464003
スナップショット要求には、スナップショットとして抽出する対象を特定する情報が含まれる。例えば、データベースにおいて、DSI識別子またはテーブルIDなど、関連するデータの集合を識別するための情報がスナップショット要求に含まれていてもよい。設定部4は、スナップショットの作成が指示された場合、そのタイミングでのデータの抽出範囲(例えば、DSIまたはテーブル等)を特定し、メモリ7aに記録する。メモリ7aは、更新処理(SQLアプリケーション)において参照可能なメモリであることが好ましい。これにより、データの抽出範囲に対する他のトランザクションによる更新処理(SQLアプリケーション)の振る舞いを制御することが可能になる。
上記表1に示す例では、設定部4は、スナップショット取得対象のデータ群を示す対象資源ID、スナップショット取得を実行状態であるか否かを示すフラグ(例えば、真=抽出中、偽=抽出中でない)を記録する。設定部4は、スナップショット取得中を「真」に設定し、開始ページ番号および最終ページ番号を記録する。これらは、抽出範囲を示す情報の一例である。抽出部5は、開始ページ番号から順に、レコードを抽出する。
監視部6は、抽出部5による処理状況に応じて、先行トランザクション向け抽出済ページ番号および後続トランザクション向け抽出済ページ番号を更新する。これらは、抽出済み領域を示す情報を一例である。このように、先行トランザクションおよび後続トランザクションそれぞれについて、抽出済み領域を表す情報を設定することより、先行トランザクションおよび後続トランザクションぞれぞれの、抽出範囲のデータに対するアクセスを制御することができる。例えば、具体的には、先行トランザクションと抽出処理の間でトランザクション不整合が発生した際にあるレコードの抽出処理をリトライする場合には、抽出のリトライが完了するまで、後続トランザクションによる前記レコードの更新をさせないようにするため、後続トランザクション向け抽出済ページ番号を更新しないようにすることができる。
監視部6は、例えば、スナップショット取得中フラグが真(抽出中)の場合には、抽出が完了した範囲(ページの範囲)を示す情報(抽出済み領域と未抽出領域を示す情報の一例)、および有効データが格納されている最終ページの情報を記録する。
要求シリアル番号はスナップショット要求を識別する番号であり、例えば、スナップショット要求がなされるたびにカウントアップされてもよい。この要求シリアル番号は、スナップショット処理と並行して実行されるトランザクションにて参照されることにより、トランザクションが、スナップショット処理と比較して先行するか(先行トランザクションであるか)、あるいは、後続するのか(後続トランザクションであるか)を判断するために使用される。
先行トランザクション向け抽出済ページ番号、および後続トランザクション向け抽出済ページ番号は、例えば、スナップショットの抽出処理と並行して実行されるトランザクションが、スナップショットの抽出処理の状態を認識するために使用される。
また、設定部4は、先行トランザクションがレコード(例えば、INSERT、データおよびUPDATEによるレコード伸長後のデータ)を格納するための予約領域を特定する情報をメモリ7aに記録する。上記表1における、予約開始ページ番号および予約最終ページ番号がこの情報の一例である。なお、この他に、例えば、後続トランザクションによる更新処理時に更新対象レコードの写像を格納するための抽出範囲外の領域を決める情報も、スナップショット情報に含めてもよい。このように、先行または後続トランザクションによる挿入処理のレコードのための領域や、後続トランザクションによる更新処理時の写像のための領域等をスナップショット情報に含めることで、予約領域が管理でき、リソースの効率的な利用が可能になる。
表1におけるリトライページ番号は、上述したように、抽出済み領域のレコードに対して先行トランザクションにおける更新処理が行われた場合に、そのレコードを抽出部5が再抽出するために記録される。
以上、スナップショット情報の設定例について説明したが、スナップショット情報は上記例に限られない。
〔トランザクションが先行か後続かの判断例〕
本実施形態では、設定部4は、スナップショットを取得する時点と、要求シリアル番号とを対応付けて、トランザクション管理情報としてメモリ7aに記録する。トランザクション管理情報として、さらに、データベース管理装置3が処理するトランザクションに関する情報も記録される。例えば、実行中のトランザクションのID、開始時点、実行状態などがトランザクション管理情報に記録される。例えば、実行中のトランザクションの開始時点とスナップショットを取得する時点とを比較することにより、そのトランザクションがスナップショット取得処理に対して先行なのか後続なのかを判断することができる。なお、トランザクションの先行および後続の判断方法はこれに限られない。例えば、スナップショットの要求シリアル番号をトランザクションIDと対応付けて記録することでも判断可能である。
〔更新処理〕
図9は、アプリケーション部11から更新指示を受けた更新部8aの動作例を示すフローチャートである。図9に示す例では、更新部8aは、更新指示を受けると(Op51)、メモリ7aのスナップショット情報およびトランザクション管理情報を参照する(Op52)。ここでは、一例として、スナップショット情報として、上記表1に示す内容の情報がメモリ7aに記録されているものとする。トランザクション管理情報には、例えば、データベース装置3aに要求されたトランザクションの識別子(ID)、開始時間および状態が記録される。トランザクションの状態として、例えば、待機中、実行中、完了等が含まれる。トランザクション管理情報は、例えば、データベース管理装置3が、トランザクションの要求を受けた時点でメモリ7aに格納し、その後、更新部8aがトランザクションの処理に応じて更新していくことができる。
更新部8aは、スナップショット情報およびトランザクション管理情報を基に、受けた更新指示が、先行トランザクションにおける更新指示か、後続トランザクションにおける更新指示かを判断する(Op53)。
更新指示が先行トランザクションのものである場合、更新部8aは、更新指示がINSERTか否かを判断する(Op54)。更新指示がINSERTである場合(Op54で真)、先行挿入部82は、抽出範囲の予約域へレコードをINSERTする。先行挿入部82は、例えば、上記表1のスナップショット情報に含まれる、予約開始ページ番号および予約最終ページ番号を参照して、記録媒体10における予約域の位置を知ることができる。
先行トランザクションの更新指示が、INSERTでない場合(Op54で偽)、更新部8aは、その更新指示は、抽出済み領域に対するUPDATEまたはDELETEであるか否かを判断する(Op56)。
抽出済み領域へのUPDATEまたはDELETEの場合(Op56で真)、先行更新部81は、抽出リトライ処理か、トランザクションキャンセル処理のいずれかを実行する(Op57)。抽出リトライ処理は、上述したように、当該抽出済み領域のレコードを更新または削除して、そのレコードがあるページの番号を、リトライページ番号としてメモリ7aに記録する処理である。トランザクションキャンセル処理は、更新指示のあった先行トランザクションをキャンセルする処理である。どちらを実行するかは、システムの利用方法により使い分けることができる。更新指示が、未抽出領域へのUPDATEまたはDELETEの場合(Op56で偽)、先行更新部81は、未抽出領域へのUPDATEまたはDELETEを実行する。
Op53での判断の結果、更新指示が後続トランザクションのものである場合、更新部8aは、更新指示がINSERTか否かを判断する(Op59)。更新指示がINSERTである場合(Op59で真)、後続挿入部82は、抽出範囲外の予約域へレコードをINSERTする。予約域の位置は、予めスナップショット情報としてメモリ7aに記録されていてもよい。これにより、後続挿入部82は、記録媒体10における予約域の位置を知ることができる。
後続トランザクションの更新指示が、INSERTでない場合(Op59で偽)、更新部8aは、その更新指示が、抽出済み領域に対するUPDATEまたはDELETEであるか否かを判断する(Op61)。Op61で真の場合、後続更新部83は、抽出済み領域に対してUPDATEまたはDELETEを実行し(Op62)、偽の場合は、後続更新部83は、抽出範囲外の予約域に写像を記録し、当該写像に対してUPDATEまたはDELETEを実行する(Op63)。なお、Op61〜Op63は、図4に示したOp13〜Op15と同様にすることができる。
更新部8aの動作は、上記例に限られない。例えば、Op53において、トランザクションが先行か後続かの判断に加えて、後続トランザクションの更新処理を抑止する必要があるか否か、すなわち、後続トランザクションの更新処理を待たせるか否かを判断してもよい。これにより、後続トランザクションと先行トランザクションとの間で整合性を保つための制御が可能になる。
〔スナップショット取得処理〕
図10は、データベース管理装置3がスナップショットを取得する際の動作例を示すフローチャートである。図10に示す例において、データベース管理装置3がスナップショット要求を受けると(Op1)、設定部4がスナップショット情報をメモリ7aに初期する(Op22)。ここでは、一例として、スナップショット情報として、上記表1に示す内容の情報をメモリ7aに記録する場合について説明する。Op22において、設定部4は、スナップショット要求に含まれる対象資源IDをメモリ7aに記録し、スナップショット取得中フラグを真に更新する。また、設定部4は、要求シリアル番号を生成してメモリ7aに記録する。
Figure 0005464003
対象資源IDは、ここでは、データ抽出対象のデータベースを特定するものとする。設定部4は、対象資源IDで特定されるデータベースのレコードが格納されている記録媒体10の領域を特定し、当該領域を抽出範囲としてメモリ7aに記録する。表1に示す例では、開始ページと最終ページにより抽出範囲が示される。設定部4は、先行トランザクション向け抽出済ページ番号および後続トランザクション向け抽出済ページ番号には初期値を設定し、予約開始ページ番号および予約最終ページ番号には、先行トランザクションの挿入処理で挿入するレコードを格納するための予約域となるページの最初と終わりの番号を設定する。例えば、抽出範囲の開始ページから最終ページまでの一部を予約域のページとすることができる。リトライページ番号には、初期値として抽出リトライは不要であることを示す値が記録される。
Op23において、抽出部5は、トランザクション管理情報を参照し、待機中の後続トランザクションがあり、かつ、実行中の先行トランザクションがあるかを判断する。これらがある場合(Op23で真の場合)、抽出部5は、先行トランザクションが終了するまで、後続トランザクションによる更新処理を抑止し、先行トランザクション終了後に抑止を解除することができる(Op24)。これにより、例えば、先行トランザクションの更新処理および後続トランザクションの更新処理によるデータの不整合が発生するのを抑制することができる。
抽出部5は、メモリ7aのスナップショット情報における抽出中ページを更新する(Op25)。例えば、抽出処置を開始するときは、最初のページのページ番号「1」を抽出中ページ番号としてメモリ7aに記録する。すなわち、現在の参照対象となっているページの番号が抽出中ページ番号として設定される。
抽出部5は、メモリ7aのスナップショット情報におけるリトライページ番号に初期値以外の値が設定されているか判断する(Op26)。リトライページ番号は、例えば、図9のOp57においてリトライ抽出処理が実行された場合に更新される。リトライページ番号が設定されている場合は、そのリトライページ番号から、抽出処理をやり直す(Op27)。
抽出部5は、現在の参照対象のページをバッファ7bへ読み込み(Op28)、そのページのレコードに、仮レコードマークがあり、かつリンク先が抽出範囲内であるか否かを判断する(Op29)。Op29で偽の場合、読み込んだページのレコードイメージを抽出し、他の領域へ記録する(Op30)。当該他の領域は、例えば、メモリ7aの領域であってもよいし、記録媒体10の領域であってもよい。
なお、Op29において、仮レコードマークが設定されたレコードのリンク先が、抽出範囲内であるか否かを判断することにより、仮レコードマークが設定されたレコードのイメージが、現在のスナップショット取得中に作成されたものかを判断することが可能になる。例えば、データベース管理装置3では、処理中のシステムダウンに備えて、一連の処理を復元できるリカバリログを取得することができる。この状態でのダウンした後、再度スナップショットの取得が要求された場合には、更新後のレコードイメージを参照することが好ましい。そのため、抽出処理において仮レコードマークが設定されているレコードイメージを参照するのは、そのレコードのリンク情報により指し示されるレコードイメージが、現在の抽出範囲外である場合とする。これにより、仮レコードマークが設定されたレコードイメージが、現在のスナップショット取得中に作成されたものかを判断可能となる。
図11は、仮レコードマークが設定されたレコードのリンク先が、抽出範囲である場合と抽出範囲外である場合の例を示す図である。図11に示す例では、ページ2のrecordBおよびページ3のrecordCが仮レコードマークが設定されたレコードである。recordBのリンク先は抽出範囲内であり、recordCのリンク先は、抽出範囲外である。この場合、抽出処理においては、ページ2のrecordBのリンク先は抽出範囲内なので、リンク先のページ4のrecordB´(先レコード)が抽出され、元レコードであるrecordBは抽出されない。一方、ページ3のrecordCのリンク先は抽出範囲外なので、元レコードであるrecordCが抽出される。
現在の参照対象のページについて上記抽出処理が終わると、引き戻し部9は、現在の参照対象のページについて引き戻し処理を実行する(Op31)。このOp31における処理の詳細は、図12に示し、後述する。
上記のOp25〜Op31の処理は、抽出範囲における全てのページについて(Op32で真となるまで)繰り返される。次ページの抽出処理へ進む際、監視部4は、メモリ7aの先行トランザクション向け抽出済ページ番号および後続トランザクション向け抽出済ページ番号を更新することができる(Op33)。
なお、次のページの抽出処理への移行時に、スナップショット情報上の後続トランザクション向け抽出済ページ数を増加しない処理としてもよい。これにより、再抽出をするかもしれないデータ領域範囲を、後続トランザクションのデータ更新から保護することができる。例えば、リトライ処理による再抽出処理が必要となる可能性がある場合、開始時点での抽出範囲におけるデータイメージは保護されることが好ましい。この場合に、後続トランザクション向け抽出済ページ数を初期値(例えば、0)のままにしておくと、後続トランザクションは、常に、更新対象レコードをスナップショット抽出範囲外に複写した写像に対して更新操作をすることになる。
抽出範囲全てについて抽出処理が完了すると、設定部4は、スナップショット情報を削除する(Op33)。抽出したレコードまたはそのレコードの位置を示す情報をスナップショットの要求元(ここでは、スナップショット取得部2)に出力される(Op34)。
〔引き戻し処理〕
図12は、図10のOp31における引き戻し処理の一例を示すフローチャートである。図12に示す例では、引き戻し部9は、対象とするページ内の1つのレコードに対して仮レコードマークがあるか(有効か)判断する(Op41)。仮レコードマークがない場合は、次のレコードを処理する。仮レコードマークがある場合でかつ、そのレコードのリンク先がスナップショットの抽出範囲内の場合(Op42で真)、そのレコード(すなわち、元レコード)を削除する(Op43)。そのレコードのリンク先がスナップショットの抽出範囲内でない場合(Op42で偽)、リンク先のレコードのページ(引き戻し先ページ)が更新排他中か否かを判断する(Op44)。更新排他中の場合は、排他解除を待って(Op45)、引き戻しを実行する(Op46)。Op46の処理は、第1の実施形態と同様にすることができる。
[ハードウエア構成]
上記第1および第2の実施形態におけるデータベース管理装置3、3aの各機能部(設定部4、抽出部5、監視部6、更新部8,8a、引き戻し部9)の機能は、コンピュータのプロセッサが所定のプログラムを実行することによって実現することができる。そのため、コンピュータを、データベース管理装置3、3aとして機能させるためのデータベース管理プログラムおよびそれを記録した記録媒体は、本発明の実施形態に含まれる。
図13は、第1および第2の実施形態におけるデータベースサーバのハードウエア構成の一例を示す図である。図13に示す例では、データベースサーバは、バスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、およびインタフェース装置105を備える。データベースサーバに係る処理をCPU104に実行させるプログラムは、例えば、CD−ROM等の記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。補助記憶装置102は、インストールされたプログラムを格納する。メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってデータベースサーバに係る処理を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。なお、上記第1および第2の実施形態におけるデータベースを格納する記録媒体10は、補助記憶装置102またはメモリ装置103により実現することができる。
[効果、その他]
上記実施形態によれば、スナップショットの対象となるデータが格納されている領域の範囲を予め定め、その範囲内のデータに着目してトランザクションを整合させることができる。特に、スナップショット処理と競合するトランザクション(更新業務)が、INSERT処理を中心とした場合に、コンピュータ資源の使用、システム管理者の業務負荷をさらに軽減できる。加えて、スナップショットの取得が要求されているタイミングにおいてのみ、複数のレコードの管理をすることで、ディスク容量の圧迫を回避させることも可能になっている。その結果、上記実施形態によるスナップショット作成技術を用いることにより、スナップショットの取得機能が、従来に比べて単純に搭載可能となる。
例えば、ログUNDO方式だと、記録媒体上にログのための領域を確保することが必要であったが、本実施形態では、ログのための領域は不要かまたは少なくてすむ。また、時系列に沿ってレコードが更新される度に写像を蓄積するMVCC方式やデータベースの二重化方式だと、写像や二重化のためのデータ領域が必要となるが、本実施形態では、そのような領域は不要か、または少なくてすむ。さらに、上記ログUNDO方式およびMVCC方式いずれの場合も、システム管理者による設計・保守業務が必要となるが、本実施形態では、スナップショット取得に向けた特別な考慮は不要かまたは少なくてもすむ。

Claims (10)

  1. 指定した時点における記録媒体上のデータベースのレコードを抽出して他の領域へ保存することを要求するスナップショット要求を受けて、抽出するデータの前記記録媒体における抽出範囲を示す情報をメモリに記録する設定処理と、
    前記抽出範囲におけるレコードを順次抽出して前記他の領域へ記録する抽出処理と、
    前記抽出範囲において前記抽出処理によるレコード抽出が完了した抽出済み領域と、前記抽出範囲においてレコード抽出をまだしていない未抽出領域とを示す情報を前記メモリに随時記録する監視処理と、
    前記指定された時点より後に開始された他の後続トランザクションによる前記抽出範囲内のレコードの更新指示を、前記抽出処理中に受けた場合に、前記メモリを参照して、前記更新指示の更新対象レコードが前記抽出済み領域にあるか、前記未抽出領域にあるか判断し、
    前記更新対象レコードが前記抽出済み領域にある場合は、当該抽出済み領域の更新対象レコードを更新し、
    前記更新対象レコードが未抽出領域にある場合は、当該未抽出領域の更新対象レコードの写像を前記抽出範囲外に記録し、当該写像を更新する後続更新処理と、
    前記抽出処理による前記抽出範囲内の前記更新対象レコードの抽出が終了した後に、前記抽出範囲外に記録され更新された前記写像と同様に、前記抽出範囲内の前記更新対象レコードを更新する引き戻し処理とをコンピュータに実行させるデータベース管理プログラム。
  2. 前記指定された時点より前に開始された他の先行トランザクションによる前記抽出範囲内のレコードの更新指示を、前記抽出処理中に受けた場合に、前記メモリを参照して、前記更新指示の更新対象レコードが前記抽出済み領域にあるか、前記未抽出領域にあるか判断し、
    前記更新対象レコードが前記未抽出領域のレコードである場合には当該更新対象レコードを更新し、
    前記更新対象レコードが抽出済み領域にある場合は、当該更新対象レコードを更新してさらに前記更新されたレコードを含む領域を示す情報をリトライ領域情報として前記メモリに記録する先行更新処理と、
    前記先行更新処理において前記リトライ領域情報が前記メモリに記録された場合、前記リトライ領域情報の示す領域から再度レコードを抽出して前記他の領域へ記録する再抽出処理とをコンピュータにさらに実行させる請求項1に記載のデータベース管理プログラム。
  3. 前記指定された時点より前に開始された他の先行トランザクションによる前記抽出範囲内のレコードの更新指示を受けた場合に、前記メモリを参照して、前記更新指示の更新対象レコードが前記抽出済み領域にあるか、前記未抽出領域にあるか判断し、
    前記更新対象レコードが前記未抽出領域のレコードである場合には当該更新対象レコードを更新し、
    前記更新対象レコードが前記抽出済み領域にある場合は、当該更新指示にかかる更新処理をキャンセルする先行更新処理を、コンピュータにさらに実行させる請求項1に記載のデータベース管理プログラム。
  4. 前記先行更新処理において、前記更新対象レコードが前記未抽出領域のレコードである場合には前記抽出処理による当該更新対象レコードの抽出を禁止した上で、前記更新対象レコードを更新する、請求項2または3に記載のデータベース管理プログラム。
  5. 前記抽出処理は、前記指定された時点より前に開始された他の先行トランザクションによる前記抽出範囲内へのレコードの更新処理が行われている場合は、前記先行トランザクション終了を待って実行される、請求項1に記載のデータベース管理プログラム。
  6. 前記設定処理は、前記抽出範囲を示す情報に加えて、前記抽出処理中に前記抽出範囲に対してレコードを挿入するための予約領域を示す情報をさらに記録し、
    前記指定された時点より前に開始された他の先行トランザクションによるレコードの挿入指示を受けた場合に、当該挿入指示にかかる挿入レコードを前記予約領域に記録する先行挿入処理をさらにコンピュータに実行させ、
    前記抽出処理は、前記予約領域に記録された前記挿入レコードも抽出する、請求項1〜5のいずれか1項に記載の、データベース管理プログラム。
  7. 前記指定された時点より後に開始された他の後続トランザクションにより、レコードの挿入指示を受けた場合に、前記抽出範囲の外へ当該挿入指示にかかるレコードを記録する、後続挿入処理をさらにコンピュータに実行させる、請求項1〜6のいずれか1項に記載のデータベース管理プログラム。
  8. 前記抽出範囲内の前記更新対象レコードを前記写像と同様に更新した後、前記抽出範囲外の前記写像が記録されていた領域を解放する処理をさらに、コンピュータに実行させる、請求項1〜7のいずれか1項に記載のデータベース管理プログラム。
  9. 指定した時点における記録媒体上のデータベースのレコードを抽出して他の領域へ保存することを要求するスナップショット要求を受けて、抽出するデータの前記記録媒体における抽出範囲を示す情報をメモリに記録する設定処理と、
    前記抽出範囲におけるレコードを順次抽出して前記他の領域へ記録する抽出処理と、
    前記抽出範囲において前記抽出処理によるレコード抽出が完了した抽出済み領域と、前記抽出範囲においてレコード抽出をまだしていない未抽出領域とを示す情報を前記メモリに随時記録する監視処理と、
    前記指定された時点より後に開始された他の後続トランザクションによる前記抽出範囲内のレコードの更新指示を、前記抽出処理中に受けた場合に、前記メモリを参照して、前記更新指示の更新対象レコードが前記抽出済み領域にあるか、前記未抽出領域にあるか判断し、
    前記更新対象レコードが前記抽出済み領域にある場合は、当該抽出済み領域の更新対象レコードを更新し、
    前記更新対象レコードが未抽出領域にある場合は、当該未抽出領域の更新対象レコードの写像を前記抽出範囲外に記録し、当該写像を更新する後続更新処理と、
    前記抽出処理による前記抽出範囲内の前記更新対象レコードの抽出が終了した後に、前記抽出範囲外に記録され更新された前記写像と同様に、前記抽出範囲内の前記更新対象レコードを更新する引き戻し処理とを含む、コンピュータが実行するデータベース管理方法。
  10. 指定した時点における記録媒体上のデータベースのレコードを抽出して他の領域へ保存することを要求するスナップショット要求を受けて、抽出するデータの前記記録媒体における抽出範囲を示す情報をメモリに記録する設定部と、
    前記抽出範囲におけるレコードを順次抽出して前記他の領域へ記録する抽出部と、
    前記抽出範囲において前記抽出部によるレコード抽出が完了した抽出済み領域と、前記抽出範囲においてレコード抽出をまだしていない未抽出領域とを示す情報を前記メモリに随時記録する監視部と、
    前記指定された時点より後に開始された他の後続トランザクションによる前記抽出範囲内のレコードの更新指示を、前記抽出部の抽出処理中に受けた場合に、前記メモリを参照して、前記更新指示の更新対象レコードが前記抽出済み領域にあるか、前記未抽出領域にあるか判断し、
    前記更新対象レコードが前記抽出済み領域にある場合は、当該抽出済み領域の更新対象レコードを更新し、
    前記更新対象レコードが未抽出領域にある場合は、当該未抽出領域の更新対象レコードの写像を前記抽出範囲外に記録し、当該写像を更新する後続更新部と、
    前記抽出部による前記抽出範囲内の前記更新対象レコードの抽出が終了した後に、前記抽出範囲外に記録され更新された前記写像と同様に、前記抽出範囲内の前記更新対象レコードを更新する引き戻し部とを備えたデータベース管理装置。
JP2010073197A 2010-03-26 2010-03-26 データベース管理装置およびデータベース管理プログラム Active JP5464003B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010073197A JP5464003B2 (ja) 2010-03-26 2010-03-26 データベース管理装置およびデータベース管理プログラム
US13/036,136 US8315987B2 (en) 2010-03-26 2011-02-28 Database management apparatus and recording medium with database management program recorded thereon

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010073197A JP5464003B2 (ja) 2010-03-26 2010-03-26 データベース管理装置およびデータベース管理プログラム

Publications (2)

Publication Number Publication Date
JP2011204161A JP2011204161A (ja) 2011-10-13
JP5464003B2 true JP5464003B2 (ja) 2014-04-09

Family

ID=44657514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010073197A Active JP5464003B2 (ja) 2010-03-26 2010-03-26 データベース管理装置およびデータベース管理プログラム

Country Status (2)

Country Link
US (1) US8315987B2 (ja)
JP (1) JP5464003B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105900059B (zh) 2014-01-21 2019-06-07 甲骨文国际公司 用于在应用服务器、云或其它环境中支持多租户的***和方法
KR102437664B1 (ko) * 2014-09-26 2022-08-29 오라클 인터내셔날 코포레이션 멀티테넌트 어플리케이션 서버 환경에서 트랜잭션 복구를 위한 시스템 및 방법
WO2016069029A1 (en) * 2014-10-28 2016-05-06 Hewlett Packard Enterprise Development Lp Snapshot creation
US9600682B2 (en) * 2015-06-08 2017-03-21 Accenture Global Services Limited Mapping process changes
US11036769B1 (en) * 2018-07-06 2021-06-15 Workday, Inc. Linked element tracking in documents
KR101966338B1 (ko) * 2018-10-11 2019-04-05 신현구 가상화폐 거래소별 기간제 실적예측을 통한 경매 입찰 서비스 제공 방법
CN113835965B (zh) * 2021-09-27 2024-03-26 中电金信软件有限公司 一种参数轨迹留痕方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293600A (en) * 1990-04-06 1994-03-08 International Business Machines Corporation Counter and flux bit locking for very fast shared serialization of shared data objects
US5201044A (en) 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
US6081875A (en) 1997-05-19 2000-06-27 Emc Corporation Apparatus and method for backup of a disk storage system
JP3714184B2 (ja) * 2001-03-29 2005-11-09 富士通株式会社 記憶装置のデータ領域間複写処理方法、及び記憶システム
JPWO2004023308A1 (ja) * 2002-08-29 2005-12-22 富士通株式会社 データ抽出方法およびデータ抽出装置
US20050160087A1 (en) * 2002-08-29 2005-07-21 Fujitsu Limited Data extractor and method of data extraction
JP4321705B2 (ja) * 2003-07-29 2009-08-26 株式会社日立製作所 スナップショットの取得を制御するための装置及び記憶システム
JP4314126B2 (ja) * 2004-02-20 2009-08-12 株式会社東芝 同時実行制御方法及び装置
US7146386B2 (en) * 2004-03-29 2006-12-05 Microsoft Corporation System and method for a snapshot query during database recovery
JP4575762B2 (ja) * 2004-06-03 2010-11-04 株式会社日立製作所 データ処理方法および装置並びにストレージ装置およびその処理プログラム
JP4733431B2 (ja) * 2005-06-01 2011-07-27 株式会社日立製作所 リモートコピーの初期コピーシステムおよび初期コピー方法ならびに記憶装置
JP5026309B2 (ja) * 2008-03-06 2012-09-12 株式会社日立製作所 バックアップデータ管理システム及びバックアップデータ管理方法
CA2783370C (en) * 2009-12-31 2016-03-15 Commvault Systems, Inc. Systems and methods for performing data management operations using snapshots

Also Published As

Publication number Publication date
JP2011204161A (ja) 2011-10-13
US20110238630A1 (en) 2011-09-29
US8315987B2 (en) 2012-11-20

Similar Documents

Publication Publication Date Title
JP5464003B2 (ja) データベース管理装置およびデータベース管理プログラム
US11068447B2 (en) Directory level atomic commit protocol
US20180203888A1 (en) Multi-Version Concurrency Control Method in Database and Database System
JP3763992B2 (ja) データ処理装置及び記録媒体
EP2452261B1 (en) Apparatus and method for read optimized bulk data storage
JP4237354B2 (ja) トランザクション処理方法及びトランザクション処理システム
JPWO2007110931A1 (ja) 名前空間複製プログラム、名前空間複製装置、名前空間複製方法
US8682941B2 (en) Database apparatus
US20050273474A1 (en) Method and system for data processing with data replication for the same
JP5772458B2 (ja) データ管理プログラム、ノード、および分散データベースシステム
JP2009522677A (ja) ノードの番号付けによるファイル・システムのダンプ/復元のための方法、システム、およびデバイス
JP2017045454A (ja) 同時の、増分の及び世代のマークアンドスィープガーベッジコレクション
US11809385B1 (en) Efficient data backup in a distributed storage system
JP6461101B2 (ja) データベースシステム、情報処理装置、方法およびプログラム
US9002796B2 (en) Database management method, database management system and database management program
JP3785004B2 (ja) トランザクション管理方法及びトランザクション管理装置
JP6257748B2 (ja) データベースシステム、情報処理装置、方法およびプログラム
US20220164335A1 (en) Cloud-native object storage for page-based relational database
JP2016167212A (ja) 情報処理システム、チェックポイントデータ採取方法およびチェックポイントデータ採取プログラム
JP4855537B2 (ja) データベース並行編集方式
JP6557720B2 (ja) データベースシステム、装置、方法およびプログラム
JPH07230401A (ja) ファイル保守方法およびファイル保守システム
JP4923140B2 (ja) データベース並行編集方式
JP2004062473A (ja) データベース管理方法およびシステム
KR20230115930A (ko) 대용량 트랜잭션을 위한 트랜잭션 데이터 중간 저장 기법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130206

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131218

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140106

R150 Certificate of patent or registration of utility model

Ref document number: 5464003

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150