(57)【特許請求の範囲】
【請求項１】
データベースシステムであって、
第１の領域に記憶されたデータベースと、第２の領域に記憶されたデータベースとを備える２重化データベースと、
前記２重化データベースへの読み込み要求を受け付けた場合、前記第１の領域のデータベースからデータを読み込む読込手段と、
前記２重化データベースへの書き込み要求を受け付けた場合、前記第２の領域のデータベースに書き込む書込手段と、
前記書込手段が前記第２の領域のデータベースに書き込んだ後、前記第１の領域のデータベースを前記書込手段がアクセスする更新用データベースに、前記第２の領域のデータベースを前記読込手段がアクセスする参照用データベースに、切り替える切替手段とを有し、
前記切替手段は、前記書込手段がデータを書き込む度に、更新用データベースと参照用データベースとを切り替え、
前記書込手段は、前記切替手段による切り替え後、切り替え前の更新用データベースと同期をとるために、切り替え前の更新用データベースに書き込んだデータと同じデータを切り替え後の更新用データベースに書き込み、
前記参照用データベースとして前記第１の領域のデータベースのアドレスが記憶され、前記更新用データベースとして前記第２の領域のデータベースのアドレスが記憶された第１のアドレス記憶手段と、
前記参照用データベースとして前記第２の領域のデータベースのアドレスが記憶され、前記更新用データベースとして前記第１の領域のデータベースのアドレスが記憶された第２のアドレス記憶手段と、をさらに備え、
前記切替手段は、前記書込手段がデータを書き込む度に、前記読込手段および前記書込手段が参照するアドレス記憶手段を、前記第１のアドレス記憶手段、または、前記第１のアドレス記憶手段に記憶された参照用データベースのアドレスと更新用データベースのアドレスとを入れ替えて記憶した前記第２のアドレス記憶手段に切り替えること
を特徴とするデータベースシステム。
【請求項２】
請求項１記載のデータベースシステムであって、
前記書込手段が更新用データベースへの書き込みに失敗した場合、参照用データベースのデータを、更新用データベースへコピーし、データを復旧する復旧手段を、さらに備えること
を特徴とするデータベースシステム。
【請求項３】
請求項１または２記載のデータベースシステムであって、
前記第１の領域および前記第２の領域は、メモリ領域であること
を特徴とするデータベースシステム。
【請求項４】
データベースシステムが行うデータベース管理方法であって、
前記データベースシステムは、第１の領域に記憶されたデータベースと、第２の領域に記憶されたデータベースとを備える２重化データベースを有し、
前記２重化データベースへの読み込み要求を受け付けた場合、前記第１の領域のデータベースからデータを読み込む読込ステップと、
前記２重化データベースへの書き込み要求を受け付けた場合、前記第２の領域のデータベースに書き込む書込ステップと、
前記書込ステップで前記第２の領域のデータベースに書き込んだ後、前記第１の領域のデータベースを前記書込ステップでアクセスする更新用データベースに、前記第２の領域のデータベースを前記読込ステップでアクセスする参照用データベースに、切り替える切替ステップと、
切り替え前の更新用データベースと同期をとるために、切り替え前の更新用データベースに書き込んだデータと同じデータを切り替え後の更新用データベースに書き込む切替後書込ステップと、を行い、
前記切替ステップは、前記書込ステップでデータを書き込む度に、更新用データベースと参照用データベースとを切り替え、
前記データベースシステムは、
前記参照用データベースとして前記第１の領域のデータベースのアドレスが記憶され、前記更新用データベースとして前記第２の領域のデータベースのアドレスが記憶された第１のアドレス記憶部と、
前記参照用データベースとして前記第２の領域のデータベースのアドレスが記憶され、前記更新用データベースとして前記第１の領域のデータベースのアドレスが記憶された第２のアドレス記憶部と、をさらに有し、
前記切替ステップは、前記書込ステップでデータを書き込む度に、前記読込ステップおよび前記書込ステップで参照するアドレス記憶部を、前記第１のアドレス記憶部、または、前記第１のアドレス記憶部に記憶された参照用データベースのアドレスと更新用データベースのアドレスとを入れ替えて記憶した前記第２のアドレス記憶部に切り替えること
を特徴とするデータベース管理方法。
【請求項５】
請求項４記載のデータベース管理方法であって、
前記書込ステップで更新用データベースへの書き込みに失敗した場合、参照用データベースのデータを更新用データベースへコピーし、データを復旧する復旧ステップを、さらに行うこと
を特徴とするデータベース管理方法。
【請求項６】
請求項１から請求項３のいずれか１項に記載のデータベースシステムとしてコンピュータシステムを機能させるためのデータベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを管理するデータベースシステム、データベース管理方法、およびデータベース管理プログラムに関する。
【背景技術】
【０００２】
一般的に、データベースシステムは、複数クライアントからの更新要求、検索要求がデータベースシステムに対して並行に処理される際、データの一貫性を保証する機構として並行制御機能（同時に複数のユーザーが利用しても正常に動作するための機能）を有している。２フェーズロック方式（データ操作前に一斉にロックをかけ、データ操作後で一斉にロックを解除する方式）はその代表的手法であり、多くのデータベースシステムで採用されている。しかし、２フェーズロック方式では、デッドロック（２つ以上のスレッドあるいはプロセスなどの処理単位が、互いの処理終了を待ち、結果としてどの処理も先に進めなくなってしまうこと）が発生するため、デッドロックを発見しそれを解消する処理が必要になる。
【０００３】
更新にともなうロックをかける粒度はできるだけ小さくすることが望ましいが、粒度を行単位のように小さくすると、ロック情報の増大、キューの増大が起こり、ロックの競合を検出するためのCPU処理コストが大きくなる問題がある。
【０００４】
このような問題に対して、例えば、非特許文献１では、スピンロック方式をベースとする並行制御方式を採用することで、ロック処理の削減を行っている。
【０００５】
また、非特許文献２には、追記型を採用することで、ロックを行わないロックフリー方式が記載されている
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】中村仁之輔，芳西崇，梅本佳宏，小林伸幸，佐藤文明，水野忠則，「  ネットワークサービス向けメモリ常駐型リレーショナルDBMSの設計と実現」，情報処理学会論文誌. データベース 43(SIG_5(TOD_14)), 134-144, 2002-06-15）
【非特許文献２】「RethinkDB-Rethinking Database Storage」，［online］、インターネット＜http://www.mendeley.com/research/rethinkdbrethinking-database-storage-23/＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１では、データベースの各テーブルにインデックスが大量に設定されているような場合では、データの更新にともなうインデックスの書き換え処理を大量に行う必要が出てくるため、非特許文献１の手法によってロック処理を削減しても、一度のロックの粒度が行単位ではなくテーブル単位、もしくはデータベース全体と広範囲になることは避けられず、その広範囲な書き込みロックによって、他の多くの読み込み処理がブロックされ、処理時間の遅延につながるという問題が生じる。
【０００８】
また、非特許文献２では、追記型の構造を採用することでロックを不要としているが、追記型とした場合、高負荷なメンテナンス処理であるガベージコレクションを実施する必要がある。
【０００９】
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、ガベージコレクションが必要な追記型を用いることなく、ロックを不要とするデータベースシステム、データベース管理方法、およびデータベース管理プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明は、データベースシステムであって、第１の領域に記憶されたデータベースと、第２の領域に記憶されたデータベースとを備える２重化データベースと、前記２重化データベースへの読み込み要求を受け付けた場合、前記第１の領域のデータベースからデータを読み込む読込手段と、前記２重化データベースへの書き込み要求を受け付けた場合、前記第２の領域のデータベースに書き込む書込手段と、前記書込手段が前記第２の領域のデータベースに書き込んだ後、前記第１の領域のデータベースを前記書込手段がアクセスする更新用データベースに、前記第２の領域のデータベースを前記読込手段がアクセスする参照用データベースに、切り替える切替手段とを有し、前記切替手段は、前記書込手段がデータを書き込む度に、更新用データベースと参照用データベースとを切り替え、前記書込手段は、前記切替手段による切り替え後、切り替え前の更新用データベースと同期をとるために、切り替え前の更新用データベースに書き込んだデータと同じデータを切り替え後の更新用データベースに書き込み、前記参照用データベースとして前記第１の領域のデータベースのアドレスが記憶され、前記更新用データベースとして前記第２の領域のデータベースのアドレスが記憶された第１のアドレス記憶手段と、前記参照用データベースとして前記第２の領域のデータベースのアドレスが記憶され、前記更新用データベースとして前記第１の領域のデータベースのアドレスが記憶された第２のアドレス記憶手段と、をさらに備え、前記切替手段は、前記書込手段がデータを書き込む度に、前記読込手段および前記書込手段が参照するアドレス記憶手段を、前記第１のアドレス記憶手段、または、前記第１のアドレス記憶手段に記憶された参照用データベースのアドレスと更新用データベースのアドレスとを入れ替えて記憶した前記第２のアドレス記憶手段に切り替える。
【００１１】
本発明は、データベースシステムが行うデータベース管理方法であって、前記データベースシステムは、第１の領域に記憶されたデータベースと、第２の領域に記憶されたデータベースとを備える２重化データベースを有し、前記２重化データベースへの読み込み要求を受け付けた場合、前記第１の領域のデータベースからデータを読み込む読込ステップと、前記２重化データベースへの書き込み要求を受け付けた場合、前記第２の領域のデータベースに書き込む書込ステップと、前記書込ステップで前記第２の領域のデータベースに書き込んだ後、前記第１の領域のデータベースを前記書込ステップでアクセスする更新用データベースに、前記第２の領域のデータベースを前記読込ステップでアクセスする参照用データベースに、切り替える切替ステップと、切り替え前の更新用データベースと同期をとるために、切り替え前の更新用データベースに書き込んだデータと同じデータを切り替え後の更新用データベースに書き込む切替後書込ステップと、を行い、前記切替ステップは、前記書込ステップでデータを書き込む度に、更新用データベースと参照用データベースとを切り替え、前記データベースシステムは、前記参照用データベースとして前記第１の領域のデータベースのアドレスが記憶され、前記更新用データベースとして前記第２の領域のデータベースのアドレスが記憶された第１のアドレス記憶部と、前記参照用データベースとして前記第２の領域のデータベースのアドレスが記憶され、前記更新用データベースとして前記第１の領域のデータベースのアドレスが記憶された第２のアドレス記憶部と、をさらに有し、前記切替ステップは、前記書込ステップでデータを書き込む度に、前記読込ステップおよび前記書込ステップで参照するアドレス記憶部を、前記第１のアドレス記憶部、または、前記第１のアドレス記憶部に記憶された参照用データベースのアドレスと更新用データベースのアドレスとを入れ替えて記憶した前記第２のアドレス記憶部に切り替える。
【００１２】
本発明は、前記データベースシステムとしてコンピュータシステムを機能させるためのデータベース管理プログラムである。
【発明の効果】
【００１３】
本発明によれば、ガベージコレクションが必要な追記型を用いることなく、ロックを不要とするデータベースシステム、データベース管理方法、およびデータベース管理プログラムを提供することできる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係るデータベースシステムの構成を示す構成図である。
【図２】データベースシステムの処理部を説明するための説明図である。
【図３】データベースシステムの動作を説明するための説明図である。
【図４】データベースシステムの動作を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１６】
図１は、本実施形態のデータベースシステム１の構成を示す構成図である。本実施形態のデータベースシステム１は、図示しないネットワークを介してクライアント２に接続され、クライアント２のからの要求に応じてデータベースからデータを読み込み、またはデータベースへデータの書き込みを行う。
【００１７】
図示するデータベースシステム１は、記憶部としてデータベース１１を備え、制御部（データベースマネージメントシステム）として要求受付部１４と、処理部１５と、エラー判定部１６と、復旧処理部１７とを備える。
【００１８】
本実施形態のデータベース１１は、メモリ上に構成されたインメモリデータベースであって、メモリ領域を第１のメモリ領域（フロントエンドメモリ）１２と、第２のメモリ領域（バックエンドメモリ）１３とに論理的に分けて使用する。そして、データベース１１は、第１のメモリ領域１２と第２のメモリ領域１３にそれぞれ相互に同期した同じ内容のデータベースを備える、２重化データベースである。
【００１９】
また、本実施形態では、２重化されたデータベース１１のいずれか一方を、読み込み（検索）用の参照用データベースとし、他方を書き込み（新規追加、更新、削除）用の更新用データベースとして用いる。すなわち、第１のメモリ領域１２のデータベースを参照用データベースとする場合は、第２のメモリ領域１３のデータベースを更新用データベースとし、逆に第１のメモリ領域１２を更新用データベースとする場合は、第２のメモリ領域１３を参照用データベースとする。
【００２０】
なお、本実施形態のデータベース１１は、メモリ上に構成されたインメモリデータベースとするが、これに限定されるものではなく、ディスク（ＳＳＤ、ＨＤＤなど）上に構成されたデータベースであってもよい。この場合、第１のメモリ領域１２および第２のメモリ領域１３は、第１のディスク領域および第２のディスク領域となる。
【００２１】
要求受付部１４は、クライアント２からデータベース１１へアクセス要求を受け付け、処理結果をクライアント２へ送信する。処理部１５は、要求受付部１４から送出されたアクセス要求に基づいて、データベース１１のデータ処理を行い、処理結果を要求受付部１４に送出する。エラー判定部１６は、更新用データベースへの書き込み処理が正常に終了したか否かのエラーチェックを行う。復旧処理部１７は、更新用データベースへの書き込みに失敗した場合、参照用データベースのデータを更新用データベースへコピーし、データを復旧する。
【００２２】
図２は、図１に示す処理部１５をより詳細に説明するための説明図である。図示する処理部１５は、判別部１５１と、読込処理部１５２と、書込処理部１５３と、切替処理部１５４とを備える。
【００２３】
判別部１５１は、クライアント２から送信されたアクセス要求を、要求受付部１４から受け付けると、読み込み要求か、書き込み要求かを判別する。読み込み要求の場合、判別部１５１は、当該読み込み要求（アクセス要求）を読込処理部１５２に送出する。書き込み要求の場合、判別部１５１は、当該書き込み要求（アクセス要求）を書込処理部１５３に送出する。
【００２４】
読込処理部１５２は、読み込み要求を受け付けると、参照用データベースのメモリ領域のアドレスを、アドレス記憶部を用いて取得する。また、書込処理部１５３は、更新用データベースのメモリ領域のアドレスを、アドレス記憶部を用いて取得する。
【００２５】
本実施形態では、第１のアドレス記憶部Ａと、第２のアドレス記憶部Ｂの２つのアドレス記憶部を備える。第１のアドレス記憶部Ａには、読込処理部１５２がアクセスする参照用データベースとして第１のメモリ領域１２のデータベースのアドレスが記憶され、書込処理部１５３がアクセスする更新用データベースとして第２のメモリ領域１３のデータベースのアドレスが記憶されている。第２のアドレス記憶部Ｂには、読込処理部１５２がアクセスする参照用データベースとして第２のメモリ領域１３のデータベースのアドレスが記憶され、書込処理部１５３がアクセスする更新用データベースとして第１のメモリ領域１２のデータベースのアドレスが記憶されている。読込処理部１５２および書込処理部１５３は、第１のアドレス記憶部Ａまたは第２のアドレス記憶部Ｂを参照して、参照用データベースが格納されたメモリ領域のアドレス、または更新用データベースが格納されたメモリ領域のアドレスをそれぞれ取得する。
【００２６】
切替処理部１５４は、読込処理部１５２および書込処理部１５３が参照するアドレス記憶部を、第１のアドレス記憶部Ａまたは第２のアドレス記憶部Ｂに切り替える。図示する例では、読込処理部１５２および書込処理部１５３が参照するアドレス記憶部は第１のアドレス記憶部Ａとなっている。したがって、読込処理部１５２は、参照用データベースのアドレスとして、第１のメモリ領域１２のアドレスを取得し、第１のメモリ領域１２のデータベースから、読み込み要求で指定されたデータを読み込み（検索し）、所定のデータ処理を行って処理結果を要求受付部１４に送出する。要求受付部１４は、処理結果をクライアント２に送信する。
【００２７】
また、図示する例では、書込処理部１５３は、更新用データベースのアドレスとして、第２のメモリ領域１３のアドレスを取得し、第２のメモリ領域１３のデータベースから、書き込み要求で指定されたデータを書き込み（新規追加、更新、削除）、所定のデータ処理を行って処理結果を要求受付部１４に送出する。要求受付部１４は、処理結果をクライアント２に送信する。
【００２８】
更新用データベースへの書き込みが終了すると、切替処理部１５４は、読込処理部１５２および書込処理部１５３が参照するアドレス記憶部を、第１のアドレス記憶部Ａまたは第２のアドレス記憶部Ｂに切り替える。図示する例では、第１のアドレス記憶部Ａから第２のアドレス記憶部Ｂへ切り替える。これにより、参照用データベースが第２のメモリ領域１３のデータベースに、更新用データベースが第１のメモリ領域１２のデータベースに切り替わる。このように、データを書き込むたびに、アドレス記憶部を切り替えることで、切り替え前の更新用データベースは、参照用データベースとなり、新たに書き込まれたデータが参照用データベースに反映され、読込処理部１５２の読み込み対象とすることができる。一方、切り替え前の参照用データベースは、更新用データベースとなり、切り替え前の更新用データベースと同期を取るために、書込処理部１５３により同様の書き込み処理が行われる。
【００２９】
上記説明したデータベースシステム１は、例えば、ＣＰＵと、メモリと、ＨＤＤ等の外部記憶装置と、入力装置と、出力装置とを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵがメモリ上にロードされたデータベースシステム１用のプログラムを実行することにより、データベースシステム１の各機能が実現される。また、データベースシステム１用のプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ−ＲＯＭなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
【００３０】
次に、本実施形態の動作について説明する。
【００３１】
図３は、本実施形態の動作を説明するための説明図である。
【００３２】
図示する例では、ｔ１時点においては、第１のアドレス記憶部Ａ（図３参照）が使用されている状態（ＯＮの状態）であって、第１のメモリ領域１２のデータベースは、参照用データベースとして使用され、第２のメモリ領域１３のデータベースは、更新用データベースとして使用されているものとする。このとき、データベースシステム１の要求受付部１４は、クライアント２から送信された書き込み要求を受信する。これにより、書込処理部１５３は、第１のアドレス記憶部Ａを参照して更新用データベースとして第２のメモリ領域１３のアドレスを取得し、第２のメモリ領域１３のデータベースを更新する（図示する例では、データ３０１を追加する）。
【００３３】
そして、エラー判定部１６は、書き込み処理が正常に終了したか否かのエラーチェックを行う。書き込みが正常に終了した場合、切替処理部１５４は、参照するアドレス記憶部を第１のアドレス記憶部Ａから第２のアドレス記憶部Ｂに切り替える。すなわち、図２に示す第１のアドレス記憶部ＡをＯＦＦにして、第２のアドレス記憶部ＢをＯＮにする。これにより、読込処理部１５２がアクセスする参照用データベースが第２のメモリ領域１３のデータベースに、また、書込処理部１５３がアクセスする更新用データベースが第１のメモリ領域１２のデータベースに切り替わる。
【００３４】
なお、書き込み処理にエラーが発生した場合、復旧処理部１７は、第１のメモリ領域１２の参照用データベースのデータを、第２のメモリ領域１３の更新用データベースへコピーし、データを復旧する。
【００３５】
切り替え後のｔ２以降、新たに書き込まれたデータ３０１が、第２のメモリ領域１３の参照用データベースで反映され、検索対象のデータとなる。一方、第１のメモリ領域１２のデータベースは、切り替えによって、更新用データベースとなる。そして、データ３０１を書き込み済みの第２のメモリ領域１３のデータベースと同期させるため、書込処理部１５３は、第１のメモリ領域１２のデータベースに同じデータ３０２を書き込む。そして、エラー判定部１６は、書き込み処理が正常に終了したか否かのエラーチェックを行う。書き込み処理にエラーが発生した場合、復旧処理部１７は、第２のメモリ領域１３の参照用データベースのデータを、第１のメモリ領域１２の更新用データベースへコピーし、データを復旧する。
【００３６】
このように、データを書き込むたびに参照用データベースおよび更新用データベースを切り替えることで、一件単位でのデータの書き込みと反映が可能となる。また、切り替え後の更新用データベースに、切り替え前の更新用データベースへ書き込んだデータと同じデータを書き込むことで、データベース間の同期をとることができる。また、切り替え後の更新用データベースに対して同期をとるために行ったデータの書き込みにエラーが生じた場合は、書き込みが完了している切り替え後の参照用データベースのデータを更新用データベースにコピーすることで、最新状態または直前の状態にデータを復旧することができる。
【００３７】
図４は、図３に示す書き込み処理のフローチャートである。
【００３８】
データベースシステム１の書込処理部１５３は、要求受付部１４から新規追加の書き込む要求を受け付けると（Ｓ１１：新規追加）、ＯＮになっている第１のアドレス記憶部Ａまたは第２のアドレス記憶部Ｂから更新用データベースのアドレスを取得し、当該アドレスのメモリ領域に格納された更新用データベースにデータを新規追加する（Ｓ１２）。そして、エラー判定部１６は、データの新規追加処理が正常に終了したかのエラーチェックを行う（Ｓ１３）。エラーがあった場合（Ｓ１３：有る）、復旧処理部１７は、参照用データベースから直前状態のデータを更新用データベースにコピーしてデータを復旧し（Ｓ１４）、処理を終了する。
【００３９】
エラーがない場合（Ｓ１３：無し）、切替処理部１５４は、第１のアドレス記憶部Ａおよび第２のアドレス記憶部ＢのＯＮ／ＯＦＦを切り替えることにより、参照用データベースと更新用データベースとを切り替える（Ｓ１５）。そして、書込処理部１５３は、切り替え後の更新用データベースにＳ１２で新規追加したデータと同じデータを新規追加する（Ｓ１６）。そして、エラー判定部１６は、新規追加処理が正常に終了したかのエラーチェックを行う（Ｓ１７）。エラーがあった場合（Ｓ１７：有る）、復旧処理部１７は、切り替え後の参照用データベースから最新状態のデータを切り替え後の更新用データベースにコピーしてデータを復旧し（Ｓ１８）、処理を終了する。エラーがない場合（Ｓ１７：無し）は、処理を終了する。
【００４０】
また、書込処理部１５３は、要求受付部１４から更新の書き込み要求を受け付けると（Ｓ１１：更新）、ＯＮになっている第１のアドレス記憶部Ａまたは第２のアドレス記憶部Ｂから更新用データベースのアドレスを取得し、当該アドレスのメモリ領域に格納された更新用データベースのデータを更新する（Ｓ１９）。以降のＳ２０〜Ｓ２３の処理は、Ｓ１３〜Ｓ１７と同様であるため、ここでは説明を省略する。なお、Ｓ２２では、切り替え後の更新用データベースにＳ１９で更新したデータと同じデータで更新する。
【００４１】
また、書込処理部１５３は、要求受付部１４から削除の書き込む要求を受け付けると（Ｓ１１：削除）、ＯＮになっている第１のアドレス記憶部Ａまたは第２のアドレス記憶部Ｂから更新用データベースのアドレスを取得し、当該アドレスのメモリ領域に格納された更新用データベースから要求されたデータを削除する（Ｓ２４）。以降のＳ２５〜Ｓ２８の処理は、Ｓ１３〜Ｓ１７と同様であるため、ここでは説明を省略する。なお、Ｓ２７では、切り替え後の更新用データベースにＳ２４で削除したデータと同じデータを削除する。
【００４２】
以上説明した本実施形態では、メモリ領域を第１のメモリ領域１２と第２のメモリ領域１３の２つに分割し、一方のメモリ領域を参照用データベースとし、他方のメモリ領域を更新用データベースとし、書き込み処理が行われる度に、メモリ領域を切り替える。これにより、本実施形態では、読み込み処理と書き込み処理のロックを不要としながら（書き込み処理中でも読み込み処理がブロックされない特徴を活かしながら）、更新用データベースに書き込んだデータの即時反映と、書き込み処理後のメモリ領域の切り替えによって書き込んだデータの検索が即時に可能となる。
【００４３】
また、切り替えは、参照するアドレス記憶部を切り替えるだけの操作であるため、高速に実行することができ、検索処理の分断を回避することができる。
【００４４】
すなわち、本実施形態では、ガベージコレクションが必要な追記型を用いることなく、ロックを不要とし、データの書き込み（新規追加・更新・削除）と、検索の同時実行性を向上することができる。
【００４５】
また、本実施形態では、切り替え後の更新用データベースに対して、同じデータの書き込み処理を行うことで参照用データベースと更新用データベースの内容を同じにし、常にデータの整合性がとれた同期状態を維持することができる。
【００４６】
また、本実施形態では、第１のメモリ領域１２のデータベースと、第２のメモリ領域１３のデータベースと間で同期を常にとることにより、障害対策として、ログを記録することなく、参照用データベースから更新用データベースへのデータコピーのみで直前または最新の状態へのデータ復旧を実現することができる。
【００４７】
また、本実施形態では、データベースの各テーブルにインデックスが大量に設定されたインメモリデータベースであって、ロックの粒度を小さくすることが困難な場合であっても、ロックを使用しないため、データの即時書き込みと読み込みの同時実行性を高めることができる。
【００４８】
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【符号の説明】
【００４９】
１  ：データベースシステム
１１：データベース
１２：第１のメモリ領域
１３：第２のメモリ領域
１４：要求受付部
１５：処理部
１６：エラー判定部
１７：復旧処理部
１５１：判別部
１５２：読込処理部
１５３：書込処理部
１５４：切替処理部
Ａ  ：第１のアドレス記憶部
Ｂ  ：第２のアドレス記憶部
２  ：クライアント
【図１】
0005715074.tif 000002
【図２】
0005715074.tif 000003
【図３】
0005715074.tif 000004
【図４】
0005715074.tif 000005