(57)【特許請求の範囲】
【請求項１】
アプリケーションが要求するデータ更新処理を反映したデータを保持するメインデータベースと、
前記メインデータベースに対する前記データ更新処理のログデータを管理し、前記ログデータをサブデータベースに随時反映させる更新ログ管理部と、を備え、
前記更新ログ管理部は、
前記ログデータを処理順序の保持が必要な処理のログデータと順序の保持が不要な処理のログデータに分けて管理し、前記メインデータベースが使用できなくなった時は、前記処理順序の保持が必要な処理のログデータを全て前記サブデータベースに反映させた後、前記アプリケーションからのデータ更新処理を前記サブデータベースに直接反映させることを可能にする、データベースシステム。
【請求項２】
前記更新ログ管理部は、
各々の前記ログデータの反映優先度を管理し、前記メインデータベースから前記サブデータベースへの切り替え時には、所定の前記反映優先度を付与されたログデータを全て前記サブデータベースに反映させた後、前記アプリケーションからのデータ更新処理を前記サブデータベースに直接反映させることを可能にする、請求項１に記載のデータベースシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムに関する。
【背景技術】
【０００２】
メモリデータベースはディスクデータベースに比べて高速に動作するが、障害発生時にはデータが失われてしまう。そのための対策として、メモリデータベースの更新時にログを作成しておき、随時バックエンドのディスクデータベースにログを反映させていく（遅延更新）構成をとることが一般的である。
【０００３】
データベースの複製を作成する技術として、例えば特許文献１には、更新が行なわれるマスタデータベースと、マスタデータベースの複製を格納するレプリカと、レプリカ上のマスタデータベースの更新データに関して、特定のデータベーステーブル、優先テーブル項目及び優先キーのいずれか一つを更新する優先順位であって、高い優先順位を持つ特定の更新データを、低い優先順位を有する更新データよりも前に更新するように予め決められた優先順位を示す優先順位情報を保持する優先順位情報記憶部と、高い優先順位の更新データが低い優先順位の更新データよりも早く抽出されるように、優先順位情報に従って、更新データを読んで、更新データを抽出する振分部と、抽出された更新データでレプリカを更新する管理部とを備えたデータベースシステムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３６８６５６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
高可用性が求められるシステムにおいては、フロントのデータベースが何らかの理由で利用できなくなった場合には、一時的にバックエンドのデータベースをフロント側として機能させることになるが、その際、全てのデータをバックエンドのデータベースに反映させると時間を要し、その間はサービスを提供できないという問題がある。
【０００６】
特許文献１に開示されたシステムでは、指定された優先順位に従ってレプリカへのデータ反映を行っているが、フロントのデータベースが使用できなくなった際にバックエンドのデータベースに切り替える間のサービスの停止時間を短縮することには対応できない。
【０００７】
そこで、本発明の目的は、データベースの切り替え時に、最低限必要な情報を切り替え先のデータベースに反映させながら、切り替えに伴うサービスの停止時間を最小限に抑えることが可能なデータベースシステムを提供することである。
【課題を解決するための手段】
【０００８】
本発明に係るデータベースシステムは、アプリケーションが要求するデータ更新処理を反映したデータを保持するメインデータベースと、前記メインデータベースに対する前記データ更新処理のログデータを管理し、前記ログデータをサブデータベースに随時反映させる更新ログ管理部と、を備え、前記更新ログ管理部は、前記ログデータを処理順序の保持が必要な処理のログデータと順序の保持が不要な処理のログデータに分けて管理し、前記メインデータベースが使用できなくなった時は、前記処理順序の保持が必要な処理のログデータを全て前記サブデータベースに反映させた後、前記アプリケーションからのデータ更新処理を前記サブデータベースに直接反映させることを可能にするものである。
【発明の効果】
【０００９】
本発明によれば、データベースの切り替え時に、最低限必要な情報を切り替え先のデータベースに反映させながら、切り替えに伴うサービスの停止時間を最小限に抑えることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態による、データベースシステムの構成を示すブロック図。
【図２】本発明の実施の形態による、メモリデータベースの動作のフローチャート。
【図３】本発明の実施の形態による、更新ログ管理部の機能を説明する図。
【図４】本発明の実施の形態による、更新ログ管理テーブルの構成例を示す図。
【図５】本発明の実施の形態による、メモリデータベース操作とディスクデータベース操作の対応定義の例を示す図である。
【図６】本発明の実施の形態による、データベース切り替え時の処理のフローチャート。
【図７】本発明の実施の形態による、データベース切り替え時の、アクセス制御部の処理のフローチャート。
【発明を実施するための形態】
【００１１】
次に、本発明を実施するための形態について、図面を参照して詳細に説明する。
図１は、本発明の実施の形態によるデータベースシステム１の構成を示すブロック図である。図に示すように、データベースシステム１は、アプリケーション部１０１、アクセス制御部１０２、メモリデータベース１０３、更新ログ管理部１０４、メモリ／ディスクＤＢ操作変換部１０５、ディスクデータベース１０６を備えている。
【００１２】
データベースシステム１は、ＣＰＵ、ＲＯＭやＲＡＭ等のメモリ、各種の情報を格納する外部記憶装置、入力インタフェース、出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。なお、データベースシステム１は、単一のコンピュータにより構成されるものであっても、通信ネットワークを介して互いに接続された複数のコンピュータにより構成されるものであってもよい。
【００１３】
アプリケーション部１０１、アクセス制御部１０２、更新ログ管理部１０４、メモリ／ディスクＤＢ操作変換部１０５は、ＣＰＵがＲＯＭ等に格納された所定のプログラムを実行することにより実現される機能のモジュールに相当する。メモリデータベース１０３はＲＡＭ等のメモリによって実現される。ディスクデータベース１０６は、ハードディスクなどの外部記憶装置によって実現される。
【００１４】
次に、データベースシステム１の動作について説明する。
まず、通常の動作、すなわち、メモリデータベース１０３が使用可能である場合の動作について説明する。
【００１５】
アプリケーション部１０１は、アクセス制御部１０２を介してメモリデータベース１０３またはディスクデータベース１０６にアクセスし、データベースに格納されているデータの参照や更新を行う。
【００１６】
アプリケーション部１０１は、データ更新処理を行う場合、更新内容が順序性の保持を要するものであれば、アクセス時にその情報も付加する。順序性保持の要不要はアプリケーション部１０１が決定する。例えば、データの内容が入出金情報等、矛盾があってはならない情報の場合は順序性保持要と判断し、データの参照やバッチ処理など、データベースシステムによるサービスの継続に必ずしも必要でない情報の場合は、順序性保持不要と判断する。
【００１７】
アクセス制御部１０２は、アプリケーション部１０１からのアクセスをメモリデータベース１０３に転送する。
【００１８】
メモリデータベース１０３の動作について図２のフローチャートを用いて説明する。
メモリデータベース１０３は、アプリケーション部１０１からのアクセスを受信すると（ステップＳ１１）、処理内容がデータ更新の要求であるか否かを判定する（ステップＳ１２）。ステップＳ１２でデータ更新要求であると判断された場合（Ｙｅｓ）には、ステップＳ１３に進む。データ更新要求ではない場合（Ｎｏ）には、ステップＳ１４に進んでデータを返却する。
【００１９】
ステップＳ１３では、アプリケーション部１０１に記憶されている対象データの更新データ更新を行う。さらに、ステップＳ１５では、当該データ更新処理が、順序性保持を要するものであるか否かを判定する。順序性保持を要する更新処理である場合（Ｙｅｓ）には、ステップＳ１６へ進み、更新ログ管理部１０４に、順序性保持を要する旨と共に更新内容を通知する。順序性保持が不要な更新処理である場合（Ｎｏ）には、ステップＳ１７へ進み、更新ログ管理部１０４に更新内容を通知する。
【００２０】
更新ログ管理部１０４は、メモリデータベース１０３から通知された更新内容を更新ログ管理テーブルに格納する。図３に示すように、更新ログ管理部１０４は、メモリデータベース１０３で更新された内容を記録する更新ログ管理テーブル有している。更新ログ管理テーブルは、順序性保持を要する更新ログ用のテーブルと、順序性保持が不要な更新ログ用のテーブルがそれぞれ１つずつ用意される。
【００２１】
図４は、更新ログ管理テーブルの構成例を示す図である。更新ログ管理テーブルには、メモリデータベース１０３が更新された時刻、更新の操作種別(書き込み、削除等)、更新されたレコードのキー種別、更新後のレコードの内容等が記録される。
【００２２】
データベースシステム１は、メモリデータベース１０３の更新内容のログをディスクデータベースに反映させる遅延更新を行っている。遅延更新時、更新ログ管理部１０４は、システムの負荷が低い時など、適切なタイミングで、各更新ログ管理テーブルのデータを更新時刻の古いログから順に随時、メモリ／ディスクＤＢ操作変換部１０５を介してディスクデータベース１０６に反映させていく。この時、更新ログの順序性保持の要不要は区別しない。また、ディスクデータベース１０６への反映が完了したログは、更新ログ管理テーブルから削除される。
【００２３】
メモリ／ディスクＤＢ操作変換部１０５は、メモリデータベース１０３で実行された操作をディスクデータベース１０６に対応した処理に変換する。図５は、メモリデータベース１０３用の命令と、それに対応するＳＱＬ等、ディスクデータベース１０６用の命令の定義情報の例である。メモリ／ディスクＤＢ操作変換部１０５は、この定義情報に従ってアプリケーション部１０１や更新ログ管理部１０４からのアクセスをディスクデータベース１０６用の操作に変換する。
【００２４】
ディスクデータベース１０６は、メモリ／ディスクＤＢ操作変換部１０５を介して入力される更新ログ管理部１０４からの遅延更新情報や、メモリデータベース１０３停止時にはアプリケーション部１０１からのデータ更新・参照要求を受けて、データの更新・返却を行う。
【００２５】
なお、アクセス制御部１０２はアプリケーション部１０１からのアクセスをディスクデータベース１０６に転送する場合には、メモリ／ディスクＤＢ操作変換部１０５を介して転送を行う。そのため、アプリケーション部１０１には、どちらのデータベースにアクセスしているかは意識させない。
【００２６】
次に、メモリデータベース１０３が使用できなくなった場合の動作について、図６、７を用いて説明する。
【００２７】
メモリデータベース１０３が障害発生等の理由で使えなくなった場合、図６に示すように、更新ログ管理部１０４は、まず要順序性の更新ログテーブルのログだけをディスクデータベース１０６に全て反映させる。反映が完了したら、アクセス制御部１０２に反映完了通知を送信する。通常の更新ログテーブルに残っているログデータは、適切なタイミングで随時ディスクデータベース１０６に反映させていく。なお、これらの更新ログ反映処理もメモリ／ディスクＤＢ操作変換部１０５を通して行われる。
【００２８】
また、アクセス制御部１０２は、図７に示すように、アプリケーション部１０１のアクセスを検知したら（ステップＳ２１）、メモリデータベース１０３にアクセス可能か否かを判定する（ステップＳ２２）。
【００２９】
メモリデータベース１０３にアクセス可能な場合（Ｙｅｓ）には、メモリデータベース１０３に処理依頼を転送する（ステップＳ２３）。一方、メモリデータベース１０３にアクセスできない場合（Ｎｏ）には、処理の内容が順序性を要するデータへのアクセスであるか否かを判定する（ステップＳ２４）。
【００３０】
ステップＳ２４で順序性を要するデータへのアクセスではない（Ｎｏ）と判定された場合には、処理依頼をメモリ／ディスクＤＢ操作変換部１０５を介してディスクデータベース１０６に転送する（ステップＳ２６）。
【００３１】
一方、ステップＳ２４で順序性を要するデータへのアクセスである（Ｙｅｓ）と判定された場合には、更新ログ管理部１０４から、要順序性更新ログの反映完了通知を受信済みであるか否かを判定する（ステップＳ２５）。
【００３２】
反映完了通知を受信している場合（ステップＳ２５；Ｙｅｓ）には、処理依頼をメモリ／ディスクＤＢ操作変換部１０５を介してディスクデータベース１０６に転送する（ステップＳ２６）。反映完了通知を受信していない場合（ステップＳ２５；Ｎｏ）には、ディスクデータベース１０６への転送を保留し、反映完了通知を受信次第、転送を開始する。
【００３３】
以上のように、本実施形態によれば、メモリデータベース１０３に対する更新ログデータを、順序性が必要な処理と不要な処理に分けて管理し、メモリデータベース１０３が使用出来なくなり、アプリケーション部１０１がアクセスするデータベースをディスクデータベース１０６に切り替える際には、順序性が必要な更新ログデータのみをディスクデータベース１０６に反映させたら、アプリケーション部１０１のディスクデータベース１０６へのアクセスを許可するようにした。このため、データベースの切り替え時に、最低限必要な情報を切り替え先のディスクデータベース１０６に反映させながら、切り替えに伴うサービスの停止時間を最小限に抑えることができる。
【００３４】
また、メモリデータベース１０３に対する更新ログにさらに反映優先度（高、中、低など）を設け、データベース切り替え時に、例えば優先度高のログを全て反映したらサービスを再開し、その他のログについては、優先度中、低の順で順次反映させるようにしてもよい。
【００３５】
本発明は、バックエンドのデータベースに対する遅延更新を行っており、かつ障害発生などでデータベースの切り替えを行う際に、切り替えに伴うサービス停止時間を極力短縮したいシステムに適している。
【００３６】
上記の実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）アプリケーションが要求するデータ更新処理を反映したデータを保持するメインデータベースと、
前記メインデータベースに対する前記データ更新処理のログデータを管理し、前記ログデータをサブデータベースに随時反映させる更新ログ管理部と、を備え、
前記更新ログ管理部は、
前記ログデータを処理順序の保持が必要な処理のログデータと順序の保持が不要な処理のログデータに分けて管理し、前記メインデータベースが使用できなくなった時は、前記処理順序の保持が必要な処理のログデータを全て前記サブデータベースに反映させた後、前記アプリケーションからのデータ更新処理を前記サブデータベースに直接反映させることを可能にする、データベースシステム。
【００３７】
（付記２）前記更新ログ管理部は、
各々の前記ログデータの反映優先度を管理し、前記メインデータベースから前記サブデータベースへの切り替え時には、所定の前記反映優先度を付与されたログデータを全て前記サブデータベースに反映させた後、前記アプリケーションからのデータ更新処理を前記サブデータベースに直接反映させることを可能にする、付記１に記載のデータベースシステム。
【符号の説明】
【００３８】
１ データベースシステム、１０１ アプリケーション部、１０２ アクセス制御部、１０３ メモリデータベース、１０４ 更新ログ管理部、１０５ メモリ／ディスクＤＢ操作変換部、１０６ ディスクデータベース
【図１】
0005621465.tif 000002
【図２】
0005621465.tif 000003
【図３】
0005621465.tif 000004
【図６】
0005621465.tif 000005
【図７】
0005621465.tif 000006
【図４】
0005621465.tif 000007
【図５】
0005621465.tif 000008