(57)【要約】【課題】  チェックポイントにおけるディスク出力データ量を抑えることで、チェックポイントでのデータベースアプリケーションからのアクセス性能劣化を抑え、障害復旧時の復旧時間短縮化を行う。【解決手段】  オンメモリデータベースシステムにおいて、オンメモリデータベースのメモリ上のデータ領域を複数のセグメントに分けて管理し、データの更新を行うデータベース更新処理機能部１００が、データ更新の履歴情報であるジャーナル情報をディスクに出力し、チェックポイントデータ取得領域抽出機能部５００が、データが更新されたセグメントを抽出して、これをチェックポイント時にディスク１３００に出力し、リカバリ機能部１１００が、システム起動時に、ディスクに記憶された直前チェックポイント以降のジャーナルデータに基づいて、ディスク１３００に記憶されたチェックポイントデータ更新の後追い処理を行う。【選択図】  図１
2006139696.tif 000002
【特許請求の範囲】
【請求項１】
オンメモリデータベースシステムにおけるデータ復元方法であって、
前記オンメモリデータベースシステムは、
オンメモリデータベースのメモリ上データ領域を複数のセグメントに分けて管理し、
データの更新を行うデータベース更新処理機能部が、データ更新の履歴情報であるジャーナル情報をディスクに送信するステップと、
チェックポイントデータ取得領域抽出機能部が、データが更新されたセグメント情報を抽出して、これをチェックポイント時に前記ディスクに送信するステップと、
リカバリ機能部が、システム起動時に、前記ディスクに記憶された直前チェックポイント以降のジャーナルデータに基づいて、前記ディスクに記憶されたチェックポイントデータ更新の後追い処理を行うステップと、を有することを特徴とするデータ復元方法。
【請求項２】
オンメモリデータベースシステムにおけるデータ復元方法であって、
前記オンメモリデータベースシステムは、
オンメモリデータベースのメモリ上データ領域を複数のセグメントに分けて管理し、
データベース更新処理機能部が、データの更新要求を受け付け、データ更新する前記メモリ上のデータセグメントを決定して、データの書き換えを行なう更新ステップと、
ジャーナル情報出力機能部が、前記データベース更新処理機能部から前記データ更新の履歴情報であるジャーナル情報を受信して、これをディスクに出力するジャーナル情報出力ステップと、
更新サブセグメント管理機能部が、前記データベース更新処理機能部から前記更新対象データセグメント情報を受信して、対応するサブセグメント更新フラグを更新ありの状態にするサブセグメント更新ステップと、
チェックポイントデータ取得領域抽出機能部が、前記更新ありの状態にあるサブセグメント更新フラグに対応するセグメント情報を抽出して、チェックポイントデータを決定する抽出ステップと、
チェックポイントデータ出力部が、前記チェックポイントデータをチェックポイント時に前記ディスクに出力するチェックポイントデータ出力ステップと、
リカバリ機能部が、前記ディスクに記録したチェックポイントデータ及び直前のチェックポイント以降のジャーナルデータを、システム起動時に、前記メモリ領域に復元して、当該ジャーナルデータに基づいてチェックポイントデータ更新の後追い処理を行う復元ステップと、を有することを特徴とするデータ復元方法。
【請求項３】
上記の請求項１または２に記載のデータ復元方法を、コンピュータプログラムで記載してそれを実行可能にしたことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速な検索・更新性能を要求されるオンメモリデータベースでのバックアップ処理に関する。
【背景技術】
【０００２】
従来のオンメモリデータベースシステムでは、すべてのデータベースデータを揮発性のメモリ上に確保し、そこに対するデータの参照、更新を行うことで高速なデータアクセスを提供する。しかしデータが揮発性を持つメモリ上に確保されていることから、突然の停電等に対し、何らかの形でのデータ保証を行う必要がある。
【０００３】
一般的には障害発生時におけるデータ保証のため、ある瞬間のデータ状態を永続的に保証するチェックポイントと呼ばれるタイミングの確保、及び複数のチェックポイント間でのデータ更新履歴であるジャーナル情報により任意のデータベース状態を保証している。特にチェックポイントに際しては、頻繁に更新されるメモリ上データの瞬間的な状態に近い内容を永続的な領域であるハードディスク等に確保する関係上、メモリ上データ全域を先頭から連続的にディスク上に出力することにより短時間でのデータ確保を行い、データ確保の間に発生する更新情報についてはジャーナル情報の形で確保する。
【０００４】
障害が発生した場合には、再起動を契機としてメモリ空間を確保した後、最新のチェックポイントで確保したチェックポイントデータをメモリ上に展開し、さらにチェックポイント後のジャーナル情報によるデータ更新の後追いを実施することで、チェックポイントファイル確保直後から障害発生直前までの任意の時点で確定していたトランザクション処理が行われたデータベース状態を復元することを実現している(例えば、非特許文献１参照。)。
【非特許文献１】Ｋｅｎｎｅｔｈ  Ｓａｌｅｍ、Ｈｅｃｔｏｒ  Ｇａｒｃｉａ−Ｍｏｌｉｎａ著、「Ｓｙｓｔｅｍ  Ｍ：Ａ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｔｅｓｔｂｅｄ  ｆｏｒ  Ｍｅｍｏｒｙ  Ｒｅｓｉｄｅｎｔ  Ｄａｔａ」、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  ｋｎｏｗｌｅｄｇｅ  ａｎｄ  ｄａｔａ  ｅｎｇｉｎｅｅｒｉｎｇ．Ｖｏｌ．２、Ｎｏ．１、Ｍａｒｃｈ  １９９０
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、従来のデータ保証方法ではデータベースメモリ全域のスナップショットをディスク上に確保する関係上、チェックポイントタイミングでは数分に渡るディスクＩ／Ｏが発生することになり、ＣＰＵ資源もそれに応じて相当量を消費する。これがアプリケーションからのデータベースアクセス性能を劣化させる要因となる。
【０００６】
また、チェックポイントファイル取得を行っている間のジャーナル情報も相当量になるため、障害発生後のデータベース復旧時には、最低限のデータ整合性が保証されている時点までの復元に必要なジャーナル情報の後追い処理の時間が必要となり、交換機や金融などの障害時のサービス停止時間を可能な限り短時間化しなければならないようなシステムでは特に問題となる。
【０００７】
後追い処理を短時間化するには、チェックポイント間隔を短くする方法が考えられるが、前述のようにチェックポイントファイル出力時間が長く、高負荷がかかるため、チェックポイント頻度を上げるとシステム全体のパフォーマンスが著しく低下することとなり、現実的な対処方法とはならない。
【０００８】
本発明では、チェックポイントで確保しなければならないデータ構成を変更することでディスク出力データ量を抑え、これによりチェックポイントでのデータベースアプリケーションからのアクセス性能劣化を抑えること、及び障害復旧時の復旧時間短縮化を行う。また、これを実現するためのチェックポイントでのデータ格納技術とそれに基づくデータ復旧技術を提供する。
【課題を解決するための手段】
【０００９】
そこで、上記課題を解決するために、請求項１に記載の発明は、オンメモリデータベースシステムにおけるデータ復元方法であって、前記オンメモリデータベースシステムは、オンメモリデータベースのメモリ上データ領域を複数のセグメントに分けて管理し、データの更新を行うデータベース更新処理機能部が、データ更新の履歴情報であるジャーナル情報をディスクに送信するステップと、チェックポイントデータ取得領域抽出機能部が、データが更新されたセグメント情報を抽出して、これをチェックポイント時に前記ディスクに送信するステップと、リカバリ機能部が、システム起動時に、前記ディスクに記憶された直前チェックポイント以降のジャーナルデータに基づいて、前記ディスクに記憶されたチェックポイントデータ更新の後追い処理を行うステップと、を有することを特徴とする。
【００１０】
また、請求項２に記載の発明は、オンメモリデータベースシステムにおけるデータ復元方法であって、前記オンメモリデータベースシステムは、オンメモリデータベースのメモリ上のデータ領域を複数のセグメントに分けて管理し、データベース更新処理機能部が、データの更新要求を受け付け、データ更新する前記メモリ上のデータセグメントを決定して、データの書き換えを行なう更新ステップと、ジャーナル情報出力機能部が、前記データベース更新処理機能部から前記データ更新の履歴情報であるジャーナル情報を受信して、これをディスクに出力するジャーナル情報出力ステップと、更新サブセグメント管理機能部が、前記データベース更新処理機能部から前記更新対象データセグメントを受信して、対応するサブセグメント更新フラグを更新ありの状態にするサブセグメント更新ステップと、チェックポイントデータ取得領域抽出機能部が、前記更新ありの状態にあるサブセグメント更新フラグに対応するセグメント情報を抽出して、チェックポイントデータを決定する抽出ステップと、チェックポイントデータ出力部が、前記チェックポイントデータをチェックポイント時に前記ディスクに出力するチェックポイントデータ出力ステップと、リカバリ機能部が、前記ディスクに記録したチェックポイントデータ及び直前のチェックポイント以降のジャーナルデータを、システム起動時に、前記メモリ領域に復元して、当該ジャーナルデータに基づいてチェックポイントデータ更新の後追い処理を行う復元ステップと、を有することを特徴とする。
【００１１】
また、請求項３に記載の発明は、上記の請求項１または２に記載のデータ復元方法を、コンピュータプログラムで記載してそれを実行可能にしたことを特徴とする。
【００１２】
請求項１〜３に記載の発明では、旧来のメモリ上データベースデータの全領域をディスク上に出力するのではなく、メモリ上データ領域を複数ブロックであるセグメントに分けて管理し、前回のチェックポイント以降の更新があったセグメントについてブロック単位で更新情報を管理する。
【００１３】
チェックポイント時には該当セグメントのみをディスク上に出力し、障害発生後のリカバリ時には、ディスク上の最新世代セグメントデータファイル群からメモリ上にデータ展開を行い、チェックポイント取得以降のジャーナル情報によりトランザクションの後追いを実行する。
【００１４】
このようなデータ復元により、従来メモリ上データ全域のディスク出力は不要となり、チェックポイント処理時間の短縮化に伴う必要マシンリソースの削減、これに伴いチェックポイント間隔を短く設定できることからチェックポイント間に発生するジャーナル情報量を抑え、リカバリ時のジャーナル後追い処理量を少なくすることによりシステムの停止時間の短縮化が可能となる。
【発明の効果】
【００１５】
請求項１〜３に記載の発明によれば、従来のオンメモリデータベースシステムにおいて、チェックポイントにおけるディスク出力量を低減することで、通常運用の背景で必要なＣＰＵリソース・Ｉ／Ｏリソースを抑え、通常アクセス性能を維持したまま障害時に備えたデータ保証処理を実施することができる。
【００１６】
また、チェックポイント処理時間が短くなることからチェックポイント頻度を上げることが可能となり、さらにはチェックポイント間での更新履歴情報であるジャーナル情報のデータ量を小さく抑えることができる。このことからリカバリ時に必要な更新トランザクションの後追い処理時間を短くでき、システム回復までのサービス停止時間を短くすることが可能となる。
【００１７】
これにより、一般ユーザーに対してデータベースアプリケーションの安定したアクセス性能を提供でき、障害に対して短時間のサービス停止で済むようになる。
【発明を実施するための最良の形態】
【００１８】
図１に本発明のオンメモリデータベースシステム構成図を、図２に当該システムにおけるチェックポイントデータ取得フローを示す。
【００１９】
図１に示すように、本発明のオンメモリデータベースシステムは「データベース更新処理機能部１００」、「更新セグメント管理機能部２００」、「システム域・データベース域３００」、「サブセグメント更新フラグ４００」、「チェックポイントデータ取得領域抽出機能部５００」、「差分サブセグメントデータ群６００」、「チェックポイントデータ出力機能部７００」、「ＪＮＬ出力機能部８００」、「チェックポイントデータ９００」、「ＪＮＬデータ１０００」、「リカバリ機能部１１００」、「メモリ内データ領域１２００」、及び「磁気ディスク装置１３００」を有している。
【００２０】
データベース更新処理機能部１００はデータベースデータのデータ更新要求の制御を行う。
【００２１】
更新サブセグメント管理機能部２００はデータ更新に際して変更が加わるデータ・セグメントの状態管理を行う。
【００２２】
チェックポイントデータ取得領域抽出機能部５００は更新セグメント情報からバックアップに必要なデータ・セグメント群をメモリ内データ域１２００より抽出する。
【００２３】
チェックポイントデータ出力機能部７００は抽出されたデータ・セグメント群を磁気ディスク装置１３００に出力する。
【００２４】
ＪＮＬ出力機能部８００はチェックポイント取得処理中に発生した更新履歴を磁気ディスク装置１３００に出力する。
【００２５】
リカバリ機能部１１００は磁気ディスク装置１３００に記憶したチェックポイントデータ９００及びＪＮＬデータ１０００からシステム機動時にデータをメモリ上に復旧する。
【００２６】
また、図２に示すように、このオンメモリデータベースシステムでは、メモリ中のシステム域・データベース域３００はいずれもセグメントと呼ぶ固定サイズの単位を元に構成されている。
【００２７】
上記オンメモリデータベースシステムにおいて、外部からのデータ更新処理をデータベース更新処理機能部１００が受けると、インデックス情報等により更新対象のデータセグメントを確定させて、データの更新処理を行い、更新サブセグメント管理機能部２００がセグメント更新フラグ４００上の該当するセグメントのフラグを“更新あり”の状態に変更する。
【００２８】
また、平行してデータベース更新処理機能部１００は更新履歴情報であるＪＮＬ情報を磁気ディスク装置１３００上にＪＮＬデータ１０００として出力を行うようＪＮＬ取得機能部８００に伝達する。
【００２９】
一定時間毎、又はＪＮＬデータ１０００が一定量を超えた場合に、チェックポイントデータ取得領域抽出機能部５００はサブセグメント更新フラグで“更新あり”のフラグ状態になっているセグメントを抽出して、差分サブセグメントデータ群６００を確定させ、さらにチェックポイントデータ出力機能部７００がチェックポイント時に、磁気ディスク装置１３００へチェックポイントデータ９００として出力する。
【００３０】
システム起動時等においてはリカバリ機能部１１００が呼び出され、チェックポイントデータ９００をメモリ内データ域１２００に展開した上、システム域・データベース域３００に対してＪＮＬデータ１０００によりトランザクションの後追い処理を実施することで、障害発生直前までに確定していたトランザクションを再現する。
【００３１】
このようにオンメモリデータベースシステムの処理は、バックアップ処理とリカバリ処理とに大きく分けられる。以下に、バックアップ処理及びリカバリ処理について図３及び図４を用いて詳細に説明する。
【００３２】
（バックアップ処理）
外部からのデータベース更新処理要求を、データベース更新処理機能部１００が受信する(Ｓ３１)。
【００３３】
データベース更新処理機能部１００はメモリ内データ域１２００の情報を元にデータベース更新要求が書き換えるべきデータ位置を解析し、メモリ内データ域１２００にあるシステム域・データベース域３００の書き換え処理を行う。平行して、該当するメモリ内データ域１２００の位置を更新サブセグメント管理機能部２００へ送り、また更新履歴情報であるＪＮＬ情報をＪＮＬ取得機能部８００へ送信する(Ｓ３２)。
【００３４】
更新サブセグメント管理機能部２００は、与えられたメモリ内データ域１２００の位置の管理フラグであるサブセグメント更新フラグ４００を“更新あり”の状態に設定する(Ｓ３３)。
【００３５】
ＪＮＬ取得機能部８００は与えられた更新履歴情報をＪＮＬデータ１０００として磁気ディスク装置１３００へ出力する(Ｓ３４)。
【００３６】
一定の時間間隔、又は前回のチェックポイントのタイミングから蓄積されたＪＮＬの量が一定量を超えた段階で、チェックポイントデータ取得領域抽出機能部５００はサブセグメント更新フラグ４００を参照し、前回のチェックポイント時からの更新差分情報を取得し、それをチェックポイントデータ出力機能部７００へ送出し、そのタイミングでサブセグメント更新フラグ４００を初期状態に戻す(Ｓ３５)。
【００３７】
チェックポイントデータ出力機能部７００はチェックポイント時に、受け取った更新差分情報をチェックポイントデータ９００として磁気ディスク装置１３００へ出力する(Ｓ３６)。なお、前回のチェックポイント時に確保した更新差分情報と同じサブセグメントの情報を出力する場合は、前に取得したデータへの上書きを行う。また、以上の処理が終了したタイミングでＪＮＬデータについては新しいファイルを作り、それ以降の更新処理に伴うＪＮＬ出力を書き込む。
【００３８】
上記Ｓ３１から３６をシステム起動時から終了まで繰り返し実施する。なお、上記のＳ３５からＳ３６までの処理を実施中にはシステムの停止は行えない。
【００３９】
（リカバリ処理）
システムの起動時に確保されたメモリ領域へリカバリ機能部１１００が呼び出され、磁気ディスク装置１３００に記録されたチェックポイントデータをメモリ内データ域１２００にロードする(Ｓ４１)。
【００４０】
リカバリ機能部１１００は、Ｓ４１が終了後、磁気ディスク装置１３００に記録されたＪＮＬデータにより更新の後追い処理をメモリに対して行う(Ｓ４２)。
【００４１】
Ｓ４２が終了し次第、データベース更新処理機能部１００を外部に開放し、サービスを開始する(Ｓ４３)。
【００４２】
なお、本発明のオンメモリデータベースシステムの適用例としては以下のようなものがある。
【００４３】
電話交換処理などのサービスにおいては、１つのデータベース処理（トランザクション）としては極めて小さく、その代わり単位時間あたりの処理用級数が極めて大きいという特徴を持つ。また、サービスの性格上、バックアップなどの保守操作に対してシステムを停止することはできず、すべての保守操作はオンラインにて実現される必要があるため、バックアップもオンライン背景での動作が求められる。
【００４４】
このようなシステムに本発明のオンメモリデータベースシステムを適用すると、ショートトランザクション、高スループットというサービス要求に対し、オンメモリデータベースシステムであることから特に検索処理に対する性能を確保し、また、チェックポイントとＪＮＬによるオンラインバックアップ処理を提供することにより、サービス無停止での保守操作を提供することが可能となる。
【００４５】
また、本発明のオンメモリデータベースシステムを利用したアプリケーション例としては次のような例が考えられる。
【００４６】
交換処理では電話のユーザー登録情報から話中管理などのステータス情報までさまざまな種類のデータが管理されるが、特にステータス情報などは頻繁に更新が発生するデータであり、更新に伴うＪＮＬ情報もかなりの量を出力する。リカバリ処理においては、最新世代のチェックポイントデータをメモリにロード後、ＪＮＬ情報によりトランザクション処理を後追いするが、本サーバーシステムを適用することでチェックポイント処理量を抑えることでチェックポイント間隔を短くし、リカバリ処理で使用するＪＮＬ情報量を抑え、短い時間でのリカバリを可能とする。
【００４７】
なお、本発明のオンメモリデータベースシステムは、例えば、オンメモリデータベースシステムを構成するコンピュータ装置が有するＣＰＵによって実現され、必要とするデータベース更新処理機能、更新サブセグメント管理機能、チェックポイントデータ取得領域抽出機能、チェックポイントデータ出力機能、ＪＮＬ出力機能、リカバリ機能などをアプリケーションプログラムとして搭載することができる。
【００４８】
また、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のＣＰＵ(ＭＰＵ)が記録媒体に格納されたプログラムコードを読み出し実行することによっても実現できる。その場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体、例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＭＯ、ＨＤＤ、等は本発明を構成する。
【図面の簡単な説明】
【００４９】
【図１】本発明のオンメモリデータベースシステム構成図。
【図２】本発明のオンメモリデータベースシステムにおけるチェックポイントデータフローを示す図。
【図３】バックアップ処理フロー図。
【図４】リカバリ処理フロー図。
【符号の説明】
【００５０】
１００…データベース更新処理機能部
２００…更新サブセグメント管理機能部
３００…システム域・データベース域
４００…サブセグメント更新フラグ
５００…チェックポイントデータ取得領域抽出機能部
６００…差分サブセグメントデータ群
７００…チェックポイントデータ出力機能部
８００…ＪＮＬ出力機能部
９００…チェックポイントデータ
１０００…ＪＮＬデータ
１１００…リカバリ機能部
１２００…メモリ内データ域
１３００…磁気ディスク装置
【図１】
2006139696.tif 000003
【図２】
2006139696.tif 000004
【図３】
2006139696.tif 000005
【図４】
2006139696.tif 000006