1

Firefox 4 の IndexedDBにより、オフラインとオンラインの両方で、クライアント側のデータベース クエリとストレージ用のアプリを作成する新しい可能性が得られます。これは非常に新しい選択肢であり、非常に興味深いものです。なぜなら、私の組織は多くの国に分散しており、オンライン Web サービスが貧弱だからです。

全体像:「IndexedDB を使用すると、後でオフラインで高速に取得できるように、Web アプリで大量のデータをローカル システムに保存できます (もちろん、明示的な許可が必要です)。」</p>

私の問題:

以下がわかりません。

  1. ハイチなどのクライアント側データベースのオフライン変更を、ワシントン DC の中央データベースにマージするにはどうすればよいでしょうか?

  2. あるいは、ハイチの 3 つのクライアントでの 3 つの個別のデータベースの変更は、どのようにして相互に同期されるのでしょうか? おそらくそれは不可能ですか?

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

4

1 に答える 1

0

あなたの質問は的を射ており、データ調整のいくつかの課題を要約しています。全体として、これは可能ですが、単独で試すことはお勧めしません。データベース スペースでは、CouchDB のようなアプリがこれに取り組んでおり、それがやや困難な作業であることを示しています。

オブジェクト ストア間でデータをマージするということは、それをうまくやってのけるために多くのアプリケーション ロジックが必要になることを意味します。たとえば、2 つのオフライン アプリが同じ行を更新するとどうなるでしょうか。「マージ競合」が発生する可能性があり、この種の状況が、Git のようなソース管理アプリケーションが非常に複雑な理由です。

このアイデアを実装するには、Git ブロックの一部を利用して、変更をロールスルーする方法として「イベント ソーシング」を使用します。私はIDB で同様の概念を使用していますが、非常にうまく機能します。オブジェクト ストア全体で変更をマージしようとしているのではなく、1 つのオブジェクト ストアでリビジョンを管理しようとしていることに注意してください。そのため、タスクはかなり複雑になると考えられます。

于 2012-05-07T15:20:19.077 に答える