(57)【特許請求の範囲】
【請求項１】
データ同期化方法であって、
同期化予定のデータを保存されているソースデータテーブルに基づいて複数のターゲットデータテーブルを確立することと、
前記複数のターゲットデータテーブルのなかから現ターゲットデータテーブルを決定することと、
前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することであって、
前記ソースデータテーブル内において同期化予定データによって占有されている幾つかのストレージ範囲を決定すること、
前記それぞれのストレージ範囲内における前記同期化予定データのストレージアドレス情報を決定すること、
前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化すること、
を含む、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することと、
同期化が成功した場合に、前記現ターゲットデータテーブルにアクセスするようにアプリケーションサーバに指示することと、
を備える方法。
【請求項２】
請求項１に記載の方法であって、
前記アプリケーションサーバは、前記現ターゲットデータテーブルを指し示すように事前に更新された上位ビューを通じて前記現ターゲットデータテーブルにアクセスするように指示される、方法。
【請求項３】
請求項１に記載の方法であって、
前記複数のターゲットデータテーブルのなかから前記現ターゲットデータテーブルを決定することは、
前記複数のターゲットデータテーブル内のぞれぞれのデータレコードの数を決定することと、
前記ターゲットデータテーブルのうち前記データレコードの数がゼロである１つのターゲットデータテーブルを前記現ターゲットデータテーブルとして選択することと、
を含む、方法。
【請求項４】
請求項１に記載の方法であって、
前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することは、前記ストレージアドレス情報にしたがって、前記それぞれのストレージ範囲内の前記データを１つのデータ同期化プロセスにおいて順次、前記現ターゲットデータテーブルへ同期化することを含む、方法。
【請求項５】
請求項１に記載の方法であって、
前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することは、
前記ストレージ範囲をＮ個のグループに分割することと、
対応するＮ個のデータ同期化プロセスを開始させることと、
前記ストレージアドレス情報にしたがって、前記グループのうちの対応する１つのグループの前記それぞれのストレージ範囲内の前記データを、前記データ同期化プロセスのうちの各プロセスにおいて順次、前記現ターゲットデータテーブルへ同期化することと、
を含む、方法。
【請求項６】
請求項１に記載の方法であって、更に、
前記同期化が失敗した場合に、前記それぞれのストレージ範囲内の前記データを前記現ターゲットデータテーブルへ同期化し直すことと、
やり直しの回数がプリセット閾値を超えたときに、前記ストレージ範囲内の前記データを同期化することを終了させることと、
を備える方法。
【請求項７】
請求項１に記載の方法であって、更に、
前記ソースデータテーブルと前記現ターゲットデータテーブルとの同期化が成功した場合、前記現ターゲットデータテーブル以外のターゲットデータテーブルの内容を消去することを備える方法。
【請求項８】
データ同期化システムであって、
１つ又は２つ以上のプロセッサであって、
同期化予定のデータを保存されているソースデータテーブルに基づいて複数のターゲットデータテーブルを確立し、
前記複数のターゲットデータテーブルのなかから現ターゲットデータテーブルを決定し、
前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化し、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することは、
前記ソースデータテーブル内において同期化予定データによって占有されている幾つかのストレージ範囲を決定し、
前記それぞれのストレージ範囲内における前記同期化予定データのストレージアドレス情報を決定し、
前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化すること、
を含み、及び
同期化が成功した場合に、前記現ターゲットデータテーブルにアクセスするようにアプリケーションサーバに指示するように、
構成されたプロセッサと、
前記１つ又は２つ以上のプロセッサに結合され、前記１つ又は複数のプロセッサに命令を提供するように構成されたメモリと、
を備えるシステム。
【請求項９】
請求項８に記載のシステムであって、
前記アプリケーションサーバは、前記現ターゲットデータテーブルを指し示すように事前に更新された上位ビューを通じて前記現ターゲットデータテーブルにアクセスするように指示される、システム。
【請求項１０】
請求項８に記載のシステムであって、
前記複数のターゲットデータテーブルのなかから前記現ターゲットデータテーブルを決定することは、
前記複数のターゲットデータテーブル内のそれぞれのデータレコードの数を決定することと、
前記ターゲットデータテーブルのうち前記データレコードの数がゼロである１つのターゲットデータテーブルを前記現ターゲットデータテーブルとして選択することと、
を含む、システム。
【請求項１１】
請求項８に記載のシステムであって、
前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することは、前記ストレージアドレス情報にしたがって、前記それぞれのストレージ範囲内の前記データを１つのデータ同期化プロセスにおいて順次、前記現ターゲットデータテーブルへ同期化することを含む、システム。
【請求項１２】
請求項８に記載のシステムであって、
前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することは、
前記ストレージ範囲をＮ個のグループに分割することと、
対応するＮ個のデータ同期化プロセスを開始させることと、
前記ストレージアドレス情報にしたがって、前記グループのうちの対応する１つのグループの前記それぞれのストレージ範囲内の前記データを、前記データ同期化プロセスのうちの各プロセスにおいて順次、前記現ターゲットデータテーブルへ同期化することと、
を含む、システム。
【請求項１３】
請求項８に記載のシステムであって、
前記１つ又は２つ以上のプロセッサは、更に、
前記同期化が失敗したときに、前記それぞれのストレージ範囲内の前記データを前記現ターゲットデータテーブルへ同期化し直すように、及び
やり直しの回数がプリセット閾値を超えたときに、前記ストレージ範囲内の前記データを同期化することを終了させるように、
構成される、システム。
【請求項１４】
請求項８に記載のシステムであって、
前記１つ又は２つ以上のプロセッサは、更に、前記ソースデータテーブルと前記現ターゲットデータテーブルとの同期化が成功した場合に、前記現ターゲットデータテーブル以外のターゲットデータテーブルの内容を消去するように構成される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
本出願は、２００８年１２月１０日付けで出願された、発明の名称を「DATA SYNCHRONIZATION METHOD AND DEVICE（データ同期化の方法及びデバイス）」とする中国特許出願第２００８１０１７９３９４．６号の優先権を主張する。当該出願は、あらゆる目的のために参照によって本明細書に組み込まれる。
【０００２】
本発明は、コンピュータの分野に関し、特に、データ同期化の方法及びシステムに関する。
【背景技術】
【０００３】
大規模な電子商取引ウェブサイトでは、フロントエンドアプリケーションサーバによるクエリを処理するために、バックエンドデータウェアハウスと、オンライントランザクション処理（OLTP）用のORACLE（商標）データベースなどのフロントエンドデータベースとを、同期化させることが、しばしば必要とされる。
【０００４】
ORACLEデータベースは、アンドゥ／ロールバックテーブルスペースを含む。あるセッションがデータベースに対してデータ操作言語（DML）で更新及び削除の動作を実施するとき、アンドゥ／ロールバックテーブルスペースに、データ行に作用するローデータが保存される。問題のセッションがコミットされる前に別のセッションがこれらのデータ行にアクセスするときは、このセッションは、データが変更されたがまだコミットされていない旨の表示を受信し、保存されたアンドゥ／ロールバックアドレス情報にしたがってアンドゥ／ロールバックテーブルスペースからローデータを読み出す。占有されたロールバックセグメントは、問題のセッションがコミットされるまで又はロールバックが終了されるまで解放されない。
【０００５】
図１は、代表的なデータ同期化技術を示した図である。この例では、テーブルｔ１は、フロントエンドOLTP ORACLEデータベースにあるテーブルであり、データウェアハウス（DW）は、バックエンドデータウェアハウスであり、アプリケーションサーバは、テーブルｔ１からデータを読み出す。代表的なデータ同期化技術は、以下の通りである（以下のコマンドは、全て、フロントエンドデータベースで実行される）。すなわち、第１のステップでは、ユーザテーブルｔ１内のデータが、delete from schema1.tablenameなどのコマンドを使用して削除され、削除されたデータは、アンドゥ／ロールバックテーブルスペースに一時的に保存され、第２のステップでは、バックエンドデータウェアハウスのユーザテーブルｔ２からデータが読み出され、insert into schema 1.tablename select * from schema2.tablename@lnk_dwなどのコマンドを使用してユーザテーブルｔ１に挿入され、同期化されたがコミットされていないデータもまた、アンドゥ／ロールバックテーブルスペースに一時的に保存され、第３のステップでは、データはコミットされ、第４のステップでは、もし異常が発生した場合にデータがロールバックされる。ORACLEデータベースは、フロントエンド及びデータウェアハウスの両方に採用されるので、データは、データベースリンクを介して直接的にインポート／エクスポートすることができる。例えば、上記ステップの第２のステップで使用されるlnk_dwは、データベースリンクを表わす。
【０００６】
上記のデータ同期化技術では、同じデータサービスの全ての動作が同じテーブル上で実施される、すなわち、バックエンドデータウェアハウスのテーブルはフロントエンドデータベースのテーブルに対応している。このように、動作中は、アンドゥ／ロールバックテーブルスペースに大量のデータを保存する必要がある。既存の技術には、以下の短所がある。
【０００７】
（１）上記のステップでは、アンドゥ／ロールバックテーブルスペースのかなりの部分が第１及び第２のステップで使用され、問題を発生させやすい。例えば、もしアンドゥ／ロールバックテーブルスペースが使い尽くされると、サービスの通常の過程で呼び出される「挿入」、「更新」、及び「削除」などの他の通常DML動作が影響を受ける恐れがある。ピーク期間中にアンドゥ／ロールバックテーブルスペースが満杯になると、アプリケーションサーバからデータベースに送信された各DML宣言は待機しなければならず、サーバにおける接続プールが満杯になる。この結果、アプリケーションサーバに到着するますます多くの要求が接続待ちしなければならず、アプリケーションサーバ上のメモリなどのリソースが使い尽くされてアプリケーションサーバを正常に機能させなくするという悪循環が生じる。
【０００８】
（２）第１及び第２のステップの実行には、長時間要する可能性がある。この時間中に異常が発生すると、第４のロールバックステップが実行される。すると、システムは、誤差耐性に乏しくなる。ロールバックされるデータが大量にあると、ロールバック動作の実施が長期に及び、生産データベースのパフォーマンスを低下させる可能性がある。
【０００９】
（３）データの同期化は、主として第１のステップの削除動作ゆえに、非効率的である。
【００１０】
（４）断絶された移送を復旧させるのは、困難である。
【００１１】
（５）データの同期化の進行は、監視が容易でない。
【００１２】
同期化されるデータの量が増すほど、フロントエンドORACLEデータベースのアンドゥ／ロールバックテーブルスペースは満杯になりやすく、これは、システムのパフォーマンスに悪影響を及ぼす。
【図面の簡単な説明】
【００１３】
以下の詳細な説明及び添付の図面において、本発明の各種の実施形態が開示される。
【００１４】
【図１】代表的なデータ同期化技術を示した図である。
【００１５】
【図２】データ同期化システムの一実施形態を示した図である。
【００１６】
【図３】ソースデータテーブルとターゲットデータテーブルとの間でデータを同期化するためのデータ同期化プロセスの一実施形態を示したフローチャートである。
【００１７】
【図４】アプリケーションサーバがテーブルｔ１にアクセスし、データがバックエンドデータウェアハウスからヌルテーブルｔ２へ同期化される一例を示す図である。
【００１８】
【図５】アプリケーションサーバがテーブルｔ２にアクセスし、データがバックエンドデータウェアハウスからヌルテーブルｔ１へ同期化される一例を示す図である。
【００１９】
【図６】ソースデータテーブル（例：バックエンドデータウェアハウス内のデータテーブル）とターゲットデータテーブル（例：フロントエンドORACLEデータベース内のデータテーブル）との間でデータを同期化するためのデータ同期化プロセスの実施形態を示したフローチャートである。
【図７】ソースデータテーブル（例：バックエンドデータウェアハウス内のデータテーブル）とターゲットデータテーブル（例：フロントエンドORACLEデータベース内のデータテーブル）との間でデータを同期化するためのデータ同期化プロセスの実施形態を示したフローチャートである。
【００２０】
【図８】ソースデータテーブルと現ターゲットデータテーブルとを同期化するためのプロセスの一実施形態を示したフローチャートである。
【００２１】
【図９】ストレージフォーマットの一実施形態を示した図である。
【００２２】
【図１０】ソースデータテーブルから現ターゲットデータテーブルへセグメント式にデータを同期化するためのプロセスの一実施形態を示したフローチャートである。
【００２３】
【図１１】データ同期化システムを示したブロック図である。
【００２４】
【図１２】マルチプロセスデータ同期化システムを示したブロック図である。
【発明を実施するための形態】
【００２５】
本発明は、プロセス、装置、システム、合成物、コンピュータ可読記憶媒体に盛り込まれたコンピュータプログラム製品、並びに／又は結合先のメモリに格納された命令及び／若しくは結合先のメモリによって提供される命令を実行するように構成されたプロセッサを含む、数々の形態で実現することができる。本明細書では、これらの実現の形態、又は本発明が取り得るその他の任意の形態は、技術と称することができる。総じて、開示されたプロセスのステップの順序は、本発明の範囲内で変更され得る。別途明記されない限り、タスクを実施するように構成されるものとして説明されるプロセッサ又はメモリなどのコンポーネントは、所定時にそのタスクを実施するように一時的に構成される汎用コンポーネント、又はそのタスクを実施するように製造された特殊コンポーネントとして導入され得る。本明細書で使用される「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された１つ又は複数のデバイス、回路、及び／又は処理コアを意味するものとする。
【００２６】
発明の原理を例示した添付の図面を伴って、以下で、発明の１つ又は複数の実施形態に関する詳細な説明が提供される。発明は、このような実施形態に関連して説明されるが、どの実施形態にも限定されない。発明の範囲は、特許請求の範囲によってのみ限定され、数々の代替、変更、及び等価な形態を内包する。以下の説明では、発明の完全な理解を可能にするために、数々の詳細が特定される。これらの詳細は、例示目的で提供されるものであり、発明は、これらの詳細の一部又は全部を伴わなくても特許請求の範囲にしたがって実施され得る。明瞭さを期するため、発明に関連した技術分野で知られている技工物は、発明が不必要に不明瞭にされないように、詳細な説明を省略されている。
【００２７】
図２は、データ同期化システムの一実施形態を示した図である。同じデータサービスについて、２つ又は３つ以上のターゲットデータテーブル（図２には、ターゲットデータテーブル１及びターゲットデータテーブル２が示されている）が予め確立される。ターゲットデータテーブルは、同期化予定のデータが格納されたソースデータテーブルに対応している。この例では、各ソースデータテーブルは、交互に使用される２つのターゲットデータテーブルに対応している。ソースデータテーブル及びターゲットデータテーブルは、バックエンドデータウェアハウス内に、又はORACLEなどのフロントエンドデータベース内に存在することができる。或いは、ソースデータテーブルがバックエンドデータウェアハウス内に、ターゲットデータテーブルがフロントエンドデータベース内にそれぞれ存在することができる、又はその逆であっても良い。
【００２８】
この例では、アプリケーションサーバによるターゲットデータテーブルアクセスを促すために、上位ビューが予め確立される。上位ビューは、データベースサーバ上、アプリケーションサーバ上、又はその他の適切なデバイス上に確立され得る。一部の実施形態では、上位ビューは、ターゲットデータテーブルへのポインタ、ハンドル、又はその他の適切な参照として実装される。一部の実装形態では、上位ビューは、ターゲットデータテーブルへポインタ又は参照を返す関数として実装される。アプリケーションサーバは、上位レベルによって指し示される又は参照されるターゲットデータテーブルにアクセスする。図２に示されるように、例えば、上位ビューがターゲットデータテーブル１を指し示すときは、アプリケーションサーバは、上位ビューを介してターゲットデータテーブル１内のデータにアクセスすることができる。その間、ターゲットデータテーブル２は、アクセスを受けず、同期化を所望されるデータがソースデータテーブル内にある場合には、ターゲットデータテーブル２と同期化することができる。同様に、上位ビューがターゲットデータテーブル２を指し示すときは、アプリケーションサーバは、上位ビューを通してターゲットデータテーブル２内のデータにアクセスすることができる。ターゲットデータテーブル１は、このときはアクセスされないので、同期化を必要とするソースデータテーブル内のデータは、ターゲットデータテーブル１と同期化することができる。このように、データ同期化プロセス及びデータアクセスプロセスは、別々のテーブル上で実施され、衝突が回避される。
【００２９】
図３は、ソースデータテーブルとターゲットデータテーブルとの間でデータを同期化するためのデータ同期化プロセスの一実施形態を示したフローチャートである。プロセスは、ウェブサーバやデータベースサーバなどのサーバ上で、又はデータベース及びアプリケーションサーバの両方とやり取りするその他の任意の適切なデバイス上で実施され得る。
【００３０】
ステップ３０２では、図２に関連して上述された技術に従い、ソースデータテーブルに基づいて２つ又は３つ以上のターゲットデータテーブルが確立される。ステップ３０４では、先に確立されたターゲットデータテーブルから現ターゲットデータテーブルが決定される。一部の実施形態では、現ターゲットデータテーブルを決定するために、各ターゲットデータテーブル内のデータレコードの数がカウントされる。レコードを持たないターゲットデータテーブルが、現テーブルであると見なされる。２つ以上のターゲットデータテーブルのレコード数がゼロの場合には、任意のテーブルが選ばれる。しかしながら、レコード数がゼロのターゲットデータテーブルが存在しない場合には、異常が発生しており、データ同期化のフローは終了される。
【００３１】
ステップ３０６では、ソースデータテーブルと、決定された現ターゲットデータテーブルとが同期化される。一部の実施形態では、ソースデータテーブルから、決定された現ターゲットデータテーブルへデータが同期化されるときに、データは、決定された現ターゲットデータテーブル（すなわち、元はヌルのターゲットデータテーブル）へ直接、コピー又は更新することができる。一部の実施形態では、元は空／無効（null）のターゲットデータテーブルが削除され、現ターゲットデータテーブルとして新しいターゲットデータテーブルが作成され、データは、その新しく作成された現ターゲットデータテーブルへコピーされる。
【００３２】
一部の実施形態では、ターゲットデータテーブルを作成するために、以下のコマンドが使用される。
create table t2 as select* from schema2.tablename@lnk_dw
【００３３】
コマンドの動作は、複合動作である。１つの動作は、（テーブルｔ２を作成するための）DDLであり、もう１つの動作は、データ同期化である。ORACLEは、それを、アンドゥ／ロールバックテーブルスペースを実質的に占有しないDDL動作として扱う。また、並列プロンプトも採用可能であり、特定のコマンドは、以下の通りである。
create table t2 as select/*+parallel (dw_t2, 4)*/* from schema2.tablename@lnk_dw dw_t2
ここで、上記コマンドの/*+parallel (dw_t2, 4)*/は、４つのプロセスによってtable dw_t2をスキャンすることを意味する。
【００３４】
このようなスキームの使用は、アンドゥ／ロールバックテーブルスペースが一杯になる可能性を更に下げるとともに、データ同期化の効率をある程度向上させることができる。
【００３５】
ステップ３０８では、データテーブルの同期化が成功した場合（正常に完了した場合）、アプリケーションサーバは、現ターゲットデータテーブルにアクセスするように指示される。一部の実施形態では、上位ビューは、データ同期化が成功すると随時更新される。更新された上位ビューは、ターゲットデータテーブルへ同期化されたデータにアプリケーションサーバがスムーズにアクセスできることを保証するために、データの新しいインポート先となったターゲットデータテーブルを指し示す。
【００３６】
一部の実施形態では、非現ターゲットデータテーブル（すなわち、データ同期化を受けないターゲットデータテーブル）の情報を消去する動作も、データ同期化が成功すると実行される。
【００３７】
バックエンドデータウェアハウス内のソースデータテーブルとフロントエンドORACLEデータベース内のターゲットデータテーブルとの間のデータ同期化を説明するために、詳細な一例が以下に提示される。同じデータサービス用に、２つのデータテーブルがフロントエンドデータサービス内に確立される。すなわち、バックエンドデータウェアハウス内のソースデータテーブルは、フロントエンドデータベース内の、交互に使用される２つのターゲットデータテーブル（テーブルｔ１及びテーブルｔ２）に対応している。
【００３８】
同期化スキームは、図４及び図５に示されている。図４は、アプリケーションサーバがテーブルｔ１にアクセスし、データがバックエンドデータウェアハウスからヌルテーブルｔ２へ同期化される一例を示している。図５は、アプリケーションサーバがテーブルｔ２にアクセスし、データがバックエンドデータウェアハウスからヌルテーブルｔ１へ同期化される一例を示している。
【００３９】
図４及び図５では、データウェアハウス（DW）は、バックエンドデータウェアハウスに対応しており、テーブルｔ１及びテーブルｔ２は、フロントエンドデータベース内の２つのデータテーブルに対応している。これらのテーブルは、同じデータサービスに対応している。バックエンドデータウェアハウス内のデータテーブルは、フロントエンドデータベース内の２つのデータテーブル（ｔ１及びｔ２）に対応している。したがって、データは、バックエンドデータウェアハウス内のテーブルからテーブルｔ１又はテーブルｔ２へ同期化することができる。
【００４０】
アプリケーションサーバは、上位ビューがｔ１又はｔ２のいずれを指し示すかに基づいて、テーブルｔ１又はテーブルｔ２のいずれのデータにアクセスするかを決定する。したがって、アプリケーションサーバは、もし上位ビューがテーブルｔ１を指し示すならば、上位ビューを通してテーブルｔ１にアクセスする、又はもし上位ビューがテーブルｔ２を指し示すならば、アプリケーションサーバは、上位ビューを通してテーブルｔ２にアクセスする。
【００４１】
一部の実施形態では、データを定期的に同期化するために使用される時間間隔（プリセットデータ同期化期間とも言われる）がある。例えば、一部のシステムは、データウェアハウスからフロントエンドORACLEデータベースへ毎日データ同期化を実施するように構成される。データ同期化のために、テーブルｔ１及びテーブルｔ２は、同期化されたデータを取り込む（すなわち、コピーする）ヌルテーブルを見つけるために調査される。
【００４２】
図４では、アプリケーションサーバはテーブルｔ１にアクセスし、データはヌルテーブルｔ２中に同期化され、上位ビューは、データの同期化が完了するとテーブルｔ２を指し示すように再定義される。テーブルｔ１内のデータを消去するために、以下のコマンドが実行される。
truncate table t1
【００４３】
Truncate（切り捨て）の動作は、Delete（削除）の動作とは原則的に異なり、前者の使用の方が、より速いと思われる。
【００４４】
データがテーブルｔ２中に同期化され、上位ビューが再定義された後、アプリケーションサーバは、テーブルｔ２内のデータにアクセスし、次に同期化されるときのデータは、ヌルテーブルｔ１へ同期化される。図５は、アプリケーションサーバがテーブルｔ２にアクセスし、データがヌルテーブルｔ１へ同期化されるケースを示している。データ同期化が完了すると、上位ビューは、テーブルｔ１を指し示すように再定義され、次いで、以下のコマンドが実行される。
truncate table t2
【００４５】
テーブルｔ２のデータは、消去される。
【００４６】
図６及び図７は、ソースデータテーブル（例：バックエンドデータウェアハウス内のデータテーブル）とターゲットデータテーブル（例：フロントエンドORACLEデータベース内のデータテーブル）との間でデータを同期化するためのデータ同期化プロセスの実施形態を示したフローチャートである。これらの例は、ターゲットデータテーブルｔ１及びターゲットデータテーブルｔ２が事前に確立されていることを前提とする。以下の実施形態で説明されるプロセスは、ウェブサーバ上、データベースサーバ上、又はその他の適切なデバイス上で実行され得る。
【００４７】
図６では、２つのターゲットデータテーブル内のレコードの数が順次決定される。一方のターゲットデータテーブル内のレコード数がゼロに決定されるときは、もう一方のターゲットデータテーブル内のレコード数を決定する必要はない。ステップ６０１では、テーブルｔ１内のレコード数がカウントされ、その結果がＮ１として保存される。一部の実施形態では、以下のコマンドを使用して、テーブルｔ１内のレコード数がカウントされ変数Ｎ１として保存される。
Select count(*) into N1 from t1 where rownum<2
【００４８】
ここで、rownumは、データレコードを意味し、rownum<2は、データテーブル内に少なくとも１つのレコードが検出される限り、これ以上データレコードを更に検出しなくてもデータの存在を決定できることを示している。
【００４９】
ステップ６０２では、テーブルｔ１内にデータが存在するか否かが決定される。この例では、テーブルｔ１内にデータが存在するか否かは、カウントされたレコード数Ｎ１がゼロに等しいか否かを決定することによって決定される。等しい場合に、プロセスは、同期化のために６０３に進み、等しくない場合には、プロセスは、テーブルｔ２がデータを有するか否かを決定するためにステップ１１１に進む。
【００５０】
ステップ６０３では、データが同期化され、バックエンドデータウェアハウスからテーブルｔ１へ取り込まれる。各種の実施形態では、データは、ORACLEEXTENTによってサポートされるセグメント式コミットメント法などの各種の同期化方法を使用して同期化される。
【００５１】
ステップ６０４では、同期化が成功したか否かが決定される。成功した場合には、ステップ６０５が実行され、成功しなかった場合には、異常を処理するためにステップ６０８が実行される。異常が発生すると、データ同期化プロセスは終了される。警告メッセージ及び／又はログメッセージが生成されても良い。
【００５２】
ステップ６０５では、新しい上位ビューが作成される。新しい上位ビューは、テーブルｔ１を指し示すように作成されるので、アプリケーションサーバは、上位ビューを通してテーブルｔ１にアクセスすることができる。
【００５３】
ステップ６０６では、テーブルｔ２に対して消去動作が実施される。一部の実施形態では、古いデータを速やかに削除してテーブルｔ２の内容を消去するために、テーブルｔ２に対して消去動作が実施されるときに、上記のテーブル切り捨てコマンドが使用される。
【００５４】
ステップ６０７では、データ同期化プロセスは終了する。
【００５５】
ステップ６１１では、テーブルｔ２内のレコード数がカウントされ、その値がＮ２として保存される。
【００５６】
以下のコマンドを使用して、テーブルｔ２内のレコードの数がカウントされ変数Ｎ２として保存される。
Select count(*) into N2 from t2 where rownum<2
【００５７】
ステップ６１２では、テーブルｔ２内にデータが存在するか否かが決定される。すなわち、カウントされたレコード数Ｎ２がゼロに等しいか否かが決定される。等しい場合には、プロセスは、データ同期化を実施するためにステップ６１３に進み、等しくない場合には、両テーブル内におけるデータの存在は、異常を示しており、プロセスは、異常を処理するためにステップ６０８に進む。
【００５８】
ステップ６１３では、データが同期化され、バックエンドデータウェアハウスからテーブルｔ２に取り込まれる。各種の実施形態では、データは、ORACLEEXTENTによってサポートされるセグメント式コミットメント法などの各種の同期化方法を使用して同期化される。
【００５９】
ステップ６１４では、同期化が成功したか否かが決定される。成功した場合には、プロセスは、ステップ６１５に進み、成功しなかった場合には、異常があり、プロセスは、異常を処理するためにステップ６０８に進む。
【００６０】
ステップ６１５では、新しい上位ビューが作成される。データ同期化が成功すると、同期化されたテーブル、すなわちテーブルｔ２を指し示す上位ビューが作成しなおされるので、アプリケーションサーバは、上位ビューを通してテーブルｔ２にアクセスすることができる。
【００６１】
ステップ６１６では、テーブルｔ１に対して消去動作が実施される。一部の実施形態では、古いデータを速やかに削除してテーブルｔ１の内容を消去するために、上記のテーブル切り捨てコマンドが実行される。
【００６２】
ステップ６０７では、プロセスは終了する。
【００６３】
図７では、２つのターゲットデータテーブル内のレコード数が同時にカウントされ、それらのうち、カウント数がゼロであるターゲットデータテーブルが選択される。
【００６４】
ステップ７０１では、テーブルｔ１内のレコード数及びテーブルｔ２内のレコード数が、それぞれＮ１及びＮ２としてカウントされる。
【００６５】
テーブルｔ１内のレコード数及びテーブルｔ２内のレコード数は、処理中に、やはり上記のrownum<2のやり方でそれぞれＮ１及びＮ２としてカウントすることができ、具体的なコマンド行は、以下の通りである。
Select count(*) into N1 from t1 where rownum<2
Select count(*) into N2 from t2 where rownum<2
【００６６】
ステップ７０２では、テーブルｔ１及びテーブルｔ２にデータが存在するか否かが決定される。一部の実施形態では、テーブルｔ１内のレコード数Ｎ１及びテーブルｔ２内のレコード数Ｎ２がゼロに等しいか否かが決定される。
【００６７】
N1=0且つN2≠0は、テーブルｔ１にはデータがなく、テーブルｔ２にはデータがあることを示し、したがって、プロセスは、ステップ７０３に進む。
【００６８】
ステップ７０３では、バックエンドデータウェアハウスからテーブルｔ１中にデータが同期化される。
【００６９】
ステップ７０４では、同期化が成功したか否かが決定される。成功した場合には、プロセスは、ステップ７０５に進み、成功しなかった場合には、プロセスは、異常状態を処理するためにステップ７３３に進む。
【００７０】
ステップ７０５では、新しい上位ビューが作成される。新しい上位ビューは、テーブルｔ１を指し示すように作成されるので、アプリケーションサーバは、上位ビューを通してテーブルｔ１にアクセスすることができる。
【００７１】
ステップ７０６では、テーブルｔ２に対して消去動作が実施される。一部の実施形態では、消去動作を実施するために、上述の切り捨てコマンドが使用される。
【００７２】
プロセスは、ステップ７０７で終了する。
【００７３】
N1≠0且つN2=0は、テーブルｔ１にはデータがあり、テーブルｔ２にはデータがないことを示し、したがって、プロセスは、ステップ７１３に進む。
【００７４】
ステップ７１３では、バックエンドデータウェアハウスからテーブルｔ２中にデータが同期化される。
【００７５】
ステップ７１４では、同期化が成功したか否かが決定される。成功した場合には、プロセスは、新しい上位ビューを作成するためにステップ７１５に進み、成功しなかった場合には、異常が発生しており、プロセスは、異常を処理するためにステップ７３３に進む。
【００７６】
データ同期化が成功すると、ステップ７１５では、同期化されたデータテーブルｔ２を指し示すように上位ビューが作成しなおされるので、アプリケーションサーバは、上位ビューを通してテーブルｔ２にアクセスすることができる。
【００７７】
ステップ７１６では、テーブルｔ１に対して消去動作が実施される。
【００７８】
プロセスは、ステップ７０７で終了する。
【００７９】
N1=0且つN2=0は、テーブルｔ１にもテーブルｔ２にもデータが存在しないことを示し、プロセスは、ステップ７２３に進む。
【００８０】
ステップ７２３では、テーブルｔ１及びテーブルｔ２のなかからデータテーブルが選択される。この選択は、任意の選択であってよい。テーブルｔ１が選択される場合には、７０３〜７０７が実施される。テーブルｔ２が選択される場合には、７１３〜７１６及び７０７が実施される。
【００８１】
N1≠0且つN2≠0は、テーブルｔ１にもテーブルｔ２にもデータが存在することを示している。これは、異常状態だと見なされる。プロセスは、異常を処理するためにステップ７３３に進み、終了する。
【００８２】
図８は、ソースデータテーブルと現ターゲットデータテーブルとを同期化するためのプロセスの一実施形態を示したフローチャートである。プロセスは、図６のステップ６０３及び６１３、並びに図７のステップ７０３及び７１３を実施するために使用され得る。
【００８３】
ステップ８０１では、ソースデータテーブル内において同期化予定データによって占有されているストレージ範囲が決定される。一部の実施形態では、ソースデータテーブル内において同期化予定データによって占有されているストレージ範囲を得るために、ORACLEデータベースのデータディクショナリビューに対してクエリが行われる。
【００８４】
ステップ８０２では、上記ストレージ範囲内における同期化予定データのストレージアドレス情報が決定される。このストレージアドレス情報は、少なくとも、それぞれのストレージ範囲内における同期化予定データのアドレス域を含む。それぞれのストレージ範囲内において同期化予定データが保存されている最小アドレス（e_min_rowid）及び最大アドレス（e_max_rowid）が、ORACLEデータベースのデータディクショナリビューから導出される、ソースデータテーブル内において同期化予定データによって占有されているストレージ範囲を基にして計算される。一部の実施形態では、導出されたアドレス域は、例えばテーブルtmp_rowidなどの中間テーブルに保存される。中間テーブルのテーブル構造の一例は、以下の通りである。
create table tmp_rowid
(
id number;
ROWID_MIN VARCHAR2 (100),
ROWID_MAX VARCHAR2 (100)
)
【００８５】
ソースデータテーブル内のそれぞれのストレージ範囲内における同期化予定データのアドレス情報は、必要に応じて中間テーブルに対してクエリを行うことによって読み出される。
【００８６】
ステップ８０３では、それぞれのストレージ範囲内の同期化予定データが、ストレージアドレス情報にしたがって現ターゲットデータテーブルへ同期化される。あるストレージ範囲内のデータの同期化が失敗した場合には、そのストレージ範囲内のデータを同期化するプロセスは、やり直しされ、やり直しの回数がプリセット閾値を超えると終了する。
【００８７】
同期化は幾つかの方法で実施することができる。例えば、第１の実施形態では、それぞれのストレージ範囲内のデータは、ストレージアドレス情報にしたがって、１つのデータ同期化プロセスにおいて順次、現ターゲットデータテーブルへ同期化される。第２の実施形態では、決定されたストレージ範囲は、Ｎ個のグループに分割され、対応するＮ個のデータ同期化プロセスが開始され、各データ同期化プロセスでは、対応する一グループのそれぞれのストレージ範囲内のデータが、ストレージアドレス情報にしたがって、順次、現ターゲットデータテーブルへ同期化される。第２の実施形態は、通常、ORACLEデータベースを必要とする。第２の実施形態は、アプリケーションサーバを特定のデータから隔てるために、上位ビューを使用する。データウェアハウスからデータが同期化される、フロントエンドORACLEデータベース内のデータテーブルは、例えば、アプリケーションサーバによって現時点で呼び出されているデータが存在する任意のテーブルなどの、システムによって現時点で使用されているどのテーブルとも同じではない。データウェアハウスからフロントエンドORACLEデータベース内のデータテーブルへのデータ同期化、及びアプリケーションサーバによってデータを呼び出す動作は、同じデータテーブル上では実施されないので、これらの動作に起因するアクセスの対立は取り除かれる。
【００８８】
更に、ORACLEデータベースへのデータの保存は、以下の特徴を有する。
【００８９】
ORACLEデータベース内のデータテーブルは、数々のストレージ範囲を含み、各範囲は、データを中に保存される固定サイズのブロックの連なりを含む。一範囲は、データテーブルスペースの最小単位であり、１つの範囲と別の範囲は、それらの物理的位置の観点からみて連続的でないことがある。しかしながら、各範囲の内部には、連続した物理アドレスを有する一連のブロックがある。そのストレージフォーマットは、図９に示されるようなフォーマットである。
【００９０】
ORACLEデータベースへのデータの保存の上記特徴に基づき、データ同期化プロセスがアプリケーションサーバのアクセスプロセスと対立しないとされるときは、同期化予定のデータは、セグメント式にコミットすることができる、すなわち、データ同期化手続きは、サービスシステムによってアクセスされるデータの正確さに何ら影響することなく尚且つ向上されたデータ同期化速度で、第２の実施形態において可能とされ得る。
【００９１】
図１０は、ソースデータテーブル（例：バックエンドデータウェアハウス）から現ターゲットデータテーブル（例：フロントエンドテーブルｔ１又はｔ２）へセグメント式にデータを同期化するためのプロセスの一実施形態を示したフローチャートである。
【００９２】
ステップ１００１では、同期化予定データによって占有されているストレージ範囲に関してクエリが行われる。一部の実施形態では、ソースデータテーブル内において同期化予定データによって占有されているストレージ範囲を導出するために、ソースデータテーブルがあるバックエンドデータウェアハウスのデータディクショナリビューに対してクエリが行われる。
【００９３】
ステップ１００２では、ソースデータテーブル内において各ストレージ範囲内の同期化予定データが保存されているアドレス域が決定される。一部の実施形態では、アドレス域は、例えばテーブルtmp_rowidなどの保存された中間テーブルに対してクエリを行うことによって決定される。
【００９４】
ステップ１００３では、同期化予定データを保存されているストレージ範囲がＮ個のグループに分割される。
【００９５】
テーブルtmp_rowid内のデータは、例えば識別子（ID）モジュールによってＮ個のグループに分割するなどの数々のやり方でグループ分けすることができる。データは、次いで、グループごとに処理される。
【００９６】
ステップ１００４では、Ｎ個のグループに分割されたそれぞれのストレージ範囲内のデータを現ターゲットデータテーブルへ同期化するために、Ｎ個のデータ同期化プロセスが開始される。
【００９７】
データは、各ストレージ範囲グループにそれぞれ対応するＮ個のデータ同期化プロセスで並列に処理される。同期化プロセスは、対立することなく同時に実行される。それぞれのストレージ範囲内のデータの同期化に並列処理を使用することによって、データ同期化の効率が向上される。
【００９８】
ステップ１００５ａでは、現グループ（例：第１のグループ）のそれぞれのストレージ範囲内の同期化予定データが、順次、処理される。一部の実施形態では、現グループの一ストレージ範囲内の同期化予定データが処理され、同期化の成功を確認するメッセージの受信を受けて、現グループの次のストレージ範囲内のデータを同期化するプロセスが開始される。
【００９９】
ステップ１００６ａでは、同期化が成功したか否かが決定される。一部の実施形態では、現ストレージ範囲内の同期化予定データ同期化が成功したか否かが決定される。成功した場合には、次いで、ステップ１００８ａが実行され、成功しなかった場合には、そのストレージ範囲内のデータを同期化する手続きを再び実行するためにロールバックが必要であり、ステップ１００７ａが実行される。
【０１００】
ステップ１００７ａでは、ロールバックの回数がプリセット閾値を超えるか否かが決定される。一部の実施形態では、ロールバック（すなわち、再試行）の回数の閾値がプリセットされ、再試行の回数がカウントされる。再試行の回数がプリセット閾値を上回る場合には、これ以上再試行はなされず、そのストレージ範囲内のデータの同期化の失敗を示す表示が生成されるとともにループが終了する。再試行の方針は、データ同期化の誤差耐性を向上させるためにデータ同期化手順において採用される。再試行の回数がプリセット閾値未満である場合には、フローは、そのストレージ範囲内のデータをターゲットデータテーブルへ再び同期化するステップ１００５ａに戻って当該ステップを再び実行し、そうでない場合には、１００９ａが実行され、必要に応じて失敗の表示が生成される。
【０１０１】
現ストレージ範囲内のデータの同期化が成功した場合には、ステップ１００８ａにおいて、同期化されたデータがターゲットデータテーブルに対してコミットされる。
【０１０２】
ステップ１００９ａでは、処理が終わったか否かが決定される、すなわち、現グループ内の全てのストレージ範囲が処理されたか否かが決定される。処理が終わっている場合には、グループ内の全てのストレージ範囲内の対応データが同期化されたことが示され、プロセスは終了する。必要に応じて、失敗の表示が生成される。処理が終わっていない場合、換言すると、グループ内の全てのストレージ範囲内の対応データが同期化されていない場合には、フローは、グループ内の次のストレージ範囲内のデータを同期化するステップ１００５ａに戻って当該ステップを実行する。
【０１０３】
グループのなかでデータ同期化を終えたストレージ範囲の数を相応に示すために、各グループについて、並列処理中にカウンタ変数v_done_numを設定することができる。この結果、各プロセスによるデータ同期化の速度及びデータ同期化の全体速度の計算を促すことができる。データ同期化の効率は、上記の統計値に基づいて便利に監視することもできる。
【０１０４】
ステップ１００５ｂ〜１００９ｂは、第２のグループのそれぞれのストレージ範囲内のデータを順次、同期化する手続きである。ステップ１００５ｘ〜１００９ｘは、第Ｎグループのそれぞれのストレージ範囲内のデータを順次、同期化する手続きである。フローチャートには、中間グループ用の更なるステップが存在し得る。
【０１０５】
ステップ１００５ｂ〜１００９ｂ、ステップ１００５ｘ〜１００９ｘ、及びあらゆる中間ステップの処理フローは、ステップ１００５ａ〜１００９ａの処理フローに対応して同じであり、ここでは、説明の繰り返しは省略される。
【０１０６】
ステップ１０１０では、同期化プロセスは終了する。
【０１０７】
ソースデータテーブルからターゲットデータテーブルへの上記のデータ同期化手続きにおいて、複数のデータ範囲内のデータが一度に処理されるように複数のプロセスの並列処理が採用される場合には、これらのデータ範囲内のデータは、コミット動作の数を減らすために、そして更に、同期化予定データをコミットする速度及び効率を高めるために、１つのコミット動作でターゲットデータテーブルに対してコミットすることができる。同時に処理されるストレージ範囲の数は、実際の実装形態に応じて調整することができる。
【０１０８】
図８〜１０に示された、ソースデータテーブルから現ターゲットデータテーブルへデータを同期化する上記の手続きは、ソースデータテーブルからターゲットデータテーブルへのデータの同期化が必要とされるその他の手続きに個別に適用可能であるが、本発明の実施形態で提示されたデータ同期化手続きに提示された応用に限定はされない。
【０１０９】
発明の実施形態における上記のデータ同期化方法にしたがって、図１１に示されるようなデータ同期化デバイスを構築することができ、該デバイスは、データテーブル作成モジュール１０、決定モジュール２０、データ同期化モジュール３０、及びアクセス＆更新モジュール４０を含む。これらのモジュールは、１つ若しくは２つ以上の汎用プロセッサ上で実行されるソフトウェアコンポーネントとして、又は特定の機能を実施するように設計されたプログラマブルロジックデバイス及び／若しくは特殊用途向け集積回路などのハードウェアとして、又はそれらの組み合わせとして実装することができる。一部の実施形態では、これらのモジュールは、不揮発性ストレージメディア（光ディスク、フラッシュストレージデバイス、モバイルハードディスクなど）に格納可能で尚且つ本発明の実施形態で説明された方法をコンピュータデバイス（パソコン、サーバ、ネットワーク機器など）に実施させるための幾つかの命令を含むソフトウェア製品の形態で実施することができる。これらのモジュールは、１つのデバイス上に実装されてよい、又は複数のデバイスに分散されてよい。これらのモジュールの機能は、互いに融合されて１つにされてよい、又は更に複数のサブ機能に分けられてよい。
【０１１０】
この例では、データテーブル作成モジュール１０は、同期化予定のデータを保存されているソースデータテーブルに対応する２つのターゲットデータテーブルを予め作成するように構成される。
【０１１１】
決定モジュール２０は、２つのターゲットデータテーブルから現ターゲットデータテーブルを決定するように構成される。
【０１１２】
好ましくは、決定モジュール２０は、カウントユニット２０１及び決定ユニット２０２を更に含むことができる。
【０１１３】
カウントユニット２０１は、２つのターゲットデータテーブル内のそれぞれのデータレコードをカウントするように構成される。
【０１１４】
決定ユニット２０２は、ターゲットデータテーブルのうちカウントユニット２０１によってカウントされたデータレコード数がゼロである１つのターゲットデータテーブルを現ターゲットデータテーブルとして決定するように構成される。
【０１１５】
決定ユニット２０２は、更に、カウントユニット２０１によってカウントされた２つのターゲットデータテーブル内のデータレコード数がいずれもゼロでないときに異常を示してデータ同期化フローを終了させるように構成される。
【０１１６】
データ同期化モジュール３０は、ソースデータテーブルから決定モジュール２０によって決定された現ターゲットデータテーブルへデータを同期化するように構成される。
【０１１７】
好ましくは、データ同期化モジュールは、更に、ストレージ範囲決定ユニット３０１、アドレス情報決定ユニット３０２、及びデータ同期化ユニット３０３を含むことができる。
【０１１８】
ストレージ範囲決定ユニット３０１は、ソースデータテーブル内において同期化予定データによって占有されている幾つかのストレージ範囲を決定するように構成される。
【０１１９】
アドレス情報決定ユニット３０２は、それぞれのストレージ範囲内における同期化予定データのストレージアドレス情報を決定するように構成される。
【０１２０】
データ同期化ユニット３０３は、アドレス情報決定ユニット３０２によって決定されたストレージアドレス情報にしたがって、それぞれのストレージ範囲内の同期化予定データを現ターゲットデータテーブルへ同期化するように構成される。
【０１２１】
好ましくは、データ同期化ユニット３０３は、更に、第１のデータ同期化サブユニット３０３１及び第２のデータ同期化サブユニット３０３２を含むことができる。
【０１２２】
第１のデータ同期化サブユニット３０３１は、アドレス情報決定ユニット３０２によって決定されたストレージアドレス情報にしたがって、それぞれのストレージ範囲内の同期化予定データを１つのデータ同期化プロセスにおいて順次、現ターゲットデータテーブルへ同期化するように構成される。
【０１２３】
第２のデータ同期化サブユニット３０３２は、ストレージ範囲をＮ個のグループに分割し、対応するＮ個のデータ同期化プロセスを開始させ、アドレス情報決定ユニット３０２によって決定されたストレージアドレス情報にしたがって、対応する一グループのそれぞれのストレージ範囲内のデータを各データ同期化プロセスにおいて順次、現ターゲットデータテーブルへ同期化するように構成される。
【０１２４】
データ同期化ユニット３０３は、更に、同期化が失敗したときにそのストレージ範囲内のデータを同期化する手続きをやり直すように、及びやり直しの回数がプリセット閾値を超えたときにそのストレージ範囲内のデータを同期化する手続きを終了させるように適応されたやり直しサブユニット３０３３を含む。
【０１２５】
アクセス＆更新モジュール４０は、データ同期化モジュール３０がデータ同期化に成功したときに、決定モジュール２０によって決定された現ターゲットデータテーブルにアプリケーションサーバがアクセスすることを可能にするように構成される。
【０１２６】
アクセス＆更新モジュール４０は、ターゲットデータテーブルのうち上位ビューが指し示す１つのターゲットデータテーブルにアプリケーションサーバがその上位ビューを通してアクセスすることができるように予め上位ビューを作成するように、及びデータ同期化の完了を受けて上位ビューが現ターゲットデータテーブルを指し示すことを可能にするように上位ビューを更新するように、特に構成される。
【０１２７】
上記のデータ同期化デバイスは、更に、データ同期化モジュール３０がデータ同期化に成功したときに、２つのターゲットデータテーブルのうちデータ同期化を受けていない方のターゲットデータテーブルの内容を消去するように適応されたデータテーブル消去モジュール５０を含む。
【０１２８】
上記のデータ同期化デバイスのデータ同期化モジュール３０は、データ同期化のための個別の手段として用意することができ、任意のデータ転送手続きにおいて個別に使用することができる。
【０１２９】
図８及び図１０に示された、ソースデータテーブルからターゲットデータテーブルへデータを同期化する上記のフローにしたがって、図１２に示されるような、グループ分けユニット１２１及びデータ同期化ユニット１２２を含む複数プロセスデータ同期化デバイスを構築することができる。これらのユニットは、１つ若しくは２つ以上の汎用プロセッサ上で実行されるソフトウェアコンポーネントとして、又は特定の機能を実施するように設計されたプログラマブルロジックデバイス及び／若しくは特殊用途向け集積回路などのハードウェアとして、又はそれらの組み合わせとして実装することができる。一部の実施形態では、これらのユニットは、不揮発性ストレージメディア（光ディスク、フラッシュストレージデバイス、モバイルハードディスクなど）に格納可能で尚且つ本発明の実施形態で説明された方法をコンピュータデバイス（パソコン、サーバ、ネットワーク機器など）に実施させるための幾つかの命令を含むソフトウェア製品の形態で実施することができる。これらのユニットは、この例では、１つのデバイス内にあるものとして示されているが、その他の実施形態では、複数のデバイスに分散されてよい。これらのユニットの機能は、互いに融合されて１つにされてよい、又は更に複数のサブ機能に分けられてよい。
【０１３０】
グループ分けユニット１２１は、ソースデータテーブル内で同期化予定データによって占有されているストレージ範囲を幾つかのグループに分割するように構成される。
【０１３１】
データ同期化ユニット１２２は、対応するデータ同期化プロセスを並列に開始させるように、及び各データ同期化プロセスにおいて、対応する一グループのそれぞれのストレージ範囲内の同期化予定データを現ターゲットデータテーブルへ同期化するように構成される。
【０１３２】
好ましくは、データ同期化ユニット１２２は、制御実行サブユニット１２２１及び決定サブユニット１２２２を更に含むことができる。
【０１３３】
制御実行サブユニット１２２１は、対応する一グループの一ストレージ範囲内の同期化予定データを処理するように、及び対応するグループの全てのストレージ範囲が処理されたのではないと決定サブユニットによって決定されたときに、対応するグループの次のストレージ範囲内の同期化予定データを処理する手続きを開始させるように、各データ同期化プロセスを制御するように構成される。
【０１３４】
決定サブユニット１２２２は、一ストレージ範囲内の同期化予定データが同期化されて正常にコミットされた後に、対応するグループの全てのストレージ範囲が処理されたかどうかを決定するように構成される。
【０１３５】
データ同期化ユニット１２２２は、同期化が失敗したときにそのストレージ範囲内のデータを同期化する手続きをやり直すように、及びやり直しの回数がプリセット閾値を超えたときにそのストレージ範囲内のデータを同期化する手続きを終了させるように適応されたやり直しサブユニット１２２３を更に含む。
【０１３６】
上記のデータ同期化デバイスは、更に以下の構成を含む。
【０１３７】
ソースデータテーブル内において同期化予定データによって占有されているストレージ範囲を決定するように適応されたストレージ範囲決定ユニット１２３と、それぞれのストレージ範囲内における同期化予定データのストレージアドレス情報を決定するように適応されたアドレス情報決定ユニット１２４。
【０１３８】
本発明の実施形態にしたがったデータ同期化の方法及びデバイスでは、同期化予定データを保存されているソースデータテーブルに対応するターゲットデータテーブルが予め作成され、アプリケーションサーバは、予め作成されている上位ビューを通して、ターゲットデータテーブルのうちその上位ビューが指し示す１つのターゲットデータテーブルにアクセスするので、アプリケーションレイヤは、データが特にどのテーブルから発しているかに注意を払うことはなく、したがって、アプリケーション実装の複雑性が抑えられる。
【０１３９】
ソースデータテーブルからターゲットデータテーブルへデータが同期化されるときは、先ず、２つのターゲットデータテーブルのうちヌルである１つのターゲットデータテーブルが現ターゲットデータテーブルとして決定され、次いで、データが、ソースデータテーブルから現ターゲットデータテーブルへ同期化され、そして、データの同期化が成功すると、上位ビューが、現ターゲットデータテーブルを指し示すように更新される。上記の方法では、２つのターゲットデータテーブルは、交互に使用され、アプリケーションサーバによってアクセスされるデータテーブルと、データ同期化プログラムによってアクセスされるデータテーブルは、対立しないので、大量のデータがアンドゥ／ロールバックテーブルスペースへ転送される事態が回避され、それによって、アンドゥ／ロールバックテーブルスペースが満杯にされた後に生じる行列待ち及び混雑の現象が効果的に回避され、また、データ同期化の速度及び効率が向上される。
【０１４０】
データ同期化の手続きでは、それぞれのストレージ範囲内のデータをターゲットデータテーブルへ同期化するために、それぞれのストレージ範囲に対してデータ移動を実施するために、並びにストレージ範囲ごとにデータを並列に同期化及びコミットするために、ORACLEテーブルのスペース割り当て及びストレージ原理と併せてORACLEデータテーブルの固有なストレージメカニズムを用いることができるので、データ同期化の手続きでは、フロントエンドORACLEデータベースにおけるアンドゥ／ロールバックテーブルスペースの長期に及ぶ占有を抑えること、アンドゥ／ロールバックテーブルスペースの全体の利用率を大幅に下げること、アンドゥ／ロールバックテーブルスペースが満杯にされる可能性を大幅に減らすこと、及び生産データペースのセキュリティを保証することが可能である。データ同期化のために、ストレージ範囲は、データを並列に移動可能にしてデータ移動の効率を更に高めるようにグループ分けすることもできる。
【０１４１】
一ストレージ範囲内のデータの同期化が失敗したときは、ロールバックメカニズムの採用が、システムの誤差耐性を大幅に向上させることができ、ロールバック回数制御メカニズムが、例えば無限ロールバックなどのエンドレスループの発生を阻止することができる。動作は、アプリケーションサーバによってアクセスされるテーブルスペースと何ら対立することなくそれぞれのストレージ範囲に対して実施され、初期状態において、使用される現データテーブルはヌルであり対立データを含まないので、データ同期化の中断時もデータのうち同期化されていない部分の同期化を継続させることができ、これは、断絶されたデータ移送の復旧を可能にする。
【０１４２】
更に、データ同期化を終えたストレージ範囲をカウントし、それによってデータ同期化の進行、速度、及び効率を監視するために、カウンタ変数を用意することができる。
【０１４３】
以上の説明は、発明の好ましい実施形態を例示したものにすぎず、発明の特許請求の範囲は、それらに限定されず、発明の技術的開示に照らして当業者が容易に思い付く任意の変形、代替、又はその他の類似デバイスへの応用が、発明の特許請求の範囲に含まれるものとする。したがって、発明の特許請求の範囲は、添付の特許請求の範囲として定められるものとする。
【０１４４】
以上の実施形態は、理解を明瞭にする目的で幾らか詳細に説明されてきたが、発明は、提供された詳細に限定されず、発明を実現するには、多くの代替的方法がある。開示された実施形態は、例示的なものであり、限定的なものではない。
適用例１：データ同期化方法は、同期化予定のデータを保存されているソースデータテーブルに基づいて複数のターゲットデータテーブルを確立することと、前記複数のターゲットデータテーブルのなかから現ターゲットデータテーブルを決定することと、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することと、同期化が成功した場合に、前記現ターゲットデータテーブルにアクセスするようにアプリケーションサーバに指示することとを備える。
適用例２：適用例１に記載の方法であって、前記アプリケーションサーバは、前記現ターゲットデータテーブルを指し示すように事前に更新された上位ビューを通じて前記現ターゲットデータテーブルにアクセスするように指示される、方法。
適用例３：請求項１または２に記載の方法であって、前記複数のターゲットデータテーブルのなかから前記現ターゲットデータテーブルを決定することは、前記複数のターゲットデータテーブル内のぞれぞれのデータレコードの数を決定することと、前記ターゲットデータテーブルのうち前記データレコードの数がゼロである１つのターゲットデータテーブルを前記現ターゲットデータテーブルとして選択することとを含む、方法。
適用例４：適用例１〜３のいずれかに記載の方法であって、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することは、前記ソースデータテーブルから前記現ターゲットデータテーブルへデータを直接コピーすることを含む、方法。
適用例５：請求項１に記載の方法であって、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することは、旧ターゲットデータテーブルを削除すること、現ターゲットデータテーブルとして新しいターゲットデータテーブルを作成すること、及び前記データを前記新しく作成された現ターゲットデータテーブルへ同期化することを含む、方法。
適用例６：適用例１〜５のいずれか記載の方法であって、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することは、前記ソースデータテーブル内において同期化予定データによって占有されている幾つかのストレージ範囲を決定することと、前記それぞれのストレージ範囲内における前記同期化予定データのストレージアドレス情報を決定することと、前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することと、を含む、方法。
適用例７：適用例６に記載の方法であって、前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することは、前記ストレージアドレス情報にしたがって、前記それぞれのストレージ範囲内の前記データを１つのデータ同期化プロセスにおいて順次、前記現ターゲットデータテーブルへ同期化することを含む、方法。
適用例８：適用例６に記載の方法であって、前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することは、前記ストレージ範囲をＮ個のグループに分割することと、
対応するＮ個のデータ同期化プロセスを開始させることと、前記ストレージアドレス情報にしたがって、前記グループのうちの対応する１つのグループの前記それぞれのストレージ範囲内の前記データを、前記データ同期化プロセスのうちの各プロセスにおいて順次、前記現ターゲットデータテーブルへ同期化することと、を含む、方法。
適用例９：適用例６に記載の方法であって、更に、前記同期化が失敗した場合に、前記それぞれのストレージ範囲内の前記データを前記現ターゲットデータテーブルへ同期化し直すことと、やり直しの回数がプリセット閾値を超えたときに、前記ストレージ範囲内の前記データを同期化することを終了させることと、を備える方法。
適用例１０：適用例１〜９に記載の方法であって、更に、前記ソースデータテーブルと前記現ターゲットデータテーブルとの同期化が成功した場合、前記現ターゲットデータテーブル以外のターゲットデータテーブルの内容を消去することを備える方法。
適用例１１：データ同期化システムであって、１つ又は２つ以上のプロセッサであって、同期化予定のデータを保存されているソースデータテーブルに基づいて複数のターゲットデータテーブルを確立するように、前記複数のターゲットデータテーブルのなかから現ターゲットデータテーブルを決定するように、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化するように、及び同期化が成功した場合に、前記現ターゲットデータテーブルにアクセスするようにアプリケーションサーバに指示するように、構成されたプロセッサと、
前記１つ又は２つ以上のプロセッサに結合され、前記１つ又は複数のプロセッサに命令を提供するように構成されたメモリと、を備えるシステム。
適用例１２：適用例１１に記載のシステムであって、前記アプリケーションサーバは、前記現ターゲットデータテーブルを指し示すように事前に更新された上位ビューを通じて前記現ターゲットデータテーブルにアクセスするように指示される、システム。
適用例１３：適用例１１または１２に記載のシステムであって、前記複数のターゲットデータテーブルのなかから前記現ターゲットデータテーブルを決定することは、前記複数のターゲットデータテーブル内のそれぞれのデータレコードの数を決定することと、前記ターゲットデータテーブルのうち前記データレコードの数がゼロである１つのターゲットデータテーブルを前記現ターゲットデータテーブルとして選択することと、を含む、システム。
適用例１４：適用例１１〜１３のいずれかに記載のシステムであって、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することは、前記ソースデータテーブルから前記現ターゲットデータテーブルへデータを直接コピーすることを含む、システム。
適用例１５：適用例１１〜１４のいずれかに記載のシステムであって、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することは、旧ターゲットデータテーブルを削除すること、現ターゲットデータテーブルとして新しいターゲットデータテーブルを作成すること、及び前記データを前記新しく作成された現ターゲットデータテーブルへ同期化することを含む、システム。
適用例１６：適用例１１〜１５のいずれかに記載のシステムであって、前記ソースデータテーブルと前記現ターゲットデータテーブルとを同期化することは、前記ソースデータテーブル内において同期化予定データによって占有されている幾つかのストレージ範囲を決定することと、前記それぞれのストレージ範囲内における前記同期化予定データのストレージアドレス情報を決定することと、前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することと、を含む、システム。
適用例１７：適用例１６に記載のシステムであって、前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することは、前記ストレージアドレス情報にしたがって、前記それぞれのストレージ範囲内の前記データを１つのデータ同期化プロセスにおいて順次、前記現ターゲットデータテーブルへ同期化することを含む、システム。
適用例１８：適用例１６に記載のシステムであって、前記ストレージアドレス情報を使用して、前記それぞれのストレージ範囲内の前記同期化予定データを前記現ターゲットデータテーブルへ同期化することは、前記ストレージ範囲をＮ個のグループに分割することと、対応するＮ個のデータ同期化プロセスを開始させることと、前記ストレージアドレス情報にしたがって、前記グループのうちの対応する１つのグループの前記それぞれのストレージ範囲内の前記データを、前記データ同期化プロセスのうちの各プロセスにおいて順次、前記現ターゲットデータテーブルへ同期化することと、を含む、システム。
適用例１９：適用例１６に記載のシステムであって、前記１つ又は２つ以上のプロセッサは、更に、前記同期化が失敗したときに、前記それぞれのストレージ範囲内の前記データを前記現ターゲットデータテーブルへ同期化し直すように、及びやり直しの回数がプリセット閾値を超えたときに、前記ストレージ範囲内の前記データを同期化することを終了させるように、構成される、システム。
適用例２０：適用例１１〜１９のいずれかに記載のシステムであって、前記１つ又は２つ以上のプロセッサは、更に、前記ソースデータテーブルと前記現ターゲットデータテーブルとの同期化が成功した場合に、前記現ターゲットデータテーブル以外のターゲットデータテーブルの内容を消去するように構成される、システム。
【図１】
0005577350.tif 000002
【図２】
0005577350.tif 000003
【図３】
0005577350.tif 000004
【図４】
0005577350.tif 000005
【図５】
0005577350.tif 000006
【図６】
0005577350.tif 000007
【図７】
0005577350.tif 000008
【図８】
0005577350.tif 000009
【図９】
0005577350.tif 000010
【図１０】
0005577350.tif 000011
【図１１】
0005577350.tif 000012
【図１２】
0005577350.tif 000013