JP4537751B2 - クライアント/サーバ環境における同期を容易にするシステムおよび方法 - Google Patents

クライアント/サーバ環境における同期を容易にするシステムおよび方法 Download PDF

Info

Publication number
JP4537751B2
JP4537751B2 JP2004116087A JP2004116087A JP4537751B2 JP 4537751 B2 JP4537751 B2 JP 4537751B2 JP 2004116087 A JP2004116087 A JP 2004116087A JP 2004116087 A JP2004116087 A JP 2004116087A JP 4537751 B2 JP4537751 B2 JP 4537751B2
Authority
JP
Japan
Prior art keywords
partition
row
destination
replica
synchronization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004116087A
Other languages
English (en)
Other versions
JP2004334858A (ja
JP2004334858A5 (ja
Inventor
ピー.シン ラム
ナラヤナン チャルマシー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004334858A publication Critical patent/JP2004334858A/ja
Publication of JP2004334858A5 publication Critical patent/JP2004334858A5/ja
Application granted granted Critical
Publication of JP4537751B2 publication Critical patent/JP4537751B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、クライアント/サーバ環境における同期を容易にするシステムおよび方法に関する。より詳細には、ネットワークデータアーキテクチャに関連し、特に異なるシステム間のそのようなネットワークベースのデータの更新に係る、クライアント/サーバ環境における同期を容易にするシステム、サーバベースのシステム、ネットワーク、クライアント/サーバ環境における同期を容易にする方法、記録媒体、およびデータ収集の同期を容易にするシステムに関する。
インターネットのような世界的な通信網が出現したため、様々な地理的位置にある別々の法人実体または支社によって通常利用されるそれぞれの異なるデータベースの形で企業内で情報を広く伝播させるのが容易になっている。このような異種データ源を同種データベースとしてマージすると、多数のシステムプロセスが重複する、システムを著しく多用するプロセスが生じる。
それぞれの異なるデータベースは、レプリケーションによって収束させることができる。レプリケーションとは、データおよびデータベースオブジェクトをコピーし、1つのデータベースから他のデータベースに分散し、情報をデータベース間で整合するように同期させるプロセスである。
マージレプリケーションは困難なレプリケーションタイプである。マージレプリケーション機能は、切断されている移動ユーザがアプリケーションをオフラインで実行し、次に周期的に再接続し、メインデータベースとの同期を取るのを可能にする。これによって、ユーザが接続されているか、切断されているかにかかわらず、ソース(パブリッシャとも呼ばれる)および宛先(サブスクライバとも呼ばれる)に関する複製されたデータを自律的に変更し、次いでサイトが接続されているときにサイト間の更新をマージすることが可能になる。マージレプリケーションを用いた場合、サーバは、増分的なデータ変更をソースデータベースおよび宛先データベースに取り込み、事前に構成された規則に従ってコンフリクトを調停するか、またはカスタムリゾルバを用いることによってコンフリクトを解決する。
マージレプリケーションは通常、ソースおよび/または宛先での複製されたデータの自律的な変更をサポートする際に用いられる。データは、スケジューリングされた時間に、または必要に応じて各サーバ間で同期がとられる。更新は複数のサーバで独立に(たとえば、コミットプロトコルなしに)行われ、したがって、同じデータをソースまたは複数の宛先によって更新することができる。したがって、データの修正がマージされるときにコンフリクトが起こる可能性がある。マージレプリケーションは、マージ源が構成されるときに定義することのできるコンフリクト解決のためのデフォルトおよびカスタムの選択肢を含む。コンフリクトが起こると、マージエージェントはコンフリクトリゾルバを呼び出し、どのデータを許容し他の宛先サイトに伝播させるかを判定する。マージレプリケーションと共に利用可能なオプションには、ジョインフィルタおよびダイナミックフィルタの使用を含む、ソースデータの水平方向および垂直方向のフィルタリング、オルタネート同期パートナーの使用、マージ性能を向上させるための同期の最適化、同期を保証するための更新されたデータの妥当性判定、接続可能な加入データベースの使用が含まれる。
マージレプリケーションは水平フィルタリング、ダイナミックフィルタリング、およびジョインフィルタリングをサポートし、これらのフィルタリングはすべて、管理者が複製すべきデータのパーティション(またはテーブル)を作成するのを可能にする。複製されたデータをフィルタリングすることによって、ネットワーク上で送信されるデータの量を最小限に抑えること、宛先レプリカで必要とされる記憶空間の量の削減、個々の宛先レプリカ要件に基づくデータ源およびアプリケーションのカスタム化、それぞれのデータパーティションをそれぞれの異なる宛先レプリカに送信できるためのコンフリクトの回避または軽減が少なくとも可能になる。マージレプリケーションは、複数のレプリカが同じデータを更新するのを可能にするにもかかわらず、レプリカが互いに疎の集合を受信するようなデータのフィルタリングによって、単一の宛先に対する2つのレプリカが同じデータ値を更新することはなくなる。
従来、マージレプリケーションは、ソースレプリカのパーティションを宛先レプリカに整合させる技術をサポートしている。しかし、既存のアルゴリズムは、ソースレプリカと宛先レプリカとの間の同時同期セッションを必要とすることによってシステムの顕著な性能劣化を生じさせる。従来のサーバでは、マージレプリケーションは、宛先レプリカがソースレプリカのデータの部分集合のみを受信するのを可能にする非常の精密なパーティショニング技術をサポートしている。このような技術は、ソースレプリカにおける多数のCPUサイクルを必要とし、したがって、宛先データベースレプリケーションを維持するのに必要な同時同期数を増やすことによってネットワークを拡張する場合のボトルネックが生じる。ハードウェアおよびソフトウェアプロセッサを多用する関数は、宛先レプリケーションのパーティションをソースレプリケーションのパーティションに整合させるのに必要な変更のリストを作成する「パーティション計算」アルゴリズムに関連する関数である。
従来のパーティション計算手法の下では、クライアントがサーバとのデータベース同期を要求するとき、サーバのパーティション計算関数は、2つのデータベース間の違いを判定するために、同期のとられていない行のパーティションメンバーシップを算出することを含む。クライアントデータベースは通常、サーバ上に存在するデータベース全体の部分集合であるので、この計算関数は、場合によっては宛先レプリカに伝播させる必要のあるソースレプリカにおけるほぼすべての現在の変更を検討し、次いでこれらの変更のうちのどれが宛先レプリカに関連しているかを判定することをさらに含む。たとえば、宛先レプリカフィルタ基準を満たしている行は、宛先レプリカに属しており、宛先レプリカで更新または挿入しなければならない。更新を受けておりもはやフィルタ基準を満たさない行は、もはや宛先レプリカに属さず、したがって削除しなければならない。このことは、ソースレプリカにおける更新を削除動作として宛先レプリカに伝播できることを意味する。さらに、更新を受けており、現在宛先レプリカに属している行は、ジョインフィルタがある場合には、結合されたテーブルから関連する行を得るように展開しなければならない場合がある。
「同期セッション当たりパーティション計算」の性能およびスケーリングの観点から不利な点を以下に示す。従来のシステムでは冗長処理が負担になる。というのは、変更のたびに、パーティション更新があるかどうかにかかわらず、従来の同期セッションは、変更された行が宛先レプリカに属する行であるかどうかを評価する必要があるからである。行が各同期セッションの前に変更される場合、あらゆる後続の同期セッションは、この行の新しいパーティションメンバーシップメタデータを確立することによって、この行が宛先レプリカに属する行であるかどうかを再び評価する。行の前のパーティションメンバーシップに関する情報は、同期セッション間で記憶されない。このため、各同期セッションごとに冗長な処理が行われる。従来のシステムがプロセスを多用する点を例示するために、1000個の宛先レプリカを有するネットワークを考える。ある行が、変更を受けており宛先へのパブリケーションが必要であるとソースによって判定された場合、1000個の宛先レプリカは更新のために同期する。この行が再び変更された場合、別の1000回の同期セッションが行われ、このプロセスは、この行が1000回変更されるまで繰り返される。最終的に、すべての同期セッションは、同じ行に対してパーティション計算関数を合計で100万回実行する。
従来のシステムは並列動作が不十分である。なぜなら、行が変更されるたびに、各宛先レプリカがそれ自体の評価を行う必要があるからである。ソースシステムと宛先システムとの間に複数の同時同期が存在する場合、パーティション計算が同時に実行される複数のインスタンスがあり、ソースサーバにおいてCPUの利用度が高くなる。
宛先レプリカのパーティションをソースレプリカのパーティションと整合させるのに必要な変更のリストを作成するパーティション計算アルゴリズムは、所与の同期セッションで実行される関数のうちでCPUおよびクエリープロセッサを最も多用する関数となる傾向がある。複製されるデータの集合を定義するのに用いられるフィルタリングが最適でない場合、並行パーティション計算関数を実行することによってソースサーバの機能はさらに劣化する。
より高速のハードウェアおよびより効率的なレプリケーションコンフィギュレーションは、この問題にある程度対処することができる。しかし、完全に構成され調節されたアプリケーションでも、あらゆるパブリッシャサーバは、それが有効に扱うことのできる同時サブスクライバマージプロセスの数に関する上限を有する。
この問題の1つの解決策は、各ソースマージプロセスが交互に実行されるように各プロセスのタイミングの調和を図ることである。現在、すべての宛先が1日の始めまたは終りに接続されて変更をマージしている場合、1日の非ピーク時にマージプロセスを実行しなければならないことがある。宛先がいつマージプロセスを実行するかが制御されていない場合、同時にマージできる宛先の数を制限する上限を定義することができる。
ソースサーバに対する要求を低減させる他の方法は、処理負荷をより多くのソース間に拡散することである。一般的な技術として、再発行階層で複数のサーバが使用されている。たとえば、現在、単一のサーバが国内のすべての販売代理店用のソースとして働いている場合、2つ以上のサーバを付加して、関連する負荷を分散させることができ、すなわち、中央パブリッシャがデータを東西サブスクライバに発行し、東部サブスクライバがこのデータを東海岸の販売代理店に再発行し、西部サブスクライバがデータを西海岸の販売代理店に再発行する。
しかし、従来の解決策のうちで、多数の同期に伴う問題に対処する費用有効で効率的なアーキテクチャを実現するものはない。従来のシステムは、不適切なメタデータをネットワーク上で伝播させる。同期セッションがパーティションを算出した後でも持続するメンバーシップメタデータはないので、ソースレプリカにおけるすべての変更は、宛先レプリカに伝播させるには不適切とみなされる。この手法はスケーリング問題に寄与する。なぜなら、多数の宛先レプリカが変更をソースレプリカに伝播させる場合、検討すべき変更のリストが大きくなるからである。さらに、ソースレプリカが宛先レプリカとの1回の同期セッション中に追加のメタデータを記録する場合、このメタデータを他の宛先レプリカに伝播させなければならないことがある。したがって、現在の手法のスケーリング特性は望ましいものとは言えない。当技術分野では、同期セッション中に検討されネットワーク上で伝播させられるメタデータの量を最小限に抑える必要がある。多数の並行同期セッションをサポートする従来技術の欠点に基づいて、あらゆる同期セッションの実行時にコストのかかるパーティション計算関数を不要にする必要がある。
いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている(例えば、特許文献1参照)。
米国特許第6,094,715号明細書
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、効率的にパーティション計算を実行しデータレプリケーションの変更を伝播させることができる、クライアント/サーバ環境における同期を容易にするシステムおよび方法を提供することにある。
以下に、本発明のいくつかの態様を基本的に理解するために本発明の概要を示す。この概要は本発明の詳細な説明ではない。これは、本発明の重要/重大な要素を識別するためのものでも、本発明の範囲を示すものでもない。この唯一の目的は、本発明のいくつかの概念を以下に示されるより詳細な説明の序文として簡略化された形式で示すことである。
本発明は、パーティション計算用の新規のアーキテクチャを提供し、並行同期セッションの数をマージレプリケーションを介してスケールアップするのを可能にし、多数の並行同期セッションを必要とする構成をサポートする。本発明の一態様によれば、宛先におけるデータのパーティションをソースのデータのパーティションに整合させる新しいアルゴリズムが導入される。変更が行われると、このアーキテクチャは、簡単なクエリーの集合を用いることによってこの変更のパーティションメンバーシップが算出されるように動作する。第1の同期のパーティションメンバーシップが事前に算出されることによって、変更をソースレプリカと宛先レプリカの以後の同期セッションとの間で効率的に伝播させることができる。
本発明の顕著な態様は、ソースレプリカと宛先レプリカとの間のあらゆる同期セッション中に行のパーティションメンバーシップを算出するのではなく、パーティションメンバーシップを算出するペナルティが実際の行修正時に行われることである。この手法はさらに、あらゆる同期セッション中のパーティション計算を不要にすることができる。これは、パーティション情報が、事前に最初のセッション更新時に算出され、以後の同期セッションの間持続するからである。
したがって、ここに開示され請求される発明は、その一態様では、データレプリカを用いてクライアント/サーバ環境における同期を容易にするアーキテクチャを備える。複数のクライアントがサーバとの同期を要求すると、同期をとるクライアントとして選択された第1のクライアントは、データベース内のパーティションメンバーシップ行が、持続するメタデータを用いて算出され記録されるように処理される。第1のクライアントが更新された後、同期プロセスは、持続するメタデータによって求められる、更新の影響を受ける残りのクライアントに対して継続する。
本発明の新規の態様は、行が初めて変更されるときにのみ(「同期セッション当たりパーティション計算」と同様に)処理を実行できるようにし、その後は、パーティションメンバーシップ情報を持続させる。開示されるアーキテクチャとは異なり、従来のアーキテクチャは、メンバーシップ情報を「忘れ」、したがって、各同期セッションごとにこの情報を算出する必要がある。本発明の態様によれば、以後の同期セッション中に、持続するメンバーシップ情報を用いて、ソースレプリカにおける変更が宛先レプリカに伝播させられ、変更が残りの宛先に適切な変更であるかどうかが評価される。さらに、同じ行が、更新を伴わずに複数回変更される場合(恐らく、更新に関する最も一般的な状況である)、パーティション計算は2回目以後も行われない。これは、更新が行われるまで持続するメンバーシップ情報が有効であり、したがって、以後の同期では依然として同じ持続するメンバーシップ情報を使用できるからである。
行が宛先において更新を受けると、その行のメンバーシップ情報が更新される。さらに、ジョインフィルタがある場合、更新を受けており現在宛先レプリカに属している行を展開し、結合テーブルから関連する行を得なければならないことがある。この計算の重要な態様は、それが簡単な集合ベースクエリーを用いて実行されることである。この集合ベースクエリーの性能は、多数のパーティションがある場合でも、変更された各行がすべてのパーティションの小さな部分集合に属するか、または最良ケースにおいて、適切に区画されたデータのうちで、厳密に1つのパーティションに属するに過ぎないかぎり非常にうまくスケーリングされる。
変更された行の持続するメンバーシップ情報は基本的に、変更された行の行識別子と、その行を受信する資格のある宛先レプリカのパーティションIDとのマッピングである。挿入および更新はパーティションメンバーシップを再評価することを必要とし、さらに、展開と呼ばれるプロセスを実行して関連する行を得ることを必要とする。すなわち、展開は、パーティションメンバーシップが変更された子行に対処する。なぜなら、親行が更新されており、そのパーティション識別子を再評価させなければならないからである。
削除および更新に関しては、次の同期セッション中に、行を宛先レプリカから削除する必要があるかどうかを容易に判定できるように、過去のメンバーシップに関する情報を持続させる必要がある。
本明細書では、前述のおよび関連する目的を実現する本発明のある例示的な態様を以下の説明および添付の図面に関連して説明する。しかし、これらの態様は、本発明の原則を使用できる様々な方法のうちのいくつかを示すものに過ぎず、本発明は、すべてのこのような態様およびその均等物を含むものである。本発明の他の利点および新規の特徴は、本発明の以下の詳細な説明を図面と一緒に検討したときに明らかになろう。
以上説明したように本発明によれば、効率的にパーティション計算を実行しデータレプリケーションの変更を伝播させることができる。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
定義
この説明全体にわたって以下の用語が使用される。ここでは、本発明の様々な態様の理解を助けるためにこれらの用語の定義を示す。
ソースレプリカ:変更が伝播するデータセット。
宛先レプリカ:変更が伝播させられるデータセット。
部分レプリカ:ソースから宛先に発行され、ソースレプリカのデータの部分集合を含むデータセット。
パーティション:データの部分集合、およびデータの同じ部分集合を受信するすべてのレプリカは、同じパーティションに存在するとみなされ、同じパーティション識別子を割り当てることができる。
パーティションリアライメント:宛先レプリカ内の行のパーティションメンバーシップを変更させる修正。たとえば、パーティションレプリカ内の行のメンバーシップがWHERE節を用いて叙述される場合、ある列を異なる値に更新するあらゆる行修正はパーティションリアライメントを構成する。たとえば、フィルタ「where state=’WA’」をテーブル顧客上で使用する場合、行内の「state」列の値を変更すると、行のパーティションリアライメントが行われる。
ビフォー値:更新動作の前のデータの値
アフター値:更新動作の後のデータの値
行フィルタ:テーブルの行の部分集合をソースから宛先に発行できるようにするフィルタ。行フィルタは、クエリーのWHERE節を使用し、特定の基準に基づいてパーティションに含まれる行を制限する。
ジョインフィルタ:1つのテーブルのフィルタがパブリケーション内の他のテーブルに基づくフィルタであるときレプリケーションフィルタの宛先でテーブル間関係を使用できるようにするフィルタ。ジョインフィルタは、同期セッション中に実施される、2つのテーブル間の関係を定義し、これは2つのテーブル間の結合を指定することに類似している。ジョインフィルタは、2つのテーブルを指定し、2つのテーブル間の関係を表す結合条件を指定する。結合条件は通常、TABLE1.COLUMN1=TABLE2.COKUMN2の形をしている。
ダイナミックフィルタ:関数を用いて宛先レプリカから値を取り込み、この値に基づいてデータをフィルタリングする生フィルタ。このフィルタは一旦定義されるが、結果として得られる限定集合は、各宛先レプリカごとに異なり、宛先レプリカがそのニーズについてカスタム化されたデータの部分集合のみを受信するのを可能にする。
同期:データセットをソースレプリカおよび宛先レプリカから最終的な収束状態に収束させるプロセス。
同期アンカー:同期のとれていないレプリカの状態を決定するエンティティ。これは通常、最後の2つのレプリカの同期がとられた時間を示す「論理クロックエンティティ」としてモデル化される。
コンフリクト検出:同期中に実行され、ソースレプリカおよび宛先レプリカにおいてメタデータを問い合わせ、修正同士が衝突しないかどうかを判定するプロセス。
コンフリクト解決:同期中に実行され、コンフリクトが起こった後でコンフリクトの勝者および敗者を決定するプロセス。
次に図面を参照して本発明について説明する。図面において、同じ参照符号は全体にわたって同じ要素を指す。以下の説明では、説明の都合上、本発明を完全に理解するために多数の特定の事項について説明する。しかし、これらの特定の事項なしに本発明を実施できることは明白である。他の場合には、本発明の説明を容易にするために公知の構造および装置はブロック図の形式で示されている。
本出願では、語「構成要素」および「システム」は、コンピュータに関連するエンティティ、すなわち、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアを指すものである。たとえば、構成要素は、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータに制限されない。一例として、サーバ上で実行されるアプリケーションとサーバの両方が構成要素であってよい。1つまたは複数の構成要素がプロセスおよび/または実行スレッド内に存在することができ、かつ構成要素は1つのコンピュータ上に配置し、かつ/または2つ以上の構成要素間に分散させることができる。
次に図1を参照すると、本発明のシステムブロック図が示されている。以下の解説は、システム動作における、すでにソースと複数の宛先との同期がとられている点から始まる。各宛先は、それぞれのデータベースを変更しており、次にソースとの通信を再確立しデータベースの同期を要求する。
サーバ(またはソース)100は複数のN個のクライアント(または宛先)から同期要求を受信する。ソース100は、同期要求を処理しすべてのソースシステム動作を制御する中央演算処理装置(CPU)102を含んでいる。CPU102は、複数の宛先によって利用されるすべてのデータベースエントリを記憶するソース(またはマスタ)データベース104とのインタフェースをとる。したがって、ソースデータベース104は、ソースレプリカとも呼ばれ、場合によってはN個の宛先に発行する必要のあるほとんどすべての情報を含んでいる。
N個の宛先から複数の同期要求を受信した後、ソース100によって第1の宛先106が同期をとる宛先として選択される。第1の宛先106は、最後の同期の後で加えられた最新の変更を含む、宛先106に関連するすべてのデータベースエントリを記憶する第1の宛先データベース108を含んでいる。したがって、ソース100のマスタデータベース104のデータとは異なるデータが、第1の宛先データベース108上に記憶されている。
ソース100は、第1の宛先106を選択した後、宛先データベースとの前の同期セッション後に実行されたデータベース更新の集合を判定し、ソースデータベース104と宛先データベース108とのデータの違い(または変更)を確認する。ソース100は、第1の宛先106に関連する変更のみを定義する、変更されたデータのパーティションを生成するパーティション計算アルゴリズム110を含んでいる。このパーティションは、ソース100においてメンバーシップメタデータ114として持続し、前の同期プロセスの後に変更された、宛先データベース108の行エントリを示す。メンバーシップメタデータ114は、残りの宛先2...Nの以後の同期セッションに利用できるようにソース100に記憶される。
第1の宛先が第1のレプリカデータ112によってソース100との同期がとられた後、第1の宛先106の同期が完了する。
次に、第1の宛先106の更新されたデータベース情報を、マージレプリケーションによって、同期を待っている2...N個の宛先のうちのいくつかまたはすべてに伝播させる必要がある。本発明の一態様によれば、以後の宛先同期は、第1の宛先106の同期中に実行されるすべての計算動作を実行する必要はなく、第1の同期によって持続されるメンバーシップメタデータ114を利用する。したがって、メンバーシップメタデータ114は、2...N個の宛先にダウンロードされるレプリカを生成するのに利用される。これによって、従来のアーキテクチャと比べて、ソース100における処理時間が著しく節約される。というのは、従来のアーキテクチャは、すべての以後の同期についてパーティションメンバーシップを再計算する必要があるからである。最も顕著な点として、パーティション計算が同期中ではなく実際の更新時に実行されるので、パーティション計算コストが多数の同期セッションに対して償却される。この技術は、多数の同期セッションがソースレプリカに対して並行して実行されているときに大きい負荷の下でよりうまくスケーリングされる。
動作時には、ソース100によって、第2の宛先データベース118を有する第2の宛先116が同期をとられる宛先として選択される。ソース100は、第2の宛先116に関連するフィルタ基準を得て、第2の宛先116のパーティションメンバーシップに基づいてどの変更が第2の宛先116に伝播させるのに適しているかを判定する。
同期プロセスは残りのN個の宛先について継続し、したがって、ソース100は、メンバーシップメタデータ114を用いて、N個の宛先データベース124を有するN番目の宛先122との同期をとる。N番目の宛先122のフィルタ基準が得られ、分析され、メンバーシップメタデータ114に適用され、必要に応じてN番目の宛先122にダウンロードすべき変更の集合126が生成される。所与のレプリカで持続する同期メタデータがクリーンナップしても安全であると判定される(たとえば、保持ベース方式に基づくクリーンナップ、すなわち、所与の持続時間内に同期がとられないレプリカは、以後の同期を許容されない)と、対応するメンバーシップメタデータもクリーンナップしても安全であると判定される。
クライアント/サーバ環境に関して説明するが、本発明が、同期を必要とするあらゆる同種データ収集に適用できることに留意されたい。同様に、本発明は、ピアツーピア計算環境に適用することができる。たとえば、ソースデータ収集との同期を必要とする少なくとも2つの宛先データがある場合、データ収集をここで説明する新規の態様に従って同期させることができる。
次に図2を参照すると、本発明のレプリケーションプロセスのフローチャートが示されている。説明を簡単にするために、この方法を一連の動作として図示し説明することができるが、本発明が動作の順序によって制限されないことを理解されたい。というのは、本発明によれば、動作によっては異なる順序で行われ、かつ/またはここに図示し説明する動作以外の動作と並行して行われるものがあるからである。たとえば、当業者には、この方法を、状態図のように、一連の相互に関連する状態またはイベントとして表すことができることが理解されよう。さらに、本発明による方法を実施するのに例示されるすべての動作が必要なわけでない。
200で、複数の宛先1...Nはソースとの同期を要求する。202で、ソースは、同期をとる宛先として第1の宛先を選択する。この選択プロセスは、最初に同期を要求した宛先、同期を要求している宛先の優先順位方式の利用を含むがそれに限らない、多数の方法で判定することができる。第1の宛先が選択された後、ソースは、204に示されているように、第1の宛先データベース内の変更行の集合を判定し、その現在の状態を確立する。206で、ソースは、パーティション計算アルゴリズムを用いて試験を行うことによってソースデータベースと第1の宛先データベースとの違いを判定し、残りの2...N個の宛先のうちの選択された宛先にどの変更を伝播させるかを判定する。208で、パーティション計算アルゴリズムは、1つまたは複数のメタデータテーブルの形の第1のメンバーシップメタデータを作成し、メンバーシップメタデータをソースに記憶する。210で、第1のパーティションレプリケーションが第1の宛先にダウンロードされ更新される。更新が完了すると、第1の宛先の同期が完了する。
212で、ソースは、同期をとるべき次の宛先を選択する。214で、ソースによって、次の宛先のフィルタ基準が得られ、第1の宛先のこの特定のデータの集合に関して次の宛先に同期が必要であるかどうかが判定される。同期が必要である場合216で、ソースはフィルタ基準と第1のメンバーシップメタデータの両方を用いて次の宛先(または第2の宛先)用の第2のパーティションレプリカを作成する。218で、第2のパーティションレプリカがダウンロードされ、220で、パーティション更新が行われ、次の宛先についての同期プロセスのこの部分が完了する。プロセスは212の入力に戻り、同期をとるべき次の宛先が選択される。
プロセスは、すべての宛先要求同期を要求しているすべての宛先が、第1の宛先の変更された情報を受信するまで継続し、その後、同期は、第2の宛先の変更されたデータが他のすべての宛先に伝播するように実行され、以後同様にN個の宛先まで継続する。
次に図3を参照すると、宛先のメンバーシップメタデータを算出するために計算構成要素によって利用されるメタデータテーブル300の相互関係が示されている。宛先データベースの変更情報を取り込むのに利用される主として6つのテーブルがある。パーティションメタデータテーブル302(PartitionsMetadataとして示されている)は他の3つのテーブル、すなわち、現在変更メタデータテーブル304(CurrentChangesPartitionMappingとして示されている)、過去変更メタデータテーブル306(PastChangesPartitionMappingとして示されている)、および生成パーティションメタデータテーブル308(GenerationPartitionMappingとして示されている)によってマップされている。生成パーティションマッピングテーブル308は生成メタデータテーブル310(GenerationMetadataとして示されている)にマップされ、生成メタデータテーブル310も行メタデータテーブル312(RowMetadataとして示されている)にマップされる。特定の実現形態に従って任意の適切な数のテーブルおよび/またはメタデータを使用できることを理解されたい。
レプリカにおける行のパーティションメンバーシップを算出するのに用いられる3つのメタデータには、宛先レプリカのパーティションを識別するそれぞれの異なるパーティション(パーティションメタデータテーブル302を使用する)、行の現在のパーティションメンバーシップ(現在変更パーティションマッピングテーブル304を使用する)、および行の過去パーティションメンバーシップ(過去変更パーティションマッピングテーブル306を使用する)が含まれる。現在および過去のメンバーシップ情報は、パーティション更新を他の宛先レプリカに効率的に伝播させるのを可能にする。行がすでに属しているパーティションに関する情報を維持することが好ましい。というのは、これによって「削除」を伝播できるからである。削除とは、宛先レプリカにおいてもはや必要とされないデータ(または行)である。
パーティションメタデータテーブル302は、フィルタ関数の関連する評価を追跡する。宛先レプリカがソースレプリカと同期しており、宛先レプリカを識別する異なるパーティションがパーティションテーブル302に存在しない場合、「パーティション値」を有する新しいエントリが作成され、新しいパーティション_idパラメータが割り当てられる。同期をとるべき新しい宛先が始めて割り当てられると、各々のエントリは、それぞれのパーティション値と一緒にパーティションメタデータテーブル302に登録され、新しいパーティション_idが割り当てられる。
従業員のダイナミックフィルタ表現が「whereTerritoryID=fn_EmployeeTerritory()」である場合、fn_EmployeeTerritoryと呼ばれる列がパーティションメタデータテーブル302に付加される。従業員行が変更されると、フィルタ表現を、fn_EmployeeTerritory()がPatitionsMetadata.fn_EmployeeTerritoryで置き換えられた結合節として用いて、業員とパーティションメタデータテーブル302を結合する単一の集合ベースクエリーを用いて、変更された行が属するすべてのパーティションが算出される。
この集合ベースクエリーの性能は、多数の登録されたパーティション_idがある場合でも、変更された各行がすべてのパーティション_idの小さな部分集合に属するか、または最良ケースにおいて、適切に区画されたデータのうちで、厳密に1つのパーティション_idに属するに過ぎないかぎり非常にうまくスケーリングされる。
現在変更パーティションマッピングテーブル304は、所与の行の、それに関連するパーティションへの現在のマッピングを追跡する。したがって、テーブル304は、このテーブル内のパーティション_id列、すなわち、パーティションメタデータテーブル302から得られる値を含んでいる。現在変更パーティションマッピングテーブル304の行_id列は、レプリケーションによって使用される所与の行の固有の識別子を含んでいる。
過去変更パーティションマッピングテーブル306は、所与の行の、それが属している可能性があるあらゆるパーティションへのあらゆる過去のマッピングを追跡する。したがって、テーブル306は、パーティションテーブル302から得られた値であるパーティション_id列を含んでいる。テーブル306の行_id列は、レプリケーションによって使用される所与の行の固有の識別子を含んでいる。同期アンカー列(synch_anchor)は論理的に、行のパーティションマッピングがいつ変更されたかに関する情報を含んでいる。パーティション更新中に同期アンカーを取り込むことによって、同期プロセスは、ソース100からのパーティション更新を、最後にソースと宛先の同期がとられてからこれらの変更を受信していない宛先にのみ伝播させることができる。サンプルデータでは、sync_anchor列は、説明を簡単にするために、UTC時間(協定世界時)またはグリニッジ標準時間値のフォーマットの値を利用する。
生成パーティションテーブル308は、一群の変更に割り当てられる同期アンカーである生成_id列を含む。変更が宛先からソース100に伝播すると、ソース100で変更に新しい生成_idが割り当てられる。この生成の一部である行は異なるパーティションP1に属するので、生成パーティションマッピングテーブル308は、宛先のパーティション_idP1にマッピングすべきパーティション_id列を含んでいる。しかし、一般に、生成は複数のパーティション識別子にマップすることができることに留意されたい。これは、パーティション_idについて特殊な値「−1」を有する生成とは異なる。他の異なるパーティションP2に属する異なる宛先レプリカがソース100と同期すると、生成マッピングはP1個の生成を除去する。パーティション_idについての特殊な値−1は、生成がグローバルであり、したがってすべてのパーティションに適切であることを示している。
生成テーブル310は、各生成に固有の生成IDを割り当てる生成_id列を含んでいる。生成パーティションテーブル308は、このテーブル310をマップする生成_idを含み、現在のレプリカにどの生成が伝播したか、またどの生成がローカル変更を表しているかを追跡する。生成パーティションテーブル308は、同期プロセスが、所与のセッションについて検討する必要のある関連する生成のリストを得るのを可能にする。
行メタデータテーブル312は、行ごとにレプリケーションメタデータを追跡し、論理クロックを用いて時間を表すことによって、行がいつ変更されたかに関する情報を含んでいる。テーブル312はまた、行のこのバージョンにどのレプリカが寄与したかに関する情報を、各列の現在のバージョンに関する情報と一緒に含んでいる。生成パーティションテーブル308と行メタデータテーブル312はどちらも、生成テーブル310にマップされる。
以下に、それぞれの異なるメタデータテーブルおよびそれぞれの関数を概略的に示すテーブル1を示す。
変更を効率的に伝搬させるための生成の区分
本発明の新規の態様はまた、変更の伝播中に使用される最適化を容易にする。マージレプリケーションは現在、「生成」の概念を用いて、ソースレプリカから宛先レプリカに伝播する変更を論理的にグループ分けする。生成メタデータテーブル310は、どの生成が現在のレプリカに伝播したか、またどの生成がローカル変更を表しているかを追跡する。生成区分はまた、同期プロセスが、所与のセッションについて検討する必要のある関連する生成のリストを得るのを可能にする。
ソースレプリカにおいて変更が加えられると、ソースは、生成値、すなわち論理クロックエンティティをテーブル上の変更の集合に割り当てる。このグループ分け概念は、割り込まれた可能性のある前の同期セッションから、または異なるソースレプリカを有する同期セッションを介して、一群の変更が受信されているかどうかを、宛先レプリカが効率的に識別するのを可能にする。基本的に、現在宛先レプリカに存在しない生成値のリストは、ソースから宛先に伝播させるべき変更とみなすのが適切な変更を反映している。宛先レプリカがソースレプリカからデータの部分集合、たとえば別の宛先レプリカを受信した場合、このレプリカのパーティション基準を満たす変更は、この宛先に伝播する変更だけである。
しかし、マージレプリケーションの現在のバージョンは依然として、ソースレプリカに存在するすべての生成に関する情報を、これらの生成が宛先レプリカに関連する変更を含むかどうかにかかわらず、宛先レプリカに伝搬させる必要がある。これは、ソースレプリカにある生成の一部である変更がこのパーティションに関連しているか、それとも関連していないかを追跡するメタデータがないからである。
各行のパーティションメンバーシップを識別するパーティション群は、ソースレプリカから宛先レプリカへの生成の伝播を効率的なものにする。変更の集合がすでにパーティション識別子にマップされているので、行のグループ分けである生成もパーティション識別子にマップすることができる。したがって、ソースレプリカで利用可能な特定のパーティションにおいて宛先レプリカが重要であるとき、宛先レプリカに関連するパーティションの変更を含む生成値は、関連する変更の集合を算出する際に迅速に除去することができる。このアルゴリズムは、計算効率を高めるだけでなく、ネットワーク性能特性も向上させる。これは、宛先パーティションに関連する生成のみがネットワーク上で伝播するからである。
次に図4を参照すると、フィルタリングおよび展開を利用するサンプル更新スキーマが示されている。この例は、従業員が配置替えされることを前提条件としている。更新プロセスは、配置替えされる従業員の顧客データを別の従業員に割り当て直すことを含む。この例では、クライアント情報は、少なくとも顧客情報、顧客注文情報、および顧客注文詳細を含む。パーティションテーブルは、従業員IDパラメータを有する配置替え従業員を一意に識別する従業員パーティションテーブル400である。この例では、テーブル400は、少なくとも3つの列、すなわち名前列、名字列、および受持ち区域ID列を含んでいる。従業員パーティションのダイナミックジョインフィルタ表現が「whereTerritoryID=fn_EmployeeTerritory()」である場合、fn_EmployeeTerritoryと呼ばれる列が従業員パーティションメタデータテーブル400に付加される。
新しいパーティションが到着して初めて同期をとられると、これらの新しいパーティションは、それぞれのパーティション値と一緒にエントリをこのテーブル400に登録し、新しいパーティション_idが割り当てられる。従業員テーブル400の行が変更されると、フィルタ表現を結合節として用いて各従業員を従業員パーティションメタデータテーブル400に結合する単一の集合ベースクエリーを用いて、変更された行が属するすべてのパーティションが算出される。次いで、関数呼出しfn_EmployeeTerritory()がPartitionsMetadata.fn_EmployeeTerritoryで置き換えられる。
たとえば、従業員パーティションテーブル400内の受持ち区域IDを米国内の51の異なる地理的領域として評価する場合、従業員パーティションテーブル400は、この51個の異なる値のそれぞれに固有のパーティションIDを割り当てる。宛先がソース100と同期しており、宛先レプリカを識別する異なるパーティションが従業員テーブル400内に存在しない場合、異なる「パーティション値」を有する新しいエントリが作成され、新しいパーティション_idが割り当てられる。
以下のテーブル(テーブル2)は、従業員の姓名の列を有さない従業員パーティションメタデータテーブル400のサンプルである。最後の列は、サンプルデータの解釈を示しているが、スキーマの必要な部分ではない。
この集合ベースクエリーの性能は、多数のパーティションidが登録されている場合でも、それぞれの変更された行がすべてのパーティション_idの小さな部分集合に属するか、または最良ケースにおいて、適切に区画されたデータのうちの、厳密に1つのパーティション_idに属するに過ぎないかぎり非常にうまくスケーリングされる。
上記で指摘したように、すべてのクライアント情報を従業員と一緒に伝播させる必要がある。ジョインフィルタは、同期プロセス中に使用されるテーブル間関係を定義することによってこのプロセスを容易にするのに用いられる。サンプルスキーマでは、従業員テーブル400内の行のパーティションメンバーシップは、従業員テーブル400上の「行フィルタ」定義を用いて叙述される。顧客テーブル404内の行のパーティションメンバーシップは、従業員と顧客との間のジョインフィルタ定義402を用いて叙述された、従業員テーブル400内の行のメンバーシップに基づくメンバーシップである。注文テーブル408内の行のメンバーシップは、顧客と注文との間のジョインフィルタ定義を用いて叙述された、顧客テーブル404内の行のメンバーシップに基づくメンバーシップである。同様に、注文詳細テーブル412内の行のメンバーシップは、注文と注文詳細との間のジョインフィルタ定義を用いて叙述された、注文テーブル408内の行のメンバーシップに基づくメンバーシップである。
したがって、第1のジョインフィルタ402は、従業員テーブル400と顧客テーブル404とのテーブル間関係(顧客.従業員ID=従業員.従業員ID)を定義する。顧客テーブル404は、顧客を一意に識別する顧客IDに関連付けされており、従業員テーブル400にマップされる従業員ID列と、名前、住所、郵便番号、電話番号、その他の情報などの顧客会計情報に関連するその他の列とを少なくとも含んでいる。第2のジョインフィルタ406は、顧客テーブル404と注文テーブル408とのテーブル関係(注文・顧客ID=顧客.顧客ID)を定義する。注文テーブル408は、顧客テーブル404と共に注文情報を一意に識別する注文IDに関連付けされており、顧客テーブル404にマッピングされる顧客ID列を少なくとも含んでいる。テーブル408は、出荷情報、税率、運賃のような、顧客注文に関連する情報の、その他の列を含んでいる。
第3のジョインフィルタ410は、注文テーブル408と注文詳細テーブル412とのテーブル関係(注文詳細.注文ID=注文.注文ID)を定義する。注文詳細テーブル412は、注文テーブル408と共に注文詳細情報を一意に識別する注文詳細IDに関連付けされており、注文テーブル408にマッピングされる注文ID列を少なくとも含んでいる。テーブル412は、注文詳細テーブル412を製品テーブル416にマッピングする製品ID列を含んでいる。テーブル412は、注文された製品に関する情報を提供する数量列および単位価格も含んでいる。したがって、注文詳細テーブル412は製品テーブル416の単位価格情報を必要とする。
第4のジョインフィルタ416は、注文詳細テーブル412と製品テーブル416とのテーブル関係(注文詳細.製品ID=製品.製品ID)を定義する。製品テーブル416は固有の製品IDに関連付けされており、製品名および単位価格の列をさらに含んでいる。
したがって、展開アルゴリズムはジョインフィルタと共に、クライアントが購入した製品、購入された製品の注文詳細、その詳細および特定の製品を含む注文、その製品を注文した顧客に関するすべての情報が従業員IDと一緒に伝搬するのを容易にする。
以下に図5に示されているサンプルデータを使用した場合、顧客テーブル404に対するこのパーティション更新によって、顧客行に関する過去および現在のパーティションマッピングが再計算される。次いで、顧客テーブル404と注文テーブル408との間のジョインフィルタ406に続いて、親パーティションメンバーシップが変更されたすべての注文行のそれぞれの、過去および現在のパーティションマッピングが再評価される。
注文テーブル408と注文詳細テーブル412との間のジョインフィルタ410に続いて、親パーティションメンバーシップが変更されたすべての注文詳細行のそれぞれの、過去および現在のパーティションマッピングが再評価される。最後に、注文詳細テーブル412と製品テーブル416との間のジョインフィルタ414に続いて、親パーティションメンバーシップが変更されたすべての製品行のそれぞれの、過去および現在のパーティションマッピングが再評価される。次いで、製品テーブル416に子行がなくなったため、アルゴリズムは終了する。展開アルゴリズムが終了すると、メタデータテーブルは行のパーティションメンバーシップを正確に反映する。行がソースレプリカから宛先レプリカに伝播するまで、もはやパーティション計算は必要とされない。
このことを反映するために、子テーブルに対して生成されるデータベースビューは、中間的な親に対して生成されるビューを参照する。サンプルスキーマでは、顧客に関するビューは従業員に関するビューを参照する。同様に、注文に関するビューは顧客に関するビューを参照する。同様に、注文詳細に関するビューは注文に関するビューを参照する。最上位の親、すなわち、この例では従業員テーブル400に関するビューは、パーティションメタデータテーブル302を用い、さらにサンプル内のフィルタリング列(受持ち区域ID)の値を用いて行のパーティションメンバーシップを評価する。
一例として、以下のビュー定義がサンプルスキーマに使用される。
従業員テーブル用のビュー定義(ビュー_パーティション_従業員)
select[Employees].*,partition_id=[PartitionsMetadata].[partition_id]from
Employees,PartitionsMetadata where PartitionsMetadata.fn_EmployeeTerritory=
Employees.TerritoryID
顧客テーブル用のビュー定義(ビュー_パーティション_顧客)
select[Customers].*,partition_id=[Employees].[partition_id] from Customers,
[view_partition_Employees]Employees where Customers.EmployeeID=
Employees.EmployeelD
注文テーブル用のビュー定義(ビュー_パーティション_注文)
select[Orders].*,partition_id=[Custorners].partition_id from[Orders],
[view_partition_Customers][Customers]where(Orders.CustomerID=
Customers.CustomerID)
注文詳細テーブル用のビュー定義(ビュー_パーティション_注文詳細)
select[Order_Details).*,partition_id=[Orders].partition_id from
[Order Details],[view_partition_Orders][Orders]where(Order_Details.OrderID
=Orders.OrderID)
子行のパーティションメンバーシップは、変更された行の集合に関するビューを通じて行の変更された集合を選択することによって判定される。「ビフォー(before)」値から算出されたすべての過去のパーティションメンバーシップは、過去変更パーティションマッピングテーブル306において持続し、すべての現在のパーティションマッピングは現在変更パーティションマッピングテーブル304において持続する。
以下のテーブル(テーブル3)は、同期更新の一部として、従業員JoeがCA地区からWA地区へ配置替えされる変更を反映するサンプル現在変更パーティションマッピングテーブル304である。最後の列は、解釈のためのみのものであり、スキーマの一部として必要なものではない。
以下にテーブル4、すなわち、Joeが以前CA地区担当であったことを示すサンプル過去変更パーティションマッピングテーブル306を示す。最後の列は、解釈のためのみのものであり、スキーマの一部として必要なものではない。
次に、図5を参照すると、顧客データがある従業員から別の従業員に割り当て直されているパーティション更新の例が示されている。既存の例示されているテーブル関係は、「Joe」の従業員IDについては以下のとおりである。従業員1テーブル500は、「Joe」を示す従業員ID列と、従業員1テーブル500を従業員パーティションメタデータテーブル400にリンクする「WA」のエントリを有する受持ち区域ID列とを有する従業員1行を表している。従業員1テーブル500の子としての顧客テーブル502は、顧客1行を、顧客ID列エントリ「Alfred」を有する行として表し、かつ従業員IDエントリを、顧客1テーブル502を従業員1テーブル500にリンクする「Joe」として表している。
顧客1テーブル502は、3つの子エントリ、すなわち第1の注文_1エントリ504、第2の注文_2エントリ506、および第3の注文_3エントリ508を有する。注文_1エントリ504は、エントリ「1」を持つ注文ID列と、エンティティ504を親顧客1テーブル502にリンクするエントリ「Alfred」を持つ顧客ID列とを有する行として注文_1行を表している。注文_2エントリ506は、エントリ「2」を持つ注文ID列と、エンティティ506を親顧客1テーブル502にリンクするエントリ「Alfred」を持つ顧客ID列とを有する行として注文_2行を表している。注文_3エントリ508は、エントリ「3」を持つ注文ID列と、テーブル508を親顧客1テーブル502にリンクするエントリ「Alfred」を持つ顧客ID列とを有する行として注文_3行を表している。
第1の注文_1エンティティ504は、その特定の注文ID=1の注文詳細を定義する4つの子注文詳細エンティティを有している。注文詳細1エンティティ510は、行注文詳細1を、エンティティ510を親エンティティ504にリンクするエントリ「1」を持つ注文ID列と、図示されていない他の列詳細とを有する行として表している。注文詳細2エンティティ512は、行注文詳細2を、エンティティ512を親エンティティ504にリンクするエントリ「1」を持つ注文ID列と、図示されていない他の列詳細とを有する行として表している。注文詳細3エンティティ514は、行注文詳細3を、エンティティ514を親エンティティ504にリンクするエントリ「1」を持つ注文ID列と、図示されていない他の列詳細とを有する行として表している。注文詳細4エンティティ516は、行注文詳細4を、エンティティ516を親エンティティ504にリンクするエントリ「1」を持つ注文ID列と、図示されていない他の列詳細とを有する行として表している。
注文_2エンティティ506は、注文詳細5行を、エンティティ518を親エンティティ506にリンクするエントリ「2」を持つ注文ID列と、図示されていない他の列詳細とを有する行として表している1つの子エントリ、すなわち、注文詳細5エントリ518を有している。
注文_3エンティティ508は、2つの子エンティティ、すなわち、注文詳細6エンティティ520および注文詳細7エンティティ522を有している。注文詳細6エンティティ520は、注文詳細6行を、エンティティ520を親エンティティ508にリンクするエントリ「3」を持つ注文ID列と、図示されていない他の列詳細とを有する行として表している。注文詳細7エンティティ522は、注文詳細7行を、エンティティ522を親エンティティ508にリンクするエントリ「3」を持つ注文ID列と、図示されていない他の列詳細とを有する行として表している。
顧客1テーブル502内の顧客1行の従業員ID列は、「Joe」から「Mary」に更新されているところである。従業員2テーブル524は、従業員2行を、エントリ「Mary」を持つ列と、エントリ「CA」を持つ受持ち区域ID列とを有する従業員2行を表している。この更新では、基本的に顧客_1行パーティションメンバーシップが「Joe」から「Mary」に変更されている。したがって、注文行、すなわち注文_1、注文_2、注文_3のパーティションメンバーシップも「Joe」から「Mary」に変更される。同様に、注文詳細エンティティ510、512、514、516、518、520、および522内の対応する注文詳細行も今や、異なるパーティション、すなわち「Mary」に属している。各行のパーティションメンバーシップを親エンティティから子エンティティに伝播させるために、展開プロセスが実行される。
レプリケーション処理−変更追跡および変更列挙
影響を受けるレプリケーション処理の2つの主要な段階には、変更追跡と変更列挙が含まれる。ユーザデータベースでデータが変更されると、ユーザデータベース内の変更追跡機構は、後でこれらの変更と他のレプリカの同期をとるのを可能にするレプリケーションメタデータを追跡する。変更列挙は、ソースレプリカと宛先レプリカとの前の同期以来このレプリカで起こった変更を列挙する同期プロセスの段階である。
レプリケーション処理の変更調停段階および変更適用段階は有意の影響を受けない。
次に、行が挿入、更新、または削除されるときのレプリケーションメタデータの修正に関して、変更追跡機構について説明する。行が挿入される際、その行の現在のパーティションメンバーシップが評価され、この情報が現在変更パーティションマッピングテーブル304において持続する。この所与の行の子行がすでに存在するいくつかのまれな場合には、新しい行を挿入すると、展開プロセスを用いて子行のパーティションメンバーシップも評価される。
ある行が非フィルタ列更新によって更新される際、この所与の行に関するメタデータがメタデータテーブル内にない場合、この行の現在のパーティションメンバーシップが評価され、この情報が現在変更パーティションマッピングテーブル304において持続する。パーティションメンバーシップはメタデータがすでに存在する場合には評価されない。なぜなら、メタデータが存在することは、パーティションメンバーシップがすでに評価されていることを示すからである。
ある行が列フィルタリング更新によって更新される際、その行が過去に属していたパーティションは、更新の前に、変更追跡中に得られる「ビフォー」値を用いて評価される。子行のパーティションメンバーシップは親行のパーティションメンバーシップの影響を受けるので、展開プロセスを用いて子行の過去のパーティションメンバーシップが評価される。すべての過去のパーティションメンバーシップは過去変更パーティションマッピングテーブル306に記憶される。さらに、パーティション更新が行われる論理時間が過去変化テーブル306の同期アンカー列に記録される。これによって、同期プロセスは、パーティション更新の伝播を、すでに前の同期セッション中にまたは異なるソースレプリカとの同期を介してこの変更を見ているレプリカまでに減衰させることができる。過去パーティションマッピングを評価すると、基本的に、現在変更パーティションマッピングテーブル304内のあらゆるエントリがクリーンナップされることに留意されたい。これは、これらのエントリがパーティション更新によって無効にされているからである。
ある行が列フィルタリング更新によって更新される際、その行が現在属しているパーティションは、更新後に、変更追跡中に得られる「アフター」値を用いて評価される。子行のパーティションメンバーシップは親行のパーティションメンバーシップの影響を受けるので、展開プロセスを用いて子行の現在のパーティションメンバーシップが評価される。すべての現在のパーティションメンバーシップは現在変更パーティションマッピングテーブル304に記憶される。
削除を処理する際、行が削除の前に属していたパーティションは、変更追跡中に得られる「ビフォー」値を用いて評価される。子行のパーティションメンバーシップは親行のパーティションメンバーシップの影響を受けるので、展開プロセスを用いて子行の過去のパーティションメンバーシップが評価される。すべての過去のパーティションメンバーシップは過去変更パーティションマッピングテーブル306に記憶される。さらに、パーティション更新が行われる論理時間がテーブル306の同期アンカー列に記録される。これによって、同期プロセスは、パーティション更新を、すでに前の同期セッション中にこの変更を見ているレプリカまで、パーティション更新を冗長に伝播させることができる。行およびその子は削除後このパーティションには存在しないので、現在変更パーティションマッピングテーブル304内のエントリを作成する必要はない。過去パーティションマッピングを評価すると、基本的に、現在変更パーティションマッピングテーブル304内のあらゆるエントリがクリーンナップされることに留意されたい。これは、これらのエントリが行削除プロセスによって無効にされているからである。
パーティションを更新する場合、変更追跡機構は、更新が宛先レプリカまで効率的に伝播するようにメタデータを更新する必要がある。重要な点は、行のパーティションメンバーシップが変更される際、行のパーティション_idを更新しなければならず、かつ親行が更新されたためにパーティションメンバーシップが変更された子行はそのパーティションidを再評価してもらわなければならないことである。この情報は、ここに示される例で利用される展開プロセスを用いて取り込まれる。
変更列挙機構は、パーティションメンバーシップメタデータを用いて変更をソースレプリカから宛先レプリカまで効率的に伝播させる。変更追跡機構はすでにパーティションを評価し展開を実行しているので、実行時の変更列挙の複雑さは大幅に簡略化される。
削除およびパーティション更新は、「過去パーティションマッピングエントリ」を有する変更の集合に寄与する。これらの変更の集合は、同期アンカーがこのセッションの調停された同期アンカーよりも新しく、パーティション_idが宛先レプリカのパーティション_idに一致する行を過去変更パーティションマッピングテーブル306から選択することによって列挙される。次いで、これらの行は、削除として宛先レプリカに伝播させられる。
区分された挿入および更新と、区分されていない挿入および更新は、「現在パーティションマッピングエントリ」を有する変更の集合に寄与する。変更のこれらの集合は、同期アンカーがこのセッションに関して調停された同期アンカーよりも新しく、かつ宛先レプリカのパーティション_idに一致するパーティション_idを有するエントリを現在変更パーティションマッピングテーブル304内に有する行を、行メタデータテーブル312から選択することによって列挙される。これらの行は、宛先レプリカへの更新として伝播する。
所与のパーティションに対する変更が列挙されると、これらの変更は、コンフリクト検出解決機構によって既存の技術を用いて伝播させられる。同様に、所与のパーティションに対する変更が列挙され、コンフリクトが検出され解決されると、これらの変更は変更適用機構によって既存の技術を用いて伝播させられる。
生成区分
パーティションへの行のマッピングがソースレプリカで維持されるため、ソースレプリカと宛先レプリカとの間で伝播させられる関連する生成のリストを効率的に算出することができる。たとえば、生成パーティションマッピングテーブル308は、列生成_id、すなわち一群の生成に割り当てられた同期アンカーを含んでいる。変更が宛先レプリカからソースレプリカまで伝播する際、これらの変更にはソースレプリカで新しい生成_idが割り当てられる。この生成の一部である行は宛先パーティションP1に属するので、この生成はこの宛先のパーティション_idP1にマップされる。他の異なるパーティションP2に属する異なる宛先レプリカがソースレプリカと同期すると、生成マッピングによってP1個の生成が削除される。パーティション_idが−1という特別の値を有する場合、この生成がグローバルであり、したがって、すべてのパーティションに関連する生成であることを示している。
以下にテーブル5、すなわちサンプル生成パーティションマッピングテーブル308を示す。最後の列は、サンプルデータの解釈のためのみのものであり、スキーマの一部として必要なものではない。
生成の区分(partitioning)は、本発明のパーティショングループ分け態様に基づく最適化であり、3つの利益を与え、すなわち、関連する変更が効率的に削除され、多数の宛先レプリカがソースレプリカと同期しているときでも同期セッションの持続時間が予測可能であり、生成の伝播によってネットワーク性能が向上する。
各々が異なるパーティションを有する多数の宛先レプリカとソースレプリカが同期するトポロジーでは、生成区分によって、同期プロセスは関連する変更を効率的に削除することができる。たとえば、各部分集合が1人の販売員に特有の販売情報を含むデータのいくつかの異なる部分集合を与える1つのソースレプリカがあるトポロジーを考える。最初、1000個の宛先レプリカが10000個の変更をソースレプリカに伝播させ、10000個の変更がソースレプリカにおいて100個の異なる生成に含められると仮定した場合、すべての100個の宛先レプリカがその変更をソースレプリカに伝播させると、合計で1000×10000個、すなわち1000万個の変更がソースレプリカにおける10万個の生成に含められる。したがって、生成パーティションマッピングテーブル308は、各集合が単一のパーティションにマッピングされる100個の生成の集合を持つ10万個のエントリを有する。
異なるパーティション_id=P1001を有する第1の宛先レプリカがソースレプリカと同期すると、すべての生成がパーティションP1〜P1000に対応するパーティションにマップされるため、すべての10万個の生成(したがって、1000万個の変更)はパーティション_id=P1001を有する第1の宛先レプリカと無関係になる。一方、パーティション_id=P500を有する第2の宛先レプリカがソースレプリカと同期した場合、同期によって、第2の宛先レプリカ(パーティション_id=P500を有する)に関連する生成であり、したがって、厳密に10000個の変更を第2の宛先レプリカに伝播させる厳密に100個の生成が効果的に列挙される。
生成区分最適化の他の利点は、パーティションに関連する変更の数に対して宛先レプリカによって調べられる同期メタデータの量が調節されるので、ソースレプリカと宛先レプリカとの間の同期セッションの持続時間が予測可能であることである。一例として、パーティション_id=P500を有する宛先レプリカが長時間にわたってソースレプリカと同期していないと仮定する。マージレプリケーションの既存のバージョンでは、この宛先レプリカは最終的にソースレプリカと同期する際にペナルティが科される。なぜなら、この宛先レプリカは、ソースレプリカに累積しているすべての生成を列挙する必要があるからである。すなわち、たとえば、1000個の宛先レプリカがそれぞれ100個の生成を伝播させた場合、関連する生成および無関係の生成から成るこの集合は合計で10万個の生成を有し、これは顕著な数である。10万個の生成が検討された後、「同期セッション当たりパーティション計算」アルゴリズムは無関係の変更を削除し、関連する変更のみが宛先レプリカに伝播する。
生成が関連するパーティション識別子に区分されている場合を考える。本発明の態様によれば、宛先レプリカ(たとえば、パーティション_id=P500)との同期セッションにはペナルティが科されない。これは、この宛先レプリカがただちに関連する生成を識別できるからである。無関係の生成が宛先レプリカに伝播するのが回避されるので、ネットワーク化特性に対する生成区分の影響は顕著である。引き続きこの例で言えば、このことは、10万マイナス100、すなわち99900個の生成(宛先レプリカに伝播させる必要のない生成)の節約に相当する。ソースレプリカでローカル変更が加えられたとき、それらの変更が単一のパーティションのみに関連する場合でも、パーティションの集合に関連する場合でも、これらのローカル変更をグローバル生成として伝播させた方がより好ましくかつより効率的である場合がある。この場合の前提は、ソースレプリカで加えられる変更が実質的にすべての宛先レプリカに関連する変更であり、一方、宛先レプリカで加えられる変更が、同じパーティション_idを共用する他の宛先レプリカにのみ関連する変更であることである。
本発明の態様が他の用途を有することが理解されよう。たとえば、多数のクライアントユーザからアクセスできるサーバファーム(farm)では、第1のサーバの特定のユーザに対して起こったパーティション変更を用いて、このユーザに対して、第1のサーバとの関連付けを解除して第2のサーバに関連付けすべきかどうかが判定される。この「関連付けプロセス」は、変更がデータベース情報のあるフィールドに加えられたものとして追跡された後、関連するプロセスが自動的にトリガされるように所定の基準に従って自動的に実行することができる。
本発明をデータベースの変更に関して説明したが、本発明がそれに限らず、それぞれの異なるソース間でデータ同期が必要とされるあらゆる環境に適用できることがさらに理解されよう。たとえば、本発明は、ネットワーク上のあらゆるユーザおよびリソースの名前、プロファイル情報、ユーザアカウント、ネットワーク許可、マシンアドレスを調停することのできるディレクトリサービスに適用することができる。
次に図6を参照すると、開示されるアーキテクチャを実行するように動作することのできるコンピュータのブロック図が示されている。本発明の様々な態様についてさらに説明するために、図6および以下の解説では、本発明の様々な態様を実施できる適切なコンピューティング環境600について簡単にかつ概略的に説明する。上記では、1つまたは複数のコンピュータ上で実行できるコンピュータ実行可能な命令の一般的な状況に関して本発明を説明したが、当業者には、本発明を他のプログラムモジュールと組み合わせ、かつ/またはハードウェアとソフトウェアの組合せとして実施することもできることが認識されよう。一般に、プログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実現するルーチン、プログラム、構成要素、データ構造などを含む。さらに、当業者には、各々が、1つまたは複数の関連する装置に動作可能に結合された、シングルプロセッサコンピュータシステムまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータや、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品などを含む、他のコンピュータシステム構成によって本発明の方法を実施できることが理解されよう。本発明の例示される態様は、ある種のタスクが通信網を通して互いにリンクされたリモート処理装置によって実行される分散型コンピューティング環境で実施することもできる。分散型コンピューティング環境では、プログラムモジュールはローカルメモリ記憶装置とリモートメモリ記憶装置の両方に配置することができる。
再び図6を参照すると、本発明の様々な態様を実施する例示的な環境600は、プロセッサ604、システムメモリ606、およびシステムバス608を含むコンピュータ602を含んでいる。システムバス608は、システムメモリ606を含むがそれに限らないシステム構成要素をプロセッサ604に結合する。プロセッサ604は、様々な市販のプロセッサのうちのどれであってもよい。デユアルマイクロプロセッサおよびその他のマルチプロセッサアーキテクチャをプロセッサ604として使用することもできる。
システムバス608は、様々な市販のバスアーキテクチャのうちのどれかを用いたメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかの種類のバス構造のうちのどれであってもよい。システムメモリ606は、読取り専用メモリ(ROM)610およびランダムアクセスメモリ(RAM)612を含んでいる。立上げ時などにコンピュータ602内の各要素間での情報の転送を助ける基本ルーチンを含むBIOS(Basic Input/Output System)がROM610に記憶されている。
コンピュータ602は、ハードディスクドライブ614、磁気ディスクドライブ616(たとえば、リムーバブルディスクに対する読取りまたは書込みを行う)、光ディスクドライブ620(たとえば、CD(compact disc)−ROMディスク622からの読取りや他の光媒体に対する読取りまたは書込みを行う)をさらに含んでいる。ハードディスクドライブ614、磁気ディスクドライブ616、および光ディスクドライブ620はそれぞれ、ハードディスクドライブインタフェース624、磁気ディスクドライブインタフェース626、および光ドライブインタフェース628によってシステムバス608に接続することができる。各ドライブおよびそれに関連するコンピュータ読取り可能な媒体は、データ、データ構造、コンピュータ実行可能な命令などの非揮発性記憶を行う。コンピュータ602の場合、各ドライブおよび媒体は、適切なデジタルフォーマットでのブロードキャストプログラミング(broadcast programming)のストレージに対処する。コンピュータ読取り可能な媒体についての上記の説明はハードディスク、リムーバブル磁気ディスク、およびCDに関するものであるが、当業者には、zipドライブ、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、カートリッジなどによって読み取ることのできる他の種類の媒体を例示的な動作環境で使用することもでき、さらに、このような媒体が、本発明の方法を実行するコンピュータ実行可能な命令を含んでよいことを理解されたい。
オペレーティングシステム630、1つまたは複数のアプリケーションプログラム632、他のプログラムモジュール634およびプログラムデータ636を含む多数のプログラムモジュールをドライブおよびRAM612に記憶することができる。本発明を様々な市販のオペレーティングシステムまたは複数のオペレーティングシステムの組合せによって実現できることが理解されよう。
ユーザは、キーボード638、およびマウス640などのポインティングデバイスによってコンピュータ602にコマンドおよび情報を入力することができる。他の入力装置(図示せず)には、マイクロフォン、IR(infrared)リモートコントロール、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含めてよい。これらおよびその他の入力装置は、システムバス608に結合されたシリアルポートインタフェース642を通じてプロセッサ604に接続されることが多いが、パラレルポート、ゲームポート、USB(Universal Serial Bus)、IRインタフェースのような他のインタフェースによって接続してよい。モニタ644または他の種類の表示装置も、ビデオアダプタ646などのインタフェースを介してシステムバス608に接続されている。コンピュータは通常、モニタ644だけでなく、スピーカ、プリンタのような他の周辺出力装置(図示せず)を含んでいる。
コンピュータ602は、1つまたは複数のリモートコンピュータ648との論理接続を用いてネットワーク化環境で動作することができる。リモートコンピュータ648は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースの娯楽電化製品、ピアデバイス、またはその他の一般的なネットワークノードであってよく、通常、コンピュータ602に関して説明した要素のうちの多くまたはすべてを含む。ただし、説明を簡単にするために、記憶装置650を例示する。図示の論理接続はLAN(local area network)652およびWAN(wide area network)654を含んでいる。このようなネットワーク化環境は、オフィス、企業内コンピュータネットワーク、イントラネット、およびインターネットで一般的に用いられている。
コンピュータ602は、LANネットワーク化環境で用いられるときは、ネットワークインタフェースまたはアダプタ656を通じてLAN652に接続される。コンピュータ602は、WANネットワーク化環境で用いられるときは通常、モデム658を含むか、またはLAN上の通信サーバに接続されるか、あるいはインターネットなどのWAN654上の通信を確立する他の手段を有する。モデム658は、内部モデムでも外部モデムでもよく、シリアルポートインタフェース642を介してシステムバス608に接続されている。ネットワーク化環境では、コンピュータ602に対して図示されているプログラムモジュールまたはその一部をリモートの記憶装置650に記憶することができる。図示のネットワーク接続は例示的なものであり、各コンピュータ間に通信リンクを確立する他の手段を使用できることが理解されよう。
次に図7を参照すると、本発明によるサンプルコンピューティング環境700の概略ブロック図が示されている。システム700は1つまたは複数のクライアント702を含んでいる。クライアント702はハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティング装置)であってよい。クライアント702は、たとえば本発明を使用することによって、クッキーおよび/または関連するコンテキスト情報を格納することができる。システム700は1つまたは複数のサーバ704も含んでいる。サーバ704はハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティング装置)であってよい。サーバ704は、たとえば本発明を使用することによって、変換を実行するスレッドを格納することができる。クライアント702とサーバ704との間の1つの可能な通信は、2つ以上のコンピュータプロセス間に送信されるようになっているデータパケットの形であってよい。データパケットは、たとえばクッキーおよび/または関連するコンテキスト情報を含んでよい。システム700は、クライアント702とサーバ704との間の通信を容易にするのに用いることのできる通信フレームワーク706を含んでいる。クライアント702は、クライアント702に対してローカルな情報(たとえば、クッキーおよび/または関連するコンテキスト情報)を記憶するのに用いることのできる1つまたは複数のクライアントデータストア708に動作可能に接続されている。同様に、サーバ704は、サーバ704に対してローカルな情報を記憶するのに用いることのできる1つまたは複数のサーバデータストア710に動作可能に接続されている。
上記で説明した内容は本発明の例を含む。もちろん、本発明について説明するために、構成要素または方法の考えられるあらゆる組合せを説明するのは不可能であるが、当業者には、本発明の他の多数の組合せおよび変形が可能であることが認識されよう。したがって、本発明は添付の特許請求の範囲の要旨および範囲内のすべてのそのような変更形態、修正形態、および変形形態を包含するものである。さらに、語「含む(include)」は、詳細な説明または特許請求の範囲で使用される範囲で、語「備える(comprising)」が特許請求の範囲において移行句として使用されるときに包括的と解釈されるのと同様に包括的なものである。
本発明を適用できる実施形態のシステムブロック図である。 本発明を適用できる実施形態のレプリケーションプロセスのフローチャートの図である。 本発明を適用できる実施形態の宛先のメンバーシップメタデータを算出する計算アルゴリズムによって利用されるメタデータテーブルの相互関係を示す図である。 本発明を適用できる実施形態のフィルタリングおよび展開を利用するサンプル更新スキーマを示す図である。 本発明を適用できる実施形態の顧客データがある従業員から別の従業員に再割当てされるパーティション更新の例を示す図である。 本発明を適用できる実施形態の開示されるアーキテクチャを実行するように動作させることのできるコンピュータのブロック図である。 本発明を適用できる実施形態のサンプルコンピューティング環境の概略ブロック図である。
符号の説明
100 ソース
102 CPU
104 ソースデータベース
106 第1の宛先
108、118、124 宛先データベース
110 パーティション計算アルゴリズム
112 第1のレプリカデータ
114 メンバーシップメタデータ
116 第2の宛先
120 レプリカデータ
122 N番目の宛先
126 ダウンロードすべき変更の集合

