JP4928717B2 - 物理ストレージ表現とは独立した論理ビューの同期化 - Google Patents

物理ストレージ表現とは独立した論理ビューの同期化 Download PDF

Info

Publication number
JP4928717B2
JP4928717B2 JP2004214829A JP2004214829A JP4928717B2 JP 4928717 B2 JP4928717 B2 JP 4928717B2 JP 2004214829 A JP2004214829 A JP 2004214829A JP 2004214829 A JP2004214829 A JP 2004214829A JP 4928717 B2 JP4928717 B2 JP 4928717B2
Authority
JP
Japan
Prior art keywords
replica
data
platform
computer system
items
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.)
Active
Application number
JP2004214829A
Other languages
English (en)
Other versions
JP2005050334A (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 JP2005050334A publication Critical patent/JP2005050334A/ja
Application granted granted Critical
Publication of JP4928717B2 publication Critical patent/JP4928717B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • 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/953Organization of data
    • Y10S707/959Network
    • 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/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • 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
    • 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
    • Y10S707/99954Version management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Computing Systems (AREA)
  • Economics (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、一般には、データ処理および操作(data processing and handling)に関する。より詳細には、本発明は、コンピュータ・システム間のデータ同期化(data synchronization)の分野に関する。
コンピュータ・システムにおいて、データの同期化は、重要な機能である。複数の異なる設定(setting)および場所(location)で使用可能な同じデータを有する必要がしばしばある。データの同期化が有用である例が多数ある中で、説明に役立つ一例は、デジタル・アドレス帳を伴うものである。コンピュータ・ユーザは、職場のデスクトップ・コンピュータに格納されたデジタル・アドレス帳を有する可能性がある。勤務中は、ここが、住所、電話番号および一般的な連絡先情報を格納するための便利で利用しやすい場所である。職場から離れているとき、このコンピュータ・ユーザは、携帯情報端末(PDA:personal digital assistant)や他のモバイル情報ストレージシステムなどの、モバイル形態に彼らのアドレス帳を必要とする可能性がある。PDA上の連絡先情報は、職場のデスクトップ・コンピュータ上の連絡先情報と一致すべきである。
さらに、同じコンピュータ・ユーザが、連絡先情報が格納されている、自宅用コンピュータを有する可能性がある。理想的には、自宅用コンピュータ、PDA、職場用コンピュータ上の連絡先情報はすべて、同期が取れているべきである。コンピュータ・ユーザの職場に戻れば、デジタル・アドレス帳に格納されている一部のデータは、そのコンピュータ・ユーザが働く組織内の他のコンピュータ・ユーザが使用可能な情報である可能性がある。したがって、このデータを、複数の異なるコンピュータ・ユーザによってアクセス可能な中央データベース内に格納することもでき、さらに、コンピュータ・ユーザのPDA、職場用コンピュータおよび自宅用のコンピュータと同期させることも可能である。
したがって、上記に示した例では、デジタル・アドレス帳を格納するためのプラットフォームに、少なくとも4つの異なるタイプがある。すなわち、職場用コンピュータ、PDA、自宅用コンピュータおよび中央データベースである。こうしたプラットフォームのそれぞれは、データ・ストア内に、デジタル・アドレス帳のコピーを格納するレプリカ(replica)を所有することができる。
それぞれのデータ・ストア内のデータは、たとえば物理テーブルおよび/または物理テーブル群など、様々な物理配列(physical arrangement)で維持されている可能性がある。物理テーブルは、データベース大容量ストレージ・アレイ、コンピュータ・ハードドライブまたはフラッシュ・メモリなどのコンピュータ記憶装置上における、データの実際の配列である。理解され得るように、異なるプラットフォームのそれぞれは、あるレプリカ内に、他のレプリカ内にあるものと全く同じデータを格納することができる。しかし、特定のプラットフォームの制限や機能が原因で、データは、特定のプラットフォームの異なる物理配列(すなわちそれぞれ異なる物理テーブル構成またはファイル内)に、格納される可能性がある。同じトポロジ内の異なるレプリカに、それぞれ異なるやり方でデータを物理的に格納することは、異なるレプリカを互いに同期させる場合に、様々な問題を引き起こす。
レプリカ内のデータは一般に、しばしば「アイテム」と称される、データの個別のグループに分けられる。たとえば、デジタル・アドレス帳では、アイテムは、氏名および住所、電話番号、連絡先全体、または他の任意の個別グループである可能性がある。他の例では、アイテムは、ファイル、画像、フォルダなどである可能性がある。レプリカ内のアイテムは、たとえばアイテムを追加し、削除し、および修正することによって、変更される可能性がある。物理構成がそれぞれ異なるために、レプリカ間で、変更を同期させることが難しくなる可能性がある。
それぞれ異なるレプリカで、データを同期させる際に生じる別の問題は、同期化させるデータの粒度(granularity)のコンテキスト(context)に関係する。上述のように、レプリカのデータは、アイテムに分けられる。こうしたアイテムは、同期される情報についての個別の情報である。通常、特定のレプリカ・トポロジ(replica topology)について、アイテムの粒度は、定義され、変更することができない。デジタル・アドレス帳の例では、アイテムが、連絡先の単一のフィールド、たとえば名、姓、電話番号、通りの住所、州または郵便番号、である場合、そのアイテムは細かい粒度を有する。対照的に、アイテムが、氏名全体(名と姓の両方)、連絡先番号、住所のうちの1つなどである場合、そのアイテムは中間の粒度を有する。粗い粒度を有するアイテムは、レプリカのアイテムとして、連絡先全体を含む可能性がある。
レプリカ内のアイテムを同期するにはしばしば、メタデータ(metadata)が、それぞれのアイテムに関連付けられることを必要とする。メタデータは、いつアイテムが最後に変更されたかを示す、タイム・スタンプなどの情報を含むことができる。それぞれのアイテムは関連するメタデータをもたなければならないため、アイテムの粒度が細かすぎる場合には、過剰なメタデータが、不必要に、特定のレプリカのリソース(ストレージおよびシステム・メモリなど)を消費する可能性がある。たとえば、上記で論じたデジタル・アドレス帳で、アイテムの粒度が、通りの住所、都市、郵便番号を含む場合、こうした3つのアイテムのそれぞれのメタデータを維持する(maintain)必要がある。しかしながら、通り住所の変更によって都市および郵便番号もが結果的に変更される可能性が高く、つまり、通りが更新されると、都市および郵便番号のメタデータが一般に変更される。
一方、アイテムの粒度が粗すぎる場合は、少なくとも2つの問題が生じる。すなわち、同期化時に、過剰な同期化データの送信が必要であることがあり、また不必要なコンフリクト(conflicts)が生じ得る。たとえば、上記で論じたデジタル・アドレス帳では、アイテムが連絡先全体に関して定義される場合、その連絡先のどの部分を修正しても、結果として、同期化時に、連絡先全体が送信されることになる。こうしたデータの多くは、トポロジ内のレプリカ間で、すでに同期されている可能性がある。したがって、同期化時に、2つのレプリカ間で、冗長なデータが送信される。たとえば、連絡先の電話番号の変更は、対応する連絡先を同期化するために、氏名および住所情報の送信を必要としない。しかし、アイテムが、連絡先全体として定義されている場合、電話番号を変更すると、同期化時に、氏名および住所の送信を生じさせることになる。この結果、通信リソースが、すでに同期化されているデータを転送するために消費される。
さらに、アイテムの定義が粗すぎる場合、レプリカは、レプリカのデータ間の競合を不適切に検出することがある。たとえば、第1のレプリカで、連絡先の電話番号が変更され、第2のレプリカで、連絡先の住所が変更される場合、アイテム粒度が連絡先全体であれば、第1と第2のレプリカが、コンフリクト状態にあるように見える可能性がある。しかし、電話番号の変更は、完全に有効なものとすることができ、住所の変更とは独立しているので、真の競合は存在しない可能性がある。
市販のデジタル・ストレージ・アプリケーション(digital storage application)では、最適化は、しばしば、特定のアプリケーションが発売され、多くのユーザによって使用されるまで、発見されず、また最適化は、物理ストレージへの変更をもたらす可能性がある。したがって、デジタル・ストレージ・アプリケーションの以前のバージョンでデータを含む物理テーブルは、デジタル・ストレージ・アプリケーションの後のバージョンで、同じデータを格納する物理テーブルとは、同じレイアウトを有していないことがある。デジタル・ストレージ・アプリケーションの異なるバージョン間でデータを同期化するには、後のバージョンの最適化を利用するように、また同期化機能をさらに提供するように、新しいコードを作成することが必要となる可能性がある。
上記の例は、デジタル・アドレス帳のコンテクストで作られているが、データの同期化を用いる他の多くの環境が存在する。いくつかの例は、ドキュメントのバージョンを管理すること、ファイルおよび情報を共有すること、ソフトウェアをアップデートすることなど、を含む。こうした環境および他の環境のそれぞれで、上記の問題に見舞われる可能性がある。
したがって、コンピュータ・システムおよび通信リソースをより効率的に使用する同期化機構があれば、有利であろう。データのコンフリクトを、より適切に検出する同期化機構があれば、また有利であろう。
本発明の原理は、レプリカの同期化を提供する。コンピュータ・システムは、トポロジ(コンピュータ・ネットワーク・トポロジなど)に含まれる、複数のレプリカのうちの1つであるソース・レプリカ(source replica)を含む。コンピュータ・システムは、ソース・レプリカに宛先レプリカ(destination replica)を同期させるべきことを示す同期化インジケーション(同期化要求メッセージなど)を受信する。コンピュータ・システムは、ソース・レプリカの物理レイアウト(データベース・テーブルなど)内で、アイテムが変化したかどうかを決定する。ある例では、コンピュータ・システムは、ローカル変更の列挙(local change enumeration)を、同期化ローカル変更の列挙(synchronization local change enumeration)と比較する。
比較結果がそのように示す場合、たとえばローカル変更列挙と同期化ローカル変更列挙が異なる場合を示すと、物理レイアウト内のアイテムが変化したと決定される。コンピュータ・システムは、ソース・レプリカの物理レイアウト内の変更されたどのアイテムをも、論理ビューにマップする。この論理ビューは、トポロジ内の1つまたは複数の他のレプリカにおける論理ビューに、実質上類似する。それぞれのレプリカで、カタログは、論理ビューを実質上類似させるように、物理レイアウトから論理ビューへのマッピングを制御する。コンピュータ・システムは、論理ビューにマップされた少なくとも1つのアイテムを、宛先レプリカに送信する。
本発明の原理は、トポロジ内の他のコンピュータ・システムにデータを同期させているコンピュータ・システムに対して提供される。コンピュータ・システムは、複数のアイテムとその複数のアイテムのローカル変更列挙を維持するローカル変更トラッカ(tracker)とを含むデータ・ストア層を含む。コンピュータ・システムは、さらに、トポロジ内の1つまたは複数の他のコンピュータ・システム内の論理ビューに実質上類似の論理ビューを含む同期化層を含む。論理ビューは、複数のアイテムからの1つまたは複数のアイテムのマッピングを表す。同期化層はさらに、論理ビューにマップされた1つまたは複数のアイテムのバージョンと同期化ローカル変更列挙とを維持する同期化変更トラッカを含む。
本発明の原理は、論理ビューへのデータ・ストア内アイテムの物理レイアウトのマッピングを生成することをも提供する。コンピュータ・システムは、論理スキーマのコンパイルを容易にするために使用することができるコア・コード(core code)にアクセスする。コンピュータ・システムは、変更単位(change unit)および整合単位(consistency unit)の定義を含む論理スキーマにアクセスする。開発者が使用可能なリソースに基づいて変更単位のサイズを割り当てることができるように、変更単位を設定することができる。たとえば、低帯域幅または高待ち時間のネットワーク接続では、ネットワーク上におけるより小さいアイテムおよびデータの減少をもたらす、より低い粒度(granularity)を用いることができる。整合単位も、同様に、開発者が同時に同期化されるべきアイテムを一緒にまとめる(グループ化する)ことができるように、設定することができる。たとえば、開発者が、任意のこれらアイテムへの変更がそれらのすべてに対して変更を生じるように、住所を構成するアイテムを一緒にグループ化することができる。
コンピュータ・システムは、コア・コードを使用して、論理スキーマを、物理レイアウトから論理ビューにアイテムをマップする、少なくとも1つの、カタログにコンパイルする。コンパイルによって、また、プロシージャまたは関数が生成されることになる。プロシージャまたは関数は、物理レイアウト内で、アイテムがどのように格納されているかを示す。プロシージャまたは関数へのアクセスによって、カタログは、データの物理レイアウトを、1つまたは複数の他のコンピュータ・システム内の論理ビューに実質上類似した論理ビューに、マップすることができる。複数のコンピュータ・システム間で、類似の論理ビューを使用することによって、レプリカ間のより効率的な同期化を容易にすることができる。
本発明の追加の特徴について、以下の説明で述べるが、それは、部分的には、説明から部明らかになり、または本発明を実施によって知ることができる。本発明の特徴および利点は、特許請求の範囲に具体的に指摘する、複数の手段および組合せによって、実現し、取得することができる。本発明のこれらのおよび他の特徴は、以下の説明および特許請求の範囲から、より完全に明らかになり、または以下で述べる本発明の実施によって、知ることができる。
本発明の上記した及び他の特徴を、どのようにして得ることができるかを説明するために、上記で簡潔に述べた本発明のより具体的な説明を、添付の図面中で説明されるその特定の実施形態を参照することにより、行う。これらの図面は、本発明の典型的な実施形態を示すものにすぎず、したがって、本発明はその範囲に限定されると見なすべきでないとの理解のもとに、本発明について、添付の図面を使用して、さらに具体的にかつ詳細に示し説明する。
本発明は、論理ビューを用いて、レプリカのアイテムを同期させるためのシステム、方法およびコンピュータ・プログラム製品にまで及ぶ。レプリカは、カタログを使用して、物理レイアウトから論理ビューに、アイテムをマップする。カタログは、論理スキーマからコンパイルすることができ、(複数の異なるレプリカなどの)様々な物理レイアウトからのデータを、(たとえば複数の異なるレプリカで共有される)実質上類似のビューにマップすることを容易にする。本発明の実施形態は、以下でより詳細に論じるように、コンピュータ・ハードウェアの様々なアイテムを含む、特定目的または汎用コンピュータを備えることができる。
図1を参照すると、本発明の原理に従って同期されることが可能なレプリカを含む例示的なコンピュータ・アーキテクチュアが示されている。図1にトポロジ100を示す。トポロジ100は、レプリカ102およびレプリカ104を含み、これらのレプリカは、共通のネットワーク(LAN、WAN、あるいはインターネットなど)に接続されることが可能なコンピュータ・システムに存在する。レプリカ102は、データ・ストア層126および同期化層128に分割される。レプリカ104も同様に、データ・ストア層130および同期化層132に分割される。レプリカ102は、物理テーブル105および106を含み、これらのテーブルは、データ・ストア層126に格納されたレプリカ102のデータを含む。レプリカ104も同様に、物理テーブル107、108および109を含み、これらのテーブルは、データ・ストア層130に格納されたレプリカ104のデータを含む。
物理テーブル105および106、ならびに107、108および109は、同じ情報を収容することが可能である。しかし、これらのテーブルは、意味のある違いを示して、物理的に構成されることが可能である。こうした違いは、テーブルが常駐するテーブルのタイプの結果である可能性がある。たとえば、サーバ・レプリカ(server replica)上の最適化は、異なる物理テーブル・レイアウトを結果として生じさせているクライアント・レプリカ(client replica)上の最適化とは異なる可能性がある。あるいは、この物理テーブルは、同じ市販ソフトウェアの異なるバージョンに備わっている可能性がある。市販ソフトウェア・アプリケーションの後のバージョンはしばしば、最適化を含み、物理テーブルの前のバージョンとは異なる物理テーブルのレイアウトをもつことがある。
アイテムは、レプリカ102のテーブル105および106に、ユーザ・インターフェース134を用いて入力することができる。ユーザ・インターフェース134は、テーブル105および106内で、追加されたアイテムまたは変更されたアイテムのテーブル・レイアウトを指示するコードを収容する。本発明の一実施形態では、このコードは、プロシージャまたは関数のコード138である。レプリカ104は、レプリカ102内のユーザ・インターフェースと同じように機能するユーザ・インターフェース136を含む。ユーザ・インターフェース136も同様に、プロシージャまたは関数のコード140を使用することができる。
レプリカ102は、論理ビュー110をも含む。物理テーブル105および106は、論理ビュー110にマップされる。レプリカ104も同様に、論理ビュー112を含む。物理テーブル107、108および109は、論理ビュー112にマップされる。論理ビュー110および112は、実質上類似の論理ビューとすることができ、たとえば、論理ビュー110と112は両方とも、連絡先情報を表現することができる。アイテムは、論理ビュー110と112の両方で、同じように表現されることが可能である。本発明の一実施形態では、レプリカ102内でのテーブル105および106から、論理ビュー110へのマッピングは、レプリカ102の各アイテムの物理格納場所に関する情報を収容する(同期化層128内の)カタログ114を用いて、行われる。レプリカ104上のマッピングは、レプリカ102上のそれと同様である。レプリカ102および104は、論理ビュー110および112を介して、同期化する。本発明の一実施形態では、XML、または(以下で詳述する)物理スキーマ・マッピング・ドキュメント(physical schema mapping document)に対する他の論理スキーマをコンパイルして、カタログ、およびプロシージャまたは関数を作成する。
ある例示的な実施形態では、同期化は、レプリカ102によって受信される、同期化が開始されるべきことを示すインジケータに応答して実施される。インジケータは、(1)レプリカ102が、そのテーブル105および106内に、ユーザ・インターフェース134を介して、変更されまたは追加されたアイテムを有することのレプリカ102による認識、(2)レプリカ104から、同期化要求を受信すること、または(3)他のいずれかの適切なインジケータ、を含むことできる。次いで、レプリカ102は、マップされる必要がある、物理テーブル105および106内のアイテムを、カタログ114を用いて、論理ビュー110にマップする。次いで、アイテムは、レプリカ102の論理ビュー110から、レプリカ104の論理ビュー112に送信される。次いで、レプリカ104は、送信されたアイテムを、論理ビュー112からカタログ116を介して物理テーブル107、108および109に、マップすることができる。
本発明の一実施形態では、同期化の範囲は、フォルダ(複数の)を使用することによって制御することができる。フォルダは、アイテムをまとめる(グループ分けする)ために使用される論理構成体である。したがって、複数のフォルダを同期させることによって、共通のフォルダにまとめられたアイテムを、同期させることができる。フォルダを使用して、フォルダ内にまとめられた(グループ分けされた)アイテムだけを同期することによって、レプリカ内に格納されたすべてのアイテムよりも少ないアイテム上に基づいて、同期させることが可能になる。図1に、フォルダのグループ化(グループ分けすること)の例を示す。フォルダのグループ化は、レプリカのデータ・ストア層内のフォルダ・テーブルを使用して行うことができる。図1に、データ・ストア層126内のテーブル106を図示することによって、この概念を示す。テーブル106は、1、2および3でラベル付けされたデータ・アイテムを備える。フォルダ・テーブル118は、識別番号2および3に対応するエントリAを収容する。このテーブル・エントリ(table entry)は、2および3でレベル付けされたデータ・アイテムを収容するAでラベル付けされたフォルダ120を表す。レプリカ104は、1、2および3でラベル付けされたデータ・アイテムを格納するテーブル107、108および109を備える対応する論理構成体を有する。これらのアイテムは、物理的には異なったように格納されているが、レプリカ102で1、2および3でレベル付けされたアイテムに対応する。フォルダ・テーブル122は、レプリカ104のデータ・ストア層130に格納される。フォルダ・テーブル122は、Aでラベル付けされたフォルダ124にマップする。したがって、レプリカ102に、フォルダ・レベルで、レプリカ104を同期させることができる。
論理ビューは、XMLスキーマまたは他の何らかのツリーライクな(tree like)データ構造体で、定義することができる。図2Aに、こうした構造体の一例を示す。論理ビューを理解するためには、まず複数の他のアイテムを、理解しなければならない。たとえば、整合単位は、同期化時に、報告され得るアイテム変更の最小グループを表す。整合単位で定義され得るデータの一例は、住所である。また住所は、通り、都市、州および郵便番号を含めて、複数の個々のコンポーネントからなる。住所が更新されると一般に、これらのアイテムのうちのいくつかが変更される。したがって、同期化時に、変更されたアイテムの一部だけが送信され、その送信先であるレプリカで変更された場合は、矛盾した無意味な住所が、レプリカ内にもたらされる可能性がある。しかしながら、整合単位に属するそれぞれの変更されたコンポーネント、すなわち通り、都市、州および郵便番号が、同じ同期化時に送信されるならば、同期化中、整合単位として定義された住所が、レプリカ内で、正確に、更新されることになる。
理解すべき別の概念は、変更単位の概念である。変更単位は、アイテムの境界を定義する構成体である。換言すれば、変更単位のどの部分が修正されても、次の同期化時に、変更単位全体が同期化されることになる。ある例では、変更単位は、電話番号と定義されることが可能である。そのエリア・コードを変更すると、結果的に、次の同期化時に、電話番号全体が送信されることになる。
次に図2Aを参照すると、整合単位および変更単位が、論理スキーマ200の一般化された図内に示されている。論理スキーマ200は、最上位の整合単位202を含む。最上位整合単位202には、2つの下位レベルの整合単位が追加されている。第1の下位レベル整合単位204は、変更単位206および208を含む。第2の下位レベル整合単位210は、変更単位212、214、216および218を含む。図2Bに、論理スキーマ200のより具体的な例が図示されており、連絡先252(最上位整合単位202に対応)が示されている。連絡先内252内に、氏名254(第1の追加整合単位204に対応)が示されている。氏名254は、名256および姓258を含む。アドレス260(第2の整合単位210に対応)が図示されており、通り262、都市268、州266および郵便番号268を含んでいる。
本発明の実施形態では、定義可能な整合単位および変更単位が企図されている。整合単位および変更単位は、たとえば、それぞれの特定のアプリケーションについて、XMLスキーマで定義することができる。本発明の一実施形態では、開発者が、XMLスキーマを作成する。このXMLスキーマは、コア・コードを備えるコンピュータ・システムで格納される。そのコンピュータ・システムで、コア・コードは、XMLスキーマをコンパイルする。XMLスキーマをコンパイルすると、論理ビューと物理テーブル(たとえば図1に示すレプリカ102の論理ビュー110と、物理テーブル105および106)間で、アイテムをマップするために使用されるカタログ(図1に示すレプリカ102のカタログ114など)の作成がもたらされる。コンパイルによって、プロシージャまたは関数の生成をもたらすこともできる。プロシージャまたは関数コードは、レプリカのデータベース層(図1に示すレプリカ102のデータベース層126など)に格納することができる。プロシージャまたは関数コードは、テーブルまたは他のストレージ構成で、アイテムがどのように格納されるかを指示するなど、物理ストレージ(図1に示す物理テーブル105および106など)に、アイテムを格納するための機能性(functionality)を提供する。
本発明の一実施形態では、ユーザ・インターフェースを介して行われる変更などのような、ローカルで行われる変更を、同期化によってもたらされる変更と区別することができる。図1および3Aを参照すると、こうした機能について、説明されている。上記のように、レプリカ102は、データ・ストア層126に格納された物理テーブル105および106を備える。図3Aは、ユーザ・インターフェース134を介して行われた更新が、物理テーブル105および106、ならびに論理ビュー110を使用して、どのように同期されるかを示す時間経過に伴う推移を示す。図3Aに示す物理テーブル105は、2つの縦列、すなわちアイテム列302およびローカル変更列挙(LOCAL_CN)列304を有する。アイテム列302は、レプリカ102に格納されるアイテムを収容する。ローカル変更列挙列304は、データ・ストア126がアイテムへのラベルとして割り当てるローカル変更列挙を含む。それぞれのアイテムと関連付けられたローカル変更列挙は、アイテムに対して変更が行われるごとに、増分的に更新される。データ・ストア層126は、こうした変更がユーザ・インターフェースを介して行われたか、それとも同期化を介して受信されたかに関係なく、すべての変更に対して、ローカル変更列挙を割り当てる。ローカル変更トラッカは、ローカル変更列挙列304を含むことができる。
論理ビュー110は、3つの列、すなわちカタログ114を介して、物理テーブル105および106からマップされたアイテムを格納するアイテム列306、アイテムに割り当てられたローカル変更列挙の同期化フォーム(synchronization form)を格納する同期化ローカル変更列挙列308、ならびに変更を行ったまたはアイテムにバージョンを割り当てたトポロジ内のレプリカに関する情報、およびアイテムが追加されまたは変更された時系列順、を含むバージョンを含むバージョン列310、を含む。同期化変更トラッカは、同期化ローカル変更列挙列308およびバージョン列310内の情報を含むことができる。
時刻(1)で、102のレプリカは、定常状態にある。時刻(2)で、ユーザ・インターフェース134を介して、I2でラベル付けされたアイテムへの変更が行われる。ローカル変更列挙が、I2に割り当てられ、このローカル変更列挙は、この場合には12、などの使用可能な次の時系列順の変更列挙である。
時刻(3)で、レプリカ102は、同期化が実施されるべきことを示すインジケーションを受信する。同期化層128で、レプリカ102は、同期化ローカル変更列挙308を、列304のローカル変更列挙と比較することによって、論理ビュー・テーブル110をチェックする。列304のローカル変更列挙が、列308の同期化ローカル変更列挙と一致しないので、レプリカ102は、物理テーブル105および106に変更が行われたことに気付く。すなわちローカル変更列挙は、値12をもち、同期化ローカル変更列挙は、値5をもつ。したがって、レプリカ102は、列310のバージョンを、A12に更新する。このA12は、変更がレプリカ102(この例では、レプリカ102は、トポロジ内で、レプリカAとラベル付けされる)で行われ、またレプリカ102が、12のローカル変更列挙を割り当てたことを示している。およそ同時に、I2でラベル付けされたアイテムが、ローカル・テーブル105、106から、論理ビュー・テーブル110にマップされる。次いで、時刻(4)で、列308の同期化ローカル変更列挙が、列304のローカル変更列挙に一致するように更新される。次いで、物理テーブル105および106からマップされたアイテムを含める論理ビュー110のアイテムに、トポロジ100内の他のレプリカを同期させることができる。
次に図3Bを参照すると、同期化の結果として、レプリカを更新する例が、ローカル・テーブルを含めて示されている。時刻(1)で、レプリカ102は、トポロジ内の他のレプリカから、新しいアイテム、またはアイテムへの変更を受信していない定常状態にある。時刻(2)で、論理ビュー・テーブル110のアイテムI3に対する変更が受信される。I3に対する変更は、バージョンC101をもつ。この変更が、カタログ114を介して、論理ビュー・テーブル110から物理テーブル105に送信される。変更を受信すると、データ・ストア層126は、データ・ストア層126によって割当て可能な次の変更列挙であるローカル変更列挙を割り当てる。この場合、時刻(3)の列304で示すように、ローカル変更列挙は13である。その後すぐ、または間もなくして、図の時刻(4)で、同期化層128で、チェックが行われ、変更に割り当てられた列304のローカル変更列挙に気付く。列308の同期化ローカル変更列挙は、列308のローカル変更列挙に合わせて更新される。このようにして、同期化層は、列304のローカル変更列挙と列308の同期化ローカル変更列挙が一致する限り、アイテムI3に対して、ユーザ・インターフェース134を介して、同期されていないローカル変更が行われていないことが分かる。さらに、列310のバージョンは、どのレプリカが変更を行ったか、および変更が行われた時系列順に関する情報(この場合、時刻101のCでラベル付けされたレプリカ)を収容する。
本発明の一部の実施形態では、上記で論じた論理ビューとは異なるカスタム・ビュー(custom view)を提供する必要がある可能性があ。すなわち、上記で論じた論理ビューは、同期化効率が最大化されるように、すべてのレプリカ上で、類似のレイアウトをもつ。しかし、レプリカが、論理ビューを考慮して設計されておらず、それを含むように更新することができないようなトポロジに、レプリカが追加される場合がある。しかし、本発明の実施形態は、こうしたカスタムのレプリカと互換が取れることが企図されている。次に図4を参照すると、こうしたカスタム・レプリカに対処するための一つの方法が示されている。図4に、同期化層(図1に示す層128など)で割り当てられた列310にバージョンをマップし、ならびに一般にカスタム・レプリカによってカスタム・ビューに404に割り当てられる列410にカスタム変更列挙を、マップするシステムを一般的に示す。次いで、上述のように、カスタム・ビュー404を通してアイテムを送信および受信する追加のステップ(act)を伴って、同期化が行われることになる。たとえば、あるレプリカからカスタム・レプリカにアイテムが送信される場合、送信する前に、そのアイテムに、適切なカスタム変更列挙を割り当てることが可能である。
アイテムを受信したら、カスタム・ビュー404を調べることによって、適切なバージョンを割り当てることができ、そのアイテムは、論理ビュー(図1に示す論理ビュー110など)の適切な位置に、マップされる。
図5に、本発明の一部の実施形態の態様を用いて、レプリカを同期するための例示的な方法500を示す。方法500は、図1に示すようなコンピュータ・アーキテクチャーで実施することができる。したがって、図5の方法は、図1内の各要素を参照して説明される。方法500は、論理ビューにマップされるべき物理レイアウトからのアイテムを識別する(ステップ502)ための機能的結果志向のステップ(functional result oriented step)を含む。ステップ502は、論理ビューにマップされるべきである物理レイアウトからのアイテムを識別するための、対応するいずれのステップ(act)をも含むことが可能である。
しかしながら、図5の例示的な方法では、ステップ502は、ソース・レプリカに宛先レプリカを同期させるべきことを示す同期化インジケーションを受信する対応するステップ(act504)を含む。ステップ(act)504は、コンピュータ・システムが、ソース・レプリカに宛先レプリカを同期させるべきことを示す同期化インジケーションを受信することを含むことが可能である。たとえば、レプリカ102を含むコンピュータ・システムは、レプリカ102にレプリカ104を同期させるべきことを示すインジケーションを受信することが可能である。
ステップ(act)504は、図1に示すレプリカ102の同期化層128など、レプリカの同期化層で行うことが可能である。レプリカ102は、データの同期化が行われる可能性のある他のレプリカを含むトポロジ100内に存在する。ステップ(act)504で述べるインジケーションは、トポロジ100内の別のレプリカからの同期化要求を含めて複数の異なるソースから、またはレプリカ102内のタイマ切れによって、あるいはデータベース層126に格納されたデータへの何らかの変更の結果としてフラグが設定されたことによって、生じる可能性がある。本明細書では、具体的には説明しないが、様々な他のインジケーホンもまた、同期化が実施されるべきことを示すために受信されることが可能な適切なインジケーションである可能性がある。
ステップ502は、ソース・レプリカの物理レイアウト内のアイテムが変更されたかどうかを決定する、対応するステップ(act506)をも含みことができるステップ(act)506は、コンピュータ・システムが、ソース・レプリカの物理レイアウト内のアイテムが変化したかどうかを決定することを含む。たとえば、レプリカ102を含むコンピュータ・システムが、テーブル105および106に物理的に格納されているアイテムが変化したかどうかを決定することができる。
ステップ(act)506の一実施形態が図3Aに示されており、上述のように、時刻(2)で、列308の同期化ローカル変更列挙が、列304のローカル変更列挙と比較される。
列304のローカル変更列挙は、レプリカ102のデータ・ストア層126内にあり、データ・ストア層126によって、たとえばテーブル105内のあるアイテムに関連付けられる。列308の同期化ローカル変更列挙は、レプリカ102の論理ビュー110にマップされたアイテムに関連付けられ、この論理ビュー110では、マップされたアイテムが、テーブル105および106の物理レイアウト内に対応するアイテムを有する。列304のローカル変更列挙は、列308の同期化ローカル変更列挙とは独立に変更することができる。したがって、ローカル変更が行われると、列304のローカル変更列挙は、列308の同期化ローカル変更列挙の値とは異なる値に変更される。
したがって、ステップ(act)506の実施時に、ローカル変更列挙と同期化ローカル変更列挙の比較を使用して、ソース・レプリカの物理レイアウト内のアイテムに変更が行われたかどうかを決定することができる。たとえば、ローカル変更列挙と同期化ローカル変更列挙の値がそれぞれ異なることは、物理レイアウト内の変更を示すことになる。そのアイテムが格納されているレプリカ以外のレプリカで、アイテムの変更が行われた場合、またはアイテムがトポロジ内の別のレプリカと同期された場合は、ローカル変更列挙と同期化ローカル変更列挙は、同じ番号であることになる。上述の図3Aおよび図3Bに関する議論は、本発明の一実施形態において、どのようにこれが遂行されるかの例を説明している。
レプリカの同期化層の同期化変更トラッカは、論理ビューにマップされたアイテムに関連付けられたバージョンおよび同期化ローカル変更列挙を維持する。たとえば、テーブル307は、同期化層128に置くことができる。同期化変更トラッカ内のバージョンは、対応するバージョンに関連するアイテムに変更を行ったレプリカを識別する、レプリカIDを含むことができる。バージョンは、レプリカ上で変更が行われた時系列順を識別するレプリカ変更列挙をも含むことができる。図3Aで、アイテムI1(列306)が、バージョンA4に関連付けられており、バージョンA4のAは、レプリカのID(たとえばレプリカ102を識別する)であり、4は、レプリカ変更列挙である。したがって、アイテムI1への変更は、レプリカ102で、時系列順(4)で行われている。本発明の一部の実施形態では、レプリカIDは、変更を行ったレプリカ以外のレプリカを識別する。こうした実施形態では、トポロジ内の複数の異なるレプリカによって行われた変更にバージョンを割り当てるためにレプリカが使用される。これを、代理オーサリング(surrogate authoring)と呼ぶことができる。
方法500は、物理レイアウト内の各アイテムに対して、アイテムの粒度を定義する変更単位を定義することを含むこともできる。変更単位は、図2Aおよび2Bで示すような論理スキーマまたは論理構造で、定義され得る。
方法500は、また、論理スキーマ内の整合単位を定義することを含むことができる。整合単位は、いくつの変更単位がレプリカによって適応されるべきかについての、レプリカによって受信されなければならない、定義された粒度の複数のアイテムを含む。たとえば、図2Bは、通り262、都市264、州266および郵便番号268の変更単位を含む、アドレス整合単位260を示す。同期化時に、通り262、都市264、州266および郵便番号268の変更単位から成る変更された複数のアイテムが、レプリカによって受信されない場合は、レプリカで、どのアイテムも更新されないことになる。整合単位内のすべてのアイテムが受信される場合、レプリカで、すべてのアイテムを、同時に更新することが可能になる。
方法500は、また、たとえばカタログ114に類似のカタログを作成するため、論理スキーマをコンパイルすることを含むことができる。カタログは、物理テーブル105および106内で、どこにアイテムが物理的に配置されるかに関する情報を収容する。より具体的には、本発明の一実施形態では、カタログは、詳細のメタデータ、ならびに物理ストレージ内のアイテムを、理ビューのアイテムにマップするためのプロシージャまたは関数を生成するための命令を含む。したがって、カタログは、物理テーブル105および106のアイテムを、論理ビュー110にマップするために使用される。論理スキーマがコンパイルされると、プロシージャまたは関数コードも生成することができる。プロシージャまたは関数コードは、レプリカのデータベース層(レプリカ102のデータベース層126など)に格納することができる。プロシージャまたは関数コードは、テーブル内にアイテムがどのように格納されるかを指示するなど、物理テーブルの物理レイアウト内(物理テーブル105および106など)に、アイテムを格納するための機能性(functionality)を提供する。
方法500は、また、ステップ(act)504の前に、カタログをインストールすることも含むことができる。カタログは、開発者によって、あるいはカタログが上述のコンピュータ・システム以外のコンピュータ・システムで作成されコンパイルされている他のソースによって、提供され得る。次いで、カタログは、対象コンピュータ・システムで実行することができる、インストール可能な、コードとして提供される。同様に、プロシージャまたは関数コードは、コンピュータ・システム内に提供されてインストールされることが可能である。
方法500は、また、レプリカに、そのレプリカの一部のアイテムを含む、フォルダを定義することを含むことができる。トポロジ内の別のレプリカもまた、対応するアイテムに対応するフォルダを含みことができる。図1に、レプリカ104のフォルダ124に対応する、レプリカ102のフォルダ120を示す。レプリカは、同期される必要があり、またフォルダ内にある、アイテムだけを送信することによって、フォルダの同期化を最適化することができる。
方法500は、また、ソース・レプリカの物理レイアウト内の変更されたいずれのアイテムも、論理ビューにマップするステップ(act508)を含む。ステップ(act)508は、コンピュータ・システムが、ソース・レプリカの物理レイアウト内の変更されたいずれのアイテムをも、論理ビューにマップすることを含むことができる。たとえば、レプリカ102を含むコンピュータ・システムは、物理テーブル105および106に格納されたアイテムを、カタログ114を介して、論理ビュー110にマップすることができる。あるレプリカの論理ビューは、トポロジ(act)(act)内の1つまたは複数の他のレプリカの論理ビューに、実質上類似することができる。たとえば、論理ビュー110は、論理ビュー112に、実質上類似することができる。このことは、トポロジ100内のレプリカを同期化する効率を高めることが可能になる。
方法500は、また、ソース・レプリカから宛先レプリカに、少なくとも1つのマップされたアイテムを送信するステップ(act510)を含む。ステップ(act)510は、レプリカ102が論理ビュー110から論理ビュー112にアイテムを送信することを含むことができる。たとえば、レプリカ102は、レプリカ104に、連絡先252に類似する連絡先からの1つまたは複数のアイテムを送信することができる。
方法500は、また、論理ビューをカスタム・ビューにマップすることを含むことができる。論理ビューをカスタム・ビューにマップすることは、(たとえば列310の)バージョンを、(たとえば列410の)カスタム変更列挙にマップすることを含む。カスタム・レプリカは、カスタム・レプリカ内のカスタム・アイテムに、カスタム変更列挙を割り当てることができる。カスタム変更列挙は、バージョン(図4に示すカスタム・ビュー404など)に関連付けることができる。カスタム変更列挙は、ローカル変更とは異なるフォーマット(異なるデータフォーマットなど)のものとすることができる。
次いで、上述のように、カスタム・ビューを介してアイテムを送信および受信する追加のステップ(act)を伴って、同期化が行われることになる。たとえば、アイテムが、レプリカからカスタム・レプリカに送信される場合、送信する前に、そのアイテムに適切なカスタム変更列挙を割り当てることができる。アイテムを受信すると、カスタム・ビュー404を調べることによって、適切なバージョンを割り当てることができ、そのアイテムは、論理ビュー(図1に示す論理ビュー110など)内の適切な位置にマップされる。
次に図6を参照すると、データ・ストア内アイテムの物理レイアウトの、論理ビューへのマッピングを生成するための方法が、方法600として示されている。方法600は、論理スキーマのコンパイルを容易にするために使用できるコア・コードにアクセスするステップ(act602)を含む。ステップ(act)602は、(たとえばコンピュータ・システムで)レプリカが、論理スキーマのコンパイルを容易にするために使用できるコア・コードにアクセスするステップ(act)を含むことができる。たとえば、レプリカ102は、論理スキーマを物理スキーマ・マッピングにコンパイルすることを容易にするコア・コードにアクセスすることができる。本発明の一実施形態では、ステップ(act)602は、適切な機能をもつコードを作成し、コンパイルするコンピュータ・システムに、コードをインストールする開発者によって遂行することができる。次いで、コンパイルするコンピュータ・システムが、そのコードにアクセスする。
方法600はさらに、論理スキーマにアクセスするステップ(act604)を含む。ステップ(act)604は、(たとえばコンピュータ・システムで)レプリカが論理スキーマにアクセスすることを含むことができる。たとえば、レプリカ102は、論理スキーマにアクセスすることができる。本発明の一実施形態では、論理スキーマは、アイテムの粒度を定義する変更単位を含む。論理スキーマは、また、整合単位を含むことができる。この整合単位は、他のコンピュータ・システムで、1つまたは複数のアイテムのいずれもが更新されるためには、当該他のコンピュータ・システムで、変更が受信されなければならない変更に関する、定義された粒度の1つまたは複数のアイテムを定義する。
本発明の一実施形態では、このスキーマは、設計時に、開発者によって設計される。特定のタイプのデータ・ストアを設計する開発者は、特定のアプリケーションについての粒度を最適化するために、変更単位を定義することができる。たとえば、変更単位は、より大きい変更単位を定義することによって、維持する必要があるメタデータの量を低減するように定義されることが可能であり、あるいはより小さい変更単位または2つの間の何らかのバランスを定義することによって、コンフリクトの発生を低減するように設計することができる。変更単位の粒度は、論理スキーマで定義することができるので、開発者は、変更単位を定義するために、新しいコンピュータ実行可能コードを作成する必要はない。
整合単位の定義も同様に、設計時に、開発者によって実施することができる。整合単位の定義について、図2Aおよび2Bの説明に関連して、より詳しく説明している。整合単位の定義は、同時に更新されるべきアイテムが同時に更新されることを確実にするのに役立つ。整合単位は、論理スキーマで定義することができるので、開発者は、整合単位を定義するために、新しいコンピュータ実行可能コードを作成する必要はない。
方法600はさらに、コア・コードを使用して、論理スキーマをカタログにコンパイルするステップ(act606)を含む。ステップ(act)606は、(たとえばコンピュータ・システムで)レプリカが、コア・コードを使用して、論理スキーマをカタログにコンパイルするステップ(act)を含むことができる。たとえば、レプリカ102は、アクセスされたコア・コードを使用して、アクセスされた論理スキーマを、カタログ114にコンパイルすることができる。論理スキーマを物理スキーマのマッピングにコンパイルすることによって、レプリカ(図1のレプリカ102など)の同期化層(図1の層128など)で格納されることが可能なカタログ(図1に示すカタログ114など)の生成をもたらされる。
カタログは、物理テーブル(図1の物理テーブル105および106など)から論理ビュー(図1の論理ビュー110など)にアイテムをマップするための情報を収容する。トポロジ内の1つまたは複数の他のコンピュータで、論理ビューは、実質上類似し得る。また、ステップ(act)606は、プロシージャまたは関数コードを作成することができる。プロシージャまたは関数コードは、レプリカのデータ・ストア層(図1に示すレプリカ102のデータ・ストア層126など)に置かれる。プロシージャまたは関数コードは、物理テーブル(図1のテーブル105および106など)内のアイテムの物理ストレージに指示をする、コンピュータ実行可能命令を収容する。
方法600は、また、コンパイルするコンピュータ・システムを、論理ビューを用いて、トポロジ内の他のコンピュータ・システムに、アイテムを送信するように構成することをも含むことができる。トポロジ内の他のコンピュータ・システムは、そのコンピュータ・システムの論理ビューに実質上類似の論理ビューをもつ。論理ビューを用いて、アイテムを送信する例については、図1の説明においてより詳しく論じている。
また、方法600は、物理レイアウトに構成されたデータ・ストアを使用するために、カタログをコンピュータ・システムにインストールし得る。データ・ストアは、カタログをコンピュータ・システムにインストールする前に、カタログをそれにインストールした後に、またはカタログのインストールと同時の操作においても、コンピュータ・システムにインストールすることができる。インストールは、ネットワークを介して、またはコンピュータ・ディスクやCD−ROMなどのポータブル・ストレージ・メディア(portable storage media)上にカタログを物理的に配置し、コンピュータ・システムに移送することを含めて、複数のやり方で行うことができる。
また、方法600は、論理ビューに従ってデータを同期させるように構成されたレプリカで使用するために、コンピュータ・システムにカタログを送信し得る。レプリカは、カタログを送信する前でも、カタログを送信した後でも、またカタログの送信と同じ操作においてでも、構成されることが可能である。
コンピュータ・システムは、データ・ストア層および同期化層に分割されることが可能である。データ・ストア層は、上述のデータ・ストア層126(図1)に類似することが可能である。同期化層は、上述の同期化層128に類似することが可能である。
また、方法600は、コンピュータ・システムのデータ・ストア層(図1の層126など)に、ローカル変更トラッカを格納することができる。ローカル変更トラッカは、ソース・レプリカに格納されたアイテムのローカル変更列挙を維持する。ローカル変更トラッカの例示的な実施形態は、図3Aおよび3Bに、示されている。方法600は、また、同期化層(図1の層128など)に、同期化変更トラッカを格納することができる。同期化変更トラッカは、バージョン(図3Aおよび3Bの列310に示すものなど)および同期化ローカル変更列挙(図3Aおよび3Bの列308に示すものなど)を維持する。バージョンは、トポロジ内のコンピュータ・システムに対応するレプリカID、および変更が行われた時系列順に対応する変更列挙を収容することができる。一部の実施形態では、レプリカIDは、バージョンに関連付けられた変更を行ったコンピュータ・システムに対応する。他の実施形態では、レプリカIDが、バージョンを割り当てるコンピュータ・システムに対応するように、あるコンピュータ・システムが、複数のコンピュータ・システムのバージョンを割り当てることができる。
ローカル変更列挙および同期化ローカル変更列挙を使用して、変更されたアイテムが送信されるべきか、したがって物理レイアウトから論理ビューにマップされるべきかを決定することができる。変更が(図1に示すユーザ・インターフェース134などの)ユーザ・インターフェースを介して行われると、ローカル変更列挙がその変更に割り当てられる。したがって、データ・ストア層(図1の層126など)のアイテムは、同期化層(図1の層128など)のアイテムに関連付けられた同期化ローカル変更列挙とは異なるローカル変更列挙を有することになる。次いで、同期化時に、コンピュータ・システムは、ユーザ・インターフェースを介して変更されたアイテムに有効なバージョン番号が割り当てられ、またそれに他のコンピュータ・システムが同期されることが必要であることを認識する。このプロセスについて、図3Aおよび3Bに関連して、上記でより十分に論じている。
方法600は、また、データ・ストア層に、フォルダによってアイテムをまとめる(グループ化する)ことができるフォルダを格納することを含むことができる。図1に、こうしたフォルダ例が、フォルダ120として示されている。フォルダの格納は、アイテムをフォルダに関連付けるテーブル(図1のテーブル118など)を使用することを含むことができる。アイテムは、このフォルダを使用して、他のコンピュータ・システムに送信されることが可能である。このようにして、コンピュータ・システムに存在し得るすべてのアイテムではなく、選択されたアイテムだけが送信される。
本発明の範囲内の実施形態は、コンピュータ実行可能命令またはデータを搬送し、またはそれが格納されたコンピュータ読取り可能媒体を含むことできる。こうしたコンピュータ読取り可能媒体は、汎用または特定目的コンピュータによってアクセスすることができる任意の使用可能媒体であり得る。限定するためではなく、例示すれば、こうしたコンピュータ読取り可能媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造体の形で、所望のプログラム・コード手段を搬送しまたは格納するために使用することができ、また汎用または特定目的コンピュータによってアクセスすることができる他の任意の媒体を含むことが可能である。ネットワークまたはコンピュータとの別の通信接続(ハード・ワイヤ、無線、またはハード・ワイヤと無線の組合せ)を介して、情報が転送されまたは提供される場合、コンピュータは適切に、その接続を、コンピュータ読取り可能媒体と見なす。したがって、こうした任意の接続は、コンピュータ読取り可能媒体と適切に称される。上記のものの組合せもまた、コンピュータ読取り可能媒体の範囲に含まれるべきである。コンピュータ実行可能命令は、たとえば、汎用コンピュータ、特定目的コンピュータまたは特定目的処理装置に、ある特定の機能または機能群を実施させる命令およびデータを含む。
図7および以下の議論は、本発明を実施することができる適切なコンピューティング環境についての簡潔で一般的な説明を提供するためのものである。必須ではないが、本発明について、ネットワーク環境内のコンピュータによって実行されるプログラム・モジュールなど、コンピュータ実行可能命令の一般的な文脈で説明する。一般に、プログラム・モジュールは、特定のタスクを実施し、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。コンピュータ実行可能命令、関連のデータ構造体、およびプログラム・モジュールは、本明細書で開示する方法のステップを実行するためのプログラム・コード手段の例である。こうしたコンピュータ実行可能命令または関連のデータ構造体の特定のシーケンスは、こうしたステップで説明する機能を実装するための対応するステップ(act)の例を表す。
本発明は、パーソナル・コンピュータ、ハンドヘルド(handheld)装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースまたはプログラマブルな家電、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータなどを含めて、多くのタイプのコンピュータ・システム構成を伴う、ネットワーク・コンピューティング環境で実施できることが当業者には理解されよう。本発明は、タスクが、通信ネットワークを介して(ハードワイヤード・リンク(hardwired link)、無線リンク、またはハードワイヤード・リンクと無線リンクの組合せによって)リンクされたローカルおよびリモート処理装置によって実施される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラム・モジュールは、ローカルとリモートの両方のメモリ記憶装置に置くことができる。
図7を参照すると、本発明を実施するための例示的なシステムが、処理装置721、システム・メモリ722、ならびにシステム・メモリ722を含めて様々なシステム・コンポーネントを処理装置721に結合するシステム・バス723を含む、従来型コンピュータ720の形態の汎用コンピューティング装置を含んでいる。システム・バス723は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャーのいずれかを使用するローカル・バスを含めて、いくつかのタイプのバス構造のいずれかであり得る。システム・メモリは、読出し専用メモリ(ROM)724およびランダム・アクセス・メモリ(RAM)725を含む。たとえば起動時に、コンピュータ720内の要素間で情報を転送する助けとなる基本ルーチンを収容する基本入出力システム(BIOS:basic input/output system)726は、ROM724に格納されることが可能である。
コンピュータ720は、磁気ハードディスク739から読み出し、そこに書き込む磁気ハードディスク・ドライブ727、取出し可能磁気ディスク729から読出しまたはそこに書き込む磁気ディスク・ドライブ728、ならびにCD−ROMや他の光媒体などの取出し可能な光ディスク731から読み出しまたはそこに書き込む光ディスク・ドライブ730を含み得る。磁気ハードディスク・ドライブ727、磁気ディスク・ドライブ728および光ディスク・ドライブ730はそれぞれ、ハードディスク・ドライブ・インターフェース732、磁気ディスク・ドライブ・インターフェース733、および光ドライブ・インターフェース734によって、システム・バス723に接続される。ドライブおよびその関連のコンピュータ読取り可能媒体は、コンピュータ実行可能命令、データ構造体、プログラム・モジュールおよびコンピュータ720のための他のデータの不揮発性記憶域を提供する。本明細書で述べる例示的な環境では、磁気ハードディスク739、取出し可能磁気ディスク729および取出し可能光ディスク731を用いるが、磁気カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、ベルヌーイ(Bernoulli)カートリッジ、RAM、ROMなどを含めて、データを格納するための他のタイプのコンピュータ読取り可能媒体を使用することができる。
1つまたは複数のプログラム・モジュールを含むプログラム・コード手段は、ハードディスク739、磁気ディスク729、光ディスク731、ROM724またはRAM725、あるいはオペレーティング・システム735、1つまたは複数のアプリケーション・プログラム736、他のプログラム・モジュール737およびプログラム・データ738を含むRAMに格納され得る。ユーザは、キーボード740、ポインティング装置742、またはマイク、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナなどの他の入力装置(図示せず)を介して、コンピュータ・システム720に、コマンドおよび情報を入力することができる。こうしたおよび他の入力装置はしばしば、システム・バス723に結合されたシリアル・ポート・インターフェース746を介して、処理装置721に接続される。あるいは入力装置は、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス(USB:universal serial bus)など、他のインターフェースによって接続され得る。モニタ747または別のディスプレイ装置もまた、ビデオ・アダプタ748などのインターフェースを介して、システム・バス723に接続される。モニタに加え、パーソナル・コンピュータは一般に、スピーカやプリンタなど、他の周辺出力装置(図示せず)を含む。
コンピュータ720は、リモート・コンピュータ783および793などの1つまたは複数のリモート・コンピュータとの論理接続を使用して、ネットワーク化された環境で動作することができる。リモート・コンピュータ783および793はそれぞれ、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイス(peer device)または他の通常のネットワーク・ノードとすることができ、一般に、コンピュータ720に関して上記で説明した要素の多くまたはすべてを含む。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN:local area network)751、広域エリア・ネットワーク(WAN:wide area network)752を含むが、本明細書では、これらのネットワークは、限定ではなく、例示するため、提示されている。こうしたネット・ワーキング環境は、オフィス規模または企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットでは、一般的なものである。
LANネット・ワーキング環境で使用される場合、コンピュータ720は、ネットワーク・インターフェースまたはアダプタ753を介してローカル・ネットワーク751に接続される。WANネット・ワーキング環境で使用される場合、コンピュータ720は、モデム754、無線リンク、またはインターネットなどの広域エリア・ネットワーク752を介して通信を確立する他の手段を含み得る。モデム754は、内部にあっても、外部にあってもよく、シリアル・ポート・インターフェース746を介してシステム・バス723に接続される。ネットワーク化された環境では、コンピュータ720に関して示したプログラム・モジュール、またはその一部を、リモート・メモリ記憶装置に格納することができる。図示するネットワーク接続は、例示的なものであり、広域エリア・ネットワーク752を介して通信を確立する他の手段が使用され得ることが当業者には理解されよう。
本発明は、その精神または本質的な特性から逸脱せずに、他の特定の形態で実施することができる。説明した実施形態は、すべての点で、限定的ではなく、例示的なものにすぎないと見なすべきである。したがって、本発明の範囲は、前述の説明ではなく、特許請求の範囲によって示される。特許請求の範囲の均等物の意味および範囲内に入るすべての変更は、特許請求の範囲内に包含される。
本発明の原理に従って同期されることが可能なレプリカを含む例示的なコンピュータ・アーキテクチュアを示す図である。 本発明の原理に従って整合単位および変更単位を定義するための例示的な構造を示す図である。 本発明の原理に従って整合単位および変更単位を定義するための例示的な構造を示す図である。 本発明の原理に従ってアイテム、変更列挙およびバージョンを格納するのに有用な例示的なテーブルを示す図である。 本発明の原理に従ってアイテム、変更列挙およびバージョンを格納するのに有用な、例示的なテーブルを示す図である。 本発明の原理に従って論理ビューを、カスタム・ビューにマップするための例示的なテーブルを示す図である。 本発明の一部の実施形態の態様を用いて、レプリカを同期させるための例示的な方法を示す図である。 本発明の一部の実施形態の態様を用いて、データ・ストア内アイテムの物理レイアウトの、論理ビューへのマッピングを生成するための例示的な方法を示す図である。 本発明の原理に適したオペレーティング・システムを示す図である。
符号の説明
102、104 レプリカ
114、116 カタログ
118、122 フォルダ
134、136 ユーザ・インターフェース
138、140 プロシージャまたは関数
200 同期ビュー
202、204,210 整合単位
206、208,212,214,216,218 変更単位
252 連絡先
254 氏名
256 名
258 姓
260 住所
262 通り
264 都市
266 州
268 郵便番号
302、306 アイテム
304 LOCAL_CN
306 アイテム
307 論理ビュー同期テーブル
308 LOCAL_CN
310 バージョン
402 アイテム
410 カスタム変更列挙子
720 コンピュータ・システム
721 処理装置
722 システム・メモリ
723 システム・バス
724 ROM
726 BIOS
725 RAM
732 ハードディスク・ドライブイ・ンターフェース
733 磁気ディスク・ドライブ・インターフェース
734 光ドライブ・インターフェース
735 オペレーティング・システム
736 アプリケーション・プログラム
737 他のプログラム・モジュール
738 プログラム・データ
740 キーボード
747 モニタ
748 ビデオ・アダプタ
746 シリアル・ポート・インターフェース
753 ネットワーク・インターフェース
754 モデム
783、793 リモート・コンピュータ・システム

Claims (11)

  1. あるデータについての複数のレプリカを格納するための複数の異なるタイプのプラットフォームとしてのコンピュータ・システムを含むコンピュータネットワークであって、データのレプリカが、特のプラットフォームのデータ・ストア層において他のプラットフォームのデータ・ストア層のデータのレプリカとは異なる物理配列で格納されることが必要であり、レプリカを同期させるときに、各レプリカのデータは、各プラットフォームにおける異なる物理配列から、他の異なるタイプのプラットフォームのそれぞれにおける論理ビューテーブルと同様のレイアウトを有する特定のプラットフォームの同期化層の論理ビューテーブルにマッピングされなければならない、コンピュータネットワークにおいて、プラットフォームのデータ・ストア層における物理配列されたアイテムをプラットフォームの同期化層の論理ビューテーブルにマッピングする方法であって、該方法は、
    特定のプラットフォームのコンピュータ・システムにおいて、各プラットフォームにおいて同様のレイアウトを有し、以下の点から定義したデータアイテムのグループを含む、論理ビューテーブルを定義するために使用され得る論理スキーマをカタログにコンパイルすること
    データアイテムのグループの部分が修正されたか否かの検知におけるデータアイテムのグループの粒度を定義する変更単位であって、他のレプリカを同期するときに、データアイテムのグループ全体が同期される、変更単位という点と、
    グループのアイテムが変更された場合に、同期の間、報告され得るデータアイテムの最小限のグループを定義する整合単位という点、
    各アイテムの物理格納場所に関する情報を収容する前記カタログを使用することにより、1又は2以上の他のコンピュータ・システムの異なるプラットフォームにおける論理ビューテーブルと同じレイアウトを有する論理ビューテーブルへ、物理配列されたアイテムをマップすることとを含み
    前記マップすることは、各プラットフォームについての同期化層における論理ビューテーブル内に同期化トラッカを格納することを含み、
    期化トラッカは、コンピュータ・システムの論理ビューテーブル内のデータアイテムの同期化バージョンに対応する値を有するバージョン変更列挙と、
    データアイテムの同期化バージョンがベースとしている特定のレプリカを識別するソース識別子とを維持することを特徴とする方法。
  2. コンピュータ・システムの同期化層は、1又は2以上のカタログにコンパイルされる論理スキーマを有し、1又は2以上のカタログは拡張可能なマークアップ言語(XML)をコンパイルして作成される、ことを特徴とする請求項1記載の方法。
  3. 各コンピュータ・システムのデータ・ストア層での物理配列は1又は2以上の物理テーブルによって定義され、少なくとも1つのコンピュータ・システムの物理テーブルによって定義される物理配列は、他のコンピュータ・システムの物理テーブルによって定義される物理配列とは異なることを特徴とする請求項2に記載の方法。
  4. レプリカが格納される各コンピュータ・システムの各プラットフォームのデータ・ストア層は、データ・ストア層の物理テーブルに、レプリカのデータを配列するよう適合されるユーザインタフェースを備えることを特徴とする請求項3に記載の方法。
  5. あるデータについての複数のレプリカを格納するための複数の異なるタイプのプラットフォームとしてのコンピュータ・システムを含むコンピュータネットワークであって、データのレプリカが、特のプラットフォームのデータ・ストア層において他のプラットフォームのデータ・ストア層のデータのレプリカとは異なる物理配列で格納されることが必要であり、レプリカを同期させるときに、各レプリカのデータは、各プラットフォームにおける異なる物理配列から、他の異なる種類のプラットフォームのそれぞれにおける論理ビューテーブル同様のレイアウトを有する特定のプラットフォームの同期化層の論理ビューテーブルにマッピングされなければならない、コンピュータネットワークにおいて、プラットフォームのデータ・ストア層における物理配列されたアイテムをプラットフォームの同期化層の論理ビューテーブルにマッピングする方法を実行するコンピュータ実行可能な命令を格納したコンピュータ可読記録媒体であって、該方法は、
    特定のプラットフォームのコンピュータ・システムにおいて、各プラットフォームにおいて同様のレイアウトを有し、データアイテムを以下の点から定義することによりデータアイテムのグループを含む、論理ビューテーブルを定義するために使用され得る論理スキーマをカタログにコンパイルすること
    データアイテムのグループの部分が修正されたか否かの検知におけるデータアイテムのグループの粒度を定義する変更単位であって、他のレプリカを同期するときに、データアイテムのグループ全体が同期される、変更単位という点と、
    グループのアイテムが変更された場合に、同期の間、報告され得るデータアイテムの最小限のグループを定義する整合単位という点、
    各アイテムの物理格納場所に関する情報を収容する前記カタログを使用することにより、1又は2以上の他のコンピュータ・システムの異なるプラットフォームにおける論理ビューテーブルと同じレイアウトを有する論理ビューテーブルへ、物理配列されたアイテムをマップすることとを含み
    前記マップすることは、各プラットフォームについての同期化層における論理ビューテーブル内に同期化トラッカを格納することを含み
    期化トラッカは、
    コンピュータ・システムの論理ビューテーブル内のデータアイテムの同期化バージョンに対応する値を有するバージョン変更列挙と、
    データアイテムの同期化バージョンがベースとしている特定のレプリカを識別するソース識別子とを維持することを特徴とするコンピュータ可読記録媒体。
  6. レプリカが格納された各コンピュータ・システムにおけるプラットフォームは、コンピュータ・システムの同期化層に、各プラットフォームについて同じであるレイアウトを有する論理ビューを定義するために使用されることができるカタログにコンパイルされる論理スキーマを有することを特徴とする請求項1に記載の方法。
  7. レプリカが格納された各コンピュータ・システムのプラットフォームのデータ・ストア層における物理配列は、レプリカのデータを格納するための1又は2以上の物理テーブルによって定義されることを特徴とする請求項1に記載の方法。
  8. レプリカが格納される各コンピュータ・システムのデータ・ストア層は、前記グループ化されたアイテムをまとめる1又は2以上のフォルダを有し、それによって、異なるプラットフォームの同期化層の間の同期の範囲定義されることを特徴とする請求項1に記載の方法。
  9. レプリカが格納された各コンピュータ・システムにおけるプラットフォームは、コンピュータ・システムの同期化層に、各プラットフォームについて同じであるレイアウトを有する論理ビューを定義するために使用されることができるカタログにコンパイルされる論理スキーマを有することを特徴とする請求項に記載のコンピュータ可読記録媒体。
  10. レプリカが格納された各コンピュータ・システムのプラットフォームのデータ・ストア層における物理配列は、レプリカのデータを格納するための1又は2以上の物理テーブルによって定義されることを特徴とする請求項に記載のコンピュータ可読記録媒体。
  11. レプリカが格納される各コンピュータ・システムのデータ・ストア層は、前記グループ化されたアイテムをまとめる1又は2以上のフォルダを有し、それによって、異なるプラットフォームの同期化層の間の同期の範囲定義されることを特徴とする請求項に記載のコンピュータ可読記録媒体。
JP2004214829A 2003-07-29 2004-07-22 物理ストレージ表現とは独立した論理ビューの同期化 Active JP4928717B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/629,254 2003-07-29
US10/629,254 US7216133B2 (en) 2003-07-29 2003-07-29 Synchronizing logical views independent of physical storage representations

Publications (2)

Publication Number Publication Date
JP2005050334A JP2005050334A (ja) 2005-02-24
JP4928717B2 true JP4928717B2 (ja) 2012-05-09

Family

ID=33541477

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004214829A Active JP4928717B2 (ja) 2003-07-29 2004-07-22 物理ストレージ表現とは独立した論理ビューの同期化

Country Status (5)

Country Link
US (1) US7216133B2 (ja)
EP (1) EP1503313B1 (ja)
JP (1) JP4928717B2 (ja)
KR (1) KR101099202B1 (ja)
CN (1) CN100440206C (ja)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060288297A1 (en) * 1999-08-12 2006-12-21 Robert Haitani System, method and technique for enabling users to interact and edit address fields of messaging applications
US20060288298A1 (en) * 1999-08-12 2006-12-21 Robert Haitani System, method and technique for enabling users to interact with address fields of messaging applications
US6996558B2 (en) 2002-02-26 2006-02-07 International Business Machines Corporation Application portability and extensibility through database schema and query abstraction
US20080250003A1 (en) * 2002-02-26 2008-10-09 Dettinger Richard D Peer to peer (p2p) concept query abstraction model augmentation with federated access only elements
US8375046B2 (en) * 2002-02-26 2013-02-12 International Business Machines Corporation Peer to peer (P2P) federated concept queries
US8086568B2 (en) * 2002-02-26 2011-12-27 International Business Machines Corporation Peer to peer (P2P) concept query notification of available query augmentation within query results
US7295852B1 (en) 2003-05-01 2007-11-13 Palm, Inc. Automated telephone conferencing method and system
US7401104B2 (en) * 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US8166101B2 (en) * 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7529811B2 (en) * 2003-08-21 2009-05-05 Microsoft Corporation Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US8238696B2 (en) * 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7590643B2 (en) * 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US7900133B2 (en) 2003-12-09 2011-03-01 International Business Machines Corporation Annotation structure type determination
US7904678B1 (en) * 2004-02-27 2011-03-08 Symantec Operating Corporation Technique for recovering mirror consistency in cooperative virtual storage
US20060136473A1 (en) * 2004-12-20 2006-06-22 Lamb James A Service data organization
US20060248128A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Efficient mechanism for tracking data changes in a database system
NO20052719D0 (no) * 2005-06-06 2005-06-06 Ericsson Telefon Ab L M Synkronisering av informasjonsenheter med tilhorende referanser
US7680513B2 (en) 2005-08-08 2010-03-16 Palm, Inc. Contact-centric user-interface features for computing devices
US20070100843A1 (en) * 2005-10-20 2007-05-03 Chen Daniel Q System and method for mapping between different information management systems
US20070130153A1 (en) * 2005-12-02 2007-06-07 Palm, Inc. Techniques to communicate and process location information from communications networks on a mobile computing device
US7739234B1 (en) * 2005-12-15 2010-06-15 Teradata Us, Inc. Techniques for synchronizing data store tables
US8005194B2 (en) * 2005-12-21 2011-08-23 Hewlett-Packard Development Company, L.P. Technique for handling incoming reply messages
US7689593B2 (en) * 2005-12-30 2010-03-30 Sap Ag Systems and methods for accessing a shared space in a provider-tenant environment
US7917607B2 (en) * 2005-12-30 2011-03-29 Sap Ag Software management systems and methods, including use of such systems and methods in a provider-tenant environment
US7606811B1 (en) * 2006-01-03 2009-10-20 Emc Corporation Methods and apparatus for synchronizing information
US7627595B2 (en) * 2006-12-06 2009-12-01 Verizon Data Services Inc. Apparatus, method, and computer program product for synchronizing data sources
US20080162587A1 (en) * 2006-12-29 2008-07-03 Ulrich Auer Server synchronization for maintenance activities
US7933869B2 (en) * 2006-12-29 2011-04-26 Sap Ag Method and system for cloning a tenant database in a multi-tenant system
US8069184B2 (en) * 2006-12-29 2011-11-29 Sap Ag Systems and methods to implement extensibility of tenant content in a provider-tenant environment
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US8171054B1 (en) 2007-12-21 2012-05-01 Emc Corporation Optimized fetching for customization object attributes
US8171006B1 (en) 2007-12-21 2012-05-01 Emc Corporation Retrieval of searchable and non-searchable attributes
US8255426B1 (en) 2007-12-21 2012-08-28 Emc Corporation Efficient storage of non-searchable attributes
US8429194B2 (en) 2008-09-15 2013-04-23 Palantir Technologies, Inc. Document-based workflows
US8301583B2 (en) 2008-10-09 2012-10-30 International Business Machines Corporation Automated data conversion and route tracking in distributed databases
US9183260B2 (en) 2008-10-09 2015-11-10 International Business Machines Corporation Node-level sub-queries in distributed databases
US8284803B2 (en) * 2009-12-30 2012-10-09 Microsoft Corporation Cross-scope synchronization of data item knowledge and corresponding metadata
US8949293B2 (en) 2010-12-17 2015-02-03 Microsoft Corporation Automatically matching data sets with storage components
KR20120107022A (ko) * 2011-03-14 2012-09-28 삼성전자주식회사 개인 정보 동기화 방법 및 장치
US9092482B2 (en) 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
US8818944B2 (en) * 2011-06-30 2014-08-26 Microsoft Corporation Data change tracking and event notification
US8732574B2 (en) 2011-08-25 2014-05-20 Palantir Technologies, Inc. System and method for parameterizing documents for automatic workflow generation
US8504542B2 (en) 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
US8560494B1 (en) 2011-09-30 2013-10-15 Palantir Technologies, Inc. Visual data importer
US9378526B2 (en) 2012-03-02 2016-06-28 Palantir Technologies, Inc. System and method for accessing data objects via remote references
US9471370B2 (en) 2012-10-22 2016-10-18 Palantir Technologies, Inc. System and method for stack-based batch evaluation of program instructions
US9348677B2 (en) 2012-10-22 2016-05-24 Palantir Technologies Inc. System and method for batch evaluation programs
US9367463B2 (en) 2013-03-14 2016-06-14 Palantir Technologies, Inc. System and method utilizing a shared cache to provide zero copy memory mapped database
US8909656B2 (en) 2013-03-15 2014-12-09 Palantir Technologies Inc. Filter chains with associated multipath views for exploring large data sets
US8868486B2 (en) 2013-03-15 2014-10-21 Palantir Technologies Inc. Time-sensitive cube
US9740369B2 (en) 2013-03-15 2017-08-22 Palantir Technologies Inc. Systems and methods for providing a tagging interface for external content
US9898167B2 (en) 2013-03-15 2018-02-20 Palantir Technologies Inc. Systems and methods for providing a tagging interface for external content
US20150135110A1 (en) * 2013-11-09 2015-05-14 International Business Machines Corporation Utilizing object cloning to enable nested drag and drop
US9105000B1 (en) 2013-12-10 2015-08-11 Palantir Technologies Inc. Aggregating data from a plurality of data sources
US8935201B1 (en) 2014-03-18 2015-01-13 Palantir Technologies Inc. Determining and extracting changed data from a data source
WO2016000156A1 (en) * 2014-06-30 2016-01-07 Microsoft Technology Licensing, Llc Managing data with flexible schema
US20160026923A1 (en) 2014-07-22 2016-01-28 Palantir Technologies Inc. System and method for determining a propensity of entity to take a specified action
US10229124B2 (en) 2015-05-01 2019-03-12 Microsoft Technology Licensing, Llc Re-directing tenants during a data move
US10678762B2 (en) 2015-05-01 2020-06-09 Microsoft Technology Licensing, Llc Isolating data to be moved across boundaries
US10261943B2 (en) * 2015-05-01 2019-04-16 Microsoft Technology Licensing, Llc Securely moving data across boundaries
US9514205B1 (en) 2015-09-04 2016-12-06 Palantir Technologies Inc. Systems and methods for importing data from electronic data files
US10558339B1 (en) 2015-09-11 2020-02-11 Palantir Technologies Inc. System and method for analyzing electronic communications and a collaborative electronic communications user interface
US9652510B1 (en) 2015-12-29 2017-05-16 Palantir Technologies Inc. Systems and user interfaces for data analysis including artificial intelligence algorithms for generating optimized packages of data items
US10554516B1 (en) 2016-06-09 2020-02-04 Palantir Technologies Inc. System to collect and visualize software usage metrics
US11256762B1 (en) 2016-08-04 2022-02-22 Palantir Technologies Inc. System and method for efficiently determining and displaying optimal packages of data items
US10552531B2 (en) 2016-08-11 2020-02-04 Palantir Technologies Inc. Collaborative spreadsheet data validation and integration
US10373078B1 (en) 2016-08-15 2019-08-06 Palantir Technologies Inc. Vector generation for distributed data sets
EP3282374A1 (en) 2016-08-17 2018-02-14 Palantir Technologies Inc. User interface data sample transformer
US10650086B1 (en) 2016-09-27 2020-05-12 Palantir Technologies Inc. Systems, methods, and framework for associating supporting data in word processing
US10216379B2 (en) 2016-10-25 2019-02-26 Microsoft Technology Licensing, Llc User interaction processing in an electronic mail system
US10152306B2 (en) 2016-11-07 2018-12-11 Palantir Technologies Inc. Framework for developing and deploying applications
US10261763B2 (en) 2016-12-13 2019-04-16 Palantir Technologies Inc. Extensible data transformation authoring and validation system
US11157951B1 (en) 2016-12-16 2021-10-26 Palantir Technologies Inc. System and method for determining and displaying an optimal assignment of data items
US10509844B1 (en) 2017-01-19 2019-12-17 Palantir Technologies Inc. Network graph parser
US10180934B2 (en) 2017-03-02 2019-01-15 Palantir Technologies Inc. Automatic translation of spreadsheets into scripts
US10572576B1 (en) 2017-04-06 2020-02-25 Palantir Technologies Inc. Systems and methods for facilitating data object extraction from unstructured documents
US10606802B2 (en) 2017-05-15 2020-03-31 International Business Machines Corporation Catalog backup and recovery using logical mirroring
US10824604B1 (en) 2017-05-17 2020-11-03 Palantir Technologies Inc. Systems and methods for data entry
US10534595B1 (en) 2017-06-30 2020-01-14 Palantir Technologies Inc. Techniques for configuring and validating a data pipeline deployment
US10204119B1 (en) 2017-07-20 2019-02-12 Palantir Technologies, Inc. Inferring a dataset schema from input files
US10754820B2 (en) 2017-08-14 2020-08-25 Palantir Technologies Inc. Customizable pipeline for integrating data
US11016936B1 (en) 2017-09-05 2021-05-25 Palantir Technologies Inc. Validating data for integration
US11379525B1 (en) 2017-11-22 2022-07-05 Palantir Technologies Inc. Continuous builds of derived datasets in response to other dataset updates
US10552524B1 (en) 2017-12-07 2020-02-04 Palantir Technolgies Inc. Systems and methods for in-line document tagging and object based data synchronization
US10360252B1 (en) 2017-12-08 2019-07-23 Palantir Technologies Inc. Detection and enrichment of missing data or metadata for large data sets
US11176116B2 (en) 2017-12-13 2021-11-16 Palantir Technologies Inc. Systems and methods for annotating datasets
US10853352B1 (en) 2017-12-21 2020-12-01 Palantir Technologies Inc. Structured data collection, presentation, validation and workflow management
GB201800595D0 (en) 2018-01-15 2018-02-28 Palantir Technologies Inc Management of software bugs in a data processing system
US10599762B1 (en) 2018-01-16 2020-03-24 Palantir Technologies Inc. Systems and methods for creating a dynamic electronic form
US10885021B1 (en) 2018-05-02 2021-01-05 Palantir Technologies Inc. Interactive interpreter and graphical user interface
US11263263B2 (en) 2018-05-30 2022-03-01 Palantir Technologies Inc. Data propagation and mapping system
US11061542B1 (en) 2018-06-01 2021-07-13 Palantir Technologies Inc. Systems and methods for determining and displaying optimal associations of data items
US10795909B1 (en) 2018-06-14 2020-10-06 Palantir Technologies Inc. Minimized and collapsed resource dependency path

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392390A (en) * 1992-04-10 1995-02-21 Intellilink Corp. Method for mapping, translating, and dynamically reconciling data between disparate computer platforms
US5473759A (en) * 1993-02-22 1995-12-05 Apple Computer, Inc. Sound analysis and resynthesis using correlograms
US5943676A (en) * 1996-11-13 1999-08-24 Puma Technology, Inc. Synchronization of recurring records in incompatible databases
US6405218B1 (en) * 1996-11-13 2002-06-11 Pumatech, Inc. Synchronizing databases
US6295541B1 (en) * 1997-12-16 2001-09-25 Starfish Software, Inc. System and methods for synchronizing two or more datasets
US6151606A (en) * 1998-01-16 2000-11-21 Visto Corporation System and method for using a workspace data manager to access, manipulate and synchronize network data
US6216131B1 (en) * 1998-02-06 2001-04-10 Starfish Software, Inc. Methods for mapping data fields from one data set to another in a data processing environment
JPH11249943A (ja) * 1998-03-03 1999-09-17 Nec Corp 分散型データベースの同期管理システムおよび同期管理方法
US6925477B1 (en) * 1998-03-31 2005-08-02 Intellisync Corporation Transferring records between two databases
JP2000047919A (ja) * 1998-07-30 2000-02-18 Hitachi Ltd 仮想データベースレプリケーションシステム
US6324544B1 (en) * 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
JP2000194717A (ja) * 1998-12-28 2000-07-14 Nec Corp 異なる論理構造を持つデ―タベ―ス間のデ―タ整合方法および装置
US6535892B1 (en) * 1999-03-08 2003-03-18 Starfish Software, Inc. System and methods for exchanging messages between a client and a server for synchronizing datasets
US6553037B1 (en) * 1999-04-08 2003-04-22 Palm, Inc. System and method for synchronizing data among a plurality of users via an intermittently accessed network
US6401104B1 (en) * 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US6393434B1 (en) * 1999-09-14 2002-05-21 International Business Machines Corporation Method and system for synchronizing data using fine-grained synchronization plans
JP4552242B2 (ja) * 1999-10-06 2010-09-29 株式会社日立製作所 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法
US7039656B1 (en) * 1999-10-20 2006-05-02 Yodlee.Com, Inc. Method and apparatus for synchronizing data records between a remote device and a data server over a data-packet-network
EP1130511A3 (en) * 2000-01-25 2004-04-07 FusionOne, Inc. Data transfer and synchronization system
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
JP2001337858A (ja) * 2000-05-25 2001-12-07 Mitsubishi Electric Corp 複製データ管理システム
US8027848B2 (en) 2001-04-06 2011-09-27 Patient Keeper, Inc Context managing mobile computing framework for enterprise application
US6839564B2 (en) * 2001-04-25 2005-01-04 Nokia Corporation Synchronization of database data
CN1407465A (zh) * 2001-08-13 2003-04-02 深圳市丛文软件技术有限公司 异构、异种数据库间适用的数据交换方法及装置
US7346616B2 (en) * 2002-03-20 2008-03-18 Extended System, Inc. Synchronizing data shared between two devices independent of any other devices that may also share the data
US6721871B2 (en) * 2002-04-02 2004-04-13 Nokia Corporation Method and apparatus for synchronizing data stores with respect to changes in folders
US6973299B2 (en) * 2003-08-01 2005-12-06 Microsoft Corporation Unified contact list

Also Published As

Publication number Publication date
KR20050013932A (ko) 2005-02-05
EP1503313B1 (en) 2017-08-23
US20050027747A1 (en) 2005-02-03
CN1577287A (zh) 2005-02-09
JP2005050334A (ja) 2005-02-24
US7216133B2 (en) 2007-05-08
EP1503313A1 (en) 2005-02-02
CN100440206C (zh) 2008-12-03
KR101099202B1 (ko) 2011-12-27

Similar Documents

Publication Publication Date Title
JP4928717B2 (ja) 物理ストレージ表現とは独立した論理ビューの同期化
CN110019215B (zh) 多重租赁数据库系统中的键模式管理
CN110147369B (zh) 多重租赁数据库系统中的数据分离和写入重新定向
CN109947767B (zh) 多重租赁数据库系统中的系统共享类型
CN100559346C (zh) 用于实例化抽象类的系统和方法
US8464228B2 (en) Binary library
JP5787963B2 (ja) コンピュータプラットフォームのプログラミングインターフェース
US7502807B2 (en) Defining and extracting a flat list of search properties from a rich structured type
US7672966B2 (en) Adding extrinsic data columns to an existing database schema using a temporary column pool
US8396938B2 (en) Providing direct access to distributed managed content
US7376658B1 (en) Managing cross-store relationships to data objects
US7523141B2 (en) Synchronization operations involving entity identifiers
CN1848849B (zh) 复制目录修改的方法和装置
US9892144B2 (en) Methods for in-place access of serialized data
US20060215569A1 (en) Synchronization peer participant model
US20100287526A1 (en) Mirrored file system
KR20060094458A (ko) 파일 시스템 항목(들) 및 연관된 엔티티(들)를 직렬화하는시스템 및 방법
CN100518192C (zh) 创建轻量目录访问协议数据交换格式片段的方法与计算机
US7657609B2 (en) Data transfer in a multi-environment document management system access
CN114911519A (zh) 用于计算设备的共享软件库
US20070011275A1 (en) Multi-environment document management system access
US20120011136A1 (en) Processing Structured Documents Stored in a Database
US20050183097A1 (en) Schema-based machine generated programming models
US20020087556A1 (en) Method and system for synchonizing data
CN108256019A (zh) 数据库主键生成方法、装置、设备及其存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101224

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111108

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20111109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111109

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111130

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120207

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120213

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

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4928717

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250