JP2005527883A - バッテリー駆動のモバイルコンピュータ装置上で表示画面を更新する方法 - Google Patents
バッテリー駆動のモバイルコンピュータ装置上で表示画面を更新する方法 Download PDFInfo
- Publication number
- JP2005527883A JP2005527883A JP2003548505A JP2003548505A JP2005527883A JP 2005527883 A JP2005527883 A JP 2005527883A JP 2003548505 A JP2003548505 A JP 2003548505A JP 2003548505 A JP2003548505 A JP 2003548505A JP 2005527883 A JP2005527883 A JP 2005527883A
- Authority
- JP
- Japan
- Prior art keywords
- data
- application
- database
- cognima
- time
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Telephone Function (AREA)
- Computer And Data Communications (AREA)
- Power Sources (AREA)
- Testing Of Balance (AREA)
- Hardware Redundancy (AREA)
- Digital Computer Display Output (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Arrangements For Transmission Of Measured Signals (AREA)
- Control Of Electric Motors In General (AREA)
- Holo Graphy (AREA)
- Control Of Multiple Motors (AREA)
- Silicates, Zeolites, And Molecular Sieves (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
- Cereal-Derived Products (AREA)
- Electric Clocks (AREA)
- Variable-Direction Aerials And Aerial Arrays (AREA)
- Information Transfer Between Computers (AREA)
Abstract
バッテリー駆動のモバイルコンピュータ装置が、その装置上のアプリケーション又はユーザインタフェースプログラムが表示するためにデータベースにおいて変更されたデータを該アプリケーション又はユーザインタフェースプログラムへと継続的にプッシュすることにより、該アプリケーション又はユーザインタフェースプログラムが変更されたデータを求めてデータベースをポーリングする必要のないデータベースを有する。継続的にプッシュされるデータは、アプリケーション(又はUIプログラム/コンポーネント)が必要−例えば、表示のために必要と定義するデータのみである。この手法は、自動バックグラウンドプロセスであるので、割込みの促進画面を使用する従来の手法よりも優れている。実際に表示の必要があるときにのみ電力及び処理サイクルを使用するので、データ変更がないときにも定期的にデータベースをポーリングする必要のある自動バックグラウンド手法よりも優れている。
Description
本発明は、バッテリー駆動のモバイルコンピュータ装置、特に携帯電話又は電子手帳などのリソース制約型モバイル装置(すなわち、メモリ、処理能力、及びバッテリー寿命に制限のある装置)上で表示画面を更新する方法に関する。
モバイルコンピュータ装置は、アプリケーションが稼動中でないときに、データを保持する何らかのローカルなデータベースにデータを読み書きすることができる単純なファイリングシステムを有する傾向にある。一般的に、このようなアプリケーションは、利用可能なデータの集合を読み込み、表示画面にデータを表示するユーザインタフェースを提供する。
データベースからの読み込みは、データベース中のデータが変更された(例えば、電子メールデータベースにおいて新規の電子メールが到着した)場合に、アプリケーションにより自動的且つ定期的に行なわれる。しかしながら、このプロセスは、バッテリー駆動の無線モバイルコンピュータ装置で貴重な電力を消耗し、プロセッサ能力を使い果たす。また、データベース中のデータに変更がない場合でもプロセスを行なう必要があるので無駄である。
代わりに、データベースのデータが変更された際にデータベースが割込み画面を生成(例えば、「新着メールがあります」画面を生成)し、ユーザが「読む」ボタンを押下するように促すこともできる。この操作により、表示画面は新たなデータで更新/リペイントされる。ユーザは、特に小さいディスプレイしかないモバイルコンピュータ装置ではこの種の割込み画面を望まない場合が多いので、この構成はユーザ相互作用の観点から具合が悪い。
他にも幾つかの欠点がある:
・アプリケーションはデータの全部又は一部の複製を格納する必要があり、これが乏しいメモリを占有する
・2以上のアプリケーションが同じデータの集合をアクセスできるようにすることは問題となる
・データを読んだり操作したりするための類似のコードが装置上で稼動する幾つかのアプリケーションで出現する
・プログラムが起動するときのデータの読み込みに時間がかかる
リソース制約型バッテリー駆動のモバイルコンピュータ装置には、より電力効率及びメモリ効率の高い手法が求められている。
・アプリケーションはデータの全部又は一部の複製を格納する必要があり、これが乏しいメモリを占有する
・2以上のアプリケーションが同じデータの集合をアクセスできるようにすることは問題となる
・データを読んだり操作したりするための類似のコードが装置上で稼動する幾つかのアプリケーションで出現する
・プログラムが起動するときのデータの読み込みに時間がかかる
リソース制約型バッテリー駆動のモバイルコンピュータ装置には、より電力効率及びメモリ効率の高い手法が求められている。
[発明の概要]
本発明の第1の態様によると、バッテリー駆動のモバイルコンピュータ装置上で電力消費及び処理要件を最小限にするように表示画面を更新する方法であって、
前記装置上のアプリケーション又はユーザインタフェースプログラムが表示するためにデータベースにおいて変更されたデータを該アプリケーション又はユーザインタフェースプログラムへと継続的にプッシュすることにより、該アプリケーション又はユーザインタフェースプログラムが変更されたデータを求めて前記データベースをポーリングする必要のないデータベースを提供する工程を有することを特徴とする方法が提供される。
本発明の第1の態様によると、バッテリー駆動のモバイルコンピュータ装置上で電力消費及び処理要件を最小限にするように表示画面を更新する方法であって、
前記装置上のアプリケーション又はユーザインタフェースプログラムが表示するためにデータベースにおいて変更されたデータを該アプリケーション又はユーザインタフェースプログラムへと継続的にプッシュすることにより、該アプリケーション又はユーザインタフェースプログラムが変更されたデータを求めて前記データベースをポーリングする必要のないデータベースを提供する工程を有することを特徴とする方法が提供される。
継続的にプッシュされるデータは、アプリケーション(又はUIプログラム/コンポーネント)が必要−例えば、表示のために必要と定義するデータのみであるのが好ましい。このため、アプリケーションが「緊急」又は高優先度(あるいは、その他のユーザ選択フィルタ)として分類されたメッセージのみを表示するように設定された電子メールアプリケーションである場合、電子メールメッセージデータベースは、緊急として分類された新規の電子メールメッセージのみを電子メールアプリケーション/UIプログラムに対して表示のためにプッシュするであろう。表示は自動的に、装置によりメッセージが受信された(通常、無線ネットワークを介して)直後に行なわれるであろう。
この手法は、自動バックグラウンドプロセスであるので、割込みの促進画面を使用する従来の手法よりも優れている。また、実際に表示の必要がある(例えば、新着メッセージあり)ときにのみ電力及び処理サイクルを使用するので、データ変更がない(新着メッセージなし)ときにも定期的にデータベースをポーリングする必要のある自動バックグラウンド手法よりも優れている。
更に、アプリケーションは、実際に表示中の(又は表示が想定される−例えば、オープンウィンドウ内でスクロール可能な)データのみを格納すれば良いので、アプリケーションが実際に表示されている又は表示が想定されるデータの上位集合をメモリに格納する必要があるシステムと比較して、相当なメモリ空間が節約される。
1つの実施例において、データベースは、幾つかの異なるアプリケーションにより使用するためのデータを提供することができる。例えば、データベースが全種別のメッセージ(電子メール、sms、画像など)を受信する場合、新規のメッセージを幾つかの異なる種別のアプリケーション(例えば、全種別のメッセージを列挙するメッセージングアプリケーション及び全ての受信フォトメッセージのサムネイルを列挙・表示し、この写真を最高解像度で表示できるようにするフォトアプリケーション)へとプッシュすることができるだろう。従って、データベースは、どのアプリケーションが異なる種類の変更されたデータを必要とし、そのデータをプッシュすることができるかを認識している。
データの格納作業、ソーティング作業、及び索引付け作業の全てはデータベースにより行なわれるので、この機能を各アプリケーションにおいて繰り返す必要がない。このため、アプリケーションコードサイズが削減される。
変更されたデータは、データベース中の新規のオブジェクト又はレコード、データベースから削除されたオブジェクト又はレコード、データベース中のオブジェクトの変更されたプロパティ又はレコードの変更されたフィールドであっても良い。更に、アプリケーションはデータの表示を直接更新するのではなく、データの表示を更新するデータベースを更新する。アプリケーションは、データベースがデータをソートする方法及びデータのソート済リスト上に小型のウィンドウが必要であるか否かを指定することができる。
アプリケーションは、通常、以下のリストから選択されるアプリケーションである:
(a)連絡先
(b)予定表/日誌
(c)メッセージング
(d)プレゼンス及びインスタントメッセージング
(e)フォトギャラリー
(f)呼出し音ダウンロード、サンプリング、及び順序付け
(g)バンキング
(h)装置管理
第2の態様において、電力消費及び処理要件を最小限にするように表示画面を更新するべくプログラムされたバッテリー駆動のモバイルコンピュータ装置において、
アプリケーション又はユーザインタフェースプログラムが表示するためにデータベースにおいて変更されたデータを該アプリケーション又はユーザインタフェースプログラムへと継続的にプッシュすることにより、該アプリケーション又はユーザインタフェースプログラムが変更されたデータを求めて前記データベースをポーリングする必要のないデータベースを備えることを特徴とする装置が提供される。
(a)連絡先
(b)予定表/日誌
(c)メッセージング
(d)プレゼンス及びインスタントメッセージング
(e)フォトギャラリー
(f)呼出し音ダウンロード、サンプリング、及び順序付け
(g)バンキング
(h)装置管理
第2の態様において、電力消費及び処理要件を最小限にするように表示画面を更新するべくプログラムされたバッテリー駆動のモバイルコンピュータ装置において、
アプリケーション又はユーザインタフェースプログラムが表示するためにデータベースにおいて変更されたデータを該アプリケーション又はユーザインタフェースプログラムへと継続的にプッシュすることにより、該アプリケーション又はユーザインタフェースプログラムが変更されたデータを求めて前記データベースをポーリングする必要のないデータベースを備えることを特徴とする装置が提供される。
本発明は、Cognima Limited of London, United Kingdomによる実施例を参照して説明する。コグニマ(Cognima)では、消費者によるデータサービスの利用を増加させ、大切な顧客の固定客化を促進し、競合他社から自社のサービスを差別化するために、モバイルサービスプロバイダ(MSP)及びネットワークオペレータの必要性に直接対処するデータ複製技術を開発してきた。
コグニマのデータ複製ソリューションは、これらの問題に対して以下の手法により対処する:
・注目度の高い、容易に利用可能なものにすることにより、データサービスの利用を増加すること
・加入者の個人データを担当のMSPにより制御されたサーバ上で確実にバックアップすることにより、乱れ(churn)の防止を強化すること
・顧客の経験を制御することによってMSPが差別化されたサービスを作り出せるようにすること。
・注目度の高い、容易に利用可能なものにすることにより、データサービスの利用を増加すること
・加入者の個人データを担当のMSPにより制御されたサーバ上で確実にバックアップすることにより、乱れ(churn)の防止を強化すること
・顧客の経験を制御することによってMSPが差別化されたサービスを作り出せるようにすること。
1.コグニマデータ複製フレームワークの用途の概説
コグニマのデータ複製フレームワークにより、モバイルサービスプロバイダは消費者市場に対して注目度の高いサービスを設立することができる。MSPは、データセンタにおけるコグニマサーバのホストとして機能する。サーバは、規格ベースのJ2EEアプリケーションサーバ及びキャリア級のUnix(登録商標)ハードウェア上で動作するオラクルデータベース及びコグニマのマルチスレッドJava(登録商標)通信サーバから構成される。第4節以降では、技術的な実現を詳細に説明する。
コグニマのデータ複製フレームワークにより、モバイルサービスプロバイダは消費者市場に対して注目度の高いサービスを設立することができる。MSPは、データセンタにおけるコグニマサーバのホストとして機能する。サーバは、規格ベースのJ2EEアプリケーションサーバ及びキャリア級のUnix(登録商標)ハードウェア上で動作するオラクルデータベース及びコグニマのマルチスレッドJava(登録商標)通信サーバから構成される。第4節以降では、技術的な実現を詳細に説明する。
コグニマフレームワークは、携帯電話に入力されたデータを自動的に(ユーザの介入なしに)コグニマサーバを介して他の電話機へと複製する。同様に、コグニマサーバに接続された外部システムからのデータは、携帯電話上で自動的に最新の状態に維持される。
コグニマ対応アプリケーションを使用するモバイル加入者は、「個人情報」及び「複数の友人」に対する「常時利用可能な」、「即時」接続を経験する。
・「個人情報」は、加入者の住所録、メッセージ、銀行口座取引明細、株価、ピザ注文、カレンダー、職場への通勤経路の現在の交通状況、又はその他の個人化されたコンテンツを含むことができる。データは常にコグニマサーバ上で確実にバックアップされ、全ての関連するクライアント装置上で自動的に複製される
・「常時利用可能な」は、現在ネットワークに接続されているか否かに関わらず、加入者が携帯する何れの装置又はハンドセット上でも個人情報をアクセス可能であることを意味する。ユーザは、装置上にローカルに格納された個人情報を常にアクセスすることができるからである。また、ユーザはウェブインタフェース−Virtual Phone−を介してサーバ上で直接個人情報を編集・管理することができる
・「即時」は、加入者がサーバからのデータのダウンロードを待つ必要がないことを意味する。最新の情報は、加入者がその必要性を認識していなくても既にそのハンドセット上にある。データが自動的にハンドセットへと送信されるからである(例えば、ハンドセットによるポーリングが行われるであろう。このポーリングは、例えば30分ごと又は所定の時刻(午後4時、午後5時など)に定期的に行うことができる。ハンドセットに対するプッシングも起こり得る)
・加入者は複数の装置に渡って彼らの「複数の友人」とデータを共有することができる。コグニマサーバはこのデータを任意の定義済の装置又は定義済の個人へと複製することができるからである。
・「個人情報」は、加入者の住所録、メッセージ、銀行口座取引明細、株価、ピザ注文、カレンダー、職場への通勤経路の現在の交通状況、又はその他の個人化されたコンテンツを含むことができる。データは常にコグニマサーバ上で確実にバックアップされ、全ての関連するクライアント装置上で自動的に複製される
・「常時利用可能な」は、現在ネットワークに接続されているか否かに関わらず、加入者が携帯する何れの装置又はハンドセット上でも個人情報をアクセス可能であることを意味する。ユーザは、装置上にローカルに格納された個人情報を常にアクセスすることができるからである。また、ユーザはウェブインタフェース−Virtual Phone−を介してサーバ上で直接個人情報を編集・管理することができる
・「即時」は、加入者がサーバからのデータのダウンロードを待つ必要がないことを意味する。最新の情報は、加入者がその必要性を認識していなくても既にそのハンドセット上にある。データが自動的にハンドセットへと送信されるからである(例えば、ハンドセットによるポーリングが行われるであろう。このポーリングは、例えば30分ごと又は所定の時刻(午後4時、午後5時など)に定期的に行うことができる。ハンドセットに対するプッシングも起こり得る)
・加入者は複数の装置に渡って彼らの「複数の友人」とデータを共有することができる。コグニマサーバはこのデータを任意の定義済の装置又は定義済の個人へと複製することができるからである。
1.1 コグニマアプリケーションの例
2.モバイル加入者にとっての利点
コグニマは、以下の重要な利点に基づいて量販市場の消費者データサービスを実現するための理想的なフレームワークを提供する:
・「親しみやすさ」:ユーザの介入は不要である。加入者は自身のデータをアクセスするのに「同期」又は「ダウンロード」ボタンを押下する必要がない。システム構成及び確実なデータ転送は、エンドユーザからは完全に見えない
・「即時可用性」:ユーザは常に、ローカルデータとは即時に相互に作用することができる(オフライン時であっても)。一方で、更新はバックグラウンドでひそかに行われる。例えば、ユーザは地下鉄でも個人化されたコンテンツを読むことができる。ユーザ行為(user experience)はデータ転送から切り離されている
・「値ごろ感」:MSPは複製をいつ実行するかを制御でき、もたらされるサービス品質(QoS)を制御できる。しかし、ユーザ行為はデータ転送から切り離されているので、低いQoSでもユーザのサービスに対する認識には影響しない。このため、MSPはユーザ行為を犠牲にすることなく、比較的低いQoSで低コストな加入ベースのサービスを提供することができる。例えば、銀行口座取引明細などの緊急でないデータサービスに関しては、データ複製を夜間に行うことも可能であり、この場合でもユーザは不満を感じない。夜間のデータ複製では、十分に利用されていない帯域幅を使用するため、ピーク時のデータ複製に比べて格段に費用が安い。緊急のデータ複製(例えば、プレゼンス情報)は、定期的に又は(オプションとして)継続的に(プッシュで)随時行うことができ、請求料金をより高額なものにすることができる。更に、電話機のメモリ及びプロセッサ能力の有効利用により、コグニマクライアントソフトウェアは、安価な量販市場の電話機においても、経済的にインストールすることができる。
2.モバイル加入者にとっての利点
コグニマは、以下の重要な利点に基づいて量販市場の消費者データサービスを実現するための理想的なフレームワークを提供する:
・「親しみやすさ」:ユーザの介入は不要である。加入者は自身のデータをアクセスするのに「同期」又は「ダウンロード」ボタンを押下する必要がない。システム構成及び確実なデータ転送は、エンドユーザからは完全に見えない
・「即時可用性」:ユーザは常に、ローカルデータとは即時に相互に作用することができる(オフライン時であっても)。一方で、更新はバックグラウンドでひそかに行われる。例えば、ユーザは地下鉄でも個人化されたコンテンツを読むことができる。ユーザ行為(user experience)はデータ転送から切り離されている
・「値ごろ感」:MSPは複製をいつ実行するかを制御でき、もたらされるサービス品質(QoS)を制御できる。しかし、ユーザ行為はデータ転送から切り離されているので、低いQoSでもユーザのサービスに対する認識には影響しない。このため、MSPはユーザ行為を犠牲にすることなく、比較的低いQoSで低コストな加入ベースのサービスを提供することができる。例えば、銀行口座取引明細などの緊急でないデータサービスに関しては、データ複製を夜間に行うことも可能であり、この場合でもユーザは不満を感じない。夜間のデータ複製では、十分に利用されていない帯域幅を使用するため、ピーク時のデータ複製に比べて格段に費用が安い。緊急のデータ複製(例えば、プレゼンス情報)は、定期的に又は(オプションとして)継続的に(プッシュで)随時行うことができ、請求料金をより高額なものにすることができる。更に、電話機のメモリ及びプロセッサ能力の有効利用により、コグニマクライアントソフトウェアは、安価な量販市場の電話機においても、経済的にインストールすることができる。
3.モバイルサービスプロバイダにとっての利点
コグニマは、新規のデータ収入を生み出し、乱れを減少させ、自社のサービスを競合他社のサービスから差別化する手段を提示する。
コグニマは、新規のデータ収入を生み出し、乱れを減少させ、自社のサービスを競合他社のサービスから差別化する手段を提示する。
3.1 既存のモバイルサービスの利用度の向上
コグニマは、既存のモバイルサービスの利用度を向上する:
・メッセージングサービス及びコンテンツベースのサービスは、ますます便利になると共に即時性が高まり、両サービスの利用度が向上することになる
・プレゼンス情報の即時性が向上するため、チャット、インスタントメッセージング及び音声通話の空き容量があることを示すアラートの利用が増加することになる
・複数の装置を容易に管理することができるので、ユーザはいかなる場合でも適切な電話機を携帯することができ、通話やメッセージ送信が増加する。
コグニマは、既存のモバイルサービスの利用度を向上する:
・メッセージングサービス及びコンテンツベースのサービスは、ますます便利になると共に即時性が高まり、両サービスの利用度が向上することになる
・プレゼンス情報の即時性が向上するため、チャット、インスタントメッセージング及び音声通話の空き容量があることを示すアラートの利用が増加することになる
・複数の装置を容易に管理することができるので、ユーザはいかなる場合でも適切な電話機を携帯することができ、通話やメッセージ送信が増加する。
3.2 注目度の高い新規のサービス
コグニマは、注目度が高くお手頃な新規のモバイルデータサービスの急速な導入を可能にする。
・コグニマは、余剰のネットワーク容量のみを使用し、ローエンドの電話機における新規のサービスに対する注目度の高いユーザ行為をもたらす。これは、ネットワークオペレータにとって入手可能であると共にスケーラブルであり、MSPは量販市場の加入者に対して理解可能且つ予測可能な値段設定を提供することができる
・新規のコグニマサービスに対するアプリケーション開発の大半は、サーバ側で行われるため、MSPは新規のサービスを市場に迅速にもたらすことができる
・コグニマのクライアントソフトウェアは、フラッシュメモリのアップグレードとしてインストールすることができ、今日の量販市場のハンドセットに多機能電話並みの機能を付与する。新規のソフトウェアアプリケーションは、無線により既存のコグニマ対応ハンドセットへとダウンロードすることができるので、MSPは新規のデータサービスをそのサービスに対応した新規の装置を待たずとも展開することができる
・サードパーティのアプリケーション開発者は、MSPのコグニマインフラストラクチャを活用して、MSPのネットワークに対する新規のアプリケーションを開発することができる。
コグニマは、注目度が高くお手頃な新規のモバイルデータサービスの急速な導入を可能にする。
・コグニマは、余剰のネットワーク容量のみを使用し、ローエンドの電話機における新規のサービスに対する注目度の高いユーザ行為をもたらす。これは、ネットワークオペレータにとって入手可能であると共にスケーラブルであり、MSPは量販市場の加入者に対して理解可能且つ予測可能な値段設定を提供することができる
・新規のコグニマサービスに対するアプリケーション開発の大半は、サーバ側で行われるため、MSPは新規のサービスを市場に迅速にもたらすことができる
・コグニマのクライアントソフトウェアは、フラッシュメモリのアップグレードとしてインストールすることができ、今日の量販市場のハンドセットに多機能電話並みの機能を付与する。新規のソフトウェアアプリケーションは、無線により既存のコグニマ対応ハンドセットへとダウンロードすることができるので、MSPは新規のデータサービスをそのサービスに対応した新規の装置を待たずとも展開することができる
・サードパーティのアプリケーション開発者は、MSPのコグニマインフラストラクチャを活用して、MSPのネットワークに対する新規のアプリケーションを開発することができる。
3.3 乱れ削減
コグニマは、乱れを防止する重大な障壁となる。例えば、個人情報をMSPのコグニマサーバに確実に格納する加入者は、新しい電話機を購入し、全ての個人情報を即時に新規の装置へと取得することができる。異なるサービスプロバイダに加入することにした場合、この個人情報は全て失われることになるだろう。
コグニマは、乱れを防止する重大な障壁となる。例えば、個人情報をMSPのコグニマサーバに確実に格納する加入者は、新しい電話機を購入し、全ての個人情報を即時に新規の装置へと取得することができる。異なるサービスプロバイダに加入することにした場合、この個人情報は全て失われることになるだろう。
3.4 差別化
現在加入者は、全てのネットワーク上でモバイルデータサービスを使用するという同じ基本的な経験を有する。例えば、WAPサービスを使用する経験は、WAPプロトコル、電話機中のブラウザ、及びアクセスされるコンテンツにより定義される。多くのMSPは、独自のユーザ行為を加入者に与えることで自身の差別化を図らなければならないことを認識している。しかし、モバイルハンドセットにおいてサービスをカスタマイズすることに対する厳しい制約が、その差別化の障害となっている。
現在加入者は、全てのネットワーク上でモバイルデータサービスを使用するという同じ基本的な経験を有する。例えば、WAPサービスを使用する経験は、WAPプロトコル、電話機中のブラウザ、及びアクセスされるコンテンツにより定義される。多くのMSPは、独自のユーザ行為を加入者に与えることで自身の差別化を図らなければならないことを認識している。しかし、モバイルハンドセットにおいてサービスをカスタマイズすることに対する厳しい制約が、その差別化の障害となっている。
コグニマにより、MSPはハンドセット上でサービスを実現し、加入者のユーザ行為の制御を取り戻すことができるようになる。最も重要なことは、コグニマは相互運用性を犠牲にすることなく、これを実現するということであり、コグニマサーバとの簡単な統合を介して業界標準への対応も達成される。最終的には、価値連関表におけるMSPの地位は、ハンドセットメーカー及びコンテンツプロバイダの強力なブランドに対して強化される。
4.コグニマデータ複製フレームワークの機能設計
4.1 概論
詳細な説明の本節以降の各節では、コグニマデータ複製システムが実際にどのように機能するかを説明することを意図する。この説明には、クライアント装置、コグニマサーバ、及びウェブクライアントの挙動が含まれるが、特定のハードウェア、プログラミング言語、ソフトウェアクラス設計、又は環境の詳細については触れない。使用される基本的なデータ構造及びアルゴリズムについては説明する。
4.1 概論
詳細な説明の本節以降の各節では、コグニマデータ複製システムが実際にどのように機能するかを説明することを意図する。この説明には、クライアント装置、コグニマサーバ、及びウェブクライアントの挙動が含まれるが、特定のハードウェア、プログラミング言語、ソフトウェアクラス設計、又は環境の詳細については触れない。使用される基本的なデータ構造及びアルゴリズムについては説明する。
用語
4.2 目的
コグニマソフトウェアの目的は以下の通りである:
・ユーザ即時アクセスにより、無線データ接続が可能な複数のハンドヘルド装置上でデータの「最新の」コピーを表示・修正できるようにする
・ユーザが従来のウェブブラウザを使用して同じデータを表示・修正できるようにする
・ユーザのデータの確実なバックアップを簡単に実現できるようにする
・複雑で費用のかかる処理をサーバに転嫁することによって、安価なハンドセット上で強力なデータ機能をユーザに対して提供する。
4.2 目的
コグニマソフトウェアの目的は以下の通りである:
・ユーザ即時アクセスにより、無線データ接続が可能な複数のハンドヘルド装置上でデータの「最新の」コピーを表示・修正できるようにする
・ユーザが従来のウェブブラウザを使用して同じデータを表示・修正できるようにする
・ユーザのデータの確実なバックアップを簡単に実現できるようにする
・複雑で費用のかかる処理をサーバに転嫁することによって、安価なハンドセット上で強力なデータ機能をユーザに対して提供する。
4.3 最高レベルの説明
クライアント装置は、クライアント装置上のデータベースにユーザのデータのコピーを保持する。ネットワーク接続の有無に関わらずこのデータにアクセスすることができるので、ユーザは常に即時アクセス権を有することになる。ユーザが装置上でデータを変更すると、変更は変更−ログへとコピーされる。クライアント装置は、定期的に無線ネットワーク上のコグニマサーバへと接続し、変更−ログから変更を送信し、新規のデータを受信する。これにより、データを変更する操作においてネットワークへと接続する必要はなくなる(すなわち、プッシュは好適な実施例では連続的ではない)。コグニマサーバは、クライアント装置から受信したデータ変更でデータベースを更新し、ユーザが所有する全ての装置の変更−ログにデータ変更を反映させる。これらの装置が次に接続するときには、変更を受信し、同じデータのコピーを伴って同期状態に維持されるであろう。
クライアント装置は、クライアント装置上のデータベースにユーザのデータのコピーを保持する。ネットワーク接続の有無に関わらずこのデータにアクセスすることができるので、ユーザは常に即時アクセス権を有することになる。ユーザが装置上でデータを変更すると、変更は変更−ログへとコピーされる。クライアント装置は、定期的に無線ネットワーク上のコグニマサーバへと接続し、変更−ログから変更を送信し、新規のデータを受信する。これにより、データを変更する操作においてネットワークへと接続する必要はなくなる(すなわち、プッシュは好適な実施例では連続的ではない)。コグニマサーバは、クライアント装置から受信したデータ変更でデータベースを更新し、ユーザが所有する全ての装置の変更−ログにデータ変更を反映させる。これらの装置が次に接続するときには、変更を受信し、同じデータのコピーを伴って同期状態に維持されるであろう。
コグニマサーバはウェブサーバを含む。このウェブサーバにより、ユーザはコグニマサーバのデータベースに保持されるデータのコピーを直接調べることができ、クライアント装置上で行うように変更を加えることができる。また、コグニマサーバは、ユーザがネットワーク/インターネット上の他のサーバと通信するためのゲートウェイとしても機能する。例えば、クライアント装置はメッセージオブジェクトに少数のフラグを設定することによって、SMS、電子メール、又はファックスとしてメッセージを送信するようにコグニマサーバに事実上要求することができ、コグニマサーバは電子メールサーバ、SMSサーバ、及びファックス装置と通信を行う機能を含む。これは、呼出し音、バンキング明細、ゲームなどを保持するサーバへと拡大することができる。クライアント装置上にソフトウェアを構築するよりも、コグニマサーバ上にソフトウェアを構築して他のサーバに問い合わせる方がより簡単で安価である。
5.より低いレベルの概念
5.1 データ構造
5.1.1 ID
コグニマユーザデータは、オブジェクトデータベースの専門用語:クラス及びオブジェクトを用いて記述される。同様の名称を有する○○プログラミング概念と混同される可能性があるので、注意が必要である。
5.1 データ構造
5.1.1 ID
コグニマユーザデータは、オブジェクトデータベースの専門用語:クラス及びオブジェクトを用いて記述される。同様の名称を有する○○プログラミング概念と混同される可能性があるので、注意が必要である。
コグニマネットワークの全てのユーザには「ユーザID」が割り当てられる。このIDは、コグニマネットワーク特有のものであり、ネットワークオペレータにより提供される。全てのユーザは、ユーザIDとコグニマサーバのURLとの組み合わせである「コグニマアドレス」を有する。これは世界でただ1つのものである。ユーザに所属する各装置には「装置ID」が割り当てられる。この装置IDはユーザ特有のものである。このIDは8ビットであるので、ユーザは最大253台の装置を持つことができる(ID254はウェブのために予約されており、ID255は予備であり、ID0は無効である)。全てのユーザデータは、クラス(連絡先クラス、メッセージクラス、銀行取引クラスなど)に分類され、各クラスには世界でただ1つのクラスIDが割り当てられる。例えば、クラスID「12」は連絡先のことを指す。
クラスのインスタンスはオブジェクトであり、オブジェクトにはユーザ特有の「オブジェクトID」が割り当てられる。例えば、ある連絡先クラスオブジェクトは、「John Smith」の連絡先であるだろう。オブジェクトIDは、オブジェクトを作成した装置の装置IDを装置の寿命を超えて増加する単調増加のカウントと結びつけることにより生成される。各装置は最大16,777,215個のオブジェクトを作成することができる(この制限値に到達した場合には装置IDをリセットすることができるだろう)。クラスはそれを構成するプロパティにより定義される。クラスは本質的にプロパティの配列である。クラスの各プロパティはプロパティIDを持ち、このIDはクラス特有のものである(実際は、0から始まるプロパティ配列におけるプロパティの配列位置)。
5.1.2 オブジェクト作成
オブジェクトは装置上で作成される。このオブジェクトにはオブジェクトIDが割り当てられ、装置データベースに保存される。コピーも変更−ログへと保存される。装置が次にコグニマサーバへと接続すると、変更−ログのエントリが送信される。コグニマサーバはオブジェクトをデータベースに保存し(システム時間を記録)、必要とされるクラス特有の処理(例えば、電子メールの生成・送信)を行い、ユーザが所有すると共にクラスへの関わりを宣言したその他の装置の変更−ログにエントリを追加する。(このエントリは、装置上のクラスの正しいバージョンに対するものでなければならない)。
オブジェクトは装置上で作成される。このオブジェクトにはオブジェクトIDが割り当てられ、装置データベースに保存される。コピーも変更−ログへと保存される。装置が次にコグニマサーバへと接続すると、変更−ログのエントリが送信される。コグニマサーバはオブジェクトをデータベースに保存し(システム時間を記録)、必要とされるクラス特有の処理(例えば、電子メールの生成・送信)を行い、ユーザが所有すると共にクラスへの関わりを宣言したその他の装置の変更−ログにエントリを追加する。(このエントリは、装置上のクラスの正しいバージョンに対するものでなければならない)。
オブジェクトはウェブポータル上に作成されても良い。オブジェクトIDが生成され(上述のように装置ID254を使用して)、装置と同様に処理される。ウェブポータルに対しては変更−ログはなく、コグニマサーバのデータベースから直接に選択内容を取得する。
また、オブジェクトはサーバアプリケーションにより作成されても良い(例えば、メッセージングモジュールは電子メールを受信し、この電子メールよりメッセージオブジェクトを作成する)。オブジェクトIDは、(上述のように装置ID254を使用して)生成され、装置と同様に処理される。
5.1.3 オブジェクトの更新
既存のオブジェクトの1つ以上のプロパティが装置上で修正される。変更は装置データベースへと保存される。変更された各プロパティは装置変更−ログにおいてエントリを生成するのに使用される。これらは、コグニマサーバへと送信される。
既存のオブジェクトの1つ以上のプロパティが装置上で修正される。変更は装置データベースへと保存される。変更された各プロパティは装置変更−ログにおいてエントリを生成するのに使用される。これらは、コグニマサーバへと送信される。
更新時間がコグニマサーバのデータベースのプロパティに対する「最終変更」時間より後である場合、コグニマサーバは変更をデータベースに保存し(プロパティに対する新規の「最終変更」時間を記録)、所要のクラス特有の処理を行う。更に、コグニマサーバは、ユーザに所属し、クラスを宣言すると共に、プロパティを含むクラスのバージョンを有するその他の装置の変更−ログにエントリを追加する。更新は、変更が最初に行われた装置の変更−ログに対しても行われる。奇妙に思えるかもしれないが、これは以下のシナリオに対処するのに必要である:
ユーザは2台の装置A及びBを持っている。ユーザは、午後5時にAにおいてオフラインでプロパティ7を更新し、午後6時にBにおいてオフラインでプロパティを更新する。まず、Aを用いてネットワークへと接続する。A上の値7は、Bに送信されるべく変更−ログに反映される。その後、Bを用いて接続する。値7はより最近のものであるため、B上の値7がAへと送信される。しかし、BはAの値を入手する。値7をBに複製し直すことによりこれが確定される。
ユーザは2台の装置A及びBを持っている。ユーザは、午後5時にAにおいてオフラインでプロパティ7を更新し、午後6時にBにおいてオフラインでプロパティを更新する。まず、Aを用いてネットワークへと接続する。A上の値7は、Bに送信されるべく変更−ログに反映される。その後、Bを用いて接続する。値7はより最近のものであるため、B上の値7がAへと送信される。しかし、BはAの値を入手する。値7をBに複製し直すことによりこれが確定される。
削除済としてマーク付けされたオブジェクトに対して更新がコグニマサーバにより受信され、更新が削除よりも後に行われている場合、復旧と解釈される。オブジェクトは復旧され、更新され、オブジェクトのリフレッシュが全ての適切な装置の変更−ログ上で行われる。ウェブポータル又はサーバアプリケーションからの更新も同様に機能する。
5.1.4 オブジェクトの削除
オブジェクトが装置上で削除される。装置データベースから削除され、クラスID及びオブジェクトIDを列挙する変更−ログ上にエントリが設けられる。エントリはコグニマサーバへと送信される。
オブジェクトが装置上で削除される。装置データベースから削除され、クラスID及びオブジェクトIDを列挙する変更−ログ上にエントリが設けられる。エントリはコグニマサーバへと送信される。
削除時間がオブジェクトの最終更新時間より後である場合、コグニマサーバはデータベースにおいてそのオブジェクトに削除済としてマーク付けし、クラス特有の処理を行い、ユーザに所属すると共にクラスを宣言したその他の装置にエントリを追加する。
削除時間が最終更新時間より前の場合、削除が無効であることを示す。オブジェクトのリフレッシュが、削除が最初に行われた装置の変更−ログに対して行われる。
削除されたオブジェクトは、削除状態が明らかになるようにウェブポータルで見ることができる。ユーザは復旧のためにオブジェクトを選択することができる。削除マークがコグニマサーバのデータベース中のオブジェクトから削除され、オブジェクトをリフレッシュするためのエントリが、ユーザに所属すると共にクラスを宣言した全ての装置の変更−ログ上に設けられる。
5.1.5 プロパティ型
各プロパティには型がある。現在、9個の許容されたプロパティ型がある:
「CogString」は文字カウントであり、文字が後続する。文字列がASCIIの場合、文字列が占める空間は(4 + 文字カウント)バイトとなる。文字列がユニコードの場合、占める空間は(4 + (文字カウント * 2))バイトとなる。
各プロパティには型がある。現在、9個の許容されたプロパティ型がある:
「CogString」は文字カウントであり、文字が後続する。文字列がASCIIの場合、文字列が占める空間は(4 + 文字カウント)バイトとなる。文字列がユニコードの場合、占める空間は(4 + (文字カウント * 2))バイトとなる。
「CogTypedString」は、型(4バイト符号なし整数)が先行する「CogString」である。現時点では型付き文字列の唯一の用途は接点である。型は接点の型(例えば、電子メールアドレス、自宅の電話)を識別し、文字列はアドレスを保持する(例えば、bob@xxx.yyy、01233556677)。
「CogBlob」はバイト長であり、バイト数が後続する。任意のバイナリデータを格納するのに使用することができる。
「CogArray」は、4バイト符号なし整数「型」として渡され、2個のブロブが後続する。「型」は配列に保持される要素の型を示す。第1のブロブはインデックスブロブであり、第2のブロブへのオフセットのシーケンス(4バイト符号なし整数)を保持する。第2のブロブはデータブロブであり、バイナリランプのシーケンスとして配列の要素を保持する。各要素は、インデックスブロブに沿ってカウントし、データブロブ中の要素の開始のオフセットを取得することによってデータブロブから抽出することができる。これが、渡されるときの「CogArray」のストリーム構造である。特定のシステムの内部では、従来のベクタ(すなわち、解析済)のように見えるかもしれない。
「CogArray」の唯一の実施例は、「MessageAddress」である。「MessageAddress」の各要素は「AddressPair」である。「AddressPair」は連絡先ID(連絡先オブジェクトのオブジェクトID)であり、接点が後続する。
5.1.6 スマートプロパティパラメータ
プロパティの一部は「スマート」にすることができる。これは、装置の特徴に対するプロパティにデータを刻むために、一部のプロパティを特定の装置に対してパラメータ化できることを意味する。実際、パラメータは2つの4バイト符号なし整数である。一方はスマート型であり、他方は最大サイズである。例えば、メッセージの本文テキストを保持するプロパティは、メモリ容量の限られた安価な電話機では、スマート型kCogPlainTextで最大サイズ100にパラメータ化されるかもしれないが、メモリ容量の多いPDA上では、スマート型kCogRichTextで最大サイズ1,000にパラメータ化されるかもしれない。
プロパティの一部は「スマート」にすることができる。これは、装置の特徴に対するプロパティにデータを刻むために、一部のプロパティを特定の装置に対してパラメータ化できることを意味する。実際、パラメータは2つの4バイト符号なし整数である。一方はスマート型であり、他方は最大サイズである。例えば、メッセージの本文テキストを保持するプロパティは、メモリ容量の限られた安価な電話機では、スマート型kCogPlainTextで最大サイズ100にパラメータ化されるかもしれないが、メモリ容量の多いPDA上では、スマート型kCogRichTextで最大サイズ1,000にパラメータ化されるかもしれない。
パラメータは、アプリケーションが装置に追加されるときにコグニマサーバにより格納される。新規のオブジェクト又はそのクラスに対する更新が、その装置に対するコグニマサーバ変更−ログに反映されると、スマートパラメータに従って処理される。これは、例えば、テキストを切り詰めたり、ユニコードテキストをバイト数の少ないテキストへと変換したり、あるいは、画像形式を変換したりすることを含むであろう。
データ保全の点では、コグニマサーバのデータベースで保持されるオブジェクトが生成されたときのオブジェクトのコピーであることが重要である。縮小バージョンを装置上で見る場合でも、コグニマサーバ上では完全バージョンを効果的に操作することができる。
5.1.7 クラスバージョン
4バイト符号なし整数により定義されるクラスバージョンの概念がある。新規のクラスバージョンは古いクラスの終わりにプロパティを追加しても良いが、既存のプロパティを変更/削除したり、既存のプロパティ間に新規のプロパティを挿入したりしてはならない。バージョン間の相互運用性が可能でなければならない。異なるスマートプロパティパラメータを有するクラス定義は異なるバージョンではない。
4バイト符号なし整数により定義されるクラスバージョンの概念がある。新規のクラスバージョンは古いクラスの終わりにプロパティを追加しても良いが、既存のプロパティを変更/削除したり、既存のプロパティ間に新規のプロパティを挿入したりしてはならない。バージョン間の相互運用性が可能でなければならない。異なるスマートプロパティパラメータを有するクラス定義は異なるバージョンではない。
5.2 ユーザデータ渡し
コグニマは、クラスメタデータの考えを利用してデータベース間でコピーして渡される必要のあるデータを最小限にする。クラスメタデータは、本質的にプロパティメタデータの配列である。プロパティメタデータは、プロパティID、プロパティ型、スマート型、及び最大サイズである。
コグニマは、クラスメタデータの考えを利用してデータベース間でコピーして渡される必要のあるデータを最小限にする。クラスメタデータは、本質的にプロパティメタデータの配列である。プロパティメタデータは、プロパティID、プロパティ型、スマート型、及び最大サイズである。
ユーザデータは、クラスID以外のフォーマッティング情報を伴わないストリームとして転送される。このストリームは、クラスメタデータを参照することによって解析される。このため、ストリームがクラス6に対して受信され、クラス6に対するクラスメタデータが、プロパティ0がKcogTypeUIntであり、プロパティ1がKcogTypeStrであると示す場合、ストリームの最初の4バイトは符号なし整数として、次の4バイトは後続する文字列の文字数を保持する符号なし整数として、次のn(ユニコードの場合は2倍)バイトは文字列中の文字を保持するものとして解釈すべきであることが分かる。
クライアント装置は、コグニマサーバに対してサポートするクラスを宣言する。これにより、装置は生のユーザデータ(クラスID、オブジェクトID、及び少数のその他の項目を含むヘッダを伴う)のみを送信し、所要帯域幅を最小限にすることができる。これは、例えば、格段に広い帯域幅を必要とするXML依存システムと対照させることができる。
コグニマサーバが装置に対するデータを刻むことができるように、クライアント装置のクラス宣言はスマートプロパティパラメータを含む。プロパティの意味がアプリケーションへとハードコードされることを強調しておいても良いだろう。クラスメタデータは、クラス7におけるプロパティ2は最大長が30文字の文字列であることを記述する。これは、クラス7におけるプロパティ2をフットボールチームの名称として解釈するアプリケーション中のコードである。
5.2.1 データ複製の問題の詳細
データは、クライアント装置及びこれらの装置が接続されるサーバ(コグニマサーバとして既知)上で作成されるオブジェクトにおいて保持される。これらのオブジェクト及びこれに加えられる変更は、クライアント装置とコグニマサーバとの間で複製される。
複製プロセスの設計により以下のことが可能になる:
・コグニマサーバ及びあるユーザに対してサーバにログオンされる全てのクライアント装置上で保持されるように複製されることになる1組のオブジェクトが定義される。任意の装置又はサーバ上で作成される新規のオブジェクトは、他の全ての装置へと複製されることになる。オブジェクトの何れかのプロパティにおける変更は、全ての装置へと複製される
・データにおける変更のみがクライアントからコグニマサーバへ、あるいは、その逆に送信されるため、ある更新に対して最小限のデータのみがネットワークを介して送信される
・設計の重要な部分は、クライアント装置上でオブジェクトの各プロパティに対して修正時間が維持される必要がないことである。制限されたクライアント装置上で修正時間を更新するのには時間がかかり、オブジェクト中の各プロパティに対する最終修正時間を維持するのには広い空間を必要とする
・コグニマサーバは十分な記憶空間を有し、対処するだけの処理能力を有するため、コグニマサーバ上で、オブジェクトの全てのプロパティに対する修正時間を格納しても問題はない
5.2.2 メタデータ
システムが機能するためには、あるクラスのオブジェクトに対してどのプロパティが定義されるのかに関して明確に理解する必要がある。これは、クラスメタデータの定義を可能にする数少ないC++コンパイラマクロをプログラマに提供することにより行われる。
データは、クライアント装置及びこれらの装置が接続されるサーバ(コグニマサーバとして既知)上で作成されるオブジェクトにおいて保持される。これらのオブジェクト及びこれに加えられる変更は、クライアント装置とコグニマサーバとの間で複製される。
複製プロセスの設計により以下のことが可能になる:
・コグニマサーバ及びあるユーザに対してサーバにログオンされる全てのクライアント装置上で保持されるように複製されることになる1組のオブジェクトが定義される。任意の装置又はサーバ上で作成される新規のオブジェクトは、他の全ての装置へと複製されることになる。オブジェクトの何れかのプロパティにおける変更は、全ての装置へと複製される
・データにおける変更のみがクライアントからコグニマサーバへ、あるいは、その逆に送信されるため、ある更新に対して最小限のデータのみがネットワークを介して送信される
・設計の重要な部分は、クライアント装置上でオブジェクトの各プロパティに対して修正時間が維持される必要がないことである。制限されたクライアント装置上で修正時間を更新するのには時間がかかり、オブジェクト中の各プロパティに対する最終修正時間を維持するのには広い空間を必要とする
・コグニマサーバは十分な記憶空間を有し、対処するだけの処理能力を有するため、コグニマサーバ上で、オブジェクトの全てのプロパティに対する修正時間を格納しても問題はない
5.2.2 メタデータ
システムが機能するためには、あるクラスのオブジェクトに対してどのプロパティが定義されるのかに関して明確に理解する必要がある。これは、クラスメタデータの定義を可能にする数少ないC++コンパイラマクロをプログラマに提供することにより行われる。
クラスにおいて使用されるプロパティの定義は、結果としてクラスメタデータ定義となる。この定義により、CRE(コグニマ認識エンジン)はプロパティがどの型であるかを認識し、データリンクを介して送受信するためにオブジェクト又はプロパティを圧縮/復元できるようになる。CREシステムが機能するためには、全てのクライアント及びサーバは同じクラスメタデータ定義を有する必要がある。従って、以下の状況が発生する:
・新規のメタデータ定義がクライアント装置上で宣言されると、コグニマサーバへと送信される。コグニマサーバは他の全てのクライアントに対してそのメタデータ定義を送信する
・新規のメタデータ定義がコグニマサーバ上で宣言されると、定義は全てのクライアント装置へと送信される
・新規のクライアント装置が初めてコグニマサーバへとログオンすると、何れかのオブジェクトが送信される前に全てのメタデータ定義がその装置へと送信される
・上記の場合の全てにおいて、コグニマサーバが、メタデータが指し示すクラス(及び特定のプロパティ)をアクセスするクライアントだけにメタデータ定義を送信するように今後は最適化されるであろう
5.2.3 変更ログ
変更ログの目的は、クライアント装置がコグニマサーバに(又はコグニマサーバがクライアント装置に)最後に接続した時以降に発生した変更を記録することである。コグニマAPIを使用して、アプリケーションはCREへと接続し、オブジェクトを作成/削除したり、オブジェクト中のプロパティを変更したりする。これらの変更は、変更が行われたときに変更が行われた時間と共にローカル装置上の変更−ログへと追加される。常に識別することができるように、オブジェクトにはその作成時に固有の識別子が与えられる。
・新規のメタデータ定義がクライアント装置上で宣言されると、コグニマサーバへと送信される。コグニマサーバは他の全てのクライアントに対してそのメタデータ定義を送信する
・新規のメタデータ定義がコグニマサーバ上で宣言されると、定義は全てのクライアント装置へと送信される
・新規のクライアント装置が初めてコグニマサーバへとログオンすると、何れかのオブジェクトが送信される前に全てのメタデータ定義がその装置へと送信される
・上記の場合の全てにおいて、コグニマサーバが、メタデータが指し示すクラス(及び特定のプロパティ)をアクセスするクライアントだけにメタデータ定義を送信するように今後は最適化されるであろう
5.2.3 変更ログ
変更ログの目的は、クライアント装置がコグニマサーバに(又はコグニマサーバがクライアント装置に)最後に接続した時以降に発生した変更を記録することである。コグニマAPIを使用して、アプリケーションはCREへと接続し、オブジェクトを作成/削除したり、オブジェクト中のプロパティを変更したりする。これらの変更は、変更が行われたときに変更が行われた時間と共にローカル装置上の変更−ログへと追加される。常に識別することができるように、オブジェクトにはその作成時に固有の識別子が与えられる。
同様に、コグニマサーバ上で稼動するアプリケーションによるオブジェクトの作成・削除及びオブジェクトプロパティへの変更により、結果として、コグニマサーバ上でそのユーザに対して登録された全てのクライアント装置の全ての変更−ログへと変更が追加されることになる。変更時間は、オブジェクトごと又はプロパティごとに記録される。
変更ログは以下の2通りの方法で作成することができる:
・新規のオブジェクトが作成され、プロパティが変更されたとき(これはクライアント装置においてはよくあることである)
・あるいは、オブジェクト及びプロパティの最終修正時間がシステム上に格納される場合、これらを使用することによって必要に応じて新規のオブジェクトを作成することができる(状況によっては、この方法は上述の方法ではなく、コグニマサーバ上で使用されることもある)
5.2.4 複製
クライアント装置が送信すべき項目を変更ログに有している場合、コグニマサーバへと接続することになる(コグニマサーバがクライアント装置へと接続する場合も同様)。デフォルトでは、変更ログの各項目は変更ログに追加された順序で送信される。しかし、特別なサービス及び緊急のデータなどの準備の際には、送信の直前に再度優先順位付けされても良い。転送される項目は以下の通りである:
・あるクラスのオブジェクトの各プロパティの型を含むメタデータ定義
・作成された新規のオブジェクト−そのオブジェクトのプロパティの内容を伴う
・プロパティが変更された−そのプロパティの新規の値を伴う
・オブジェクトが削除された
上述の何れの場合にも、関係するオブジェクト、クラス、及びプロパティを識別するために適切なIDが送信される。全ての変更ログ項目は、変更ログに追加された時間でマーク付けされる。この時間は、常に、ローカルマシン時間であり、第6.2節で説明される時間管理手法によりGMTへと変換される。
・新規のオブジェクトが作成され、プロパティが変更されたとき(これはクライアント装置においてはよくあることである)
・あるいは、オブジェクト及びプロパティの最終修正時間がシステム上に格納される場合、これらを使用することによって必要に応じて新規のオブジェクトを作成することができる(状況によっては、この方法は上述の方法ではなく、コグニマサーバ上で使用されることもある)
5.2.4 複製
クライアント装置が送信すべき項目を変更ログに有している場合、コグニマサーバへと接続することになる(コグニマサーバがクライアント装置へと接続する場合も同様)。デフォルトでは、変更ログの各項目は変更ログに追加された順序で送信される。しかし、特別なサービス及び緊急のデータなどの準備の際には、送信の直前に再度優先順位付けされても良い。転送される項目は以下の通りである:
・あるクラスのオブジェクトの各プロパティの型を含むメタデータ定義
・作成された新規のオブジェクト−そのオブジェクトのプロパティの内容を伴う
・プロパティが変更された−そのプロパティの新規の値を伴う
・オブジェクトが削除された
上述の何れの場合にも、関係するオブジェクト、クラス、及びプロパティを識別するために適切なIDが送信される。全ての変更ログ項目は、変更ログに追加された時間でマーク付けされる。この時間は、常に、ローカルマシン時間であり、第6.2節で説明される時間管理手法によりGMTへと変換される。
クライアント装置がコグニマサーバから変更ログ項目を受信する場合:
・コグニマサーバから新規のオブジェクトメッセージを受信する場合、クライアント装置はこの新規のオブジェクトをローカルデータベースに追加する
・コグニマサーバからオブジェクト削除メッセージを受信する場合、クライアント装置はローカルデータベースにおいてこのオブジェクトに削除済としてマーク付けする
・クライアント装置がプロパティ変更を受信する場合、常に、コグニマサーバがデータベースの現在の状態に関して信頼できるものと想定されるので、変更はローカルデータベースに保持されるプロパティの値に行われる
コグニマサーバはクライアント装置から変更ログ項目を受信する:
・コグニマサーバがクライアント装置から新規のオブジェクトを受信する場合、オブジェクトはコグニマサーバのデータベースに追加され、最初に新規のオブジェクトを送信したマシンの変更−ログを除いてそのユーザに対して登録されたクライアント装置の全ての変更−ログにも追加される
・コグニマサーバがクライアント装置からオブジェクト削除を受信する場合、オブジェクトは削除のためにマーク付けされ、オブジェクト削除メッセージが、最初にオブジェクト削除を送信したマシンの変更−ログを除いてそのユーザに対して登録された装置の全ての変更−ログに追加される
・プロパティ変更を受信する場合、コグニマサーバは変更の時間をコグニマサーバ上でそのプロパティに対して保持される現在時間と比較する。プロパティ変更の時間がコグニマサーバ上で保持される時間より後の場合、サーバデータベースにおいてプロパティ値が変更され、この変更はそのユーザに対して登録されたクライアント装置の全ての変更−ログ−プロパティ変更において送信されるマシンのものを含む−にも追加される(別のオブジェクト更新がその間マシンに送信される場合)。プロパティ変更がコグニマサーバ上で保持されるものより前の場合、格納されたプロパティ値の方がより最近のものであるので変更は行われない。しかし、ユーザが必要に応じて後で取得できるように値はコグニマサーバ上の古いプロパティ値のリストに追加される。時間同士が比較されるときには、第6.2節にて後述する時間管理手法が使用される。
・コグニマサーバから新規のオブジェクトメッセージを受信する場合、クライアント装置はこの新規のオブジェクトをローカルデータベースに追加する
・コグニマサーバからオブジェクト削除メッセージを受信する場合、クライアント装置はローカルデータベースにおいてこのオブジェクトに削除済としてマーク付けする
・クライアント装置がプロパティ変更を受信する場合、常に、コグニマサーバがデータベースの現在の状態に関して信頼できるものと想定されるので、変更はローカルデータベースに保持されるプロパティの値に行われる
コグニマサーバはクライアント装置から変更ログ項目を受信する:
・コグニマサーバがクライアント装置から新規のオブジェクトを受信する場合、オブジェクトはコグニマサーバのデータベースに追加され、最初に新規のオブジェクトを送信したマシンの変更−ログを除いてそのユーザに対して登録されたクライアント装置の全ての変更−ログにも追加される
・コグニマサーバがクライアント装置からオブジェクト削除を受信する場合、オブジェクトは削除のためにマーク付けされ、オブジェクト削除メッセージが、最初にオブジェクト削除を送信したマシンの変更−ログを除いてそのユーザに対して登録された装置の全ての変更−ログに追加される
・プロパティ変更を受信する場合、コグニマサーバは変更の時間をコグニマサーバ上でそのプロパティに対して保持される現在時間と比較する。プロパティ変更の時間がコグニマサーバ上で保持される時間より後の場合、サーバデータベースにおいてプロパティ値が変更され、この変更はそのユーザに対して登録されたクライアント装置の全ての変更−ログ−プロパティ変更において送信されるマシンのものを含む−にも追加される(別のオブジェクト更新がその間マシンに送信される場合)。プロパティ変更がコグニマサーバ上で保持されるものより前の場合、格納されたプロパティ値の方がより最近のものであるので変更は行われない。しかし、ユーザが必要に応じて後で取得できるように値はコグニマサーバ上の古いプロパティ値のリストに追加される。時間同士が比較されるときには、第6.2節にて後述する時間管理手法が使用される。
装置が最初にコグニマサーバへと接続する場合、全てのクラスメタデータ定義及びそのユーザに対するデータベース中の全てのオブジェクトが送信されることになる。一般的に、削除メッセージは削除のためにオブジェクトにマーク付けするだけである。オブジェクトのデータベースからの実際の削除は、そのオブジェクトを参照する全てのオブジェクトが削除された後で行われるであろう。
5.2.5 最適化
上述の複製プロトコルの最適化バージョンは、変更ログ中のエントリの集約を考慮に入れている。変更ログ(コグニマサーバ中又はクライアント装置上)がまだ複製されていない場合、後続のエントリが追加される。既存のエントリを走査することにより、次の接続中に複製される必要のあるエントリ数を場合によっては削減することができる:
・新規のエントリが、更新が予定されているプロパティに対する更新である場合、後のエントリのみが保持されれば良い
・新規のエントリがオブジェクト削除である場合、そのオブジェクトに対する全てのプロパティ更新を変更ログから削除することができる
・新規のエントリが「復旧」コマンドであり、元の削除がまだ変更ログ内にある場合、2つのエントリは共に変更ログから削除することができる。
上述の複製プロトコルの最適化バージョンは、変更ログ中のエントリの集約を考慮に入れている。変更ログ(コグニマサーバ中又はクライアント装置上)がまだ複製されていない場合、後続のエントリが追加される。既存のエントリを走査することにより、次の接続中に複製される必要のあるエントリ数を場合によっては削減することができる:
・新規のエントリが、更新が予定されているプロパティに対する更新である場合、後のエントリのみが保持されれば良い
・新規のエントリがオブジェクト削除である場合、そのオブジェクトに対する全てのプロパティ更新を変更ログから削除することができる
・新規のエントリが「復旧」コマンドであり、元の削除がまだ変更ログ内にある場合、2つのエントリは共に変更ログから削除することができる。
6.コアアルゴリズム
6.1 エンディアンネスの処理
オペレーティングシステムは、基本的にリトルエンディアン及びビッグエンディアンのうちの何れかである。これは、数字及び文字が格納されるバイトの並び順の選択である。異なるエンディアンネスを有する2台のコンピュータが通信を行う必要がある場合、片方のコンピュータはデータパケットのエンディアンネスを切替えなければならないだろう。コグニマ環境では、コグニマクライアントソフトウェアはホストクライアント装置と同じエンディアンネスを使用する。コグニマサーバはクライアント装置のエンディアンネスを判定し(クライアントからのデータの最初のパケットに含まれる参照値を使用)、コグニマサーバにおいて一貫したエンディアンネスを維持する必要がある場合に後続の受信データを変換しなければならない。また、コグニマサーバはクライアント装置に送り返す送信データを変換しなければならない。
6.1 エンディアンネスの処理
オペレーティングシステムは、基本的にリトルエンディアン及びビッグエンディアンのうちの何れかである。これは、数字及び文字が格納されるバイトの並び順の選択である。異なるエンディアンネスを有する2台のコンピュータが通信を行う必要がある場合、片方のコンピュータはデータパケットのエンディアンネスを切替えなければならないだろう。コグニマ環境では、コグニマクライアントソフトウェアはホストクライアント装置と同じエンディアンネスを使用する。コグニマサーバはクライアント装置のエンディアンネスを判定し(クライアントからのデータの最初のパケットに含まれる参照値を使用)、コグニマサーバにおいて一貫したエンディアンネスを維持する必要がある場合に後続の受信データを変換しなければならない。また、コグニマサーバはクライアント装置に送り返す送信データを変換しなければならない。
6.2 システム時間の同期化
異なる装置は必然的に多少異なるシステム時間を有することになる。クライアント装置からコグニマサーバへと送信される変更は、変更時の装置のシステム時間でスタンプされる。変更が発生した順序を判断し、正しい更新を記録することができるように異なる装置上で時間を変換することはコグニマサーバの役目である。
異なる装置は必然的に多少異なるシステム時間を有することになる。クライアント装置からコグニマサーバへと送信される変更は、変更時の装置のシステム時間でスタンプされる。変更が発生した順序を判断し、正しい更新を記録することができるように異なる装置上で時間を変換することはコグニマサーバの役目である。
装置のログオンは現在の装置の時間を含む。コグニマサーバはネットワークの待ち時間を補償し、ログイン時間をそれ自体のシステム時間と比較することができなければならない。これにより、装置の時間とコグニマサーバの時間との間に差分が生じることになる。この差分はそのセッションにおいて装置により送信される更なる時間に適用することができる。
コグニマサーバは、連続セッションにおける装置からの差分同士を比較し、装置上のクロック「クリープ」又は時間帯の変更を判定することができる。システム内の全てのクライアント装置が相互に十分に同期のとれたクロックを有することは以下に示すように想定しがたい:
・装置のクロック精度によってクロック時間は装置上で変動する
・ユーザの中には、例えば、5分早くクロックを設定することを好む人もいる
・ユーザの中には、ローカル設定を調整するよりはサマータイムのためにクロックを変更する人もいる(また、OSの中にはローカル特性を提供せず、ユーザがクロックを直接変更することを強制するものもあるかもしれない)
この問題を克服するために、サーバは、サーバ上で比較が行われる場合にクライアント装置により使用される時間をGMTへと調整し、メッセージがコグニマサーバからクライアント装置へと送信される場合にGMTからクライアント装置に対する同等の時間へと調整する役目を負うであろう。
・装置のクロック精度によってクロック時間は装置上で変動する
・ユーザの中には、例えば、5分早くクロックを設定することを好む人もいる
・ユーザの中には、ローカル設定を調整するよりはサマータイムのためにクロックを変更する人もいる(また、OSの中にはローカル特性を提供せず、ユーザがクロックを直接変更することを強制するものもあるかもしれない)
この問題を克服するために、サーバは、サーバ上で比較が行われる場合にクライアント装置により使用される時間をGMTへと調整し、メッセージがコグニマサーバからクライアント装置へと送信される場合にGMTからクライアント装置に対する同等の時間へと調整する役目を負うであろう。
クライアント装置は、変更ログ中の全ての項目にローカルクロックから取得された時間でタグ付けすることになる。クライアント装置に関する限りでは、クライアント装置自体のクロックに基づいて時間を扱う。
コグニマサーバへと接続するたびに、クライアント装置はそれ自体のクロックにより得られた現在時間のビューを送信する。これにより、サーバは以下のことを導き出すことができる:
・GMTに対する差分
・前回ログオンして以降モバイル装置のクロックに変動があった場合、サーバはGMTに対する最終差分及び最後の接続の時間を記録し、これらを比較することができる。変動がある場合、サーバはモバイル装置に応じて(pro-rata)送信される全ての時間を調整することができる。
・GMTに対する差分
・前回ログオンして以降モバイル装置のクロックに変動があった場合、サーバはGMTに対する最終差分及び最後の接続の時間を記録し、これらを比較することができる。変動がある場合、サーバはモバイル装置に応じて(pro-rata)送信される全ての時間を調整することができる。
例えば、以下の表に、コグニマサーバへと接続するクライアント装置におけるイベントのパターンを示す。クライアント装置の時間はコグニマサーバより5分遅く、毎時1分遅れている(要点を示すために極端な場合を挙げる)。更に要点を示すために、09:00から12:00までユーザは機上でコグニマサーバと接触がなく、この間クライアント装置は接続していないものとする:
プロパティ変更がコグニマサーバ上に格納された時間の前後に行われたか否かを導き出すために、時間X及びYを計算する必要がある。上述の情報から、コグニマサーバには、クライアントが前回接続したのは約3時間前であり、その時点では時間差は5分であったが、現在は8分になっていることが分かっている。クロック変動が直線的に発生するものと想定すると、コグニマサーバは、装置がGMTより5分遅れており、クロックは毎時1分遅れることを算出することができる。
プロパティ変更がコグニマサーバ上に格納された時間の前後に行われたか否かを導き出すために、時間X及びYを計算する必要がある。上述の情報から、コグニマサーバには、クライアントが前回接続したのは約3時間前であり、その時点では時間差は5分であったが、現在は8分になっていることが分かっている。クロック変動が直線的に発生するものと想定すると、コグニマサーバは、装置がGMTより5分遅れており、クロックは毎時1分遅れることを算出することができる。
これにより、クライアント装置がプロパティAの変更に対して10:00として認識する時間は、初期変動として5分を加える必要があり、プロパティが変更されるまでの時間に発生した追加の変動のために更に1分加える必要がある。
同様に、プロパティBは11:07に調整される必要がある−5分の初期変動に加えて、プロパティが変更されたとき09:00から11:00まで2時間経過しているために更に2分必要である。
実際には、クライアント装置の時間とGMTとの間の時間に対する差分は数分であるが、変動は1時間あたり数分の1秒のオーダーとなるであろう。
6.2.1 時間調整
GMTに対する差分及びクライアント装置のクロックと同様に、ユーザはクライアント装置上の時間を変更することができる。ユーザは、時間を正しい現地時間にリセットするためにこの変更を行うかもしれない(ユーザは自動的にこの変更を行うオプションを選択することもできるが、ユーザの中にはクライアント装置の時間を自分で制御したい−例えば、クロックを5分早く設定したいと思う人もいるかもしれない)。また、現地時間(すなわち、サマータイム又は時間帯の変更)の変更を反映させるために変更を行うかもしれない。目的は、ユーザが自身に即した任意の時間に装置上のクロックを変更することができ、装置はただこれを考慮するだけであるように構成することである。
GMTに対する差分及びクライアント装置のクロックと同様に、ユーザはクライアント装置上の時間を変更することができる。ユーザは、時間を正しい現地時間にリセットするためにこの変更を行うかもしれない(ユーザは自動的にこの変更を行うオプションを選択することもできるが、ユーザの中にはクライアント装置の時間を自分で制御したい−例えば、クロックを5分早く設定したいと思う人もいるかもしれない)。また、現地時間(すなわち、サマータイム又は時間帯の変更)の変更を反映させるために変更を行うかもしれない。目的は、ユーザが自身に即した任意の時間に装置上のクロックを変更することができ、装置はただこれを考慮するだけであるように構成することである。
ユーザがクライアント装置の時間に対して変更を行う場合、大半のオペレーティングシステムはこの変更を報告する(これを行わないシステムにおいては、このような変更をチェックするために、例えば、毎分時間をポーリングすることができる)。時間の変更を検出すると、クライアント装置は新しい時間と変更前の時間との間の差分を算出するであろう。例えば、ユーザが時間帯を移動したときにはプラス1時間の変更となるかもしれない。クライアント装置は、この時間差を調整時間として格納する。この調整時間は、コグニマサーバへの次回の接続時のために保存される。また、クライアント装置は、変更ログの全ての項目に目を通し、調整時間によりログ中の全ての時間を更新する。これにより、変更ログ中の各エントリをクライアント装置上の現地時間と常に関連させておくことができる。
このような調整は、コグニマサーバへの接続間でも行うことができるだろう−ログ中の各時間は全てクライアント装置上の現地時間に関連するように、毎回、時間変更の量が調整時間を用いてまとめられ、変更ログが更新される。
クライアント装置が次にコグニマサーバへと接続するときには、格納された調整時間−すなわち、前回の接続以降クライアント装置のクロックが進められた又は遅らせられた量−をログオン時に送信する。コグニマサーバは、GMTに対する差分及び変動計算により時間からこの量を差し引くことができる。
6.2.2 クライアント装置に対するGMT
コグニマサーバ上で行われた変更のGMT時間をあるクライアント装置にとって正しい現地時間に変更するべく、同じ一連の計算を逆に行うことができる。
コグニマサーバ上で行われた変更のGMT時間をあるクライアント装置にとって正しい現地時間に変更するべく、同じ一連の計算を逆に行うことができる。
6.3 アプリケーションの追加
アプリケーションは1つ以上のクラスを使用してユーザデータを保持するであろう。クラスの定義はアプリケーションへとハードコードされる。クラスのバージョンは、アプリケーションのリリースにより調整される。
アプリケーションは1つ以上のクラスを使用してユーザデータを保持するであろう。クラスの定義はアプリケーションへとハードコードされる。クラスのバージョンは、アプリケーションのリリースにより調整される。
統計アプリケーションがフットボール選手クラスを使用してフットボール選手に関するデータを保持するものとする。アプリケーションがクライアント装置上で最初に起動されるとき、どのバージョンのフットボール選手クラスを既に保持しているかを装置に問い合わせる。装置上のバージョンが、アプリケーションが使用すべくハードコードされたバージョンと同じである場合、それ以上何も行わなくて良い。
装置が、フットボール選手クラスの新しいバージョンを保持する場合、アプリケーションは予想よりも多くのプロパティに対処できるよう十分頑強でなければならない(複数のアプリケーションにより使用されるクラスを有していて、何らかの理由でアプリケーションのうちの1つの古いバージョンをインストールした場合にこの状況が発生するであろう。これは稀なケースであり、理想的には相互依存するアプリケーションは共にアップグレードすべきである。)。
装置がフットボール選手クラスの古いバージョンを保持する(又は全くバージョンを保持しない)場合、アプリケーションの有するフットボール選手クラスのバージョンをそれと置き換えるべきである。新しいバージョンはコグニマサーバへと送信される。コグニマサーバは全ての装置上で使用されるクラスの各バージョンのリストを維持する。
ウェブポータルのページは、ハードコードされた装置のアプリケーションと同等であろう。ウェブはクラスの最新バージョンに従ってデータベースからオブジェクトを抽出することができ、予想してハードコードされたよりも多くのプロパティがある場合は無視することができる。従って、ウェブはクラスバージョンを宣言する必要がない。
6.4 変更−ログの最適化
コグニマサーバは、装置が次に接続するときに送信されることになる変更を列挙する全ての装置に対する変更−ログを維持する。例えば、変更−ログに対して行うことができる最適化には以下に示すようなものがあるだろう:
・同じプロパティに対する3つ以上の更新が変更−ログにキューイングされている場合、最後の更新のみを維持すれば良い
・あるオブジェクトに対して削除がキューイングされている場合、キューの前方にある更新は全て削除されても良い
・あるオブジェクトに対して更新がキューイングされている場合、キューの前方にある削除は削除されるべきである
・装置が新規のアプリケーションを登録する場合、そのアプリケーションに対して送信すべきオブジェクト(例えば、メッセージ履歴)が非常に多くなる可能性がある。変更−ログは、追加対象として妥当な数のオブジェクト(例えば、最新の20通のメッセージ)のみを持つべきである
7.ゴースト化、復活(resurrection)、ピン止め(pinning)、及び撤回(withdrawal)
クライアント装置上で利用可能なユーザデータを保持する空間は、通常、サーバ上で利用可能な空間よりも数桁小さい。装置は、データのサブセットを保持する必要があり、ユーザはこのサブセットを維持するだけで良い。ゴースト化及び撤回はこれを支援するためのツールである。
コグニマサーバは、装置が次に接続するときに送信されることになる変更を列挙する全ての装置に対する変更−ログを維持する。例えば、変更−ログに対して行うことができる最適化には以下に示すようなものがあるだろう:
・同じプロパティに対する3つ以上の更新が変更−ログにキューイングされている場合、最後の更新のみを維持すれば良い
・あるオブジェクトに対して削除がキューイングされている場合、キューの前方にある更新は全て削除されても良い
・あるオブジェクトに対して更新がキューイングされている場合、キューの前方にある削除は削除されるべきである
・装置が新規のアプリケーションを登録する場合、そのアプリケーションに対して送信すべきオブジェクト(例えば、メッセージ履歴)が非常に多くなる可能性がある。変更−ログは、追加対象として妥当な数のオブジェクト(例えば、最新の20通のメッセージ)のみを持つべきである
7.ゴースト化、復活(resurrection)、ピン止め(pinning)、及び撤回(withdrawal)
クライアント装置上で利用可能なユーザデータを保持する空間は、通常、サーバ上で利用可能な空間よりも数桁小さい。装置は、データのサブセットを保持する必要があり、ユーザはこのサブセットを維持するだけで良い。ゴースト化及び撤回はこれを支援するためのツールである。
クラス定義は、ある特定のプロパティに「ゴースト化可能」としてフラグを立てることを含んでも良い。これは、オブジェクトがゴースト化される場合、プロパティがゼロになり、クライアント装置上の空間が解放されることを意味する。ゴースト化は装置上で自動的に行われる。どのオブジェクトをゴースト化すべきかの決定は、「ゴースト化規則」に従い、オブジェクトが作成又は更新されるたびに規則を適用することによって行われる。規則は、オブジェクトのセレクションの最大数を定義する。最大値を超える場合、ソート順の末尾にあるセレクション中のオブジェクトはゴースト化される。
例えば、クラスはメッセージであり、セレクションは受信ボックス内のメッセージであり、ソート順は日時であり、最大数は50であるかもしれない。受信ボックスに50通のメッセージがある状態で新規のメッセージが到着した場合、受信ボックス中の最も古いメッセージがゴースト化される。ゴースト化では、メッセージ本体を削除した場合でもメッセージを認識するのに十分なヘッダ情報を残しておいて良い。
撤回(従来は自動削除及び削除としても既知)は、ゴースト化に類似しているが、オブジェクトの一部ではなく全体を削除することによって機能する。
ゴースト化も撤回もコグニマサーバには通知されない。これらの操作はクライアント装置特有のものである。異なる装置は異なる個数のオブジェクトを有しても良い。装置上のデータは基本的に同期がとれているが、各装置は異なるデータ部分集合を保持する。
ユーザがゴーストの復活を希望する場合、オブジェクトが復活するようにクライアントからコグニマサーバへと要求が渡される。オブジェクトのリフレッシュが装置へと送信され、オブジェクトは正常に戻る。
個々のオブジェクトはピン止めすることができる。ピン止めされたオブジェクトは、ゴースト化されたり削除されたりすることはない。ピン止めはユーザが選択することも、自動的に行うこともできる。例えば、復活したオブジェクトは自動的にピン止めされる。
8.ユーザ複製−オブジェクトの共有
ユーザがオブジェクトを共有するのに役立つと思われるアプリケーションは数多く存在する。これが有効に機能すると思われる一般的な場合は、ユーザがオブジェクトを共有したいユーザのコグニマアドレスを知る必要がある場合である。これらのアドレスの取得については、コグニマサーバアーキテクチャにおいて詳細に検討することがより適切である。ここでは、このようなリストが利用可能であると想定する。
ユーザがオブジェクトを共有するのに役立つと思われるアプリケーションは数多く存在する。これが有効に機能すると思われる一般的な場合は、ユーザがオブジェクトを共有したいユーザのコグニマアドレスを知る必要がある場合である。これらのアドレスの取得については、コグニマサーバアーキテクチャにおいて詳細に検討することがより適切である。ここでは、このようなリストが利用可能であると想定する。
1つ以上のコグニマアドレスの集合が共有対象のオブジェクトに添付される。オブジェクトは読出し専用に設定することができる(共有相手が修正できないように)。ウェブ又はクライアント装置から新規のオブジェクトを受信する(あるいは、オブジェクトに対する更新を受信する)と、コグニマサーバは通常通りそれを複製する。
また、コグニマサーバは「共有者」のコグニマアドレスのリストを参照する。オブジェクトに発信者のID(すなわち、オブジェクト所有者のコグニマアドレス+オブジェクトID)でマーク付けし、共有者へと送信する。共有ユーザは同じコグニマサーバ上又は異なるコグニマサーバ上に存在する。共有者のコグニマサーバがオブジェクトを受信する。新規のオブジェクトの場合には新規のオブジェクトIDを割り当てる(発信者IDを記録)。更新の場合には発信者IDを使用しているオブジェクトを探し出す。共有者がオブジェクトを更新する許可を受けている場合、発信者IDを使用して更新を逆にオブジェクト所有者へと複製することができる。
9.データの表示
PDAなどの従来の小型装置は単純なファイリングシステムを有する傾向にある。これらのシステムによりアプリケーションは、稼動中でないときにデータを保持する何らかの記憶装置においてデータを読み書きすることができる。一般的に、このようなプログラムは利用可能なデータの集合を読み込み、データを画面に表示するためのユーザインタフェースを提供する。これには幾つかの欠点がある:
・プログラムが起動するときのデータの読み込みに時間がかかる
・アプリケーションはデータの全部又は一部をメモリに格納する必要がある(つまり、クライアント装置上ではより多くのメモリを占めている)
・2つ以上のアプリケーションが同じデータの集合をアクセスできるようにすることは問題となる
・データを読んだり操作したりするための類似のコードが装置上で稼動する幾つかのアプリケーションで出現する
コグニマ手法はこれとは異なる:
・データは幾つかのアプリケーションによるアクセスが可能なオブジェクトデータベースに格納される
・コグニマアプリケーションは、データベースから扱う全てのデータを読み込まない。その代わりに、セレクション−現在関心のあるデータの部分集合−を作成する。一般的に、このセレクションは装置の画面上に現在表示されているデータと一致する。このため、アプリケーションが現在使用中のデータのみがメモリに保持される−メモリ空間を大いに節約することになる
・データの格納作業、ソーティング作業、及び索引付け作業の全てはオブジェクトデータベースにより行われるので、この機能を各アプリケーションにおいて繰り返す必要がない
・アプリケーションにおいてデータに変更を加える必要がある場合、アプリケーションはデータの表示画面を直接更新しない。変更は、オブジェクト中のプロパティを更新するか、あるいは、オブジェクトを作成又は削除することになる。データの変更は、別のアプリケーションにより、あるいは、別のマシン上でデータが変更されたためにコグニマサーバから受信された更新により行うことができるだろう
・アプリケーションがセレクションを設定するときには、データがセレクションに含まれるか、あるいは、除外されるかを決める基準のリストが与えられる−これにより、コグニマ複製エンジンはオブジェクトが作成、削除、又は更新されたときにどのアプリケーションに通知すべきかが分かる
・更新をアプリケーションへと送信する必要がある場合、このデータを含むセレクションへとリンクされたアプリケーション中のコードが呼び出され、こうして、アプリケーションは行われた変更に応えることができる
・セレクションが設定されるとき、アプリケーションはデータのソート方法と必要なのはデータのソート済リスト上の小型のウィンドウのみであるか(ビューとして既知)とを指定することができる
この手法は、各ウィンドウイングシステム上でグラフィックスを再描画するのに使用される画面リペイント手法に類似している。画面のある領域がリペイントを必要とするとき、その画面の一部を担当するアプリケーションが画面のリペイントのために呼び出される。
PDAなどの従来の小型装置は単純なファイリングシステムを有する傾向にある。これらのシステムによりアプリケーションは、稼動中でないときにデータを保持する何らかの記憶装置においてデータを読み書きすることができる。一般的に、このようなプログラムは利用可能なデータの集合を読み込み、データを画面に表示するためのユーザインタフェースを提供する。これには幾つかの欠点がある:
・プログラムが起動するときのデータの読み込みに時間がかかる
・アプリケーションはデータの全部又は一部をメモリに格納する必要がある(つまり、クライアント装置上ではより多くのメモリを占めている)
・2つ以上のアプリケーションが同じデータの集合をアクセスできるようにすることは問題となる
・データを読んだり操作したりするための類似のコードが装置上で稼動する幾つかのアプリケーションで出現する
コグニマ手法はこれとは異なる:
・データは幾つかのアプリケーションによるアクセスが可能なオブジェクトデータベースに格納される
・コグニマアプリケーションは、データベースから扱う全てのデータを読み込まない。その代わりに、セレクション−現在関心のあるデータの部分集合−を作成する。一般的に、このセレクションは装置の画面上に現在表示されているデータと一致する。このため、アプリケーションが現在使用中のデータのみがメモリに保持される−メモリ空間を大いに節約することになる
・データの格納作業、ソーティング作業、及び索引付け作業の全てはオブジェクトデータベースにより行われるので、この機能を各アプリケーションにおいて繰り返す必要がない
・アプリケーションにおいてデータに変更を加える必要がある場合、アプリケーションはデータの表示画面を直接更新しない。変更は、オブジェクト中のプロパティを更新するか、あるいは、オブジェクトを作成又は削除することになる。データの変更は、別のアプリケーションにより、あるいは、別のマシン上でデータが変更されたためにコグニマサーバから受信された更新により行うことができるだろう
・アプリケーションがセレクションを設定するときには、データがセレクションに含まれるか、あるいは、除外されるかを決める基準のリストが与えられる−これにより、コグニマ複製エンジンはオブジェクトが作成、削除、又は更新されたときにどのアプリケーションに通知すべきかが分かる
・更新をアプリケーションへと送信する必要がある場合、このデータを含むセレクションへとリンクされたアプリケーション中のコードが呼び出され、こうして、アプリケーションは行われた変更に応えることができる
・セレクションが設定されるとき、アプリケーションはデータのソート方法と必要なのはデータのソート済リスト上の小型のウィンドウのみであるか(ビューとして既知)とを指定することができる
この手法は、各ウィンドウイングシステム上でグラフィックスを再描画するのに使用される画面リペイント手法に類似している。画面のある領域がリペイントを必要とするとき、その画面の一部を担当するアプリケーションが画面のリペイントのために呼び出される。
9.1 例
クライアント装置は、装置上で稼動する連絡先アプリケーションを有することもある−この装置は、同様に連絡先アプリケーションを実行中の他のクライアント装置に接続されるコグニマサーバを用いてデータを複製する。名前及び電話番号を含むある連絡先に対してオブジェクトのクラスが定義され、これらのデータが特定のユーザの全ての装置へと複製される。
クライアント装置は、装置上で稼動する連絡先アプリケーションを有することもある−この装置は、同様に連絡先アプリケーションを実行中の他のクライアント装置に接続されるコグニマサーバを用いてデータを複製する。名前及び電話番号を含むある連絡先に対してオブジェクトのクラスが定義され、これらのデータが特定のユーザの全ての装置へと複製される。
ある装置上のアプリケーションは、頭文字により全ての連絡先を表示する表示画面を有しても良い−例えば、インタフェースによりユーザがDのボタンを押下することで、Dで始まる全ての名前を表示することができる。このアプリケーションは、以下のような場合にオブジェクトを含むセレクションを設定するであろう:
・クラスが連絡先として定義される場合
・名前が選択された文字(例えば、D)で始まる場合
セレクションが定義される場合、アプリケーションはオブジェクトが追加、削除、又は更新されたときにCREにより呼び出されるコードも定義する。
・クラスが連絡先として定義される場合
・名前が選択された文字(例えば、D)で始まる場合
セレクションが定義される場合、アプリケーションはオブジェクトが追加、削除、又は更新されたときにCREにより呼び出されるコードも定義する。
セレクションが最初に設定される場合、このコードは上述の基準を満たす第1のオブジェクト集合を伴って呼び戻されることになる。
Dで始まる名前を有する新規の連絡先を作成するように要求された場合、アプリケーションはオブジェクトを作成する以外のことは行わない。CREは新規のオブジェクトを検出して、新規のオブジェクトを通知するためにセレクションコードを呼び戻すであろう。
同様の場合は、新規の連絡先オブジェクトが別の装置上で作成され、クライアント装置へと複製された場合である−連絡先の名前がDで始まる場合、アプリケーションは通知を受けるであろう。
9.2 ソーティング
一般的に、セレクション中のデータはソートする必要がある−多くの場合、表示時にユーザが論理フォーマットでデータを見ることができるようにするためである。セレクションが定義されるときに、ソーティング順(どのプロパティによってソートすべきか、どの順序でソートすべきか、及びどのソーティングアルゴリズムを使用すべきか)を指定することができる。
一般的に、セレクション中のデータはソートする必要がある−多くの場合、表示時にユーザが論理フォーマットでデータを見ることができるようにするためである。セレクションが定義されるときに、ソーティング順(どのプロパティによってソートすべきか、どの順序でソートすべきか、及びどのソーティングアルゴリズムを使用すべきか)を指定することができる。
9.3 ビュー
セレクション中には多数のデータ項目が存在することもある。通常、データの表示中にデータが画面内に収まらない可能性もあり、ユーザはデータを上下にスクロールする必要があるだろう。ビューは、セレクションが扱うデータ項目の個数とアプリケーションがセレクション中に出したいデータを網羅するリストのうちの第1のデータ項目の個数とを指定することによってこの機能を提供する。
セレクション中には多数のデータ項目が存在することもある。通常、データの表示中にデータが画面内に収まらない可能性もあり、ユーザはデータを上下にスクロールする必要があるだろう。ビューは、セレクションが扱うデータ項目の個数とアプリケーションがセレクション中に出したいデータを網羅するリストのうちの第1のデータ項目の個数とを指定することによってこの機能を提供する。
アプリケーションは、画面上に表示するのに必要な量のみに制限されるようにローカルで格納するデータ量を制限することができるので、ビューは重要である。これにより、データの不要な複製が減少する。
9.4 効率
コグニマは、データがコグニマサーバとクライアントアプリケーションとの間で転送される方法において効率的な最適化を成し遂げた−複数のデータ変更が行われると、アプリケーションはユーザインタフェースを1回だけ更新すれば良いように、データはブロックで送信され、アプリケーションは変更が完了したことを通知される。
コグニマは、データがコグニマサーバとクライアントアプリケーションとの間で転送される方法において効率的な最適化を成し遂げた−複数のデータ変更が行われると、アプリケーションはユーザインタフェースを1回だけ更新すれば良いように、データはブロックで送信され、アプリケーションは変更が完了したことを通知される。
9.5 例
一例として、ContactSelectionと呼ばれるセレクションを定義する。これは、選択されたオブジェクトのうちの何れかに対して変更が行われるたびにフレームワークが呼び戻すコードである。コグニマフレームワークでは、COdbSelectテンプレート化クラス−テンプレート引数としてセレクション中に持ちたいオブジェクトの型を指定−から取得するオブジェクトとして実現される。
class CContactSelect:public COdbSelect<CContact>
{
public:
CContactSelect(COdb *aOdb);
void ObjectAdded(CContact *aObject);
void ObjectUpdated(CContact *aObject);
void ObjectRemoved(const TOdbObjectId aObjectId);
private:
bool ListContacts();
};
オブジェクトが追加、更新、又は削除されるたびにフレームワークにより各メソッドObjectAdded()、ObjectUpdated()、及びObjectRemoved()がそれぞれ呼び出される。セレクションクラスを実現する際に、これらのイベント発生時にインスタンスアクションを取りたくない場合には、全てのメソッドを実現する必要はない−ある特定のオブジェクト集合のリストを維持するためにセレクションを設定するが、他の何らかのイベント発生時にのみリストのチェックを行い、上述のメソッドが必要でない場合もある。
一例として、ContactSelectionと呼ばれるセレクションを定義する。これは、選択されたオブジェクトのうちの何れかに対して変更が行われるたびにフレームワークが呼び戻すコードである。コグニマフレームワークでは、COdbSelectテンプレート化クラス−テンプレート引数としてセレクション中に持ちたいオブジェクトの型を指定−から取得するオブジェクトとして実現される。
class CContactSelect:public COdbSelect<CContact>
{
public:
CContactSelect(COdb *aOdb);
void ObjectAdded(CContact *aObject);
void ObjectUpdated(CContact *aObject);
void ObjectRemoved(const TOdbObjectId aObjectId);
private:
bool ListContacts();
};
オブジェクトが追加、更新、又は削除されるたびにフレームワークにより各メソッドObjectAdded()、ObjectUpdated()、及びObjectRemoved()がそれぞれ呼び出される。セレクションクラスを実現する際に、これらのイベント発生時にインスタンスアクションを取りたくない場合には、全てのメソッドを実現する必要はない−ある特定のオブジェクト集合のリストを維持するためにセレクションを設定するが、他の何らかのイベント発生時にのみリストのチェックを行い、上述のメソッドが必要でない場合もある。
更にプライベートメソッドListContacts()も定義している−これは、セレクションにより保持される全ての現在の連絡先を列挙する。
このクラスの実施例を挙げる:
CContactSelect::CContactSelect(COdb *aOdb)
:COdbSelect<CContact>(aOdb)
{
}
void CContactSelect::ObjectAdded(CTestContact *aContact)
{
OdbLog(OdbLogApp,L"New contact added:"<<aContact->GetName());
ListContacts();
}
void CContactSelect::ObjectUpdated(CTestContact *aContact)
{
OdbLog(OdbLogApp,L"Contact updated:"<<aContact->GetName());
ListContacts();
}
void CContactSelect::ObjectRemoved(const TOdbObjectId aObjectId)
{
OdbLog(OdbLogApp,L"Contact deleted - Id:"<<aObjectId);
ListContacts();
}
void CContactSelect::ListContacts()
{
OdbLog(OdbLogApp,L"Contacts list:");
for(unsigned long Index=0;Index<iResult.size();Index++)
{
CTestContact *Contact=iResult[Index];
OdbLog(OdbLogApp,Contact->GetName()<<","
<<Contact->GetPhone()<<","
<<Contact->GetEmail());
}
}
コンストラクタは、デフォルトのCOdbSelectコンストラクタを呼び出すだけである。ObjectAdded()、Updated()、及びRemoved()メソッドは、何の変更があったのかをプリントアウトし、ListContacts()を呼び出してリストの現在の内容を示す。
CContactSelect::CContactSelect(COdb *aOdb)
:COdbSelect<CContact>(aOdb)
{
}
void CContactSelect::ObjectAdded(CTestContact *aContact)
{
OdbLog(OdbLogApp,L"New contact added:"<<aContact->GetName());
ListContacts();
}
void CContactSelect::ObjectUpdated(CTestContact *aContact)
{
OdbLog(OdbLogApp,L"Contact updated:"<<aContact->GetName());
ListContacts();
}
void CContactSelect::ObjectRemoved(const TOdbObjectId aObjectId)
{
OdbLog(OdbLogApp,L"Contact deleted - Id:"<<aObjectId);
ListContacts();
}
void CContactSelect::ListContacts()
{
OdbLog(OdbLogApp,L"Contacts list:");
for(unsigned long Index=0;Index<iResult.size();Index++)
{
CTestContact *Contact=iResult[Index];
OdbLog(OdbLogApp,Contact->GetName()<<","
<<Contact->GetPhone()<<","
<<Contact->GetEmail());
}
}
コンストラクタは、デフォルトのCOdbSelectコンストラクタを呼び出すだけである。ObjectAdded()、Updated()、及びRemoved()メソッドは、何の変更があったのかをプリントアウトし、ListContacts()を呼び出してリストの現在の内容を示す。
ListContacts()は、セレクションにより保持されるオブジェクトの現在のリストがどのようにアクセス可能になるかを示す。オブジェクトを指し示すポインタの現在のリストがiResultと呼ばれるコンテナクラスに保持される−これは、通常のコンテナクラスインテグレータによりアクセスすることができる。この場合、リストに目を通して、リスト中の全てのオブジェクトをプリントするだけである。
Claims (13)
- バッテリー駆動のモバイルコンピュータ装置上で電力消費及び処理要件を最小限にするように表示画面を更新する方法であって、
前記装置上のアプリケーション又はユーザインタフェースプログラムが表示するためにデータベースにおいて変更されたデータを該アプリケーション又はユーザインタフェースプログラムへと継続的にプッシュすることにより、該アプリケーション又はユーザインタフェースプログラムが変更されたデータを求めて前記データベースをポーリングする必要のないデータベースを提供する工程を有することを特徴とする方法。 - 前記継続的にプッシュされるデータは、前記アプリケーション又はユーザインタフェース(UI)プログラムが必要と定義するデータのみであることを特徴とする請求項1記載の方法。
- 前記アプリケーション又はUIプログラムは、表示のために必要なデータのみを必要と定義することを特徴とする請求項2記載の方法。
- 前記データベースは幾つかの異なるアプリケーションによって使用するためのデータを提供することを特徴とする請求項1記載の方法。
- アプリケーションが前記データの表示を直接更新するのではなく、前記表示を更新する前記データベースを更新することを特徴とする請求項1記載の方法。
- 前記変更されたデータは、前記データベースの中の新規のオブジェクト又はレコード、前記データベースから削除されたオブジェクト又はレコード、及び前記データベースの中のオブジェクトの変更されたプロパティ又はレコードの変更されたフィールドであることを特徴とする請求項1記載の方法。
- 前記アプリケーションは以下のリスト:
(a)連絡先
(b)予定表/日誌
(c)メッセージング
(d)プレゼンス及びインスタントメッセージング
(e)フォトギャラリー
(f)呼出し音ダウンロード、サンプリング、及び順序付け
(g)バンキング
(h)装置管理
から選択されるアプリケーションであることを特徴とする請求項1記載の方法。 - 前記アプリケーションは、前記データベースがデータをソートする方法及びデータのソート済リスト上に小型のウィンドウが必要であるか否かを指定することを特徴とする請求項1記載の方法。
- 電力消費及び処理要件を最小限にするように表示画面を更新するべくプログラムされたバッテリー駆動のモバイルコンピュータ装置において、
アプリケーション又はユーザインタフェースプログラムが表示するためにデータベースにおいて変更されたデータを該アプリケーション又はユーザインタフェースプログラムへと継続的にプッシュすることにより、該アプリケーション又はユーザインタフェースプログラムが変更されたデータを求めて前記データベースをポーリングする必要のないデータベースを備えることを特徴とする装置。 - 前記継続的にプッシュされるデータは、前記アプリケーション又はユーザインタフェース(UI)プログラムが必要と定義するデータのみであることを特徴とする請求項9記載の装置。
- 前記アプリケーション又はUIプログラムは、表示のために必要なデータのみを必要と定義することを特徴とする請求項9記載の装置。
- 前記データベースは幾つかの異なるアプリケーションによって使用するためのデータを提供することを特徴とする請求項9記載の装置。
- アプリケーションが前記データの表示を直接更新するのではなく、前記表示を更新する前記データベースを更新することを特徴とする請求項9記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0128243.3A GB0128243D0 (en) | 2001-11-26 | 2001-11-26 | Cognima patent |
PCT/GB2002/005315 WO2003047217A2 (en) | 2001-11-26 | 2002-11-26 | Method of updating a display screen on a battery powered mobile computing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005527883A true JP2005527883A (ja) | 2005-09-15 |
JP2005527883A5 JP2005527883A5 (ja) | 2006-01-26 |
Family
ID=9926432
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003548088A Pending JP2005510796A (ja) | 2001-11-26 | 2002-11-26 | 各々がローカルクロックを使用するコンピュータ装置間でデータを複製する方法 |
JP2003548505A Withdrawn JP2005527883A (ja) | 2001-11-26 | 2002-11-26 | バッテリー駆動のモバイルコンピュータ装置上で表示画面を更新する方法 |
JP2003548121A Pending JP2005510805A (ja) | 2001-11-26 | 2002-11-26 | コンピュータ装置間でデータを複製する方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003548088A Pending JP2005510796A (ja) | 2001-11-26 | 2002-11-26 | 各々がローカルクロックを使用するコンピュータ装置間でデータを複製する方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003548121A Pending JP2005510805A (ja) | 2001-11-26 | 2002-11-26 | コンピュータ装置間でデータを複製する方法 |
Country Status (8)
Country | Link |
---|---|
US (4) | US20050108185A1 (ja) |
EP (3) | EP1451720B1 (ja) |
JP (3) | JP2005510796A (ja) |
AT (2) | ATE375562T1 (ja) |
AU (3) | AU2002343093A1 (ja) |
DE (2) | DE60227280D1 (ja) |
GB (3) | GB0128243D0 (ja) |
WO (3) | WO2003046759A2 (ja) |
Families Citing this family (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7970792B2 (en) * | 1998-10-01 | 2011-06-28 | Onepin, Inc. | Phone to phone data exchange |
US7509349B2 (en) * | 1998-10-01 | 2009-03-24 | Onepin, Inc. | Method and apparatus for storing and retrieving business contact information in a computer system |
US7349907B2 (en) * | 1998-10-01 | 2008-03-25 | Onepin, Inc. | Method and apparatus for storing and retrieving business contact information in a computer system |
US7813725B2 (en) * | 1998-10-01 | 2010-10-12 | Onepin, Llc | Wireless data exchange |
US20080015998A1 (en) * | 1998-10-01 | 2008-01-17 | Feyzi Celik | Method and Apparatus for Storing and Retrieving Business Contact Information in a Computer System |
US8326361B2 (en) | 1998-10-01 | 2012-12-04 | Lupine Investments Llc | Phone to phone data exchange |
US7836011B2 (en) * | 1998-10-01 | 2010-11-16 | Onepin, Inc. | Phone to phone data exchange |
US6374259B1 (en) | 1998-10-01 | 2002-04-16 | Onepin, Llc | Method and apparatus for storing and retreiving business contact information in computer system |
US8620286B2 (en) * | 2004-02-27 | 2013-12-31 | Synchronoss Technologies, Inc. | Method and system for promoting and transferring licensed content and applications |
US8156074B1 (en) | 2000-01-26 | 2012-04-10 | Synchronoss Technologies, Inc. | Data transfer and synchronization system |
US6671757B1 (en) | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
GB0229572D0 (en) | 2002-12-19 | 2003-01-22 | Cognima Ltd | Quality of service provisioning |
US6925156B2 (en) * | 2002-12-20 | 2005-08-02 | International Business Machines Corporation | Pre-connection telephony data synchronization |
US8645471B2 (en) | 2003-07-21 | 2014-02-04 | Synchronoss Technologies, Inc. | Device message management system |
US8032593B2 (en) * | 2003-08-07 | 2011-10-04 | Teamon Systems, Inc. | Communications system providing reduced access latency and related methods |
US7305233B2 (en) * | 2004-05-27 | 2007-12-04 | Exclaim, Inc. | Method and apparatus for image distribution using a cellular phone |
KR101109399B1 (ko) * | 2003-08-21 | 2012-01-30 | 마이크로소프트 코포레이션 | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한정보 단위들에 대한 동기화 스키마들의 구현을 위한시스템들 및 방법들 |
JP4583376B2 (ja) * | 2003-08-21 | 2010-11-17 | マイクロソフト コーポレーション | ハードウェア/ソフトウェアインタフェースシステムにより管理可能な情報のユニットに対する同期処理サービスを実現するシステムおよび方法 |
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 |
US7483923B2 (en) * | 2003-08-21 | 2009-01-27 | Microsoft Corporation | Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system |
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 |
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 |
US7895247B2 (en) | 2003-10-29 | 2011-02-22 | Oracle International Corporation | Tracking space usage in a database |
FI20035235A0 (fi) * | 2003-12-12 | 2003-12-12 | Nokia Corp | Järjestely tiedostojen käsittelemiseksi päätelaitteen yhteydessä |
WO2005064469A1 (en) | 2003-12-19 | 2005-07-14 | Network Appliance, Inc. | System and method for supporting asynchronous data replication with very short update intervals |
US7257583B2 (en) * | 2004-01-09 | 2007-08-14 | Microsoft Corporation | System and method for updating an on-device application catalog in a mobile device receiving a push message from a catalog server indicating availability of an application for download |
EP1564657A1 (en) * | 2004-02-10 | 2005-08-17 | Research In Motion Limited | Apparatus and method for data communication and synchronisation |
US7274931B2 (en) * | 2004-02-23 | 2007-09-25 | Harris Arlene J | Systems and methods for enhancing the provisioning and functionality of wireless instruments |
US20050262166A1 (en) * | 2004-05-05 | 2005-11-24 | Microsoft Corporation | Method and system for synchronizing data between electronic devices |
KR20070038462A (ko) * | 2004-05-12 | 2007-04-10 | 퓨전원 인코포레이티드 | 향상된 접속 인식 시스템 |
US9542076B1 (en) | 2004-05-12 | 2017-01-10 | Synchronoss Technologies, Inc. | System for and method of updating a personal profile |
US20080082421A1 (en) * | 2004-05-12 | 2008-04-03 | Richard Onyon | Monetization of an advanced contact identification system |
US7412371B2 (en) * | 2004-06-08 | 2008-08-12 | Northrop Grumman Corporation | Time synchronized playback and control of dissimilar data files |
CA2528080A1 (en) * | 2004-07-30 | 2006-01-30 | Research In Motion Limited | Method and apparatus for synchronizing contact data stores |
US20070271317A1 (en) * | 2004-08-16 | 2007-11-22 | Beinsync Ltd. | System and Method for the Synchronization of Data Across Multiple Computing Devices |
US20070283036A1 (en) * | 2004-11-17 | 2007-12-06 | Sujit Dey | System And Method For Providing A Web Page |
WO2006054340A1 (ja) * | 2004-11-17 | 2006-05-26 | Fujitsu Limited | 携帯無線端末及びそのセキュリティシステム |
KR100654447B1 (ko) * | 2004-12-15 | 2006-12-06 | 삼성전자주식회사 | 지역별로 존재하는 컨텐츠를 글로벌로 공유하고 거래하는방법 및 시스템 |
US20060160529A1 (en) * | 2005-01-14 | 2006-07-20 | Holger Glass | Systems and methods for the automatic customization or configuration of mobile devices |
WO2006125183A2 (en) * | 2005-05-19 | 2006-11-23 | Fusionone, Inc. | Mobile device address book builder |
EP1882242A4 (en) * | 2005-05-19 | 2011-05-25 | Fusionone Inc | REMOTE-CONTROLLED SELF-EMBROIDERY FOR MOBILE PHONES |
GB0510549D0 (en) | 2005-05-24 | 2005-06-29 | Cognima Ltd | Battery power saving |
US20070038703A1 (en) * | 2005-07-14 | 2007-02-15 | Yahoo! Inc. | Content router gateway |
US20070016636A1 (en) * | 2005-07-14 | 2007-01-18 | Yahoo! Inc. | Methods and systems for data transfer and notification mechanisms |
US7623515B2 (en) * | 2005-07-14 | 2009-11-24 | Yahoo! Inc. | Content router notification |
US20070014307A1 (en) * | 2005-07-14 | 2007-01-18 | Yahoo! Inc. | Content router forwarding |
US7631045B2 (en) * | 2005-07-14 | 2009-12-08 | Yahoo! Inc. | Content router asynchronous exchange |
US7849199B2 (en) * | 2005-07-14 | 2010-12-07 | Yahoo ! Inc. | Content router |
US8024290B2 (en) | 2005-11-14 | 2011-09-20 | Yahoo! Inc. | Data synchronization and device handling |
US8065680B2 (en) * | 2005-11-15 | 2011-11-22 | Yahoo! Inc. | Data gateway for jobs management based on a persistent job table and a server table |
US7574460B2 (en) * | 2005-12-01 | 2009-08-11 | International Business Machines Corporation | Journaling database changes using minimized journal entries that may be output in human-readable form |
US7917487B2 (en) * | 2005-12-13 | 2011-03-29 | Microsoft Corporation | Portable application registry |
US9367832B2 (en) * | 2006-01-04 | 2016-06-14 | Yahoo! Inc. | Synchronizing image data among applications and devices |
GB0601917D0 (en) * | 2006-01-31 | 2006-03-15 | Cognima Ltd | A method of configuring a mobile telephone to interact with external services |
US7974946B2 (en) * | 2006-03-28 | 2011-07-05 | Alps Electric (North America), Inc. | System and method for synchronizing personal data among a plurality of devices storing such data |
WO2007113836A2 (en) | 2006-04-03 | 2007-10-11 | Beinsync Ltd. | Peer to peer syncronization system and method |
US20070271515A1 (en) * | 2006-05-19 | 2007-11-22 | Sharp Laboratories Of America, Inc. | Algorithm used to maintain the relative position of the online contact that has focus in the screen when new presence data requires an update of the online contacts screen |
US7899783B1 (en) * | 2006-05-30 | 2011-03-01 | Cisco Technology, Inc | Monitoring data integrity |
EP2052323B1 (en) * | 2006-08-02 | 2018-04-18 | Intellectual Ventures Assets 20 LLC | Event sharing |
US20080034008A1 (en) * | 2006-08-03 | 2008-02-07 | Yahoo! Inc. | User side database |
US20080090597A1 (en) * | 2006-10-17 | 2008-04-17 | Feyzi Celik | Short message formatting for information exchange |
US7447510B2 (en) * | 2006-10-22 | 2008-11-04 | Onepin, Inc. | Short message service network plug-in |
US20080140802A1 (en) * | 2006-12-08 | 2008-06-12 | Microsoft Corporation | Offsite centralized data center providing client functionality |
BRPI0807406A2 (pt) * | 2007-01-26 | 2014-05-27 | Fusionone Inc | Sistema e método para recuperação de conteúdo para uso em dispositivo móvel. |
WO2008130653A1 (en) * | 2007-04-20 | 2008-10-30 | Onepin, Inc. | Mobile virtual community invitations |
US20080270629A1 (en) * | 2007-04-27 | 2008-10-30 | Yahoo! Inc. | Data snychronization and device handling using sequence numbers |
US7778974B2 (en) * | 2007-10-14 | 2010-08-17 | International Business Machines Corporation | Apparatus and method to archive log entries formed by a data storage system |
US8458727B2 (en) * | 2007-11-05 | 2013-06-04 | Microsoft Corporation | Asynchronous client to server updates |
US7483922B1 (en) * | 2007-11-07 | 2009-01-27 | International Business Machines Corporation | Methods and computer program products for transaction consistent content replication |
US8181111B1 (en) | 2007-12-31 | 2012-05-15 | Synchronoss Technologies, Inc. | System and method for providing social context to digital activity |
US7523213B1 (en) * | 2008-05-20 | 2009-04-21 | International Business Machines Corporation | Efficient approach with the toleration of stale data to dynamically transform and unify data quality in client and server with continuous transaction flows |
US8135670B2 (en) * | 2008-07-22 | 2012-03-13 | International Business Machines Corporation | Embedded change logging for data synchronization |
JP4725622B2 (ja) * | 2008-09-22 | 2011-07-13 | 日本電気株式会社 | ログ管理装置、システム、方法、及びプログラム |
US8359568B2 (en) * | 2008-12-22 | 2013-01-22 | International Business Machines Corporation | Method and system for automatically adding generic change log to legacy application |
US8374930B2 (en) * | 2009-02-02 | 2013-02-12 | Trustifi Corporation | Certified email system and method |
GB0906004D0 (en) * | 2009-04-07 | 2009-05-20 | Omnifone Ltd | MusicStation desktop |
US9065868B2 (en) * | 2009-04-08 | 2015-06-23 | Blackberry Limited | System and method for sharing data in a group of mobile devices |
KR101590357B1 (ko) * | 2009-06-16 | 2016-02-01 | 엘지전자 주식회사 | 휴대 단말기, 휴대 단말기 동작방법 및 휴대 단말기 싱크 시스템 |
US8341023B2 (en) * | 2009-06-17 | 2012-12-25 | Trustifi Corporation | Certified email system and method |
US8255006B1 (en) | 2009-11-10 | 2012-08-28 | Fusionone, Inc. | Event dependent notification system and method |
US8732479B1 (en) * | 2010-03-12 | 2014-05-20 | Carbonite, Inc. | Methods, apparatus and systems for remote file storage using local client status files |
US8924348B2 (en) * | 2010-04-05 | 2014-12-30 | Tata Consultancy Services Limited | System and method for sharing data between occasionally connected devices and remote global database |
US8943428B2 (en) | 2010-11-01 | 2015-01-27 | Synchronoss Technologies, Inc. | System for and method of field mapping |
US8732462B2 (en) * | 2011-07-07 | 2014-05-20 | Ziptr, Inc. | Methods and apparatus for secure data sharing |
US8601121B2 (en) | 2012-01-09 | 2013-12-03 | International Business Machines Corporation | Tracking changes to data within various data repositories |
JP2013178685A (ja) * | 2012-02-29 | 2013-09-09 | Nec Corp | 非同期バックアップ機能を有するデータ処理システム、フロントシステム、バックアップ方法、及びそのためのプログラム |
US20130238552A1 (en) * | 2012-03-12 | 2013-09-12 | Joseph Saib | Systems and methods for synchronizing files in a networked communication system |
EP2693586B1 (en) * | 2012-07-31 | 2016-04-06 | ABB Research Ltd. | Clock synchronization for line differential protection |
US9170891B1 (en) * | 2012-09-10 | 2015-10-27 | Amazon Technologies, Inc. | Predictive upload of snapshot data |
US10635638B2 (en) | 2013-03-13 | 2020-04-28 | Ivanti Us Llc | Systems, methods and media for deferred synchronization of files in cloud storage client device |
US9251008B2 (en) | 2013-03-14 | 2016-02-02 | International Business Machines Corporation | Client object replication between a first backup server and a second backup server |
JP6508894B2 (ja) | 2014-07-28 | 2019-05-08 | キヤノン株式会社 | サーバ装置、サーバ装置の制御方法及びプログラム |
US20160042097A1 (en) * | 2014-08-07 | 2016-02-11 | Brigham Young University | System and method for concurrent multi-user analysis of design models |
US20170149883A1 (en) * | 2015-11-20 | 2017-05-25 | Datadirect Networks, Inc. | Data replication in a data storage system having a disjointed network |
US10311082B2 (en) * | 2015-12-21 | 2019-06-04 | Sap Se | Synchronization of offline instances |
MX2018010080A (es) * | 2016-02-22 | 2018-11-09 | Bbell Incorporated | Fecha y hora del registro de bitacora de datos con ajuste automatico. |
EP3236383A1 (en) | 2016-04-20 | 2017-10-25 | Gemalto Sa | Method for managing a real-time clock in a portable tamper-resistant device |
DE102017120032A1 (de) * | 2017-08-31 | 2019-02-28 | Vega Grieshaber Kg | Verfahren zur zeitsynchronisierten Verarbeitung von Daten eines Feldgerätes der Prozessautomatisierung |
US20220398217A1 (en) * | 2021-06-10 | 2022-12-15 | EMC IP Holding Company, LLC | System and Method for Snapshot Rule Time Zone Value |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4142069A (en) * | 1977-06-20 | 1979-02-27 | The United States Of America As Represented By The Secretary Of The Army | Time reference distribution technique |
CA1225653A (en) * | 1983-07-07 | 1987-08-18 | Thomas D. Thompson, Iii | Organoclay-antiozonant complex |
US5592664A (en) * | 1991-07-29 | 1997-01-07 | Borland International Inc. | Database server system with methods for alerting clients of occurrence of database server events of interest to the clients |
US5420968A (en) * | 1993-09-30 | 1995-05-30 | International Business Machines Corporation | Data processing system and method for displaying dynamic images having visual appearances indicative of real world status |
US5966387A (en) * | 1995-09-25 | 1999-10-12 | Bell Atlantic Network Services, Inc. | Apparatus and method for correcting jitter in data packets |
US5870759A (en) * | 1996-10-09 | 1999-02-09 | Oracle Corporation | System for synchronizing data between computers using a before-image of data |
US5884325A (en) * | 1996-10-09 | 1999-03-16 | Oracle Corporation | System for synchronizing shared data between computers |
US5924094A (en) * | 1996-11-01 | 1999-07-13 | Current Network Technologies Corporation | Independent distributed database system |
US6446092B1 (en) * | 1996-11-01 | 2002-09-03 | Peerdirect Company | Independent distributed database system |
US6633924B1 (en) * | 1997-10-02 | 2003-10-14 | Charles Wu | Object synchronization between objects stores on different computers |
US5921938A (en) * | 1997-10-09 | 1999-07-13 | Physio-Control Manufacturing Corporation | System and method for adjusting time associated with medical event data |
JP4575591B2 (ja) * | 1997-10-24 | 2010-11-04 | マイクロソフト コーポレーション | モバイルデバイスからのミーティング要求およびグループスケジューリング生成 |
US6493720B1 (en) * | 1998-01-26 | 2002-12-10 | International Business Machines Corporation | Method and system for synchronization of metadata in an information catalog |
US6170063B1 (en) * | 1998-03-07 | 2001-01-02 | Hewlett-Packard Company | Method for performing atomic, concurrent read and write operations on multiple storage devices |
US6219694B1 (en) * | 1998-05-29 | 2001-04-17 | Research In Motion Limited | System and method for pushing information from a host system to a mobile data communication device having a shared electronic address |
US6243702B1 (en) * | 1998-06-22 | 2001-06-05 | Oracle Corporation | Method and apparatus for propagating commit times between a plurality of database servers |
FR2782226B1 (fr) * | 1998-08-04 | 2000-09-08 | Sagem | Procede de localisation d'un telephone mobile |
US6128699A (en) * | 1998-10-27 | 2000-10-03 | Hewlett-Packard Company | Method for providing read/write access while copying data between shared storage devices |
US6516314B1 (en) * | 1998-11-17 | 2003-02-04 | Telefonaktiebolaget L M Ericsson (Publ) | Optimization of change log handling |
JP2000276394A (ja) * | 1999-03-22 | 2000-10-06 | Sharp Corp | ウェブページ情報中継システムおよびウェブページ情報中継方法 |
JP3254434B2 (ja) * | 1999-04-13 | 2002-02-04 | 三菱電機株式会社 | データ通信装置 |
US6587875B1 (en) * | 1999-04-30 | 2003-07-01 | Microsoft Corporation | Network protocol and associated methods for optimizing use of available bandwidth |
US6535926B1 (en) * | 1999-09-30 | 2003-03-18 | Rockwell Automation Technologies, Inc. | Time synchronization system for industrial control network using global reference pulses |
US6959425B1 (en) * | 1999-12-15 | 2005-10-25 | Sun Microsystems, Inc. | System and method for managing a scalable list of items for display |
US20030130786A1 (en) * | 1999-12-30 | 2003-07-10 | Ilkin Hakan M. | Patient tracking system and method |
EP1130511A3 (en) * | 2000-01-25 | 2004-04-07 | FusionOne, Inc. | Data transfer and synchronization system |
DE60142556D1 (de) * | 2000-04-10 | 2010-08-26 | Research In Motion Ltd | System und verfahren zum bündeln von informationen |
US6802019B1 (en) * | 2000-06-15 | 2004-10-05 | Genesys Conferencing, Ltd. | Method and system for synchronizing data |
AU2001278873A1 (en) * | 2000-07-06 | 2002-01-21 | Broadbeam Corporation | System and method for the remote creation of notification agents for wireless devices |
US6718348B1 (en) * | 2000-08-25 | 2004-04-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Non-time dependent synchronization of databases |
US7136912B2 (en) * | 2001-02-08 | 2006-11-14 | Solid Information Technology Oy | Method and system for data management |
US6826416B2 (en) * | 2001-02-16 | 2004-11-30 | Microsoft Corporation | Automated cellular telephone clock setting |
US20020143791A1 (en) * | 2001-03-19 | 2002-10-03 | Dov Levanon | Content deployment system, method and network |
US6829655B1 (en) * | 2001-03-28 | 2004-12-07 | Siebel Systems, Inc. | Method and system for server synchronization with a computing device via a companion device |
US6975618B1 (en) * | 2001-06-26 | 2005-12-13 | Hewlett-Packard Development Company, L.P. | Receiver and correlator used to determine position of wireless device |
JP3932452B2 (ja) * | 2001-09-27 | 2007-06-20 | ソニー株式会社 | 通信装置および方法、並びにプログラム |
US6938045B2 (en) * | 2002-01-18 | 2005-08-30 | Seiko Epson Corporation | Image server synchronization |
US20030144006A1 (en) * | 2002-01-25 | 2003-07-31 | Mikael Johansson | Methods, systems, and computer program products for determining the location of a mobile terminal based on delays in receiving data packets from transmitters having known locations |
US7602744B2 (en) * | 2004-09-09 | 2009-10-13 | Nokia Corporation | Detection of a simultaneous occurrence of an event at a plurality of devices |
-
2001
- 2001-11-26 GB GBGB0128243.3A patent/GB0128243D0/en not_active Ceased
-
2002
- 2002-11-26 EP EP02779750A patent/EP1451720B1/en not_active Expired - Lifetime
- 2002-11-26 JP JP2003548088A patent/JP2005510796A/ja active Pending
- 2002-11-26 US US10/496,540 patent/US20050108185A1/en not_active Abandoned
- 2002-11-26 WO PCT/GB2002/005308 patent/WO2003046759A2/en active IP Right Grant
- 2002-11-26 US US10/496,898 patent/US20050021571A1/en not_active Abandoned
- 2002-11-26 AU AU2002343093A patent/AU2002343093A1/en not_active Abandoned
- 2002-11-26 AU AU2002343088A patent/AU2002343088A1/en not_active Abandoned
- 2002-11-26 JP JP2003548505A patent/JP2005527883A/ja not_active Withdrawn
- 2002-11-26 DE DE60227280T patent/DE60227280D1/de not_active Expired - Lifetime
- 2002-11-26 EP EP02779755A patent/EP1497725A2/en not_active Withdrawn
- 2002-11-26 GB GB0227567A patent/GB2386988B/en not_active Expired - Lifetime
- 2002-11-26 DE DE60222924T patent/DE60222924T2/de not_active Expired - Lifetime
- 2002-11-26 WO PCT/GB2002/005315 patent/WO2003047217A2/en not_active Application Discontinuation
- 2002-11-26 US US10/496,557 patent/US7836264B2/en not_active Expired - Fee Related
- 2002-11-26 AT AT02779750T patent/ATE375562T1/de not_active IP Right Cessation
- 2002-11-26 AU AU2002343090A patent/AU2002343090A1/en not_active Abandoned
- 2002-11-26 JP JP2003548121A patent/JP2005510805A/ja active Pending
- 2002-11-26 GB GB0227537A patent/GB2384589B/en not_active Expired - Fee Related
- 2002-11-26 EP EP02779752A patent/EP1451684B1/en not_active Expired - Lifetime
- 2002-11-26 WO PCT/GB2002/005311 patent/WO2003046723A2/en active IP Right Grant
- 2002-11-26 AT AT02779752T patent/ATE399342T1/de not_active IP Right Cessation
-
2007
- 2007-01-26 US US11/627,416 patent/US20070118577A1/en not_active Abandoned
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005527883A (ja) | バッテリー駆動のモバイルコンピュータ装置上で表示画面を更新する方法 | |
US7894783B2 (en) | Method of power management in a data replication process deployed in a wireless device | |
US8156075B2 (en) | Method of automatically replicating data objects between a mobile device and a server | |
CN102207957B (zh) | 部分项改变跟踪和同步 | |
US6925476B1 (en) | Updating application data including adding first change log to aggreagate change log comprising summary of changes | |
US20170034104A1 (en) | Handheld Electronic Device and Associated Method Providing Time Data in a Messaging Environment | |
CN101098343B (zh) | 一种手机与网络服务器的信息交换方法 | |
CN100459556C (zh) | 数据共享的方法 | |
CN101159764A (zh) | 一种访问移动业务门户数据的方法和系统 | |
JP2009545815A (ja) | ウェブシンジケーションを介した双方向マルチマスタ同期 | |
CN103079020A (zh) | 终端控制系统和终端控制方法 | |
US20060041600A1 (en) | Handling of content in a data processing device | |
US20050131862A1 (en) | Web store events | |
GB2387687A (en) | Method of replicating data between computing devices which use local clocks | |
CN113641533A (zh) | 终端及短信息处理方法 | |
Ishida et al. | i-mode Services for Smartphones (i-concier/Data Security Service) | |
JP2004118603A (ja) | データ編集装置、データ編集システム及びデータ編集プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051128 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051128 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060113 |