(57)【要約】      （修正有）【課題】データの最新性が必要な検索処理を可能にすると同時に、システム全体の性能を減少ないし低減させない方法。【解決手段】第１のデータベースと、該データベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとの間でデータを同期するため、上記第２のデータベースに対する検索要求に応じて、上記第１のデータベース中の第１のデータセットと、上記検索要求（以下、現在の検索要求）又は該現在の検索要求の後に発行されうる検索要求（以下、未来の検索要求）の検索対象である上記第２のデータベース中の第２のデータセットとの差分データを上記第１のデータベースから抽出し、抽出した差分データを上記第２のデータベースに適用し、上記第２のデータセットを更新する。以降、更新された第２のデータセットが上記現在の検索要求又は上記未来の検索要求の検索対象とされる。【選択図】図２Ａ
2010257426.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとの間でデータを同期するための方法であって、
前記第２のデータベースに対する検索要求が発行されることに応じて、前記第１のデータベース中の第１のデータセットと、前記検索要求（以下、現在の検索要求）又は該現在の検索要求の後に発行されうる検索要求（以下、未来の検索要求）の検索対象である前記第２のデータベース中の第２のデータセットとの差分データを前記第１のデータベースから抽出するステップと、
抽出した差分データを前記第２のデータベースに適用し、前記第２のデータセットを更新するステップであって、それによって更新された第２のデータセットが前記現在の検索要求又は前記未来の検索要求の検索対象とされる、前記更新するステップと
を含む、前記方法。
【請求項２】
前記現在の検索要求又は前記未来の検索要求がデータの最新性を必要とするかどうかを判断するステップをさらに含み、
前記最新性が必要であることに応じて前記抽出するステップが実行される、請求項１に記載の方法。
【請求項３】
前記データの最新性が必要であることに応じて、前記現在の検索要求又は前記未来の検索要求がデータの同期を必要とするかどうかを判断するステップをさらに含み、
前記同期を必要とすることが、前記第２のデータセットの過去に更新された時間と、前記現在の検索要求の発行時間又は前記未来の検索要求の予想発行時間との差が所与の閾値を超えることによって判断され、
前記同期が必要であることに応じて前記抽出するステップが実行される、請求項２に記載の方法。
【請求項４】
前記最新性を必要とすることが、前記現在の検索要求又は前記未来の検索要求に含まれている宣言に基づいて判断される、請求項２に記載の方法。
【請求項５】
前記最新性が必要でないことに応じて、前記現在の検索要求又は前記未来の検索要求に対する検索回答が前記差分データの適用なしに前記第２のデータセットから抽出される、請求項２に記載の方法。
【請求項６】
前記更新するステップが、前記第２のデータセットを更新した時間を記録するステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記差分データが、
前記現在の検索要求又は前記未来の検索要求より前に発行された前記第２のデータセットに対する検索要求（以下、過去の検索要求）の発行時間における前記第２のデータセットと、
前記現在の検索要求の発行時間における前記第２のデータセットと
の差分である、請求項６に記載の方法。
【請求項８】
前記第２のデータベースに対する前記現在の検索要求が発行されることに応じて、前記未来の検索要求がデータの最新性を必要とするかどうかを判断することを開始する時間を計算するステップをさらに含み、
計算された時間になることに応じて、前記最新性を必要とするかどうかを判断するステップが実行される、請求項２に記載の方法。
【請求項９】
前記判断することを開始する時間が、
前記未来の検索要求の所与の予想発行時間と、
所与の閾値と
から計算される、請求項８に記載の方法。
【請求項１０】
前記第１のデータセットと、前記第２のデータセットとの差分データを所与の時間に又は所与の時間間隔で前記第１のデータベースから抽出するステップと、
前記抽出した差分データを前記第２のデータベースに適用し、前記第２のデータセットを更新するステップと
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記計算するステップが、前記計算された時間を前記未来の検索要求ごとに蓄積するステップをさらに含み、
前記所与の時間に又は所与の時間間隔で前記第１のデータベースから抽出するステップが、現在時間より前の前記蓄積された時間に対応する未来の検索要求についての差分データを抽出する、請求項１０に記載の方法。
【請求項１２】
前記抽出するステップが、前記現在の検索要求又は前記未来の検索要求を前記第１のデータベースにパススルーし、前記現在の検索要求又は前記未来の検索要求に対する検索回答を、前記第２のデータセットからでなく前記第１のデータセットから抽出するステップを含む、請求項１に記載の方法。
【請求項１３】
前記第１のデータセットから抽出するステップが、前記第２のデータセットから検索回答を抽出するのにかかる時間よりも、前記第１のデータセットから検索回答を抽出するのにかかる時間が短いと見込まれる場合に実行される、請求項１２に記載の方法。
【請求項１４】
前記抽出するのにかかる時間が短いと見込まれることが、前記現在の検索要求又は前記未来の検索要求に含まれている宣言に基づいて判断される、請求項１２に記載の方法。
【請求項１５】
前記第１のデータベースがバックエンドデータベースであり、及び前記第２のデータベースがキャッシュデータベースである、請求項１に記載の方法。
【請求項１６】
第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとを含むデータベース・システムからデータを抽出するための方法であって、
前記第２のデータベースに対する検索要求が発行されることに応じて、請求項１〜５のいずれか１項に記載の方法の各ステップに従い、前記第１のデータベースと前記第２のデータベースとの間でデータを同期するステップと、
前記検索要求に対して、前記第２のデータベースから検索回答を抽出するステップと
を含む、前記方法。
【請求項１７】
第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとの間でデータを同期するためのコンピュータ・システムであって、
前記第２のデータベースに対する検索要求が発行されることに応じて、前記第１のデータベース中の第１のデータセットと、前記検索要求（以下、現在の検索要求）又は該現在の検索要求の後に発行されうる検索要求（以下、未来の検索要求）の検索対象である前記第２のデータベース中の第２のデータセットとの差分データを前記第１のデータベースから抽出する差分データ抽出部と、
抽出した差分データを前記第２のデータベースに適用し、前記第２のデータセットを更新する更新部であって、それによって更新された第２のデータセットが前記現在の検索要求又は前記未来の検索要求の検索対象とされる、前記更新部と
を含む、前記コンピュータ・システム。
【請求項１８】
第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとを含むデータベース・システムからデータを抽出するためのコンピュータ・システムであって、
前記第２のデータベースに対する検索要求が発行されることに応じて、請求項１７に記載の差分データ抽出部及び更新部を使用して、前記第１のデータベースと前記第２のデータベースとの間でデータを同期する同期部と、
前記検索要求に対して、前記第２のデータベースから検索回答を抽出する検索回答抽出部と
を含む、前記コンピュータ・システム。
【請求項１９】
第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとの間でデータを同期するための方法であって、
前記第２のデータベースに対する検索要求が発行されることに応じて、前記検索要求に含まれている宣言に基づいて、前記検索要求がデータの最新性を必要とするかどうかを判断するステップと、
前記最新性を必要とすると判断されることに応じて、前記第２のデータセットの過去に更新された時間であって、ログに記録されている前記時間、前記検索要求の発行時間及び所与の閾値から、前記検索要求がデータの同期を必要とするかどうかを判断するステップと、
前記同期を必要とすると判断されることに応じて、前記ログに記録されている時間における前記第２のデータベース中のデータセットと、前記検索要求の発行時間における前記データセットとの差分データを、前記第１のデータベースから抽出するステップと、
抽出した差分データを前記第２のデータベースに適用し、前記第２のデータセットを更新するステップであって、それによって更新された第２のデータセットが前記現在の検索要求又は前記未来の検索要求の検索対象とされる、前記更新するステップと、
前記第２のデータセットを更新した時間を前記ログに記録するステップと
を含む、前記方法。
【請求項２０】
コンピュータ・システムに、請求項１〜１６のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとの間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラムに関する。
【背景技術】
【０００２】
データベースを含むシステムの性能を向上させるために、複数のインメモリデータベースとバックエンドデータベースとを用いる方法がある。インメモリデータベースは、インコアデータベース若しくは、メインメモリーデータベースとも呼ばれる。インメモリデータベースは、データをハードディスクドライブではなく、半導体メモリに保存する。バックエンドデータベースは、メインのデータベースであり、インメモリデータベースの元となるデータを含む。インメモリデータベースは、バックエンドデータベースの全て又は一部のデータを保持し、バックエンドデータベースのキャッシュのために使用される。インメモリデータベースは、データベースのＩ／Ｏをハードディスクドライブに読み書きするのではなく、半導体メモリ上で処理する。よって、インメモリデータベースでは、アプリケーションが読み書きしたデータは、インメモリデータベースによってメモリ上のキャッシュに保持され、アプリケーションとはまったく独立したプロセスでハードディスクドライブのデータベースアクセスを行う仕組みになっている。アプリケーションから見れば、ハードディスクドライブ上のデータベースと何ら変わらない方法でＳＱＬがインメモリデータベースに発行される。そして、アプリケーションからのクエリ要求は、インメモリデータベースによって処理される。よって、インメモリデータベースを使用することによって、インメモリデータベースからデータセットが検索される。従って、バックエンドデータベースの負荷が軽減され、且つデータベースとしての処理速度が飛躍的に向上される。
【０００３】
バックエンドデータベースにおけるデータは更新される。よって、インメモリデータベースは、該更新をインメモリデータベースに反映させる必要がある。インメモリデータベースは、該更新のために、バックエンドデータベースからデータをロードしなければならない。上記反映を実現するための典型的な従来手法には、定期的に同期をとる手法及びリアルタイムに同期をとる手法がある。
【０００４】
１．定期的に同期をとる手法
定期的に同期をとる手法は、システムが、バックエンドデータベースのデータセットをインメモリデータベースに定期的にまとめて適用しインメモリデータベース中のデータセットを更新する手法である。該更新により、バックエンドデータベースとインメモリデータベースとの間で同期がとられる。ここで、データを大きな単位でまとめて処理する場合の方が、データを小さな単位で複数回に分けて処理する場合に比べ、データベースにかかる負荷は一般に少ない。よって、定期的に同期をとる手法では、データ複製時のバックエンドデータベースにかかる負荷を軽減しながら、バックエンドデータベースからインメモリデータベースへのレプリケーションが可能になる。しかし、インメモリデータベースのデータセットは、定期的に同期がとられた時点のデータセットであって、最新のデータセットではない。よって、定期的に同期をとる手法では、データベースの利用者がデータの最新性が必要な検索要求をインメモリデータベースに対して発行することができないという問題点がある。
【０００５】
そこで、定期的に同期をとる手法の上記問題点を解決するための検索技術として、パススルー検索がある。パススルー検索は、インメモリデータベースの技術の１つとして、既に実現化されている検索技術である。パススルー検索による手法は、上記定期的に同期をとる手法と並行して実行される。パススルー検索では、インメモリデータベースに対してデータの最新性が必要な検索要求が発行された場合、該検索要求がバックエンドデータベースに送信される。よって、システムは、バックエンドデータベースに対して検索を実行する。しかし、パススルー検索による手法では、検索条件が複雑な場合に、バックエンドデータベースの負荷が高まるので、システム全体の性能が低下する。
【０００６】
２．リアルタイムに同期をとる手法
リアルタイムに同期をとる手法は、バックエンドデータベースが更新されることに応じて、システムが、更新されたバックエンドデータベースのデータセットをインメモリデータベースに送信し、インメモリデータベースのデータセットを即座に更新する手法である。該更新により、バックエンドデータベースとインメモリデータベースとの間でリアルタイム同期がとられる。よって、定期的に同期をとる手法の上記問題点は解消されうる。しかしながら、リアルタイムに同期をとる手法では、バックエンドデータベースの更新頻度が高い場合、システムは、バックエンドデータベースからインメモリデータベースへのレプリケーションを、小さなデータの単位で頻繁に行うことになるが、頻繁なレプリケーションは、バックエンドデータベースの負荷を増加させる。それによって、システム全体の性能が、さらに低下する。上記レプリケーションはまた、インメモリデータベースで検索されるデータの最新性が必要かどうかにかかわらず実行される。しかし、インメモリデータベースに対して発行される検索要求の多くがデータの最新性が必要でない検索要求である場合、更新された最新のデータセットが必要とされることは少ない。従って、レプリケーションは、システム全体の性能を低下させるだけの無駄な処理になりうる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
少なくとも１のインメモリデータベースが、バックエンドデータベースの全て又は一部のデータセットを保持するようなシステムでは、インメモリデータベースとバックエンドデータベースとの間で同期をとる必要がある。よって、データの最新性が必要な検索処理を可能にすると同時に、システム全体の性能を減少ないし低減させない方法が求められている。
【課題を解決するための手段】
【０００８】
本発明は、第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとの間でデータを同期するための方法を提供する。該方法は、コンピュータ・システムに下記ステップを実行させる。該ステップは、
上記第２のデータベースに対する検索要求が発行されることに応じて、上記第１のデータベース中の第１のデータセットと、上記検索要求（以下、現在の検索要求）又は該現在の検索要求の後に発行されうる検索要求（以下、未来の検索要求）の検索対象である上記第２のデータベース中の第２のデータセットとの差分データを上記第１のデータベースから抽出するステップと、
抽出した差分データを上記第２のデータベースに適用し、上記第２のデータセットを更新するステップであって、それによって更新された第２のデータセットが上記現在の検索要求又は上記未来の検索要求の検索対象とされる、上記更新するステップと
を含む。
【０００９】
本発明の１つの実施態様では、上記方法は、コンピュータ・システムに下記ステップをさらに実行させる。該ステップは、上記現在の検索要求又は上記未来の検索要求がデータの最新性を必要とするかどうかを判断するステップをさらに含み、そして上記最新性が必要であることに応じて上記抽出するステップが実行される。
【００１０】
本発明の１つの実施態様では、上記方法は、コンピュータ・システムに下記ステップをさらに実行させる。該ステップは、上記データの最新性が必要であることに応じて、上記現在の検索要求又は上記未来の検索要求がデータの同期を必要とするかどうかを判断するステップをさらに含み、そして上記同期を必要とすることが、上記第２のデータセットの過去に更新された時間と、上記現在の検索要求の発行時間又は上記未来の検索要求の予想発行時間との差が所与の閾値を超えることによって判断され、及び上記同期が必要であることに応じて上記抽出するステップが実行される。
【００１１】
本発明の１つの実施態様では、上記最新性を必要とすることが、上記現在の検索要求又は上記未来の検索要求に含まれている宣言（declaration）に基づいて判断される。
【００１２】
本発明の１つの実施態様では、上記最新性が必要でないことに応じて、上記現在の検索要求又は上記未来の検索要求に対する検索回答が上記差分データの適用なしに上記第２のデータセットから抽出される。
【００１３】
本発明の１つの実施態様では、上記更新するステップが、上記第２のデータセットを更新した時間を記録するステップをさらに含む。
【００１４】
本発明の１つの実施態様では、上記差分データが、
上記現在の検索要求又は上記未来の検索要求より前に発行された上記第２のデータセットに対する検索要求（以下、過去の検索要求）の発行時間における上記第２のデータセットと、
上記現在の検索要求又は上記未来の検索要求の発行時間における上記第２のデータセットと
の差分である。
【００１５】
本発明の１つの実施態様では、上記方法は、コンピュータ・システムに下記ステップをさらに実行させる。該ステップは、上記第２のデータベースに対する上記現在の検索要求が発行されることに応じて、上記未来の検索要求がデータの最新性を必要とするかどうかを判断することを開始する時間を計算するステップをさらに含み、そして計算された時間になることに応じて、上記最新性を必要とするかどうかを判断するステップが実行される。
【００１６】
本発明の１つの実施態様では、上記判断することを開始する時間が、
上記未来の検索要求の所与の予想発行時間と、
所与の閾値と
から計算される。
【００１７】
本発明の１つの実施態様では、上記方法は、コンピュータ・システムに下記ステップをさらに実行させる。該ステップは、
上記第１のデータセットと、上記第２のデータセットとの差分データを所与の時間に又は所与の時間間隔で上記第１のデータベースから抽出するステップと、
抽出した差分データを上記第２のデータベースに適用し、上記第２のデータセットを更新するステップと
をさらに含む。
【００１８】
本発明の１つの実施態様では、上記計算するステップが、上記計算された時間を上記未来の検索要求ごとに蓄積するステップをさらに含み、そして、上記所与の時間に又は所与の時間間隔で上記第１のデータベースから抽出するステップが、現在時間より前の上記蓄積された時間に対応する未来の検索要求についての差分データを抽出する。
【００１９】
本発明の１つの実施態様では、上記抽出するステップが、上記現在の検索要求又は上記未来の検索要求を上記第１のデータベースにパススルーし、上記現在の検索要求又は上記未来の検索要求に対する検索回答を、上記第２のデータセットからでなく上記第１のデータセットから抽出するステップを含む。
【００２０】
本発明の１つの実施態様では、上記第１のデータセットから抽出するステップが、上記第２のデータセットから検索回答を抽出するのにかかる時間よりも、上記第１のデータセットから検索回答を抽出するのにかかる時間が短いと見込まれる場合に実行される。
【００２１】
本発明の１つの実施態様では、上記抽出するのにかかる時間が短いと見込まれることが、上記現在の検索要求又は上記未来の検索要求に含まれている宣言（declaration）に基づいて判断される。
【００２２】
本発明はまた、第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとを含むデータベース・システムからデータを抽出するための方法を提供する。該方法は、コンピュータ・システムに下記ステップを実行させる。該ステップは、
上記第２のデータベースに対する検索要求が発行されることに応じて、上記に記載の方法の各ステップに従い、上記第１のデータベースと上記第２のデータベースとの間でデータを同期するステップと、
上記検索要求に対して、上記第２のデータベースから検索回答を抽出するステップと
を含む。
【００２３】
本発明は、第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとの間でデータを同期するための方法を提供する。該方法は、コンピュータ・システムに下記ステップを実行させる。該ステップは、
上記第２のデータベースに対する検索要求が発行されることに応じて、上記検索要求に含まれている宣言に基づいて、上記検索要求がデータの最新性を必要とするかどうかを判断するステップと、
上記最新性を必要とすると判断されることに応じて、上記第２のデータセットの過去に更新された時間であって、ログに記録されている上記時間、上記検索要求の発行時間及び所与の閾値から、上記検索要求がデータの同期を必要とするかどうかを判断するステップと、
上記同期を必要とすると判断されることに応じて、上記ログに記録されている時間における上記第２のデータベース中のデータセットと、上記検索要求の発行時間における上記データセットとの差分データを、上記第１のデータベースから抽出するステップと、
抽出した差分データを上記第２のデータベースに適用し、上記第２のデータセットを更新するステップであって、それによって更新された第２のデータセットが上記現在の検索要求又は上記未来の検索要求の検索対象とされる、上記更新するステップと、
上記第２のデータセットを更新した時間を上記ログに記録するステップと
を含む、上記方法。
【００２４】
本発明はまた、コンピュータ・システムに、上記方法のいずれかに記載の各ステップを実行させるコンピュータ・プログラムを提供する。
【００２５】
本発明はまた、第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとの間でデータを同期するためのコンピュータ・システムを提供する。該コンピュータ・システムは、
上記第２のデータベースに対する検索要求が発行されることに応じて、上記第１のデータベース中の第１のデータセットと、上記検索要求（現在の検索要求）又は該現在の検索要求の後に発行されうる検索要求（未来の検索要求）の検索対象である上記第２のデータベース中の第２のデータセットとの差分データを上記第１のデータベースから抽出する差分データ抽出部と、
抽出した差分データを上記第２のデータベースに適用し、上記第２のデータセットを更新する更新部あって、それによって更新された第２のデータセットが上記現在の検索要求又は上記未来の検索要求の検索対象とされる、上記更新部と
を含む。
【００２６】
本発明の１つの実施態様では、上記コンピュータ・システムは、上記現在の検索要求又は上記未来の検索要求がデータの最新性を必要とするかどうかを判断する第１の判断部をさらに含み、そして上記最新性が必要であることに応じて上記抽出が実行される。
【００２７】
本発明の１つの実施態様では、上記コンピュータ・システムは、上記データの最新性が必要であることに応じて、上記現在の検索要求又は上記未来の検索要求がデータの同期を必要とするかどうかを判断する第２の判断部をさらに含み、そして上記同期を必要とすることが、上記第２のデータセットの過去に更新された時間と、上記現在の検索要求の発行時間又は上記未来の検索要求の予想発行時間との差が所与の閾値を超えることによって判断され、及び上記同期が必要であることに応じて上記抽出が実行される。
【００２８】
本発明の１つの実施態様では、上記更新することが、上記第２のデータセットを更新した時間を記録することをさらに含む。
【００２９】
本発明の１つの実施態様では、上記コンピュータ・システムは、上記第２のデータベースに対する上記現在の検索要求が発行されることに応じて、上記未来の検索要求がデータの最新性を必要とするかどうかを判断することを開始する時間を計算する計算部をさらに含み、そして計算された時間になることに応じて、上記最新性を必要とするかどうかを判断することが実行される。
【００３０】
本発明の１つの実施態様では、上記コンピュータ・システムは、
上記抽出部が、上記第１のデータセットと、上記第２のデータセットとの差分データを所与の時間で上記第１のデータベースから抽出し、
上記更新部が、抽出した差分データを上記第２のデータベースに適用し、上記第２のデータセットを更新する。
【００３１】
本発明の１つの実施態様では、上記計算部が、上記計算された時間を上記未来の検索要求ごとに時刻順に蓄積し、そして、上記所与の間隔で上記第１のデータベースから抽出するステップが、現在時間より前の上記蓄積された時間に対応する未来の検索要求についての差分データを抽出する。
【００３２】
本発明の１つの実施態様では、
上記抽出部が、上記現在の検索要求又は上記未来の検索要求を上記第１のデータベースにパススルーし、上記現在の検索要求又は上記未来の検索要求に対する検索回答を、上記第２のデータセットからでなく上記第１のデータセットから抽出する。
【００３３】
本発明の１つの実施態様では、上記抽出部が、上記第２のデータセットから検索回答を抽出するのにかかる時間よりも、上記第１のデータセットから検索回答を抽出するのにかかる時間が短いと見込まれる場合に、上記抽出を実行する。
【００３４】
本発明はまた、第１のデータベースと、該第１のデータベースに含まれる少なくとも１のデータを保持する１以上の第２のデータベースとを含むデータベース・システムからデータを抽出するためのコンピュータ・システムを提供する。該コンピュータ・システムは、
上記第２のデータベースに対する検索要求が発行されることに応じて、上記に記載の差分データ抽出部及び更新部を使用して、上記第１のデータベースと上記第２のデータベースとの間でデータを同期する同期部と、
上記検索要求に対して、上記第２のデータベースから検索回答を抽出する検索回答抽出部と
を含む。
【００３５】
本発明の１つの実施態様では、上記第１のデータベースがバックエンドデータベースであり、及び上記第２のデータベースがキャッシュデータベースである。
【図面の簡単な説明】
【００３６】
【図１Ａ】本発明の実施態様であるコンピュータ・システムにおけるシステム構成の例を示す。
【図１Ｂ】本発明の実施態様における、第１のデータベースをバックエンドデータベースとし、第２のデータベースをインメモリデータベースとする場合の、図１Ａで示すシステム構成の例を示す。
【図２Ａ】本発明の実施態様における、図１Ｂに記載のシステムで実行される、データ検索時の処理ステップの例を示す。
【図２Ｂ】本発明の実施態様における、図２Ａに示す処理にパススルー検索による手法を組み合わせた場合の処理ステップの例を示す。
【図２Ｃ】本発明の実施態様における、図１Ｂに記載のシステムで実行される、予測同期の処理ステップの例を示す。
【図３Ａ】本発明の実施態様における、ＪＤＢＣプロキシドライバを用いて図１Ｂに示すシステム構成を実装する例を示す。
【図３Ｂ】本発明の実施態様における、図３Ａで示されるクライアント機構（３０３）及びサーバ機構（３０５）の詳細を示す。
【図４Ａ】本発明の実施態様における、図２Ａ〜図２Ｃで示される各ステップの動作のために使用されるデータベースの具体的な例を示す。
【図４Ｂ】本発明の実施態様における、図２Ａ〜図２Ｃで示される各ステップの動作のために使用されるリストの具体的な例を示す。
【図４Ｃ】本発明の実施態様における、データの最新性を必要とする検索要求が発行された場合の例として、列項目がＡ１の列の３行目を検索する検索要求が発行された場合の動作を示す。
【図４Ｄ】本発明の実施態様における、図４Ｃの処理の後に第１の検索要求が再度発行された場合の動作を示す。
【図４Ｅ】本発明の実施態様における、データの最新性を必要としない検索要求が発行された場合の例として、列項目がＡ２の列を検索する検索要求が発行された場合の動作を示す。
【図４Ｆ】本発明の実施態様における、パススルーが実行される場合の例として、列項目がＡ３の列の２行目を検索する検索要求が発行された場合の動作を示す。
【図４Ｇ】本発明の実施態様における、未来の検索要求がデータの最新性を必要とする検索要求が発行された場合の例として、列項目がＡ４の列を検索する検索要求が発行された場合の動作を示す。
【図５】本発明の実施態様における、図１Ｂに記載のシステム構成の機能を図示する機能ブロック図を示す。
【図６】本発明の実施態様における、図５に記載のコンピュータ・システムのハードウェアのブロック図を示す。
【発明を実施するための形態】
【００３７】
本発明の実施態様において、「第１のデータベース」とは、システムのマスターデータベースである。第１のデータベースは、例えば、バックエンドデータベースとして動作しうる。第１のデータベースでは、システムで使用されるデータが、最新の状態で管理される。第１のデータベースに含まれるデータセットは、第２のデータベースにレプリケーションされる。第１のデータベースは、例えば、データベース管理システム（ＤＢＭＳ）によって管理されるデータベース又はＯＳが提供するファイルシステムで構築されるデータの集合であるが、これらに限定されない。データベース管理システムは、例えばＩＢＭ  （登録商標）  ＤＢ２（登録商標）、Ｏｒａｃｌｅ（登録商標）  Ｄａｔａｂａｓｅ、Ｍｉｃｒｏｓｏｆｔ（登録商標）  ＳＱＬ  Ｓｅｒｖｅｒ、ＰｏｓｔｇｒｅＳＱＬ、ＭｙＳＱＬ（登録商標）又はＳＱＬｉｔｅから選択されうる。
【００３８】
本発明の実施態様において、「第２のデータベース」とは、システムのサブデータベースであり、上記システムのマスターデータベースと対になるデータベースである。第２のデータベースは、フロントエンドデータベースとして動作しうる。第２のデータベースは、上記第１のデータベースに含まれる少なくとも１のデータを保持するデータベースである。第２のデータベースは、後述の検索要求を受け付けることができる。第２のデータベースは、例えば、キャッシュデータベース、インメモリデータベース、データベース管理システムによって管理されるデータベース又はＯＳが提供するファイルシステムで構築されるデータの集合から選択されうるが、これらに限定されない。
【００３９】
本発明の１つの実施態様では、第２のデータベースは、第１のデータベースをバックエンドデータベースとするキャッシュデータベースである。
キャッシュデータベースとは、バックエンドデータベースへのアクセスよりも高速にアクセスが可能なキャッシュ領域に格納されるデータベースである。バックエンドデータベースが、例えばハードディスクドライブに保存されている場合、上記キャッシュ領域は、例えば半導体メモリ内にありうる。バックエンドデータベースが、例えばＬＡＮで接続されたハードディスクドライブに保存されている場合、上記キャッシュ領域は、上記ＬＡＮよりも高速なバスで接続されているハードディスクドライブ、例えば高速回転（例えば１万回転又はそれ以上）であり、又はキャッシュ容量の大きいハードディスクドライブでありうる。キャッシュデータベースは、バックエンドデータベースの全て又は一部のデータを保持する。
【００４０】
本発明の他の実施態様では、第２のデータベースは、第１のデータベースをバックエンドデータベースとするインメモリデータベースである。インメモリデータベースとは、データをハードディスクドライブではなく、半導体メモリに保存するデータベースであり、バックエンドデータベースと対になるデータベースである。インメモリデータベースは、バックエンドデータベースの全て又は一部のデータを保持する。
【００４１】
本発明の実施態様において、「データを同期する」とは、異なるデータベース上の少なくとも１のデータそれぞれについて、該データを、該データが参照されたときに同一の結果を返す値にすることである。例えば、上記データそれぞれを同一の値にすることが、データを同期することに該当する。なお、上記同一の結果を返す値にする時機は、第１のデータベースと第２のデータベースとで同時とは限らない。上記時機は、例えば、ユーザによって上記データが参照される時機、ユーザによって上記データが参照されると予想される時機又はユーザが指定した指定時刻に達する時機であるが、これらに限らない。
【００４２】
本発明の実施態様において、「検索要求」とは、データベースに含まれる少なくとも１のデータセットを参照することを含み且つ同期の対象であるデータセットを更新することを含まない要求である。該要求は、例えばＳＱＬ文のＳＥＬＥＣＴ句による要求、後述のパススルー要求又はデータベースに用意された予約語による命令であるが、これらに限定されない。
【００４３】
本発明の実施態様において、「未来の検索要求」とは、上記検索要求の後に発行される可能性のある検索要求である。上記可能性は、システムにおいて発生する何らかのアクションによって生じてもよい。上記何らかのアクションとは、例えば、他の検索要求が発行されること、アプリケーションが起動されること又は所与の時刻になることであるが、これらに限定されない。
【００４４】
本発明の実施態様において、「データセット」とは、データの集合である。データの集合は、例えば、何らかのデータ、該データの属するグループ、該データと関係するデータ、該データと関係するグループそれぞれ又はそれらの組み合わせであるが、これらに限定されない。上記グループとは、例えばテーブル、列又は行であるが、これらに限定されない。上記関係するとは、例えば、リンクしていること又は参照していることであるが、これらに限定されない。
【００４５】
本発明の実施態様において、「差分データ」とは、異なるデータベース間で少なくとも１の共通する又は関係するデータセット同士それぞれに含まれるデータであって、上記データベース間で値の異なるデータ、又は該異なるデータを一部に含むデータである。上記関係とは、例えば、複製元と複製先の関係であるが、これらに限定されない。
【００４６】
本発明の実施態様において、「検索要求がデータの最新性を必要とする」とは、検索要求によって検索されるデータが、レプリケーションが実行されてから後述の所与の閾値で表される時間が経過していないデータでなければいけないことである。
【００４７】
本発明の実施態様において、「予想発行時間」とは、上記未来の検索要求が発行される予定の時間である。予想発行時間は、例えば、システム時間又はシステムにおいて発生する何らかのアクションからの相対時間である。上記何らかのアクションとは、例えば、検索要求が発行されること、アプリケーションが起動されること又は所与の時刻になることであるが、これらに限定されない。予想発行時間は、例えば、ユーザによって設定されてもよいし、統計的に求められてもよい。上記統計的に求められる場合、コンピュータ・システムは、例えば、ある検索要求が発行されてから別の検索要求が発行されるまでの時間を毎回記録し、該記録した時間の平均値を上記別の検索要求の予想発行時間としうる。
【００４８】
本発明の実施態様において、「所与の閾値」とは、上記データの最新性を必要とする検索要求によって検索されるデータがどれだけ新しいデータであれば足りるかを表す時間の範囲を示す値である。上記所与の閾値は、例えば、上記検索要求が発行される時間から過去にさかのぼる相対時間で表す。
【００４９】
本発明の実施態様において、「検索要求に含まれている宣言」とは、データベースからデータを検索するために使用される検索要求を表す命令である。上記命令は、例えばＳＱＬのＳＥＬＥＣＴ文であるが、これに限らない。検索要求に含まれている宣言は、例えばプリペアドステートメントである。上記宣言では、例えば、具体的なデータの値、格納位置又はデータ絞り込みに使用される条件式は、マスキングされていてもされていなくてもよい。例えば、検索要求を表す命令を、「select data1,data2 from table1 where data1 = 10」とする。上記場合、検索要求に含まれている宣言は、上記ＳＥＬＥＣＴ文そのままでもよいし、例えば下記のａ、ｂ又はｃであってもよい。なお、下記ａ、ｂ及びｃでは、マスキングを「?」で表す。
ａ）具体的なデータの値をマスキングする例
「select ? from table1 where data1 = 10」
ｂ）格納位置をマスキングする例
「select data1,data2 from ? where data1 = 10」
ｃ）データ絞り込みに使用される条件式をマスキングする例
「select data1,data2 from table1 ?」
【００５０】
本発明の実施態様において、「パススルー」とは、第２のデータベースに対して発行された要求を、第１のデータベースに転送することである。該転送により、上記要求の回答は、第２のデータベースからではなく第１のデータベースから得られる。
【００５１】
多くのアプリケーションは、データの最新性を必要とする検索処理（以下、第１の検索処理）とデータの最新性を必要としない検索処理（以下、第２の検索処理）との両方の検索処理を有する。例えば、典型的な電子商取引サイトのアプリケーションにおいて、第１の検索処理は例えば商品の在庫情報の検索処理であり、及び第２の検索処理は例えば商品の検索処理である。ここで、例えば電子商取引サイトの商品一覧ページでは、商品が検索され表示されうる。しかし、上記商品一覧ページでは、商品の在庫情報まで検索され表示されることは稀である。電子商取引サイトの利用者は、上記商品一覧ページからナビゲーションされて、商品の詳細情報を追っていく。商品の在庫情報は、上記ナビゲーションの所定の段階で初めて検索されて、表示されうる。
【００５２】
また、例えば、あるホテル検索サイトのアプリケーションにおいて、第１の検索処理は例えば空室データの検索処理であり、及び第２の検索処理は例えばホテルの検索処理又は地域の検索処理である。ここで、該空室データの検索処理によって取得されるデータは、可能な限り最新のデータである必要はあるが、今現在のデータである必要はない。上記空室データは例えば、数分程度前の古いデータであっても許容される。上記ホテル検索サイトのアプリケーションにおいて、本当にデータの最新性が求められる処理は、ホテルの予約処理だけである。ここで、上記ホテル検索サイトのアプリケーションが以下に示す２種類の検索機能を利用者に提供する場合について考える。
１．利用者が都道府県を指定すると、該都道府県内での地域が表示され、さらに利用者が該地域を指定すると、該地域内にあるホテルが表示されるというナビゲーション的な検索機能
２．利用者が宿泊地及び宿泊日が指定すると、宿泊地近郊の宿泊日に空室があるホテルが表示されるという検索機能
上記ホテル検索サイトのアプリケーションは、多くの利用者が上記１の検索機能を利用してホテルを検索することを想定して作成されている。また、上記ホテル検索サイトのアプリケーションは、ホテルを利用する目的が明確な利用者が上記２の検索機能を利用してホテルを検索することを想定して作成されている。
上記１の検索機能によってホテルが検索される場合、空室データは、上記ナビゲーションが進み、空室情報検索の段階でようやく検索され表示されうる。上記２の検索機能によってホテルが検索される場合、空室データは、上記２の検索の結果として検索され表示されうる。
【００５３】
上記電子商取引サイトの例及びホテル検索サイトの例で示されるように、アプリケーションにおいて本当に最新のデータが必要とされる状況は、それ程多くない。そこで、本発明の１つの実施態様では、システムは、どの程度の最新性がデータに要求されているかに応じて、バックエンドデータベースの検索されるデータセットとインメモリデータベースの検索されるデータセットとの間で同期を行う。
【００５４】
以下、図面に従って、本発明の実施態様を説明する。本実施態様は、本発明の好適な態様を説明するためのものであり、本発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断らない限り、同一の符号は、同一の対象を指す。
【００５５】
図１Ａは、本発明の実施態様であるコンピュータ・システムにおけるシステム構成（１００Ａ〜１００Ｃ）の例を示す。システム構成（１００Ａ〜１００Ｃ）それぞれは、第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）、第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）、データベースのデータを管理するサーバ（夫々、１０３Ａ、１０３Ｃ及び１０４Ａ〜１０４Ｄ）、データを更新するサーバ（夫々、１０５Ａ〜１０５Ｃ）及びデータを検索するサーバ（夫々、１０６Ａ〜１０６Ｄ）を含む。第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）は、コンピュータ・システム全体のデータを格納するデータベースである。第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）に含まれるデータは、データを更新するサーバ（夫々、１０５Ａ〜１０５Ｃ）によって更新されうる。第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）は、第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）からレプリケーションされたデータベースである。第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）はまた、第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）から抽出された一部又は全部のデータを含む。第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）に含まれるデータは、データを検索するサーバ（夫々、１０６Ａ〜１０６Ｄ）によって検索されうる。データを管理するサーバ（夫々、１０３Ａ、１０３Ｃ及び１０４Ａ〜１０４Ｄ）は、データベースのデータを管理する。データを管理するサーバ（夫々、１０３Ａ、１０３Ｃ及び１０４Ａ〜１０４Ｃ）には、例えば、データベース管理システム（ＤＢＭＳ）がインストールされている。データを管理するサーバ（夫々、１０３Ａ、１０３Ｃ及び１０４Ａ〜１０４Ｃ）は、上記データベース管理システム（ＤＢＭＳ）によって、第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）又は第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）若しくは両方のデータベース（夫々、１０１Ａ〜１０１Ｃ及び１０２Ａ〜１０２Ｄ）に含まれるデータを管理する。ここで、第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）及び第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）は、データを管理するサーバ（夫々、１０３Ａ、１０３Ｃ及び１０４Ａ〜１０４Ｄ）上にあるとは限らない。第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）及び第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）は、システム内の他のサーバ上に含まれていてもよいし、該システムの外にあってもよい。データを更新するサーバ（夫々、１０５Ａ〜１０５Ｃ）は、更新要求をクライアントから受け取る又は自らが更新要求を作成する。データを更新するサーバ（夫々、１０５Ａ〜１０５Ｃ）は、第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）に対して上記更新要求を発行することで、第１のデータベース（夫々、１０１Ａ〜１０１Ｃ）に含まれるデータを更新する。データを更新するサーバ（夫々、１０５Ａ〜１０５Ｃ）はまた、システムに含まれていても或いは含まれていなくてもよい。データを検索するサーバ（夫々、１０６Ａ〜１０６Ｄ）は、検索要求をクライアントから受け取り又は自らが検索要求を作成する。データを検索するサーバ（夫々、１０６Ａ〜１０６Ｄ）は、第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）に対して上記検索要求を発行することで、第２のデータベース（夫々、１０２Ａ〜１０２Ｄ）に含まれるデータを更新する。データを検索するサーバ（夫々、１０６Ａ〜１０６Ｄ）はまた、システムに含まれていても或いは含まれていなくてもよい。
【００５６】
システム構成（１００Ａ）は、第１のデータベース（１０１Ａ）及び第２のデータベース（１０２Ａ）それぞれが別のサーバ（１０３Ａ及び１０４Ａ）で管理されるシステム構成の例である。システム構成（１００Ａ）では、データを管理するサーバ（１０３Ａ及び１０４Ａ）間の通信が行われることによって、第１のデータベース（１０１Ａ）と第２のデータベース（１０２Ａ）との間のレプリケーションが実行される。システム構成（１００Ｂ）は、第１のデータベース（１０１Ｂ）及び第２のデータベース（１０２Ｂ）が共通のサーバ（１０４Ｂ）で管理されるシステム構成の例である。システム構成（１００Ｂ）では、上記通信の必要なしに、第１のデータベース（１０１Ｂ）と第２のデータベース（１０２Ｂ）との間のレプリケーションが実行される。システム構成（１００Ｃ）は、第２のデータベース（１０２Ｃ及び１０２Ｄ）が複数のサーバ（１０４Ｃ及び１０４Ｄ）上にそれぞれ含まれる。システム構成（１００Ｃ）は、第２のデータベース（１０２Ｃ及び１０２Ｄ）が複数のサーバ（１０４Ｃ及び１０４Ｄ）で管理されるシステム構成の例である。システム構成（１００Ｃ）では、データを管理するサーバ（１０３Ｃ）と、データを管理するサーバ（１０４Ｃ及び１０４Ｄ）それぞれとの間で通信が行われることによって、データベース間のレプリケーションが実行される。第２のデータベース（１０２Ｃ及び１０２Ｄ）に含まれるデータそれぞれは、データを管理するサーバ（１０４Ｃ及び１０４Ｄ）それぞれによって、独立して管理される。よって、第２のデータベース（１０２Ｃ及び１０２Ｄ）に含まれるデータそれぞれは、異なるデータであっても同一のデータであってもよい。
【００５７】
本発明の実施態様であるコンピュータ・システムにおけるシステム構成は、上記システム構成（１００Ａ〜１００Ｃ）の構成に限定されない。システム構成（１００Ａ〜１００Ｃ）では、データベースと、データを更新するサーバ（１０５Ａ〜１０５Ｃ）又は検索するサーバ（１０６Ａ〜１０６Ｄ）とが１対１に対応している。しかしながら、データベースとデータを更新するサーバ（１０５Ａ〜１０５Ｃ）又は検索するサーバ（１０６Ａ〜１０６Ｄ）との関係は、１対１に限らない。例えば、システム構成（１００Ｃ）において、データを検索するサーバ（１０６Ｃ）が、第２のデータベース（１０２Ｃ及び１０２Ｄ）の両方に対して検索要求を発行してもよい。また、データを検索するサーバ（１０６Ｃ）及びデータを更新するサーバ（１０５Ｃ）が例えば、同一のサーバであってもよい。同一のサーバである場合、該同一のサーバは、第２のデータベース（１０３Ｃ及び１０３Ｄ）への検索要求と、第１のデータベース（１０１Ｃ）のへの更新要求とを発行しうる。また、コンピュータ・システムは、図１Ａで示されているシステム構成を複数備えるコンピュータ・システムであってもよい。
【００５８】
図１Ｂは、本発明の実施態様における、第１のデータベースをバックエンドデータベースとし、第２のデータベースをインメモリデータベースとする場合の、図１Ａで示すシステム構成の例を示す。バックエンドデータベース（１１１Ａ）は、コンピュータ・システム全体のデータを格納するデータベースである。バックエンドデータベース（１１１Ａ）は、第１のデータベースに対応する。バックエンドデータベース（１１１Ａ）に含まれるデータは、データを更新するサーバ（１１５Ａ）によって更新されうる。インメモリデータベース（１１２Ａ〜１１２Ｃ）は、バックエンドデータベース（１１１Ａ）からレプリケーションされたデータベースである。インメモリデータベース（１１２Ａ〜１１２Ｃ）は、第２のデータベースに対応する。インメモリデータベース（１１２Ａ〜１１２Ｃ）は、バックエンドデータベース（１１１Ａ）から抽出された一部又は全部のデータを含む。インメモリデータベース（１１２Ａ〜１１２Ｃ）に含まれるデータは、データを検索するサーバ（１１４Ａ〜１１４Ｃ）によって検索されうる。
【００５９】
システム構成（１１０Ａ）は、少なくとも１のインメモリデータベース（１１２Ａ〜１１２Ｃ）と、１つのバックエンドデータベース（１１１Ａ）とを含む。インメモリデータベース（１１２Ａ〜１１２Ｃ）は例えば、データの種類ごと、データに対する処理ごと、又はデータがアクセスされる時間ごとに複数あってよい。上記データの種類とは、例えば、顧客に関するデータ、商品に関するデータ又は金額に関するデータである。上記データに対する処理とは、例えば、入金処理又は出金処理である。上記アクセスされる時間とは、例えば、平日昼間、平日夜間又は土日である。インメモリデータベース（１１２Ａ〜１１２Ｃ）は、１又は複数のシステムに分散されうる。
【００６０】
レプリケーションは例えば、ある時間間隔で、又は、ユーザによって指定された時刻に実行されてもよい。上記時間間隔は、例えば、ユーザが定義しうる。上記時間間隔は例えば、１０分、１時間又は１日でありうるが、これらに限定されない。上記時間間隔は、等間隔とも限らない。データを更新するサーバ（１１５Ａ）が例えば、昼は頻繁にデータを更新し、夜は稀にしかデータを更新しないとする。そのような場合、ユーザは、上記時間間隔を、昼の時間帯は例えば３０分と定義し、夜の時間帯は例えば５時間と定義しうる。また、レプリケーションは、各データベースにかかる負荷に応じて実行されてもよい。コンピュータ・システムは例えば、上記負荷をデータベース管理システムに監視させてもよい。コンピュータ・システムは、該負荷が、例えばユーザが定義した閾値を下回ることに応じて、レプリケーションを実行させうる。コンピュータ・システムは、レプリケーションにおいて、バックエンドデータベース（１１１Ａ）から差分データをまとめて読み出す。該まとめて読み出される差分データは、例えば、前回のレプリケーション以降に更新されたデータセットを含む。コンピュータ・システムは、該読み出したデータをインメモリデータベース（１１２Ａ〜１１２Ｃ）へ転送する。そして、コンピュータ・システムは、該転送したデータをインメモリデータベース（１１２Ａ〜１１２Ｃ）に適用する。一般的なデータベースにおいて、１つのトランザクションで多くのレコードを一気に取得し又は更新する処理の方が、複数のトランザクションで上記多くのレコードを取得又は更新する処理よりも高速である。レプリケーションが上記まとめて読み出したデータセット単位で実行される場合、バックエンドデータベース（１１１Ａ）及びインメモリデータベース（１１２Ａ〜１１２Ｃ）にかかる負荷が軽減される。
【００６１】
また、レプリケーションは、検索要求が発行された場合にも実行されうる。検索要求が発行された場合のレプリケーションについては、下記の図２Ａ〜図２Ｃの説明において詳しく述べられる。
【００６２】
なお、システム構成（１１０Ａ）では、インメモリデータベース（１１２Ａ〜１１２Ｃ）がクラスタでありうる。よって、レプリケーションにおいて、コンピュータ・システムは、複数のインメモリデータベース（１１２Ａ〜１１２Ｃ）それぞれについての差分データを、バックエンドデータベース（１１１Ａ）から取得する。ここで、あるインメモリデータベースに対して取得された差分データには、他のインメモリデータベースに対して取得されていない差分データが含まれうる。よって、バックエンドデータベース（１１１Ａ）から差分データが取得されたからといって、差分データがバックエンドデータベース（１１１Ａ）から削除されるとは限らない。従って、レプリケーションは、既にレプリケーションされたデータをなるべく再度取得されないように実行されるのが好ましい。但し、重複した差分データが取得されたとしても、例えば、データが上書きされるだけであり、バックエンドデータベース（１１１Ａ）に含まれるデータと、インメモリデータベース（１１２Ａ〜１１２Ｃ）に含まれるデータとの間で不整合は生じない。
【００６３】
なお、後述の図２〜図５を用いた説明では、第１のデータベースに対応するデータベースがバックエンドデータベースであり、第２のデータベースに対応するデータベースがインメモリデータベースである場合を例に説明する。
【００６４】
図２Ａは、本発明の実施態様における、図１Ｂに記載のシステムで実行される、データ検索時の処理ステップの例を示す。コンピュータ・システムは、インメモリデータベースへの検索要求が発行されることに応じて、以下のステップ２０１〜２０９を実行する。ステップ２０１は、上記処理の開始である。
【００６５】
ステップ２０２では、コンピュータ・システムは、上記発行された検索要求（現在の検索要求）又は上記発行された検索要求の後に発行されうる検索要求（未来の検索要求）が、最新性を必要とする検索要求かどうかを判定する。該判定では、コンピュータ・システムは、最新性を必要とする検索要求の宣言を記載するリスト（以下、第１のリスト）に、上記現在の検索要求又は上記未来の検索要求に含まれる宣言が記載されているかを判定する。上記第１のリストは、ユーザによって予め作成されたリストである。上記第１のリストには、上記最新性を必要とする検索要求に含まれている宣言と閾値との組がそれぞれ記載されている。また、上記未来の検索要求は、現在の検索要求の宣言と、現在の検索要求に対応する最新性を必要とする未来の検索要求の宣言との組を記載するリスト（以下、第２のリスト）から検索される。上記第２のリストは、ユーザによって予め作成されたリストである。上記第２のリストには、現在の検索要求に含まれている宣言と、上記現在の検索要求に対応し且つ最新性を必要とする上記未来の検索要求の宣言との組が、それぞれ記録されている。上記第２のリストは、上記第１のリストに含まれていてもよい。上記第１のリストに、上記現在の検索要求又は上記未来の検索要求の宣言が含まれている場合、該処理はステップ２０３に進む。上記宣言が含まれていない場合、該処理はステップ２０８に進む。
【００６６】
ステップ２０３では、コンピュータ・システムは、上記現在の検索要求又は上記未来の検索要求の検索対象のデータセットが過去にインメモリデータベースに適用された時間（以下、過去の適用時間）が、最新性についての閾値内の時間であるかどうかを判定する。最新性についての閾値とは、データセットが古くても許される時間の範囲である。上記閾値が例えば１時間である場合、１時間以内にインメモリデータベースに適用されたデータセットは、閾値内のデータセットである。また、上記過去の適用時間は、上記現在の検索要求又は上記未来の検索要求が過去に発行されたときに、後述のステップ２０７で例えばログに記録された時間である。コンピュータ・システムは、上記現在の検索要求又は上記未来の検索要求の発行予想時間と、上記過去の適用時間との差を求める。上記求めた差が上記第１のリストに記載されている上記現在の検索要求又は上記未来の検索要求の宣言に対応する閾値内である場合、該処理はステップ２０８に進む。上記差が閾値外である場合、該処理はステップ２０４に進む。
【００６７】
ステップ２０４では、コンピュータ・システムは、差分検索要求を生成する。差分検索要求は、インメモリデータベースに適用されているデータセットと上記現在の検索要求の発行時間におけるデータセットとの差分データを、バックエンドデータベースから検索するための要求である。上記差分検索要求は、例えば、上記現在の検索要求又は上記未来の検索要求の検索対象が属するテーブル、列又はレコードを検索する要求であるが、これらに限定されない。さらに、上記テーブル、列及びレコードそれぞれは、１つ又は複数であってよい。上記検索対象が属するテーブルが、例えば、列項目が「社員番号（キー項目）」、「氏（漢字）」、「名（漢字）」、「氏（カナ）」及び「名（カナ）」の列を含むテーブル及び列項目が「社員番号（キー項目）」及び「勤続年数」の列を含むテーブルであるとする。また、上記検索対象が、列項目が「氏（漢字）」及び「勤続年数」の列であるとする。ここで、例えば、列項目が「名（漢字）」の列は他の検索処理で検索されうる列であり、列項目が「氏（カナ）」「名（カナ）」の列は検索されない列である場合、コンピュータ・システムは、列項目が「氏（漢字）」、「名（漢字）」及び「勤続年数」の列を検索するための上記差分検索要求を生成しうる。また、上記検索対象が、例えば、社員番号が１０００番台のレコードの場合、上記差分検索要求は、１０００〜１９９９番のレコードを検索する要求であってもよいし、或いは全てのレコードを検索する要求であってもよい。また、レプリケーションを実行するためのコマンドが、使用されるデータベース管理システムに予め用意されている場合、上記コマンドを上記差分検索要求としてもよい。さらに、上記差分検索要求は、例えば、上記現在の検索要求又は上記未来の検索要求の検索対象に関係するテーブル、列又はレコードを検索する要求であってもよい。上記関係するとは、例えば外部キーによる参照関係である。ユーザは、上記現在の検索要求又は上記未来の検索要求と、例えば、テーブル、列又はレコードとの関係を記載する対応表を予め作成しうる。コンピュータ・システムは、上記対応表から、上記検索対象に関係するテーブル、列又はレコードを取得し、そして差分検索要求を生成しうる。上記生成の終了に応じて、該処理はステップ２０５に進む。
【００６８】
ステップ２０５では、コンピュータ・システムは、上記生成した差分検索要求をバックエンドデータベースに送信する。コンピュータ・システムは、バックエンドデータベースに対して上記送信された差分検索要求を実行する。コンピュータ・システムは、上記実行の結果をインメモリデータベースに送信する。該送信の終了に応じて、該処理はステップ２０６に進む。
【００６９】
ステップ２０６では、コンピュータ・システムは、上記送信された結果をインメモリデータベースに適用する。上記適用の終了に応じて、該処理はステップ２０７に進む。
【００７０】
ステップ２０７では、コンピュータ・システムは、上記適用した時間を、例えばログ、インメモリデータベースのプロセス内のメモリ又はインメモリデータベース自身に記録する。上記記録の終了に応じて、該処理はステップ２０８に進む。
【００７１】
ステップ２０８では、コンピュータ・システムは、インメモリデータベースに対して現在の検索要求を実行する。該実行により、検索回答が、上記検索要求の発行元に返される。上記実行の終了に応じて、該処理はステップ２０９に進む。
【００７２】
ステップ２０９は、上記処理の終了である。
【００７３】
上記に説明したステップ２０１〜２０９が実行されることで、以下に示す効果が得られる。
１．現在の検索要求又は上記未来の検索要求が、データの最新性が必要な検索要求と、データの最新性が必要ではない検索要求とに分類されるので（ステップ２０２）、上記データの最新性が必要ではない検索要求が、バックエンドデータベースに対して実行されることが回避される。該回避により、バックエンドデータベースにかかる負荷が軽減されうる。
２．データの最新性が必要な検索要求によって検索されるデータセットが、どの程度新しいデータセットであればよいかを判断するので（ステップ２０４）、可能な限りインメモリデータベースからデータセットが検索されるようになる。よって、上記判断が行われない場合に比べて、バックエンドデータベースに対するアクセスが減らされる。
３．差分検索要求は、発行された検索要求に比べ単純な検索要求になりうる。単純な検索処理とは、例えば、検索条件が少ない検索処理である。発行された検索要求が、例えば、あるテーブルに含まれるあるレコードのある列を検索する要求（以下、複雑な検索要求）の場合、差分検索要求は、上記あるテーブルのみを検索する要求（以下、単純な検索要求）になりうる。よって、上記差分検索要求が作成されることにより、バックエンドデータベースに、例えば、上記複雑な検索要求が例えば、パススルーされて実行されるようなことが減りうる。
４．インメモリデータベースをバックエンドデータベースに同期させる（ステップ２０７）。該同期は差分データセットを使用して行われるので、全件データセットを使用して行われる場合に比べて、データの読み込み量は少ない。
上記１〜４により、バックエンドデータベースにかかる負荷が軽減されうる。
【００７４】
さらに、上記図２Ａに示される処理にパススルー検索による手法を組み合わせることで、バックエンドデータベースにかかる負荷は、より効果的に軽減されうる。上記組み合わせた手法では、バックエンドデータベースから差分データを取得する処理よりも、バックエンドデータベースから上記検索回答を取得する処理の方が軽い処理になると見込まれる場合、発行された検索要求をパススルーさせる。該パススルーにより、図２Ａに示される方法を用いた場合に比べて、バックエンドデータベースにかかる負荷が軽減化されうる。
【００７５】
図２Ｂは、本発明の実施態様における、図２Ａに示す処理にパススルー検索による手法を組み合わせた場合の処理ステップの例を示す。コンピュータ・システムは、インメモリデータベースへの検索要求が発行されることに応じて、以下のステップ２１１〜２２１を実行する。なお、パススルーされる対象の検索要求は、現在の検索要求である。よって、ステップ２１１〜２２１は、上記未来の検索要求に対しては実行されない。現在の検索要求をパススルーさせつつ、未来の検索要求によって検索されるデータをレプリケーションさせる場合、コンピュータ・システムは、現在の検索要求に対しては図２Ｂのステップ２１１〜２２１を実行すればよく、また未来の検索要求に対しては図２Ａのステップ２０１〜２０７を実行すればよい。
【００７６】
ステップ２１１は、上記処理の開始である。
【００７７】
ステップ２１２では、コンピュータ・システムは、上記発行された検索要求が、最新性を必要とする検索要求かどうかを判定する。該判定では、コンピュータ・システムは、最新性を必要とする検索要求の宣言を記載する上記第１のリストに、上記発行された検索要求に含まれる宣言が記載されているかを判定する。上記リストに、発行された検索要求の宣言が含まれている場合、該処理はステップ２１３に進む。上記宣言が含まれていない場合、該処理はステップ２１９に進む。
【００７８】
ステップ２１３では、コンピュータ・システムは、上記発行された検索要求をバックエンドデータベースにパススルーすべきかどうかを判定する。ここで、ユーザは、例えば、パススルーの対象の検索要求の宣言を記載する又は検索要求の宣言とパススルーの有無を表すフラグとを記載するリスト（以下、第３のリスト）を予め用意しておく。上記第３のリストは、上記第１のリストと共通であってもよい。コンピュータ・システムは、上記第３のリストから、上記発行された検索要求をパススルーすべきかどうかを判定する。上記パススルーすべきだと判定された場合、該処理はステップ２２０に進む。上記パススルーすべきではないと判定された場合、該処理はステップ２１４に進む。
【００７９】
なお、上記パススルーすべきかどうかは、統計的なデータによって判定されてもよい。コンピュータ・システムは、検索要求について、例えば、パススルーするしないをランダムに判定する。コンピュータ・システムは、パススルーした場合の検索の応答時間と、パススルーしなかった場合の検索の応答時間とを、例えば検索要求ごとにログなどに記録しておく。コンピュータ・システムは、上記検索要求ごとの応答時間がある程度、例えば２０件たまることに応じて、上記検索要求ごとの応答時間の平均値を、パススルーした場合としなかった場合それぞれについて求める。パススルーした場合の平均値の方が短時間ならば、コンピュータ・システムは、上記応答時間の平均値が求められた上記検索要求がさらに発行された場合、上記ランダムに判定をせず、常にパススルーすべきと判定する。パススルーした場合の平均値の方が長時間ならば、コンピュータ・システムは、上記応答時間の平均値が求められた上記検索要求がさらに発行された場合、上記ランダムに判定はせず、常にパススルーすべきでないと判定する。
【００８０】
ステップ２２０では、コンピュータ・システムは、上記発行された検索要求をパススルーする。該パススルーにより、コンピュータ・システムは、バックエンドデータベースに対して上記発行された検索要求を実行する。該実行が終了したら、コンピュータ・システムは、上記実行の結果である検索回答を検索要求の発行元に返す。該返されることに応じて、該処理はステップ２２１に進む。
【００８１】
ここで、コンピュータ・システムは、上記パススルーによる検索によって取得された検索回答を、インメモリデータベースに適用する必要はない。上記検索回答は、リザルトキャッシュと呼ばれる既存の手法により保持されうる。なお、リザルトキャッシュとは、データベースに対して発行された要求の結果が保持されるキャッシュである。
【００８２】
ステップ２１４では、コンピュータ・システムは、上記発行された検索要求の検索対象のデータセットが過去にインメモリデータベースに適用された時間（過去の適用時間）が、最新性についての閾値内の時間であるかどうかを判定する。上記過去の適用時間は、上記発行された検索要求が過去に発行されたときに、後述のステップ２１８で例えばログに記録された時間である。コンピュータ・システムは、検索要求の発行時間と、上記過去の適用時間との差を求める。上記求めた差が上記第１のリストに記載されている発行された検索要求の宣言に対応する閾値内である場合、該処理はステップ２１９に進む。上記差が閾値外である場合、該処理はステップ２１５に進む。
【００８３】
ステップ２１５では、コンピュータ・システムは、差分検索要求を生成する。差分検索要求は、インメモリデータベースに適用されているデータセットと検索要求の発行時間におけるデータセットとの差分データを、バックエンドデータベースから検索するための要求である。上記差分検索要求は、例えば、上記発行された検索要求の検索対象が属するテーブル、列又はレコードを検索する要求であるが、これらに限定されない。さらに、上記テーブル、列及びレコードそれぞれは、１つであっても複数であってもよい。また、レプリケーションを実行するためのコマンドが使用されるデータベースに予め用意されている場合、上記コマンドを上記差分検索要求としてもよい。さらに、上記差分検索要求は、例えば、上記発行された検索要求の検索対象に関係するテーブル項目又はレコードを検索する要求であってもよい。ユーザは、上記発行された検索要求と、例えば、テーブル、列又はレコードとの関係を記載する対応表を予め作成しておく。コンピュータ・システムは、上記対応表から、上記検索対象に関係するテーブル、列又はレコードを取得し、差分検索要求を生成しうる。上記生成の終了に応じて、該処理はステップ２１６に進む。
【００８４】
ステップ２１６では、コンピュータ・システムは、上記生成した差分検索要求をバックエンドデータベースに送信する。コンピュータ・システムは、バックエンドデータベースに対して上記送信された差分検索要求を実行する。コンピュータ・システムは、上記実行の結果をインメモリデータベースに送信する。該送信の終了に応じて、該処理はステップ２１７に進む。
【００８５】
ステップ２１７では、コンピュータ・システムは、上記送信された結果をインメモリデータベースに適用する。上記適用の終了に応じて、該処理はステップ２１８に進む。
【００８６】
ステップ２１８では、コンピュータ・システムは、上記適用した時刻を、例えばログ、インメモリデータベースのプロセス内のメモリ又はインメモリデータベースに記録する。上記記録の終了に応じて、該処理はステップ２１９に進む。
【００８７】
ステップ２１９では、コンピュータ・システムは、インメモリデータベースに対して発行された検索要求を実行する。該実行により、上記検索要求の発行元に、検索回答が返される。上記実行の終了に応じて、該処理はステップ２２０に進む。
【００８８】
ステップ２２１は、処理の終了である。
【００８９】
図２Ａ及び図２Ｂに示す処理ステップが実行された場合、上記最新性が必要な検索要求の応答時間が長くなりうる。上記最新性が必要な検索要求が発行されると、コンピュータ・システムは、上記検索要求をパススルーする場合を除き、インメモリデータベースとバックエンドデータベースとの同期処理をまず完了させる。検索処理は、上記同期処理が完了した後のインメモリデータベースに対して実行される。よって、同期処理を行わない場合に比べて、検索の応答時間が長くなりうる。上記検索の応答時間が長くなりうる問題を改善するために、図２Ａ又は図２Ｂに示す処理に加えて、予測同期による手法が実行されてもよい。予測同期による手法では、検索要求（現在の検索要求）が発行されることに応じて、近い将来発行されると予想される検索要求（未来の検索要求）の対象となるデータセットの同期処理を実行する時間が求められ、該求められた時間に同期処理が実行される。よって、予測同期による手法は、上記未来の検索処理が発行される前に同期処理が実行されうる手法である。上記予測同期による手法により、データの最新性が必要な検索要求が発行されたときに、上記検索要求の検索回答が既にインメモリデータベース読み込まれている可能性が高くなる。よって、データの最新性が必要な検索要求の応答時間と同期処理を行わない場合の応答時間とが、同じ程度の時間になりうる。従って、上記検索の応答時間が長くなりうる問題が改善されうる。
【００９０】
図２Ｃは、本発明の実施態様における、図１Ｂに記載のシステムで実行される、予測同期の処理ステップの例を示す。コンピュータ・システムは、インメモリデータベースへの検索要求が発行されることに応じて、以下のステップ２３１〜２３６を実行する。ここで、図２Ａ又は図２Ｂに示す各ステップが並行で実行されてもよい。また、コンピュータ・システムは、定期的又はユーザによって指定された時間に又は指定された時間間隔で、以下のステップ２４１〜２５０を実行する。
【００９１】
ステップ２３１は、現在の検索要求が発行されることに応じて実行される処理の開始である。
【００９２】
ステップ２３２では、コンピュータ・システムは、上記現在の検索要求に対応する、最新性を必要とする未来の検索要求があるかどうかを判定する。該判定では、コンピュータ・システムは、上記第２のリストから、現在の検索要求に対応する上記未来の検索要求の宣言を検索する。該検索により、１以上の未来の検索要求の宣言が見つかった場合、該処理はステップ２３３に進む。上記宣言が見つからなかった場合、該処理はステップ２３５に進む。
【００９３】
ステップ２３３では、コンピュータ・システムは、上記見つかった未来の検索要求それぞれについて、チェック時刻を計算する。チェック時刻は、上記見つかった未来の検索要求の検索対象について同期をするかどうかの判断をする時刻である。上記計算には、例えば、未来の検索要求が発行されると予想される時刻と未来の検索要求についての閾値とが使用されうる。ユーザは、上記第２のリストの上記未来の検索要求の宣言それぞれと対応付けられた上記予想される時刻及び上記閾値を、例えば上記第２のリスト又は新たな第４のリストに予め記録しておく。コンピュータ・システムは、上記第２のリスト又は上記第４のリストから、上記見つかった未来の検索要求に対応する上記予想される時刻及び上記閾値を取得し上記計算を実行する。なお、上記閾値は、上記第１のリストから取得されてもよい。チェック時刻は、閾値内のある時刻であることが好ましい。よって、上記計算は、例えば「予想される時刻―閾値＊ｎ（０≦ｎ≦１）」である。ユーザは、上記チェック時刻を自由に設定しうる。上記見つかった未来の検索要求それぞれについてチェック時刻が計算されることに応じて、該処理はステップ２３４に進む。
【００９４】
ステップ２３４では、コンピュータ・システムは、未来の検索要求とチェック時刻との組それぞれを、例えば時刻順に、リスト（以下、第５のリスト）に記録する。該記録の終了に応じて、該処理はステップ２３５に進む。
【００９５】
図２Ａ又は図２Ｂの各処理を実行しない実装の場合、ステップ２３５では、コンピュータ・システムは、インメモリデータベースに対して現在の検索要求を実行する。該実行により、上記現在の検索要求の発行元に、検索回答が返される。上記実行の終了に応じて、該処理はステップ２３６に進む。図２Ａ又は図２Ｂの各処理を実行しない実装である場合、ステップ２３５は実行されず、該処理はステップ２３６に進む。
【００９６】
ステップ２３６は、現在の検索要求が発行されることに応じて実行される処理の終了である。
【００９７】
ステップ２４１は、定期的又はユーザによって指定された時間に又は指定された時間間隔で実行される処理の開始である。
【００９８】
ステップ２４２では、コンピュータ・システムは、上記第５のリストから未来の検索要求とチェック時刻との組を取得し、チェック時刻を判定する。該判定では、チェック時刻が現在時刻よりも古い又は同じかどうかが判定される。
以降のステップ２４３〜ステップ２４９は、上記現在時刻よりも古い又は同じと判定されたチェック時刻と組の未来の検索要求それぞれについて実行される。
【００９９】
ステップ２４３は、上記現在時刻よりも古い又は同じと判定されたチェック時刻と組の未来の検索要求それぞれについての、ループ処理の開始である。
【０１００】
ステップ２４４では、コンピュータ・システムは、上記取得した組の未来の検索要求それぞれについて、該未来の検索要求の検索対象のデータセットが過去にインメモリデータベースに適用された時間（過去の適用時間）が、最新性についての閾値内の時間であるかどうかを判定する。上記過去の適用時間は、上記未来の検索要求の検索対象のデータセットが過去にインメモリデータベースに適用されたときに、後述のステップ２４８で例えばログに記録された時間である。コンピュータ・システムは、現在時間と、上記過去の適用時間との差を求める。上記求めた差が上記第１、２又は４のリストに記載されている未来の検索要求の宣言に対応する閾値内である場合、該処理はステップ２４９に進む。上記差が閾値外である場合、該処理はステップ２４５に進む。
【０１０１】
ステップ２４５では、コンピュータ・システムは、差分検索要求を生成する。差分検索要求は、インメモリデータベースに適用されているデータセットと現在時刻におけるデータセットとの差分データを、バックエンドデータベースから検索するための要求である。上記差分検索要求は、例えば、上記未来の検索要求の検索対象が属するテーブル、列又はレコードを検索する要求であるが、これらに限定されない。さらに、上記テーブル、列及びレコードそれぞれは、１つであっても複数であってもよい。また、レプリケーションを実行するためのコマンドが、使用されるデータベースに予め用意されているならば、上記コマンドを上記差分検索要求としてもよい。さらに、上記差分検索要求は、例えば、上記発行された検索要求の検索対象に関係するテーブル、列又はレコードを検索する要求であってもよい。ユーザは、上記発行された検索要求と、例えば、テーブル、列又はレコードとの関係を記載する対応表を予め作成しておく。コンピュータ・システムは、上記対応表から、上記検索対象に関係するテーブル、列又はレコードを取得して、差分検索要求を生成しうる。上記生成の終了に応じて、該処理はステップ２４６に進む。
【０１０２】
ステップ２４６では、コンピュータ・システムは、上記生成した差分検索要求をバックエンドデータベースに送信する。コンピュータ・システムは、バックエンドデータベースに対して上記送信された差分検索要求を実行する。コンピュータ・システムは、上記実行の結果をインメモリデータベースに送信する。該送信の終了に応じて、該処理はステップ２４７に進む。
【０１０３】
ステップ２４７では、コンピュータ・システムは、上記送信された結果をインメモリデータベースに適用する。上記適用の終了に応じて、該処理はステップ２４８に進む。
【０１０４】
ステップ２４８では、コンピュータ・システムは、上記適用した時刻を、例えばログ、インメモリデータベースのプロセス内のメモリ又はインメモリデータベースに記録する。上記記録の終了に応じて、該処理はステップ２４９に進む。
【０１０５】
ステップ２４９は、上記ループ処理の終了である。
【０１０６】
ステップ２５０は、定期的又はユーザによって指定された時間に又は指定された時間間隔で実行される処理の終了である。
【０１０７】
図２Ａ〜図２Ｃに示す各処理ステップは、例えば、インメモリデータベースの検索処理部に組み込まれることで実行されうる。また、上記各処理ステップが検索処理部に組み込まれる実装が、本発明の実施態様を理解する上で最もわかりやすい実装であろう。しかしながら、上記インメモリデータベースの検索処理部が、例えば既に製品化されており上記組み込むことが困難な場合も考えられうる。よって以下では、既に製品化されているインメモリデータベースの検索処理部に直接手を加えずに本発明の実施態様を実装する例を示す。なお、該例では、Ｊａｖａ（登録商標）言語が用いられるが、実装に用いられる言語はＪａｖａ（登録商標）言語に限定されない。
【０１０８】
図３Ａは、本発明の実施態様における、ＪＤＢＣプロキシドライバを用いて図１Ｂに示すシステム構成を実装する例を示す。アプリケーション（３０１）は、例えばユーザからの検索要求を受け付けるＪａｖａ（登録商標）アプリケーションである。ＪＤＢＣプロキシドライバ（３０２）は、ＪＤＢＣドライバ（３０４）をラッピングしているＪＤＢＣドライバである。上記ラッピングにより、ＪＤＢＣプロキシドライバ（３０２）では、ＪＤＢＣドライバ（３０４）の代わりに、データベースに関する操作が実行されうる。また、上記ラッピングにより、ＪＤＢＣプロキシドライバ（３０２）は、ＪＤＢＣドライバ（３０４）の代わりに、アプリケーション（３０１）にデータベースを操作するＡＰＩを提供しうる。また、本発明の実施態様を実現するための機構（以下、本発明の機構）は、ＪＤＢＣプロキシドライバ（３０２）に組み込まれる。よって、上記本発明の機構についての上記データベースに関する操作及びＡＰＩの提供は、ＪＤＢＣプロキシドライバ（３０２）によって行われる。本発明の実施態様によるクライアント機構（３０３）は、上記ＪＤＢＣプロキシドライバ（３０２）に組み込まれた本発明の機構のうち、上記アプリケーション（３０１）が実行されるコンピュータ上の機構である。本物のＪＤＢＣドライバ（３０４）は、データベースに関する操作が実行されるＪＤＢＣドライバである。また、ＪＤＢＣドライバ（３０４）は、アプリケーション（３０１）にデータベースを操作するＡＰＩを提供しうる。本発明の実施態様によるサーバ機構（３０５）は、上記ＪＤＢＣプロキシドライバ（３０２）に組み込まれた本発明の機構のうち、インメモリデータベース（３０６）を管理するコンピュータ上の機構である。インメモリデータベース（３０６）は、バックアップデータベース（３０８）複製されるデータベースであって、バックアップデータベース（３０８）に含まれる少なくとも１のデータを保持するデータベースである。非同期レプリケーション受信部（３０７）は、バックアップデータベース（３０８）に含まれるデータがインメモリデータベース（３０６）にレプリケーションされるときに、レプリケーションするための更新データを受信する。バックエンドデータベース（３０８）は、実装例におけるメインのデータベースである。データの更新は、バックエンドデータベース（３０８）に対してのみ実行される。非同期レプリケーション送信機構（３０９）は、バックエンドデータベース（３０８）に含まれるデータがインメモリデータベース（３０６）にレプリケーションされるときに、レプリケーションするための更新データを送信する。更新ログテーブル（３１０）は、バックエンドデータベース（３０８）に対する更新情報を保存するテーブルである。上記更新情報は、更新されたデータ及び更新時刻である。上記更新情報はまた、上記データを更新するＳＱＬ文及び更新時刻であってもよい。ＳＱＬ文定義ファイル（３１１）は、ユーザ定義の情報を保存するファイルである。該ファイルは、例えばＸＭＬファイル、テキストファイル又はバイナリファイルである。ＳＱＬ文定義ファイル（３１１）は、上記第１〜５のリストに対応する。ＳＱＬ文定義ファイル（３１１）には、データの最新性が必要であるＳＱＬ文の宣言、上記ＳＱＬ文によって同期処理の対象となるテーブル名及び閾値が、ユーザによって予め登録されている。上記ＳＱＬ文の宣言は、ＪＤＢＣのjava.sql.Connection#prepareStatementメソッドの文字列として渡される宣言である。さらに、ＳＱＬ文定義ファイル（３１１）には、任意のＳＱＬ文に対して、該ＳＱＬ文が発行された後の近い将来に発行されると予想されるＳＱＬ文の宣言であって、データの最新性が必要な上記予想されるＳＱＬ文の宣言と、上記予想されるＳＱＬ文が任意のＳＱＬ文に対して何秒後に発行されると予想されるかを示す予想発行時間とが、ユーザによって予め登録されている。
【０１０９】
図３Ｂは、本発明の実施態様における、図３Ａで示されるクライアント機構（３０３）及びサーバ機構（３０５）の詳細を示す。
【０１１０】
以下では、定期的なレプリケーションの動作を、図３Ａ及び図３Ｂを用いて説明する。なお、コンピュータ・システムは、バックエンドデータベース（３０８）のデータがそれぞれ更新されることに応じて、該更新のログをそれぞれ更新ログテーブル（３１０）に記録している。非同期レプリケーション送信部（３０９）は、一定の時間間隔で上記更新ログテーブル（３１０）を参照する。そして、非同期レプリケーション送信部（３０９）は、上記参照において発見された複数の更新のログを、非同期レプリケーション受信部（３０７）にまとめて送信する。非同期レプリケーション受信部（３０７）は、上記送信された更新ログを受信すると、上記更新ログについてのデータ更新をインメモリデータベース（３０６）に対して行う。上記更新が完了することに応じて、非同期レプリケーション受信部（３０７）は、非同期レプリケーション送信部（３０９）に対し、レプリケーションの完了を通知する。上記完了の通知を受けた非同期レプリケーション送信部（３０９）は、上記インメモリデータベース（３０６）で更新済みのデータについての更新ログを、更新ログテーブル（３１０）から削除する。ここで、インメモリデータベース（３０６）とバックエンドデータベース（３０８）との同期をとる場合、本発明の実施態様によるサーバ機構（３０５）は、上記同期を行った時刻を、サーバ側同期時刻記録領域（３２０）に記録しておく。
【０１１１】
以下では、アプリケーション（３０１）が起動されるときの動作を図３Ａ及び図３Ｂを用いて説明する。アプリケーション（３０１）が起動され、ＪＤＢＣドライバ（３０４）の初期化が行われるときに、クライアント機構（３０３）は、ＳＱＬ文定義ファイル（３１１）を読み込み、ＳＱＬ文定義ファイル（３１１）に記録されている情報（以下、定義ファイルの情報）を、例えばメモリに記憶する。なお、ＳＱＬ文定義ファイル（３１１）に登録されているＳＱＬ文の宣言は、java.util.HashSetに登録する。
【０１１２】
以下では、アプリケーション（３０１）から検索要求（３１２）が発行される動作を説明する。アプリケーション（３０１）から、ＪＤＢＣプロキシドライバ（３０２）に対して検索要求であるＳＱＬ文（以下、現在のＳＱＬ文）が発行されると、ＪＤＢＣプロキシドライバ（３０２）に埋め込まれているＳＱＬ文判別部（３１３）は、上記現在のＳＱＬ文を受け取る。ＳＱＬ文判別部（３１３）は、上記受け取った現在のＳＱＬ文の宣言に対応する近い将来に発行されるＳＱＬ文（以下、未来のＳＱＬ文）の宣言が、上記定義ファイルからの情報に登録されているかどうかを判別する。登録されている場合、ＳＱＬ文判別部（３１３）は、上記定義ファイルからの情報として記憶されている未来のＳＱＬ文の宣言に対応する閾値、予想発行時間及び同期処理の対象となるテーブル名を取得する。ＳＱＬ文判別部（３１３）は、上記取得した閾値、予想発行時間及び対象となるテーブルを含む予測的同期要求を、サーバ機構（３０５）の予測的同期処理部（３１４）に発行する。ＳＱＬ文判別部（３１３）は、上記発行が終了することに応じて、アプリケーション（３０１）からprepareStatementメソッドによって発行された現在のＳＱＬ文の宣言であって、上記メソッドの引数で渡される上記現在のＳＱＬ文の宣言が、データの最新性が必要であるＳＱＬ文の宣言として上記java.util.HashSetに登録されているかを判断する。現在のＳＱＬ文の宣言が上記登録されていない場合、ＳＱＬ文判別部（３１３）は、上記現在のＳＱＬ文による検索要求がデータの最新性が必要ではない検索要求であると判断する。データの最新性が必要ではない検索要求であると判断されることに応じて、ＳＱＬ文判別部（３１３）は、インメモリデータベース検索呼出部（３１５）を呼び出す。インメモリデータベース検索部（３１５）は、上記現在のＳＱＬ文を使ってインメモリデータベース（３０１）を検索する。上記検索の結果は、アプリケーション（３０１）に返され、検索処理は終了する。
【０１１３】
一方、現在のＳＱＬ文の宣言が上記登録されている場合、ＳＱＬ文判別部（３１３）は、上記現在のＳＱＬ文による検索要求がデータの最新性が必要な検索要求である判断する。データの最新性が必要な検索要求であると判断されることに応じて、ＳＱＬ文判別部（３１３）は、上記定義ファイルからの情報から、現在のＳＱＬ文に対応する対象となるテーブル名及び閾値を取得する。そしてＳＱＬ文判別部（３１３）は、バックエンドデータベース同期判別部（３１６）に対して、上記取得した対象となるテーブル名及び閾値を指定してデータ同期依頼を発行する。バックエンドデータベース同期判別部（３１６）は、上記データ同期依頼を受けることに応じて、現在のＳＱＬ文による検索においてインメモリデータベース（３０１）とバックエンドデータベース（３０８）との同期をとるべきかどうかを判断する。該判断では、まず上記データ同期依頼において指定された上記対象となるテーブルに対して最後に同期をした時刻が、クライアント側同期時刻記録領域（３１７）から取得される。次に、上記取得した時刻からの経過時間と、上記データ同期依頼において指定された閾値とが比較される。該比較の結果上記経過時間が閾値以内ならば、バックエンドデータベース同期判別部（３１６）は、上記同期をとる必要はないと判断する。上記同期をとる必要はないと判断されることに応じて、バックエンドデータベース同期判別部（３１６）は、インメモリデータベース検索呼出部（３１５）を呼び出す。インメモリデータベース検索部（３１５）は、上記現在のＳＱＬ文を使ってインメモリデータベース（３０１）を検索する。上記検索の結果は、アプリケーション（３０１）に返され、検索処理は終了する。
【０１１４】
一方、該比較の結果上記経過時間が閾値より大きければ、バックエンドデータベース同期判別部（３１６）は、上記同期をとるべきだと判断する。上記同期をとるべきだと判断されることに応じて、バックエンドデータベース同期判別部（３１６）は、インメモリデータベース同期依頼部（１８）を呼び出す。インメモリデータベース同期依頼部（３１８）は、上記定義ファイルからの情報から、現在のＳＱＬ文に対応する対象となるテーブル名及び閾値を取得する。そしてインメモリデータベース同期依頼部（３１８）は、サーバ側インメモリデータベース同期部（３１９）を、上記取得した対象となるテーブル名及び閾値を指定して通信を介して呼び出す。インメモリデータベース同期依頼部（３１８）は、上記呼び出しの完了を待つ。
【０１１５】
インメモリデータベース同期部（３１９）は、サーバ側同期時刻記録領域（３２０）の上記指定された対象となるテーブルの更新時刻を参照する。インメモリデータベース同期部（３１９）は、上記参照された更新時刻と上記指定された閾値とから、同期が必要かどうかを判別する。上記参照された更新時刻からの経過時間が閾値以内ならば、インメモリデータベース同期部（３１９）は、同期が必要ではないと判断する。上記同期が必要でないと判断されることに応じて、インメモリデータベース同期部（３１９）は、インメモリデータベース同期依頼部（３１８）に上記参照された更新時刻を指定して処理完了を返送する。インメモリデータベース同期依頼部（３１８）は上記処理完了を受けると、クライアント側同期時刻記録領域（３１７）の上記対象となるテーブルについての同期時刻を、上記指定された更新時刻で更新する。該更新が完了したら、インメモリデータベース同期依頼部（３１８）は、インメモリデータベース検索呼出部（３１５）を呼び出す。インメモリデータベース検索部（３１５）は、上記現在のＳＱＬ文を使ってインメモリデータベース（３０１）を検索する。上記検索の結果はアプリケーション（３０１）に返され、検索処理は終了する。
【０１１６】
一方、上記参照された更新時刻からの経過時間が閾値より大きければ、インメモリデータベース同期部（３１９）は、同期が必要であると判断する。上記同期が必要であると判断されることに応じて、インメモリデータベース同期部（３１９）は、バックエンドデータベースの非同期レプリケーション送信部（図３Ａ、３０９）対して、データ同期依頼を発行する。非同期レプリケーション送信部（３０９）は、上記データ同期依頼を受けると、更新ログテーブル（３１０）から最後にレプリケーションが実行された時刻以降に追加された上記対象となるテーブルについての更新ログを検索する。該検索は、例えばログに通番がある場合、最後に検索されたログの通番より大きい通番を持つログのレコードの検索である。そして非同期レプリケーション送信部（３０９）は、該検索された更新ログを非同期レプリケーション受信部（３０７）に送信する。該送信を受けた非同期レプリケーション受信部（３０７）は、上記更新ログを使用してインメモリデータベースの更新を行う。該更新が完了したら、非同期レプリケーション受信部（３０７）は、サーバ側同期時刻記録領域（３２０）の対象テーブルについての同期時刻を現在時刻に更新する。該更新が完了することに応じて、非同期レプリケーション受信部（３０７）は、非同期レプリケーション送信部（３０９）にインメモリデータベースの更新が完了したことを通知する。非同期レプリケーション送信部（３０９）は、上記通知を受けると、上記データ同期依頼の返答をインメモリデータベース同期部（３１９）に渡す。なお、上記返答には、上記更新された同期時刻が付加される。上記返答を受けたインメモリデータベース同期部（３１９）は、クライアント側同期時刻記録領域（３１７）の上記対象となるテーブルについての同期時刻を、上記更新された同期時刻で更新する。該更新が完了したら、インメモリデータベース同期依頼部（３１８）は、インメモリデータベース検索呼出部（３１５）を呼び出す。インメモリデータベース検索部（３１５）は、上記現在のＳＱＬ文を使ってインメモリデータベース（３０１）を検索する。上記検索の結果は、アプリケーション（３０１）に返され、検索処理は終了する。
【０１１７】
以下では、予測的同期処理部（３１４）の動作を図３Ａ及び図３Ｂを用いて説明する。予測的同期処理部（３１４）は、上記予測的同期要求が発行された場合に以下の処理を実行する。予測的同期処理部（３１４）は、ＳＱＬ文判別部（３１３）によって発行された上記予測的同期要求を受け取ると、予測的処理要求についてのチェック時間を計算する。チェック時間は、予測的処理要求に含まれる閾値及び予想される時刻から求められる。上記チェック時刻の算定方法は色々と考えられるが、該例では、例えば予想される時刻−閾値／２とする。上記チェック時間が計算されると、予測的同期処理部（３１４）は、
上記チェック時間、予測的処理要求に含まれる閾値、予想される時刻及び対象となるテーブル名の組を、上記チェック時間順に予測的同期要求記録領域（３２１）に蓄積する。
【０１１８】
また、予測的同期処理部（３１４）は、定期的に以下の処理を実行する。
予測的同期処理部（３１４）は、上記予測的同期要求記録領域（３２１）に蓄積されている上記組を取得する。該取得では、上記予測的同期要求記録領域（３２１）の先頭に保存されている組から、チェック時間が現在時刻以前の組までが取得される。また、ここで取得された組は、上記予測的同期要求記録領域（３２１）から削除される。予測的同期処理部（３１４）は、上記取得したそれぞれの組に含まれる対象となるテーブルについての最後の同期時刻を、サーバ側同期時刻記録領域（３２０）から取得する。次に、予測的同期処理部（３１４）は、上記取得した最後の同期時刻、上記組に含まれる予想される時刻及び上記組に含まれる閾値から対象となるテーブルそれぞれについて、同期処理を依頼するかどうかの判断を行う。該判断では、予想される時刻−閾値が計算される。上記計算された値が、最後の同期時刻より小さければ、対応するテーブルについての同期処理は不要であると判断される。上記計算された値が、最後の同期時刻より大きく且つ現在時刻を超えていなければ、対応するテーブルについての同期処理が必要だと判断される。上記計算された値が、現在時刻を超えていれば、対応するテーブルについての同期処理は不要であると判断される。予測的同期処理部（３１４）は、上記同期処理が必要だと判断された対応するそれぞれのテーブルについての同期処理の依頼をインメモリデータベース同期部（３１９）に発行する。
【０１１９】
以下では、上記予測的同期処理部（３１４）からの同期処理の依頼が発行されたときのレプリケーションの実行を図３Ａ及び図３Ｂを用いて説明する。
インメモリデータベース同期部（３１９）は、上記同期処理の依頼を受けることに応じて、バックエンドデータベースの非同期レプリケーション送信部（３０９）対し、データ同期依頼を発行する。非同期レプリケーション送信部（３０９）は、上記データ同期依頼を受けると、更新ログテーブル（３１０）から最後にレプリケーションが実行された時刻以降に追加された上記対象となるテーブルについての更新ログを検索する。該検索は、例えばログに通番がある場合、最後に検索されたログの通番より大きい通番を持つログのレコードの検索である。そして非同期レプリケーション送信部（３０９）は、該検索された更新ログを非同期レプリケーション受信部（３０７）に送信する。該送信を受けた非同期レプリケーション受信部（３０７）は、上記更新ログを使用してインメモリデータベースの更新を行う。該更新が完了したら、非同期レプリケーション受信部（３０７）は、サーバ側同期時刻記録領域（３２０）の対象テーブルについての同期時刻を現在時刻に更新する。該更新が完了することに応じて、非同期レプリケーション受信部（３０７）は、非同期レプリケーション送信部（３０９）にインメモリデータベースの更新が完了したことを通知する。非同期レプリケーション送信部（３０９）は、上記通知を受けると、上記データ同期依頼の返答をインメモリデータベース同期部（３１９）に渡す。なお、上記返答には、上記更新された同期時刻が付加される。上記返答を受けたインメモリデータベース同期部（３１９）は、クライアント側同期時刻記録領域（３１７）の上記対象となるテーブルについての同期時刻を、上記更新された同期時刻で更新する。
【０１２０】
下記図４Ａ〜図４Ｇでは、図２Ａ〜図２Ｃで示される各ステップの動作を、具体的な例を用いて説明する。
【０１２１】
図４Ａは、本発明の実施態様における、図２Ａ〜図２Ｃで示される各ステップの動作のために使用されるデータベースの具体的な例を示す。バックエンドデータベース（４０１）は、テーブルＡ（４０２）及びテーブルＢ（４０３）を含む。テーブルＡ（４０２）は、Ａ０〜Ａ４を列項目とする列を含むテーブルである。テーブルＢ（４０３）は、Ｂ０〜Ｂ３を列項目とする列を含むテーブルである。ここで、Ａ０及びＢ０は、テーブルの行番号を表す列項目であり、上記行番号は、テーブルのキー項目である。インメモリデータベース（４０４）は、テーブルＡ（４０２）及びテーブルＢ（４０３）からレプリケーションされるテーブルａ（４０５）及びテーブルｂ（４０６）を含む。テーブルａ（４０５）は、Ａ０〜Ａ４を列項目とする列を含むテーブルであって、テーブルＡ（４０２）と同じ構造のテーブルである。テーブルｂ（４０６）は、Ｂ０、Ｂ１及びＢ３を列項目とする列を含むテーブルであって、テーブルＢ（４０３）から列項目Ｂ２の列が削除された構造のテーブルである。テーブルＡ（４０２）からテーブルａ（４０５）へのレプリケーションが最後に実行されたのは、１４：００であるとする。テーブルＢ（４０３）からテーブルｂ（４０６）へのレプリケーションが最後に実行されたのは、１５：３０であるとする。
【０１２２】
図４Ｂは、本発明の実施態様における、図２Ａ〜図２Ｃで示される各ステップの動作のために使用されるリストの具体的な例を示す。リスト（４１１）は、最新性を必要とする検索要求、上記検索要求についての閾値及び上記検索要求についてのパススルーの有無が指定されているリストである。リスト（４１１）は、上記第１及び３のリストに対応する。リスト（４１１）には、以下に示すａ１〜ａ３の情報が記載されている。
ａ１．最新性を必要とする検索要求は「列項目がＡ１の列を検索する検索要求」であり、閾値は「１時間」であり、パススルーの対象ではない。
ａ２．最新性を必要とする検索要求は「列項目がＡ３の列を検索する検索要求」であり、閾値は「３０分」であり、パススルーの対象である。
ａ３. 最新性を必要とする検索要求は「テーブルｂを検索する検索要求」であり、閾値は「６分」であり、パススルーの対象ではない。
リスト（４１２）は、検索要求、上記検索要求の後に発行されると予想される検索要求及び該予想される検索要求の予想発行時間が指定されているリストである。リスト（４１２）は、上記第２及び４のリストに対応する。リスト（４１２）には、以下に示すａ４の情報が記載されている。
ａ４．検索要求は「列項目がＡ４の列を検索する検索要求」であり、予想される検索要求は「テーブルｂを検索する検索要求」であり、予想される発行時間は「１０分後」である。
【０１２３】
図４Ｃは、本発明の実施態様における、データの最新性を必要とする検索要求が発行された場合の例として、列項目がＡ１の列の３行目を検索する検索要求（以下、第１の検索要求（４２１））が発行された場合の動作を示す。現在時刻が１６：００であるとする。第１の検索要求（４２１）が発行されると、コンピュータ・システムは、リスト（図４Ｂ、４１１）から上記ａ１の情報を得る。第１の検索要求（４２１）は、上記ａ１の記載「列項目がＡ１の列を検索する検索要求」に該当する。よって、コンピュータ・システムは、第１の検索要求（４２１）を最新性を必要とする検索要求であると判断する。上記判断に応じて、コンピュータ・システムは、第１の検索要求（４２１）に関係するデータについて、テーブルａ（４２２ａ）へのレプリケーションが最後に実行された時間「１４：００」と、現在時刻「１６：００」とを比較する。最後にレプリケーションが実行されてから経過した時間は、１６：００−１４：００＝２時間であり、ａ１に記載の閾値「１時間」を超えているので、コンピュータ・システムは、第１の検索要求（４２１）に関係するデータの同期が必要だと判断する。上記判断に応じて、コンピュータ・システムは、第１の検索要求（４２１）に関係するデータについての差分をバックエンドデータベース（４２５）から抽出するための差分検索要求（４２３）を作成する。上記差分は、例えばテーブルＡ（４２４）とテーブルａ（４２２ａ）との差分、テーブルＡ（４２４）の列項目がＡ１の列とテーブルａ（４２２ａ）の列項目がＡ１の列との差分又はテーブルＡ（４２４）の３行目とテーブルａ（４２２ａ）の３行目との差分というまとまった単位であるがこれらに限らない。例えばテーブルＡ（４２４）の列項目がＡ１の列とテーブルａ（４２２ａ）の列項目がＡ１の列との差分を検索する場合、上記差分検索要求（４２３）は「列項目がＡ１の列を検索する検索要求」となる。差分検索要求（４２３）が作成されることに応じて、コンピュータ・システムは、該差分検索要求（４２３）をバックエンドデータベース（４２５）に対して実行する。該実行により、コンピュータ・システムは、テーブルＡ（４２４）の列項目がＡ１の列の値である「山田」、「佐藤」及び「加藤」を抽出し、インメモリデータベース（４２６）に適用する（４２７）。該適用の結果、テーブルａ（４２２ａ）のデータは、テーブルａ（４２２ｂ）に示す状態になる。また、コンピュータ・システムは、上記適用した時間「１６：００」を、例えばログに記録する（４２８）。上記記録することに応じて、コンピュータ・システムは、インメモリデータベース（４２６）に対して第１の検索要求（４２１）を実行する。上記実行により、コンピュータ・システムは、列項目がＡ１の列の３行目の値「加藤」を要求元に返し（４２９）、処理を終了する。
【０１２４】
図４Ｄは、本発明の実施態様における、図４Ｃの処理の後に上記第１の検索要求が再度発行された場合の動作を示す。現在時刻が１６：３０であるとする。第１の検索要求（４３１）が再度発行されると、コンピュータ・システムは、リスト（図４Ｂ、４１１）から上記ａ１の情報を得る。第１の検索要求（４３１）は、上記ａ１の記載「列項目がＡ１の列を検索する検索要求」に該当する。よって、コンピュータ・システムは、第１の検索要求（４３１）を最新性を必要とする検索要求であると判断する。上記判断に応じて、コンピュータ・システムは、第１の検索要求（４３１）に関係するデータについて、テーブルａ（４３２）へのレプリケーションが最後に実行された時間であって、上記適用された時間「１６：００」（４３８）と、現在時刻「１６：３０」とを比較する。上記適用されてから経過した時間は、１６：３０−１６：００＝３０分であり、ａ１に記載の閾値「１時間」を超えていない。よって、コンピュータ・システムは、第１の検索要求（４３１）に関係するデータの同期が不要だと判断する。上記不要だと判断することに応じて、コンピュータ・システムは、インメモリデータベース（４３６）に対して第１の検索要求（４３１）を実行する。上記実行により、コンピュータ・システムは、列項目がＡ１の列の値「加藤」を要求元に返し（４３９）、処理を終了する。
【０１２５】
図４Ｅは、本発明の実施態様における、データの最新性を必要としない検索要求が発行された場合の例として、列項目がＡ２の列を検索する検索要求（以下、第２の検索要求（４４１）が発行された場合の動作を示す。第２の検索要求（４４１）が発行されると、コンピュータ・システムは、リスト（図４Ｂ、４１１）を検索する。上記リスト（図４Ｂ、４１１）には、第２の検索要求（４４１）が含まれないので、コンピュータ・システムは、第２の検索要求（４４１）を最新性を必要としない検索要求だと判断する。上記判断に応じて、コンピュータ・システムは、インメモリデータベース（４４６）に対して第２の検索要求（４４１）を実行する。上記実行により、コンピュータ・システムは、列項目がＡ２の列の値「太郎」、「一郎」及び「花子」を要求元に返し（４４９）、処理を終了する。
【０１２６】
図４Ｆは、本発明の実施態様における、パススルーが実行される場合の例として、列項目がＡ３の列の２行目を検索する検索要求（以下、第３の検索要求（４５１））が発行された場合の動作を示す。第３の検索要求（４５１）が発行されると、コンピュータ・システムは、リストから上記ａ２の情報を得る。第３の検索要求（４５１）は、上記ａ２の記載「列項目がＡ３の列を検索する検索要求」に該当し且つ「パススルーあり」である。よって、コンピュータ・システムは、第３の検索要求（４５１）を最新性を必要とし且つパススルーの対象である検索要求と判断する。上記判断に応じて、コンピュータ・システムは、バックエンドデータベース（４５５）に対して第３の検索要求（４５１）を実行する。上記実行により、コンピュータ・システムは、列項目がＡ３の列の２行目の値「大阪府」を要求元に返し（４５９）、処理を終了する。
【０１２７】
図４Ｇは、本発明の実施態様における、未来の検索要求がデータの最新性を必要とする検索要求が発行された場合の例として、列項目がＡ４の列を検索する検索要求（以下、第４の検索要求（４６１））が発行された場合の動作を示す。現在時刻が１６：００であるとする。第４の検索要求（４６１）が発行されると、コンピュータ・システムは、リスト（図４Ｂ、４１２）から上記ａ４の情報を得る。第４の検索要求（４６１）は、上記ａ４の記載「列項目がＡ４の列を検索する検索要求」に該当する。よって、コンピュータ・システムは、第４の検索要求（４６１）の後に発行されうる検索要求である「テーブルｂを検索する検索要求（以下、第５の検索要求）」についてのチェック時間を計算する。コンピュータ・システムは、上記チェック時間を、例えば、１６：００（現在時刻）＋１０分（予想発行時間）−（６分（ａ３に記載の上記第５の検索要求についての閾値）÷２）＝１６：０７としうる。コンピュータ・システムは、上記計算されたチェック時間をリスト（４７２）に記録する。上記記録することに応じて、コンピュータ・システムは、インメモリデータベース（４６６）に対して第４の検索要求（４６１）を実行する。上記実行により、コンピュータ・システムは、列項目がＡ４の列の値「１００」、「５００」及び「７００」を要求元に返す（４６９）。
【０１２８】
現在時刻が、上記チェック時間１６：０７になることに応じて、コンピュータ・システムは、上記第５の検索要求に関係するデータについて、テーブルｂへのレプリケーションが最後に実行された時間「１５：３０」と、予想される第５の検索要求の発行時刻である「１６：１０（１６：００＋１０分）」とを比較する。最後にレプリケーションが実行されてから上記発行が予想される時刻までの経過予想時間は、１６：１０−１５：３０＝４０分であり、閾値「６分」を超えている。よって、コンピュータ・システムは、上記第５の検索要求に関係するデータの同期が必要だと判断する。上記判断に応じて、コンピュータ・システムは、上記第５の検索要求に関係するデータについての差分データをバックエンドデータベース（４６５）から抽出するための差分検索要求（４６３）を作成する。差分検索要求（４６３）は、例えば「テーブルＢを検索する検索要求」となる。差分検索要求（４６３）が作成されることに応じて、コンピュータ・システムは、該差分検索要求（４６３）をバックエンドデータベース（４６５）に対して実行する。該実行により、コンピュータ・システムは、例えば列項目がＢ２以外の列のデータをテーブルＢから抽出し、インメモリデータベース（４６６）に適用する。また、コンピュータ・システムは、上記適用した時間「１６：０７」を、例えばログに記録する（４６８）。上記記録することに応じて、コンピュータ・システムは、リスト（４７２）からチェック時間を削除する。
【０１２９】
予想される第５の検索要求の発行時刻１６：１０に、実際に第５の検索要求が発行された場合（４７３）、コンピュータ・システムは、リスト（図４Ｂ、４１１）から上記ａ３の情報を得る。上記第５の検索要求は、上記ａ３の記載「テーブルｂを検索する検索要求」に該当するので、コンピュータ・システムは、上記第５の検索要求を最新性を必要とする検索要求であると判断する。
上記判断に応じて、コンピュータ・システムは、上記第５の検索要求に関係するデータについて、テーブルｂ（４７０ｂ）へのレプリケーションが最後に実行された時間であって、上記適用した時間「１６：０７」と、現在時刻「１６：１０」とを比較する。上記適用されてから経過した時間は、１６：１０−１６：０７＝３分であり、閾値「６分」を超えていない。よって、コンピュータ・システムは、上記第５の検索要求に関係するデータの同期が不要だと判断する。上記不要だと判断することに応じて、コンピュータ・システムは、インメモリデータベース（４６６）に対して第５の検索要求を実行する。上記実行により、コンピュータ・システムは、テーブルｂ（４７０ｂ）の値「１９７５」、「１９８２」、「１９８９」、「true1」、「true2」及び「false1」を要求元に返し（４７４）、処理を終了する。
【０１３０】
図５は、本発明の実施態様における、図１Ｂに記載のシステム構成の機能を図示する機能ブロック図を示す。コンピュータ・システム（５０１）は、第２のデータベース（５０３）、記憶部（５０４）、最新性判断部（５０５）、同期判断部（５０６）、検索回答抽出部（５０７）、検索回答更新部（５０８）、計算部（５０９）、蓄積部（５１０）、定期抽出部（５１１）、記録部（５１２）及び定期更新部（５１３）を含む。また、第１のデータベース（５０２）は、コンピュータ・システム（５０１）上のデータベースであっても、別のシステム上のデータベースであってもよい。第１のデータベース（５０２）は、コンピュータ・システム（５０１）で管理されるデータについてのマスターデータベースである。上記管理されるデータは、例えばユーザ、コンピュータ・システム（５０１）上の任意のアプリケーション又は他のコンピュータ・システム上の任意のアプリケーションによって更新されうる。第２のデータベース（５０３）は、第１のデータベース（５０２）に含まれる少なくとも１のデータを保持する少なくとも１のデータベースであって、コンピュータ・システム（５０１）で管理されるデータについてのサブデータベースである。上記管理されるデータは、例えばユーザ、コンピュータ・システム（５０１）上の任意のアプリケーション又は他のコンピュータ・システム上の任意のアプリケーションによって検索されうる。例えば上記ユーザは、上記検索をするために、第２のデータベース（５０３）に対して検索要求を発行する。記憶部（５０４）は、コンピュータ・システム（５０１）で管理される例えばファイルを保存するための記憶域である。該ファイルは、例えば定義リストである。記憶部（５０４）は、例えばメモリである。
【０１３１】
最新性判断部（５０５）は、第２のデータベース（５０３）に検索要求が発行されることに応じて、上記検索要求（以下、現在の検索要求）又は該現在の検索要求の後に発行されうる検索要求（以下、未来の検索要求）若しくは両方の検索要求が、データの最新性を必要とするかどうかをそれぞれ判断する。最新性判断部（５０５）は、上記判断をするために、記憶部（５０４）から定義リストを取得する。最新性判断部（５０５）は、定義リストに上記現在の検索要求の宣言が定義されている場合、上記現在の検索要求がデータの最新性を必要とする検索要求だと判断する。最新性判断部（５０５）はまた、定義リストに上記未来の検索要求の宣言が定義されている場合、上記未来の検索要求がデータの最新性を必要とする検索要求だと判断する。
【０１３２】
同期判断部（５０６）は、上記最新性を必要とすると判断された検索要求について、データの同期が必要かどうかをそれぞれ判断する。上記最新性を必要とすると判断された検索要求が現在の検索要求の場合、同期判断部（５０６）は、上記取得された定義リストに記載されている検索要求それぞれについての閾値と、現在の検索要求の発行時間とを使用して上記判断を行う。上記最新性を必要とすると判断された検索要求が未来の検索要求の場合、同期判断部（５０６）は、上記取得された定義リストに記載されている検索要求それぞれについての閾値と、上記取得された定義リストに記載されている検索要求それぞれについての予想発行時間とを使用して上記判断を行う。
【０１３３】
検索回答抽出部（５０７）は、上記データの同期が必要だと判断された検索要求についてのデータを、第１のデータベース（５０２）から抽出する。検索回答抽出部（５０７）は、第１のデータベース（５０２）中の第１のデータセットと、検索要求の検索対象である第２のデータベース（５０３）中の第２のデータセットとの差分データを第１のデータベース（５０２）から抽出する。記録部（５１２）は、上記差分データが抽出された場合、該抽出された時刻を記憶部に記憶する。検索回答更新部（５０８）は、第１のデータベース（５０２）から抽出した差分データを第２のデータベース（５０３）に適用し、上記第２のデータセットを更新する。第２のデータベース（５０３）は、上記第２のデータセットが更新されること、データの最新性が必要だと判断されなかったこと又は上記データの同期が必要だと判断されなかったことに応じて、検索要求の回答を上記ユーザに返す。
【０１３４】
計算部（５０９）は、上記現在の検索要求が発行されることに応じて、上記未来の検索要求がデータの最新性を必要とするかどうかを判断することを開始する時間を計算する。計算部（５０９）は、上記計算をするために、記憶部（５０４）から定義リストを取得する。計算部（５０９）は、定義リストに上記現在の検索要求に対応する未来の検索要求の宣言が定義されている場合、上記取得された定義リストに記載されている検索要求それぞれについての閾値と、予想発行時間とを使用して、上記未来の検索要求についての上記判断することを開始する時間を求める。蓄積部（５１０）は、上記求めた時間を記憶部（５０４）に蓄積する。定期抽出部（５１１）は、記憶部（５０４）から定義リスト及び上記求めた時間を取得する。定期抽出部（５１１）は、定義リストに定義されている所与の時間に又は所与の時間間隔で上記差分データを第１のデータベース（５０２）から抽出する。ここで、抽出される差分データは、上記求めた時間を経過した未来の検索要求についてのデータである。定期抽出部（５１１）は、未来の検索要求についての上記抽出した差分データの上記求める時間を記憶部（５０４）から削除する。
記録部（５１２）は、上記差分データが抽出された場合、該抽出された時刻を記憶部（５０４）に記憶する。定期更新部（５１３）は、上記抽出した差分データを第２のデータベース（５０３）に適用し、上記第２のデータセットを更新する。
【０１３５】
図６は、本発明の実施態様における、図５に記載のコンピュータ・システムのハードウェアのブロック図を示す。コンピュータ・システム（６０１）は、ＣＰＵ（６０２）とメイン・メモリ（６０３）と含み、これらはバス（６０４）に接続されている。ＣＰＵ（６０２）は好ましくは、３２ビット又は６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＸｅｏｎ（登録商標）シリーズ、Ｃｏｒｅ（商標）シリーズ、Ａｔｏｍ（商標）シリーズ、Ｐｅｎｔｉｕｍ（登録商標）シリーズ、Ｃｅｌｅｒｏｎ（登録商標）シリーズ、ＡＭＤ社のＰｈｅｎｏｍ（商標）シリーズ、Ａｔｈｌｏｎ（商標）シリーズ、Ｔｕｒｉｏｎ（商標）シリーズ又はＳｅｍｐｒｏｎ（商標）を使用することができる。バス（６０４）には、ディスプレイ・コントローラ（６０５）を介して、ＬＣＤモニタなどのディスプレイ（６０６）が接続される。ディスプレイ（６０６）は、コンピュータ・システムの管理のために、通信回線を介してネットワークに接続されたコンピュータ・システムについての情報と、そのコンピュータ・システム上で動作中のソフトウェアについての情報を、適当なグラフィック・インタフェースで表示するために使用される。バス（６０４）にはまた、ＩＤＥ又はＳＡＴＡコントローラ（６０７）を介して、ハードディスク又はシリコン・ディスク（６０８）と、ＣＤ−ＲＯＭ、ＤＶＤドライブ又はＢＤドライブ（６０９）が接続される。
【０１３６】
ハードディスク又はシリコン・ディスク（６０８）には、オペレーティング・システム、Ｊ２ＥＥなどのＪａｖａ（登録商標）処理環境を提供するプログラム、その他のプログラム及びデータが、メイン・メモリ（６０３）にロード可能に記憶されている。
【０１３７】
ＣＤ−ＲＯＭ、ＤＶＤ又はＢＤドライブ（６０９）は、必要に応じて、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又はＢＤからプログラムをハードディスク又はシリコン・ディスク（６０８）に追加導入するために使用される。バス（６０４）にはさらに、キーボード・マウスコントローラ（６１０）を介して、キーボード（６１１）及びマウス（６１２）が接続されている。
【０１３８】
通信インタフェース（６１４）は、例えばイーサネット（商標）・プロトコルに従う。通信インタフェース（６１４）は、通信コントローラ（６１３）を介してバス（６０４）に接続され、コンピュータ・システム及び通信回線（６１５）を物理的に接続する役割を担い、コンピュータ・システムのオペレーティング・システムの通信機能のＴＣＰ／ＩＰ通信プロトコルに対して、ネットワーク・インタフェース層を提供する。なお、通信回線は、有線ＬＡＮ環境、或いは例えばＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎなどの無線ＬＡＮ接続規格に基づく無線ＬＡＮ環境であってもよい。
【図１Ａ】
2010257426.tif 000003
【図１Ｂ】
2010257426.tif 000004
【図２Ａ】
2010257426.tif 000005
【図２Ｂ】
2010257426.tif 000006
【図２Ｃ】
2010257426.tif 000007
【図３Ａ】
2010257426.tif 000008
【図３Ｂ】
2010257426.tif 000009
【図４Ａ】
2010257426.tif 000010
【図４Ｂ】
2010257426.tif 000011
【図４Ｃ】
2010257426.tif 000012
【図４Ｄ】
2010257426.tif 000013
【図４Ｅ】
2010257426.tif 000014
【図４Ｆ】
2010257426.tif 000015
【図４Ｇ】
2010257426.tif 000016
【図５】
2010257426.tif 000017
【図６】
2010257426.tif 000018