2011-01-26 13 views
1

IndexedDB in Firefox 4は、オフラインとオンラインの両方で、クライアント側のデータベースのクエリとストレージ用のアプリケーションを作成する新しい可能性をもたらします。これは非常に新しい選択肢であり、私の組織は貧しいオンラインWebサービスを持つ多くの国に分かれているので、非常に興味深いです。ブラウザがオンラインに戻ったときに、別々のクライアント側IndexedDBデータベースのオフライン変更をマージできますか?

Big picture:は「のIndexedDBは、Webアプリケーションが後で速いオフライン検索のために(もちろん、あなたの明示的な許可を得て)、ローカルシステム上の大量のデータを保存することができます。」

私の問題

私は以下を理解していません。

  1. クライアント側のデータベース(ハイチなど)のオフライン変更をワシントンDCの中心的なデータベースとマージできますか?

  2. また、ハイチの3つのクライアントで3つのデータベースの変更を別々に同期させるにはどうすればよいですか?おそらく不可能ですか?

  3. このようなクライアント側データベースの利点と限界は何ですか?

答えて

0

あなたの質問は、データ調整の課題のいくつかをまとめています。全体として、これは可能ですが、私はそれを単独で試みることをお勧めしません。データベース空間では、CouchDBのようなアプリケーションがこれを試しており、やや難解な作業であることを示しています。

オブジェクトストア間でデータをマージすると、優雅にそれを取り除くために多くのアプリケーションロジックが必要になることを意味します。たとえば、2つのオフラインアプリが同じ行を更新するとどうなりますか?あなたは "マージコンフリクト"を起こすでしょう。このような状況がGitのようなソース管理アプリケーションがとても複雑な理由です。

このアイデアを実装するには、Gitブロックのチップを取り、変更をロールスルーする方法として「イベントソーシング」を使用します。私はa similar concept in IDBと一緒に働いていて、とてもうまく動作します。注目すべき点は、オブジェクトストア間で変更をマージするのではなく、単一のオブジェクトストアでリビジョンを管理するため、作業が大幅に複雑になると考えられます。

関連する問題