Claims (30)

  1. ソースレプリカ及び複数の宛先レプリカを用いてクライアント/サーバ環境における同期を容易にするシステムであって、前記クライアント/サーバ環境は、サーバ及び複数のクライアントを含み、第1のクライアントにおける第1の宛先レプリカは、第1の同期セッション中に前記サーバにおける前記ソースレプリカと同期され、他のクライアントにおける他の宛先レプリカは、前記第1の宛先レプリカが前記ソースレプリカで同期された後の同期セッション中に前記サーバにおける前記ソースレプリカと同期される前記システムは、
    前記第1のクライアントから、最後の同期から変更されたデータ行を含む前記第1の宛先レプリカのパーティションを受信する、前記サーバ上の受信器構成要素と、
    前記他のクライアント同期をとる前に、前記他のクライアントのうちのどれが前記変更されたデータ行を含むパーティションの影響を受けるかを判定する、前記サーバ上の判定構成要素であって、前記サーバは、メンバーシップ情報を判定し、かつ記憶し、前記メンバーシップ情報は、前記第1の宛先レプリカと前記サーバにおける前記ソースレプリカとを同期する前記同期セッション中に変更される前記第1の宛先レプリカの行エントリのパーティションメンバーシップを特定し、変更された行についての前記メンバーシップ情報は、変更された行の行識別子と、前記変更された行を受信するように判定された前記宛先レプリカのパーティション識別子との間のマッピングを含む、前記判定構成要素と、
    前記変更されたデータ行を含むパーティションの影響を受けると判定された前記他のクライアントの同期セッション中に、前記他のクライアントの前記他の宛先レプリカを、前記メンバーシップ情報を利用して更新する前記サーバ上の更新構成要素と
    を備えたことを特徴とするシステム。
  2. 前記パーティションは、レプリケーションメタデータの形で受信され、
    前記レプリケーションメタデータは、行メタデータ、生成メタデータ、パーティションメタデータ、生成パーティションマッピング、現在変更パーティションマッピング、および過去変更パーティションマッピングのうちの少なくとも1つのデータを表すテーブルを含む
    ことを特徴とする請求項1に記載のシステム。
  3. 前記第1のクライアントのパーティションと前記第1の宛先レプリカは、更新を受ける行が更新されるように揃えられる
    ことを特徴とする請求項1に記載のシステム。
  4. 前記第1のクライアントのパーティションは、更新を受ける行が、更新され、かつフィルタを用いて、結合されたテーブルから関連する行を得ることによって展開されるように、前記第1の宛先レプリカに揃えられる
    ことを特徴とする請求項1に記載のシステム。
  5. 前記行は、ジョインフィルタである前記フィルタを用いて展開され、展開計算は、集合ベースのクエリーに従う
    ことを特徴とする請求項4に記載のシステム。
  6. 前記フィルタはダイナミック行フィルタである
    ことを特徴とする請求項4に記載のシステム。
  7. 前記パーティションは、前記パーティションの影響を受ける前記他のクライアントと同期している間持続するメンバーシップ情報であるメタデータの宛先レプリカを含む
    ことを特徴とする請求項1に記載のシステム。
  8. 行削除と行更新の少なくとも一方を含む持続するメンバーシップ情報は、過去のメンバーシップに関する行情報を必要とする
    ことを特徴とする請求項7に記載のシステム。
  9. 前記パーティションは、最後の更新時に更新されなかった前記他のクライアントのみが更新されるように同期アンカー値に従って伝播させられる
    ことを特徴とする請求項1に記載のシステム。
  10. 前記パーティションは、前記第1の宛先レプリカの行の更新、挿入、および削除の少なくとも1つが行われるときに前記パーティションの変更を処理する変更追跡論理によって追跡される
    ことを特徴とする請求項1に記載のシステム。
  11. 前記他のクライアントとの同期中に前記他のクライアントの前記パーティションの変更を列挙し、前記最後の同期以後に起こった前記他のクライアントの変更を処理する変更列挙機構
    をさらに備えたことを特徴とする請求項1に記載のシステム。
  12. 削除およびパーティションの変更は、同期アンカーがセッションの調停された同期アンカーよりも新しい行を選択することによって列挙され、
    前記行は、前記行の過去の変更を反映するメタデータから選択される
    ことを特徴とする請求項11に記載のシステム。
  13. 挿入およびパーティションの変更は、同期アンカーが前記セッションの調停された同期アンカーよりも新しい行を選択することによって列挙され、
    前記行は、前記行の現在の変更を反映するメタデータから選択される
    ことを特徴とする請求項11に記載のシステム。
  14. 前記第1の宛先レプリカから伝播させられる変更に割り当てられる同期アンカーをさらに備え、前記同期アンカーは生成識別情報の形である
    ことを特徴とする請求項1に記載のシステム。
  15. 前記それぞれのクライアントが同期するときに、第1のパーティションの前記生成識別情報に第2のパーティションの生成識別情報が上書きされる
    ことを特徴とする請求項14に記載のシステム。
  16. ソースレプリカ及び複数の宛先レプリカを用いてクライアント/サーバ環境における同期を容易にする方法であって、前記クライアント/サーバ環境は、サーバ及び複数のクライアントを含み、第1のクライアントにおける第1の宛先レプリカは、第1の同期セッション中に前記サーバにおける前記ソースレプリカと同期され、他のクライアントにおける他の宛先レプリカは、前記第1の宛先レプリカが前記ソースレプリカで同期された後の同期セッション中に前記サーバにおける前記ソースレプリカと同期される前記方法は、
    前記サーバが、前記第1のクライアントから、最後の同期から変更されたデータ行を含む前記第1の宛先レプリカのパーティションを受信するステップと、
    前記サーバが、前記他のクライアント同期をとる前に、前記他のクライアントのうちのどれが前記変更されたデータ行を含むパーティションの影響を受けるかを判定するステップであって、前記サーバは、メンバーシップ情報を判定し、かつ記憶し、前記メンバーシップ情報は、前記第1の宛先レプリカと前記サーバにおける前記ソースレプリカとを同期する前記同期セッション中に変更される前記第1の宛先レプリカの行エントリのパーティションメンバーシップを特定し、変更された行についての前記メンバーシップ情報は、変更された行の行識別子と、前記変更された行を受信するように判定された前記宛先レプリカのパーティション識別子との間のマッピングを含むステップと、
    前記サーバが、前記変更されたデータ行を含むパーティションの影響を受けると判定された前記他のクライアントの同期セッション中に、前記他のクライアントの前記他の宛先レプリカを、前記メンバーシップ情報を利用して更新するステップと
    を備えることを特徴とする方法。
  17. 前記パーティションは、レプリケーションメタデータの形で受信され、
    前記レプリケーションメタデータは、行メタデータ、生成メタデータ、パーティションメタデータ、生成パーティションマッピング、現在変更パーティションマッピング、および過去変更パーティションマッピングのうちの少なくとも1つのデータを表すテーブルを含む
    ことを特徴とする請求項16に記載の方法。
  18. 前記サーバが、前記第1のクライアントのパーティションと前記第1の宛先レプリカを、更新を受ける行が更新されるように揃えるステップ
    をさらに備えることを特徴とする請求項16に記載の方法。
  19. 更新を受ける行が、更新され、かつフィルタを用いて結合されたテーブルから関連する行を得ることによって展開されるように、前記サーバが、前記第1のクライアントのパーティションと前記第1の宛先レプリカとを揃えるステップ
    をさらに備えることを特徴とする請求項16に記載の方法。
  20. 前記行は、ジョインフィルタである前記フィルタを用いて展開され、展開計算は、集合ベースのクエリーに従う
    ことを特徴とする請求項19に記載の方法。
  21. 前記フィルタはダイナミック行フィルタである
    ことを特徴とする請求項19に記載の方法。
  22. 前記パーティションは、前記パーティションの影響を受ける前記他のクライアントと同期している間持続するメンバーシップ情報であるメタデータの部分レプリカを含む
    ことを特徴とする請求項16に記載の方法。
  23. 行削除と行更新の少なくとも一方を含む持続するメンバーシップ情報は、過去のメンバーシップに関する行情報を必要とする
    ことを特徴とする請求項22に記載の方法。
  24. 前記パーティションは、最後の更新時に更新されなかった前記他のクライアントのみが更新されるように同期アンカー値に従って伝播させられる
    ことを特徴とする請求項16に記載の方法。
  25. 前記パーティションは、前記第1の宛先レプリカの行の更新、挿入、および削除の少なくとも1つが行われるときに前記パーティションの変更を処理する変更追跡論理によって追跡される
    ことを特徴とする請求項16に記載の方法。
  26. 前記サーバが、前記最後の同期以後に起こった前記他のクライアントの変更を処理する変更列挙機構を用いて前記他のクライアントとの同期中に前記他のクライアントの変更を列挙するステップ
    をさらに備えることを特徴とする請求項16に記載の方法。
  27. 削除およびパーティションの変更は、同期アンカーがセッションの調停された同期アンカーよりも新しい行を選択することによって列挙され、
    前記行は、前記行の過去の変更を反映するメタデータから選択される
    ことを特徴とする請求項26に記載の方法。
  28. 挿入およびパーティションの変更は、同期アンカーがセッションの調停された同期アンカーよりも新しい行を選択することによって列挙され、
    前記行は、前記行の現在の変更を反映するメタデータから選択される
    ことを特徴とする請求項26に記載の方法。
  29. 前記サーバが、前記第1の宛先レプリカから伝播させられる変更に同期アンカーを割り当てるステップをさらに備え、前記同期アンカーは生成識別情報の形である
    ことを特徴とする請求項16に記載の方法。
  30. 前記それぞれのクライアントが同期するときに、第1のパーティションの前記生成識別情報に第2のパーティションの生成識別情報が上書きされる
    ことを特徴とする請求項29に記載の方法。
