JP4939568B2 - データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム - Google Patents

データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム Download PDF

Info

Publication number
JP4939568B2
JP4939568B2 JP2009110017A JP2009110017A JP4939568B2 JP 4939568 B2 JP4939568 B2 JP 4939568B2 JP 2009110017 A JP2009110017 A JP 2009110017A JP 2009110017 A JP2009110017 A JP 2009110017A JP 4939568 B2 JP4939568 B2 JP 4939568B2
Authority
JP
Japan
Prior art keywords
search request
database
data
time
search
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009110017A
Other languages
English (en)
Other versions
JP2010257426A (ja
Inventor
学 山本
幹雄 竹内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009110017A priority Critical patent/JP4939568B2/ja
Priority to US12/750,059 priority patent/US8751445B2/en
Publication of JP2010257426A publication Critical patent/JP2010257426A/ja
Application granted granted Critical
Publication of JP4939568B2 publication Critical patent/JP4939568B2/ja
Priority to US14/256,982 priority patent/US9558257B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、第1のデータベースと、該第1のデータベースに含まれる少なくとも1のデータを保持する1以上の第2のデータベースとの間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラムに関する。
データベースを含むシステムの性能を向上させるために、複数のインメモリデータベースとバックエンドデータベースとを用いる方法がある。インメモリデータベースは、インコアデータベース若しくは、メインメモリーデータベースとも呼ばれる。インメモリデータベースは、データをハードディスクドライブではなく、半導体メモリに保存する。バックエンドデータベースは、メインのデータベースであり、インメモリデータベースの元となるデータを含む。インメモリデータベースは、バックエンドデータベースの全て又は一部のデータを保持し、バックエンドデータベースのキャッシュのために使用される。インメモリデータベースは、データベースのI/Oをハードディスクドライブに読み書きするのではなく、半導体メモリ上で処理する。よって、インメモリデータベースでは、アプリケーションが読み書きしたデータは、インメモリデータベースによってメモリ上のキャッシュに保持され、アプリケーションとはまったく独立したプロセスでハードディスクドライブのデータベースアクセスを行う仕組みになっている。アプリケーションから見れば、ハードディスクドライブ上のデータベースと何ら変わらない方法でSQLがインメモリデータベースに発行される。そして、アプリケーションからのクエリ要求は、インメモリデータベースによって処理される。よって、インメモリデータベースを使用することによって、インメモリデータベースからデータセットが検索される。従って、バックエンドデータベースの負荷が軽減され、且つデータベースとしての処理速度が飛躍的に向上される。
バックエンドデータベースにおけるデータは更新される。よって、インメモリデータベースは、該更新をインメモリデータベースに反映させる必要がある。インメモリデータベースは、該更新のために、バックエンドデータベースからデータをロードしなければならない。上記反映を実現するための典型的な従来手法には、定期的に同期をとる手法及びリアルタイムに同期をとる手法がある。
1.定期的に同期をとる手法
定期的に同期をとる手法は、システムが、バックエンドデータベースのデータセットをインメモリデータベースに定期的にまとめて適用しインメモリデータベース中のデータセットを更新する手法である。該更新により、バックエンドデータベースとインメモリデータベースとの間で同期がとられる。ここで、データを大きな単位でまとめて処理する場合の方が、データを小さな単位で複数回に分けて処理する場合に比べ、データベースにかかる負荷は一般に少ない。よって、定期的に同期をとる手法では、データ複製時のバックエンドデータベースにかかる負荷を軽減しながら、バックエンドデータベースからインメモリデータベースへのレプリケーションが可能になる。しかし、インメモリデータベースのデータセットは、定期的に同期がとられた時点のデータセットであって、最新のデータセットではない。よって、定期的に同期をとる手法では、データベースの利用者がデータの最新性が必要な検索要求をインメモリデータベースに対して発行することができないという問題点がある。
そこで、定期的に同期をとる手法の上記問題点を解決するための検索技術として、パススルー検索がある。パススルー検索は、インメモリデータベースの技術の1つとして、既に実現化されている検索技術である。パススルー検索による手法は、上記定期的に同期をとる手法と並行して実行される。パススルー検索では、インメモリデータベースに対してデータの最新性が必要な検索要求が発行された場合、該検索要求がバックエンドデータベースに送信される。よって、システムは、バックエンドデータベースに対して検索を実行する。しかし、パススルー検索による手法では、検索条件が複雑な場合に、バックエンドデータベースの負荷が高まるので、システム全体の性能が低下する。
2.リアルタイムに同期をとる手法
リアルタイムに同期をとる手法は、バックエンドデータベースが更新されることに応じて、システムが、更新されたバックエンドデータベースのデータセットをインメモリデータベースに送信し、インメモリデータベースのデータセットを即座に更新する手法である。該更新により、バックエンドデータベースとインメモリデータベースとの間でリアルタイム同期がとられる。よって、定期的に同期をとる手法の上記問題点は解消されうる。しかしながら、リアルタイムに同期をとる手法では、バックエンドデータベースの更新頻度が高い場合、システムは、バックエンドデータベースからインメモリデータベースへのレプリケーションを、小さなデータの単位で頻繁に行うことになるが、頻繁なレプリケーションは、バックエンドデータベースの負荷を増加させる。それによって、システム全体の性能が、さらに低下する。上記レプリケーションはまた、インメモリデータベースで検索されるデータの最新性が必要かどうかにかかわらず実行される。しかし、インメモリデータベースに対して発行される検索要求の多くがデータの最新性が必要でない検索要求である場合、更新された最新のデータセットが必要とされることは少ない。従って、レプリケーションは、システム全体の性能を低下させるだけの無駄な処理になりうる。
少なくとも1のインメモリデータベースが、バックエンドデータベースの全て又は一部のデータセットを保持するようなシステムでは、インメモリデータベースとバックエンドデータベースとの間で同期をとる必要がある。よって、データの最新性が必要な検索処理を可能にすると同時に、システム全体の性能を減少ないし低減させない方法が求められている。
本発明は、第1のデータベースと、該第1のデータベースに含まれる少なくとも1のデータを保持する1以上の第2のデータベースとの間でデータを同期するための方法を提供する。該方法は、コンピュータ・システムに下記ステップを実行させる。該ステップは、
上記第2のデータベースに対する検索要求が発行されることに応じて、上記第1のデータベース中の第1のデータセットと、上記検索要求(以下、現在の検索要求)又は該現在の検索要求の後に発行されうる検索要求(以下、未来の検索要求)の検索対象である上記第2のデータベース中の第2のデータセットとの差分データを上記第1のデータベースから抽出するステップと、
抽出した差分データを上記第2のデータベースに適用し、上記第2のデータセットを更新するステップであって、それによって更新された第2のデータセットが上記現在の検索要求又は上記未来の検索要求の検索対象とされる、上記更新するステップと
を含む。
本発明の1つの実施態様では、上記方法は、コンピュータ・システムに下記ステップをさらに実行させる。該ステップは、上記現在の検索要求又は上記未来の検索要求がデータの最新性を必要とするかどうかを判断するステップをさらに含み、そして上記最新性が必要であることに応じて上記抽出するステップが実行される。
本発明の1つの実施態様では、上記方法は、コンピュータ・システムに下記ステップをさらに実行させる。該ステップは、上記データの最新性が必要であることに応じて、上記現在の検索要求又は上記未来の検索要求がデータの同期を必要とするかどうかを判断するステップをさらに含み、そして上記同期を必要とすることが、上記第2のデータセットの過去に更新された時間と、上記現在の検索要求の発行時間又は上記未来の検索要求の予想発行時間との差が所与の閾値を超えることによって判断され、及び上記同期が必要であることに応じて上記抽出するステップが実行される。
本発明の1つの実施態様では、上記最新性を必要とすることが、上記現在の検索要求又は上記未来の検索要求に含まれている宣言(declaration)に基づいて判断される。
本発明の1つの実施態様では、上記最新性が必要でないことに応じて、上記現在の検索要求又は上記未来の検索要求に対する検索回答が上記差分データの適用なしに上記第2のデータセットから抽出される。
本発明の1つの実施態様では、上記更新するステップが、上記第2のデータセットを更新した時間を記録するステップをさらに含む。
本発明の1つの実施態様では、上記差分データが、
上記現在の検索要求又は上記未来の検索要求より前に発行された上記第2のデータセットに対する検索要求(以下、過去の検索要求)の発行時間における上記第2のデータセットと、
上記現在の検索要求又は上記未来の検索要求の発行時間における上記第2のデータセットと
の差分である。
本発明の1つの実施態様では、上記方法は、コンピュータ・システムに下記ステップをさらに実行させる。該ステップは、上記第2のデータベースに対する上記現在の検索要求が発行されることに応じて、上記未来の検索要求がデータの最新性を必要とするかどうかを判断することを開始する時間を計算するステップをさらに含み、そして計算された時間になることに応じて、上記最新性を必要とするかどうかを判断するステップが実行される。
本発明の1つの実施態様では、上記判断することを開始する時間が、
上記未来の検索要求の所与の予想発行時間と、
所与の閾値と
から計算される。
本発明の1つの実施態様では、上記方法は、コンピュータ・システムに下記ステップをさらに実行させる。該ステップは、
上記第1のデータセットと、上記第2のデータセットとの差分データを所与の時間に又は所与の時間間隔で上記第1のデータベースから抽出するステップと、
抽出した差分データを上記第2のデータベースに適用し、上記第2のデータセットを更新するステップと
をさらに含む。
本発明の1つの実施態様では、上記計算するステップが、上記計算された時間を上記未来の検索要求ごとに蓄積するステップをさらに含み、そして、上記所与の時間に又は所与の時間間隔で上記第1のデータベースから抽出するステップが、現在時間より前の上記蓄積された時間に対応する未来の検索要求についての差分データを抽出する。
本発明の1つの実施態様では、上記抽出するステップが、上記現在の検索要求又は上記未来の検索要求を上記第1のデータベースにパススルーし、上記現在の検索要求又は上記未来の検索要求に対する検索回答を、上記第2のデータセットからでなく上記第1のデータセットから抽出するステップを含む。
本発明の1つの実施態様では、上記第1のデータセットから抽出するステップが、上記第2のデータセットから検索回答を抽出するのにかかる時間よりも、上記第1のデータセットから検索回答を抽出するのにかかる時間が短いと見込まれる場合に実行される。
本発明の1つの実施態様では、上記抽出するのにかかる時間が短いと見込まれることが、上記現在の検索要求又は上記未来の検索要求に含まれている宣言(declaration)に基づいて判断される。
本発明はまた、第1のデータベースと、該第1のデータベースに含まれる少なくとも1のデータを保持する1以上の第2のデータベースとを含むデータベース・システムからデータを抽出するための方法を提供する。該方法は、コンピュータ・システムに下記ステップを実行させる。該ステップは、
上記第2のデータベースに対する検索要求が発行されることに応じて、上記に記載の方法の各ステップに従い、上記第1のデータベースと上記第2のデータベースとの間でデータを同期するステップと、
上記検索要求に対して、上記第2のデータベースから検索回答を抽出するステップと
を含む。
本発明は、第1のデータベースと、該第1のデータベースに含まれる少なくとも1のデータを保持する1以上の第2のデータベースとの間でデータを同期するための方法を提供する。該方法は、コンピュータ・システムに下記ステップを実行させる。該ステップは、
上記第2のデータベースに対する検索要求が発行されることに応じて、上記検索要求に含まれている宣言に基づいて、上記検索要求がデータの最新性を必要とするかどうかを判断するステップと、
上記最新性を必要とすると判断されることに応じて、上記第2のデータセットの過去に更新された時間であって、ログに記録されている上記時間、上記検索要求の発行時間及び所与の閾値から、上記検索要求がデータの同期を必要とするかどうかを判断するステップと、
上記同期を必要とすると判断されることに応じて、上記ログに記録されている時間における上記第2のデータベース中のデータセットと、上記検索要求の発行時間における上記データセットとの差分データを、上記第1のデータベースから抽出するステップと、
抽出した差分データを上記第2のデータベースに適用し、上記第2のデータセットを更新するステップであって、それによって更新された第2のデータセットが上記現在の検索要求又は上記未来の検索要求の検索対象とされる、上記更新するステップと、
上記第2のデータセットを更新した時間を上記ログに記録するステップと
を含む、上記方法。
本発明はまた、コンピュータ・システムに、上記方法のいずれかに記載の各ステップを実行させるコンピュータ・プログラムを提供する。
本発明はまた、第1のデータベースと、該第1のデータベースに含まれる少なくとも1のデータを保持する1以上の第2のデータベースとの間でデータを同期するためのコンピュータ・システムを提供する。該コンピュータ・システムは、
上記第2のデータベースに対する検索要求が発行されることに応じて、上記第1のデータベース中の第1のデータセットと、上記検索要求(現在の検索要求)又は該現在の検索要求の後に発行されうる検索要求(未来の検索要求)の検索対象である上記第2のデータベース中の第2のデータセットとの差分データを上記第1のデータベースから抽出する差分データ抽出部と、
抽出した差分データを上記第2のデータベースに適用し、上記第2のデータセットを更新する更新部あって、それによって更新された第2のデータセットが上記現在の検索要求又は上記未来の検索要求の検索対象とされる、上記更新部と
を含む。
本発明の1つの実施態様では、上記コンピュータ・システムは、上記現在の検索要求又は上記未来の検索要求がデータの最新性を必要とするかどうかを判断する第1の判断部をさらに含み、そして上記最新性が必要であることに応じて上記抽出が実行される。
本発明の1つの実施態様では、上記コンピュータ・システムは、上記データの最新性が必要であることに応じて、上記現在の検索要求又は上記未来の検索要求がデータの同期を必要とするかどうかを判断する第2の判断部をさらに含み、そして上記同期を必要とすることが、上記第2のデータセットの過去に更新された時間と、上記現在の検索要求の発行時間又は上記未来の検索要求の予想発行時間との差が所与の閾値を超えることによって判断され、及び上記同期が必要であることに応じて上記抽出が実行される。
本発明の1つの実施態様では、上記更新することが、上記第2のデータセットを更新した時間を記録することをさらに含む。
本発明の1つの実施態様では、上記コンピュータ・システムは、上記第2のデータベースに対する上記現在の検索要求が発行されることに応じて、上記未来の検索要求がデータの最新性を必要とするかどうかを判断することを開始する時間を計算する計算部をさらに含み、そして計算された時間になることに応じて、上記最新性を必要とするかどうかを判断することが実行される。
本発明の1つの実施態様では、上記コンピュータ・システムは、
上記抽出部が、上記第1のデータセットと、上記第2のデータセットとの差分データを所与の時間で上記第1のデータベースから抽出し、
上記更新部が、抽出した差分データを上記第2のデータベースに適用し、上記第2のデータセットを更新する。
本発明の1つの実施態様では、上記計算部が、上記計算された時間を上記未来の検索要求ごとに時刻順に蓄積し、そして、上記所与の間隔で上記第1のデータベースから抽出するステップが、現在時間より前の上記蓄積された時間に対応する未来の検索要求についての差分データを抽出する。
本発明の1つの実施態様では、
上記抽出部が、上記現在の検索要求又は上記未来の検索要求を上記第1のデータベースにパススルーし、上記現在の検索要求又は上記未来の検索要求に対する検索回答を、上記第2のデータセットからでなく上記第1のデータセットから抽出する。
本発明の1つの実施態様では、上記抽出部が、上記第2のデータセットから検索回答を抽出するのにかかる時間よりも、上記第1のデータセットから検索回答を抽出するのにかかる時間が短いと見込まれる場合に、上記抽出を実行する。
本発明はまた、第1のデータベースと、該第1のデータベースに含まれる少なくとも1のデータを保持する1以上の第2のデータベースとを含むデータベース・システムからデータを抽出するためのコンピュータ・システムを提供する。該コンピュータ・システムは、
上記第2のデータベースに対する検索要求が発行されることに応じて、上記に記載の差分データ抽出部及び更新部を使用して、上記第1のデータベースと上記第2のデータベースとの間でデータを同期する同期部と、
上記検索要求に対して、上記第2のデータベースから検索回答を抽出する検索回答抽出部と
を含む。
本発明の1つの実施態様では、上記第1のデータベースがバックエンドデータベースであり、及び上記第2のデータベースがキャッシュデータベースである。
本発明の実施態様であるコンピュータ・システムにおけるシステム構成の例を示す。 本発明の実施態様における、第1のデータベースをバックエンドデータベースとし、第2のデータベースをインメモリデータベースとする場合の、図1Aで示すシステム構成の例を示す。 本発明の実施態様における、図1Bに記載のシステムで実行される、データ検索時の処理ステップの例を示す。 本発明の実施態様における、図2Aに示す処理にパススルー検索による手法を組み合わせた場合の処理ステップの例を示す。 本発明の実施態様における、図1Bに記載のシステムで実行される、予測同期の処理ステップの例を示す。 本発明の実施態様における、JDBCプロキシドライバを用いて図1Bに示すシステム構成を実装する例を示す。 本発明の実施態様における、図3Aで示されるクライアント機構(303)及びサーバ機構(305)の詳細を示す。 本発明の実施態様における、図2A〜図2Cで示される各ステップの動作のために使用されるデータベースの具体的な例を示す。 本発明の実施態様における、図2A〜図2Cで示される各ステップの動作のために使用されるリストの具体的な例を示す。 本発明の実施態様における、データの最新性を必要とする検索要求が発行された場合の例として、列項目がA1の列の3行目を検索する検索要求が発行された場合の動作を示す。 本発明の実施態様における、図4Cの処理の後に第1の検索要求が再度発行された場合の動作を示す。 本発明の実施態様における、データの最新性を必要としない検索要求が発行された場合の例として、列項目がA2の列を検索する検索要求が発行された場合の動作を示す。 本発明の実施態様における、パススルーが実行される場合の例として、列項目がA3の列の2行目を検索する検索要求が発行された場合の動作を示す。 本発明の実施態様における、未来の検索要求がデータの最新性を必要とする検索要求が発行された場合の例として、列項目がA4の列を検索する検索要求が発行された場合の動作を示す。 本発明の実施態様における、図1Bに記載のシステム構成の機能を図示する機能ブロック図を示す。 本発明の実施態様における、図5に記載のコンピュータ・システムのハードウェアのブロック図を示す。
本発明の実施態様において、「第1のデータベース」とは、システムのマスターデータベースである。第1のデータベースは、例えば、バックエンドデータベースとして動作しうる。第1のデータベースでは、システムで使用されるデータが、最新の状態で管理される。第1のデータベースに含まれるデータセットは、第2のデータベースにレプリケーションされる。第1のデータベースは、例えば、データベース管理システム(DBMS)によって管理されるデータベース又はOSが提供するファイルシステムで構築されるデータの集合であるが、これらに限定されない。データベース管理システムは、例えばIBM (登録商標) DB2(登録商標)、Oracle(登録商標) Database、Microsoft(登録商標) SQL Server、PostgreSQL、MySQL(登録商標)又はSQLiteから選択されうる。
本発明の実施態様において、「第2のデータベース」とは、システムのサブデータベースであり、上記システムのマスターデータベースと対になるデータベースである。第2のデータベースは、フロントエンドデータベースとして動作しうる。第2のデータベースは、上記第1のデータベースに含まれる少なくとも1のデータを保持するデータベースである。第2のデータベースは、後述の検索要求を受け付けることができる。第2のデータベースは、例えば、キャッシュデータベース、インメモリデータベース、データベース管理システムによって管理されるデータベース又はOSが提供するファイルシステムで構築されるデータの集合から選択されうるが、これらに限定されない。
本発明の1つの実施態様では、第2のデータベースは、第1のデータベースをバックエンドデータベースとするキャッシュデータベースである。
キャッシュデータベースとは、バックエンドデータベースへのアクセスよりも高速にアクセスが可能なキャッシュ領域に格納されるデータベースである。バックエンドデータベースが、例えばハードディスクドライブに保存されている場合、上記キャッシュ領域は、例えば半導体メモリ内にありうる。バックエンドデータベースが、例えばLANで接続されたハードディスクドライブに保存されている場合、上記キャッシュ領域は、上記LANよりも高速なバスで接続されているハードディスクドライブ、例えば高速回転(例えば1万回転又はそれ以上)であり、又はキャッシュ容量の大きいハードディスクドライブでありうる。キャッシュデータベースは、バックエンドデータベースの全て又は一部のデータを保持する。
本発明の他の実施態様では、第2のデータベースは、第1のデータベースをバックエンドデータベースとするインメモリデータベースである。インメモリデータベースとは、データをハードディスクドライブではなく、半導体メモリに保存するデータベースであり、バックエンドデータベースと対になるデータベースである。インメモリデータベースは、バックエンドデータベースの全て又は一部のデータを保持する。
本発明の実施態様において、「データを同期する」とは、異なるデータベース上の少なくとも1のデータそれぞれについて、該データを、該データが参照されたときに同一の結果を返す値にすることである。例えば、上記データそれぞれを同一の値にすることが、データを同期することに該当する。なお、上記同一の結果を返す値にする時機は、第1のデータベースと第2のデータベースとで同時とは限らない。上記時機は、例えば、ユーザによって上記データが参照される時機、ユーザによって上記データが参照されると予想される時機又はユーザが指定した指定時刻に達する時機であるが、これらに限らない。
本発明の実施態様において、「検索要求」とは、データベースに含まれる少なくとも1のデータセットを参照することを含み且つ同期の対象であるデータセットを更新することを含まない要求である。該要求は、例えばSQL文のSELECT句による要求、後述のパススルー要求又はデータベースに用意された予約語による命令であるが、これらに限定されない。
本発明の実施態様において、「未来の検索要求」とは、上記検索要求の後に発行される可能性のある検索要求である。上記可能性は、システムにおいて発生する何らかのアクションによって生じてもよい。上記何らかのアクションとは、例えば、他の検索要求が発行されること、アプリケーションが起動されること又は所与の時刻になることであるが、これらに限定されない。
本発明の実施態様において、「データセット」とは、データの集合である。データの集合は、例えば、何らかのデータ、該データの属するグループ、該データと関係するデータ、該データと関係するグループそれぞれ又はそれらの組み合わせであるが、これらに限定されない。上記グループとは、例えばテーブル、列又は行であるが、これらに限定されない。上記関係するとは、例えば、リンクしていること又は参照していることであるが、これらに限定されない。
本発明の実施態様において、「差分データ」とは、異なるデータベース間で少なくとも1の共通する又は関係するデータセット同士それぞれに含まれるデータであって、上記データベース間で値の異なるデータ、又は該異なるデータを一部に含むデータである。上記関係とは、例えば、複製元と複製先の関係であるが、これらに限定されない。
本発明の実施態様において、「検索要求がデータの最新性を必要とする」とは、検索要求によって検索されるデータが、レプリケーションが実行されてから後述の所与の閾値で表される時間が経過していないデータでなければいけないことである。
本発明の実施態様において、「予想発行時間」とは、上記未来の検索要求が発行される予定の時間である。予想発行時間は、例えば、システム時間又はシステムにおいて発生する何らかのアクションからの相対時間である。上記何らかのアクションとは、例えば、検索要求が発行されること、アプリケーションが起動されること又は所与の時刻になることであるが、これらに限定されない。予想発行時間は、例えば、ユーザによって設定されてもよいし、統計的に求められてもよい。上記統計的に求められる場合、コンピュータ・システムは、例えば、ある検索要求が発行されてから別の検索要求が発行されるまでの時間を毎回記録し、該記録した時間の平均値を上記別の検索要求の予想発行時間としうる。
本発明の実施態様において、「所与の閾値」とは、上記データの最新性を必要とする検索要求によって検索されるデータがどれだけ新しいデータであれば足りるかを表す時間の範囲を示す値である。上記所与の閾値は、例えば、上記検索要求が発行される時間から過去にさかのぼる相対時間で表す。
本発明の実施態様において、「検索要求に含まれている宣言」とは、データベースからデータを検索するために使用される検索要求を表す命令である。上記命令は、例えばSQLのSELECT文であるが、これに限らない。検索要求に含まれている宣言は、例えばプリペアドステートメントである。上記宣言では、例えば、具体的なデータの値、格納位置又はデータ絞り込みに使用される条件式は、マスキングされていてもされていなくてもよい。例えば、検索要求を表す命令を、「select data1,data2 from table1 where data1 = 10」とする。上記場合、検索要求に含まれている宣言は、上記SELECT文そのままでもよいし、例えば下記のa、b又はcであってもよい。なお、下記a、b及びcでは、マスキングを「?」で表す。
a)具体的なデータの値をマスキングする例
「select ? from table1 where data1 = 10」
b)格納位置をマスキングする例
「select data1,data2 from ? where data1 = 10」
c)データ絞り込みに使用される条件式をマスキングする例
「select data1,data2 from table1 ?」
本発明の実施態様において、「パススルー」とは、第2のデータベースに対して発行された要求を、第1のデータベースに転送することである。該転送により、上記要求の回答は、第2のデータベースからではなく第1のデータベースから得られる。
多くのアプリケーションは、データの最新性を必要とする検索処理(以下、第1の検索処理)とデータの最新性を必要としない検索処理(以下、第2の検索処理)との両方の検索処理を有する。例えば、典型的な電子商取引サイトのアプリケーションにおいて、第1の検索処理は例えば商品の在庫情報の検索処理であり、及び第2の検索処理は例えば商品の検索処理である。ここで、例えば電子商取引サイトの商品一覧ページでは、商品が検索され表示されうる。しかし、上記商品一覧ページでは、商品の在庫情報まで検索され表示されることは稀である。電子商取引サイトの利用者は、上記商品一覧ページからナビゲーションされて、商品の詳細情報を追っていく。商品の在庫情報は、上記ナビゲーションの所定の段階で初めて検索されて、表示されうる。
また、例えば、あるホテル検索サイトのアプリケーションにおいて、第1の検索処理は例えば空室データの検索処理であり、及び第2の検索処理は例えばホテルの検索処理又は地域の検索処理である。ここで、該空室データの検索処理によって取得されるデータは、可能な限り最新のデータである必要はあるが、今現在のデータである必要はない。上記空室データは例えば、数分程度前の古いデータであっても許容される。上記ホテル検索サイトのアプリケーションにおいて、本当にデータの最新性が求められる処理は、ホテルの予約処理だけである。ここで、上記ホテル検索サイトのアプリケーションが以下に示す2種類の検索機能を利用者に提供する場合について考える。
1.利用者が都道府県を指定すると、該都道府県内での地域が表示され、さらに利用者が該地域を指定すると、該地域内にあるホテルが表示されるというナビゲーション的な検索機能
2.利用者が宿泊地及び宿泊日が指定すると、宿泊地近郊の宿泊日に空室があるホテルが表示されるという検索機能
上記ホテル検索サイトのアプリケーションは、多くの利用者が上記1の検索機能を利用してホテルを検索することを想定して作成されている。また、上記ホテル検索サイトのアプリケーションは、ホテルを利用する目的が明確な利用者が上記2の検索機能を利用してホテルを検索することを想定して作成されている。
上記1の検索機能によってホテルが検索される場合、空室データは、上記ナビゲーションが進み、空室情報検索の段階でようやく検索され表示されうる。上記2の検索機能によってホテルが検索される場合、空室データは、上記2の検索の結果として検索され表示されうる。
上記電子商取引サイトの例及びホテル検索サイトの例で示されるように、アプリケーションにおいて本当に最新のデータが必要とされる状況は、それ程多くない。そこで、本発明の1つの実施態様では、システムは、どの程度の最新性がデータに要求されているかに応じて、バックエンドデータベースの検索されるデータセットとインメモリデータベースの検索されるデータセットとの間で同期を行う。
以下、図面に従って、本発明の実施態様を説明する。本実施態様は、本発明の好適な態様を説明するためのものであり、本発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断らない限り、同一の符号は、同一の対象を指す。
図1Aは、本発明の実施態様であるコンピュータ・システムにおけるシステム構成(100A〜100C)の例を示す。システム構成(100A〜100C)それぞれは、第1のデータベース(夫々、101A〜101C)、第2のデータベース(夫々、102A〜102D)、データベースのデータを管理するサーバ(夫々、103A、103C及び104A〜104D)、データを更新するサーバ(夫々、105A〜105C)及びデータを検索するサーバ(夫々、106A〜106D)を含む。第1のデータベース(夫々、101A〜101C)は、コンピュータ・システム全体のデータを格納するデータベースである。第1のデータベース(夫々、101A〜101C)に含まれるデータは、データを更新するサーバ(夫々、105A〜105C)によって更新されうる。第2のデータベース(夫々、102A〜102D)は、第1のデータベース(夫々、101A〜101C)からレプリケーションされたデータベースである。第2のデータベース(夫々、102A〜102D)はまた、第1のデータベース(夫々、101A〜101C)から抽出された一部又は全部のデータを含む。第2のデータベース(夫々、102A〜102D)に含まれるデータは、データを検索するサーバ(夫々、106A〜106D)によって検索されうる。データを管理するサーバ(夫々、103A、103C及び104A〜104D)は、データベースのデータを管理する。データを管理するサーバ(夫々、103A、103C及び104A〜104C)には、例えば、データベース管理システム(DBMS)がインストールされている。データを管理するサーバ(夫々、103A、103C及び104A〜104C)は、上記データベース管理システム(DBMS)によって、第1のデータベース(夫々、101A〜101C)又は第2のデータベース(夫々、102A〜102D)若しくは両方のデータベース(夫々、101A〜101C及び102A〜102D)に含まれるデータを管理する。ここで、第1のデータベース(夫々、101A〜101C)及び第2のデータベース(夫々、102A〜102D)は、データを管理するサーバ(夫々、103A、103C及び104A〜104D)上にあるとは限らない。第1のデータベース(夫々、101A〜101C)及び第2のデータベース(夫々、102A〜102D)は、システム内の他のサーバ上に含まれていてもよいし、該システムの外にあってもよい。データを更新するサーバ(夫々、105A〜105C)は、更新要求をクライアントから受け取る又は自らが更新要求を作成する。データを更新するサーバ(夫々、105A〜105C)は、第1のデータベース(夫々、101A〜101C)に対して上記更新要求を発行することで、第1のデータベース(夫々、101A〜101C)に含まれるデータを更新する。データを更新するサーバ(夫々、105A〜105C)はまた、システムに含まれていても或いは含まれていなくてもよい。データを検索するサーバ(夫々、106A〜106D)は、検索要求をクライアントから受け取り又は自らが検索要求を作成する。データを検索するサーバ(夫々、106A〜106D)は、第2のデータベース(夫々、102A〜102D)に対して上記検索要求を発行することで、第2のデータベース(夫々、102A〜102D)に含まれるデータを更新する。データを検索するサーバ(夫々、106A〜106D)はまた、システムに含まれていても或いは含まれていなくてもよい。
システム構成(100A)は、第1のデータベース(101A)及び第2のデータベース(102A)それぞれが別のサーバ(103A及び104A)で管理されるシステム構成の例である。システム構成(100A)では、データを管理するサーバ(103A及び104A)間の通信が行われることによって、第1のデータベース(101A)と第2のデータベース(102A)との間のレプリケーションが実行される。システム構成(100B)は、第1のデータベース(101B)及び第2のデータベース(102B)が共通のサーバ(104B)で管理されるシステム構成の例である。システム構成(100B)では、上記通信の必要なしに、第1のデータベース(101B)と第2のデータベース(102B)との間のレプリケーションが実行される。システム構成(100C)は、第2のデータベース(102C及び102D)が複数のサーバ(104C及び104D)上にそれぞれ含まれる。システム構成(100C)は、第2のデータベース(102C及び102D)が複数のサーバ(104C及び104D)で管理されるシステム構成の例である。システム構成(100C)では、データを管理するサーバ(103C)と、データを管理するサーバ(104C及び104D)それぞれとの間で通信が行われることによって、データベース間のレプリケーションが実行される。第2のデータベース(102C及び102D)に含まれるデータそれぞれは、データを管理するサーバ(104C及び104D)それぞれによって、独立して管理される。よって、第2のデータベース(102C及び102D)に含まれるデータそれぞれは、異なるデータであっても同一のデータであってもよい。
本発明の実施態様であるコンピュータ・システムにおけるシステム構成は、上記システム構成(100A〜100C)の構成に限定されない。システム構成(100A〜100C)では、データベースと、データを更新するサーバ(105A〜105C)又は検索するサーバ(106A〜106D)とが1対1に対応している。しかしながら、データベースとデータを更新するサーバ(105A〜105C)又は検索するサーバ(106A〜106D)との関係は、1対1に限らない。例えば、システム構成(100C)において、データを検索するサーバ(106C)が、第2のデータベース(102C及び102D)の両方に対して検索要求を発行してもよい。また、データを検索するサーバ(106C)及びデータを更新するサーバ(105C)が例えば、同一のサーバであってもよい。同一のサーバである場合、該同一のサーバは、第2のデータベース(103C及び103D)への検索要求と、第1のデータベース(101C)のへの更新要求とを発行しうる。また、コンピュータ・システムは、図1Aで示されているシステム構成を複数備えるコンピュータ・システムであってもよい。
図1Bは、本発明の実施態様における、第1のデータベースをバックエンドデータベースとし、第2のデータベースをインメモリデータベースとする場合の、図1Aで示すシステム構成の例を示す。バックエンドデータベース(111A)は、コンピュータ・システム全体のデータを格納するデータベースである。バックエンドデータベース(111A)は、第1のデータベースに対応する。バックエンドデータベース(111A)に含まれるデータは、データを更新するサーバ(115A)によって更新されうる。インメモリデータベース(112A〜112C)は、バックエンドデータベース(111A)からレプリケーションされたデータベースである。インメモリデータベース(112A〜112C)は、第2のデータベースに対応する。インメモリデータベース(112A〜112C)は、バックエンドデータベース(111A)から抽出された一部又は全部のデータを含む。インメモリデータベース(112A〜112C)に含まれるデータは、データを検索するサーバ(114A〜114C)によって検索されうる。
システム構成(110A)は、少なくとも1のインメモリデータベース(112A〜112C)と、1つのバックエンドデータベース(111A)とを含む。インメモリデータベース(112A〜112C)は例えば、データの種類ごと、データに対する処理ごと、又はデータがアクセスされる時間ごとに複数あってよい。上記データの種類とは、例えば、顧客に関するデータ、商品に関するデータ又は金額に関するデータである。上記データに対する処理とは、例えば、入金処理又は出金処理である。上記アクセスされる時間とは、例えば、平日昼間、平日夜間又は土日である。インメモリデータベース(112A〜112C)は、1又は複数のシステムに分散されうる。
レプリケーションは例えば、ある時間間隔で、又は、ユーザによって指定された時刻に実行されてもよい。上記時間間隔は、例えば、ユーザが定義しうる。上記時間間隔は例えば、10分、1時間又は1日でありうるが、これらに限定されない。上記時間間隔は、等間隔とも限らない。データを更新するサーバ(115A)が例えば、昼は頻繁にデータを更新し、夜は稀にしかデータを更新しないとする。そのような場合、ユーザは、上記時間間隔を、昼の時間帯は例えば30分と定義し、夜の時間帯は例えば5時間と定義しうる。また、レプリケーションは、各データベースにかかる負荷に応じて実行されてもよい。コンピュータ・システムは例えば、上記負荷をデータベース管理システムに監視させてもよい。コンピュータ・システムは、該負荷が、例えばユーザが定義した閾値を下回ることに応じて、レプリケーションを実行させうる。コンピュータ・システムは、レプリケーションにおいて、バックエンドデータベース(111A)から差分データをまとめて読み出す。該まとめて読み出される差分データは、例えば、前回のレプリケーション以降に更新されたデータセットを含む。コンピュータ・システムは、該読み出したデータをインメモリデータベース(112A〜112C)へ転送する。そして、コンピュータ・システムは、該転送したデータをインメモリデータベース(112A〜112C)に適用する。一般的なデータベースにおいて、1つのトランザクションで多くのレコードを一気に取得し又は更新する処理の方が、複数のトランザクションで上記多くのレコードを取得又は更新する処理よりも高速である。レプリケーションが上記まとめて読み出したデータセット単位で実行される場合、バックエンドデータベース(111A)及びインメモリデータベース(112A〜112C)にかかる負荷が軽減される。
また、レプリケーションは、検索要求が発行された場合にも実行されうる。検索要求が発行された場合のレプリケーションについては、下記の図2A〜図2Cの説明において詳しく述べられる。
なお、システム構成(110A)では、インメモリデータベース(112A〜112C)がクラスタでありうる。よって、レプリケーションにおいて、コンピュータ・システムは、複数のインメモリデータベース(112A〜112C)それぞれについての差分データを、バックエンドデータベース(111A)から取得する。ここで、あるインメモリデータベースに対して取得された差分データには、他のインメモリデータベースに対して取得されていない差分データが含まれうる。よって、バックエンドデータベース(111A)から差分データが取得されたからといって、差分データがバックエンドデータベース(111A)から削除されるとは限らない。従って、レプリケーションは、既にレプリケーションされたデータをなるべく再度取得されないように実行されるのが好ましい。但し、重複した差分データが取得されたとしても、例えば、データが上書きされるだけであり、バックエンドデータベース(111A)に含まれるデータと、インメモリデータベース(112A〜112C)に含まれるデータとの間で不整合は生じない。
なお、後述の図2〜図5を用いた説明では、第1のデータベースに対応するデータベースがバックエンドデータベースであり、第2のデータベースに対応するデータベースがインメモリデータベースである場合を例に説明する。
図2Aは、本発明の実施態様における、図1Bに記載のシステムで実行される、データ検索時の処理ステップの例を示す。コンピュータ・システムは、インメモリデータベースへの検索要求が発行されることに応じて、以下のステップ201〜209を実行する。ステップ201は、上記処理の開始である。
ステップ202では、コンピュータ・システムは、上記発行された検索要求(現在の検索要求)又は上記発行された検索要求の後に発行されうる検索要求(未来の検索要求)が、最新性を必要とする検索要求かどうかを判定する。該判定では、コンピュータ・システムは、最新性を必要とする検索要求の宣言を記載するリスト(以下、第1のリスト)に、上記現在の検索要求又は上記未来の検索要求に含まれる宣言が記載されているかを判定する。上記第1のリストは、ユーザによって予め作成されたリストである。上記第1のリストには、上記最新性を必要とする検索要求に含まれている宣言と閾値との組がそれぞれ記載されている。また、上記未来の検索要求は、現在の検索要求の宣言と、現在の検索要求に対応する最新性を必要とする未来の検索要求の宣言との組を記載するリスト(以下、第2のリスト)から検索される。上記第2のリストは、ユーザによって予め作成されたリストである。上記第2のリストには、現在の検索要求に含まれている宣言と、上記現在の検索要求に対応し且つ最新性を必要とする上記未来の検索要求の宣言との組が、それぞれ記録されている。上記第2のリストは、上記第1のリストに含まれていてもよい。上記第1のリストに、上記現在の検索要求又は上記未来の検索要求の宣言が含まれている場合、該処理はステップ203に進む。上記宣言が含まれていない場合、該処理はステップ208に進む。
ステップ203では、コンピュータ・システムは、上記現在の検索要求又は上記未来の検索要求の検索対象のデータセットが過去にインメモリデータベースに適用された時間(以下、過去の適用時間)が、最新性についての閾値内の時間であるかどうかを判定する。最新性についての閾値とは、データセットが古くても許される時間の範囲である。上記閾値が例えば1時間である場合、1時間以内にインメモリデータベースに適用されたデータセットは、閾値内のデータセットである。また、上記過去の適用時間は、上記現在の検索要求又は上記未来の検索要求が過去に発行されたときに、後述のステップ207で例えばログに記録された時間である。コンピュータ・システムは、上記現在の検索要求又は上記未来の検索要求の発行予想時間と、上記過去の適用時間との差を求める。上記求めた差が上記第1のリストに記載されている上記現在の検索要求又は上記未来の検索要求の宣言に対応する閾値内である場合、該処理はステップ208に進む。上記差が閾値外である場合、該処理はステップ204に進む。
ステップ204では、コンピュータ・システムは、差分検索要求を生成する。差分検索要求は、インメモリデータベースに適用されているデータセットと上記現在の検索要求の発行時間におけるデータセットとの差分データを、バックエンドデータベースから検索するための要求である。上記差分検索要求は、例えば、上記現在の検索要求又は上記未来の検索要求の検索対象が属するテーブル、列又はレコードを検索する要求であるが、これらに限定されない。さらに、上記テーブル、列及びレコードそれぞれは、1つ又は複数であってよい。上記検索対象が属するテーブルが、例えば、列項目が「社員番号(キー項目)」、「氏(漢字)」、「名(漢字)」、「氏(カナ)」及び「名(カナ)」の列を含むテーブル及び列項目が「社員番号(キー項目)」及び「勤続年数」の列を含むテーブルであるとする。また、上記検索対象が、列項目が「氏(漢字)」及び「勤続年数」の列であるとする。ここで、例えば、列項目が「名(漢字)」の列は他の検索処理で検索されうる列であり、列項目が「氏(カナ)」「名(カナ)」の列は検索されない列である場合、コンピュータ・システムは、列項目が「氏(漢字)」、「名(漢字)」及び「勤続年数」の列を検索するための上記差分検索要求を生成しうる。また、上記検索対象が、例えば、社員番号が1000番台のレコードの場合、上記差分検索要求は、1000〜1999番のレコードを検索する要求であってもよいし、或いは全てのレコードを検索する要求であってもよい。また、レプリケーションを実行するためのコマンドが、使用されるデータベース管理システムに予め用意されている場合、上記コマンドを上記差分検索要求としてもよい。さらに、上記差分検索要求は、例えば、上記現在の検索要求又は上記未来の検索要求の検索対象に関係するテーブル、列又はレコードを検索する要求であってもよい。上記関係するとは、例えば外部キーによる参照関係である。ユーザは、上記現在の検索要求又は上記未来の検索要求と、例えば、テーブル、列又はレコードとの関係を記載する対応表を予め作成しうる。コンピュータ・システムは、上記対応表から、上記検索対象に関係するテーブル、列又はレコードを取得し、そして差分検索要求を生成しうる。上記生成の終了に応じて、該処理はステップ205に進む。
ステップ205では、コンピュータ・システムは、上記生成した差分検索要求をバックエンドデータベースに送信する。コンピュータ・システムは、バックエンドデータベースに対して上記送信された差分検索要求を実行する。コンピュータ・システムは、上記実行の結果をインメモリデータベースに送信する。該送信の終了に応じて、該処理はステップ206に進む。
ステップ206では、コンピュータ・システムは、上記送信された結果をインメモリデータベースに適用する。上記適用の終了に応じて、該処理はステップ207に進む。
ステップ207では、コンピュータ・システムは、上記適用した時間を、例えばログ、インメモリデータベースのプロセス内のメモリ又はインメモリデータベース自身に記録する。上記記録の終了に応じて、該処理はステップ208に進む。
ステップ208では、コンピュータ・システムは、インメモリデータベースに対して現在の検索要求を実行する。該実行により、検索回答が、上記検索要求の発行元に返される。上記実行の終了に応じて、該処理はステップ209に進む。
ステップ209は、上記処理の終了である。
上記に説明したステップ201〜209が実行されることで、以下に示す効果が得られる。
1.現在の検索要求又は上記未来の検索要求が、データの最新性が必要な検索要求と、データの最新性が必要ではない検索要求とに分類されるので(ステップ202)、上記データの最新性が必要ではない検索要求が、バックエンドデータベースに対して実行されることが回避される。該回避により、バックエンドデータベースにかかる負荷が軽減されうる。
2.データの最新性が必要な検索要求によって検索されるデータセットが、どの程度新しいデータセットであればよいかを判断するので(ステップ204)、可能な限りインメモリデータベースからデータセットが検索されるようになる。よって、上記判断が行われない場合に比べて、バックエンドデータベースに対するアクセスが減らされる。
3.差分検索要求は、発行された検索要求に比べ単純な検索要求になりうる。単純な検索処理とは、例えば、検索条件が少ない検索処理である。発行された検索要求が、例えば、あるテーブルに含まれるあるレコードのある列を検索する要求(以下、複雑な検索要求)の場合、差分検索要求は、上記あるテーブルのみを検索する要求(以下、単純な検索要求)になりうる。よって、上記差分検索要求が作成されることにより、バックエンドデータベースに、例えば、上記複雑な検索要求が例えば、パススルーされて実行されるようなことが減りうる。
4.インメモリデータベースをバックエンドデータベースに同期させる(ステップ207)。該同期は差分データセットを使用して行われるので、全件データセットを使用して行われる場合に比べて、データの読み込み量は少ない。
上記1〜4により、バックエンドデータベースにかかる負荷が軽減されうる。
さらに、上記図2Aに示される処理にパススルー検索による手法を組み合わせることで、バックエンドデータベースにかかる負荷は、より効果的に軽減されうる。上記組み合わせた手法では、バックエンドデータベースから差分データを取得する処理よりも、バックエンドデータベースから上記検索回答を取得する処理の方が軽い処理になると見込まれる場合、発行された検索要求をパススルーさせる。該パススルーにより、図2Aに示される方法を用いた場合に比べて、バックエンドデータベースにかかる負荷が軽減化されうる。
図2Bは、本発明の実施態様における、図2Aに示す処理にパススルー検索による手法を組み合わせた場合の処理ステップの例を示す。コンピュータ・システムは、インメモリデータベースへの検索要求が発行されることに応じて、以下のステップ211〜221を実行する。なお、パススルーされる対象の検索要求は、現在の検索要求である。よって、ステップ211〜221は、上記未来の検索要求に対しては実行されない。現在の検索要求をパススルーさせつつ、未来の検索要求によって検索されるデータをレプリケーションさせる場合、コンピュータ・システムは、現在の検索要求に対しては図2Bのステップ211〜221を実行すればよく、また未来の検索要求に対しては図2Aのステップ201〜207を実行すればよい。
ステップ211は、上記処理の開始である。
ステップ212では、コンピュータ・システムは、上記発行された検索要求が、最新性を必要とする検索要求かどうかを判定する。該判定では、コンピュータ・システムは、最新性を必要とする検索要求の宣言を記載する上記第1のリストに、上記発行された検索要求に含まれる宣言が記載されているかを判定する。上記リストに、発行された検索要求の宣言が含まれている場合、該処理はステップ213に進む。上記宣言が含まれていない場合、該処理はステップ219に進む。
ステップ213では、コンピュータ・システムは、上記発行された検索要求をバックエンドデータベースにパススルーすべきかどうかを判定する。ここで、ユーザは、例えば、パススルーの対象の検索要求の宣言を記載する又は検索要求の宣言とパススルーの有無を表すフラグとを記載するリスト(以下、第3のリスト)を予め用意しておく。上記第3のリストは、上記第1のリストと共通であってもよい。コンピュータ・システムは、上記第3のリストから、上記発行された検索要求をパススルーすべきかどうかを判定する。上記パススルーすべきだと判定された場合、該処理はステップ220に進む。上記パススルーすべきではないと判定された場合、該処理はステップ214に進む。
なお、上記パススルーすべきかどうかは、統計的なデータによって判定されてもよい。コンピュータ・システムは、検索要求について、例えば、パススルーするしないをランダムに判定する。コンピュータ・システムは、パススルーした場合の検索の応答時間と、パススルーしなかった場合の検索の応答時間とを、例えば検索要求ごとにログなどに記録しておく。コンピュータ・システムは、上記検索要求ごとの応答時間がある程度、例えば20件たまることに応じて、上記検索要求ごとの応答時間の平均値を、パススルーした場合としなかった場合それぞれについて求める。パススルーした場合の平均値の方が短時間ならば、コンピュータ・システムは、上記応答時間の平均値が求められた上記検索要求がさらに発行された場合、上記ランダムに判定をせず、常にパススルーすべきと判定する。パススルーした場合の平均値の方が長時間ならば、コンピュータ・システムは、上記応答時間の平均値が求められた上記検索要求がさらに発行された場合、上記ランダムに判定はせず、常にパススルーすべきでないと判定する。
ステップ220では、コンピュータ・システムは、上記発行された検索要求をパススルーする。該パススルーにより、コンピュータ・システムは、バックエンドデータベースに対して上記発行された検索要求を実行する。該実行が終了したら、コンピュータ・システムは、上記実行の結果である検索回答を検索要求の発行元に返す。該返されることに応じて、該処理はステップ221に進む。
ここで、コンピュータ・システムは、上記パススルーによる検索によって取得された検索回答を、インメモリデータベースに適用する必要はない。上記検索回答は、リザルトキャッシュと呼ばれる既存の手法により保持されうる。なお、リザルトキャッシュとは、データベースに対して発行された要求の結果が保持されるキャッシュである。
ステップ214では、コンピュータ・システムは、上記発行された検索要求の検索対象のデータセットが過去にインメモリデータベースに適用された時間(過去の適用時間)が、最新性についての閾値内の時間であるかどうかを判定する。上記過去の適用時間は、上記発行された検索要求が過去に発行されたときに、後述のステップ218で例えばログに記録された時間である。コンピュータ・システムは、検索要求の発行時間と、上記過去の適用時間との差を求める。上記求めた差が上記第1のリストに記載されている発行された検索要求の宣言に対応する閾値内である場合、該処理はステップ219に進む。上記差が閾値外である場合、該処理はステップ215に進む。
ステップ215では、コンピュータ・システムは、差分検索要求を生成する。差分検索要求は、インメモリデータベースに適用されているデータセットと検索要求の発行時間におけるデータセットとの差分データを、バックエンドデータベースから検索するための要求である。上記差分検索要求は、例えば、上記発行された検索要求の検索対象が属するテーブル、列又はレコードを検索する要求であるが、これらに限定されない。さらに、上記テーブル、列及びレコードそれぞれは、1つであっても複数であってもよい。また、レプリケーションを実行するためのコマンドが使用されるデータベースに予め用意されている場合、上記コマンドを上記差分検索要求としてもよい。さらに、上記差分検索要求は、例えば、上記発行された検索要求の検索対象に関係するテーブル項目又はレコードを検索する要求であってもよい。ユーザは、上記発行された検索要求と、例えば、テーブル、列又はレコードとの関係を記載する対応表を予め作成しておく。コンピュータ・システムは、上記対応表から、上記検索対象に関係するテーブル、列又はレコードを取得し、差分検索要求を生成しうる。上記生成の終了に応じて、該処理はステップ216に進む。
ステップ216では、コンピュータ・システムは、上記生成した差分検索要求をバックエンドデータベースに送信する。コンピュータ・システムは、バックエンドデータベースに対して上記送信された差分検索要求を実行する。コンピュータ・システムは、上記実行の結果をインメモリデータベースに送信する。該送信の終了に応じて、該処理はステップ217に進む。
ステップ217では、コンピュータ・システムは、上記送信された結果をインメモリデータベースに適用する。上記適用の終了に応じて、該処理はステップ218に進む。
ステップ218では、コンピュータ・システムは、上記適用した時刻を、例えばログ、インメモリデータベースのプロセス内のメモリ又はインメモリデータベースに記録する。上記記録の終了に応じて、該処理はステップ219に進む。
ステップ219では、コンピュータ・システムは、インメモリデータベースに対して発行された検索要求を実行する。該実行により、上記検索要求の発行元に、検索回答が返される。上記実行の終了に応じて、該処理はステップ220に進む。
ステップ221は、処理の終了である。
図2A及び図2Bに示す処理ステップが実行された場合、上記最新性が必要な検索要求の応答時間が長くなりうる。上記最新性が必要な検索要求が発行されると、コンピュータ・システムは、上記検索要求をパススルーする場合を除き、インメモリデータベースとバックエンドデータベースとの同期処理をまず完了させる。検索処理は、上記同期処理が完了した後のインメモリデータベースに対して実行される。よって、同期処理を行わない場合に比べて、検索の応答時間が長くなりうる。上記検索の応答時間が長くなりうる問題を改善するために、図2A又は図2Bに示す処理に加えて、予測同期による手法が実行されてもよい。予測同期による手法では、検索要求(現在の検索要求)が発行されることに応じて、近い将来発行されると予想される検索要求(未来の検索要求)の対象となるデータセットの同期処理を実行する時間が求められ、該求められた時間に同期処理が実行される。よって、予測同期による手法は、上記未来の検索処理が発行される前に同期処理が実行されうる手法である。上記予測同期による手法により、データの最新性が必要な検索要求が発行されたときに、上記検索要求の検索回答が既にインメモリデータベース読み込まれている可能性が高くなる。よって、データの最新性が必要な検索要求の応答時間と同期処理を行わない場合の応答時間とが、同じ程度の時間になりうる。従って、上記検索の応答時間が長くなりうる問題が改善されうる。
図2Cは、本発明の実施態様における、図1Bに記載のシステムで実行される、予測同期の処理ステップの例を示す。コンピュータ・システムは、インメモリデータベースへの検索要求が発行されることに応じて、以下のステップ231〜236を実行する。ここで、図2A又は図2Bに示す各ステップが並行で実行されてもよい。また、コンピュータ・システムは、定期的又はユーザによって指定された時間に又は指定された時間間隔で、以下のステップ241〜250を実行する。
ステップ231は、現在の検索要求が発行されることに応じて実行される処理の開始である。
ステップ232では、コンピュータ・システムは、上記現在の検索要求に対応する、最新性を必要とする未来の検索要求があるかどうかを判定する。該判定では、コンピュータ・システムは、上記第2のリストから、現在の検索要求に対応する上記未来の検索要求の宣言を検索する。該検索により、1以上の未来の検索要求の宣言が見つかった場合、該処理はステップ233に進む。上記宣言が見つからなかった場合、該処理はステップ235に進む。
ステップ233では、コンピュータ・システムは、上記見つかった未来の検索要求それぞれについて、チェック時刻を計算する。チェック時刻は、上記見つかった未来の検索要求の検索対象について同期をするかどうかの判断をする時刻である。上記計算には、例えば、未来の検索要求が発行されると予想される時刻と未来の検索要求についての閾値とが使用されうる。ユーザは、上記第2のリストの上記未来の検索要求の宣言それぞれと対応付けられた上記予想される時刻及び上記閾値を、例えば上記第2のリスト又は新たな第4のリストに予め記録しておく。コンピュータ・システムは、上記第2のリスト又は上記第4のリストから、上記見つかった未来の検索要求に対応する上記予想される時刻及び上記閾値を取得し上記計算を実行する。なお、上記閾値は、上記第1のリストから取得されてもよい。チェック時刻は、閾値内のある時刻であることが好ましい。よって、上記計算は、例えば「予想される時刻―閾値*n(0≦n≦1)」である。ユーザは、上記チェック時刻を自由に設定しうる。上記見つかった未来の検索要求それぞれについてチェック時刻が計算されることに応じて、該処理はステップ234に進む。
ステップ234では、コンピュータ・システムは、未来の検索要求とチェック時刻との組それぞれを、例えば時刻順に、リスト(以下、第5のリスト)に記録する。該記録の終了に応じて、該処理はステップ235に進む。
図2A又は図2Bの各処理を実行しない実装の場合、ステップ235では、コンピュータ・システムは、インメモリデータベースに対して現在の検索要求を実行する。該実行により、上記現在の検索要求の発行元に、検索回答が返される。上記実行の終了に応じて、該処理はステップ236に進む。図2A又は図2Bの各処理を実行しない実装である場合、ステップ235は実行されず、該処理はステップ236に進む。
ステップ236は、現在の検索要求が発行されることに応じて実行される処理の終了である。
ステップ241は、定期的又はユーザによって指定された時間に又は指定された時間間隔で実行される処理の開始である。
ステップ242では、コンピュータ・システムは、上記第5のリストから未来の検索要求とチェック時刻との組を取得し、チェック時刻を判定する。該判定では、チェック時刻が現在時刻よりも古い又は同じかどうかが判定される。
以降のステップ243〜ステップ249は、上記現在時刻よりも古い又は同じと判定されたチェック時刻と組の未来の検索要求それぞれについて実行される。
ステップ243は、上記現在時刻よりも古い又は同じと判定されたチェック時刻と組の未来の検索要求それぞれについての、ループ処理の開始である。
ステップ244では、コンピュータ・システムは、上記取得した組の未来の検索要求それぞれについて、該未来の検索要求の検索対象のデータセットが過去にインメモリデータベースに適用された時間(過去の適用時間)が、最新性についての閾値内の時間であるかどうかを判定する。上記過去の適用時間は、上記未来の検索要求の検索対象のデータセットが過去にインメモリデータベースに適用されたときに、後述のステップ248で例えばログに記録された時間である。コンピュータ・システムは、現在時間と、上記過去の適用時間との差を求める。上記求めた差が上記第1、2又は4のリストに記載されている未来の検索要求の宣言に対応する閾値内である場合、該処理はステップ249に進む。上記差が閾値外である場合、該処理はステップ245に進む。
ステップ245では、コンピュータ・システムは、差分検索要求を生成する。差分検索要求は、インメモリデータベースに適用されているデータセットと現在時刻におけるデータセットとの差分データを、バックエンドデータベースから検索するための要求である。上記差分検索要求は、例えば、上記未来の検索要求の検索対象が属するテーブル、列又はレコードを検索する要求であるが、これらに限定されない。さらに、上記テーブル、列及びレコードそれぞれは、1つであっても複数であってもよい。また、レプリケーションを実行するためのコマンドが、使用されるデータベースに予め用意されているならば、上記コマンドを上記差分検索要求としてもよい。さらに、上記差分検索要求は、例えば、上記発行された検索要求の検索対象に関係するテーブル、列又はレコードを検索する要求であってもよい。ユーザは、上記発行された検索要求と、例えば、テーブル、列又はレコードとの関係を記載する対応表を予め作成しておく。コンピュータ・システムは、上記対応表から、上記検索対象に関係するテーブル、列又はレコードを取得して、差分検索要求を生成しうる。上記生成の終了に応じて、該処理はステップ246に進む。
ステップ246では、コンピュータ・システムは、上記生成した差分検索要求をバックエンドデータベースに送信する。コンピュータ・システムは、バックエンドデータベースに対して上記送信された差分検索要求を実行する。コンピュータ・システムは、上記実行の結果をインメモリデータベースに送信する。該送信の終了に応じて、該処理はステップ247に進む。
ステップ247では、コンピュータ・システムは、上記送信された結果をインメモリデータベースに適用する。上記適用の終了に応じて、該処理はステップ248に進む。
ステップ248では、コンピュータ・システムは、上記適用した時刻を、例えばログ、インメモリデータベースのプロセス内のメモリ又はインメモリデータベースに記録する。上記記録の終了に応じて、該処理はステップ249に進む。
ステップ249は、上記ループ処理の終了である。
ステップ250は、定期的又はユーザによって指定された時間に又は指定された時間間隔で実行される処理の終了である。
図2A〜図2Cに示す各処理ステップは、例えば、インメモリデータベースの検索処理部に組み込まれることで実行されうる。また、上記各処理ステップが検索処理部に組み込まれる実装が、本発明の実施態様を理解する上で最もわかりやすい実装であろう。しかしながら、上記インメモリデータベースの検索処理部が、例えば既に製品化されており上記組み込むことが困難な場合も考えられうる。よって以下では、既に製品化されているインメモリデータベースの検索処理部に直接手を加えずに本発明の実施態様を実装する例を示す。なお、該例では、Java(登録商標)言語が用いられるが、実装に用いられる言語はJava(登録商標)言語に限定されない。
図3Aは、本発明の実施態様における、JDBCプロキシドライバを用いて図1Bに示すシステム構成を実装する例を示す。アプリケーション(301)は、例えばユーザからの検索要求を受け付けるJava(登録商標)アプリケーションである。JDBCプロキシドライバ(302)は、JDBCドライバ(304)をラッピングしているJDBCドライバである。上記ラッピングにより、JDBCプロキシドライバ(302)では、JDBCドライバ(304)の代わりに、データベースに関する操作が実行されうる。また、上記ラッピングにより、JDBCプロキシドライバ(302)は、JDBCドライバ(304)の代わりに、アプリケーション(301)にデータベースを操作するAPIを提供しうる。また、本発明の実施態様を実現するための機構(以下、本発明の機構)は、JDBCプロキシドライバ(302)に組み込まれる。よって、上記本発明の機構についての上記データベースに関する操作及びAPIの提供は、JDBCプロキシドライバ(302)によって行われる。本発明の実施態様によるクライアント機構(303)は、上記JDBCプロキシドライバ(302)に組み込まれた本発明の機構のうち、上記アプリケーション(301)が実行されるコンピュータ上の機構である。本物のJDBCドライバ(304)は、データベースに関する操作が実行されるJDBCドライバである。また、JDBCドライバ(304)は、アプリケーション(301)にデータベースを操作するAPIを提供しうる。本発明の実施態様によるサーバ機構(305)は、上記JDBCプロキシドライバ(302)に組み込まれた本発明の機構のうち、インメモリデータベース(306)を管理するコンピュータ上の機構である。インメモリデータベース(306)は、バックアップデータベース(308)複製されるデータベースであって、バックアップデータベース(308)に含まれる少なくとも1のデータを保持するデータベースである。非同期レプリケーション受信部(307)は、バックアップデータベース(308)に含まれるデータがインメモリデータベース(306)にレプリケーションされるときに、レプリケーションするための更新データを受信する。バックエンドデータベース(308)は、実装例におけるメインのデータベースである。データの更新は、バックエンドデータベース(308)に対してのみ実行される。非同期レプリケーション送信機構(309)は、バックエンドデータベース(308)に含まれるデータがインメモリデータベース(306)にレプリケーションされるときに、レプリケーションするための更新データを送信する。更新ログテーブル(310)は、バックエンドデータベース(308)に対する更新情報を保存するテーブルである。上記更新情報は、更新されたデータ及び更新時刻である。上記更新情報はまた、上記データを更新するSQL文及び更新時刻であってもよい。SQL文定義ファイル(311)は、ユーザ定義の情報を保存するファイルである。該ファイルは、例えばXMLファイル、テキストファイル又はバイナリファイルである。SQL文定義ファイル(311)は、上記第1〜5のリストに対応する。SQL文定義ファイル(311)には、データの最新性が必要であるSQL文の宣言、上記SQL文によって同期処理の対象となるテーブル名及び閾値が、ユーザによって予め登録されている。上記SQL文の宣言は、JDBCのjava.sql.Connection#prepareStatementメソッドの文字列として渡される宣言である。さらに、SQL文定義ファイル(311)には、任意のSQL文に対して、該SQL文が発行された後の近い将来に発行されると予想されるSQL文の宣言であって、データの最新性が必要な上記予想されるSQL文の宣言と、上記予想されるSQL文が任意のSQL文に対して何秒後に発行されると予想されるかを示す予想発行時間とが、ユーザによって予め登録されている。
図3Bは、本発明の実施態様における、図3Aで示されるクライアント機構(303)及びサーバ機構(305)の詳細を示す。
以下では、定期的なレプリケーションの動作を、図3A及び図3Bを用いて説明する。なお、コンピュータ・システムは、バックエンドデータベース(308)のデータがそれぞれ更新されることに応じて、該更新のログをそれぞれ更新ログテーブル(310)に記録している。非同期レプリケーション送信部(309)は、一定の時間間隔で上記更新ログテーブル(310)を参照する。そして、非同期レプリケーション送信部(309)は、上記参照において発見された複数の更新のログを、非同期レプリケーション受信部(307)にまとめて送信する。非同期レプリケーション受信部(307)は、上記送信された更新ログを受信すると、上記更新ログについてのデータ更新をインメモリデータベース(306)に対して行う。上記更新が完了することに応じて、非同期レプリケーション受信部(307)は、非同期レプリケーション送信部(309)に対し、レプリケーションの完了を通知する。上記完了の通知を受けた非同期レプリケーション送信部(309)は、上記インメモリデータベース(306)で更新済みのデータについての更新ログを、更新ログテーブル(310)から削除する。ここで、インメモリデータベース(306)とバックエンドデータベース(308)との同期をとる場合、本発明の実施態様によるサーバ機構(305)は、上記同期を行った時刻を、サーバ側同期時刻記録領域(320)に記録しておく。
以下では、アプリケーション(301)が起動されるときの動作を図3A及び図3Bを用いて説明する。アプリケーション(301)が起動され、JDBCドライバ(304)の初期化が行われるときに、クライアント機構(303)は、SQL文定義ファイル(311)を読み込み、SQL文定義ファイル(311)に記録されている情報(以下、定義ファイルの情報)を、例えばメモリに記憶する。なお、SQL文定義ファイル(311)に登録されているSQL文の宣言は、java.util.HashSetに登録する。
以下では、アプリケーション(301)から検索要求(312)が発行される動作を説明する。アプリケーション(301)から、JDBCプロキシドライバ(302)に対して検索要求であるSQL文(以下、現在のSQL文)が発行されると、JDBCプロキシドライバ(302)に埋め込まれているSQL文判別部(313)は、上記現在のSQL文を受け取る。SQL文判別部(313)は、上記受け取った現在のSQL文の宣言に対応する近い将来に発行されるSQL文(以下、未来のSQL文)の宣言が、上記定義ファイルからの情報に登録されているかどうかを判別する。登録されている場合、SQL文判別部(313)は、上記定義ファイルからの情報として記憶されている未来のSQL文の宣言に対応する閾値、予想発行時間及び同期処理の対象となるテーブル名を取得する。SQL文判別部(313)は、上記取得した閾値、予想発行時間及び対象となるテーブルを含む予測的同期要求を、サーバ機構(305)の予測的同期処理部(314)に発行する。SQL文判別部(313)は、上記発行が終了することに応じて、アプリケーション(301)からprepareStatementメソッドによって発行された現在のSQL文の宣言であって、上記メソッドの引数で渡される上記現在のSQL文の宣言が、データの最新性が必要であるSQL文の宣言として上記java.util.HashSetに登録されているかを判断する。現在のSQL文の宣言が上記登録されていない場合、SQL文判別部(313)は、上記現在のSQL文による検索要求がデータの最新性が必要ではない検索要求であると判断する。データの最新性が必要ではない検索要求であると判断されることに応じて、SQL文判別部(313)は、インメモリデータベース検索呼出部(315)を呼び出す。インメモリデータベース検索部(315)は、上記現在のSQL文を使ってインメモリデータベース(301)を検索する。上記検索の結果は、アプリケーション(301)に返され、検索処理は終了する。
一方、現在のSQL文の宣言が上記登録されている場合、SQL文判別部(313)は、上記現在のSQL文による検索要求がデータの最新性が必要な検索要求である判断する。データの最新性が必要な検索要求であると判断されることに応じて、SQL文判別部(313)は、上記定義ファイルからの情報から、現在のSQL文に対応する対象となるテーブル名及び閾値を取得する。そしてSQL文判別部(313)は、バックエンドデータベース同期判別部(316)に対して、上記取得した対象となるテーブル名及び閾値を指定してデータ同期依頼を発行する。バックエンドデータベース同期判別部(316)は、上記データ同期依頼を受けることに応じて、現在のSQL文による検索においてインメモリデータベース(301)とバックエンドデータベース(308)との同期をとるべきかどうかを判断する。該判断では、まず上記データ同期依頼において指定された上記対象となるテーブルに対して最後に同期をした時刻が、クライアント側同期時刻記録領域(317)から取得される。次に、上記取得した時刻からの経過時間と、上記データ同期依頼において指定された閾値とが比較される。該比較の結果上記経過時間が閾値以内ならば、バックエンドデータベース同期判別部(316)は、上記同期をとる必要はないと判断する。上記同期をとる必要はないと判断されることに応じて、バックエンドデータベース同期判別部(316)は、インメモリデータベース検索呼出部(315)を呼び出す。インメモリデータベース検索部(315)は、上記現在のSQL文を使ってインメモリデータベース(301)を検索する。上記検索の結果は、アプリケーション(301)に返され、検索処理は終了する。
一方、該比較の結果上記経過時間が閾値より大きければ、バックエンドデータベース同期判別部(316)は、上記同期をとるべきだと判断する。上記同期をとるべきだと判断されることに応じて、バックエンドデータベース同期判別部(316)は、インメモリデータベース同期依頼部(18)を呼び出す。インメモリデータベース同期依頼部(318)は、上記定義ファイルからの情報から、現在のSQL文に対応する対象となるテーブル名及び閾値を取得する。そしてインメモリデータベース同期依頼部(318)は、サーバ側インメモリデータベース同期部(319)を、上記取得した対象となるテーブル名及び閾値を指定して通信を介して呼び出す。インメモリデータベース同期依頼部(318)は、上記呼び出しの完了を待つ。
インメモリデータベース同期部(319)は、サーバ側同期時刻記録領域(320)の上記指定された対象となるテーブルの更新時刻を参照する。インメモリデータベース同期部(319)は、上記参照された更新時刻と上記指定された閾値とから、同期が必要かどうかを判別する。上記参照された更新時刻からの経過時間が閾値以内ならば、インメモリデータベース同期部(319)は、同期が必要ではないと判断する。上記同期が必要でないと判断されることに応じて、インメモリデータベース同期部(319)は、インメモリデータベース同期依頼部(318)に上記参照された更新時刻を指定して処理完了を返送する。インメモリデータベース同期依頼部(318)は上記処理完了を受けると、クライアント側同期時刻記録領域(317)の上記対象となるテーブルについての同期時刻を、上記指定された更新時刻で更新する。該更新が完了したら、インメモリデータベース同期依頼部(318)は、インメモリデータベース検索呼出部(315)を呼び出す。インメモリデータベース検索部(315)は、上記現在のSQL文を使ってインメモリデータベース(301)を検索する。上記検索の結果はアプリケーション(301)に返され、検索処理は終了する。
一方、上記参照された更新時刻からの経過時間が閾値より大きければ、インメモリデータベース同期部(319)は、同期が必要であると判断する。上記同期が必要であると判断されることに応じて、インメモリデータベース同期部(319)は、バックエンドデータベースの非同期レプリケーション送信部(図3A、309)対して、データ同期依頼を発行する。非同期レプリケーション送信部(309)は、上記データ同期依頼を受けると、更新ログテーブル(310)から最後にレプリケーションが実行された時刻以降に追加された上記対象となるテーブルについての更新ログを検索する。該検索は、例えばログに通番がある場合、最後に検索されたログの通番より大きい通番を持つログのレコードの検索である。そして非同期レプリケーション送信部(309)は、該検索された更新ログを非同期レプリケーション受信部(307)に送信する。該送信を受けた非同期レプリケーション受信部(307)は、上記更新ログを使用してインメモリデータベースの更新を行う。該更新が完了したら、非同期レプリケーション受信部(307)は、サーバ側同期時刻記録領域(320)の対象テーブルについての同期時刻を現在時刻に更新する。該更新が完了することに応じて、非同期レプリケーション受信部(307)は、非同期レプリケーション送信部(309)にインメモリデータベースの更新が完了したことを通知する。非同期レプリケーション送信部(309)は、上記通知を受けると、上記データ同期依頼の返答をインメモリデータベース同期部(319)に渡す。なお、上記返答には、上記更新された同期時刻が付加される。上記返答を受けたインメモリデータベース同期部(319)は、クライアント側同期時刻記録領域(317)の上記対象となるテーブルについての同期時刻を、上記更新された同期時刻で更新する。該更新が完了したら、インメモリデータベース同期依頼部(318)は、インメモリデータベース検索呼出部(315)を呼び出す。インメモリデータベース検索部(315)は、上記現在のSQL文を使ってインメモリデータベース(301)を検索する。上記検索の結果は、アプリケーション(301)に返され、検索処理は終了する。
以下では、予測的同期処理部(314)の動作を図3A及び図3Bを用いて説明する。予測的同期処理部(314)は、上記予測的同期要求が発行された場合に以下の処理を実行する。予測的同期処理部(314)は、SQL文判別部(313)によって発行された上記予測的同期要求を受け取ると、予測的処理要求についてのチェック時間を計算する。チェック時間は、予測的処理要求に含まれる閾値及び予想される時刻から求められる。上記チェック時刻の算定方法は色々と考えられるが、該例では、例えば予想される時刻−閾値/2とする。上記チェック時間が計算されると、予測的同期処理部(314)は、
上記チェック時間、予測的処理要求に含まれる閾値、予想される時刻及び対象となるテーブル名の組を、上記チェック時間順に予測的同期要求記録領域(321)に蓄積する。
また、予測的同期処理部(314)は、定期的に以下の処理を実行する。
予測的同期処理部(314)は、上記予測的同期要求記録領域(321)に蓄積されている上記組を取得する。該取得では、上記予測的同期要求記録領域(321)の先頭に保存されている組から、チェック時間が現在時刻以前の組までが取得される。また、ここで取得された組は、上記予測的同期要求記録領域(321)から削除される。予測的同期処理部(314)は、上記取得したそれぞれの組に含まれる対象となるテーブルについての最後の同期時刻を、サーバ側同期時刻記録領域(320)から取得する。次に、予測的同期処理部(314)は、上記取得した最後の同期時刻、上記組に含まれる予想される時刻及び上記組に含まれる閾値から対象となるテーブルそれぞれについて、同期処理を依頼するかどうかの判断を行う。該判断では、予想される時刻−閾値が計算される。上記計算された値が、最後の同期時刻より小さければ、対応するテーブルについての同期処理は不要であると判断される。上記計算された値が、最後の同期時刻より大きく且つ現在時刻を超えていなければ、対応するテーブルについての同期処理が必要だと判断される。上記計算された値が、現在時刻を超えていれば、対応するテーブルについての同期処理は不要であると判断される。予測的同期処理部(314)は、上記同期処理が必要だと判断された対応するそれぞれのテーブルについての同期処理の依頼をインメモリデータベース同期部(319)に発行する。
以下では、上記予測的同期処理部(314)からの同期処理の依頼が発行されたときのレプリケーションの実行を図3A及び図3Bを用いて説明する。
インメモリデータベース同期部(319)は、上記同期処理の依頼を受けることに応じて、バックエンドデータベースの非同期レプリケーション送信部(309)対し、データ同期依頼を発行する。非同期レプリケーション送信部(309)は、上記データ同期依頼を受けると、更新ログテーブル(310)から最後にレプリケーションが実行された時刻以降に追加された上記対象となるテーブルについての更新ログを検索する。該検索は、例えばログに通番がある場合、最後に検索されたログの通番より大きい通番を持つログのレコードの検索である。そして非同期レプリケーション送信部(309)は、該検索された更新ログを非同期レプリケーション受信部(307)に送信する。該送信を受けた非同期レプリケーション受信部(307)は、上記更新ログを使用してインメモリデータベースの更新を行う。該更新が完了したら、非同期レプリケーション受信部(307)は、サーバ側同期時刻記録領域(320)の対象テーブルについての同期時刻を現在時刻に更新する。該更新が完了することに応じて、非同期レプリケーション受信部(307)は、非同期レプリケーション送信部(309)にインメモリデータベースの更新が完了したことを通知する。非同期レプリケーション送信部(309)は、上記通知を受けると、上記データ同期依頼の返答をインメモリデータベース同期部(319)に渡す。なお、上記返答には、上記更新された同期時刻が付加される。上記返答を受けたインメモリデータベース同期部(319)は、クライアント側同期時刻記録領域(317)の上記対象となるテーブルについての同期時刻を、上記更新された同期時刻で更新する。
下記図4A〜図4Gでは、図2A〜図2Cで示される各ステップの動作を、具体的な例を用いて説明する。
図4Aは、本発明の実施態様における、図2A〜図2Cで示される各ステップの動作のために使用されるデータベースの具体的な例を示す。バックエンドデータベース(401)は、テーブルA(402)及びテーブルB(403)を含む。テーブルA(402)は、A0〜A4を列項目とする列を含むテーブルである。テーブルB(403)は、B0〜B3を列項目とする列を含むテーブルである。ここで、A0及びB0は、テーブルの行番号を表す列項目であり、上記行番号は、テーブルのキー項目である。インメモリデータベース(404)は、テーブルA(402)及びテーブルB(403)からレプリケーションされるテーブルa(405)及びテーブルb(406)を含む。テーブルa(405)は、A0〜A4を列項目とする列を含むテーブルであって、テーブルA(402)と同じ構造のテーブルである。テーブルb(406)は、B0、B1及びB3を列項目とする列を含むテーブルであって、テーブルB(403)から列項目B2の列が削除された構造のテーブルである。テーブルA(402)からテーブルa(405)へのレプリケーションが最後に実行されたのは、14:00であるとする。テーブルB(403)からテーブルb(406)へのレプリケーションが最後に実行されたのは、15:30であるとする。
図4Bは、本発明の実施態様における、図2A〜図2Cで示される各ステップの動作のために使用されるリストの具体的な例を示す。リスト(411)は、最新性を必要とする検索要求、上記検索要求についての閾値及び上記検索要求についてのパススルーの有無が指定されているリストである。リスト(411)は、上記第1及び3のリストに対応する。リスト(411)には、以下に示すa1〜a3の情報が記載されている。
a1.最新性を必要とする検索要求は「列項目がA1の列を検索する検索要求」であり、閾値は「1時間」であり、パススルーの対象ではない。
a2.最新性を必要とする検索要求は「列項目がA3の列を検索する検索要求」であり、閾値は「30分」であり、パススルーの対象である。
a3. 最新性を必要とする検索要求は「テーブルbを検索する検索要求」であり、閾値は「6分」であり、パススルーの対象ではない。
リスト(412)は、検索要求、上記検索要求の後に発行されると予想される検索要求及び該予想される検索要求の予想発行時間が指定されているリストである。リスト(412)は、上記第2及び4のリストに対応する。リスト(412)には、以下に示すa4の情報が記載されている。
a4.検索要求は「列項目がA4の列を検索する検索要求」であり、予想される検索要求は「テーブルbを検索する検索要求」であり、予想される発行時間は「10分後」である。
図4Cは、本発明の実施態様における、データの最新性を必要とする検索要求が発行された場合の例として、列項目がA1の列の3行目を検索する検索要求(以下、第1の検索要求(421))が発行された場合の動作を示す。現在時刻が16:00であるとする。第1の検索要求(421)が発行されると、コンピュータ・システムは、リスト(図4B、411)から上記a1の情報を得る。第1の検索要求(421)は、上記a1の記載「列項目がA1の列を検索する検索要求」に該当する。よって、コンピュータ・システムは、第1の検索要求(421)を最新性を必要とする検索要求であると判断する。上記判断に応じて、コンピュータ・システムは、第1の検索要求(421)に関係するデータについて、テーブルa(422a)へのレプリケーションが最後に実行された時間「14:00」と、現在時刻「16:00」とを比較する。最後にレプリケーションが実行されてから経過した時間は、16:00−14:00=2時間であり、a1に記載の閾値「1時間」を超えているので、コンピュータ・システムは、第1の検索要求(421)に関係するデータの同期が必要だと判断する。上記判断に応じて、コンピュータ・システムは、第1の検索要求(421)に関係するデータについての差分をバックエンドデータベース(425)から抽出するための差分検索要求(423)を作成する。上記差分は、例えばテーブルA(424)とテーブルa(422a)との差分、テーブルA(424)の列項目がA1の列とテーブルa(422a)の列項目がA1の列との差分又はテーブルA(424)の3行目とテーブルa(422a)の3行目との差分というまとまった単位であるがこれらに限らない。例えばテーブルA(424)の列項目がA1の列とテーブルa(422a)の列項目がA1の列との差分を検索する場合、上記差分検索要求(423)は「列項目がA1の列を検索する検索要求」となる。差分検索要求(423)が作成されることに応じて、コンピュータ・システムは、該差分検索要求(423)をバックエンドデータベース(425)に対して実行する。該実行により、コンピュータ・システムは、テーブルA(424)の列項目がA1の列の値である「山田」、「佐藤」及び「加藤」を抽出し、インメモリデータベース(426)に適用する(427)。該適用の結果、テーブルa(422a)のデータは、テーブルa(422b)に示す状態になる。また、コンピュータ・システムは、上記適用した時間「16:00」を、例えばログに記録する(428)。上記記録することに応じて、コンピュータ・システムは、インメモリデータベース(426)に対して第1の検索要求(421)を実行する。上記実行により、コンピュータ・システムは、列項目がA1の列の3行目の値「加藤」を要求元に返し(429)、処理を終了する。
図4Dは、本発明の実施態様における、図4Cの処理の後に上記第1の検索要求が再度発行された場合の動作を示す。現在時刻が16:30であるとする。第1の検索要求(431)が再度発行されると、コンピュータ・システムは、リスト(図4B、411)から上記a1の情報を得る。第1の検索要求(431)は、上記a1の記載「列項目がA1の列を検索する検索要求」に該当する。よって、コンピュータ・システムは、第1の検索要求(431)を最新性を必要とする検索要求であると判断する。上記判断に応じて、コンピュータ・システムは、第1の検索要求(431)に関係するデータについて、テーブルa(432)へのレプリケーションが最後に実行された時間であって、上記適用された時間「16:00」(438)と、現在時刻「16:30」とを比較する。上記適用されてから経過した時間は、16:30−16:00=30分であり、a1に記載の閾値「1時間」を超えていない。よって、コンピュータ・システムは、第1の検索要求(431)に関係するデータの同期が不要だと判断する。上記不要だと判断することに応じて、コンピュータ・システムは、インメモリデータベース(436)に対して第1の検索要求(431)を実行する。上記実行により、コンピュータ・システムは、列項目がA1の列の値「加藤」を要求元に返し(439)、処理を終了する。
図4Eは、本発明の実施態様における、データの最新性を必要としない検索要求が発行された場合の例として、列項目がA2の列を検索する検索要求(以下、第2の検索要求(441)が発行された場合の動作を示す。第2の検索要求(441)が発行されると、コンピュータ・システムは、リスト(図4B、411)を検索する。上記リスト(図4B、411)には、第2の検索要求(441)が含まれないので、コンピュータ・システムは、第2の検索要求(441)を最新性を必要としない検索要求だと判断する。上記判断に応じて、コンピュータ・システムは、インメモリデータベース(446)に対して第2の検索要求(441)を実行する。上記実行により、コンピュータ・システムは、列項目がA2の列の値「太郎」、「一郎」及び「花子」を要求元に返し(449)、処理を終了する。
図4Fは、本発明の実施態様における、パススルーが実行される場合の例として、列項目がA3の列の2行目を検索する検索要求(以下、第3の検索要求(451))が発行された場合の動作を示す。第3の検索要求(451)が発行されると、コンピュータ・システムは、リストから上記a2の情報を得る。第3の検索要求(451)は、上記a2の記載「列項目がA3の列を検索する検索要求」に該当し且つ「パススルーあり」である。よって、コンピュータ・システムは、第3の検索要求(451)を最新性を必要とし且つパススルーの対象である検索要求と判断する。上記判断に応じて、コンピュータ・システムは、バックエンドデータベース(455)に対して第3の検索要求(451)を実行する。上記実行により、コンピュータ・システムは、列項目がA3の列の2行目の値「大阪府」を要求元に返し(459)、処理を終了する。
図4Gは、本発明の実施態様における、未来の検索要求がデータの最新性を必要とする検索要求が発行された場合の例として、列項目がA4の列を検索する検索要求(以下、第4の検索要求(461))が発行された場合の動作を示す。現在時刻が16:00であるとする。第4の検索要求(461)が発行されると、コンピュータ・システムは、リスト(図4B、412)から上記a4の情報を得る。第4の検索要求(461)は、上記a4の記載「列項目がA4の列を検索する検索要求」に該当する。よって、コンピュータ・システムは、第4の検索要求(461)の後に発行されうる検索要求である「テーブルbを検索する検索要求(以下、第5の検索要求)」についてのチェック時間を計算する。コンピュータ・システムは、上記チェック時間を、例えば、16:00(現在時刻)+10分(予想発行時間)−(6分(a3に記載の上記第5の検索要求についての閾値)÷2)=16:07としうる。コンピュータ・システムは、上記計算されたチェック時間をリスト(472)に記録する。上記記録することに応じて、コンピュータ・システムは、インメモリデータベース(466)に対して第4の検索要求(461)を実行する。上記実行により、コンピュータ・システムは、列項目がA4の列の値「100」、「500」及び「700」を要求元に返す(469)。
現在時刻が、上記チェック時間16:07になることに応じて、コンピュータ・システムは、上記第5の検索要求に関係するデータについて、テーブルbへのレプリケーションが最後に実行された時間「15:30」と、予想される第5の検索要求の発行時刻である「16:10(16:00+10分)」とを比較する。最後にレプリケーションが実行されてから上記発行が予想される時刻までの経過予想時間は、16:10−15:30=40分であり、閾値「6分」を超えている。よって、コンピュータ・システムは、上記第5の検索要求に関係するデータの同期が必要だと判断する。上記判断に応じて、コンピュータ・システムは、上記第5の検索要求に関係するデータについての差分データをバックエンドデータベース(465)から抽出するための差分検索要求(463)を作成する。差分検索要求(463)は、例えば「テーブルBを検索する検索要求」となる。差分検索要求(463)が作成されることに応じて、コンピュータ・システムは、該差分検索要求(463)をバックエンドデータベース(465)に対して実行する。該実行により、コンピュータ・システムは、例えば列項目がB2以外の列のデータをテーブルBから抽出し、インメモリデータベース(466)に適用する。また、コンピュータ・システムは、上記適用した時間「16:07」を、例えばログに記録する(468)。上記記録することに応じて、コンピュータ・システムは、リスト(472)からチェック時間を削除する。
予想される第5の検索要求の発行時刻16:10に、実際に第5の検索要求が発行された場合(473)、コンピュータ・システムは、リスト(図4B、411)から上記a3の情報を得る。上記第5の検索要求は、上記a3の記載「テーブルbを検索する検索要求」に該当するので、コンピュータ・システムは、上記第5の検索要求を最新性を必要とする検索要求であると判断する。
上記判断に応じて、コンピュータ・システムは、上記第5の検索要求に関係するデータについて、テーブルb(470b)へのレプリケーションが最後に実行された時間であって、上記適用した時間「16:07」と、現在時刻「16:10」とを比較する。上記適用されてから経過した時間は、16:10−16:07=3分であり、閾値「6分」を超えていない。よって、コンピュータ・システムは、上記第5の検索要求に関係するデータの同期が不要だと判断する。上記不要だと判断することに応じて、コンピュータ・システムは、インメモリデータベース(466)に対して第5の検索要求を実行する。上記実行により、コンピュータ・システムは、テーブルb(470b)の値「1975」、「1982」、「1989」、「true1」、「true2」及び「false1」を要求元に返し(474)、処理を終了する。
図5は、本発明の実施態様における、図1Bに記載のシステム構成の機能を図示する機能ブロック図を示す。コンピュータ・システム(501)は、第2のデータベース(503)、記憶部(504)、最新性判断部(505)、同期判断部(506)、検索回答抽出部(507)、検索回答更新部(508)、計算部(509)、蓄積部(510)、定期抽出部(511)、記録部(512)及び定期更新部(513)を含む。また、第1のデータベース(502)は、コンピュータ・システム(501)上のデータベースであっても、別のシステム上のデータベースであってもよい。第1のデータベース(502)は、コンピュータ・システム(501)で管理されるデータについてのマスターデータベースである。上記管理されるデータは、例えばユーザ、コンピュータ・システム(501)上の任意のアプリケーション又は他のコンピュータ・システム上の任意のアプリケーションによって更新されうる。第2のデータベース(503)は、第1のデータベース(502)に含まれる少なくとも1のデータを保持する少なくとも1のデータベースであって、コンピュータ・システム(501)で管理されるデータについてのサブデータベースである。上記管理されるデータは、例えばユーザ、コンピュータ・システム(501)上の任意のアプリケーション又は他のコンピュータ・システム上の任意のアプリケーションによって検索されうる。例えば上記ユーザは、上記検索をするために、第2のデータベース(503)に対して検索要求を発行する。記憶部(504)は、コンピュータ・システム(501)で管理される例えばファイルを保存するための記憶域である。該ファイルは、例えば定義リストである。記憶部(504)は、例えばメモリである。
最新性判断部(505)は、第2のデータベース(503)に検索要求が発行されることに応じて、上記検索要求(以下、現在の検索要求)又は該現在の検索要求の後に発行されうる検索要求(以下、未来の検索要求)若しくは両方の検索要求が、データの最新性を必要とするかどうかをそれぞれ判断する。最新性判断部(505)は、上記判断をするために、記憶部(504)から定義リストを取得する。最新性判断部(505)は、定義リストに上記現在の検索要求の宣言が定義されている場合、上記現在の検索要求がデータの最新性を必要とする検索要求だと判断する。最新性判断部(505)はまた、定義リストに上記未来の検索要求の宣言が定義されている場合、上記未来の検索要求がデータの最新性を必要とする検索要求だと判断する。
同期判断部(506)は、上記最新性を必要とすると判断された検索要求について、データの同期が必要かどうかをそれぞれ判断する。上記最新性を必要とすると判断された検索要求が現在の検索要求の場合、同期判断部(506)は、上記取得された定義リストに記載されている検索要求それぞれについての閾値と、現在の検索要求の発行時間とを使用して上記判断を行う。上記最新性を必要とすると判断された検索要求が未来の検索要求の場合、同期判断部(506)は、上記取得された定義リストに記載されている検索要求それぞれについての閾値と、上記取得された定義リストに記載されている検索要求それぞれについての予想発行時間とを使用して上記判断を行う。
検索回答抽出部(507)は、上記データの同期が必要だと判断された検索要求についてのデータを、第1のデータベース(502)から抽出する。検索回答抽出部(507)は、第1のデータベース(502)中の第1のデータセットと、検索要求の検索対象である第2のデータベース(503)中の第2のデータセットとの差分データを第1のデータベース(502)から抽出する。記録部(512)は、上記差分データが抽出された場合、該抽出された時刻を記憶部に記憶する。検索回答更新部(508)は、第1のデータベース(502)から抽出した差分データを第2のデータベース(503)に適用し、上記第2のデータセットを更新する。第2のデータベース(503)は、上記第2のデータセットが更新されること、データの最新性が必要だと判断されなかったこと又は上記データの同期が必要だと判断されなかったことに応じて、検索要求の回答を上記ユーザに返す。
計算部(509)は、上記現在の検索要求が発行されることに応じて、上記未来の検索要求がデータの最新性を必要とするかどうかを判断することを開始する時間を計算する。計算部(509)は、上記計算をするために、記憶部(504)から定義リストを取得する。計算部(509)は、定義リストに上記現在の検索要求に対応する未来の検索要求の宣言が定義されている場合、上記取得された定義リストに記載されている検索要求それぞれについての閾値と、予想発行時間とを使用して、上記未来の検索要求についての上記判断することを開始する時間を求める。蓄積部(510)は、上記求めた時間を記憶部(504)に蓄積する。定期抽出部(511)は、記憶部(504)から定義リスト及び上記求めた時間を取得する。定期抽出部(511)は、定義リストに定義されている所与の時間に又は所与の時間間隔で上記差分データを第1のデータベース(502)から抽出する。ここで、抽出される差分データは、上記求めた時間を経過した未来の検索要求についてのデータである。定期抽出部(511)は、未来の検索要求についての上記抽出した差分データの上記求める時間を記憶部(504)から削除する。
記録部(512)は、上記差分データが抽出された場合、該抽出された時刻を記憶部(504)に記憶する。定期更新部(513)は、上記抽出した差分データを第2のデータベース(503)に適用し、上記第2のデータセットを更新する。
図6は、本発明の実施態様における、図5に記載のコンピュータ・システムのハードウェアのブロック図を示す。コンピュータ・システム(601)は、CPU(602)とメイン・メモリ(603)と含み、これらはバス(604)に接続されている。CPU(602)は好ましくは、32ビット又は64ビットのアーキテクチャに基づくものであり、例えば、インテル社のXeon(登録商標)シリーズ、Core(商標)シリーズ、Atom(商標)シリーズ、Pentium(登録商標)シリーズ、Celeron(登録商標)シリーズ、AMD社のPhenom(商標)シリーズ、Athlon(商標)シリーズ、Turion(商標)シリーズ又はSempron(商標)を使用することができる。バス(604)には、ディスプレイ・コントローラ(605)を介して、LCDモニタなどのディスプレイ(606)が接続される。ディスプレイ(606)は、コンピュータ・システムの管理のために、通信回線を介してネットワークに接続されたコンピュータ・システムについての情報と、そのコンピュータ・システム上で動作中のソフトウェアについての情報を、適当なグラフィック・インタフェースで表示するために使用される。バス(604)にはまた、IDE又はSATAコントローラ(607)を介して、ハードディスク又はシリコン・ディスク(608)と、CD−ROM、DVDドライブ又はBDドライブ(609)が接続される。
ハードディスク又はシリコン・ディスク(608)には、オペレーティング・システム、J2EEなどのJava(登録商標)処理環境を提供するプログラム、その他のプログラム及びデータが、メイン・メモリ(603)にロード可能に記憶されている。
CD−ROM、DVD又はBDドライブ(609)は、必要に応じて、CD−ROM、DVD−ROM又はBDからプログラムをハードディスク又はシリコン・ディスク(608)に追加導入するために使用される。バス(604)にはさらに、キーボード・マウスコントローラ(610)を介して、キーボード(611)及びマウス(612)が接続されている。
通信インタフェース(614)は、例えばイーサネット(商標)・プロトコルに従う。通信インタフェース(614)は、通信コントローラ(613)を介してバス(604)に接続され、コンピュータ・システム及び通信回線(615)を物理的に接続する役割を担い、コンピュータ・システムのオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワーク・インタフェース層を提供する。なお、通信回線は、有線LAN環境、或いは例えばIEEE802.11a/b/g/nなどの無線LAN接続規格に基づく無線LAN環境であってもよい。

Claims (15)

  1. 第1のデータベースと、該第1のデータベースに含まれる少なくとも1のデータを保持する1以上の第2のデータベースとの間でデータを同期するための方法であって、
    前記第2のデータベースに対する検索要求(以下、現在の検索要求)が発行されることに応じて、前記現在の検索要求又は該現在の検索要求の後に発行されうる検索要求(以下、未来の検索要求)がデータの最新性を必要とするかどうかを判断することを開始する時間を計算するステップと、
    計算された時間になることに応じて、前記最新性を必要とするかどうかを判断するステップと、
    前記最新性が必要であることに応じて、前記第1のデータベース中の第1のデータセットと、前記現在の検索要求又は前記未来の検索要求の検索対象である前記第2のデータベース中の第2のデータセットとの差分データを前記第1のデータベースから抽出するステップと、
    抽出した差分データを前記第2のデータベースに適用し、前記第2のデータセットを更新するステップであって、それによって更新された第2のデータセットが前記現在の検索要求又は前記未来の検索要求の検索対象とされる、前記更新するステップと
    を含む、前記方法。
  2. 前記データの最新性が必要であることに応じて、前記現在の検索要求又は前記未来の検索要求がデータの同期を必要とするかどうかを判断するステップをさらに含み、
    前記同期を必要とすることが、前記第2のデータセットの過去に更新された時間と、前記現在の検索要求の発行時間又は前記未来の検索要求の予想発行時間との差が所与の閾値を超えることによって判断され、
    前記同期が必要であることに応じて前記抽出するステップが実行される、請求項1に記載の方法。
  3. 前記最新性を必要とすることが、前記現在の検索要求又は前記未来の検索要求に含まれている宣言に基づいて判断される、請求項1に記載の方法。
  4. 前記最新性が必要でないことに応じて、前記現在の検索要求又は前記未来の検索要求に対する検索回答が前記差分データの適用なしに前記第2のデータセットから抽出される、請求項1に記載の方法。
  5. 前記更新するステップが、前記第2のデータセットを更新した時間を記録するステップをさらに含む、請求項1に記載の方法。
  6. 前記差分データが、
    前記現在の検索要求又は前記未来の検索要求より前に発行された前記第2のデータセットに対する検索要求(以下、過去の検索要求)の発行時間における前記第2のデータセットと、
    前記現在の検索要求の発行時間における前記第2のデータセットと
    の差分である、請求項5に記載の方法。
  7. 前記判断することを開始する時間が、
    前記未来の検索要求の所与の予想発行時間と、
    所与の閾値と
    から計算される、請求項に記載の方法。
  8. 前記第1のデータセットと、前記第2のデータセットとの差分データを所与の時間に又は所与の時間間隔で前記第1のデータベースから抽出するステップと、
    前記抽出した差分データを前記第2のデータベースに適用し、前記第2のデータセットを更新するステップと
    をさらに含む、請求項に記載の方法。
  9. 前記計算するステップが、前記計算された時間を前記未来の検索要求ごとに蓄積するステップをさらに含み、
    前記所与の時間に又は所与の時間間隔で前記第1のデータベースから抽出するステップが、現在時間より前の前記蓄積された時間に対応する未来の検索要求についての差分データを抽出する、請求項に記載の方法。
  10. 前記抽出するステップが、前記現在の検索要求又は前記未来の検索要求を前記第1のデータベースにパススルーし、前記現在の検索要求又は前記未来の検索要求に対する検索回答を、前記第2のデータセットからでなく前記第1のデータセットから抽出するステップを含む、請求項1に記載の方法。
  11. 前記第1のデータセットから抽出するステップが、前記第2のデータセットから検索回答を抽出するのにかかる時間よりも、前記第1のデータセットから検索回答を抽出するのにかかる時間が短いと見込まれる場合に実行される、請求項10に記載の方法。
  12. 前記抽出するのにかかる時間が短いと見込まれることが、前記現在の検索要求又は前記未来の検索要求に含まれている宣言に基づいて判断される、請求項11に記載の方法。
  13. 前記第1のデータベースがバックエンドデータベースであり、及び前記第2のデータベースがキャッシュデータベースである、請求項1に記載の方法。
  14. 第1のデータベースと、該第1のデータベースに含まれる少なくとも1のデータを保持する1以上の第2のデータベースとを含むデータベース・システムからデータを抽出するための方法であって、
    前記第2のデータベースに対する検索要求が発行されることに応じて、請求項1〜4のいずれか1項に記載の方法の各ステップに従い、前記第1のデータベースと前記第2のデータベースとの間でデータを同期するステップと、
    前記検索要求に対して、前記第2のデータベースから検索回答を抽出するステップと
    を含む、前記方法。
  15. コンピュータ・システムに、請求項1〜14のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
JP2009110017A 2009-04-28 2009-04-28 データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム Expired - Fee Related JP4939568B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009110017A JP4939568B2 (ja) 2009-04-28 2009-04-28 データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
US12/750,059 US8751445B2 (en) 2009-04-28 2010-03-30 Method of synchronizing data between databases, and computer system and computer program for the same
US14/256,982 US9558257B2 (en) 2009-04-28 2014-04-20 Method of synchronizing data between databases, and computer system and computer program for the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009110017A JP4939568B2 (ja) 2009-04-28 2009-04-28 データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム

Publications (2)

Publication Number Publication Date
JP2010257426A JP2010257426A (ja) 2010-11-11
JP4939568B2 true JP4939568B2 (ja) 2012-05-30

Family

ID=42993017

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009110017A Expired - Fee Related JP4939568B2 (ja) 2009-04-28 2009-04-28 データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム

Country Status (2)

Country Link
US (2) US8751445B2 (ja)
JP (1) JP4939568B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100614362B1 (ko) * 1999-04-23 2006-09-11 지세케 앤드 데브리엔트 게엠베하 수직 집적형 회로 및 그의 제조방법

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4939568B2 (ja) 2009-04-28 2012-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
US8332358B2 (en) * 2010-01-05 2012-12-11 Siemens Product Lifecycle Management Software Inc. Traversal-free rapid data transfer
US8332420B2 (en) * 2010-01-20 2012-12-11 Siemens Product Lifecycle Management Software Inc. System and method for performing a database query
US8326813B2 (en) * 2010-01-20 2012-12-04 Siemens Product Lifecycle Management Software, Inc. System and method for data management
US8290830B2 (en) 2010-04-07 2012-10-16 Siemens Product Lifecycle Management Software Inc. System and method for visualization and comparison of physical assets using engineering design data
JP5741254B2 (ja) * 2011-06-30 2015-07-01 富士通株式会社 送信制御方法、装置及びプログラム
US8458228B2 (en) 2011-09-23 2013-06-04 Siemens Product Lifecycle Management Software Inc. Occurrence management in product data management systems
US8533237B2 (en) 2011-09-23 2013-09-10 Siemens Product Lifecycle Management Software Inc. Data structure partitioning in product data management systems
US20130124483A1 (en) * 2011-11-10 2013-05-16 Treasure Data, Inc. System and method for operating a big-data platform
US9542437B2 (en) * 2012-01-06 2017-01-10 Sap Se Layout-driven data selection and reporting
JP5862359B2 (ja) 2012-02-23 2016-02-16 日本電気株式会社 シンクライアントシステム、接続管理サーバ、接続管理方法、及び接続管理プログラム
US9652495B2 (en) 2012-03-13 2017-05-16 Siemens Product Lifecycle Management Software Inc. Traversal-free updates in large data structures
US9122740B2 (en) 2012-03-13 2015-09-01 Siemens Product Lifecycle Management Software Inc. Bulk traversal of large data structures
US8996565B2 (en) * 2012-12-18 2015-03-31 Sap Se Systems and methods for in-memory database processing
US20140258212A1 (en) * 2013-03-06 2014-09-11 Sap Ag Dynamic in-memory database search
US9734230B2 (en) * 2013-09-12 2017-08-15 Sap Se Cross system analytics for in memory data warehouse
US9734221B2 (en) 2013-09-12 2017-08-15 Sap Se In memory database warehouse
JP6292810B2 (ja) * 2013-10-02 2018-03-14 キヤノン株式会社 データ同期方法、データ同期装置およびプログラム
CN104636372B (zh) * 2013-11-11 2019-04-26 中兴通讯股份有限公司 基于表格实现大数据量处理的方法及装置
CN104182441A (zh) * 2014-02-27 2014-12-03 无锡天脉聚源传媒科技有限公司 一种数据表同步方法及装置
CN104731877A (zh) * 2015-03-06 2015-06-24 小米科技有限责任公司 请求数据的方法及装置
CN106612308B (zh) * 2015-10-22 2021-04-16 阿里巴巴集团控股有限公司 数据传输方法及装置
EP3373149A4 (en) * 2015-11-06 2019-04-03 Nomura Research Institute, Ltd. DATA MANAGEMENT SYSTEM
JP6625735B2 (ja) * 2016-04-19 2019-12-25 株式会社日立製作所 計算機システム及び不揮発性メモリの冗長化方法
US11188501B1 (en) * 2017-08-15 2021-11-30 Amazon Technologies, Inc. Transactional and batch-updated data store search
CN109918431A (zh) * 2019-01-25 2019-06-21 平安科技(深圳)有限公司 数据存储方法、装置、计算机设备及存储介质
US11341159B2 (en) 2019-08-22 2022-05-24 International Business Machines Corporation In-stream data load in a replication environment
JP6951781B2 (ja) * 2019-11-06 2021-10-20 株式会社MaaS Tech Japan プログラム及び情報処理装置
US11514066B2 (en) * 2019-11-08 2022-11-29 Servicenow, Inc. System and methods for querying and updating databases
US11093477B1 (en) * 2020-03-17 2021-08-17 International Business Machines Corporation Multiple source database system consolidation
US11907260B2 (en) 2020-04-19 2024-02-20 International Business Machines Corporation Compare processing using replication log-injected compare records in a replication environment
US11573936B2 (en) 2020-08-12 2023-02-07 International Business Machines Corporation Method for loading data in a target database system
US11669548B2 (en) 2020-09-14 2023-06-06 Formagrid Inc Partial table and multisource synchronization for databases
JP7533058B2 (ja) * 2020-09-17 2024-08-14 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
US11567743B1 (en) * 2021-08-26 2023-01-31 Sap Se Integrated testing tool for data replication
WO2023043580A1 (en) * 2021-09-16 2023-03-23 Life Technologies Corporation Bioprocess controller with intelligent gateway

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0262557A (ja) 1988-08-29 1990-03-02 Ricoh Co Ltd 電子写真用感光体
JPH07334402A (ja) * 1994-06-13 1995-12-22 Hitachi Ltd メインメモリ化データベース
JPH0962557A (ja) * 1995-08-30 1997-03-07 Oki Electric Ind Co Ltd 分散データベースシステム
US7734826B2 (en) * 2001-03-16 2010-06-08 Novell, Inc. Client-server model for synchronization of files
US7290018B2 (en) * 2002-10-23 2007-10-30 Sap Aktiengesellschaft Change-driven replication of data
US9009116B2 (en) * 2006-03-28 2015-04-14 Oracle America, Inc. Systems and methods for synchronizing data in a cache and database
US7974943B2 (en) * 2008-10-30 2011-07-05 Hewlett-Packard Development Company, L.P. Building a synchronized target database
US8195606B2 (en) * 2008-12-12 2012-06-05 Microsoft Corporation Batch data synchronization with foreign key constraints
US9239767B2 (en) * 2008-12-22 2016-01-19 Rpx Clearinghouse Llc Selective database replication
US8200846B2 (en) * 2009-02-10 2012-06-12 International Business Machines Corporation Timestamp synchronization for queries to database portions in nodes that have independent clocks in a parallel computer system
JP4939568B2 (ja) 2009-04-28 2012-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100614362B1 (ko) * 1999-04-23 2006-09-11 지세케 앤드 데브리엔트 게엠베하 수직 집적형 회로 및 그의 제조방법

Also Published As

Publication number Publication date
US20140229437A1 (en) 2014-08-14
US8751445B2 (en) 2014-06-10
US9558257B2 (en) 2017-01-31
JP2010257426A (ja) 2010-11-11
US20100274759A1 (en) 2010-10-28

Similar Documents

Publication Publication Date Title
JP4939568B2 (ja) データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
US10055440B2 (en) Database table re-partitioning using trigger-based capture and replay
EP2590087B1 (en) Database log parallelization
CN105630863B (zh) 用于多版本并发提交状态的事务控制块
US10042910B2 (en) Database table re-partitioning using two active partition specifications
US8442962B2 (en) Distributed transaction management using two-phase commit optimization
US9411866B2 (en) Replication mechanisms for database environments
US9069704B2 (en) Database log replay parallelization
US20060010170A1 (en) Method and system using virtual replicated tables in a cluster database management system
EP0501160A2 (en) Intelligent page store for concurrent and consistent access to a database by a transaction processor and a query processor
CN109871386A (zh) 非易失性存储器中的多版本并发控制(mvcc)
US20130339312A1 (en) Inter-Query Parallelization of Constraint Checking
US9239858B1 (en) High-concurrency transactional commits
US9652491B2 (en) Out-of-order execution of strictly-ordered transactional workloads
CN113868028B (zh) 一种在数据节点上回放日志的方法、数据节点及系统
CN113056734A (zh) 管理共享数据库的系统和方法
Duggirala Newsql databases and scalable in-memory analytics
JP4380692B2 (ja) サマリーテーブルをリフレッシュするための装置、方法、及びプログラム
CN114816224A (zh) 数据管理方法和数据管理装置
WO2016085495A1 (en) Read-optimized database changes
CN102193981B (zh) 图形数据库联机事务中事务过期机制的实现方法
CN115576494B (zh) 数据存储方法和计算设备
US20180173805A1 (en) Application programming interface for detection and extraction of data changes
CN118277458B (zh) 满足acid属性的大数据云存储方法
WO2020241727A1 (ja) 情報処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110225

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110225

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110725

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110801

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20110801

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111122

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120207

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120224

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees