JP2024503445A - ターゲットデータベースシステムにおける変更の適用 - Google Patents
ターゲットデータベースシステムにおける変更の適用 Download PDFInfo
- Publication number
- JP2024503445A JP2024503445A JP2023542593A JP2023542593A JP2024503445A JP 2024503445 A JP2024503445 A JP 2024503445A JP 2023542593 A JP2023542593 A JP 2023542593A JP 2023542593 A JP2023542593 A JP 2023542593A JP 2024503445 A JP2024503445 A JP 2024503445A
- Authority
- JP
- Japan
- Prior art keywords
- program instructions
- performance
- computer
- size
- changes
- 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.)
- Pending
Links
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 153
- 230000008859 change Effects 0.000 claims abstract description 33
- 238000012508 change request Methods 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 66
- 230000006399 behavior Effects 0.000 claims description 48
- 230000004048 modification Effects 0.000 claims description 17
- 238000012986 modification Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 5
- 230000003362 replicative effect Effects 0.000 claims description 2
- 238000013459 approach Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000007405 data analysis Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000011084 recovery Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013178 mathematical model Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000012558 master data management Methods 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013213 extrapolation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
1または複数のプロセッサによって、ターゲットデータベースシステムにおける各変更に使用されるアプリケーションアルゴリズムを動的に選択するアプローチにおいて、プロセッサは、ターゲットデータベースシステムにおいて、テーブルへの変更を適用するための少なくとも2つのアプリケーションアルゴリズムを提供する。プロセッサは、少なくとも2つのアプリケーションアルゴリズムの各アプリケーションアルゴリズムについて、それぞれのアプリケーションアルゴリズムによってテーブルに適用される変更のサイズに対する各アプリケーションアルゴリズムの性能動作を決定する。プロセッサは、テーブルへの変更を適用するためのデータ変更要求を受信する。プロセッサは、前記テーブルへの変更のサイズを決定する。プロセッサは、各アプリケーションアルゴリズムの性能動作に基づいて、サイズに最適な性能を提供する少なくとも2つのアプリケーションアルゴリズムのうちの1つを選択する。プロセッサは、サイズに対して最適な性能を提供する選択されたアプリケーションアルゴリズムを使用して、テーブルへの変更を適用する。
Description
本発明は、データベースシステムの分野に関し、より具体的には、ターゲットデータベースシステムにおける変更を適用するために使用されるアプリケーションアルゴリズムを動的に選択するための方法を提供することに関する。
複製は、定義されたデータのセットを複数のロケーションに維持するプロセスである。あるソースロケーションからターゲットロケーションに指定された変更をコピーすることと、両ロケーションのデータを同期させることが含まれる場合がある。ソースとターゲットは、同じマシン上にある論理サーバであっても、分散ネットワーク上の異なるマシン上にあるものであってもよい。あるシステムから別のシステムへデータを移動するためのアプローチはいくつか存在する。しかし、これらのアプローチにはさらなる改良が必要な場合がある。
本発明の実施形態の態様は、ターゲットデータベースシステムにおける変更を適用するために使用されるアプリケーションアルゴリズムを動的に選択するためのコンピュータ実装方法、コンピュータプログラム製品、およびコンピュータシステムを開示する。本発明の実施形態は、相互に排他的でなければ、互いに自由に組み合わせることができる。
プロセッサは、ターゲットデータベースシステムにおける変更を適用するための複数のアプリケーションアルゴリズムを提供する。プロセッサは、提供されたアプリケーションアルゴリズムの各アプリケーションアルゴリズムについて、アプリケーションアルゴリズムによってターゲットデータベースシステムのテーブルに適用される変更の異なるサイズに対するアプリケーションアルゴリズムの性能動作を決定する。プロセッサは、テーブルに変更を適用するためのデータ変更要求を受信する。プロセッサは、要求されたテーブルへの変更のサイズを決定する。プロセッサは、決定されたサイズに対して最適な性能を提供するアプリケーションアルゴリズムのうちの1つを選択するために、決定された性能動作を使用する。プロセッサは、選択されたアプリケーションアルゴリズムを使用して、要求された変更をテーブルに適用する。
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。説明される実施形態の範囲から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に開示される実施形態を理解できるようにするために選択された。
ターゲットデータベースシステムは、データ分析システムの一部であってよい。データ分析システムは、ターゲットデータベースシステムおよびソースデータベースシステムを含む。データ分析システムは、例えば、データウェアハウスシステムまたはマスターデータ管理システムであってもよい。データ分析システムは、データウェアハウス、マスターデータ管理、またはソースデータベースシステムおよびターゲットデータベースシステムを使用する他の技術を可能にすることができ、ターゲットデータベースシステムは、ソースデータベースシステムの対応するソースデータベースのコンテンツのコピーを受信/構成するように構成されたターゲットデータベースを含む。ソースデータベースシステムは、接続を介してターゲットデータベースシステムに接続されることができる。接続は、例えば、TCP/IP接続またはソースデータベースシステムとターゲットデータベースシステムとの間の接続を介したデータの通信を可能にする他の接続であってもよい。ソースデータベースシステムは、例えば、トランザクショナルエンジンであってよく、ターゲットデータベースシステムは、分析エンジンであってよい。例えば、ソースデータベースシステムはオンライン取引処理(OLTP)システムであってもよく、ターゲットデータベースシステムはオンライン分析処理(OLAP)システムであってよい。ソースデータベースシステムはソースデータセットを構成することができ、ターゲットデータベースシステムはターゲットデータセットを構成することができる。ソースデータセットはソースデータベースの一部であってよく、ターゲットデータセットはターゲットデータベースの一部であってよい。ソースデータセットおよびターゲットデータセットは、同じフォーマットまたは異なるフォーマットで記憶される場合がある。フォーマットは、暗号化、圧縮、行指向対列指向の記憶などにおいて異なっていてもよい。例えば、ソースデータセットは行指向フォーマットで記憶される場合があり、ターゲットデータセットは列指向フォーマットで記憶される場合がある(すなわち、ターゲットデータセットは行単位ではなく、列単位で記憶されることがある)。ソースデータセットのコンテンツは、1または複数のデータベース取引によって変更されることがある。
データ分析システムは、ソースデータベースシステムのソーステーブルで発生した変更をターゲットデータベースシステムに複製するように構成されてよく、それによりソーステーブルに対応するターゲットデータベースシステムのターゲットテーブル上で前記変更を適用することができる。変更の適用は、例えば、ターゲットデータベースシステムの1または複数のテーブルにおける1または複数のレコードを挿入すること、1または複数のレコードを更新すること、もしくは1または複数のレコードを削除すること、またはその組み合わせを含むことができる。データレコードまたはテーブルのレコードは、特定のユーザの名前、生年月日、クラスなどの関連データ項目のコレクションである。レコードはエンティティを表し、エンティティは、レコードに情報が記憶されているユーザ、オブジェクト、または概念を指す。そのために、複数のアプリケーションアルゴリズム(更新戦略とも呼ばれることがある)が提供されることがあり、各アプリケーションアルゴリズムは、ターゲットデータベースシステムに変更を適用するために実行されるべき複製操作のシーケンスを指定する。アプリケーションアルゴリズムは、例えば、増分ロードベースのアルゴリズムと、バルクロードベースのアルゴリズムとを含み得る。増分ロードベースのアルゴリズムは、例えば、ログレコードの記録された各変更が、ターゲットデータベースシステムにおいて個別に適用されることを要求することができる。増分ロードベースのアルゴリズムは、大きなチャンクのためのオーバーヘッドが高い可能性があるため、小さなデータセットに特に有利である可能性がある。バルクロードベースのアプリケーションアルゴリズムは、例えば、ログレコードの記録された変更がバッチにステージングされることを要求することができる。そして、それらのバッチは、バルクロードインタフェースを介してターゲットデータベースシステムに適用されることができる。バルクロードベースのアプリケーションアルゴリズムは、大きなデータセットに有利に使用されるかもしれない。しかし、バルクロードをセットアップするためのオーバーヘッドは高すぎる可能性があり、わずか数行の行で構成される小さなサイズのチャンクのために費やすべきではない。
したがって、ターゲットデータベースシステムに適用される変更によって、アプリケーションアルゴリズムは異なる性能を有する可能性がある。しかし、適切なアルゴリズムを正確かつ体系的に選択することは、簡単ではない行動である可能性がある。本発明は、各変更に使用するアプリケーションアルゴリズムを動的に選択するための最適かつ効率的な方法を提供することによって、この問題を解決し得る。本方法は、不適切なアプリケーションアルゴリズムによって必要とされるであろう追加の時間を節約することができるため、時間的に効率的である可能性がある。本方法は、正確で最新の性能動作に基づき決定されるため、最適であると考えられる。
一実施形態によれば、本方法は、テーブルの受信した各データ変更要求に対するサイズを決定するステップ、アプリケーションアルゴリズムを選択するステップ、および変更を適用するステップを繰り返すことをさらに含む。これにより、テーブルの性能動作を動的に更新することができる。
一実施形態によれば、本方法は、さらに、ターゲットデータベースシステムのさらなる各テーブルに対して性能動作の決定ステップを実行し、その結果、ターゲットデータベースシステムの各テーブルがそれぞれの性能動作と関連付けられる、決定することと、前記特定のテーブルに関連する性能動作を使用して、ターゲットデータベースシステムの特定のテーブルの各受信したデータ変更要求に対して、サイズを決定するステップと、アプリケーションアルゴリズムを選択するステップと、変更を適用するステップと、を繰り返すことと、を含む。本実施形態は、アプリケーションアルゴリズムの性能動作をテーブルにも依存させるので、有利である場合がある。これは、同じアプリケーションアルゴリズムが、少ない列を有する所定のテーブルの所定の変更サイズに対して最も効率的なアルゴリズムであるかもしれないが、はるかに多くの列を有する別のテーブルの同じ変更サイズに対しては効率が悪く、または列が異なるデータ型を有する可能性があるため、特に有利であり得る。
一実施形態によれば、アプリケーションアルゴリズムの性能動作を決定することは、テーブルへのデータ変更をそれぞれ適用するために、アプリケーションアルゴリズムを事前定義された数N回実行することであって、各適用されたデータ変更はサイズを有する、実行することと、データ変更の各データ変更について、アプリケーションアルゴリズムの実行の性能を示す少なくとも1つの性能パラメータを評価することと、性能動作を表すN個のデータポイントのデータ構造を提供することであって、各データポイントは、評価された性能パラメータおよびデータ変更の関連するサイズを示す、提供することと、を含む。本実施形態は、データ分析システムの初期設定時に、利用可能な測定値がまだない可能性があるため、有利である場合がある。本実施形態は、後に改良される可能性のある初期測定値を提供するアプリケーションアルゴリズムの初期実行を可能にし得る。一例では、アプリケーションアルゴリズムの初期実行は、ダミーデータを用いたダミー実行であってよく、例えば、1000行がテーブルに挿入される場合があり、実行時間が測定されるかもしれない。これらの1000行に対する変更は、コミットされることなくロールバックされることがある。別の例では、アプリケーションアルゴリズムの実行は、受信したN個の変更要求によって引き起こされる場合がある。アプリケーションアルゴリズムは、事前定義されたアルゴリズムの中からランダムに、またはラウンドロビンや他の一部のスキームによって選択することができる。それは、十分な測定Nポイントが利用可能になるまで行われる。
一実施形態によれば、数Nは、設定可能な最大実行数(例えば、3)より小さい。本方法は、N個のデータポイントの補間を使用して、データ構造内の新しいデータポイントを構築することをさらに含む。例えば、2つ(すなわち、N=2)のINSERTが、行数を挿入するためのアプリケーションアルゴリズムの各々で実行されてもよい。2つのINSERTの行数は異なっていてもよく、例えば、100行と700行(例えば、100行と101行ではないが)のような、より大きな多様性を有する。性能パラメータは、2つのINSERTのそれぞれについて評価されることがある。これは、例えば、線形曲線の形で第1のベースラインを定義し、その後に外挿を適用することができる。スプラインは、曲線または単純な線形補間を近似するために使用することができる。
一実施形態によれば、性能パラメータは、実行時間およびメモリ使用量のうちのいずれか1つである。
一実施形態によれば、変更のサイズは、挿入されるレコードの数、削除されるレコードの数、もしくは更新されるレコードの数、またはその組み合わせを含む。
一実施形態によれば、アプリケーションアルゴリズムを選択することは、決定されたサイズに対する2つのアプリケーションアルゴリズムの性能が類似しているかどうかを決定することと、類似している場合に2つのアプリケーションアルゴリズムのうちのいずれか1つを選択することと、を含む。2つのアプリケーションアルゴリズムは、その性能動作のクロスポイントにおいて類似した性能を有する場合がある。そのクロスポイントは、性能の損益分岐点であるという非常に重要な特徴を持つ場合がある。アルゴリズムAまたはアルゴリズムBで「n」行を処理する場合の性能は同一である。つまり、どちらのアルゴリズムを選択しても問題ない。クロスポイントから多少逸脱しても、性能曲線に大きな「飛び」が生じることはない。例えば、1000行未満はAアルゴリズム、1000行を超える場合はBアルゴリズムが優れているとして、990行でBを選択しても、Aアルゴリズムに非常に近い。このことは、AアルゴリズムからBアルゴリズムに切り替える際にスムーズに移行できるという極めて有用な意味合いを持つ。
一実施形態によれば、アプリケーションアルゴリズムは、レコードバルクロードベースのアプリケーションおよび個別レコードロードベースのアプリケーションのいずれか1つである。
一実施形態によれば、本方法は、ソースデータベースシステム内のテーブルに関連付けられたソーステーブルを提供することであって、ソースデータベースシステムおよびターゲットデータベースシステムは、互いの間でデータを同期するように構成される、提供することと、データ変更がソーステーブルに適用されたことに応答してデータ変更要求が受信され、それによってデータ変更が複製されることと、をさらに含む。
本発明の実施形態の実装は、様々な形態をとることができ、例示的な実装の詳細については、図を参照して後述する。
図1は、本発明の実施形態によるデータ処理システム(またはデータ分析システム)100のブロック図である。データ処理システム100は、本発明の実施形態により、データ同期システム102を使用してソースデータベースシステム101とターゲットデータベースシステム103との間でデータ同期を行うように構成され得る。ソースデータベースシステム101は、例えば、オンライン取引処理(OLTP)システムであってよい。ターゲットデータベースシステム103は、例えば、オンライン分析処理(OLAP)システムとすることができる。ソースデータベースシステム101とターゲットデータベースシステム103との間の通信は、例えば、TCP/IP通信層を介して行われることができる。
ソースデータベースシステム101は、ソースデータベース106の1または複数のソーステーブル105と、取引リカバリーログ107とを含む。取引リカバリーログ107のエントリまたはログレコードは、ソースデータベースシステム101におけるソーステーブル105の行またはレコードに対する変更を記述する。図1は、ログレコード130の内容の一例を示す。ログレコード130は、タイムスタンプ、LRSN、および属性変更を含み得る。より具体的には、取引リカバリーログ107のログレコードは、例えば、(1)変更されるテーブル、(2)変更される行のキー列の値、(3)変更される行のすべての列の新旧値、(4)変更を引き起こす取引(作業単位)を定義する情報を含んでよい。定義上、挿入は新しいデータレコードであり、したがって、古い値を有さない。削除による変更では、定義上、新しいデータレコードは存在せず、古いデータレコードのみが存在する。したがって、挿入された行の取引ログレコードには新しい列の値のみが含まれ、削除された行の取引ログレコードには古い列の値のみが含まれる可能性がある。更新された行の取引ログレコードは、すべての行列の新旧の値を含むことができる。取引リカバリーログにおけるログレコードの順序は、取引の変更操作の順序を反映し、取引コミットレコードの順序は、取引が完了した順序を反映することができる。取引ログレコードの行操作の種類は、例えば、削除、挿入、または更新であり得る。
データ同期システム102は、ログリーダ104を含む。データ同期システム102の一部として示されているが、ログリーダ104は、別の例では、ソースデータベースシステム101の一部であってもよい。ログリーダ104は、取引リカバリーログ107のログレコードを読み取り、変更レコード分類器120に提供してもよい。変更レコード分類器120は、アルゴリズム選択モジュール121がログレコードの分類に基づいてアプリケーションアルゴリズム108.1~108.3のうちの1つを選択することができ、更新が選択されたアプリケーションアルゴリズムに基づいて実行されることができるように、ログレコードをその変更に基づいて(例えば、変更のサイズを決定するために)分類してもよい。アプリケーションアルゴリズムの選択および前記アプリケーションアルゴリズムを用いた変更の適用は、例えば、定期的に、例えば、1時間毎に実行されてもよいし、事前定義された量のログレコード(例えば、1000個のログレコード)が取引リカバリーログ107に保存されると同時に自動的に実行されてもよく、例えば、その量のログレコードが新しい変更要求を定義するのに使用されてもよい。各繰り返しにおいて、前に提供されたログレコードに関して新たに追加されたログレコードのみが処理されてもよい。選択されたアプリケーションアルゴリズムは、例えば、バルクロードベースの更新戦略または1または複数の増分更新戦略を含んでもよく、バルクロードベースのアルゴリズム108.3および増分アルゴリズム108.1および108.2にそれぞれ対応する。同期は、バルクロードベースの更新戦略と増分更新戦略とで異なるように実行されてもよい。
ログリーダ104は、選択モジュール121によって選択される増分更新アルゴリズムに基づいて、ターゲットデータベースシステム103への取引リカバリーログ107のログシッピングを実行するように構成されてよい。シッピングは、例えば、取引リカバリーログ107のログレコードから形成されるログレコードのストリームを送信することによって実行されてもよい。シッピングされるログストリームは、例えば、ストリームIDに関連付けられることがある。ログレコードのストリームは、例えば、マージされたログレコードのストリームであってもよい。これにより、ターゲットデータベースシステム103におけるログレコードの効率的な処理が可能となる場合がある。ターゲットデータベースシステム103は、複数のアルゴリズム108.1および108.2は、それぞれがそれぞれの増分更新戦略に関連付けされて構成されてもよい。図1では、例示のために3つのアルゴリズムのみを示しているが、これらの種類またはアルゴリズムの数に限定されるものではない。ターゲットデータベースシステム103は、1または複数のターゲットテーブルコピー113をさらに含む。ターゲットデータベースシステムは、ソースデータベースシステム101からログストリームを受信するためのログストリーミングインタフェースを含む。アルゴリズム108.1および108.2の各々は、ログストリーミングインタフェースを介してログレコードのストリームを受信するように構成され得る。アルゴリズム108.1および108.2の各々は、受信したログレコードをバッファリングし、変更をターゲットデータベース114のテーブルコピー113に適用するときに効率を改善するために、例えばバルクロードインタフェースを介して、変更をバッチに統合することができる。
別の例では、バルクロードベース(スナップショット更新)アルゴリズム108.3は、選択されたバルクロードベース更新戦略に基づいて、ソースデータベースシステム101とターゲットデータベースシステム103の間で実行されてもよい。ロードは、テーブルデータ全体のロード、または所定の時点におけるテーブルのパーティションのセットのロードであってよく、ソースデータベースシステム101からターゲットデータベースシステム103に直接実行される。ターゲットデータベースシステム103上のデータは、ロードが実行された時点のソースデータベースシステム状態を反映することができる。
別個の構成要素として示されているが、データ同期システム102は、別の実施例では、ソースデータベースシステム101の一部であってもよいし、ターゲットデータベースシステム103の一部であってもよい。一実施例では、ソースデータベースシステム101およびターゲットデータベースシステム103は、それぞれ、同じシステム上にあってもよいし、分散ネットワーク内の異なるシステム上にあってもよい。
図2は、本発明の実施形態によるターゲットデータベースシステムのテーブルTgに変更を適用するための方法のフローチャートである。説明のために、図2に記載された方法は、図1に示されたシステムで実装されてもよいが、この実装に限定されるものではない。図2の方法は、例えば、データ同期システム102によって実行されてもよい。図2の方法は、例えば、ソースデータベースシステムの(Tgに対応する)ソーステーブルTSにおいて、ターゲットデータベースシステムへ行われた変更を適用することを可能にすることができ、その結果、ソースデータベースシステムとターゲットデータベースシステム間の同期を可能にすることができる。
ターゲットデータベースシステムに変更を適用するために、ステップ201において複数のアプリケーションアルゴリズムが提供され得る。例えば、アプリケーションアルゴリズムのApp1,...Apprの数rであり、ここでr≧2である。アプリケーションアルゴリズムは、例えば、単一レコードアプリケーションアルゴリズムおよびバルクロードアプリケーションアルゴリズムを含み得る。単一レコードアプリケーションアルゴリズムは、各ログレコードに記録された各変更を個別に適用することができる。各アルゴリズムは、異なる方法で変更を適用することができ、その結果、他のアプリケーションアルゴリズムに効果的に適用することができる。例えば、単一レコードアプリケーションアルゴリズムは、テーブルTgの最後の更新以降に変更されたデータのみを更新することができ、または対応するソーステーブルTSで変更が発生するたびにテーブルTg全体を更新することができる。これにより、2つの異なる単一レコードアプリケーションアルゴリズムが提供される場合がある。
ステップ203は、例えば、前処理ステップの一部として、(例えば、データ分析システムの実行時にテーブルTgが使用される前にオフラインで)実行することができる。別の例では、ステップ203は、データ分析システムの実行時に実行することができる。ステップ203は、N回の変更の各々に対してすべてのアプリケーションアルゴリズムを評価するため、リソースを消費する可能性があるので、変更の回数Nは、可能な限り小さく選択され得る(例えば、N=2)。
しかし、もし変更の回数Nが、要求された変更の性能を見積もるには十分でない場合、結果的にデータ構造curv1,...curvrは、さらに、それらに追加のポイントを追加することによって強化されてもよい。この追加のポイントの追加は、例えば、補間を使用して行うことができる。補間は、例えば、線形補間またはスプライン補間であってよい。このように、データ構造curv1,...curvrの各々は、N+x個のデータポイントを有する場合がある。別の例では、データ構造curv1,...curvrは、数学的関数を使用してそれらの動作をモデル化するために処理されてもよい。したがって、ステップ203は、それぞれアプリケーションアルゴリズムApp1,...Apprの性能動作を表す離散点を有するr個のデータ構造またはr個の数学関数を生成する場合がある。
ステップ205で、テーブルTgへの変更を適用するためのデータ変更要求を受信することができる。例えば、ソーステーブルTsにおける変更を検出することに応答して、データ変更要求は、データ同期システム、例えば、図1のデータ同期システム102に送信されることがある。
データ変更要求の受信に応答して、ステップ207において、要求された変更のサイズが決定され得る。サイズの定義は、性能動作を決定するために使用されるものと同じであってよい。例えば、要求されたデータ変更サイズstは、挿入されるレコードの数、もしくはテーブルTgから削除されるレコードの数、またはその両方である可能性がある。
決定されたサイズstは、ステップ209において、決定されたサイズstについて他のアプリケーションアルゴリズムと比較して最適な性能を提供するアプリケーションアルゴリズムを選択するために使用され得る。そのために、アプリケーションアルゴリズムApp1,...Apprの各々の性能は、決定されたサイズstについて推定することができる。この推定は、データ構造curv1,...curvr、またはステップ203で決定された数学的モデルを使用して行うことができる。例えば、離散点を有するデータ構造curv1,...curvrを使用する場合には、各データ構造の決定されたサイズstに最も近いポイントを特定することができる。その結果、r個の最も近いポイントが生成され得る。最も近いポイントの性能パラメータの値が比較されることがあり、最適な最も近いポイントが選択されることがある。選択された最も近いポイントは、アプリケーションアルゴリズムのうちの1つと関連付けられてもよい。このアプリケーションアルゴリズムのうちの1つは、ステップ209の選択されたアプリケーションアルゴリズムであってもよい。
数学的モデルを使用する場合、決定されたサイズstは、サイズstに関連する性能を推定するために、各数学的モデルへの引数または入力として与えることができる。その結果、r個の性能パラメータの値のセットが生成され得る。これらを互いに比較し、最適な性能および関連するアプリケーションアルゴリズムを特定することができる。
要求された変更は、ステップ211で、選択されたアプリケーションアルゴリズムを使用して、テーブルTgに適用することができる。
図3は、本発明の実施形態によるターゲットデータベースシステムのテーブルTgへの変更を適用するための方法のフローチャートである。説明のために、図3に記載された方法は、図1に示されたシステムで実装されてもよいが、この実装に限定されるものではない。図3の方法は、例えば、データ同期システム102によって実行されてもよい。図3の方法は、例えば、ソースデータベースシステムの(Tgに対応する)ソーステーブルTsにおいて、ターゲットデータベースシステムへ行われた変更を適用することを可能にすることができ、その結果、ソースデータベースシステムとターゲットデータベースシステム間の同期を可能にすることができる。
図4は、本発明の実施形態によるターゲットデータベースシステムの複数のテーブルへの変更を適用するための方法のフローチャートである。説明のために、図4に記載された方法は、図1に示されたシステムで実装されてもよいが、この実装に限定されるものではない。図4の方法は、例えば、データ同期システム102によって実行されてもよい。図4の方法は、例えば、ソースデータベースシステムの複数のソーステーブル(複数のターゲットテーブルに対応する)においてなされた変更をターゲットデータベースシステムに適用することを可能にし、したがって、ソースデータベースシステムおよびターゲットデータベースシステム間の同期を可能にすることができる。
複数のアプリケーションアルゴリズムが、ターゲットデータベースシステムに変更を適用するために、ステップ401(例えば、ステップ201で説明したように)において提供され得る。
アプリケーションアルゴリズムApp1,...Apprの各アプリケーションアルゴリズムの性能動作は、ステップ403で、複数のテーブルの各テーブルに対して決定されてもよい。例えば、ステップ403は、複数のテーブルの各テーブルに対して、図2のステップ203を実行することを含んでもよい。このことは、アプリケーションアルゴリズムの性能動作をテーブルにも依存させるので、有利であり得る。
ステップ405では、1または複数の変更を1または複数のテーブルにそれぞれ適用するためのデータ変更要求を受信することができる。変更は、異なるテーブルに適用されるため、異なるサイズを有する場合がある。
1または複数のテーブルの各テーブルについて、ステップ407から411は、そのテーブルの性能動作を使用して適用して実行され得る。ステップ407から411は、図2のステップ207から211である。
図5は、本発明の実施形態によるターゲットデータベースシステムの複数のテーブルに変更を適用するための方法のフローチャートである。説明のために、図5に記載された方法は、図1に示されたシステムで実装されてもよいが、この実装に限定されるものではない。図5の方法は、例えば、データ同期システム102によって実行されてもよい。図5の方法は、例えば、ソースデータベースシステムの複数のソーステーブル(複数のターゲットテーブルに対応する)においてなされた変更をターゲットデータベースシステムに適用することを可能にし、したがって、ソースデータベースシステムおよびターゲットデータベースシステム間の同期を可能にすることができる。
ステップ501から511は、図4のステップ401から411である。さらに、図5の方法は、選択されたアプリケーションアルゴリズムについて、ステップ503で決定された性能動作を更新するステップ513をさらに含む。さらに、ステップ505から513は、複数のテーブルのうちの1または複数のテーブルに適用される各変更に対して繰り返されることがある。
図6Aは、本発明の実施形態によるアプリケーションアルゴリズムの性能動作を決定する方法のフローチャートである。
アプリケーションアルゴリズムは、ステップ601において、テーブルへのデータ変更をそれぞれ適用するために、事前定義された数N回実行することができ、各適用されたデータ変更はサイズを有する。
データ変更の各データ変更について、ステップ603において、アプリケーションアルゴリズムの実行の性能を示す少なくとも1つの性能パラメータが評価されてもよい。例えば、アプリケーションアルゴリズムの実行時間は、N回の変更の各々のアプリケーションについて測定されてもよい。
ステップ605において、N個のデータポイントのデータ構造が提供され得る。データ構造は、アプリケーションアルゴリズムの性能動作を示す。各データポイントは、性能パラメータおよびデータ変更の関連するサイズを示す。図6Cは、一例として、2つのアプリケーションアルゴリズムApp1およびApp2について、N=2の測定されたデータポイントを示す。
図6Bは、本発明の実施形態によるアプリケーションアルゴリズムの性能動作を決定するための方法のフローチャートである。
図6Bの方法は、上述したステップ601から605と、ステップ607とを含む。ステップ607において、アプリケーションアルゴリズムの性能動作を表す提供されたデータ構造は、追加のポイントで増強され得る。これは、例えば、N個のデータポイント間の補間を使用して実行されてもよい。これは、例えば、図6Cに示されるように、アプリケーションアルゴリズムの各々の2つのデータポイントの間で線形補間が実行される。追加のポイントは、破線に沿った任意のポイントであってもよい(補間)。
図7は、本発明の実施形態による方法ステップの少なくとも一部を実装するのに適した一般的なコンピュータ化システム700を表している。
本明細書に記載された方法は、少なくとも部分的に非対話的であり、サーバまたは組み込みシステムなどのコンピュータ化システムの方法によって自動化されることが理解されよう。しかし、例示的な実施形態では、本明細書に記載された方法は、(部分的に)対話型システムで実装することができる。これらの方法は、さらに、ソフトウェア712、722(ファームウェア722を含む)、ハードウェア(プロセッサ)705、またはそれらの組み合わせで実装することができる。例示的な実施形態では、本明細書に記載の方法は、実行可能なプログラムとしてソフトウェアで実装され、パーソナルコンピュータ、ワークステーション、ミニコンピュータ、またはメインフレームコンピュータなどの特殊または汎用のデジタルコンピュータによって実行される。したがって、最も一般的なシステム700は、汎用コンピュータ701を含む。
例示的な実施形態では、ハードウェアアーキテクチャの観点から、図7に示すように、コンピュータ701は、プロセッサ705と、メモリコントローラ715に結合されたメモリ(メインメモリ)710と、ローカル入力/出力コントローラ735を介して通信可能に結合された1または複数の入力もしくは出力またはその両方(I/O)デバイス(または周辺機器)10および745を含む。入力/出力コントローラ735は、当技術分野で知られているように、1つまたは複数のバス、または他の有線または無線接続とすることができるが、これらに限定されない。入力/出力コントローラ735は、通信を可能にするために、コントローラ、バッファ(キャッシュ)、ドライバ、リピータ、およびレシーバなどの、簡略化のために省略されている追加の要素を有することができる。さらに、ローカルインタフェースは、前述のコンポーネント間の適切な通信を可能にするために、アドレス、制御、もしくはデータ接続、またはその両方を含むことができる。本明細書で説明するように、I/Oデバイス10および745は、一般に、当技術分野で知られている任意の一般化された暗号カードまたはスマートカードを含むことができる。
プロセッサ705は、ソフトウェア、特にメモリ710に記憶されているものを実行するためのハードウェアデバイスである。プロセッサ705は、カスタムメイドまたは市販のプロセッサ、中央処理装置(CPU)、コンピュータ701に関連する複数のプロセッサのうちの補助プロセッサ、半導体ベースのマイクロプロセッサ(マイクロチップまたはチップセットの形態)、または一般的にソフトウェア命令を実行するための任意のデバイスとすることができる。
メモリ710は、揮発性メモリ要素(例えば、ランダムアクセスメモリ(DRAM、SRAM、SDRAMなどのRAM))および不揮発性メモリ要素(例えば、ROM、消去可能プログラム可能読み取り専用メモリ(EPROM)、電子消去可能プログラム可能読み取り専用メモリ(EEPROM)、プログラム可能読み取り専用メモリ(PROM))のいずれか1つまたは組み合わせを含むことができる。メモリ710は、様々な構成要素が互いに離れた場所に位置しているが、プロセッサ705によってアクセスすることができる、分散アーキテクチャを有することができることに留意されたい。
メモリ710内のソフトウェアは、1または複数の別個のプログラムを含むことができ、その各々は、論理機能、特に本発明の実施形態に関与する機能を実装するための実行可能命令の順序付けられたリストを含む。図7の例では、メモリ710内のソフトウェアは、命令712、例えば、データベース管理システムのようなデータベースを管理するための命令を含む。
メモリ710内のソフトウェアはまた、典型的には、適切なオペレーティングシステム(OS)711を含む。OS711は、本明細書に記載の方法を実装するための、場合によってはソフトウェア712など、他のコンピュータプログラムの実行を本質的に制御する。
本明細書で説明する方法は、ソースプログラム712、実行可能プログラム712(オブジェクトコード)、スクリプト、または実行されるべき命令712のセットを含む任意の他の実体の形態であってよい。ソースプログラムの場合、OS711と関連して適切に動作するように、メモリ710内に含まれていてもいなくてもよいコンパイラ、アセンブラ、インタプリタなどを介して、プログラムを翻訳する必要がある。さらに、方法は、データおよび方法のクラスを有するオブジェクト指向プログラミング言語、またはルーチン、サブルーチン、もしくは関数、またはその組み合わせを有する手続き型プログラミング言語として記述することができる。
例示的な実施形態では、従来のキーボード750およびマウス755が、入力/出力コントローラ735に結合され得る。I/Oデバイス745などの他の出力デバイスは、例えば、限定されないが、プリンタ、スキャナ、マイクロフォンなどの入力デバイスを含むことができる。最後に、I/Oデバイス10および745は、入力と出力の両方を通信するデバイス、例えば、ネットワークインタフェースカード(NIC)または変調器/復調器(他のファイル、デバイス、システム、またはネットワークにアクセスするための)、無線周波(RF)または他のトランシーバ、テレフォニックインタフェース、ブリッジ、ルータなどをさらに含むことができるが、これらに限られるものではない。I/Oデバイス10および745は、当技術分野で知られている任意の一般化された暗号化カードまたはスマートカードであり得る。システム700は、ディスプレイ730に結合されたディスプレイコントローラ725をさらに含むことができる。例示的な実施形態では、システム700は、ネットワーク765に結合するためのネットワークインタフェースをさらに含むことができる。ネットワーク765は、ブロードバンド接続を介してコンピュータ701と任意の外部サーバ、クライアントなどとの間の通信のためのIPベースのネットワークであり得る。ネットワーク765は、コンピュータ701と外部システム30との間でデータを送信および受信し、これらのシステムは、本明細書で論じる方法のステップの一部、または全部を実行するために関与する可能性がある。例示的な実施形態において、ネットワーク765は、サービスプロバイダによって管理される、管理されたIPネットワークであり得る。ネットワーク765は、例えば、WiFi、WiMaxなどの無線プロトコルおよび技術を使用して、無線方式で実装することができる。ネットワーク765はまた、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロポリタンエリアネットワーク、インターネットネットワーク、または他の同様のタイプのネットワーク環境などのパケット交換ネットワークであり得る。ネットワーク765は、固定無線ネットワーク、無線ローカルエリアネットワーク(WLAN)、無線ワイドエリアネットワーク(WWAN)、パーソナルエリアネットワーク(PAN)、仮想プライベートネットワーク(VPN)、イントラネットまたは他の適切なネットワークシステムであってもよく、信号を受信および送信するための装置を含む。
コンピュータ701がPC、ワークステーション、インテリジェントデバイスなどである場合、メモリ710内のソフトウェアは、BIOS(basic input output system)722をさらに含み得る。BIOSは、起動時にハードウェアを初期化してテストし、OS711を起動し、ハードウェアデバイス間のデータ転送をサポートする必須のソフトウェアルーチンのセットである。BIOSは、コンピュータ701が起動したときに実行できるように、ROMに記憶される。
コンピュータ701が動作しているとき、プロセッサ705は、メモリ710内に記憶されたソフトウェア712を実行し、メモリ710との間でデータを通信し、ソフトウェアに従ってコンピュータ701の動作を概して制御するように構成される。本明細書に記載された方法およびOS711は、全体的または部分的に、しかし典型的には後者で、プロセッサ705によって読み取られ、場合によってはプロセッサ705内でバッファリングされ、その後実行される。
本明細書に記載されたシステムおよび方法が、図7に示されるように、ソフトウェア712で実装される場合、方法は、任意のコンピュータ関連システムまたは方法によってまたはそれに関連して使用するために、ストレージ720などの任意のコンピュータ可読媒体に記憶することができる。ストレージ720は、HDDストレージのようなディスクストレージを含み得る。
本明細書で説明するプログラムは、本発明の特定の実施形態で実装されるアプリケーションに基づいて特定される。しかし、本明細書における任意の特定のプログラム命名法は、単に便宜上使用されており、したがって、本発明は、かかる命名法によって特定もしくは暗示またはその両方がなされる任意の特定のアプリケーションにおける使用のみに限定されるべきではないことを理解されたい。
本発明は、システム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバまたはその組み合わせで構成される。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するために汎用コンピュータ、専用コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶された命令を有するコンピュータ可読記憶媒体が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1つまたは複数の実行可能命令を構成する。いくつかの代替の実装では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
Claims (20)
- 1または複数のプロセッサによって、ターゲットデータベースシステムにおけるテーブルへの変更を適用するための少なくとも2つのアプリケーションアルゴリズムを提供することと、
前記1または複数のプロセッサによって、前記少なくとも2つのアプリケーションアルゴリズムの各アプリケーションアルゴリズムについて、それぞれの前記アプリケーションアルゴリズムによって前記テーブルに適用される変更のサイズに対する各アプリケーションアルゴリズムの性能動作を決定することと、
前記1または複数のプロセッサによって、前記テーブルへの変更を適用するためのデータ変更要求を受信することと、
前記1または複数のプロセッサによって、前記テーブルへの前記変更のサイズを決定することと、
前記1または複数のプロセッサによって、各アプリケーションアルゴリズムの前記性能動作に基づいて、前記サイズに最適な性能を提供する少なくとも2つのアプリケーションアルゴリズムのうちの1つを選択することと、
前記1または複数のプロセッサによって、前記サイズに対して前記最適な性能を提供する前記選択されたアプリケーションアルゴリズムを使用して、前記テーブルへの前記変更を適用することと、
を含む、コンピュータ実装方法。 - 前記テーブルへの前記変更を前記適用することは、
前記1または複数のプロセッサによって、前記テーブルへの前記変更の適用による、前記選択されたアプリケーションアルゴリズムの性能を評価することと、
前記1または複数のプロセッサによって、前記選択されたアプリケーションアルゴリズムの前記性能と前記テーブルの前記サイズとを使用して、前記選択されたアプリケーションアルゴリズムの前記性能動作を更新することと、
をさらに含む、請求項1に記載のコンピュータ実装方法。 - 前記1または複数のプロセッサによって、前記テーブルの受信した各データ変更要求について、前記サイズの前記決定と、前記選択と、前記適用と、を繰り返すことと、
前記1または複数のプロセッサによって、前記テーブルの前記性能動作を動的に更新することと、
をさらに含む、請求項2に記載のコンピュータ実装方法。 - 前記1または複数のプロセッサによって、前記ターゲットデータベースシステムのさらなる各テーブルに対してそれぞれの前記性能動作を決定することであって、その結果、前記ターゲットデータベースシステムの各テーブルがそれぞれの性能動作と関連付けられる、決定することと、
前記1または複数のプロセッサによって、特定のテーブルに関連する前記性能動作を使用して、前記ターゲットデータベースシステムの前記特定のテーブルの各受信したデータ変更要求について、前記サイズの前記決定と、前記選択と、前記適用と、を繰り返すことと、
をさらに含む、請求項1に記載のコンピュータ実装方法。 - 各アプリケーションアルゴリズムの前記性能動作を前記決定することは、
前記1または複数のプロセッサによって、前記テーブルへのデータ変更をそれぞれ適用するために、前記それぞれのアプリケーションアルゴリズムを事前定義された数N回実行することであって、各適用されたデータ変更はサイズを有する、実行することと、
前記1または複数のプロセッサによって、前記データ変更の各データ変更について、前記アプリケーションアルゴリズムの前記実行の性能を示す少なくとも1つの性能パラメータを評価することと、
前記1または複数のプロセッサによって、前記性能動作を表すN個のデータポイントのデータ構造を提供することであって、各データポイントは、前記少なくとも1つの性能パラメータおよび前記データ変更の関連するサイズを示す、提供することと、
を含む、請求項1に記載のコンピュータ実装方法。 - 前記事前定義された数Nは、設定可能な最大実行数よりも小さく、
前記1または複数のプロセッサによって、前記N個のデータポイントの補間を使用して、前記データ構造内の新しいデータポイントを構築すること、
をさらに含む、請求項5に記載のコンピュータ実装方法。 - 前記性能パラメータは、実行時間およびメモリ使用量からなる群から選択される、請求項5に記載のコンピュータ実装方法。
- 前記変更の前記サイズは、挿入されるレコードの数、削除されるレコードの数、および更新されるレコードの数の少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
- 前記アプリケーションアルゴリズムを前記選択することは、
前記1または複数のプロセッサによって、前記サイズに対する2つのアプリケーションアルゴリズムの前記性能が類似しているかどうかを決定することと、
前記サイズに対する2つのアプリケーションアルゴリズムの前記性能が類似していると決定することに応答して、前記1または複数のプロセッサによって前記2つのアプリケーションアルゴリズムのうちのいずれか1つを選択することと、
を含む、請求項1に記載のコンピュータ実装方法。 - 前記選択されたアプリケーションアルゴリズムは、レコードバルクロードベースのアプリケーションおよび個別レコードロードベースのアプリケーションからなる群から選択される、請求項1に記載のコンピュータ実装方法。
- 前記1または複数のプロセッサによって、ソースデータベースシステム内の前記テーブルに関連付けられたソーステーブルを提供することであって、前記ソースデータベースシステムおよび前記ターゲットデータベースシステムは、互いの間でデータを同期するように構成される、提供すること、をさらに含み、
前記データ変更要求が、データ変更が前記ソーステーブルに適用されたことに応答して受信され、それによって前記データ変更が複製される、請求項1に記載のコンピュータ実装方法。 - 1または複数のコンピュータ可読記憶媒体と、前記1または複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令であって、前記記憶されたプログラム命令は、
ターゲットデータベースシステムにおけるテーブルへの変更を適用するための少なくとも2つのアプリケーションアルゴリズムを提供するプログラム命令と、
前記少なくとも2つのアプリケーションアルゴリズムの各アプリケーションアルゴリズムについて、それぞれの前記アプリケーションアルゴリズムによって前記テーブルに適用される変更のサイズに対する各アプリケーションアルゴリズムの性能動作を決定するプログラム命令と、
前記テーブルへの変更を適用するためのデータ変更要求を受信するプログラム命令と、
前記テーブルへの前記変更のサイズを決定するプログラム命令と、
各アプリケーションアルゴリズムの前記性能動作に基づいて、前記サイズに最適な性能を提供する少なくとも2つのアプリケーションアルゴリズムのうちの1つを選択するプログラム命令と、
前記サイズに対して前記最適な性能を提供する前記選択されたアプリケーションアルゴリズムを使用して、前記テーブルへの前記変更を適用するプログラム命令と、
を含む、コンピュータプログラム製品。 - 前記テーブルへの前記変更を適用する前記プログラム命令は、
前記テーブルへの前記変更の適用による、前記選択されたアプリケーションアルゴリズムの性能を評価するプログラム命令と、
前記選択されたアプリケーションアルゴリズムの前記性能と前記テーブルの前記サイズとを使用して、前記選択されたアプリケーションアルゴリズムの前記性能動作を更新するプログラム命令と、
をさらに含む、請求項12に記載のコンピュータプログラム製品。 - 前記テーブルの受信した各データ変更要求について、前記サイズを決定する前記プログラム命令と、選択する前記プログラム命令と、適用する前記プログラム命令と、を繰り返すプログラム命令と、
前記テーブルの前記性能動作を動的に更新するプログラム命令と、
をさらに含む、請求項13に記載のコンピュータプログラム製品。 - 前記ターゲットデータベースシステムのさらなる各テーブルに対してそれぞれの前記性能動作を決定するプログラム命令であって、その結果、前記ターゲットデータベースシステムの各テーブルがそれぞれの性能動作と関連付けられる、プログラム命令と、
特定のテーブルに関連する前記性能動作を使用して、前記ターゲットデータベースシステムの前記特定のテーブルの各受信したデータ変更要求について、前記サイズを決定する前記プログラム命令と、選択する前記プログラム命令と、適用する前記プログラム命令と、を繰り返すプログラム命令と、
をさらに含む、請求項12に記載のコンピュータプログラム製品。 - 各アプリケーションアルゴリズムの前記性能動作を決定する前記プログラム命令は、
前記テーブルへのデータ変更をそれぞれ適用するために、前記それぞれのアプリケーションアルゴリズムを事前定義された数N回実行するプログラム命令であって、各適用されたデータ変更はサイズを有する、プログラム命令と、
前記データ変更の各データ変更について、前記アプリケーションアルゴリズムの前記実行の性能を示す少なくとも1つの性能パラメータを評価するプログラム命令と、
前記性能動作を表すN個のデータポイントのデータ構造を提供するプログラム命令であって、各データポイントは、前記少なくとも1つの性能パラメータおよび前記データ変更の関連するサイズを示す、プログラム命令と、
を含む、請求項12に記載のコンピュータプログラム製品。 - 1または複数のコンピュータプロセッサと、
1または複数のコンピュータ可読記憶媒体と、
前記1または複数のコンピュータプロセッサの少なくとも1つによって実行するために前記1または複数のコンピュータ可読記憶媒体に集合的に記憶されたプログラム命令であって、前記記憶されたプログラム命令は、
ターゲットデータベースシステムにおけるテーブルへの変更を適用するための少なくとも2つのアプリケーションアルゴリズムを提供するプログラム命令と、
前記少なくとも2つのアプリケーションアルゴリズムの各アプリケーションアルゴリズムについて、それぞれの前記アプリケーションアルゴリズムによって前記テーブルに適用される変更のサイズに対する各アプリケーションアルゴリズムの性能動作を決定するプログラム命令と、
前記テーブルへの変更を適用するためのデータ変更要求を受信するプログラム命令と、
前記テーブルへの前記変更のサイズを決定するプログラム命令と、
各アプリケーションアルゴリズムの前記性能動作に基づいて、前記サイズに最適な性能を提供する少なくとも2つのアプリケーションアルゴリズムのうちの1つを選択するプログラム命令と、
前記サイズに対して前記最適な性能を提供する前記選択されたアプリケーションアルゴリズムを使用して、前記テーブルへの前記変更を適用するプログラム命令と、
を含む、コンピュータシステム。 - 前記テーブルへの前記変更を適用する前記プログラム命令は、
前記テーブルへの前記変更の適用による、前記選択されたアプリケーションアルゴリズムの性能を評価するプログラム命令と、
前記選択されたアプリケーションアルゴリズムの前記性能と前記テーブルの前記サイズとを使用して、前記選択されたアプリケーションアルゴリズムの前記性能動作を更新するプログラム命令と、
をさらに含む、請求項17に記載のコンピュータシステム。 - 前記テーブルの受信した各データ変更要求について、前記サイズを決定する前記プログラム命令と、選択する前記プログラム命令と、適用する前記プログラム命令と、を繰り返すプログラム命令と、
前記テーブルの前記性能動作を動的に更新するプログラム命令と、
をさらに含む、請求項18に記載のコンピュータシステム。 - 前記ターゲットデータベースシステムのさらなる各テーブルに対してそれぞれの前記性能動作を決定するプログラム命令であって、その結果、前記ターゲットデータベースシステムの各テーブルがそれぞれの性能動作と関連付けられる、プログラム命令と、
特定のテーブルに関連する前記性能動作を使用して、前記ターゲットデータベースシステムの前記特定のテーブルの各受信したデータ変更要求について、前記サイズを決定する前記プログラム命令と、選択する前記プログラム命令と、適用する前記プログラム命令と、を繰り返すプログラム命令と、
をさらに含む、請求項17に記載のコンピュータシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/148,644 | 2021-01-14 | ||
US17/148,644 US11954119B2 (en) | 2021-01-14 | 2021-01-14 | Applying changes in a target database system |
PCT/CN2022/071056 WO2022152085A1 (en) | 2021-01-14 | 2022-01-10 | Applying changes in a target database system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024503445A true JP2024503445A (ja) | 2024-01-25 |
Family
ID=82321871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023542593A Pending JP2024503445A (ja) | 2021-01-14 | 2022-01-10 | ターゲットデータベースシステムにおける変更の適用 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11954119B2 (ja) |
JP (1) | JP2024503445A (ja) |
CN (1) | CN116685961A (ja) |
DE (1) | DE112022000344T5 (ja) |
GB (1) | GB2618022A (ja) |
WO (1) | WO2022152085A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11675809B2 (en) | 2021-03-02 | 2023-06-13 | International Business Machines Corporation | Replicating data changes using multiple storage devices and tracking records of pending data changes stored on the storage devices |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6745209B2 (en) | 2001-08-15 | 2004-06-01 | Iti, Inc. | Synchronization of plural databases in a database replication system |
US8589346B2 (en) * | 2011-04-26 | 2013-11-19 | Oracle International Corporation | Techniques for combining statement level, procedural, and row level replication |
US7543000B2 (en) * | 2006-01-23 | 2009-06-02 | International Business Machines Corporation | Method and system combining state replication and operational-replay synchronization |
US7627612B2 (en) * | 2006-09-28 | 2009-12-01 | Emc Israel Development Center, Ltd. | Methods and apparatus for optimal journaling for continuous data replication |
US8799213B2 (en) * | 2007-07-31 | 2014-08-05 | Oracle International Corporation | Combining capture and apply in a distributed information sharing system |
US7979652B1 (en) * | 2007-12-20 | 2011-07-12 | Amazon Technologies, Inc. | System and method for M-synchronous replication |
US8751441B2 (en) * | 2008-07-31 | 2014-06-10 | Sybase, Inc. | System, method, and computer program product for determining SQL replication process |
US8935612B2 (en) * | 2010-04-07 | 2015-01-13 | Sybase, Inc. | Data replication tracing |
US8949488B2 (en) | 2013-02-15 | 2015-02-03 | Compellent Technologies | Data replication with dynamic compression |
US9128628B1 (en) | 2013-03-13 | 2015-09-08 | Emc Corporation | Dynamic replication mode switching |
US9507844B2 (en) | 2014-03-28 | 2016-11-29 | International Business Machines Corporation | Automatic adjustment of data replication based on data access |
US11144397B2 (en) * | 2014-09-12 | 2021-10-12 | Microsoft Technology Licensing, Llc | Data recovery using bitmap data structure |
US11354665B1 (en) * | 2014-11-11 | 2022-06-07 | HYPR Corp. | Systems and methods for facilitating spending digital currency without owning digital currency |
US20170017680A1 (en) * | 2015-07-13 | 2017-01-19 | Codership Oy | Method for handling writes in database clusters with temporarily disjoint nodes |
CN107025242A (zh) | 2016-02-02 | 2017-08-08 | 南京中兴新软件有限责任公司 | 数据库间数据的复制方法及装置 |
US11016955B2 (en) * | 2016-04-15 | 2021-05-25 | Hitachi Vantara Llc | Deduplication index enabling scalability |
GB201615748D0 (en) | 2016-09-15 | 2016-11-02 | Gb Gas Holdings Ltd | System for importing data into a data repository |
US11487714B2 (en) * | 2019-05-15 | 2022-11-01 | International Business Machines Corporation | Data replication in a data analysis system |
US11269925B2 (en) | 2019-05-15 | 2022-03-08 | International Business Machines Corporation | Data synchronization in a data analysis system |
CN110795508B (zh) * | 2019-11-04 | 2023-04-07 | 中国建设银行股份有限公司 | 数据的复制方法、装置、设备和存储介质 |
-
2021
- 2021-01-14 US US17/148,644 patent/US11954119B2/en active Active
-
2022
- 2022-01-10 DE DE112022000344.8T patent/DE112022000344T5/de active Pending
- 2022-01-10 WO PCT/CN2022/071056 patent/WO2022152085A1/en active Application Filing
- 2022-01-10 CN CN202280009263.1A patent/CN116685961A/zh active Pending
- 2022-01-10 JP JP2023542593A patent/JP2024503445A/ja active Pending
- 2022-01-10 GB GB2311912.6A patent/GB2618022A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
DE112022000344T5 (de) | 2023-10-19 |
CN116685961A (zh) | 2023-09-01 |
US11954119B2 (en) | 2024-04-09 |
GB202311912D0 (en) | 2023-09-20 |
WO2022152085A1 (en) | 2022-07-21 |
US20220222271A1 (en) | 2022-07-14 |
GB2618022A (en) | 2023-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8874512B2 (en) | Data replication method and system for database management system | |
US9792321B2 (en) | Online database migration | |
CN110222036B (zh) | 用于自动数据库迁移的方法和系统 | |
US9811577B2 (en) | Asynchronous data replication using an external buffer table | |
US20200081901A1 (en) | Determining data replication cost for cloud based application | |
US10997127B2 (en) | Preventing inefficient recalls in a hierarchical storage management (HSM) system | |
US11487714B2 (en) | Data replication in a data analysis system | |
CN112368673A (zh) | 确定用于数据集和用于迁移数据集的最优存储环境 | |
WO2016070111A1 (en) | Cross-platform data synchronization | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
US11475043B2 (en) | Machine learning based application of changes in a target database system | |
US11893041B2 (en) | Data synchronization between a source database system and target database system | |
US20220156277A1 (en) | Data synchronization in a data analysis system | |
CN108475201A (zh) | 一种虚拟机启动过程中的数据获取方法和云计算系统 | |
JP2024503445A (ja) | ターゲットデータベースシステムにおける変更の適用 | |
US11080298B2 (en) | Data replication in a database environment | |
AU2021268828B2 (en) | Secure data replication in distributed data storage environments | |
Shaik et al. | Beginning PostgreSQL on the Cloud: Simplifying Database as a Service on Cloud Platforms | |
CN114003555A (zh) | 一种数据管理方法、系统、计算机设备及存储介质 | |
CN114490509A (zh) | 跟踪改变数据捕获日志历史 | |
US20230094789A1 (en) | Data distribution in target database systems | |
Rosinosky et al. | A methodology for tenant migration in legacy shared-table multi-tenant applications | |
US20230101740A1 (en) | Data distribution in data analysis systems | |
US20230153327A1 (en) | Loading data in a target database system using different synchronization programs | |
Larsson | RUNNING DATABASES IN A KUBERNETES CLUSTERAn evaluation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20231006 |