JP2004116087A 2003-05-09 2004-04-09 クライアント/サーバ環境における同期を容易にするシステムおよび方法 Expired - Fee Related JP4537751B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/434,647 US7406499B2 (en) 2003-05-09 2003-05-09 Architecture for partition computation and propagation of changes in data replication

Publications (3)

Publication Number Publication Date
JP2004334858A JP2004334858A (ja) 2004-11-25
JP2004334858A5 JP2004334858A5 (ja) 2007-04-12
JP4537751B2 true JP4537751B2 (ja) 2010-09-08

Family

ID=32990559

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004116087A Expired - Fee Related JP4537751B2 (ja) 2003-05-09 2004-04-09 クライアント/サーバ環境における同期を容易にするシステムおよび方法

Country Status (7)

Country Link
US (1) US7406499B2 (ja)
EP (1) EP1475724B1 (ja)
JP (1) JP4537751B2 (ja)
KR (1) KR101069350B1 (ja)
CN (1) CN1551555B (ja)
AT (1) ATE447744T1 (ja)
DE (1) DE602004023892D1 (ja)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739363B1 (en) * 2003-05-09 2010-06-15 Apple Inc. Configurable offline data store
US7899784B2 (en) * 2003-05-28 2011-03-01 Oracle International Corporation Method and apparatus for performing multi-table merge operations in a database environment
US7568034B1 (en) * 2003-07-03 2009-07-28 Google Inc. System and method for data distribution
US8136025B1 (en) 2003-07-03 2012-03-13 Google Inc. Assigning document identification tags
US7440981B2 (en) * 2003-07-31 2008-10-21 Microsoft Corporation Systems and methods for replicating data stores
US7401103B2 (en) * 2003-07-31 2008-07-15 Microsoft Corporation Replication protocol for data stores
US7440985B2 (en) * 2003-07-31 2008-10-21 Microsoft Corporation Filtered replication of data stores
US7730026B2 (en) 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7933868B2 (en) * 2004-11-04 2011-04-26 Microsoft Corporation Method and system for partition level cleanup of replication conflict metadata
US8346843B2 (en) 2004-12-10 2013-01-01 Google Inc. System and method for scalable data distribution
JP2006164162A (ja) * 2004-12-10 2006-06-22 Fujitsu Ltd コピー制御装置および方法
FI120165B (fi) * 2004-12-29 2009-07-15 Seven Networks Internat Oy Tietokannan synkronointi matkaviestinverkon kautta
US7979405B2 (en) * 2005-01-14 2011-07-12 Microsoft Corporation Method for automatically associating data with a document based on a prescribed type of the document
US7966286B2 (en) * 2005-02-14 2011-06-21 Microsoft Corporation Hierarchical management of object schema and behavior
US7720890B2 (en) * 2005-02-22 2010-05-18 Microsoft Corporation Ghosted synchronization
SG162819A1 (en) * 2005-03-21 2010-07-29 Dexterra Inc Modular applications for mobile data system
US20060230098A1 (en) * 2005-03-30 2006-10-12 International Business Machines Corporation Routing requests to destination application server partitions via universal partition contexts
US7895186B2 (en) * 2005-03-31 2011-02-22 Oracle International Corp. Method and mechanism of materialized view mix incremental refresh
US8495015B2 (en) * 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7523146B2 (en) * 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US20070005579A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Query based synchronization
US8639660B1 (en) * 2005-08-10 2014-01-28 Symantec Operating Corporation Method and apparatus for creating a database replica
CA2624061C (en) * 2005-09-28 2019-01-15 One Smart Star Limited Communicating with business customers
US7606811B1 (en) * 2006-01-03 2009-10-20 Emc Corporation Methods and apparatus for synchronizing information
DE102006005840B4 (de) * 2006-02-08 2007-10-31 Combots Product Gmbh & Co. Kg Verfahren zum gemeinsamen Bearbeiten einer Datenmenge sowie ein Netzwerksystem und ein Kommunikationssystem zur Durchführung des Verfahrens
US7606838B2 (en) * 2006-02-22 2009-10-20 Microsoft Corporation Distributed conflict resolution for replicated databases
US7890646B2 (en) * 2006-04-27 2011-02-15 Microsoft Corporation Synchronization orchestration
US20090030952A1 (en) * 2006-07-12 2009-01-29 Donahue Michael J Global asset management
US7577691B2 (en) * 2006-08-02 2009-08-18 Microsoft Corporation Extending hierarchical synchronization scopes to non-hierarchical scenarios
WO2008018969A1 (en) * 2006-08-04 2008-02-14 Parallel Computers Technology, Inc. Apparatus and method of optimizing database clustering with zero transaction loss
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US7653664B2 (en) * 2006-11-03 2010-01-26 Microsoft Corporation Anchor for database synchronization excluding uncommitted transaction modifications
US7627595B2 (en) * 2006-12-06 2009-12-01 Verizon Data Services Inc. Apparatus, method, and computer program product for synchronizing data sources
US20080162589A1 (en) * 2006-12-29 2008-07-03 Microsoft Corporation Weakly-consistent distributed collection compromised replica recovery
US7657769B2 (en) * 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US7620659B2 (en) * 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
AU2008200511B2 (en) * 2007-02-28 2010-07-29 Videobet Interactive Sweden AB Transaction processing system and method
AU2008201035A1 (en) * 2007-04-13 2008-10-30 Acei Ab A partition management system
US7809593B2 (en) * 2007-05-16 2010-10-05 Amadeus S.A.S. Method and system for automatically keeping travel data consistent between passenger reservation records and corresponding electronic tickets
US20080288983A1 (en) * 2007-05-18 2008-11-20 Johnson Bradley G System and Method for Providing Sequential Video and Interactive Content
US20080294701A1 (en) * 2007-05-21 2008-11-27 Microsoft Corporation Item-set knowledge for partial replica synchronization
US20130110777A1 (en) * 2007-06-06 2013-05-02 Kunio Kamimura Synchronization of data edited in parallel
US8209294B2 (en) * 2007-06-15 2012-06-26 Oracle International Corporation Dynamic creation of database partitions
US8135688B2 (en) * 2007-06-15 2012-03-13 Oracle International Corporation Partition/table allocation on demand
US8140493B2 (en) * 2007-06-15 2012-03-20 Oracle International Corporation Changing metadata without invalidating cursors
US8356014B2 (en) * 2007-06-15 2013-01-15 Oracle International Corporation Referring to partitions with for (values) clause
US8505065B2 (en) * 2007-06-20 2013-08-06 Microsoft Corporation Access control policy in a weakly-coherent distributed collection
US7685185B2 (en) * 2007-06-29 2010-03-23 Microsoft Corporation Move-in/move-out notification for partial replica synchronization
US20090006489A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Hierarchical synchronization of replicas
US8095495B2 (en) * 2007-09-25 2012-01-10 Microsoft Corporation Exchange of syncronization data and metadata
US8386387B2 (en) * 2007-12-21 2013-02-26 Utrom Processing Co. L.L.C. System and method for tracking syndication of internet content
JP4591875B2 (ja) * 2007-12-25 2010-12-01 村田機械株式会社 中継サーバ及び中継通信システム
US20090199242A1 (en) * 2008-02-05 2009-08-06 Johnson Bradley G System and Method for Distributing Video Content via a Packet Based Network
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
JP5192863B2 (ja) * 2008-03-19 2013-05-08 株式会社野村総合研究所 情報処理システム
US8078957B2 (en) * 2008-05-02 2011-12-13 Microsoft Corporation Document synchronization over stateless protocols
US8265990B2 (en) * 2008-05-15 2012-09-11 Utrom Processing Co. L.L.C. Method and system for selecting and delivering media content via the internet
US8700301B2 (en) 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US20090315766A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Source switching for devices supporting dynamic direction information
US20090319166A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US20090315775A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US8467991B2 (en) 2008-06-20 2013-06-18 Microsoft Corporation Data services based on gesture and location information of device
US7996360B2 (en) * 2008-06-27 2011-08-09 International Business Machines Corporation Coordinating updates to replicated data
US9069797B1 (en) * 2008-12-24 2015-06-30 Emc Corporation System and method for file system simulation
US20100228612A1 (en) * 2009-03-09 2010-09-09 Microsoft Corporation Device transaction model and services based on directional information of device
US8219526B2 (en) * 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US20100332324A1 (en) * 2009-06-25 2010-12-30 Microsoft Corporation Portal services based on interactions with points of interest discovered via directional device information
US8872767B2 (en) 2009-07-07 2014-10-28 Microsoft Corporation System and method for converting gestures into digital graffiti
US8600996B2 (en) * 2009-12-08 2013-12-03 Tripwire, Inc. Use of inference techniques to facilitate categorization of system change information
US8996684B2 (en) * 2009-12-08 2015-03-31 Tripwire, Inc. Scoring and interpreting change data through inference by correlating with change catalogs
US9741017B2 (en) 2009-12-08 2017-08-22 Tripwire, Inc. Interpreting categorized change information in order to build and maintain change catalogs
JP5673556B2 (ja) * 2009-12-25 2015-02-18 日本電気株式会社 グルーピング連携システム、グルーピング連携方法、およびグルーピング処理フロー管理プログラム
US8606756B2 (en) * 2010-04-09 2013-12-10 Ca, Inc. Distributed system having a shared central database
US9229701B2 (en) 2013-03-15 2016-01-05 Microsoft Technology Licensing, Llc Local store data versioning
US9329938B2 (en) * 2013-04-16 2016-05-03 International Business Machines Corporation Essential metadata replication
US9423981B2 (en) 2013-04-16 2016-08-23 International Business Machines Corporation Logical region allocation with immediate availability
US9619404B2 (en) 2013-04-16 2017-04-11 International Business Machines Corporation Backup cache with immediate availability
US9298617B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Parallel destaging with replicated cache pinning
US9104332B2 (en) 2013-04-16 2015-08-11 International Business Machines Corporation Managing metadata and data for a logical volume in a distributed and declustered system
US9104597B2 (en) 2013-04-16 2015-08-11 International Business Machines Corporation Destaging cache data using a distributed freezer
US9298398B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Fine-grained control of data placement
US9882968B1 (en) 2014-12-09 2018-01-30 Amazon Technologies, Inc. Virtual network interface multiplexing
US9792352B1 (en) * 2015-03-30 2017-10-17 EMC IP Holding Company LLC Modeling and persisting multiple related states of data
US10824639B2 (en) * 2015-12-18 2020-11-03 Sap Se Smart elastic scaling based on application scenarios
US20170255663A1 (en) * 2016-03-07 2017-09-07 Researchgate Gmbh Propagation of data changes in a distributed system
CN105872056B (zh) * 2016-04-01 2019-03-08 浪潮电子信息产业股份有限公司 一种快速同步计算机集群数据的方法和系统
KR101875763B1 (ko) * 2016-07-27 2018-08-07 (주)선재소프트 테이블 재구성시 트랜잭션의 성능저하를 최소화하는 온라인 데이터 베이스 관리 시스템 및 방법
US10671642B2 (en) * 2016-11-11 2020-06-02 International Business Machines Corporation Copying data changes to a target database
US10430437B2 (en) * 2017-02-08 2019-10-01 Bank Of America Corporation Automated archival partitioning and synchronization on heterogeneous data systems
US11940990B1 (en) 2017-06-16 2024-03-26 Amazon Technologies, Inc. Global clock values for consistent queries to replicated data
US11314717B1 (en) * 2017-06-23 2022-04-26 Amazon Technologies, Inc. Scalable architecture for propagating updates to replicated data
CN108874884B (zh) * 2018-05-04 2021-05-04 广州多益网络股份有限公司 数据同步更新方法、装置和系统、服务器设备
US20190342380A1 (en) 2018-05-07 2019-11-07 Microsoft Technology Licensing, Llc Adaptive resource-governed services for performance-compliant distributed workloads
US11475040B2 (en) * 2019-01-08 2022-10-18 International Business Machines Corporation Managing data replication sessions in response to an inability to access a storage volume
US11144529B2 (en) * 2019-08-09 2021-10-12 Sap Se Consistent data replication in an event-driven architecture
US11250022B1 (en) 2020-09-29 2022-02-15 Amazon Technologies, Inc. Offline index builds for database tables
US11880385B1 (en) * 2020-09-29 2024-01-23 Amazon Technologies, Inc. Ordering updates to secondary indexes using conditional operations
US11630814B2 (en) * 2020-12-10 2023-04-18 International Business Machines Corporation Automated online upgrade of database replication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1341310C (en) * 1988-07-15 2001-10-23 Robert Filepp Interactive computer network and method of operation
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
WO1995008809A2 (en) * 1993-09-24 1995-03-30 Oracle Corporation Method and apparatus for data replication
US5758355A (en) * 1996-08-07 1998-05-26 Aurum Software, Inc. Synchronization of server database with client database using distribution tables
US5999947A (en) * 1997-05-27 1999-12-07 Arkona, Llc Distributing database differences corresponding to database change events made to a database table located on a server computer
US6047289A (en) * 1997-11-07 2000-04-04 Novell, Inc. Method and apparatus for directed data propagation
JP3004008B1 (ja) * 1998-10-20 2000-01-31 三菱電機株式会社 更新履歴管理装置及び更新履歴管理方法
JP2000305831A (ja) * 1999-04-22 2000-11-02 Tadamitsu Ryu 分散環境におけるファイル管理の方法、システム。
JP2001092707A (ja) * 1999-09-24 2001-04-06 Nec Corp 情報処理システム、構造化文書処理システム、その更新方法及びその更新プログラムを記録した記録媒体
US20020087552A1 (en) 2000-04-12 2002-07-04 Samba Holdings, Inc. Methods and systems for providing access to information via query application and output interface application
US10235368B2 (en) * 2000-06-08 2019-03-19 International Business Machines Corporation System and method for updating external file referenced by database with transactional consistency using SQL
US7200668B2 (en) * 2002-03-05 2007-04-03 Sun Microsystems, Inc. Document conversion with merging
US20040203624A1 (en) * 2002-09-12 2004-10-14 Teh Jin Teik Technique for sharing of files with minimal increase of storage space usage

