IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-507708複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること
<>
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図1
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図2
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図3
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図4
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図5
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図6
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図7
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図8
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図9
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図10
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図11
  • 特表-複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-21
(54)【発明の名称】複数のストレージデバイスを使用してデータ変更を複製し、そして、該複数のストレージデバイス上に記憶されているペンディング中のデータ変更のレコードを追跡すること
(51)【国際特許分類】
   G06F 16/11 20190101AFI20240214BHJP
【FI】
G06F16/11
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023546395
(86)(22)【出願日】2022-02-15
(85)【翻訳文提出日】2023-07-31
(86)【国際出願番号】 CN2022076307
(87)【国際公開番号】W WO2022183904
(87)【国際公開日】2022-09-09
(31)【優先権主張番号】17/189,648
(32)【優先日】2021-03-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100118599
【弁理士】
【氏名又は名称】村上 博司
(74)【復代理人】
【識別番号】100160738
【弁理士】
【氏名又は名称】加藤 由加里
(72)【発明者】
【氏名】シュトルツェ,クヌート
(72)【発明者】
【氏名】ガイゼルハート,ラインホルト
(72)【発明者】
【氏名】バイエル,フェリックス
(72)【発明者】
【氏名】オリベイラ リザード,ルイス エドゥアルド
(57)【要約】
ソースデータベースシステムのテーブルのデータ変更を実行しながら複数のログファイルを生成すること;該複数のログファイルを第1のアクセス時間を有する第1のメモリデバイス上に記憶すること;該第1のメモリデバイスからの該複数のログファイルの一部を第2のアクセス時間を有する第2のメモリデバイス上にアーカイブすること、ここで、該第2のアクセス時間は該第1のアクセス時間よりも長い;ペンディング中のデータ変更の第2の数を追跡すること、ここで、該ペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、該第2のメモリデバイス上にアーカイブされている該複数のログファイルのデータ変更の該レコードの該データ変更である;該第2の数に基づいて、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択すること;並びに、該データ変更を該ターゲットデータベースシステムのテーブル内に複製することの動作を実行する、方法、コンピュータプログラム製品若しくはシステム又はそれらの組み合わせが提供される。
【選択図】図12
【特許請求の範囲】
【請求項1】
コンピュータに実装された方法であって、
ソースデータベースシステムのテーブルのデータ変更を実行しながら複数のログファイルを繰り返し生成すること、ここで、各ログファイルは、前記ソースデータベースシステムの前記テーブルの前記データ変更の少なくとも1つのレコードを含む;
前記複数のログファイルを第1のメモリデバイス上に記憶すること、ここで、前記第1のメモリデバイスは、第1のアクセス時間を有する;
前記第1のメモリデバイス上に記憶されている前記複数のログファイルの一部を第2のメモリデバイス上にアーカイブすること、ここで、前記第2のメモリデバイスは第2のアクセス時間を有し、前記第2のアクセス時間は前記第1のアクセス時間よりも長い;
第2のペンディング中のデータ変更の第2の数を追跡すること、ここで、前記第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルのデータ変更の前記レコードの前記データ変更である;
前記第2の数に基づいて、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択すること;並びに、
前記複数のログファイルのデータ変更の前記レコードを用いて、データ複製の前記選択されたタイプに従って、前記ソースデータベースシステムの前記テーブルの前記データ変更を前記ターゲットデータベースシステムの前記テーブル内に複製すること
を含む、前記方法。
【請求項2】
前記データ複製の前記第1のタイプが、データ変更の前記レコードの各々を個別にロードすること、及びデータ変更の個別にロードされた対応するレコードに従って、前記ソースデータベースシステムの前記テーブルの単一の行の夫々のデータ変更を前記ターゲットデータベースシステムの前記テーブル内に複製することを含む、請求項1に記載の、コンピュータに実装された方法。
【請求項3】
前記データ複製の前記第2のタイプが、前記ターゲットデータベースシステムの前記テーブルの複数の行を一緒に更新する為の情報をロードすること、及び前記情報に基づいて前記ターゲットデータベースシステムの前記テーブルの前記複数の行を更新することを含む、請求項1に記載の、コンピュータに実装された方法。
【請求項4】
第1のペンディング中のデータ変更の第1の数を追跡すること、ここで、前記第1のペンディング中のデータ変更は、前記ターゲットデータベースシステムの前記テーブル内にまだ複製されていない、前記第1のメモリデバイス上に記憶されている前記複数のログファイルのデータ変更の前記レコードの前記データ変更である;並びに、
前記第1の数及び前記第2の数に基づいて、データ複製の前記タイプを選択すること
を更に含む、請求項1に記載の、コンピュータに実装された方法。
【請求項5】
データ複製の前記タイプを選択することが、前記第1の数の重み付けと前記第2の数の重み付けとを含み、ここで、前記第1の数の前記重み付けは前記第1のアクセス時間に基づき、及び前記第2の数の前記重み付けは前記第2のアクセス時間に基づく、請求項4に記載の、コンピュータに実装された方法。
【請求項6】
前記方法が、
前記第1の数と前記第2の数との比が第3の閾値以上であることに応答して、データ複製の前記第1のタイプを選択すること
を更に含み、
ここで、前記比は、前記第1のアクセス時間に依存して重み付けされる前記第1の数及び前記第2のアクセス時間に依存して重み付けされる前記第2の数を含む重み付け比である、
請求項4に記載の、コンピュータに実装された方法。
【請求項7】
前記方法が、
前記第1の数と前記第2の数との比が第3の閾値未満であることに応答して、データ複製の前記第2のタイプを選択すること
を更に含み、
ここで、前記比は、前記第1のアクセス時間に依存して重み付けされる前記第1の数及び前記第2のアクセス時間に依存して重み付けされる前記第2の数を含む重み付け比である、
請求項4に記載の、コンピュータに実装された方法。
【請求項8】
データ複製の前記タイプを選択することが、
前記第1の数及び前記第2の数の重み付き和を計算すること、ここで、前記第1の数は前記第1のアクセス時間に基づいて重み付けされ、及び前記第2の数は前記第2のアクセス時間に基づいて重み付けされる;並びに、
前記重み付き和が第4の閾値未満である場合に、データ複製の前記第1のタイプを選択すること、又は前記重み付き和が第4の閾値以上である場合に、データ複製の前記第2のタイプを選択すること
を含む、請求項4に記載の、コンピュータに実装された方法。
【請求項9】
夫々のログ番号を取得すること、ここで、夫々のログ番号は、前記複数のログファイルの夫々の1つに割り当てられ、ここで、夫々のログ番号は、夫々のログファイルの生成が開始される夫々の瞬間までに書き込まれている前記ソースデータベースシステムの前記テーブルの前記データ変更のレコードの総数を示す;並びに、
前記複数のログファイルに割り当てられた前記夫々のログ番号を用いて、前記第1の数及び前記第2の数を追跡すること
を更に含む、請求項4に記載の、コンピュータに実装された方法。
【請求項10】
前記複数のログファイルの各々が、夫々のログ番号を含み、ここで、夫々のログ番号は、前記複数のログファイルの夫々の1つに割り当てられ、前記夫々のログ番号は、前記夫々のログファイルの生成が開始される夫々の瞬間までに書き込まれている前記ソースデータベースシステムの前記テーブルの前記データ変更のレコードの総数を示し、並びに前記第1の数及び前記第2の数を追跡することが、前記複数のログファイルの前記夫々のログ番号を用いる、請求項4に記載の、コンピュータに実装された方法。
【請求項11】
前記第1の数を追跡することが、前記第1のメモリデバイス上で最短時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号と、前記第1のメモリデバイス上で最長時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号との差を計算することを含む、請求項9に記載の、コンピュータに実装された方法。
【請求項12】
前記第1の数を追跡することが、実際の瞬間における前記ソースデータベースシステムの前記テーブルのデータ変更の実際の総数と、前記第1のメモリデバイス上で最長時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号との差を計算することを含む、請求項9に記載の、コンピュータに実装された方法。
【請求項13】
前記第1のメモリデバイス又は前記第2のメモリデバイスから読み出され且つデータ変更の最後のレコードに従って前記ターゲットデータベースシステムの前記テーブルにおけるデータ変更の複製の為に使用される、データ変更の前記最後のレコードのレコード番号を追跡すること;及び、
前記第1の数又は前記第2の数を追跡する為に、データ変更の前記最後のレコードの前記レコード番号を使用すること
を更に含む、請求項9に記載の、コンピュータに実装された方法。
【請求項14】
前記方法が、
前記第1のメモリデバイス上で最長時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号と、データ変更の前記最後のレコードに割り当てられた前記レコード番号との差として前記第2の数を計算すること
を更に含み、
ここで、データ変更の前記最後のレコードは前記第2のメモリデバイス上でアーカイブされる前記複数のログファイルのうちの1つに含まれている、
請求項13に記載の、コンピュータに実装された方法。
【請求項15】
前記方法が、
前記第1のメモリデバイス上に最短時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号と、データ変更の前記最後のレコードに割り当てられた前記レコード番号との差として前記第1の数を計算すること
を更に含み、
ここで、データ変更の前記最後のレコードは前記第1のメモリデバイス上に記憶されている前記複数のログファイルのうちの1つに含まれている、
請求項13に記載の、コンピュータに実装された方法。
【請求項16】
前記方法が前記複数のログファイルを復元することを更に含み、ここで、前記復元することは、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルを前記第1のメモリデバイス上に記憶することを含む、請求項1に記載の、コンピュータに実装された方法。
【請求項17】
前記方法が、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルのデータ変更の前記レコードの夫々のサイズに基づいて、前記復元することを実行することを更に含む、請求項16に記載の、コンピュータに実装された方法。
【請求項18】
前記方法が、
前記ソースデータベースシステムの前記テーブルのデータ変更のレコードの総数を、カウンタを使用してカウントすること;
前記カウンタが該カウンタのオーバーフローに近い状態であるか否かを決定すること;
前記カウンタが該カウンタのオーバーフローに近い状態である場合に、データ複製の前記第2のタイプを選択すること;及び、
前記複数のログファイルのデータ変更の前記レコードを用いて、データ複製の前記第2のタイプに従って前記ソースデータベースシステムの前記テーブルのデータ変更を前記ターゲットデータベースシステムの前記テーブル内に複製した後に、前記カウンタをリセットすること
を更に含み、
ここで、データ複製の前記第2のタイプが、前記第1のメモリデバイス及び前記第2のメモリデバイス上に記憶されているデータ変更の全てのレコードを一緒にロードすること、及びデータ変更の該ロードされたレコードに従って、前記ソースデータベースシステムの前記テーブルの1超個の行の前記データ変更を前記ターゲットデータベースシステムの前記テーブル内に複製することを含む、
請求項16に記載の、コンピュータに実装された方法。
【請求項19】
複数のコンピュータ可読プログラム命令をその中に有するコンピュータ可読ストレージ媒体を備えているコンピュータプログラム製品であって、該複数のコンピュータ可読プログラム命令は、
ソースデータベースシステムのテーブルのデータ変更を実行しながら複数のログファイルを繰り返し生成すること、ここで、各ログファイルは、前記ソースデータベースシステムの前記テーブルの前記データ変更の少なくとも1つのレコードを含む;
前記複数のログファイルを第1のメモリデバイス上に記憶すること、ここで、前記第1のメモリデバイスは、第1のアクセス時間を有する;
前記第1のメモリデバイス上に記憶されている前記複数のログファイルの一部を第2のメモリデバイス上にアーカイブすること、ここで、前記第2のメモリデバイスは第2のアクセス時間を有し、前記第2のアクセス時間は前記第1のアクセス時間よりも長い;
第2のペンディング中のデータ変更の第2の数を追跡すること、ここで、前記第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルのデータ変更の前記レコードの前記データ変更である;
前記第2の数に基づいて、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択すること;並びに、
前記複数のログファイルのデータ変更の前記レコードを用いて、データ複製の前記選択されたタイプに従って、前記ソースデータベースシステムの前記テーブルの前記データ変更を前記ターゲットデータベースシステムの前記テーブル内に複製すること
を含む方法を実行する為に、1以上のプロセッサによって実行可能である、前記コンピュータプログラム製品。
【請求項20】
コンピュータシステムであって、
少なくとも1つのプロセッサ;
少なくとも1つのコンピュータ可読ストレージ媒体;
ソースデータベースシステム;及び
ターゲットデータベースシステム
を備えており、
ここで、前記少なくとも1つのプロセッサが、前記少なくとも1つのコンピュータ可読ストレージ媒体上に記憶された複数のプログラム命令を実行するように構造化され、配置され、接続され、及びプログラミングされており、並びに、
前記記憶された複数のプログラム命令が、
ソースデータベースシステムのテーブルのデータ変更を実行しながら複数のログファイルを繰り返し生成するようにプログラミングされたプログラム命令、ここで、各ログファイルは、前記ソースデータベースシステムの前記テーブルの前記データ変更の少なくとも1つのレコードを含む;
前記複数のログファイルを第1のメモリデバイス上に記憶するようにプログラミングされたプログラム命令、ここで、前記第1のメモリデバイスは、第1のアクセス時間を有する;
前記第1のメモリデバイス上に記憶されている前記複数のログファイルの一部を第2のメモリデバイス上にアーカイブするようにプログラミングされたプログラム命令、ここで、前記第2のメモリデバイスは第2のアクセス時間を有し、前記第2のアクセス時間は前記第1のアクセス時間よりも長い;
第2のペンディング中のデータ変更の第2の数を追跡するようにプログラミングされたプログラム命令、ここで、前記第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルのデータ変更の前記レコードの前記データ変更である;
前記第2の数に基づいて、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択するようにプログラミングされたプログラム命令;並びに、
前記複数のログファイルのデータ変更の前記レコードを用いて、データ複製の前記選択されたタイプに従って、前記ソースデータベースシステムの前記テーブルの前記データ変更を前記ターゲットデータベースシステムの前記テーブル内に複製するようにプログラミングされたプログラム命令
を含む、前記コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベース技術の分野に関し、より具体的には、ソースデータベースシステムのテーブルのデータ変更をターゲットデータベースシステムのテーブル内に複製することに関する。
【背景技術】
【0002】
ソースデータベースシステムのテーブル内で行われたデータ変更のターゲットデータベースシステムのテーブルへの複製は、該ソースデータベースシステムの該テーブルのバックアップを作成する為に実行されうる。データ変更のそのような複製の別の用途は、例えば、該ターゲットデータベースシステムの該テーブルが該ソースデータベースシステムの該テーブルと異なる順序付けスキームを含む場合に、該ターゲットデータベースシステムの該テーブルを該ソースデータベースシステムの該テーブルと同期させることでありうる。一般的に、データ変更の該複製は、該ターゲットデータベースシステムの該テーブルのデータを該ソースデータベースシステムの該テーブルのデータとできるだけ同期して維持する為に、できるだけ速く実行されるべきである。該データ変更は、異なるタイプの複製戦略に従って複製されうる。第1のタイプは、該ソースデータベースシステムのテーブルの単一の行を個別に複製することを含みうる。別のタイプの複製戦略は、該ソースデータベースシステムの該テーブルの複数の行を、更には行の大部分であっても、一度に複製することを含みうる。
【発明の概要】
【課題を解決するための手段】
【0003】
様々な実施態様が、独立請求項に記載されているように、データ変更を複製する為の、方法、コンピュータシステム及びコンピュータプログラム製品を提供する。有利な実施態様は、従属請求項において記載されている。本発明の実施態様は、相互に排他的でなければ、互いに自由に組み合わせられることができる。
【0004】
本発明の観点に従うと、ソースデータベースシステムのテーブルのデータ変更をターゲットデータベースシステムのテーブル内に複製する為の方法が提供される。該方法は、ソースデータベースシステムのテーブルのデータ変更を実行しながらログファイルを繰り返し生成することを含み、ここで、各ログファイルは、該ソースデータベースシステムの該テーブルの該データ変更の少なくとも1つのレコードを含む。該方法は、該複数のログファイルを第1のメモリデバイス上に記憶することを更に含み、ここで、該第1のメモリデバイスは、第1のアクセス時間を有する。該方法は、該第1のメモリデバイス上に記憶されている該複数のログファイルの一部を第2のメモリデバイス上にアーカイブすることを更に含み、ここで、該第2のメモリデバイスは第2のアクセス時間を有し、該第2のアクセス時間は該第1のアクセス時間よりも長い。該方法は、第2のペンディング中のデータ変更の第2の数を追跡することを更に含み、ここで、該第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、該第2のメモリデバイス上にアーカイブされている該複数のログファイルのデータ変更の該レコードの該データ変更である。該方法は、該第2の数に基づいて、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択することを更に含む。該方法は、該複数のログファイルのデータ変更の該レコードを用いて、データ複製の該選択されたタイプに従って、該ソースデータベースシステムの該テーブルの該データ変更を該ターゲットデータベースシステムの該テーブル内に複製することを含む。
【0005】
幾つかの実施態様において、該データ複製の該第1のタイプは、データ変更の該レコードの各々を個別にロードすること、及びデータ変更の個別にロードされた対応するレコードに従って、該ソースデータベースシステムの該テーブルの単一の行の夫々のデータ変更を該ターゲットデータベースシステムの該テーブル内に複製することを含む。幾つかの実施態様において、該データ複製の該第2のタイプは、該ターゲットデータベースシステムの該テーブルの複数の行を一緒に更新する為の情報をロードすること、及び該情報に基づいて該ターゲットデータベースシステムの該テーブルの該複数の行を更新することを含む。
【0006】
幾つかの実施態様において、該方法は任意的に、第1のペンディング中のデータ変更の第1の数を追跡することを更に含んでいてもよく、ここで、該第1のペンディング中のデータ変更は、該ターゲットデータベースシステムの該テーブルにまだ複製されていない、該第1のメモリデバイス上に記憶されている該複数のログファイルのデータ変更の該レコードの該データ変更である;並びに、該データ複製のタイプの選択は、該第1の数及び該第2の数に基づく。
【0007】
幾つかの実施態様において、任意的に、データ複製の該タイプを選択することが、該第1の数の重み付けと該第2の数の重み付けとを含んでいてもよく、ここで、該第1の数の該重み付けは該第1のアクセス時間に基づき、及び該第2の数の重み付けは該第2のアクセス時間に基づく。
【0008】
幾つかの実施態様において、該方法は任意的に、該第1の数と該第2の数との比が第3の閾値以上である場合に、データ複製の該第1のタイプを選択すること;及び、該第1の数と該第2の数との比が第3の閾値未満である場合に、データ複製の第2のタイプを選択することを更に含んでいてもよい。該比は、該第1のアクセス時間に依存して重み付けされる該第1の数及び該第2のアクセス時間に依存して重み付けされる該第2の数を含む重み付け比でありうる。
【0009】
幾つかの実施態様において、該方法は任意的に、該第1の数及び該第2の数の重み付き和を計算することを更に含んでいてもよく、ここで、該第1の数は該第1のアクセス時間に基づいて重み付けされ、及び該第2の数は該第2のアクセス時間に基づいて重み付けされる。そのような実施態様において、該重み付き和が第4の閾値未満である場合に、データ複製の第1のタイプが選択され、又は該重み付き和が第4の閾値以上である場合に、データ複製の該第2のタイプが選択される。
【0010】
幾つかの実施態様において、該方法は任意的に、夫々のログ番号を取得することを更に含んでいてもよく、ここで、夫々のログ番号は、該複数のログファイルの夫々の1つに割り当てられ、ここで、夫々のログ番号は、夫々のログファイルの生成が開始される夫々の瞬間まで書き込まれている該ソースデータベースシステムの該テーブルの該データ変更のレコードの総数を示す。そのような実施態様において、該方法は、該複数のログファイルに割り当てられた該夫々のログ番号を用いて、該第1の数及び該第2の数を追跡することを更に含んでいてもよい。
【0011】
任意的に、幾つかの実施態様において、該第1の数を追跡することが、該第1のメモリデバイス上で最短時間記憶されている該ログファイルに割り当てられた該夫々のログ番号と、該第1のメモリデバイス上で最長時間記憶されている該ログファイルに割り当てられた該夫々のログ番号との差を計算することを含んでいてもよい。
【0012】
任意的に、幾つかの実施態様において、該第1の数を追跡することが、実際の瞬間における該ソースデータベースシステムの該テーブルのデータ変更の実際の総数と、該第1のメモリデバイス上で最長時間記憶されている該ログファイルに割り当てられた該夫々のログ番号との差を計算することを含んでいてもよい。
【0013】
幾つかの実施態様において、該方法は任意的に、該第1のメモリデバイス又は該第2のメモリデバイスから読み出され且つデータ変更の最後のレコードに従って該ターゲットデータベースシステムの該テーブルにおけるデータ変更の複製の為に使用される、データ変更の該最後のレコードのレコード番号を追跡すること;及び、該第1の数又は該第2の数を追跡する為に、データ変更の該最後のレコードの該レコード番号を使用することを更に含んでいてもよい。
【0014】
幾つかの実施態様において、該方法は任意的に、該第1のメモリデバイス上で最長時間記憶されている該ログファイルに割り当てられた該夫々のログ番号と、データ変更の該最後のレコードに割り当てられた該レコード番号との差として該第2の数を計算することを更に含んでいてもよく、ここで、データ変更の該最後のレコードは該第2のメモリデバイス上でアーカイブされる該複数のログファイルのうちの1つに含まれている。
【0015】
幾つかの実施態様において、該方法は任意的に、該第1のメモリデバイス上に最短時間記憶されている該ログファイルに割り当てられた該夫々のログ番号と、データ変更の該最後のレコードに割り当てられた該レコード番号との差として該第1の数を計算することを更に含んでいてもよく、ここで、データ変更の該最後のレコードは該第1のメモリデバイス上に記憶されている該複数のログファイルのうちの1つに含まれている。
【0016】
幾つかの実施態様において、該方法は任意的に、該ソースデータベースシステムの該テーブルのデータ変更のレコードの総数を、カウンタを使用してカウントすることを更に含んでいてもよい。そのような実施態様において、該方法は、上記カウンタが該カウンタのオーバーフローに近い状態であるか否かを決定することを更に含んでいてもよい。そのような実施態様において、該方法は、上記カウンタが該カウンタのオーバーフローに近い状態である場合に、データ複製の該第2のタイプを選択することを更に含んでいてもよい。そのような実施態様において、該方法は、該複数のログファイルのデータ変更の該レコードを用いて、データ複製の該第2のタイプに従って該ソースデータベースシステムの該テーブルのデータ変更を該ターゲットデータベースシステムの該テーブル内に複製した後に、該カウンタをリセットすることを更に含んでいてもよい。幾つかの実施態様において、データ複製の該第2のタイプは、該第1のメモリデバイス及び該第2のメモリデバイス上に記憶されているデータ変更の全てのレコードを一緒にロードすること、及びデータ変更の該ロードされたレコードに従って、該ソースデータベースシステムの該テーブルの1超個の行の該データ変更を該ターゲットデータベースシステムの該テーブル内に複製することを含んでいてもよい。
【0017】
本発明の別の観点に従うと、複数のコンピュータ可読プログラム命令をその中に有するコンピュータ可読ストレージ媒体を備えているコンピュータプログラム製品が提供され、ここで、該複数のコンピュータ可読プログラム命令は、上記された実施態様のいずれかに従う方法を実行する為に1以上のプロセッサによって実行可能である。
【0018】
本発明の別の観点に従うと、ソースデータベースシステムのテーブルのデータ変更をターゲットデータベースシステムのテーブル内に複製する為のコンピュータシステムが提供される。該コンピュータシステムは、上記された実施態様のいずれかに従う方法を実行するように構成されうる。
【0019】
以下において、本発明の実施形態が、単なる例としてのみ、添付の図面を参照して、より詳細に説明されている。
【図面の簡単な説明】
【0020】
図1図1は、本発明の実施態様に従うコンピュータシステムを示す。
図2図2は、本発明の実施態様に従う、図1において示されている該コンピュータシステムの第2のコンピュータシステム/サーバを示す。
図3図3は、本発明の実施態様に従う、図1の該コンピュータシステムに接続されたネットワークを図示する。
図4図4は、本発明の実施態様に従って、ソースデータベースシステムのデータ複製をターゲットデータベースシステムにおいて実行する為の、ソースデータベースシステム、ターゲットデータベースシステム、第1のメモリデバイス、及び第2のメモリデバイスを図示する。
図5図5は、本発明の実施態様に従うソースデータベースシステムのテーブルを図示する。
図6図6は、本発明の実施態様に従うターゲットデータベースシステムのテーブルを図示する。
図7図7は、本発明の実施態様に従うソースデータベースシステムのテーブルのデータ変更を実行しながら生成される複数のログファイルを図示する。
図8図8は、本発明の実施態様に従うソースデータベースシステムのテーブルのデータ変更を実行しながら生成されるデータ変更のレコードを図示する。
図9図9は、本発明の実施態様に従うデータ変更の第1のレコード及びデータ変更の第2のレコードを図示する。
図10図10は、本発明の実施態様に従う、図4において示されている該ソースデータベースシステム、該ターゲットデータベースシステム、該第1のメモリデバイス、及び該第2のメモリデバイスを図示し、ここで、該第1のメモリデバイス及び該第2のメモリデバイスは、図7において示されている該複数のログファイルを記憶する。
図11図11は、本発明の実施態様に従う、図4において示されている該ソースデータベースシステム、該ターゲットデータベースシステム、該第1のメモリデバイス、及び該第2のメモリデバイスを図示し、ここで、該第1のメモリデバイス及び該第2のメモリデバイスは、図7において示されている該複数のログファイルを記憶し、ここで、各ログファイルはログ番号を含む。
図12図12は、本発明の実施態様に従う、図5において示されている該ソースデータベースシステムの該テーブルのデータ変更を、図6において示されている該ターゲットデータベースシステムの該テーブル内に複製する為の、コンピュータに実装された方法のフローチャート図を図示する。
【発明を実施するための形態】
【0021】
本開示の様々な実施態様の記載は、例示の目的の為に提示されたものであり、網羅的であること又は開示された実施態様に限定されることが意図されたものでない。多くの修正及び変形が、記載された実施態様の範囲及び精神から逸脱することなしに当業者に明らかであろう。本明細書において使用される語は、実施態様の原理、実用的な用途、又は市場において見られる技術に対する技術的改善を最もよく説明する為に、又は当業者が本明細書において開示されている実施態様を理解することができるようにする為に選択された。
【0022】
以下において、該ソースデータベースシステムのテーブルはソーステーブルと云われ、及び該ターゲットデータベースシステムのテーブルはターゲットテーブルと云われる。該ソーステーブルのデータ変更を実行しながら生成される各ログファイルのレコードは各々、該ソーステーブルの単一のデータ変更を複製する為に必要な全ての情報を含みうる。該ソーステーブルの単一のデータ変更は、該ソーステーブルの単一のデータフィールドの値の変更、又は該ソーステーブルの単一の行の複数のデータフィールドの値の変更を含みうる。該単一のデータフィールドは、該ソーステーブルの行の番号及び列の番号によって特定されうる。該単一のデータフィールドの該値は、数値若しくは文字列又はそれらの組み合わせでありうる。該単一のデータ変更を複製する為の必要な情報は、例えば、該データ変更が実行された後の該ソーステーブルの該単一のデータフィールドの新しいデータ値と、該単一のデータフィールドを特定する該ソーステーブルの行の番号及び列の番号とを含みうる。該単一のデータ変更が該ソーステーブルの単一の行の複数のデータフィールドの値の変更を含みうる場合、該単一のデータ変更を複製する為の必要な情報は、該単一のデータ変更を実行する際に変更される各データフィールドの夫々の新しいデータ値、これらの変更されたデータフィールドを含む行の番号、及び各変更されたデータフィールドを示す夫々の列を含みうる。
【0023】
該ソーステーブルの新しいデータ変更が実行されるごとに、そのデータ変更を該ターゲットテーブルにおいて複製する為の必要な情報を含むデータ変更の新しいレコードが生成されうる。データ変更の該新しいレコードは、実際のログファイル内に書き込まれうる。該新しいレコードは、実際のログファイルにおいて、データ変更の最後に書き込まれたレコードに続く位置において書き込まれ、ここで、該最後に書き込まれたレコードは、該ソーステーブルの最後に実行されたデータ変更を示す。従って、該ソーステーブルのデータ変更の順序は、該複数のログファイル内のデータ変更の該レコードの順序によって表されうる。
【0024】
実際のログファイルのサイズが所与の閾値に達した場合に、新たなログファイルが生成されうる。このように、該ログファイルは、繰り返し生成されうる。該ソーステーブルは、例えば、数年又は数十年の長期間にわたって維持されうる故に、該ソーステーブルのデータ変更の総数は、例えば、千、百、十億等よりも大きくてもよい。データフィールドは該ソーステーブルの寿命の間に数回変更されうる故に、データ変更の総数は、該ソーステーブルのデータフィールド又は行の数よりも多くてもよい。
【0025】
本明細書において使用される場合に、語「第2の数を追跡する」は、第2の数を決定するあらゆるタイプ、例えば、第2の数を表す第2のカウンタをカウントする、計算する、若しくは更新する又はそれらの組み合わせを実行する等、を云う。該第2の数を追跡することは、値が第2の数を表しうる該第2のカウンタを更新することを含みうる。該第2のカウンタは、第2のペンディング中のデータ変更のうちの1つがターゲットテーブルにおいて最近複製された場合に更新されうる。この場合に、該第2のカウンタは1つ減らされうる。加えて、該第2の数を追跡することは、新しいログファイルが該第2のメモリデバイス上に記憶されうる場合に、該第2のカウンタを更新することを含みうる。この場合、該第2のカウンタは、該第2のメモリデバイス上に記憶されている新しいログファイル内に含まれるレコードの数だけ増加されうる。
【0026】
本明細書において使用される場合に、語「複数のログファイルの一部を第2のメモリデバイス上にアーカイブする」は、複数のログファイルの一部を第2のストレージデバイス上に記憶することを云う。語「アーカイブする」は、第2のアクセス時間が第1のアクセス時間よりも長いことを表現する為に使用される。第1のアクセス時間及び第2のアクセス時間は、第1のメモリデバイス又は第2のメモリデバイスが書き込みコマンド又は読み取りコマンドを受信した後に、該書き込みコマンド又は読み取りコマンドを実行する為にかかる第1の時間及び第2の時間によって夫々定義されうる。該第2のメモリデバイスは、ハードディスクドライブ、テープ等であってもよい。該第2のメモリデバイスは、該第2のメモリデバイス上に記憶されたデータにアクセスする為の移動要素、例えば、回転ディスク又はテープ、を備えていてもよい。該第2のアクセス時間は、例えば、読み取りコマンドに従って該第2のメモリの読み書きヘッドを位置決めする為に使用される時間間隔(シーク時間として知られている)を含みうる。該第1のメモリデバイスは、ソリッドステートドライブ(SSD:Solid-State-Drive)、フラッシュメモリ等であってもよい。該第1のメモリデバイスは、該第1のメモリデバイス上に記憶されたデータを読み出す為の移動要素を備えていなくてもよい。
【0027】
一般的に、該データ変更の複製の高い性能を達成する為には、全てのログファイルを該第1のメモリデバイス上に記憶することが有利である(例えば、アクセス時間が短くなる等)。しかしながら、該第1のメモリデバイスは、該第2のメモリデバイスよりも高価でありうる。その為に、該第1のメモリのサイズが制限され、該第1のメモリの利用可能な容量がゼロに近い場合に、該第1のメモリデバイス上に記憶されている複数のログファイルの一部が該第2のメモリデバイス上にアーカイブされうる。
【0028】
該第2のアクセス時間(例えば、第2のメモリデバイス等)は該第1のアクセス時間よりも長い故に、第2のペンディング中のデータ変更の第2の数が或る第1のレベルを超え且つ該ソーステーブルにおいて実行されるデータ変更の頻度が或る第2のレベルを超える場合に、該データ変更の複製はより長い期間遅くなりうる。そのような場合、データ複製の該第1のタイプ(例えば、増分データ複製等)を実行することにより、所与の時間間隔内に、複製されることができるよりも多くのログファイルが該第2のメモリデバイス上にアーカイブされるというデッドロック状況をもたらしうる。そのような状況において、データ複製の該第2のタイプ(例えば、バルクデータ複製等)を実行することにより、該デッドロック状況を解決又は回避しうる。本発明の観点に従うと、第2の数を追跡し且つ該第2の数に少なくとも部分的に基づいてデータ複製のタイプを選択することによって、デッドロック状況又はデッドロック状況に近い状況が検出され、そして、防止されうる。幾つかの実施態様において、該第2の数の実際の値をチェックすることによって、若しくは該第2の数の実際の値の時間的変化をチェックすることによって、又はそれらの組み合わせのチェックによって、該第2の数を追跡することが自動的に実行されうる。
【0029】
第1のレベル及び第2のレベルは、該データ変更の複製を実行する為のコンピュータシステムの設計に依存し、特に、該第2のアクセス時間に依存しうる。該ソーステーブルにおいて実行されるデータ変更の頻度は、該ソースデータベースシステムの使用挙動に依存しうる。
【0030】
幾つかの実施態様において、該第2の数が第2の閾値よりも大きい場合に、データ複製の該第2のタイプが選択されうる。該第2の閾値は、該第2のアクセス時間若しくは該データ変更を複製する帯域幅又はそれらの組み合わせに依存しうる。そのような実施態様は、1つの値のみが比較される必要がある故に、データ複製のタイプの選択を実行する為の高速な方法を提供することができる。その上、1つのみの閾値、ここでは第2の閾値のみ、が該ソースデータベースシステムの使用状況に適合される必要がある故に、1つの値のみに基づいてデータ複製のタイプを選択することにより、該データ複製を実行する為のコンピュータシステムを較正する必要性が緩和されうる。
【0031】
幾つかの実施態様において、データ複製のタイプの選択を決定することは、第1のペンディング中のデータ変更の第1の数を追跡することを含み得、ここで、該第1のペンディング中のデータ変更は、該ターゲットデータベースシステムの該テーブル内にまだ複製されていない、該第1のメモリデバイス上に記憶されている複数のログファイルのデータ変更のレコードのデータ変更である。従って、幾つかの実施態様において、該選択することは、該第1の数及び該第2の数に依存しうる。このように、該第1のペンディング中のデータ変更がまた考慮され、及びデッドロック状況がより正確に予期されうる。
【0032】
本明細書において使用される場合に、語「第1の数を追跡する」は、第1の数を決定するあらゆるタイプ、例えば、第1の数を表す第1のカウンタをカウントする、計算する、若しくは更新する又はそれらの組み合わせを実行する等、を云う。該第1の数を追跡することは、値が第1の数を表しうる該第1のカウンタを更新することを含みうる。該第1のカウンタは、第1のペンディング中のデータ変更のうちの1つがターゲットテーブルにおいて最近複製された場合に更新されうる。この場合に、該第1のカウンタは1つ減らされうる。加えて、該第1の数を追跡することは、新しいログファイルが該第1のメモリデバイス上に記憶されうる場合に、該第1のカウンタを更新することを含みうる。この場合、該第1のカウンタは、該新しいログファイル内に含まれるレコードの数だけ増加されうる。
【0033】
幾つかの実施態様において、該ターゲットデータベースシステムの該テーブルの幾つかの行を更新する為の該情報をロードすることは、データ変更の該レコードの幾つかの行を一緒にロードすることを含みうる。幾つかの実施態様において、該ターゲットデータベースシステムの該テーブルの該複数の行を更新することは、データ変更の該ロードされたレコードに従って、該ソースデータベースシステムの該テーブルの該複数の行のデータ変更を、該ターゲットデータベースシステムのテーブルで複製することを含みうる。該ソースデータベースシステムの該テーブルの該複数の行の各々は、該ターゲットデータベースシステムの該テーブルの複数の行のうちの1つに対応しうる。データ変更の該複数のレコードのうちの幾つかのレコードは、該第1のメモリデバイス又は該第2のメモリデバイスからロードされうる。データ変更の該複数のレコードのうちの幾つかのレコードが一緒にロードされることにより、該データ複製が加速されうる。従って、デッドロックの発生が防止されうる。
【0034】
幾つかの実施態様において、該ターゲットデータベースシステムの該テーブルの該複数の行を更新する為の該情報をロードすることは、該ソースデータベースシステムの該テーブルの該複数の行のデータ値をロードすることを含んでいてもよく、これはまた、本明細書において、データ複製の該第2のタイプの第2のケースと云われうる。従って、幾つかの実施態様において、データ変更の該レコードは、データ複製の該第2のタイプを実行する為に必要でない場合がある。該ターゲットテーブルの複数の行及び該ソーステーブルの複数の行は夫々、該ターゲットテーブル及び該ソーステーブルのパーティションでありうる。一例として、該ターゲットテーブル及び該ソーステーブルの該複数の行は夫々、ターゲットテーブル全体及びソーステーブル全体を構成しうる。該ソーステーブルの該複数の行の該データ値は各々、該ソーステーブルの該複数の行の単一のデータフィールドの実際のデータ値を提供しうる。該ソーステーブルの該複数の行の該データ値が一旦ロードされると、これらの値は、該ターゲットテーブルを更新する為に、該ターゲットテーブルの対応するデータフィールドにコピーされうる。該データ値は、該ソースデータベースシステムから直接ロードされうる。該ソーステーブルの該複数の行のデータ値をロードすることによって、該ターゲットテーブルにおける対応するデータフィールドを更新する為に、該ソーステーブルの該単一のデータフィールドのうちの1つの複数のデータ変更の複製がスキップされうる。このように、該データ複製が加速され、且つデッドロック状況が防止されうる。
【0035】
幾つかの実施態様において、データ複製の該タイプを選択することは、データ複製の該第1のタイプを使用して、全てのペンディング中のデータ変更、例えば、第1のペンディング中のデータ変更及び第2のペンディング中のデータ変更、を実行する為に必要な第1の計算コストと、データ複製の該第2のタイプの第2のケースに従って該ターゲットテーブルの全ての行の更新を実行する為に必要な第2の計算コストとを比較することを含みうる。該第1の計算コストが該第2の計算コストよりも大きい場合、データ複製の該第2のタイプが選択されてもよく、そうでない場合、データ複製の該第1のタイプが選択されてもよい。
【0036】
幾つかの実施態様において、データ複製のタイプの選択を決定することは、第1の数が第1の閾値よりも大きく且つ第2の数が第2の閾値よりも大きい場合に、データ複製の該第2のタイプを選択することを含みうる。そのような実施態様は、該第1のペンディング中のデータ変更及び該第2のペンディング中のデータ変更を考慮する為の簡単な実装を提示しうる。該第1の数が第1の閾値よりも大きく、且つ該第2の数が第2の閾値よりも大きい場合に、デッドロック状況にすぐに到達しうると推定することができる。該第2の閾値と同様に、該第1の閾値は、該ソースデータベースシステムの使用状況と、該データ変更を複製する際の達成可能な帯域幅とに適合されうる。
【0037】
幾つかの実施態様において、データ複製のタイプを選択することは、該第1の数及び該第2の数の重み付けを含みうる。一例として、該第1の数の重み付けは、該第1のアクセス時間に依存してもよく、及び該第2の数の重み付けは、該第2のアクセス時間に依存してもよい。該夫々のアクセス時間に関して該第1の数及び該第2の数の重み付けを実行することによって、該第1のアクセス時間と該第2のアクセス時間との間の差が考慮されうる。これにより、該データ変更を複製する方法をコンピュータシステムの設計に適合される必要性を緩和しうる。例えば、該第2のアクセス時間が長いほど、該第2の数値は、該第2のアクセス時間に依存して重み付けされ、データ複製のタイプの選択が実行されうる主要な指標(key figure)を生成しうる。該重み付けは、上述された第1の計算コストを決定する為に使用されうる。
【0038】
幾つかの実施態様において、データ複製のタイプを選択することは、該第1の数と該第2の数との比が第3の閾値以上である場合に、データ複製の該第1のタイプを選択することを含みうる。従って、幾つかの実施態様において、該選択することは、該第1の数と該第2の数との比が第3の閾値未満である場合に、データ複製の該第2のタイプを選択することを含みうる。該比は、該第1の数が商の分子であり且つ該第2の数が商の除数である商の形式であってもよい。該第3の閾値は、該第1のアクセス時間と該第2のアクセス時間との更なる比に適合されうる。該第1の数と該第2の数との比を、該第3の閾値と比較することによって、該第1のアクセス時間と該第2のアクセス時間との差が簡単な様式で考慮されうる。該比は、例えば、単一の主要な指標として使用されてもよく、それに基づいて、データ複製の該タイプを選択することが実行されうる。コンピュータシステムは、該第3の閾値を調整することによって、該ソースデータベースシステムの使用状況に適合されうる。
【0039】
幾つかの実施態様において、該比は、該第1の数が該第1のアクセス時間に依存して重み付けされていること及び該第2の数が該第2のアクセス時間に依存して重み付けされていることを含む重み付けされた比でありうる。重み付けされている該比は、該第1のアクセス時間及び該第2のアクセス時間を考慮する故に、データ複製の該タイプの選択が実行されうることに基づく主要な指標としてより正確に機能しうる。
【0040】
幾つかの実施態様において、データ複製の該タイプを選択することは、該第1の数及び該第2の数の重み付き和を計算することを含み得、ここで、該第1の数は、該第1のアクセス時間に基づいて重み付けされ、及び該第2の数は、該第2のアクセス時間に基づいて重み付けされる。従って、幾つかの実施態様において、該選択することは、重み付き和が第4の閾値未満である場合にデータ複製の該第1のタイプを選択すること、又は重み付き和が第4の閾値以上である場合にデータ複製の該第2のタイプを選択することを含みうる。該重み付き和は、第1のペンディング中及び第2のペンディング中のデータ変更を全て実行する為に、第1のストレージデバイス及び第2のストレージデバイスの全てのレコードにアクセスする為の総アクセス時間の量を表しうる。その為に、該重み付き和は、デッドロック状況がすぐに発生しうるか否かを推定する為の主要な指標として十分に機能しうる。それ故に、該重み付き和は、データ複製の該タイプの選択が実行されうることに基づく主要な指標として十分に機能しうる。該重み付き和は、上述された第1の計算コストを決定する為に使用されうる。
【0041】
幾つかの実施態様において、データ複製の該第2のタイプは、該ターゲットデータベースシステムの該テーブルの全ての行を一緒に更新する為の情報をロードすること、該ターゲットテーブルの該全ての行を更新する為の該情報に基づいて該ターゲットデータベースシステムの該テーブルの該全ての行を更新することを含みうる。該ターゲットテーブルの該全ての行を更新する為の該情報は、第1の場合には、第1のペンディング中及び第2のペンディング中のデータ変更の全てのレコードの形態であってもよく、第2の場合には、ソーステーブルの全データ値の形態であってもよい。従って、該第1の場合、該ターゲットテーブルの全ての行を更新することは、第1のペンディング中及び第2のペンディング中のデータ変更に従って、全てのデータ変更の複製を実行することを含みうる。該第2の場合、該ターゲットテーブルの全ての行を更新することは、該ターゲットテーブルの各データ値を該ソーステーブルのデータ値の対応する1つに等しく設定することを含みうる。
【0042】
幾つかの実施態様において、全ての行が更新された後に、全てのログファイルが、該第1のメモリデバイス及び該第2のメモリデバイスから削除されうる。例えば、第1のメモリデバイス及び該第2のメモリデバイスのそのような一種のクリーンアップの後、該第1のメモリデバイス上に記憶されているデータ変更の更なるレコードが該第2のメモリデバイス上にアーカイブされるまで、ある程度の時間がかかることが推定されうる。このように、幾つかの実施態様は、該データ変更の複製を実行する為に該データ変更の該レコードが該第2のメモリデバイスから連続的にロードされる状態から、該複製を実行する為に該データ変更の該レコードが該第1のメモリデバイスから連続的にロードされる状態にコンピュータシステムをシフトすることを提供しうる。結果として、該複製の性能が向上されうる。
【0043】
幾つかの実施態様において、データ複製の該タイプを選択することは、夫々のログ番号を使用することを含みうる。例えば、夫々のログ番号は、該複数のログファイルの夫々の1つに割り当てられうる。該夫々のログ番号は、該夫々のログファイルの生成が開始された夫々の瞬間において書き込まれた該ソースデータベースシステムの該テーブルのデータ変更のレコードの総数を示しうる。幾つかの実施態様において、該複数のログファイルに割り当てられたログ番号は、該第1の数及び該第2の数の追跡を実行するときに使用されうる。このことにより、該第1の数若しくは該第2の数又はそれらの組み合わせを決定する為の計算コストが低減されうる。例えば、これらのレコードをカウントする為に、該第2のメモリデバイス上に記憶されている複数のログファイルの全てのレコードを読み取る必要はない場合がある。同じことが、該第2の数を決定する為に当てはまる。
【0044】
幾つかの実施態様において、該複数のログファイルは各々、それらに割り当てられた夫々のログ番号を含む。例えば、夫々のログファイルに割り当てられた該ログ番号は、その夫々のログファイル内に埋め込まれうる。このことにより、ログ番号及び夫々のログファイルへのそれらの割り当てが、第1のメモリデバイス及び第2のメモリデバイスとは異なる更なるメモリデバイス上に記憶される必要がないという利点が提供されることができる。
【0045】
幾つかの実施態様において、該第1の数を追跡することは、該第1のメモリデバイス上で最短時間記憶されているログファイルに割り当てられたログ番号と、該第1のメモリデバイス上で最長時間記憶されているログファイルに割り当てられたログ番号との差を計算することを含みうる。該第1の数は、複数のログ番号の差に設定されうる。この計算は、幾つかの実施態様において、該第1の数を決定する為の簡単且つ高速な様式を提供しうる。該第1のメモリデバイス上に最長時間記憶されているログファイルはまた、本明細書において最も古いログファイルと云われうる。該第1のメモリデバイス上に最短時間記憶されているログファイルはまた、本明細書において最も若いログファイルと云われうる。
【0046】
幾つかの実施態様において、該第1の数を追跡することは、実際の瞬間の該ソースデータベースシステムの該テーブルのデータ変更の実際の総数と、該第1のメモリデバイス上に最長時間記憶されているログファイルに割り当てられたログ番号との差を計算することを含みうる。データ変更の該実際の総数は、該ソースデータベースシステムから取得されうる。該ソースデータベースシステムは、データ変更の該実際の総数をカウントする為のレコードカウンタを備えていてもよい。最も若いログファイルのログ番号の代わりに、データ変更の該実際の総数を使用することにより、該第1の数のより正確な決定を可能にすることができる。一般的に、該ソースデータベースシステムの手段によって生成されている最後のレコード(例えば、本明細書において最後の生成レコードと云われる)が、最も若いログファイルに直接書き込まれうる。
【0047】
幾つかの実施態様において、データ複製のタイプを選択することは、該第1のメモリデバイス又は該第2のメモリデバイスから読み出され且つデータ変更の該最後のレコード(例えば、最後に処理されたレコード又はデータ変更の最後のレコードとも云われる)に従って該ターゲットデータベースシステムの該テーブルのデータ変更の複製の為に使用されるところのデータ変更の該最後のレコードのレコード番号を追跡することを含みうる。幾つかの実施態様において、データ複製のタイプを選択することは、第1の数又は第2の数を追跡する為にデータ変更の該最後のレコードの該レコード番号を使用することを含みうる。該最後に処理されたレコードの該レコード番号は、該最後に処理されたレコードが書き込まれた瞬間に書き込まれている該ソースデータベースシステムの該テーブルのデータ変更の複数のレコード(該最後に処理されたレコードを含む)の総数を表しうる。データ変更の各レコードは、そのレコードが書き込まれた瞬間に書き込まれている該ソースデータベースシステムの該テーブルのデータ変更のレコード(そのレコードを含む)の総数に等しいレコード番号を含みうる。該最後に処理されたレコードの該レコード番号を追跡することにより、第1の数若しくは第2の数又はそれらの組み合わせの追跡を容易にしうる。例えば、そのような場合には、上述された第1のカウンタ及び第2のカウンタは必要なく、更新されうる。該最後に処理されたレコードの該レコード番号を追跡することは、該最後に処理されたレコードの該レコード番号を読み取ることを含みうる。
【0048】
幾つかの実施態様において、データ複製のタイプを選択することが、該第1のメモリデバイス上に最長時間記憶されているログファイルに割り当てられたログ番号と、データ変更の該最後のレコードに割り当てられているレコード番号との差として、該第2の数を計算することを含みうる。幾つかの実施態様において、データ変更の該最後のレコードは、該第2のメモリデバイス上にアーカイブされている該複数のログファイルのうちの1つ内に含まれていてもよく、又は該第2のメモリデバイス上にアーカイブされている該複数のログファイルのうちの1つによって提供されてもよい。そのような実施態様は、該第1のカウンタ又は該第2のカウンタを使用すること無しに、代わりに、該最後に処理されたレコードの該レコード番号及び該最も古いログファイルに割り当てられた該ログ番号を使用するだけで、該第2の数を決定する簡単な様式を提供しうる。
【0049】
幾つかの実施態様において、データ複製のタイプを選択することが、該第1のメモリデバイス上に最短時間記憶されているログファイルに割り当てられたログ番号と、データ変更の該最後のレコードに割り当てられているレコード番号との差として、該第1の数を計算することを含みうる。幾つかの実施態様において、データ変更の該最後のレコードは、該第1のメモリデバイス上に記憶されている該複数のログファイルのうちの1つ内に含まれていてもよく、又は該第1のメモリデバイス上に記憶されている該複数のログファイルのうちの1つによって提供されてもよい。そのような実施態様は、該第1のカウンタ又は該第2のカウンタを使用すること無しに、代わりに、該最後に処理されたレコードの該レコード番号及び該最も若いログファイルに割り当てられたログ番号を使用するだけで、該第1の数を決定する簡単な様式を提供しうる。
【0050】
幾つかの実施態様において、データ複製のタイプを選択することが、該複数のログファイルを復元することを含みうる。該復元することは、該第2のメモリデバイスにアーカイブされている該複数のログファイルを該第1のメモリデバイス上に記憶することを含みうる。該復元されたログファイルは、該データ変更の複製を実行する為に、該第2のメモリデバイスからでなく、該第1のメモリデバイスから読み取られ且つ処理されうる。従って、該データ変更の該複製が高速化されうる。該復元することは、該複数のログファイルの該復元することの計算コストの見積もりに基づいて実行されうる。
【0051】
幾つかの実施態様において、データ複製のタイプを選択することが、該第2のメモリデバイス上にアーカイブされている該複数のログファイルのデータ変更の該複数のレコードの夫々のサイズに基づいて、該複数のログファイルの復元を実行することを含みうる。該複数のログファイルの復元にかかる計算コストの推定は、該第2のメモリデバイス上にアーカイブされている該複数のログファイルのデータ変更の該複数のレコードの夫々のサイズに基づいて実行されうる。このように、該複数のログファイルの復元が実行されるべきかの判断は、該複数のログファイルの復元の計算コストに関するより詳細な情報に基づいて行われうる。
【0052】
幾つかの実施態様において、データ複製のタイプを選択することが、該ソースデータベースシステムの該テーブルのデータ変更のレコードの総数をカウントする為のカウンタを使用することを含みうる。該カウンタは、上述されたレコードカウンタであってもよい。幾つかの実施態様において、該選択することは、該カウンタが該カウンタのオーバーフローに近い状態にあるかどうかの判定を含みうる。幾つかの実施態様において、該カウンタが該カウンタのオーバーフローに近い状態にある場合に、データ複製の該第2のタイプを選択することがなされうる。該カウンタは、該複数のログファイルのデータ変更の該複数のレコードを用いて、データ複製の該第2のタイプに従って、該ソースデータベースシステムの該テーブルのデータ変更を該ターゲットデータベースシステムの該テーブル内に複製した後にリセットされることができる。場合によっては、該カウンタが該カウンタのオーバーフローに近い状態にありうることを判定することにより、該カウンタの該オーバーフローを防止することが可能になりうる。
【0053】
幾つかの実施態様において、データ複製の該第2のタイプは、該第1のメモリデバイス及び第2のメモリデバイス上に記憶されているデータ変更の全てのレコードを一緒にロードすること、及びデータ変更の該ロードされた全てのレコードに従って、該ソースデータベースシステムの該テーブルの複数の行の複数のデータ変更を該ターゲットデータベースシステムの該テーブル内に複製することを含みうる。該第1のメモリデバイス及び第2のメモリデバイス上に記憶されているデータ変更の全てのレコードを一緒にロードすることにより、該第1のメモリデバイス及び該第2のメモリデバイス上に記憶されている該複数のログファイルの該ログ番号の再計算を行う必要が避けられうる。該第1のメモリデバイス及び該第2のメモリデバイス上に記憶されているデータ変更の全てのレコードをロードした後に、これらのレコードは該第1のメモリデバイス及び該第2のメモリデバイスから削除されうる。
【0054】
本発明の実施態様は、コンピュータシステム、クライアント、サーバ等としてまた云われうるコンピューティングデバイスを使用して実施されうる。ここで図1を参照すると、コンピュータシステム10の一例の概略図が示されている。コンピュータシステム10は、好適なコンピュータシステムの一例のみを提供し、本明細書において記載された本発明の実施態様の使用範囲若しくは機能性又はそれらの組み合わせに関する何らの制限をも示唆することが意図されていない。それにもかかわらず、コンピュータシステム10は、本明細書において記載された機能のいずれかを実装若しくは実行又は実装且つ実行することが可能である。
【0055】
コンピュータシステム10は、多数の他の汎用用途又は特殊用途のコンピューティングシステム環境若しくは構成又はそれらの組み合わせで動作可能でありうる第1のコンピュータシステム/サーバ12を備えていてもよい。第1のコンピュータシステム/サーバ12と共に使用する為に適した周知のコンピューティングシステム、環境若しくは構成又はそれらの組み合わせの例は、コンピュータシステム10の第1のメモリ411(例えば、図4に示されている)、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、上記されたシステム又はデバイスのいずれかを備えている分散型コンピューティング環境、等を包含するが、これらに限定されるものでない。
【0056】
第1のコンピュータシステム/サーバ12は、コンピュータシステム実行可能命令、例えばプログラムモジュール、がコンピュータシステムによって実行される一般的な文脈において記載されうる。一般的に、プログラムモジュールは、特定のタスクを実行する又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造、等を包含しうる。一例として、第1のコンピュータシステム/サーバ12は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行されるところの分散型コンピューティング環境において実施されうる。分散型コンピューティング環境において、プログラムモジュールは、ローカル及びリモートのコンピュータシステムストレージ媒体、例えば、メモリストレージデバイスを包含する上記のローカル及びリモートのコンピュータシステムストレージ媒体、の両方に配置されうる。
【0057】
図1に示されているように、コンピュータシステム10における第1のコンピュータシステム/サーバ12は、汎用用途のコンピューティングデバイスの形態で示されている。第1のコンピュータシステム/サーバ12の構成要素は、1以上のプロセッサ又は処理ユニット16、システムメモリ28、及び様々なシステム構成要素、例えばシステムメモリ28を包含する上記の様々なシステム構成要素、をプロセッサ16に接続するバス18を包含しうるが、これらに限定されるものでない。バス18は、幾つかのタイプのバス構造、例えば、メモリバス又はメモリコントローラ、周辺バス、加速グラフィックスポート、及び様々なバスアーキテクチャのいずれかを使用するプロセッサ又はローカルバスを包含する上記の幾つかのタイプのバス構造、のいずれかの1以上を表す。限定でなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ電子規格協会(VESA:Video Electronics Standards Association)ローカルバス、及び周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)バスを包含する。
【0058】
第1のコンピュータシステム/サーバ12は典型的には、様々なコンピュータシステム可読媒体を備えている。そのような媒体は、第1のコンピュータシステム/サーバ12によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体と不揮発性媒体の両方、取り外し可能媒体と取り外し不可能媒体の両方を包含する。
【0059】
システムメモリ28は、揮発性メモリ、例えば、ランダムアクセスメモリ(RAM:random access memory)30若しくはキャッシュメモリ32又はそれらの組み合わせ、の形態におけるコンピュータシステム可読媒体を備えていることができる。第1のコンピュータシステム/サーバ12は、他の取り外し可能/取り外し不可能な、揮発性/不揮発性コンピュータシステムストレージ媒体を更に備えていてもよい。例示に過ぎないが、ストレージシステム34は、取り外し不可能な不揮発性の磁気媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)から読み取り且つそれに書き込む為に提供されることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、フロッピーディスク)から読み取り且つそれに書き込む為の磁気ディスクドライブ、及び取り外し可能な不揮発性光学ディスク、例えば、CD-ROM、DVD-ROM又は他の光学媒体、から読み取り且つそれに書き込む為の光ディスクドライブが提供されることが可能である。そのような場合、各々は、1以上のデータ媒体インタフェースによってバス18に接続されることができる。以下で更に描写及び記載されているように、メモリ28は、本発明の実施態様の機能を実行するように構成されたプログラムモジュールの1組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を備えていてもよい。
【0060】
プログラムモジュール50の1組(少なくとも1つ)を有するプログラム/ユーティリティ40は、オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータと同様に、例示であって限定でない方法でメモリ28内に記憶されうる。オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータ、又はそれらの幾つかの組み合わせの各々は、ネットワーク環境の実装を備えていてもよい。プログラムモジュール50は一般的に、本明細書において記載された本発明の実施態様の機能若しくは方法論又はそれらの組み合わせを実行するように構成されていてもよい。
【0061】
本明細書において使用される場合に、語「プログラム」又は「プログラムモジュール」は、プロセッサ16がコマンドを読み取りうるときに、プロセッサ16によって実行されるアクションを引き起こす為のコマンドを含みうる命令の1組を云う。該命令の1組は、コンピュータ可読プログラム、ルーチン、サブルーチン、又はライブラリの一部の形態であってもよく、プロセッサ16によって実行されてもよく、若しくはプロセッサ16によって実行されている更なるプログラムによって呼び出されてもよく、又はプロセッサ16によって実行され且つプロセッサ16によって実行されている更なるプログラムによって呼び出されてもよい。好ましくは、プログラムモジュール50は、第1のコンピュータシステム/サーバ12のハードウェアプラットフォームのタイプに従ってコンパイルされる実行可能なプログラムであってもよい。
【0062】
第1のコンピュータシステム/サーバ12はまた、1以上の外部デバイス14、例えば、キーボード、ポインティングデバイス、ディスプレイ24等;ユーザが第1のコンピュータシステム/サーバ12と対話することを可能にする1以上のデバイス;若しくは、第1のコンピュータシステム/サーバ12が1以上の他のコンピュータデバイスと通信することを可能にする任意のデバイス(例えば、ネットワークカード、モデム等);又は、それらの組み合わせ、と通信しうる。そのような通信は、1以上の入力/出力(I/O)インタフェース22を介して生じることができる。加えて、第1のコンピュータシステム/サーバ12は、ネットワークアダプタ20を介して、1以上のネットワーク、例えば、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)若しくはパブリックネットワーク(例えば、インターネット)又はそれらの組み合わせのネットワーク、と通信しうる。図示されているように、ネットワークアダプタ20は、バス18を介して第1のコンピュータシステム/サーバ12の他の構成要素と通信しうる。図示されていないが、他のハードウェア若しくはソフトウェアコンポーネント又はそれらの組み合わせが、第1のコンピュータシステム/サーバ12と共に使用されることができることが理解されるべきである。例は、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイバルストレージシステム等を包含するが、これらに限定されるものでない。
【0063】
一例として、第1のコンピュータシステム/サーバ12は、図4において示されているソースデータベースシステム、例えばソースデータベースシステム401、の形態で設計されてもよい。ソースデータベースシステム401は、図4及び図5に示されているように、ソーステーブル410を備えていてもよい。ソーステーブル410は、例えば、図5においてボックスとして示されているデータフィールドを備えていてもよい。該データフィールドは各々、エントリ、例えば数値若しくは文字列又はそれらの組み合わせ、を含んでいてもよい。ソーステーブル410の各データフィールドには、ソーステーブル410の特定の行番号と、ソーステーブル410の特定の列番号とが割り当てられていてもよい。ソーステーブル410の特定の行番号は、図5において示されている第1の矢印501の方向に増加してもよい。ソーステーブル410の特定の列番号は、図5において示されている第2の矢印502の方向に増加してもよい。各データフィールドの行番号及び列番号は、夫々のデータフィールドのデータ変更を実行する為に使用されてもよい。加えて、ソーステーブル410の選択された行番号及びソーステーブル410の複数の異なる選択された列番号は、該選択された行番号によって特定される単一の行の異なるデータフィールドの複数のデータ変更を実行する為に使用されてもよい。一例として、ソーステーブル410は、第1のコンピュータシステム/サーバ12のストレージシステム34内に記憶されてもよい。
【0064】
コンピュータシステム10は、第2のコンピュータシステム/サーバ、例えば、図2において示されているコンピュータシステム/サーバ212を備えていてもよく、それは、多数の他の汎用用途又は特殊用途のコンピューティングシステム環境若しくは構成又はそれらの組み合わせで動作可能であってもよい。第2のコンピュータシステム/サーバ212と共に使用する為に適した周知のコンピューティングシステム、環境若しくは構成又はそれらの組み合わせの例は、第1のメモリ411、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンシステム、メインフレームコンピュータシステム、上記されたシステム又はデバイスのいずれかを備えている分散型コンピューティング環境、等を包含するが、これらに限定されるものでない。
【0065】
第2のコンピュータシステム/サーバ212は、コンピュータシステム実行可能命令、例えばプログラムモジュール、がコンピュータシステムによって実行される一般的な文脈において説明されうる。一般的に、プログラムモジュールは、特定のタスクを実行する又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造、等を包含しうる。第2のコンピュータシステム/サーバ212は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行されるところの分散型コンピューティング環境において実施されうる。分散型コンピューティング環境において、プログラムモジュールは、ローカル及びリモートのコンピュータシステムストレージ媒体、例えば、メモリストレージデバイスを包含する上記のローカル及びリモートのコンピュータシステムストレージ媒体、の両方に配置されうる。
【0066】
図2に示されているように、コンピュータシステム10における第2のコンピュータシステム/サーバ212は、汎用用途のコンピューティングデバイスの形態で示されている。第2のコンピュータシステム/サーバ212の構成要素は、1以上のプロセッサ又は処理ユニット216、システムメモリ228、及び様々なシステム構成要素、例えばシステムメモリ228、を包含する上記の様々なシステム構成要素、をプロセッサ216に接続するバス218を包含しうるが、これらに限定されるものでない。バス218は、幾つかのタイプのバス構造、例えば、メモリバス又はメモリコントローラ、周辺バス、加速グラフィックスポート、及び様々なバスアーキテクチャのいずれかを使用するプロセッサ又はローカルバスを包含する上記の幾つかのタイプのバス構造、のいずれかの1以上を表す。限定でなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子規格協会(VESA)ローカルバス、及び周辺コンポーネント相互接続(PCI)バスを包含する。
【0067】
第2のコンピュータシステム/サーバ212は典型的には、様々なコンピュータシステム可読媒体を備えている。そのような媒体は、第2のコンピュータシステム/サーバ212によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体と不揮発性媒体の両方、取り外し可能媒体と取り外し不可能媒体の両方を包含する。
【0068】
システムメモリ228は、揮発性メモリ、例えば、ランダムアクセスメモリ(RAM)230若しくはキャッシュメモリ232又はそれらの組み合わせ、の形態におけるコンピュータシステム可読媒体を備えていることができる。第2のコンピュータシステム/サーバ212は、他の取り外し可能/取り外し不可能な、揮発性/不揮発性コンピュータシステムストレージ媒体を更に備えていてもよい。例示に過ぎないが、ストレージシステム234は、取り外し不可能な不揮発性の磁気媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)から読み取り且つそれに書き込む為に提供されることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、フロッピーディスク)から読み取り且つそれに書き込む為の磁気ディスクドライブ、及び取り外し可能な不揮発性の光学ディスク、例えば、CD-ROM、DVD-ROM又は他の光学媒体、から読み取り且つそれに書き込む為の光ディスクドライブが提供されることが可能である。そのような場合、各々は、1以上のデータ媒体インタフェースによってバス218に接続されることができる。以下で更に描写及び記載されているように、メモリ228は、本発明の実施態様の機能を実行するように構成されたプログラムモジュールの1組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を備えていてもよい。
【0069】
プログラムモジュール250の1組(少なくとも1つ)を有するプログラム/ユーティリティ240は、オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータと同様に、例示であって限定でない方法でメモリ228内に記憶されうる。オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータ、又はそれらの幾つかの組み合わせの各々は、ネットワーキング環境の実装を備えていてもよい。プログラムモジュール250は一般的に、本明細書において記載された本発明の実施態様の機能若しくは方法論又はそれらの組み合わせを実行するように構成されていてもよい。
【0070】
本明細書において使用される場合に、語「プログラム」又は「プログラムモジュール」は、プロセッサ216がコマンドを読み取りうるときに、プロセッサ216によって実行されるアクションを引き起こす為のコマンドを含みうる命令の1組を云う。該命令の1組は、コンピュータ可読プログラム、ルーチン、サブルーチン、又はライブラリの一部の形態であってもよく、プロセッサ216によって実行されてもよく、若しくはプロセッサ216によって実行されている更なるプログラムによって呼び出されてもよく、又はプロセッサ216によって実行され且つプロセッサ216によって実行されている更なるプログラムによって呼び出されてもよい。好ましくは、プログラムモジュール250は、第2のコンピュータシステム/サーバ212のハードウェアプラットフォームのタイプに従ってコンパイルされる実行可能なプログラムであってもよい。
【0071】
第2のコンピュータシステム/サーバ212はまた、1以上の外部デバイス214、例えば、キーボード、ポインティングデバイス、ディスプレイ224等;ユーザが第2のコンピュータシステム/サーバ212と対話することを可能にする1以上のデバイス;若しくは、第2のコンピュータシステム/サーバ212が1以上の他のコンピュータデバイスと通信することを可能にする任意のデバイス(例えば、ネットワークカード、モデム等);又は、それらの組み合わせ、と通信しうる。そのような通信は、1以上の入力/出力(I/O)インタフェース222を介して生じることができる。加えて、第2のコンピュータシステム/サーバ212は、ネットワークアダプタ220を介して、1以上のネットワーク、例えば、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)若しくはパブリックネットワーク(例えば、インターネット)又はそれらの組み合わせのネットワーク、と通信しうる。図示されているように、ネットワークアダプタ220は、バス218を介して第2のコンピュータシステム/サーバ212の他の構成要素と通信しうる。図示されていないが、他のハードウェア若しくはソフトウェアコンポーネント又はそれらの組み合わせが、第2のコンピュータシステム/サーバ212と共に使用されることができることが理解されるべきである。例は、マイクロコード、デバイスドライバ、冗長処理デバイス、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイバルストレージシステム等を包含するが、これらに限定されるものでない。
【0072】
一例として、第2のコンピュータシステム/サーバ212は、図4において示されているターゲットデータベースシステム、例えばターゲットデータベースシステム402、の形態で設計されてもよい。ターゲットデータベースシステム402は、図4及び図6に示されているように、ターゲットテーブル420を備えていてもよい。ターゲットテーブル420には、データフィールドを備えていてもよい。ターゲットテーブル420のデータフィールドは各々、エントリ、例えば数値若しくは文字列又はそれらの組み合わせ、を含んでいてもよい。ターゲットテーブル420の各データフィールドには、ターゲットテーブル420の特定の行番号と、ターゲットテーブル420の特定の列番号とが割り当てられていてもよい。ターゲットテーブル420の特定の行番号は、図6において示されている第1の矢印601の方向に増加してもよい。ターゲットテーブル420の特定の列番号は、図6に示されている第2の矢印602の方向に増加してもよい。各データフィールドの行番号及び列番号は、夫々のデータフィールドのデータ変更を実行する為に使用されてもよい。加えて、ターゲットテーブル420の選択された行番号及びターゲットテーブル420の複数の異なる選択された列番号は、該選択された行番号によって特定される単一の行の異なるデータフィールドの複数のデータ変更を実行する為に使用されてもよい。一例として、ターゲットテーブル420は、第2のコンピュータシステム/サーバ212のストレージシステム234内に記憶されてもよい。
【0073】
幾つかの実施態様において、本明細書において開示された動作、例えば、下記の少なくとも第1の動作、第2の動作、第3の動作、第4の動作、第5の動作、第6の動作、第7の動作、及び第8の動作、を実行する為に、コンピュータシステム、例えば、図1若しくは図2又は図1及び図2において示されているコンピュータシステム10、が使用されうる。
【0074】
幾つかの実施態様において、コンピュータシステム10は、ソーステーブル410のデータ変更をターゲットテーブル420内に複製するように構成されうる。
【0075】
幾つかの実施態様において、第1の動作は、ソーステーブル410のデータ変更を実行しながら複数のログファイルを繰り返し生成することを含みうる。一例として、生成されたログファイルの1組430が図7において示されている。プロセッサ16は、ソーステーブル410が記憶されうるストレージシステム34上で書き込みを開始することによって、ソーステーブル410の各データ変更を実行してもよい。各ログファイル430iは、ソーステーブル410のデータ変更の少なくとも1つのレコードを含みうる。該第1の動作は、ソースデータベースシステム401の手段、例えばプロセッサ16の手段、によって実行されうる。
【0076】
幾つかの実施態様において、プロセッサ16は、ソーステーブル410の新しいデータ変更を実行してもよく、及び、ソーステーブル410の該新しいデータ変更をターゲットテーブル420内に複製する為に、必要な情報、例えば上述された必要な情報、を含むデータ変更の新しいレコード440nを生成しうる。従って、新しいデータ変更毎に、データ変更の新しいレコード440nが生成されうる。加えて、複数のログファイルが、データ変更を実行しながら繰り返し生成されうる。幾つかの実施態様において、プロセッサ16はまた、図面において示されていない更なるソーステーブルの更なるデータ変更を実行しうる。その上、プロセッサ16は、更なるソーステーブルの更なるデータ変更を複製する為に必要な情報を含むデータ変更の更なるレコードを生成しうる。該更なるレコードは、図示されていない更なるログファイル若しくは複数のログファイル430又はそれらの組み合わせのログファイル内に書き込まれてもよい。従って、幾つかの実施態様において、複数のログファイル430は、図示されていないデータ変更の更なるレコードのうちの1以上を含むことができる。幾つかの実施態様において、該更なるログファイルのうちの1以上が、複数のログファイル430間において記憶されうる。
【0077】
幾つかの実施態様において、新しいレコード440nは、新しいデータ変更を複製する為に必要な情報を実際のログファイル430m内に書き込むことによって生成されうる。更なる新しいデータ変更の各々について、データ変更の更なる新しいレコードが、新しいレコード440nと同じ方法で生成されうる。このように、幾つかの新しいデータ変更の場合に、データ変更の幾つかの新しいレコードが生成されうる。図8は、ソースデータベースシステム401が生成した可能性がある、データ変更の生成されたレコード440の1組を示す。データ変更の各レコード440iは、データ変更の夫々のレコード440iに対応するソーステーブル410のデータ変更を複製する為に、必要な情報、例えば上述された必要な情報、を含みうる。例えば、ソースデータベースシステム401は、データ変更の最初のレコード4401を生成し、その後にデータ変更の第2のレコード4402を生成しうる。生成された最後のレコードは、新しいレコード440nでありうる。
【0078】
幾つかの実施態様において、第2の動作は、第1のメモリデバイス411上に複数のログファイル430を記憶することを含みうる。幾つかの実施態様において、ログファイル430を記憶することは例えば、更なるプロセッサ450によって実行されうる。ソースデータベース401は、(I/O)インタフェース22を介して、又はネットワークアダプタ20を介して、第1のメモリデバイス若しくは更なるプロセッサ450又はそれらの組み合わせに接続されうる。第1のメモリデバイス411は、第1のアクセス時間を含んでいてもよく、又は第1のアクセス時間を提供してもよい。一例として、第1のアクセス時間は、35~100マイクロ秒の範囲内でありうる。図4は、実際のログファイル430mを含む複数のログファイル430iの各々が、第1のメモリデバイス411上で直接生成されうる例を示す。幾つかの実施態様において、これは、例えば、ソースデータベースシステム401からコンピュータシステム10の更なるプロセッサ450に書き込みコマンドを送信することによって実行されうる。
【0079】
しかしながら、幾つかの実施態様において、ログファイル430iは、ソースデータベースシステム401内に内部的に書き込まれ、そして、ソースデータベースシステム401から第1のメモリデバイス411に送信されうる。新しいレコード440nをソースデータベースシステム401の内部に記憶されること無しに、新しいレコード440nを第1のメモリデバイス411上に直接的に書き込むことは、ターゲットデータベースシステム402が新しいレコード440nをできるだけ早く読み取りうるという利点を提供しうる。複数のログファイル430iは、該複数のログファイル430iの書き込み後に若しくは書き込み中に又はそれらの組み合わせにおいて、第1のメモリデバイス411上に記憶されうる。場合によっては、実際のログファイル430mのサイズが所与のログファイルのサイズ閾値を超える場合に、更なるプロセッサ450は、実際のログファイル430mをロックし、そして、新しい実際のログファイル(図4には示されていない)を生成してもよい。実際のログファイル430mがロックされる場合、プロセッサ16は、実際のログファイル430mにおけるデータ変更の更なる新しいレコードのうちの1つを書き込むことがもはやできない場合がある。その代わりに、プロセッサ16は、新たな実際のログファイル内に該更なる新しいレコードのうちの1つを書き込みうる。
【0080】
幾つかの実施態様において、第3の動作は、第1のメモリデバイス411上に記憶されている複数のログファイル430の一部を第2のメモリデバイス412上にアーカイブすることを含みうる。第2のメモリデバイス412は、第2のアクセス時間を含んでいてもよく、又は第2のアクセス時間を提供してもよい。該第2のアクセス時間は、第1のアクセス時間よりも長くてもよく、例えば、該第2のアクセス時間は、該第1のアクセス時間よりも約100倍~200倍長くてもよい。幾つかの実施態様において、更なるプロセッサ450は、第3の動作を実行しうる。更なるプロセッサ450は、第1のメモリデバイス411から複数のログファイルの一部をロードしてもよく、そして、第2のメモリデバイス412上にそれをアーカイブしてもよい。加えて、更なるプロセッサ450は、第1のメモリデバイス411上の複数のログファイル430のアーカイブされた部分を削除してもよい。このように、第1のメモリデバイス411上のスペースは、実際のログファイル430mにおける更なる新しいレコードを書き込むことを可能にする為に、若しくは新しい実際のログファイルを生成する為に、又はそれらの組み合わせを実行する為に生成されうる。
【0081】
幾つかの実施態様において、更なるプロセッサ450、第1のメモリデバイス411、及び第2のメモリデバイス412は、複製エンジンと見なされうる。
【0082】
幾つかの実施態様において、第4の動作において、コンピュータシステム10は、データ複製の該第1のタイプを実行することを提供してもよく、例えば、プロセッサ216を介して該第4の動作が実行されうることによって、データ複製の該第1のタイプが実行されうる。データ複製の該第1のタイプは、データ変更の複数のレコードのうちの各1つのレコード440iを個別に繰り返しロードすること、及びデータ変更の個別にロードされた対応するレコード440iに従って、ソーステーブル410の単一の行の夫々のデータ変更をターゲットテーブル420内に複製すること(例えば、増分複製等)を含みうる。例えば、図9において示されているデータ変更の第1のレコード4401は、これらの値によって特定される変更されたデータフィールドのソーステーブル410の行番号の第1の値(この例において「2」)、及び列番号の第1の値(この例において「1」)、及びこのデータフィールドの新しい値(この例において「4812」)を含みうる。データ変更の第2のレコード4402は、これらの値によって特定される変更されたデータフィールドのソーステーブル410の行番号の第2の値(この例において「1」)、及び列番号の第2の値(この例において「2」)、及びこのデータフィールドの新しい値(この例において「9001」)を含みうる。
【0083】
各レコード440iは、夫々のレコード440iのレコード番号を含むレコード番号フィールド441iを含み、それは、夫々のレコード440iの生成の夫々の瞬間において書き込まれているソーステーブル410のデータ変更のレコードの総数を示しうる。
【0084】
データ複製の第1のタイプに従うと、ターゲットデータベースシステム402は、第1のメモリデバイス411又は第2のメモリデバイス412から第1のレコード4401をロードし、そして、第1のレコード4401に従ってソーステーブル410の第2の行のデータ変更をターゲットテーブル420内で複製しうる。一例として、プロセッサ216は、行番号「2」及び列番号「1」によって特定されるターゲットテーブル420のデータフィールドの値を4812に等しく設定することを提供しうる。その上、データ複製の該第1のタイプに従うと、第1のレコード4401に従ってターゲットテーブル420におけるデータ変更の複製を実行した後に、ターゲットデータベースシステム402は、第1のメモリデバイス411又は第2のメモリデバイス412から第2のレコード4402をロードし、そして、第2のレコード4402に従ってターゲットテーブル420におけるソーステーブル410の第1の行のデータ変更を複製しうる。例えば、プロセッサ216は、行番号「1」及び列番号「2」によって特定されるターゲットテーブル420のデータフィールドの値を9001に等しく設定することを提供しうる。従って、幾つかの実施態様において、第1のレコード4401及び第2のレコード4402のうちの1つが第1のメモリデバイス411又は第2のメモリデバイス412からロードされるたびに、更なるプロセッサ450が第1のメモリデバイス411又は第2のメモリデバイス412にアクセスしてもよい。例えば、この場合、第1のレコード4401と第2のレコード4402をロードする為に、第1のメモリデバイス411又は第2のメモリデバイス412が2回アクセスされてもよく、又は第1のメモリデバイス411と第2のメモリデバイス412が各々1回アクセスされてもよい。
【0085】
幾つかの実施態様において、第5の動作において、コンピュータシステム10は、データ複製の該第2のタイプを実行することを提供してもよく、例えば、プロセッサ216を介して該第5の動作が実行されうることによって、データ複製の該第2のタイプが実行されうる。データ複製の該第2のタイプは、ターゲットテーブル420の複数の行を一緒に更新する為の情報をロードすること(例えば、バルク複製等)を含みうる。幾つかの実施態様において、この情報は、データ変更の複数のレコード440iのうちの幾つかのレコード、例えば、複数のレコード440iのうちの2つ、複数のレコード440iのうちの100個、レコード440の全て、等によって提示されうる。このように、データ変更の複数のレコード440iのうちの幾つかのレコードは、第1のメモリデバイス411又は第2のメモリデバイス412から一緒にロードされうる。その上、ソーステーブル410の複数の行のデータ変更は、データ変更の該ロードされた複数のレコード440iに従ってターゲットテーブル420内に複製されうる。一例として、プロセッサ216は、第1のメモリデバイス411又は第2のメモリデバイス412から第1のレコード4401及び第2のレコード4402を一緒にロードし、そして、第1のレコード4401に従ってターゲットテーブル420において第1のデータ変更を実行し、及び第2のレコード4402に従ってターゲットテーブル420において第2のデータ変更を実行しうる。複数のレコードを一緒にロードすることは、第1のメモリデバイス411又は第2のメモリデバイス412に1回だけアクセスし、第1のメモリデバイス411又は第2のメモリデバイス412の単一のアクセスによって実現されうるところの読み出し位置から開始して複数のレコードを連続的に読み出すことを含みうる。
【0086】
幾つかの実施態様において、データ複製の該第2のタイプの場合に、ターゲットテーブル420の複数の行を更新する為の情報は、ソーステーブル410のデータ値、例えば、該ソーステーブルにおけるデータ値のパーティション又は該ソーステーブルにおける全てのデータ値の形式であってもよい。一例として、ソーステーブル410のデータ値のパーティションは、ソーステーブル410が日付に関して順序付けられる場合に、ある月を代表しうる。該データ値は、ソースデータベースシステム401から、例えばストレージシステム34等から、直接ロードされうる。ソーステーブル410のデータ値は、例えば更なるプロセッサ450等によって、ソースデータベースシステム401からターゲットデータベースシステム402に、複数の次元を有しうる行列の形式で一緒にロードされうる。幾つかの実施態様において、データ変更のレコード440は、データ複製の該第2のタイプにおいて使用されない場合がある。
【0087】
図10は、第1のレコード4401及び第2のレコード4402が第2のメモリデバイス412上に記憶される例示的な実施態様である。第1のメモリデバイス411及び第2のメモリデバイス412上に記憶されている複数のログファイル430の総数はmに等しくてもよい。第1のメモリデバイス411に記憶されている複数のログファイル430の数はlに等しくてもよい。
【0088】
複数のログファイル430のうちm番目のログファイル430mは、第1のメモリデバイス411の最も若いログファイルであってもよく、及び複数のログファイル430のうち(m-l+1)番目のログファイル430m-l+1は、第1のメモリデバイス411の最も古いログファイルであってもよい。第2のメモリデバイス412上に記憶されている複数のログファイル430の数は、m-lに等しくてもよい。複数のログファイル430のうち(m-l)番目のログファイル430m-lは、第2のメモリデバイス412の最も若いログファイルであってもよい。複数のログファイル430のうち1番目のログファイル4301は、第2のメモリデバイス412の最も古いログファイルであってもよい。複数のログファイル430のレコードは、図10においてボックスとして示されている。
【0089】
幾つかの実施態様において、第6の動作は、第2のペンディング中のデータ変更の第2の数を追跡することを含みうる。第6の動作は、更なるプロセッサ450等によって実行されうる。第2のペンディング中のデータ変更は、ターゲットテーブル420内にまだ複製されていない、第2のメモリデバイス412上にアーカイブされている複数のログファイル430のデータ変更のレコード440i(第2のペンディング中のレコードと云われる)のデータ変更である。該第2の数を追跡することは、第2のペンディング中のレコードの数を計算することによって実行されうる。幾つかの実施態様において、第1のメモリデバイス411又は第2のメモリデバイス412から読み出され、そして、ターゲットテーブル420におけるデータ変更の複製の為に使用されているデータ変更の最後のレコード(例えば、データ変更の最後のレコードと云われる)のレコード番号が追跡されうる。例えば、データ変更の該最後のレコードが第2のレコード4402である場合、データ変更の該最後のレコードの該レコード番号は、「2」に等しくてもよい。データ変更の該最後のレコードの該レコード番号は、第2のレコード4402の第2のレコード番号フィールド4412の値を読み取ることによって追跡されうる。幾つかの実施態様において、該第2の数は、第2のメモリデバイス412の最も若いログファイル430m-lの最も若いレコードのレコード番号からデータ変更の該最後のレコードの該レコード番号を減算することによって計算されうる。幾つかの実施態様において、該第2の数は、データ変更の該最後のレコードから第2のメモリデバイス412の該複数のログファイル上に記憶されているレコードを数えることによって決定されうる。
【0090】
幾つかの実施態様において、第7の動作は、該第2の数に基づいて、データ複製の該第1のタイプ及びデータ複製の該第2のタイプからデータ複製のタイプを選択することを含みうる。例えば、該第2の数が第2の閾値よりも大きい場合に、データ複製の該第2のタイプが、例えばプロセッサ216等によって選択されうる。そうでなければ、データ複製の該第1のタイプが選択されうる(例えば、第2の数が第2の閾値よりも大きくない場合)。該第7の動作は、更なるプロセッサ450、プロセッサ216等によって実行されうる。
【0091】
幾つかの実施態様において、第1のペンディング中のデータ変更の第1の数が追跡されうる。該第1のペンディング中のデータ変更は、ターゲットテーブル420内にまだ複製されていない、第1のメモリデバイス411上に記憶された複数のログファイル430のデータ変更の複数のレコード440iのデータ変更でありうる。幾つかの実施態様において、該第1の数及び該第2の数が追跡される場合、該選択することは、該第1の数及び該第2の数に基づいて行われてもよい。幾つかの実施態様において、該第1の数は、データ変更の該最後のレコードのレコード番号から、第1のメモリデバイス411の最も若いログファイル430mの最も若いレコードまで、第1のメモリデバイス411上に記憶されたレコードを数えることによって決定されうる。このことは、データ変更の該最後のレコードが第1のメモリデバイス411から読み取られた場合でありうる。
【0092】
幾つかの実施態様において、データ複製の該タイプを選択することは、第1の数の重み付けと第2の数の重み付けとを実行することを含みうる。例えば、第1の数の重み付けは、第1のアクセス時間(例えば、access_time1)に基づいてもよく、及び第2の数の重み付けは、第2のアクセス時間(例えば、access_time2)に基づいてもよい。
【0093】
一例として、第1の数n1と第2の数n2との重み付き和Sは、下記の式に従って計算されうる:
【数1】
【0094】
幾つかの実施態様において、データ複製の該タイプを選択することは、重み付き和Sが第4の閾値よりも小さい場合に、データ複製の該第1のタイプが選択されるように実行されてもよく、又は重み付き和Sが第4の閾値以上である場合に、データ複製の該第2のタイプが選択されるように実行されてもよい。幾つかの実施態様において、一例として、該第4の閾値は、データ複製の第2のタイプに従ってターゲットテーブル420の全ての行の更新を実行する為の概算時間を表しうる。別の例において、幾つかの実施態様において、該第4の閾値は、デッドロック状況に達したときに、又はデッドロック状況に近い状況に達したときに、過去の経験に基づいて決定されうる。例えば、該第4の閾値は、上述された式に従って、更なる重み付き和を計算することによって決定されてもよいが、該第1の数n1と該第2の数n2を使用する代わりに、デッドロック状況又はデッドロック状況に近い状況に達した瞬間に、該第1のペンディング中及び該第2のペンディング中のデータ変更の更なる数を用いて決定されてもよい。幾つかの実施態様において、次に、該第4の閾値は、デッドロック状況を防止する為に、更なる重み付き和に0.1~0.9の値を乗じることによって決定されうる。
【0095】
幾つかの実施態様において、第8の動作は、複数のログファイル430のデータ変更の複数のレコード440iを使用して、データ複製の選択されたタイプに従って、ソーステーブル410のデータ変更をターゲットテーブル420内に複製することを含みうる。該第8の動作は、プロセッサ216等によって実行されうる。
【0096】
幾つかの実施態様において、コンピュータシステム10は、ローカルインタフェースを介して処理されるデータを受け取りうる、ネットワーク接続性を有しないスタンドアロンコンピュータであってもよい。しかしながら、そのような動作は、同様に、ネットワーク、例えば、通信ネットワーク若しくはコンピューティングネットワーク又はそれらの組み合わせ、に接続されているコンピュータシステムを使用して実行されうる。
【0097】
図3は例示的なコンピューティング環境を示し、該コンピューティング環境は、コンピュータシステム、例えばコンピュータシステム10、が、例えばネットワークアダプタ20を使用して、ネットワーク200に接続されている。限定されないが、ネットワーク200は、通信ネットワーク、例えば、インターネット若しくは他の公共ネットワーク、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、無線ネットワーク(例えば、モバイル通信ネットワーク)等、でありうる。ネットワーク200は、コンピューティングネットワーク、例えばクラウドコンピューティングネットワーク、を包含しうる。コンピュータシステム10は、ネットワーク200から処理されるべきデータを受信してもよく、若しくはネットワーク200を介してコンピュータシステム10に接続された別のコンピューティングデバイスにコンピューティング結果を提供してもよく、又はそれらの組み合わせを実行してもよい。
【0098】
幾つかの実施態様において、コンピュータシステム10は、ネットワーク200を介して受信された要求に応答して、本明細書において記載された動作、例えば、第1の動作、第2の動作、第3の動作、第4の動作、第5の動作、第6の動作、第7の動作、及び第8の動作、を、全部又は一部で実行しうる。特に、コンピュータシステム10は、ネットワーク200を介してコンピュータシステム10に接続されうる1以上の更なるコンピュータシステムと共に、分散型計算方式(distributed computation)でそのような動作を実行しうる。その為に、コンピュータシステム10若しくは任意の更なる関与するコンピュータシステムは、ネットワーク200を使用して、更なる計算資源、例えば、専用メモリ又は共有メモリ、にアクセスしうる。
【0099】
図11は、コンピュータシステム10の例を示し、ここで、各ログファイル430iは、図11に円の形で示されているように、夫々のログ番号431iを含みうる。幾つかの実施態様において、夫々のログ番号431iは、夫々のログファイル430iの生成が開始される夫々の瞬間までに生成されたソーステーブル410のデータ変更のレコードの総数を示しうる。夫々のログ番号431iは、夫々のログファイル430iに夫々のヘッダーラインの形式で含まれうる。以下の例において、第1のメモリデバイス411上に記憶された2つのログファイル、すなわち、第1のログファイル4301及び第2のログファイル4302、があり、及び、2つのログファイル、すなわち、第3のログファイル4303及び第4のログファイル430m、が、第2のメモリデバイス412上に記憶されていると仮定しうる。従って、この例に従うと、mは「4」に等しく、lは「2」に等しい。第1のログファイル4301のログ番号4311は「10」に等しくてもよく、及び第2のログファイル4302のログ番号4312は「32」に等しくてもよく、第3のログファイル4303のログ番号4313(例えば、431m-l+1)は「42」に等しくてもよく、第4のログファイル4304のログ番号4314(例えば、431m)は「112」に等しくてもよい。第4のログファイル4304は、この例において実際のログファイル430mであってもよい。
【0100】
該第1の数は、第1のメモリデバイス411の最も若いログファイル430mに割り当てられたログ番号、すなわち、ここではログ番号431mと、第1のメモリデバイス411の最も古いログファイル430m-l+1に割り当てられたログ番号431m-l+1との差を計算することによって決定されてもよい。該第1の数は、データ変更の最後のレコードが第2のメモリデバイス412上に記憶されている場合に、そのような様式で決定されてもよい。
【0101】
幾つかの実施態様において、該第1の数は、実際の瞬間におけるソーステーブル410のデータ変更の実際の総数と、第1のメモリデバイス411の最も古いログファイル430m-l+1のログ番号431m-l+1との差を計算することによって決定されうる。幾つかの実施態様において、ソースデータベースシステム401は、ソーステーブル410のデータ変更の実際の総数をカウントする為のカウンタを備えており、及びデータ変更の実際の総数を更なるプロセッサ450、ターゲットデータベースシステム402等に送信しうる。
【0102】
その上、幾つかの実施態様において、ログ番号431iを用いて、該第2の数は、第1のメモリデバイス411の最も古いログファイル430m-l+1のログ番号431m-l+1とデータ変更の最後のレコードの該レコード番号との差として決定されうる。この場合、データ変更の該最後のレコードは、第2のメモリデバイス412上にアーカイブされている複数のログファイル430のうちの1つ内に記憶されうる。
【0103】
加えて、幾つかの実施態様において、ログ番号431iを用いて、第1のメモリデバイス411の最も若いログファイル430mのログ番号431mとデータ変更の最後のレコードのレコード番号との差として該第1の数が計算されうる。この場合、データ変更の該最後のレコードは、第1のメモリデバイス411上に記憶されている複数のログファイル430の複数のレコード440iのうちの1つでありうる。
【0104】
図12は、本発明の実施態様に従う、ソーステーブル410のデータ変更をターゲットテーブル420内に複製する為の、コンピュータに実装された方法のフローチャート図を示す。
【0105】
工程1201において、ソースデータベースシステム401のテーブル410の該データ変更を実行しながら、複数のログファイル430iが繰り返し生成される。ここで、各ログファイルは、ソースデータベースシステム401のテーブル410の該データ変更の少なくとも1つのレコードを含む。
【0106】
工程1202において、複数のログファイル430iが、第1のメモリデバイス411上に記憶される。ここで、第1のメモリデバイス411は、第1のアクセス時間を有する。
【0107】
工程1203において、第1のメモリデバイス411上に記憶されている複数のログファイル430iの一部が第2のメモリデバイス412上にアーカイブされる。ここで、第2のメモリデバイス412は第2のアクセス時間を有し、該第2のアクセス時間は該第1のアクセス時間よりも長い。
【0108】
工程1204において、データ複製の第1のタイプが提供されうる。
【0109】
工程1205において、データ複製の第2のタイプが提供されうる。
【0110】
工程1206において、第2のペンディング中のデータ変更の数を示す第2の数が追跡されうる。
【0111】
工程1207において、データ複製のタイプが、該第2の数若しくは該第1の数又はそれらの組み合わせに依存して、データ複製の該第1のタイプ及びデータ複製の該第2のタイプから選択されうる。
【0112】
工程1208において、ソースデータベースシステム401のソーステーブル410のデータ変更が、複数のログファイル430iのデータ変更の複数のレコード440iを使用して、データ複製の該選択されたタイプに従って該ターゲットデータベースシステム402のターゲットテーブル420内に複製されうる。
【0113】
本発明は、統合の在りうる任意の技術的詳細レベルでの、システム、方法若しくはコンピュータプログラム製品又はそれらの組み合わせでありうる。該コンピュータプログラム製品は、プロセッサに本発明の観点を実行させる為のコンピュータ可読プログラム命令を有する1以上のコンピュータ可読記憶媒体を包含しうる。
【0114】
該コンピュータ可読記憶媒体は、命令実行デバイスによって使用する為の命令を保持且つ記憶することができる有形のデバイスであることができる。該コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又はこれらの任意の適切な組み合わせでありうるが、これらに限定されない。該コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、下記を包含する:ポータブルのコンピュータディスケット(登録商標)、ハードディスク、ランダムアクセスメモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read only memory)、消去可能なプログラム可能な読み取り専用メモリ(EPROM(erasable programmable read-only memory)又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ポータブル・コンパクトディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリスティック、フロッピーディスク、機械的に符号化されたデバイス、例えば、パンチカード若しくは命令が記録されている溝内の隆起構造又はこれらの任意の適切な組み合わせ。本明細書において使用される場合、該コンピュータ可読記憶媒体は、一時的な信号それ自体、例えば、電波又は他の自由に伝播する電磁波、導波管若しくは他の伝送媒体を伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又は電線を介して送信される電気信号、であると解釈されるべきでない。
【0115】
本明細書において記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から夫々のコンピューティングデバイス/処理デバイスに、又はネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク若しくはワイヤレスネットワーク又はそれらの組み合わせ、を介して外部コンピュータ又は外部記憶デバイスにダウンロードされることができる。該ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ若しくはエッジサーバ又はこれらの組み合わせで構成されうる。各コンピューティングデバイス/処理デバイスにおけるネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そして、該コンピュータ可読プログラム命令を、個々のコンピューティングデバイス/処理デバイス内にコンピュータ可読記憶媒体中に記憶する為に伝送する。
【0116】
本発明の動作を実行する為のコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の為の構成データ、又は、1以上のプログラミング言語、例えばオブジェクト指向プログラミング言語、例えば、Smalltalk、C++等、慣用的な手続き型プログラミング言語(例えば、「C」プログラミング言語又は同様のプログラミング言語)、の任意の組み合わせで書かれているソースコード又はオブジェクトコードのいずれか、でありうる。該コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に、ユーザのコンピュータ上で部分的に且つリモート・コンピュータ上で部分的に、又はリモート・コンピュータ若しくはサーバ上で全体的に、実行されうる。後者のシナリオにおいて、該リモート・コンピュータは、任意の種類のネットワーク、例えば、ローカルエリアネットワーク(LAN:local area network)若しくはワイドエリアネットワーク(WAN:wide area network)、を介してユーザのコンピュータに接続されうるか、又は該接続は(例えば、インターネットサービスプロバイダを使用したインターネットを通じて)外部コンピュータに対して行われうる。幾つかの実施態様において、電子回路、例えば、プログラム可能な論理回路、フィールドプログラム可能なゲートアレイ(FPGA:field-programmable gate arrays)又はプログラム可能なロジックアレイ(PLA:programmable logic arrays)、は、本発明の観点を実行する為に、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行しうる。
【0117】
本発明の観点は、本発明の実施態様に従う、方法、装置(システム)及びコンピュータプログラム製品若しくはコンピュータプログラムのフローチャート図若しくはブロック図又はそれらの組み合わせを参照して本明細書において記載されている。該フローチャート図若しくは該ブロック図又はそれらの組み合わせの各ブロック、並びに該フローチャート図若しくは該ブロック図又はそれらの組み合わせにおける複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されることができることが理解されるであろう。
【0118】
これらのコンピュータ可読プログラム命令は、該コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が該フローチャート図若しくはブロック図又はそれらの組み合わせの1以上のブロックにおいて特定された機能/動作を実装する為の手段を作成するように、コンピュータのプロセッサ又は他のプログラム可能なデータ処理装置に提供されて、マシンを作り出しうる。記憶された命令を有するコンピュータ可読記憶媒体が該フローチャート図若しくはブロック図又はそれらの組み合わせの1以上のブロックにおいて特定される機能/動作の観点を実装する命令を含む製造品を含むように、これらのコンピュータ可読プログラム命令はまた、コンピュータプログラム可能なデータ処理装置若しくは他のデバイス又はこれらの組み合わせに特定の様式で機能するように指示することができるコンピュータ可読記憶媒体中に記憶されうる。
【0119】
該コンピュータ可読プログラム命令はまた、コンピュータ上、他のプログラム可能なデータ処理装置上又は他のデバイス上で実行される命令が、該フローチャート図若しくはブロック図又はそれらの組み合わせの1以上のブロックにおいて特定される機能/動作を実装するように、上記のコンピュータ上、他のプログラム可能なデータ処理装置上又は他のデバイス上にロードされて、コンピュータ、他のプログラム可能な装置又は他のデバイス上で一連の動作工程を実行させて、コンピュータに実装されたプロセスを生成しうる。
【0120】
図面中のフローチャート図及びブロック図は、本発明の様々な実施態様に従う、システム、方法及びコンピュータプログラム製品若しくはコンピュータプログラムの在りうる実装の、アーキテクチャ、機能及び動作を示す。これに関連して、該フローチャート図又はブロック図における各ブロックは、命令のモジュール、セグメント、又はその一部を表し得、それは、特定された1以上の論理機能を実装する為の1以上の実行可能命令を含む。幾つかの代替の実装において、該ブロックにおいて示されている機能は、図面中に示されている順序とは異なって生じうる。例えば、連続して示されている2つのブロックは、実際には、関与する機能に依存して、同時に、実質的に同時に、部分的又は全体的に時間的に重複する様式で実行される1つの工程として達成されうるか、又は該ブロックは、逆の順序で実行されうる。該ブロック図若しくはフローチャート図又はこれらの組み合わせの各ブロック、並びに該ブロック図若しくはフローチャート図又はこれらの組み合わせの複数のブロックの組み合わせは、特定された機能又は動作を実行する特別な目的のハードウェアベースのシステムによって実装することができ、又は特別な目的のハードウェアとコンピュータ命令との組み合わせを実行することができることに留意されたい。
【0121】
以下において、本明細書において開示された特徴の幾つかの在りうる非排他的な組み合わせを強調する項のリストによって、本発明が再度記載されるであろう。
【0122】
項1:ソースデータベースシステムのテーブルのデータ変更をターゲットデータベースシステムのテーブル内に複製する為のコンピュータに実装された方法であって、該方法は、ソースデータベースシステムのテーブルのデータ変更を実行しながら複数のログファイルを繰り返し生成すること、ここで、各ログファイルは、該ソースデータベースシステムの該テーブルの該データ変更の少なくとも1つのレコードを含む;該複数のログファイルを第1のメモリデバイス上に記憶すること、ここで、該第1のメモリデバイスは、第1のアクセス時間を有する;該第1のメモリデバイス上に記憶されている該複数のログファイルの一部を第2のメモリデバイス上にアーカイブすること、ここで、該第2のメモリデバイスは第2のアクセス時間を有し、該第2のアクセス時間は該第1のアクセス時間よりも長い;データ複製の第1のタイプを提供すること、ここで、データ複製の該第1のタイプは、データ変更の該複数のレコードのうちの1つを個別に繰り返しロードすること、及び、データ変更の個別にロードされた対応するレコードに従って、該ソースデータベースシステムの該テーブルの単一の行の夫々のデータ変更を該ターゲットデータベースシステムの該テーブル内で複製することを含む;データ複製の第2のタイプを提供すること、ここで、データ複製の該第2のタイプは、該ターゲットデータベースシステムの該テーブルの複数の行を一緒に更新する為の情報をロードすること、及び、該情報に基づいて該ターゲットデータベースシステムの該テーブルの複数の行を更新することを含む;第2のペンディング中のデータ変更の第2の数を追跡すること、ここで、該第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、該第2のメモリデバイス上にアーカイブされている該複数のログファイルのデータ変更の該レコードの該データ変更である;該第2の数に依存して、データ複製の該第1のタイプ及びデータ複製の該第2のタイプからデータ複製のタイプを選択すること;並びに、該複数のログファイルのデータ変更の該レコードを用いて、データ複製の該選択されたタイプに従って、該ソースデータベースシステムの該テーブルの該データ変更を該ターゲットデータベースシステムの該テーブル内に複製することを含む。
【0123】
項2:第1のペンディング中のデータ変更の第1の数を追跡することを更に含み、ここで、該第1のペンディング中のデータ変更は、該ターゲットデータベースシステムの該テーブル内にまだ複製されていない、該第1のメモリデバイス上に記憶されている該複数のログファイルのデータ変更の該レコードの該複数のデータ変更であり、並びにここで、該選択することは、該第1の数及び該第2の数に依存する、項1の方法。
【0124】
項3:該ターゲットデータベースシステムの該テーブルの複数の行を一緒に更新する為の情報をロードすることが、データ変更の該レコードの複数の行を一緒にロードすることを含み、ここで、該ターゲットデータベースシステムの該テーブルの複数の行を更新することが、データ変更の該ロードされたレコードに従って該ソースデータベースシステムの該テーブルの複数の行のデータ変更を該ターゲットデータベースシステムの該テーブル内に複製することを含み、ここで、該ソースデータベースシステムの該テーブルの該複数の行の各々は該ターゲットデータベースシステムの該テーブルの該複数のうちの1つに対応する、項1又は2に記載の方法。
【0125】
項4:該ターゲットデータベースシステムの該テーブルの該複数の行を更新する為の該情報をロードすることが、該ソースデータベースシステムの該テーブルの該複数の行のデータ値をロードすることを含む、項1又は2に記載の方法。
【0126】
項5:データ複製の該タイプを選択することが、該第1の数の重み付けと該第2の数の重み付けとを含み、ここで、該第1の数の該重み付けは該第1のアクセス時間に基づき、及び該第2の数の該重み付けは該第2のアクセス時間に基づく、項1~4のいずれか1つに記載の方法。
【0127】
項6:該方法が、該第1の数と該第2の数との比が第3の閾値以上である場合に、データ複製の該第1のタイプを選択すること;及び、該第1の数と該第2の数との比が第3の閾値未満である場合に、データ複製の該第2のタイプを選択することを更に含み、ここで、該比は、該第1の数が該第1のアクセス時間に基づいて重み付けされること及び該第2の数が該第2のアクセス時間に基づいて重み付けされることを含む重み付け比である、項1~5のいずれか1項に記載の方法。
【0128】
項7:データ複製の該タイプを選択することが、該第1の数及び該第2の数の重み付き和を計算すること、ここで、該第1の数は該第1のアクセス時間に基づいて重み付けされ、及び該第2の数は該第2のアクセス時間に基づいて重み付けされる;並びに、該重み付き和が第4の閾値未満である場合に、データ複製の該第1のタイプを選択すること、又は該重み付き和が第4の閾値以上である場合に、データ複製の該第2のタイプを選択することを含む、項1~6のいずれか1項に記載の方法。
【0129】
項8:該データ複製の該第2のタイプが、該ターゲットデータベースシステムの該テーブルの全ての行を一緒に更新する為の情報をロードすること、及び該情報に基づいて該ターゲットデータベースシステムの該テーブルの該全ての行を更新することを含む、項1~7のいずれか1項に記載の方法。
【0130】
項9:該方法が、夫々のログ番号を使用することを更に含み、ここで、夫々のログ番号は、該複数のログファイルの夫々の1つに割り当てられ、ここで、夫々のログ番号は、該夫々のログファイルの生成が開始される夫々の瞬間まで書き込まれている該ソースデータベースシステムの該テーブルのデータ変更のレコードの総数を示し、及びここで、該第1の数と該第2の数を追跡することは、該複数のログファイルに割り当てられた夫々のログ番号に基づく、項1~8のいずれか1項に記載の方法。
【0131】
項10:該複数のログファイルの各々が、夫々のログ番号を含み、ここで、夫々のログ番号は、該複数のログファイルの夫々の1つに割り当てられ、ここで、夫々のログ番号は、該夫々のログファイルの生成が開始される夫々の瞬間まで書き込まれている該ソースデータベースシステムのテーブルのデータ変更のレコードの総数を示し、及びここで、該第1の数及び該第2の数を追跡することは、該複数のログファイルの該夫々のログ番号に基づく、項1~9のいずれか1項に記載の方法。
【0132】
項11:該第1の数を追跡することが、該第1のメモリデバイス上で最短時間記憶されている該ログファイルに割り当てられた該夫々のログ番号と、該第1のメモリデバイス上で最長時間記憶されている該ログファイルに割り当てられた該夫々のログ番号との差を計算することを含む、項9又は10に記載の方法。
【0133】
項12:該第1の数を追跡することが、実際の瞬間における該ソースデータベースシステムの該テーブルのデータ変更の実際の総数と、該第1のメモリデバイス上で最長時間記憶されている該ログファイルに割り当てられた該夫々のログ番号との差を計算することを含む、項9又は10に記載の方法。
【0134】
項13:該方法が、該第1のメモリデバイス又は該第2のメモリデバイスから読み出され且つデータ変更の最後のレコードに従って該ターゲットデータベースシステムの該テーブルにおけるデータ変更の複製の為に使用される、データ変更の該最後のレコードのレコード番号を追跡すること;及び、該第1の数又は該第2の数を追跡する為に、データ変更の該最後のレコードの該レコード番号を使用することを更に含む、項1~12のいずれか1項に記載の方法。
【0135】
項14:該方法が、該第1のメモリデバイス上で最長時間記憶されている該ログファイルに割り当てられた該夫々のログ番号と、データ変更の該最後のレコードに割り当てられた該レコード番号との差として該第2の数を計算することを更に含み、ここで、データ変更の該最後のレコードは該第2のメモリデバイス上でアーカイブされる該複数のログファイルのうちの1つに含まれている、項9又は10及び13に記載の方法。
【0136】
項15:該方法が、該第1のメモリデバイス上に最短時間記憶されている該ログファイルに割り当てられた該夫々のログ番号と、データ変更の該最後のレコードに割り当てられた該レコード番号との差として該第1の数を計算することを更に含み、ここで、データ変更の該最後のレコードは該第1のメモリデバイス上に記憶されている該複数のログファイルのうちの1つに含まれている、項9又は10及び13に記載の方法。
【0137】
項16:該方法が該複数のログファイルを復元することを更に含み、ここで、該復元することは、該第2のメモリデバイス上にアーカイブされている該複数のログファイルを該第1のメモリデバイス上に記憶することを含む、項1~15のいずれか1項に記載の方法。
【0138】
項17:該方法が、該第2のメモリデバイス上にアーカイブされている該複数のログファイルのデータ変更の該レコードの夫々のサイズに基づいて、該復元することを実行することを更に含む、項16に記載の方法。
【0139】
項18:該方法が、該ソースデータベースシステムの該テーブルのデータ変更のレコードの総数を、カウンタを使用してカウントすること;該カウンタが該カウンタのオーバーフローに近い状態であるかを決定すること;該カウンタが該カウンタのオーバーフローに近い状態である場合に、データ複製の該第2のタイプを選択すること;及び、該複数のログファイルのデータ変更の該レコードを用いて、データ複製の該第2のタイプに従って該ソースデータベースシステムの該テーブルのデータ変更を該ターゲットデータベースシステムの該テーブル内に複製した後に、該カウンタをリセットすることを更に含み、ここで、データ複製の該第2のタイプは、該第1のメモリデバイス及び該第2のメモリデバイス上に記憶されているデータ変更の全てのレコードを一緒にロードすること、及びデータ変更の該ロードされたレコードに従って、該ソースデータベースシステムの該テーブルの1超個の行の該データ変更を該ターゲットデータベースシステムの該テーブル内に複製することを含む、項8又は9に記載の方法。
【0140】
項19:複数のコンピュータ可読プログラム命令をその中に有するコンピュータ可読ストレージ媒体を備えているコンピュータプログラム製品であって、該複数のコンピュータ可読プログラム命令は、項1~18のいずれか1項に記載の方法の工程を実施するように構成されている、該コンピュータプログラム製品。
【0141】
項20:ソースデータベースシステムのテーブルのデータ変更をターゲットデータベースシステムのテーブル内に複製する為のコンピュータシステムであって、該コンピュータシステムは、該ソースデータベースシステム及び該ターゲットデータベースシステムを備えており、該コンピュータシステムは、該ソースデータベースシステムの該テーブルの該データ変更を実行しながら複数のログファイルを繰り返し生成すること、ここで、各ログファイルは、該ソースデータベースシステムの該テーブルの該データ変更の少なくとも1つのレコードを含む;該複数のログファイルを第1のメモリデバイス上に記憶すること、ここで、該第1のメモリデバイスは、第1のアクセス時間を有する;該第1のメモリデバイス上に記憶されている該複数のログファイルの一部を第2のメモリデバイス上にアーカイブすること、ここで、該第2のメモリデバイスは第2のアクセス時間を有し、該第2のアクセス時間は該第1のアクセス時間よりも長い;第2のペンディング中のデータ変更の第2の数を追跡すること、ここで、該第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、該第2のメモリデバイス上にアーカイブされている該複数のログファイルのデータ変更の該レコードの該データ変更である;該第2の数に依存して、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択すること;並びに、該複数のログファイルのデータ変更の該レコードを用いて、データ複製の該選択されたタイプに従って、該ソースデータベースシステムの該テーブルの該データ変更を該ターゲットデータベースシステムの該テーブル内に複製することを実行するように構成されている。
【0142】
項21:該データ複製の該第1のタイプが、データ変更の該レコードの各々1つを個別に繰り返しロードすること、及びデータ変更の個別にロードされた対応するレコードに従って、該ソースデータベースシステムの該テーブルの単一の行の夫々のデータ変更を該ターゲットデータベースシステムの該テーブル内に複製することを含む、項20に記載のコンピュータシステム。
【0143】
項22:該データ複製の該第2のタイプが、該ターゲットデータベースシステムの該テーブルの複数の行を一緒に更新する為の情報をロードすること、及び該情報に基づいて該ターゲットデータベースシステムの該テーブルの該複数の行を更新することを含む、項20に記載のコンピュータシステム。
【0144】
項23:ソースデータベースシステムのテーブルのデータ変更をターゲットデータベースシステムのテーブル内に複製する為のコンピューティングシステムであって、該コンピュータシステムは、該ソースデータベースシステム及び該ターゲットデータベースシステムを備えており、該コンピュータシステムは、項1~18のいずれか1項に記載の方法の工程を実施するように構成されている、該コンピューティングシステム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
【手続補正書】
【提出日】2023-10-05
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータに実装された方法であって、
ソースデータベースシステムのテーブルのデータ変更を実行しながら複数のログファイルを繰り返し生成すること、ここで、各ログファイルは、前記ソースデータベースシステムの前記テーブルの前記データ変更の少なくとも1つのレコードを含む;
前記複数のログファイルを第1のメモリデバイス上に記憶すること、ここで、前記第1のメモリデバイスは、第1のアクセス時間を有する;
前記第1のメモリデバイス上に記憶されている前記複数のログファイルの一部を第2のメモリデバイス上にアーカイブすること、ここで、前記第2のメモリデバイスは第2のアクセス時間を有し、前記第2のアクセス時間は前記第1のアクセス時間よりも長い;
第2のペンディング中のデータ変更の第2の数を追跡すること、ここで、前記第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルのデータ変更の前記レコードの前記データ変更である;
前記第2の数に基づいて、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択すること;並びに、
前記複数のログファイルのデータ変更の前記レコードを用いて、データ複製の前記選択されたタイプに従って、前記ソースデータベースシステムの前記テーブルの前記データ変更を前記ターゲットデータベースシステムの前記テーブル内に複製すること
を含む、前記方法。
【請求項2】
前記データ複製の前記第1のタイプが、データ変更の前記レコードの各々を個別にロードすること、及びデータ変更の個別にロードされた対応するレコードに従って、前記ソースデータベースシステムの前記テーブルの単一の行の夫々のデータ変更を前記ターゲットデータベースシステムの前記テーブル内に複製することを含む、請求項1に記載の、コンピュータに実装された方法。
【請求項3】
前記データ複製の前記第2のタイプが、前記ターゲットデータベースシステムの前記テーブルの複数の行を一緒に更新する為の情報をロードすること、及び前記情報に基づいて前記ターゲットデータベースシステムの前記テーブルの前記複数の行を更新することを含む、請求項1に記載の、コンピュータに実装された方法。
【請求項4】
第1のペンディング中のデータ変更の第1の数を追跡すること、ここで、前記第1のペンディング中のデータ変更は、前記ターゲットデータベースシステムの前記テーブル内にまだ複製されていない、前記第1のメモリデバイス上に記憶されている前記複数のログファイルのデータ変更の前記レコードの前記データ変更である;並びに、
前記第1の数及び前記第2の数に基づいて、データ複製の前記タイプを選択すること
を更に含む、請求項1に記載の、コンピュータに実装された方法。
【請求項5】
データ複製の前記タイプを選択することが、前記第1の数の重み付けと前記第2の数の重み付けとを含み、ここで、前記第1の数の前記重み付けは前記第1のアクセス時間に基づき、及び前記第2の数の前記重み付けは前記第2のアクセス時間に基づく、請求項4に記載の、コンピュータに実装された方法。
【請求項6】
前記方法が、
前記第1の数と前記第2の数との比が第3の閾値以上であることに応答して、データ複製の前記第1のタイプを選択すること
を更に含み、
ここで、前記比は、前記第1のアクセス時間に依存して重み付けされる前記第1の数及び前記第2のアクセス時間に依存して重み付けされる前記第2の数を含む重み付け比である、
請求項4に記載の、コンピュータに実装された方法。
【請求項7】
前記方法が、
前記第1の数と前記第2の数との比が第3の閾値未満であることに応答して、データ複製の前記第2のタイプを選択すること
を更に含み、
ここで、前記比は、前記第1のアクセス時間に依存して重み付けされる前記第1の数及び前記第2のアクセス時間に依存して重み付けされる前記第2の数を含む重み付け比である、
請求項4に記載の、コンピュータに実装された方法。
【請求項8】
データ複製の前記タイプを選択することが、
前記第1の数及び前記第2の数の重み付き和を計算すること、ここで、前記第1の数は前記第1のアクセス時間に基づいて重み付けされ、及び前記第2の数は前記第2のアクセス時間に基づいて重み付けされる;並びに、
前記重み付き和が第4の閾値未満である場合に、データ複製の前記第1のタイプを選択すること、又は前記重み付き和が第4の閾値以上である場合に、データ複製の前記第2のタイプを選択すること
を含む、請求項4に記載の、コンピュータに実装された方法。
【請求項9】
夫々のログ番号を取得すること、ここで、夫々のログ番号は、前記複数のログファイルの夫々の1つに割り当てられ、ここで、夫々のログ番号は、夫々のログファイルの生成が開始される夫々の瞬間までに書き込まれている前記ソースデータベースシステムの前記テーブルの前記データ変更のレコードの総数を示す;並びに、
前記複数のログファイルに割り当てられた前記夫々のログ番号を用いて、前記第1の数及び前記第2の数を追跡すること
を更に含む、請求項4に記載の、コンピュータに実装された方法。
【請求項10】
前記複数のログファイルの各々が、夫々のログ番号を含み、ここで、夫々のログ番号は、前記複数のログファイルの夫々の1つに割り当てられ、前記夫々のログ番号は、前記夫々のログファイルの生成が開始される夫々の瞬間までに書き込まれている前記ソースデータベースシステムの前記テーブルの前記データ変更のレコードの総数を示し、並びに前記第1の数及び前記第2の数を追跡することが、前記複数のログファイルの前記夫々のログ番号を用いる、請求項4に記載の、コンピュータに実装された方法。
【請求項11】
前記第1の数を追跡することが、前記第1のメモリデバイス上で最短時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号と、前記第1のメモリデバイス上で最長時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号との差を計算することを含む、請求項9に記載の、コンピュータに実装された方法。
【請求項12】
前記第1の数を追跡することが、実際の瞬間における前記ソースデータベースシステムの前記テーブルのデータ変更の実際の総数と、前記第1のメモリデバイス上で最長時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号との差を計算することを含む、請求項9に記載の、コンピュータに実装された方法。
【請求項13】
前記第1のメモリデバイス又は前記第2のメモリデバイスから読み出され且つデータ変更の最後のレコードに従って前記ターゲットデータベースシステムの前記テーブルにおけるデータ変更の複製の為に使用される、データ変更の前記最後のレコードのレコード番号を追跡すること;及び、
前記第1の数又は前記第2の数を追跡する為に、データ変更の前記最後のレコードの前記レコード番号を使用すること
を更に含む、請求項9に記載の、コンピュータに実装された方法。
【請求項14】
前記方法が、
前記第1のメモリデバイス上で最長時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号と、データ変更の前記最後のレコードに割り当てられた前記レコード番号との差として前記第2の数を計算すること
を更に含み、
ここで、データ変更の前記最後のレコードは前記第2のメモリデバイス上でアーカイブされる前記複数のログファイルのうちの1つに含まれている、
請求項13に記載の、コンピュータに実装された方法。
【請求項15】
前記方法が、
前記第1のメモリデバイス上に最短時間記憶されている前記ログファイルに割り当てられた前記夫々のログ番号と、データ変更の前記最後のレコードに割り当てられた前記レコード番号との差として前記第1の数を計算すること
を更に含み、
ここで、データ変更の前記最後のレコードは前記第1のメモリデバイス上に記憶されている前記複数のログファイルのうちの1つに含まれている、
請求項13に記載の、コンピュータに実装された方法。
【請求項16】
前記方法が前記複数のログファイルを復元することを更に含み、ここで、前記復元することは、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルを前記第1のメモリデバイス上に記憶することを含む、請求項1に記載の、コンピュータに実装された方法。
【請求項17】
前記方法が、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルのデータ変更の前記レコードの夫々のサイズに基づいて、前記復元することを実行することを更に含む、請求項16に記載の、コンピュータに実装された方法。
【請求項18】
前記方法が、
前記ソースデータベースシステムの前記テーブルのデータ変更のレコードの総数を、カウンタを使用してカウントすること;
前記カウンタが該カウンタのオーバーフローに近い状態であるか否かを決定すること;
前記カウンタが該カウンタのオーバーフローに近い状態である場合に、データ複製の前記第2のタイプを選択すること;及び、
前記複数のログファイルのデータ変更の前記レコードを用いて、データ複製の前記第2のタイプに従って前記ソースデータベースシステムの前記テーブルのデータ変更を前記ターゲットデータベースシステムの前記テーブル内に複製した後に、前記カウンタをリセットすること
を更に含み、
ここで、データ複製の前記第2のタイプが、前記第1のメモリデバイス及び前記第2のメモリデバイス上に記憶されているデータ変更の全てのレコードを一緒にロードすること、及びデータ変更の該ロードされたレコードに従って、前記ソースデータベースシステムの前記テーブルの1超個の行の前記データ変更を前記ターゲットデータベースシステムの前記テーブル内に複製することを含む、
請求項16に記載の、コンピュータに実装された方法。
【請求項19】
コンピュータプログラムであって、
ソースデータベースシステムのテーブルのデータ変更を実行しながら複数のログファイルを繰り返し生成すること、ここで、各ログファイルは、前記ソースデータベースシステムの前記テーブルの前記データ変更の少なくとも1つのレコードを含む;
前記複数のログファイルを第1のメモリデバイス上に記憶すること、ここで、前記第1のメモリデバイスは、第1のアクセス時間を有する;
前記第1のメモリデバイス上に記憶されている前記複数のログファイルの一部を第2のメモリデバイス上にアーカイブすること、ここで、前記第2のメモリデバイスは第2のアクセス時間を有し、前記第2のアクセス時間は前記第1のアクセス時間よりも長い;
第2のペンディング中のデータ変更の第2の数を追跡すること、ここで、前記第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルのデータ変更の前記レコードの前記データ変更である;
前記第2の数に基づいて、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択すること;並びに、
前記複数のログファイルのデータ変更の前記レコードを用いて、データ複製の前記選択されたタイプに従って、前記ソースデータベースシステムの前記テーブルの前記データ変更を前記ターゲットデータベースシステムの前記テーブル内に複製すること
を含む方法の各工程を1以上のプロセッサに実行させる、前記コンピュータプログラム。
【請求項20】
コンピュータシステムであって、
少なくとも1つのプロセッサ;
少なくとも1つのコンピュータ可読ストレージ媒体;
ソースデータベースシステム;及び
ターゲットデータベースシステム
を備えており、
ここで、前記少なくとも1つのプロセッサが、前記少なくとも1つのコンピュータ可読ストレージ媒体上に記憶された複数のプログラム命令を実行するように構造化され、配置され、接続され、及びプログラミングされており、並びに、
前記記憶された複数のプログラム命令が、
ソースデータベースシステムのテーブルのデータ変更を実行しながら複数のログファイルを繰り返し生成するようにプログラミングされたプログラム命令、ここで、各ログファイルは、前記ソースデータベースシステムの前記テーブルの前記データ変更の少なくとも1つのレコードを含む;
前記複数のログファイルを第1のメモリデバイス上に記憶するようにプログラミングされたプログラム命令、ここで、前記第1のメモリデバイスは、第1のアクセス時間を有する;
前記第1のメモリデバイス上に記憶されている前記複数のログファイルの一部を第2のメモリデバイス上にアーカイブするようにプログラミングされたプログラム命令、ここで、前記第2のメモリデバイスは第2のアクセス時間を有し、前記第2のアクセス時間は前記第1のアクセス時間よりも長い;
第2のペンディング中のデータ変更の第2の数を追跡するようにプログラミングされたプログラム命令、ここで、前記第2のペンディング中のデータ変更は、ターゲットデータベースシステムのテーブル内にまだ複製されていない、前記第2のメモリデバイス上にアーカイブされている前記複数のログファイルのデータ変更の前記レコードの前記データ変更である;
前記第2の数に基づいて、データ複製の第1のタイプ及びデータ複製の第2のタイプからデータ複製のタイプを選択するようにプログラミングされたプログラム命令;並びに、
前記複数のログファイルのデータ変更の前記レコードを用いて、データ複製の前記選択されたタイプに従って、前記ソースデータベースシステムの前記テーブルの前記データ変更を前記ターゲットデータベースシステムの前記テーブル内に複製するようにプログラミングされたプログラム命令
を含む、前記コンピュータシステム。
【国際調査報告】