(57)【特許請求の範囲】
【請求項１】
業務アプリケーションで用いられるデータを格納する共有メモリと、
前記共有メモリで更新の対象となるデータを格納するデータベースと、
特定のデータの更新要求を受信した場合に、前記共有メモリに格納されているデータのうち、前記更新要求に対応するデータを更新する共有メモリ更新部と、
前記共有メモリに格納されているデータが更新されたか否かを判定する共有メモリ監視部と、
前記共有メモリ監視部によって前記共有メモリに格納されているデータのうち第１データが更新されたと判定された場合に、前記データベースに格納されているデータのうち、前記第１データに対応するデータを更新するデータベース更新部と、を備え、
前記共有メモリに格納されるデータおよび前記データベースに格納されるデータは、データの更新に伴って更新される番号をそれぞれ有し、
前記共有メモリ監視部は、それぞれのデータの前記番号同士を比較することで、前記共有メモリに格納されているデータが更新されたか否かを判定し、
前記データベース更新部は、前記第１データとは異なる第２データが更新されたと判定された場合に、前記第１データに対応するデータの更新処理を実行している間は、当該第１データに対応するデータの更新処理と並行して前記第２データに対応するデータの更新処理を実行する、
ことを特徴とするデータベースシステム。
【請求項２】
前記番号は、データの更新回数を示す世代番号である、ことを特徴とする請求項１記載のデータベースシステム。
【請求項３】
業務アプリケーションで用いられるデータを格納する共有メモリと、前記共有メモリで更新の対象となるデータを格納するデータベースと、を有し、前記共有メモリに格納されるデータおよび前記データベースに格納されるデータは、データの更新に伴って更新される番号をそれぞれ有する、データベースシステムを制御するデータベース更新方法であって、
特定のデータの更新要求を受信した場合に、前記共有メモリに格納されているデータのうち、前記更新要求に対応するデータを更新する共有メモリ更新ステップと、
前記共有メモリおよび前記データベースにそれぞれ格納されるデータの前記番号同士を比較することで、前記共有メモリに格納されているデータが更新されたか否かを判定する共有メモリ監視ステップと、
前記共有メモリ監視ステップにおいて前記共有メモリに格納されているデータのうち第１データが更新されたと判定された場合に、前記データベースに格納されているデータのうち、前記第１データに対応するデータを更新するデータベース更新ステップと、を含み、
前記データベース更新ステップは、前記第１データとは異なる第２データが更新されたと判定された場合に、前記第１データに対応するデータの更新処理を実行している間は、当該第１データに対応するデータの更新処理と並行して前記第２データに対応するデータの更新処理を実行する、
ことを特徴とするデータベース更新方法。
【請求項４】
請求項３に記載の各ステップをコンピュータに実行させるためのデータベース更新プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステム、データベース更新方法およびデータベース更新プログラムに関する。
【背景技術】
【０００２】
業務処理を行うデータベースシステムのなかには、共有メモリを使用して業務アプリケーションを実行し、共有メモリの内容が更新されるたびに更新前後の情報をデータベースに格納するものがある。このようなシステムにおいて、共有メモリの更新処理とデータベースの更新処理とを一つのプロセスで同期させて行うと、例えば、ネットワーク障害等によりデータベースの更新処理が遅延した場合に、業務アプリケーションが関与する共有メモリの更新処理が終了しているにもかかわらず、データベースの更新処理を待機し続ける状態が生じ得る。このような場合には、プロセスの完了が遅延してしまう。
【０００３】
このような問題を解決するために、共有メモリの更新処理とデータベースの更新処理とを異なるプロセスで非同期に実行する技術がある（下記特許文献１参照）。しかしながら、非同期に実行する場合であっても、一つの更新要求に対するデータベースの更新処理に遅延が生ずると、この更新処理が完了するまでは後続の更新要求に対するデータベースの更新処理が待機し続けることになる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−８４８８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上述した課題を解決するためになされたものであり、データの更新処理の効率を向上させることができるデータベースシステム、データベース更新方法およびデータベース更新プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のデータベースシステムは、業務アプリケーションで用いられるデータを格納する共有メモリと、前記共有メモリで更新の対象となるデータを格納するデータベースと、特定のデータの更新要求を受信した場合に、前記共有メモリに格納されているデータのうち、前記更新要求に対応するデータを更新する共有メモリ更新部と、前記共有メモリに格納されているデータが更新されたか否かを判定する共有メモリ監視部と、前記共有メモリ監視部によって前記共有メモリに格納されているデータのうち第１データが更新されたと判定された場合に、前記データベースに格納されているデータのうち、前記第１データに対応するデータを更新するデータベース更新部と、を備え、前記データベース更新部は、前記第１データとは異なる第２データが更新されたと判定された場合に、前記第１データに対応するデータの更新処理を実行している間は、当該第１データに対応するデータの更新処理と並行して前記第２データに対応するデータの更新処理を実行する。
【０００７】
本発明のデータベース更新方法は、業務アプリケーションで用いられるデータを格納する共有メモリと、前記共有メモリで更新の対象となるデータを格納するデータベースと、を有するデータベースシステムを制御するデータベース更新方法であって、特定のデータの更新要求を受信した場合に、前記共有メモリに格納されているデータのうち、前記更新要求に対応するデータを更新する共有メモリ更新ステップと、前記共有メモリに格納されているデータが更新されたか否かを判定する共有メモリ監視ステップと、前記共有メモリ監視ステップにおいて前記共有メモリに格納されているデータのうち第１データが更新されたと判定された場合に、前記データベースに格納されているデータのうち、前記第１データに対応するデータを更新するデータベース更新ステップと、を含み、前記データベース更新ステップは、前記第１データとは異なる第２データが更新されたと判定された場合に、前記第１データに対応するデータの更新処理を実行している間は、当該第１データに対応するデータの更新処理と並行して前記第２データに対応するデータの更新処理を実行する。
【０００８】
本発明のデータベース更新プログラムは、上記データベース更新方法に含まれる各ステップをコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、データの更新処理の効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態におけるデータベースシステムの構成を例示するブロック図である。
【図２】共有メモリに格納されるデータのデータ構成を例示する図である。
【図３】データベースに格納されるデータのデータ構成を例示する図である。
【図４】共有メモリの更新処理の流れを説明するためのフローチャートである。
【図５】共有メモリの監視処理の流れを説明するためのフローチャートである。
【図６】データベースの更新処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して、本発明に係るデータベースシステム、データベース更新方法およびデータベース更新プログラムの好適な実施形態について説明する。
【００１２】
まず、図１を参照して、実施形態におけるデータベースシステムの構成について説明する。データベースシステム１は、共有メモリ２０を使用して業務アプリケーションを実行するシステムであって、共有メモリ２０の内容が更新された場合には、非同期でデータベース３０の内容を更新するシステムである。データベースシステム１は、機能的には、例えば、共有メモリ更新部１１と、共有メモリ監視部１２と、データベース更新部１３とを有する。各部の機能については後述する。
【００１３】
このデータベースシステム１は、物理的には、例えば、ＣＰＵ（Central Processing Unit）と、記憶装置と、入出力インターフェースとを含んで構成される。記憶装置には、例えば、ＣＰＵで処理されるプログラムやデータを記憶するＲＯＭ（Read Only Memory）やＨＤＤ（Hard Disk Drive）と、主として制御処理のための各種作業領域として使用されるＲＡＭ（Random Access Memory）とが含まれる。これらの要素は、互いにバスを介して接続されている。ＣＰＵが、ＲＯＭに記憶されたプログラムを実行し、入出力インターフェースを介して受信されるメッセージや、ＲＡＭに展開されるデータを処理することで、データベースシステム１における各部の機能を実現することができる。
【００１４】
図２を参照して、共有メモリ２０に格納されるデータ（以下、「共有データ」という。）のデータ構成について説明する。共有データは、データ項目として、例えば、データＩＤ項目、世代番号項目およびデータ内容項目を有する。データＩＤ項目は、共有データを一意に特定する識別情報を格納する。世代番号項目は、共有データの更新回数を格納する。世代番号は、初期値が０に設定され、更新要求を受信するたびにインクリメントされる。データ内容項目は、共有データの本体であるデータ内容を格納する。
【００１５】
図３を参照して、データベース３０に格納されるデータ（以下、「ＤＢデータ」という。）のデータ構成について説明する。ＤＢデータは、データ項目として、例えば、データＩＤ項目、世代番号項目、データ内容項目および起動状態項目を有する。データＩＤ項目、世代番号項目およびデータ内容項目については、上述した共有データの各データ項目と同様である。起動状態項目は、ＤＢデータに対応するデータベース３０の更新処理スレッドが“未起動”であるか“起動中”であるかを示す情報を格納する。
【００１６】
図１に示す共有メモリ更新部１１は、特定の共有データを更新するように要求する更新要求コマンドを受信した場合に、更新要求コマンドで指定された共有データのデータ内容を、更新要求コマンドで指定されたデータ内容で更新する。更新要求コマンドは、例えば利用者によって発行される。更新要求コマンドには、例えば利用者によって指定された更新対象データのデータＩＤとデータ内容とが含まれる。更新要求コマンドが発行されると、共有メモリ２０の更新プロセスが起動する。
【００１７】
共有メモリ更新部１１は、共有データを更新した後に、その更新に対応する共有メモリ２０の更新プロセスを終了させる。
【００１８】
共有メモリ監視部１２は、定期的に、共有データが更新されたか否かを判定することで、共有メモリ２０を監視する。判定する間隔は、利用者が任意に設定することができる。
【００１９】
共有メモリ監視部１２は、共有メモリ２０とデータベース３０とを参照し、同一のデータＩＤを有する共有データの世代番号とＤＢデータの世代番号とを比較する。共有メモリ監視部１２は、共有データの世代番号がＤＢデータの世代番号よりも大きい場合に、当該ＤＢデータの起動状態が“未起動”であるか否かを判定する。共有メモリ監視部１２は、ＤＢデータの起動状態が“未起動”である場合に、データベース３０の更新処理を要求する。
【００２０】
データベース更新部１３は、共有メモリ監視部１２によってデータベース３０の更新処理が要求された場合に、更新処理の要求ごとにデータベース３０の更新スレッドを起動する。データベース更新部１３は、更新処理の要求に対応する共有データの世代番号およびデータ内容を、ＤＢデータの世代番号およびデータ内容に反映させて更新する。データベース更新部１３は、更新スレッドが複数起動された場合に、複数の更新スレッドを並行して動作させる。
【００２１】
データベース更新部１３は、ＤＢデータを更新した後に、その更新に対応するデータベース３０の更新スレッドを終了させる。
【００２２】
次に、図面を参照して、データベースシステム１における動作を説明する。最初に、図４を参照して、共有メモリ２０の更新処理の流れについて説明する。
【００２３】
最初に、共有メモリ更新部１１は、更新要求コマンドを受信する（ステップＳ１０１）と、更新要求コマンドに基づいて共有データを更新する（ステップＳ１０２）。続いて、共有メモリ更新部１１は、共有メモリ２０の更新プロセスを終了させる（ステップＳ１０３）。
【００２４】
次に、図５を参照して、共有メモリ２０の監視処理の流れについて説明する。この監視処理は、定期的に実行される。
【００２５】
最初に、共有メモリ監視部１２は、同一のデータＩＤを有する共有データとＤＢデータとを抽出し、共有データの世代番号がＤＢデータの世代番号よりも大きいか否かを判定する（ステップＳ２０１）。この判定がＮＯである場合（ステップＳ２０１；ＮＯ）に、共有メモリ監視部１２は、上記ステップＳ２０１の処理に移行して、次の比較対象となるデータを抽出する。
【００２６】
一方、上記ステップＳ２０１の判定で共有データの世代番号がＤＢデータの世代番号よりも大きいと判定した場合（ステップＳ２０１；ＹＥＳ）に、共有メモリ監視部１２は、当該ＤＢデータの起動状態が“未起動”であるか否かを判定する（ステップＳ２０２）。この判定がＮＯである場合（ステップＳ２０２；ＮＯ）に、共有メモリ監視部１２は、上記ステップＳ２０１の処理に移行して、次の比較対象となるデータを抽出する。
【００２７】
一方、上記ステップＳ２０２の判定で起動状態が“未起動”であると判定した場合（ステップＳ２０２；ＹＥＳ）に、共有メモリ監視部１２は、データベース更新部１３にデータベース３０の更新処理を要求する（ステップＳ２０３）。共有メモリ監視部１２は、共有データおよびＤＢデータの全てを比較し終わるまで、上記ステップＳ２０１の処理に移行する。
【００２８】
次に、図６を参照して、データベース３０の更新処理の流れについて説明する。
【００２９】
最初に、データベース更新部１３は、更新処理の要求を受信する（ステップＳ３０１）と、この要求に対応するＤＢデータの更新スレッドを起動する（ステップＳ３０２）。
【００３０】
続いて、データベース更新部１３は、更新処理の要求に対応するＤＢデータの起動状態を“起動中”に変更する（ステップＳ３０３）。
【００３１】
続いて、データベース更新部１３は、更新開始ログを出力し（ステップＳ３０４）、更新処理の要求に基づいてＤＢデータを更新する（ステップＳ３０５）。
【００３２】
続いて、データベース更新部１３は、更新終了ログを出力し（ステップＳ３０６）、更新処理の要求に対応するＤＢデータの起動状態を“未起動”に変更する（ステップＳ３０７）とともに、上記ステップＳ３０２で起動した更新スレッドを終了させる（ステップＳ３０８）。
【００３３】
上述したように、実施形態におけるデータベースシステム１によれば、データの更新要求コマンドを受信した場合に、共有メモリ２０に格納されている共有データを更新し、この更新要求により起動されたプロセスを終了させることができ、共有メモリ２０に格納されている共有データが更新された場合に、更新された共有データごとに更新スレッドを起動し、更新スレッドごとに並行して共有データに対応するＤＢデータを更新させることができる。
【００３４】
これにより、例えば一つの更新スレッドにおける更新処理が遅延した場合であっても、この遅延の影響を受けることなく更新要求のプロセスを実行して共有データを更新させることができ、他の更新スレッドにおける更新処理にも影響を来たすことなくＤＢデータを更新させることができる。それゆえに、データの更新処理の効率を向上させることができる。
【００３５】
また、更新スレッドごとに更新開始ログと更新終了ログとを出力することができるため、ＤＢデータの更新状況を正確に把握することが可能となる。
【００３６】
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【００３７】
例えば、上述した実施形態では、本発明に係るデータベースシステムを一つの装置に組み込んだ状態で説明しているが、本発明に係るデータベースシステムは複数の装置で実施することができる。この場合には、上述した実施形態におけるデータベースシステムが有する各機能を複数の装置に分散し、これら複数の装置群を上述した実施形態におけるデータベースシステムと同様に機能させればよい。
【００３８】
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
【００３９】
（付記１）  業務アプリケーションで用いられるデータを格納する共有メモリと、前記共有メモリで更新の対象となるデータを格納するデータベースと、特定のデータの更新要求を受信した場合に、前記共有メモリに格納されているデータのうち、前記更新要求に対応するデータを更新する共有メモリ更新部と、前記共有メモリに格納されているデータが更新されたか否かを判定する共有メモリ監視部と、前記共有メモリ監視部によって前記共有メモリに格納されているデータのうち第１データが更新されたと判定された場合に、前記データベースに格納されているデータのうち、前記第１データに対応するデータを更新するデータベース更新部と、を備え、前記データベース更新部は、前記第１データとは異なる第２データが更新されたと判定された場合に、前記第１データに対応するデータの更新処理を実行している間は、当該第１データに対応するデータの更新処理と並行して前記第２データに対応するデータの更新処理を実行する、ことを特徴とするデータベースシステム。
【００４０】
（付記２）  前記共有メモリに格納されるデータおよび前記データベースに格納されるデータは、データの更新回数を示す世代番号をそれぞれ有し、前記共有メモリ監視部は、それぞれのデータの世代番号同士を比較することで、前記共有メモリに格納されているデータが更新されたか否かを判定する、ことを特徴とする付記１記載のデータベースシステム。
【００４１】
（付記３）  業務アプリケーションで用いられるデータを格納する共有メモリと、前記共有メモリで更新の対象となるデータを格納するデータベースと、を有するデータベースシステムを制御するデータベース更新方法であって、特定のデータの更新要求を受信した場合に、前記共有メモリに格納されているデータのうち、前記更新要求に対応するデータを更新する共有メモリ更新ステップと、前記共有メモリに格納されているデータが更新されたか否かを判定する共有メモリ監視ステップと、前記共有メモリ監視ステップにおいて前記共有メモリに格納されているデータのうち第１データが更新されたと判定された場合に、前記データベースに格納されているデータのうち、前記第１データに対応するデータを更新するデータベース更新ステップと、を含み、前記データベース更新ステップは、前記第１データとは異なる第２データが更新されたと判定された場合に、前記第１データに対応するデータの更新処理を実行している間は、当該第１データに対応するデータの更新処理と並行して前記第２データに対応するデータの更新処理を実行する、ことを特徴とするデータベース更新方法。
【００４２】
（付記４）  付記３に記載の各ステップをコンピュータに実行させるためのデータベース更新プログラム。
【符号の説明】
【００４３】
１…データベースシステム、１１…共有メモリ更新部、１２…共有メモリ監視部、１３…データベース更新部、２０…共有メモリ、３０…データベース。
【図１】
0005578486.tif 000002
【図２】
0005578486.tif 000003
【図３】
0005578486.tif 000004
【図４】
0005578486.tif 000005
【図５】
0005578486.tif 000006
【図６】
0005578486.tif 000007