Also Published As

Publication number Publication date
DE602004023892D1 (de) 2009-12-17
CN1551555A (zh) 2004-12-01
KR101069350B1 (ko) 2011-10-04
EP1475724A2 (en) 2004-11-10
ATE447744T1 (de) 2009-11-15
KR20040095639A (ko) 2004-11-15
JP2004334858A (ja) 2004-11-25
CN1551555B (zh) 2010-11-03
US20050015436A1 (en) 2005-01-20
US7406499B2 (en) 2008-07-29
EP1475724B1 (en) 2009-11-04
EP1475724A3 (en) 2007-08-01

Similar Documents

Publication Publication Date Title
JP4537751B2 (ja) クライアント/サーバ環境における同期を容易にするシステムおよび方法
KR102307371B1 (ko) 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치
Taft et al. Cockroachdb: The resilient geo-distributed sql database
US20040193952A1 (en) Consistency unit replication in application-defined systems
CN102395962B (zh) 对数据库表的哈希和列表组合划分
EP2062125B1 (en) System and method for providing high availability data
US8250397B2 (en) N-way synchronization of data
US20170124111A1 (en) System And Method For Synchronizing File Systems With Large Namespaces
US20130110873A1 (en) Method and system for data storage and management
CN111338766A (zh) 事务处理方法、装置、计算机设备及存储介质
US20110246448A1 (en) Database distribution system and methods for scale-out applications
JP2003522344A (ja) データベース同期化/組織化システムおよび方法
US7933868B2 (en) Method and system for partition level cleanup of replication conflict metadata
CN111597015A (zh) 事务处理方法、装置、计算机设备及存储介质
CN111797121A (zh) 读写分离架构业务系统的强一致性查询方法、装置及系统
US20180150544A1 (en) Synchronized updates across multiple database partitions
CN115114374B (zh) 事务执行方法、装置、计算设备及存储介质
CN103605732B (zh) 基于Infobright的数据仓库和系统及其构建方法
CN114741453A (zh) 数据同步的方法、系统及计算机可读存储介质
CN108090056A (zh) 数据查询方法、装置及系统
Cooper et al. PNUTS to sherpa: Lessons from yahoo!'s cloud database
Liu et al. Capturing global transactions from multiple recovery log files in a partitioned database system
Johnson et al. Big data processing using Hadoop MapReduce programming model
Al-Harbi Accelerating SPARQL Queries and Analytics on RDF Data
Lindström et al. RE AL-TIME EVENTUAL CONSISTENCY

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100217

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100611

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100618

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

Free format text: PAYMENT UNTIL: 20130625

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4537751

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees